{"version":3,"sources":["core/security/authentication.js","core/controls/components/checkautocomplete.js","core/modules/form/cformtextbox.js","core/controls/components/confirmationPopup.js","core/modules/map/util/geometryEngineTask.js","core/modules/Grid/customColumnMenu.jsx","modules/notices/noticeeditor.js","json/map/ameslandingmap.js","json/newapplication/newapplicationreview.js","custommodules/newentrancepermit/create_record/wrs.js","custommodules/newentrancepermit/newentrance_fieldvalues.js","custommodules/newentrancepermit/termsconditions.js","custommodules/newentrancepermit/gisdomainlookuphelper.js","custommodules/newentrancepermit/index_wrs.js","core/controls/components/checkboxgroup.js","core/controls/components/map.js","core/controls/components/sections.js","core/controls/components/textfield_box.js","core/controls/components/signature.js","core/controls/components/autocompletepopover.js","core/controls/components/autocompletetags.js","core/controls/components/card.js","core/modules/form/cformswitch.js","core/controls/components/custom/adminlayer.js","core/controls/components/custom/companyaccesscontrol.js","core/controls/components/custom/labelexpression.js","core/controls/components/custom/multipleselect.js","core/controls/components/custom/phasetypes.js","core/controls/components/custom/submoduleselection.js","core/controls/components/iframe.js","core/controls/components/otpinput.js","core/modules/form/index.js","core/modules/form/cbutton.js","core/modules/form/ccheckbox.js","core/modules/form/ccheckboxgroup.js","core/modules/form/cconfirmationpopup.js","core/modules/form/cdatetimepicker.js","core/modules/form/cdivider.js","core/modules/form/cdropdown.js","core/modules/form/cdropdownwithaddnewitem.js","core/modules/form/cduallistbox.js","core/modules/form/cformautocomplete.js","core/modules/form/cformbutton.js","core/modules/form/cformcheckbox.js","core/modules/form/cformcolorpicker.js","core/modules/form/cformdiscussionpanel.js","core/modules/form/cformfieldsgroup.js","core/modules/form/cforminputhidden.js","core/modules/viewport/snackbar.js","core/modules/form/cformmultiduallistbox.js","core/modules/form/cformphnextntext.js","core/modules/form/cformphonetext.js","core/modules/form/cformtext.js","core/modules/form/cgeneralpaper.js","core/modules/form/clabel.js","core/modules/form/clink.js","core/modules/form/cmultiduallistbox.js","core/controls/components/custom/notificationtags.js","core/modules/form/cmultiduallistbox2.js","core/modules/form/cmultiselect.js","core/modules/form/cnoticetexttemplate.js","core/modules/form/cnumberformats.js","core/modules/form/cradio.js","core/modules/form/cradiogroup.js","core/modules/corn_generator/lib/minutes.js","core/modules/corn_generator/lib/chooseTime.js","core/modules/corn_generator/lib/card.js","core/modules/corn_generator/lib/daily.js","core/modules/corn_generator/lib/hourly.js","core/modules/corn_generator/lib/weekly.js","core/modules/corn_generator/lib/monthly.js","core/modules/corn_generator/lib/yearly.js","core/modules/corn_generator/lib/displayCard.js","core/modules/corn_generator/lib/index.js","core/modules/corn_generator/index.js","core/modules/form/cscheduler.js","core/modules/form/csectionscard.js","json/signin/isauthsignin.js","core/modules/form/csignupform.js","core/modules/form/csimplelink.js","core/modules/form/cswitches.js","core/modules/form/ctabs.js","core/modules/form/ctext.js","core/modules/form/ctextbox.js","core/modules/form/ctogglebutton.js","core/modules/form/ctreeview.js","core/modules/form/cupload.js","core/modules/form/customArcgisMultiselect.js","core/modules/form/discussionsform.js","core/modules/form/materialdatepicker.js","core/modules/form/materialpicker.js","core/modules/form/materialtimepicker.js","core/modules/form/multidropdown.js","core/modules/Grid/cinterchangablegrid.js","core/modules/Grid/csimplegrid.js","core/modules/header/images/Secondary_transparent.png","core/modules/header/images/Delasoftlogo.jpg","core/modules/header/images/odoticon.png","core/modules/header/images/wisdot.png","core/modules/header/images/deldot.png","core/modules/header/layouts/ImageLogos.js","core/modules/header/images/kytcicon.jpg","core/modules/header/images/adotavatar.png","json/companyInternal/Users/profilecompanyuser.js","core/resources/Default-UserImg.jpg","core/modules/header/layouts/profilepopover.js","core/modules/header/layouts/muiedge.js","core/modules/header/images/WRSBanner.png","core/modules/header/images/wrslogo.png","core/modules/header/index.js","core/modules/sidebar/sidebar.js","core/modules/viewport/cpopup.js","payment/REST/default.js","payment/REST/groups.js","payment/schema/fields.jsx","payment/parameters/create.jsx","payment/expressions/index.jsx","payment/invoices/index.jsx","payment/manager/index.jsx","custommodules/billing/billingservice.js","custommodules/billing/invoicecycleservice.js","custommodules/invoicesettings/invoicesettings.js","core/resources/imageplaceholder.jpg","custommodules/newentrancepermit/imageupload.js","custommodules/sitepermittypes/termsandconditions.js","json/common/attachments/attachmentComponents.js","modules/Uploads/S3Upload.js","modules/Uploads/MultipleFileUpload.js","json/common/attachments/attachmenthistory.js","modules/attachments/attachmentextend.js","modules/attachments/attachments.js","json/common/Images/ImagesComponents.js","modules/attachments/images.js","modules/buttons/GridButton.js","modules/form/ctemplateloader.js","modules/form/routingtreeview.js","core/resources/ProfilePic.jpg","core/resources/pencil.png","modules/Uploads/FileUpload.js","core/modules/systemmessages/logout.js","core/resources/bannerA.jpg","core/modules/viewport/banner.js","routecontrols/ames.routecontrols.js","routecontrols/eps.routecontrols.js","routecontrols/ups.routecontrols.js","routecontrols/kept.routecontrols.js","routecontrols/sac.routecontrols.js","routecontrols/mps.routecontrols.js","controls/jsons/holidays/newholidays.js","controls/jsons/holidays/editholidays.js","controls/jsons/holidays/holidaysgrid.js","controls/wrappers/holidays/index.js","controls/jsons/mastertemplate/add.js","controls/jsons/mastertemplate/edit.js","controls/jsons/mastertemplate/index.js","controls/wrappers/mastertemplate/index.js","controls/jsons/notice/add.js","controls/jsons/notice/attachments/new.js","controls/jsons/notice/attachments/edit.js","controls/jsons/notice/attachments/index.js","controls/jsons/notice/edit.js","controls/jsons/notice/index.js","controls/wrappers/notice/index.js","controls/jsons/settings/generalsettings/generalsettingsadd.js","controls/jsons/settings/generalsettings/generalsettingsview.js","controls/jsons/settings/projectmessages/projectmessagestableadd.js","controls/jsons/settings/generalsettings/generalsettingsgrid.js","controls/jsons/settings/projectmessages/projectmessagestableview.js","controls/jsons/settings/projectmessages/projectmessagesview.js","controls/jsons/settings/projectmessages/projectmessagestable.js","controls/jsons/settings/projectmessages/projectmessagesadd.js","controls/jsons/settings/projectmessages/businessrules/businessrulesadd.js","controls/jsons/settings/projectmessages/businessrules/businessrulesedit.js","controls/jsons/settings/projectmessages/projectmessagesgrid.js","controls/jsons/settings/policysettings/policysettingsadd.js","controls/jsons/settings/policysettings/policysettingsview.js","controls/jsons/settings/settingstabview.js","controls/jsons/settings/policysettings/policysettingsgrid.js","controls/jsons/settings/settingsgrid.js","controls/wrappers/settings/settingscontainer.js","core/modules/simplegrid/index.js","core/modules/dnd/widgets/validationrules/uploaded.js","core/modules/dnd/widgets/validationrules/events.js","core/modules/dnd/widgets/validationrules/fieldsettings.js","core/modules/dnd/widgets/validationrules/viewfields.js","core/modules/dnd/widgets/validationrules/addfield.js","core/modules/dnd/widgets/validationrules/fields.js","core/modules/dnd/widgets/validationrules/static.js","custommodules/sidebarbr/index.js","controls/wrappers/sidebarbr/index.js","core/controls/components/alert.js","core/controls/components/helpContext.js","core/controls/components/loading.js","core/controls/components/recordeditors.js","json/consultant/associatedapplicants.js","json/consultant/users/history.js","json/consultant/externaluserloginhistory.js","json/consultant/users/edit.js","json/consultant/users/new.js","json/consultant/users/grid.js","json/consultant/consultant.js","json/consultant/consultantgrid.js","json/map/permitsgridmap.js","modules/search/index_tsp.js","controls/jsons/authorizations/edit.js","controls/jsons/authorizations/index.js","controls/wrappers/authorizations/index.js","routecontrols/wrs.routecontrols.js","routecontrols/forward.routecontrols.js","core/modules/viewport/content.js","custommodules/billing/billinginvoice.js","custommodules/billing/billingregenerateoptions.js","custommodules/billing/statusvalidator.js","custommodules/billing/billinggrid.js","custommodules/billing/billingphysicalcheck.js","custommodules/billing/billingform.js","custommodules/billing/ownerbilling.js","custommodules/masterfields/masterfieldlist.js","custommodules/newentrancepermit/inspections.js","custommodules/newentrancepermit/map.js","custommodules/newentrancepermit/taxparcelbutton.js","core/modules/map/eps/validatetaxparcelQuery.js","custommodules/newentrancepermit/usersNcontacts.js","custommodules/notifications/epsnotifications.js","custommodules/sitepermittypes/sitepermitsectionsfields.js","core/modules/applicationstatus/editable.js","core/modules/applicationstatus/myCommandCell.js","core/modules/applicationstatus/templatesettings.js","core/modules/applicationstatus/index.js","json/sitepermittypes/descofconsgrid.js","json/administration/adminlist.js","json/administration/noadminlist.js","json/administration/externallist.js","json/administration/notadminreglist.js","json/administration/noregistrationlist.js","json/administration/superadminlist.js","json/administration/preparerexternallist.js","json/administration/Systemadminlist.js","modules/administration/index.js","modules/chart/kendochart.js","modules/dashboard/kendoline.js","modules/form/monthyearpicker.js","modules/form/monthyearinput.js","modules/dashboard/dashboardchart.js","modules/dnd/billingbr.js","modules/dnd/configcustom.js","json/notificationsettings/nsComponents.js","modules/notices/commonnotices.js","modules/notices/notices.js","modules/notificationsettings/notificationsettings.js","modules/notificationsettings/notificationevents.js","modules/notificationsettings/nstemplate.js","modules/notificationsettings/ns.js","modules/notificationsettings/nspopup.js","modules/ownerregistration/CompanyTypeDrop.js","modules/ownerregistration/heading.js","modules/ownerregistration/AccountType.js","modules/ownerregistration/ModuleSelection.js","modules/ownerregistration/CompanyDetails.js","modules/ownerregistration/SignUp.js","modules/ownerregistration/success.js","modules/ownerregistration/UserDetails.js","modules/ownerregistration/OwnerRegistration.js","modules/registrationrequest/consultant.js","modules/registrationrequest/index.js","modules/registrationrequest/requestapproval.js","core/controls/components/custom/useraccesscontrol.js","core/controls/components/authenticationlogin.js","core/modules/dnd/widgets/util/dndSettings.js","core/modules/dnd/widgets/util/fieldsConfig.js","core/modules/dnd/widgets/cRowDraggable.js","core/modules/dnd/widgets/cRowDroppable.js","core/modules/dnd/widgets/cSubSectionsContainer.js","core/modules/dnd/widgets/cSectionDroppable.js","core/modules/dnd/widgets/validationrules/rule.js","core/modules/dnd/widgets/validationrules/index.js","core/modules/dnd/widgets/cSectionDraggable.js","core/modules/dnd/widgets/cSectionsContainer.js","core/modules/dnd/widgets/cBuildDragDropContext.js","modules/dnd/cbuilddnd.js","json/map/addrecordgridmap.js","core/modules/form/cpaper.js","core/controls/settings/grid/gridFilters.js","core/controls/components/custom/layerauthorization.js","wrappers/viewport.js","custommodules/applicant/iframe.js","core/modules/systemmessages/404issue.js","core/modules/systemmessages/unauthorize.js","core/modules/form/customlayertemplate.js","custommodules/applicant/associatedapplicants.js","controls/jsons/proposedlanduse/newproposedlanduse.js","controls/jsons/proposedlanduse/vieweditproposedlanduse.js","controls/jsons/proposedlanduse/proposedlandusegrid.js","core/controls/components/checkbox.js","core/controls/components/switch.js","core/modules/template/template.js","core/modules/form/formsapi.js","json/reports/savedreports.js","core/controls/components/settings.js","core/controls/components/cloneitemspopup.js","core/controls/components/custom/datetimepicker.js","core/controls/components/header.js","core/modules/map/eps/GISLookupTask.js","core/modules/rest/index.js","core/modules/form/csubform.js","core/controls/components/radiogroup.js","core/modules/form/validate.js","core/modules/form/validations.js","core/controls/components/custom/searchtextbox.js","core/controls/components/custom/registrationrequestnav.js","core/controls/components/kendoheader.js","core/controls/components/menu.js","core/modules/ErrorHandler.js","core/reducers/utilities.js","core/reducers/adminform.js","core/reducers/header.js","core/reducers/sidebar.js","core/reducers/snackbar.js","core/reducers/confirmation.js","core/reducers/index.js","styles/material-theme.js","index.js","core/controls/helpers/rest.js","core/controls/helpers/requests.js","core/controls/layout/stepper.js","core/controls/layout/tabs.js","core/controls/layout/panel.js","core/controls/layout/types.js","core/controls/layout/layout.js","core/controls/components/container.js","core/modules/Grid/cgridheader.js","core/modules/form/utilities.js","core/modules/form/conditions.js","core/controls/components/numberformat.js","core/controls/components/label.js","core/controls/helpers/actions.js","core/modules/form/customlocationvalidation.js","core/modules/Grid/cgrid.js","core/security/actions/index.js","core/modules/progress-bar.js","modules/environmentalList.js","core/controls/components/customColumnMenu.jsx","core/controls/components/datepicker.js","core/controls/components/phoneformat.js","core/modules/map/eps/multipleLocationServices.js","core/modules/map/util/mapConstants.js","core/modules/form/cwysiwyg.js","core/controls/components/form.js","core/controls/components/kendogrid.js","core/controls/components/custom/notificationtemplate.js","core/controls/components/savebutton.js","core/controls/components/custom/appdownloads.js","core/controls/components/custom/appdownloadscustomdata.js","core/controls/components/custom/masternoticebr.js","core/controls/components/transferlist.js","core/controls/helpers/fieldtypes.js","core/controls/components/wysiwyg.js","core/controls/components/template.js","core/controls/components/custom/designprovisions.js","core/controls/components/multipleuploads.js","core/controls/components/custom/domaincalval.js","core/actions/index.js","json/newapplication/newapplicationsidebar.js","core/controls/components/custom/missinglists.js","core/modules/dnd/widgets/validationrules/querybuilder/controls/ValueEditor.jsx","core/modules/dnd/widgets/validationrules/querybuilder/controls/ValueSelector.jsx","core/modules/dnd/widgets/validationrules/querybuilder/controls/ActionElement.jsx","core/modules/dnd/widgets/validationrules/querybuilder/controls/NotToggle.jsx","core/modules/dnd/widgets/validationrules/querybuilder/Rule.jsx","core/modules/dnd/widgets/validationrules/querybuilder/Calculated.jsx","core/modules/dnd/widgets/validationrules/querybuilder/RuleGroup.jsx","core/modules/dnd/widgets/validationrules/querybuilder/utils/findRule.js","core/modules/dnd/widgets/validationrules/querybuilder/utils/generateValidQuery.js","core/modules/dnd/widgets/validationrules/querybuilder/utils/getLevel.js","core/modules/dnd/widgets/validationrules/querybuilder/utils/isRuleGroup.js","core/modules/dnd/widgets/validationrules/querybuilder/utils/isCalculated.js","core/modules/dnd/widgets/validationrules/querybuilder/QueryBuilder.jsx","core/modules/dnd/widgets/validationrules/mainquerybuilder.js","core/modules/form/printfunctions.js","core/controls/components/buttons.js","core/controls/helpers/validations.js","core/controls/helpers/checkers.js","core/controls/helpers/components.js","core/controls/components/custom/customcolor.js","core/controls/components/fab.js","core/modules/form/confirmationdialog.js","core/controls/components/datetimepicker.js","core/modules/map/eps/applyEditsFeaturesTaskKEPT.js","core/modules/map/eps/featuresLayersTaskKEPT.js","core/modules/map/eps/mapSettings.js","core/modules/map/util/layers.js","core/modules/map/widgets/actionsLayerList.js","core/resources/gis-loading.gif","core/modules/map/widgets/basemapGallery.js","core/modules/map/widgets/dataTable.js","core/modules/map/widgets/home.js","core/modules/map/widgets/layerfilter.js","core/modules/map/widgets/locate.js","core/modules/map/widgets/compmultilocationbuffercalc.js","core/modules/map/widgets/locationcompare.js","core/modules/map/widgets/locationzoom.js","core/modules/map/widgets/measurement.js","core/modules/map/util/mercatorUtils.js","core/modules/map/widgets/multilocationselector.js","core/modules/map/widgets/print.js","core/modules/map/widgets/search.js","core/modules/map/widgets/dndlist.js","core/modules/map/widgets/bookmarkcontrol.js","core/modules/map/widgets/searchbookmark.js","core/modules/map/widgets/select.js","core/modules/map/widgets/sketch.js","core/modules/map/eps/SketchDistanceValidator.js","core/modules/map/widgets/taxlotselector.js","core/modules/map/widgets/zoom.js","core/modules/map/widgets/widgetsconfig.js","core/modules/map/map.js","core/modules/map/eps/taxParcelTask.js","core/modules/map/eps/taxParcelCenter.js","core/controls/components/custom/sectionscustomsave.js","core/controls/helpers/domainapi.js","core/controls/components/multiadd.js","core/controls/effects/calculate.js","json/newapplication/externalapplicationsidebar.js","custommodules/newentrancepermit/applicationdrawer.js","core/modules/form/cform.js","modules/workflow/workflowuse.js","core/controls/components/rulesSnapshot.js","core/controls/components/icons.js","core/controls/wrappers/helpers/converters.js","core/modules/form/calertbox.js","core/controls/components/custom/downloadshelper.js","core/modules/backdrop.js","core/controls/components/custom/autocompletetagsnotification.js","core/controls/components/breadcrumbs.js","core/controls/components/date_daymonth.js","core/controls/components/timepicker.js","core/controls/components/autocomplete.js","core/modules/form/cslidingpage.js","core/controls/components/daystimer.js","core/modules/form/cformheader.js","json/agencyusers/userprofileabc.js","json/agencyusers/userprofile.js","core/controls/components/savegridreport.js","core/controls/components/quickview.js","controls/jsons/history/index.js","core/controls/components/history.js","core/modules/map/util/queryTask.js","core/controls/components/custom/notificationeditor.js","core/modules/header.js","core/modules/map/eps/lookupDataTaskKEPT.js","core/modules/breadcrumbs/index.js","core/controls/components/text.js","core/modules/report/dialog.js","core/modules/template/index.js","modules/workflow/workflow.js","modules/workflow/addworkflow.js","core/controls/components/textbox.js","core/controls/components/link.js","core/modules/dnd/widgets/validationrules/editor.js","core/controls/components/sidepopup.js","core/controls/components/subheader.js","json/common/notices/noticehistorygrid.js","core/modules/report/savereports.js","core/modules/report/shareoptions.js","core/modules/report/dialogdrawercontent.js","json/newapplication/newapplicationworkflow.js","core/controls/components/dropdown.js","core/controls/effects/events.js","core/controls/effects/effects.js","json/map/map.js","core/modules/form/cformdropdown.js","modules/Uploads/forms/attachments.js","modules/Uploads/forms/images.js","modules/Uploads/S3NativeUpload.js","json/sitepermittypes/standarddescriptionofconstruction.js","json/sitepermittypes/descconsgridjson.js","controls/jsons/attachments/conditionsbymodule.js","json/companyInternal/Users/associatedapplicants.js","custommodules/sitepermittypes/standarddescofconstruction.js"],"names":["initialState","user","state","arguments","length","undefined","action","type","Actions","setUserAccess","_objectSpread","profile","getConfigType","data","localStorage","getItem","JSON","parse","configType","isAdmin","_","require","icon","_jsx","CheckBoxOutlineBlankIcon","fontSize","checkedIcon","CheckBoxIcon","defaults","transformProps","label","value","CheckboxesTags","props","handleFieldValue","extraProps","error","shareProps","required","tooltip","ismulti","contexthelp","changefieldto","limitTags","otherProps","_objectWithoutProperties","_excluded","helperText","items","name","fullWidth","disabled","val","valarray","split","sort","a","b","indexOf","filter","item","toString","tlabel","_jsxs","Fragment","children","Tooltip","title","placement","HelpOutlineIcon","style","width","color","onClick","DefaultSettings","showDrawer","Autocomplete","multiple","options","Array","isArray","disableCloseOnSelect","getOptionLabel","option","onChange","event","target","map","join","checked","currentTarget","dataset","renderOption","_ref2","selected","React","Checkbox","marginRight","renderTags","getTagProps","index","Chip","variant","renderInput","params","TextField","maxHeight","overflowX","InputProps","endAdornment","InputLabelProps","fontWeight","getColor","shrink","CFormTextBox","urlval","handleFieldChange","onKeyPress","defaultValue","format","id","edit","editduplicate","conditions","accessPermissions","accessLevelPermissions","disabledstatus","enable","xtype","inputProps","password","textProps","minnumber","minval","hasdecimalvalue","_useState","useState","_useState2","_slicedToArray","showPassword","setShowPassword","includes","temp","Typography","className","href","_Fragment","InputLabel","InputAdornment","position","IconButton","onMouseDown","VisibilityOffIcon","VisibilityIcon","Confirmation","ref","open","setOpen","_useState3","_useState4","description","setDescription","dispatch","useDispatch","resetval","useSelector","header","useImperativeHandle","show","message","Dialog","DialogTitle","DialogContent","DialogContentText","DialogActions","Button","onSubmit","tempResetVal","setResetValue","isReset","labels","onClose","customClose","forwardRef","GeometryEngineTask","config","Promise","resolve","reject","loadModules","then","_ref","geometryEngine","projection","geometries","union","spatialReference","ProjectionTaskExecute","UnionTaskExecute","distance","unit","bufferGeom","buffer","BufferTaskExecute","LengthTaskExecute","lengthResponse","lengthError","graphicies","MapBussinessRules","geomLengthRules","find","mr","fields","ValidateOf","rules","geomEngineResponse","forEach","gr","checks","check","run","rulesResponses","events","r","isValidationFalied","push","RuleId","ruleId","IsValidationFalied","alertMessage","console","log","geomEngineerror","ValidateBussinessRulesTaskExecute","features","_ref7","_ref8","Point","pointsArr","element","geometry","latitude","longitude","res","UnionTaskExecutePointZoom","GeometryEngineTaskExecute","response","RequestTaskExecute","_ref3","esriRequest","url","InfoTaskExecuteRequest","ParseLayerUrl","InfoTaskExecute","LayerInfoTaskExecuteRequest","LayerInfoTaskExecute","LayerFieldsInfoTaskExecuteRequest","LayerFieldsInfoTaskExecute","layers","layersResponses","layerconfig","layerresolve","layerreject","ValidateLayerInfoTaskExecuteWrapper","all","ValidatelayerinfoTaskExecute","load","projectedgeom","project","Lengthresolve","Lengthreject","geom","templength","LengthTaskWrapper","units","geodesicLength","isinfo","f","InfoTaskExecuteResponse","urlParts","layerInfo","geometryType","LayerColor","drawingInfo","renderer","symbol","rgb","match","parseInt","slice","HighlightColor","SelectField","SearchField","LabelExpression","AsofArchiveStart","AsofArchiveEnd","InfoTemplate","GridTemplate","EditorTemplate","FilterAttributes","LayerInfoTaskExecuteResponse","replace","ValidateLayerInfoTaskExecuteWrapperRequest","count","statusMessage","inforesolve","inforeject","inforesponse","infoerror","statusError","infoMessage","infoError","ValidateLayerInfoTaskExecuteWrapperResponse","CustomColumnMenu","_React$Component","_inherits","_super","_createSuper","_this","_classCallCheck","call","onToggleColumn","setState","columns","column","idx","onReset","preventDefault","allColumns","col","onColumnsSubmit","onCloseMenu","onMenuItemClick","columnsExpanded","filterExpanded","saveReport","e","onFilterExpandChange","_createClass","key","_this2","oneVisibleColumn","this","c","GridColumnMenuSort","hidefilter","GridColumnMenuFilter","onExpandChange","expanded","GridColumnMenuItemGroup","GridColumnMenuItem","iconClass","GridColumnMenuItemContent","concat","readOnly","htmlFor","userSelect","Component","addbreadcrumbs","class","editbreadcrumbs","appendval","NoticeCommon","_Component","_this$setState","noticeType","noticeTypeJson","x","Id","sdtables","SideBarTables","sdtablesfilter","sideBarTablesRecords","sdtablesloadmap","_defineProperty","TemplateId","results","loadNoticeEntryData","sideBarTables","validateFieldChange","_this$setState2","moment","_this$setState3","handleNoticeDateChange","convertMoment","handleSaveWithTemplate","validateData","TemplateForm","current","saveTemplate","snackbarMessage","handleSave","updateRecord","fetchData","url3","opensnackbar","url4","openSendNotice","recordid","handleBack","resultdata","allErrors","validateStateResults","Object","keys","errors","_i","_Object$entries","entries","errorJson","_Object$entries$_i","getDBValidationMessages","GlobalValidate","errortext","handleTemplateId","ParentId","handleClose","evt","sendNoticeObj","handleNoticeSend","Subject","Body","compUrl","getEnvVariable","companyid","ParentValues","GetData","resp","Contacts","PrimaryContactAddress","Email","mailContent","noticetypeid","emaiLUrl","PostData","errorSendNotice","NoticeTypeId","NoticeDate","CertifiedMailNo","NoticeDescription","showTemplate","noticeEntryData","ProjectMessages","SendToOwner","tabvalue","EmailModel","MailTo","TemplateList","masterTableId","routeid1","sitePermitTypeId","sitepermittypeid","routeid","fieldValues","noticeComponentsArray","historygrid","historygridjson","url1","url2","dataItem","routeid2","url5","noticeporjectmessage","sidebartablesurl","createRef","didmountinitialload","SideBarDataItems","sideBarItems","childTable","ParentTableName","tabls","TableName","tables","_this3","urlcon","body","validationSearchKey","toUpperCase","requestType","queryParam","alert","queryStr","PutData","prevProps","prevState","_this4","_this5","_this$props","onFullScreen","compmap","onExitFullScreen","fullscreen","exitfullscreen","onNextItemClick","onPrevItemClick","classes","_this$state","caneditfields","noticeTypeError","certifiedMailError","noticeDateError","noticeDescriptionError","Drawer","anchor","paperAnchorRight","root","FormHeader","savebutton","breadcrumbs","backbutton","navigateup","navigatedown","CFormDropDown","dropdownvalues","MuiPickersUtilsProvider","utils","MomentUtils","KeyboardDatePicker","clearable","ampm","Date","disablePast","disableFuture","multiline","dir","Template","entryData","parentid","templateId","isEnabled","refId","refType","TextBox","rowsMax","size","connect","bindActionCreators","withStyles","theme","top","maxWidth","withRouter","amesmap","outline","miterLimit","fieldInfos","fieldName","colSpan","newapplicationreview","drawerprops","NewApplicationSidebar","navigationpath","path","allurls","inquiryrecordData","get","allSites","allRegions","allDistricts","DomainValues","allProcessTypes","generalApplicationTypes","permittypes","outdoorpermittypes","encroachmentpermittypes","applicationProcessTypes","allSectionFields","AllOwnerInternal","AllOwnerInternalSearch","TermsAndConditions","routeProps","SitePermitTypesData","updateNewApplication","put","OfficialUser","Preparer","ContactType","SelectUser","SitePermitTypesRegions","SitePermitTypesSites","SitePermitTypesBasedOnConfigType","SitePermitTypesValue","SitePermitTypesSubModuleKey","Validationurl","AllFields","AddNewApplication","post","AllFieldsGroupBySection","OwnerAddress","StatusChange","StatusChangeNotification","GetApplicationStatus","GetSubmissionType","GetApplicationProcessType","GetResolutionStatus","GetPermitStatus","Duplicate","AdminDomainValues","Domainsurl","Getallsubmodules","TownVillageCity","InterStateHwy","InterStateHwyNumber","domainProps","domainPropsHWY","WRSApplicationProperties","loadFieldsData","Dropdown","disable","applicationsite","SITE_ID","townvillagecity","townvillagecityvalue","interstatehwyvalue","interstatehwy","AMESMAPFIELDS","AMESStateFields","REGION_ID","DISTRICT_ID","EXISTING_COUNTY","PROPOSED_COUNTY","CREATE_APPLICATION","TermsAndCond","handleAgreement","agreement","SITE_PERMIT_TYPE_ID","openTerms","editorState","seteditor","tAndC","settAndC","useEffect","arrayUrl","each","requestApiNew","createRequest","atob","TermsAndConditionsStr","catch","ex","PaperProps","window","innerWidth","paper","AppBar","Toolbar","mentions","showcomments","hasSubject","isadmin","FormControlLabel","control","labelPlacement","GetGISFieldsDomainLookup","datakeys","requestApi","_resp","domainlookup","Layer","layer","LayerId","NewEntrancePermitApplication","getDefaultSitePermitType","defaultsitepermittypeid","defaultvalue","subModuleKey","mapconfig","mapsettings","def_sitepermittypeid","getSiteandPermitInfo","getSitePermitTypeGisFieldsData","loadMapSectionDefaultInformation","mapdata","FieldsData","FieldValue","LayerOptions","tasks","TaxParcels","queryexpression","WHAT_WOULD_YOU_LIKE_TO_DO_","addTaxParcels","taxparcelexp","premapsettings","objIndex","findIndex","obj","Fieldkey","taxparcelallexp","SummaryJSON","configId","retresults","siteinitials","applicationregion","Initials","PermitTypeId","mapIdPermitTypeId","sitepermittype","regionInitials","_objectSpread2","_event$target","interstateprops","onTypeSlectionChange","clearsketch","moveToSections","mapchangedFieldName","proceed","tempchangedFieldvalues","fetchGeomType","getFetchGeomType","APPLICATION_STATUS","LoadInitialPage","getAlert","onSaveorUpdateMapResponse","maplocation","maplocationkeys","newheader","newformControls","newchangedFieldName","toFixed","fd","formControls","InitialPageDropDown","mapClear","INTERSTATE_HWY","clearMapChangedFields","getMapInformation","isnewObjectId","getTaxParcelCustomNumber","regionid","substring","setStateMapInformation","getByGISlayerID","districtid","applicationdistricts","siteid","taxparclelayer","approachaddress","hasUserConfigAccess","TAX_PARCEL_LAYER","APPROACH_ADDRESS","showUserAccessAlert","gisid","ArcGISBoundaryId","INQUIRY_RECORD_NUMBER","_objectSpread3","setMapLocationIfnformationCont","checkStartOpen","_this$state2","MAP_CENTER_LATITUDE","PROPOSED_MAP_CENTER_LATITUDE","PROPOSED_MAP_CENTER_LONGITUDE","MAP_CENTER_LONGITUDE","getMapEdit","createrecordopen","createState","applicationsitevalue","userId","SUB_MODULE_ID","changedFieldvalues","isAdd","MultipleLocationData","currentsitepermittypeid","GISDomainLookupFields","_SummaryJSON$options$","setItem","configurl","_res","configs","types","districts","sites","_res$","_res$2","_res$3","proocess","_res$4","whatwould","_res$5","generalappltypes","SubModuleKey","localeCompare","processtype","whatwldTypes","generalapptypes","totalsections","sectionKeys","sections","GISLookupData","sectionname","inx","FieldRowDisplayOrder","section","i","FieldKey","UIFieldTypeComponent","Key","FieldName","FieldDisplayName","FieldFetchDomainKey","FieldDescription","SectionName","SectionKey","FieldDecimalPlace","FieldContextHelp","FieldColDisplayOrder","FieldMin","FieldMax","IsHidden","FieldFetchGeomType","FieldIsBuffer","IsLabel","IsInternal","FieldIsSpellCheck","FieldDomainKey","FieldProps","FieldBufferDistance","FieldBufferUnits","eachDomainLookup","master","domain","Url","NameReference","ValueReference","Token","TokenExpiration","NameFormat","ValueFormat","GetGISFields","valueobj","m_value","MUNICIPALITY_TYPE","moduleSiteAccess","moduleRegionAccess","moduleDistrictAccess","listarr","tempmapsettings","mapreset","dialogconfirm","mapset","confirmClickedEvent","TAX_PARCEL_IDS","_this$state3","Fab","StartIcon","TermIcon","Map","selectedtaxparcel","taxparcelresponse","height","canEdit","gisDomainLookupData","showTour","useStyles","makeStyles","display","formControl","MapComponent","MapSettings","handleMapChanges","_props$edit","SitePermitTypeDistricts","statusList","clearSketch","setclearSketch","status","setStatuses","MapJsonExtend","MapJson","mapJson","mapJsonOptions","taxparcelfield","taxparcellayer","taxparcelslots","queryExpression","primarytaxparcelslots","handleMapChange","ressearch","result","intersections","road","RD_TYPE","handleMapChangesWrapper","updateMapChanges","SaveMultipleLocations","DeleteMultipleLocations","mapupdatefields","UpdateApplicationGISFields","MapSection","portal","readPermissionsList","readPermissions","returnVal","StatusName","checkStatus","canEditMap","multipleLocationHandler","SaveMultipleLocationsSingle","fieldTypes","DS","TB","TA","DN","NumberFormat","N","P","RB","RadioGroup","CB","IsSelectable","tempval","remove","n","FormControl","component","FormGroup","row","text","FormHelperText","CF","C","button","PopUp","RG","D","DatePicker","DT","DateTimePicker","DDM","DateMonth","T","TimePicker","AC","AutoComplete","CM","Label","LB","PH","PhoneFormat","RC","B","CSC","ULB","DM","MultiDropdown","TM","Timer","G","MultiAdd","TBB","max","OtpInput","otp","numInputs","separator","inputStyle","isDisabled","hasErrored","SGN","sigPad","useRef","getSignaturePad","fromDataURL","marginLeft","SignaturePad","clearOnResize","canvasProps","clear","Close","toDataURL","CheckBoxOutlineBlank","WorkFlowUse","HM","HeaderAlert","L","Link","BU","RBT","MissingItemsDrawer","SH","SubHeader","checkBoxTransformProps","Y","DefaultValues","fieldDetails","prevVal","values","dataAttr","fieldProps","updates","validations","newstate","triggersave","prop","layout","businessrules","nestedlist","initial","BRHiddenState","createduplicate","loadDefaultValues","domainmapper","savesuccess","nestedlistArrayValues","autocompleteselectonload","BRActivity","nestedlistArrayValues_each","itemslist","itemfilterval","mapNameList","nested","subnested","valuefrom","nestedname","nonnested","nestedvalue","autocompleteselectonload_each","ids","IsSendEmailNotification","UserId","noprimeuser","otherPropProperties","_excluded2","hasOwnProperty","allowedValues","transformValue","defaultItems","filterItems","hasValue","valueType","prevFieldvalues","Evaluate","currentrefIds","dynamicData","sendActualVal","isVisible","tempDomains","domainitems","listKeys","splitNames","splitname","resultskeys","roleList","found","unique","array","_toConsumableArray","Set","RoleType","noEdit","showOnly","initalfieldValues","init","objectConversion","defaultval","_each$transformProps","defaultCondition","checkDefaultValue","savetype","allItems","navigation","objval","datasetval","dataAttrVal","itemkey","itemval","resultKey","_objectSpread43","customField","triggerBRActivity","back","_objectSpread44","merge","addData","fielderrors","err","_nestedlist$","valids","fieldValidations","validationRequiredMapKeys","requiredFields","SectionContext","stringify","components","group","othersLayout","_excluded3","fieldsLayout","reduce","acc","order","_x$components","splice","apply","useSections","routeParams","displayName","aliases","removeValues","mapActionsToEffects","dispatchSharedValueChange","dataAttributes","validationMapKeys","fieldsinSectionNames","fieldsinSection","mapSettingsJson","fieldLabelsinSection","fieldKeysValues","fieldMappedColName","initRun","sectionType","counter","sharedProps","sharedValues","useParams","errorSections","hideSections","parentRecordVals","sidebar","modules","setPrevFeildValues","currValue","_useReducer","useReducer","_useReducer2","dispatchFieldsChange","updateSections","handleEffectUpdates","handleActionsToEffects","afterSave","onTirggerAfterSave","tempConditions","cloneDeep","eachCondition","globalCondition","GLOBAL","filterEachRules","OnCondition","filterGlobalRules","OnGlbalCondition","global","EventType","reduxVals","tempFieldValues","updatedSharedValues","accum","names","useDeepCompareEffect","sharedkeys","prevStateShaedProps","share","sendvalues","saveFields","tempsendvalues","IsDuplicate","tempconditions","extras","runEvents","onLoad","secKeys","sec","onSectionKey","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_context","prev","next","groupByType","stop","_x","objKeys","runBussinessRule","_e$target","validaterules","errorExists","validmapkeys","errorObj","fieldValidate","errorText","_extras","handleValue","onEvent","info","_components$name","custom","errorlist","saveStatus","handleButtonClick","callRequest","handleButtonSave","handlerowClick","rowData","onConfirmationSubmit","onConfirmationClose","oldconditionsarr","newconditionarr","oldvalues","onloadname","componentsCreation","fieldNames","_fieldProps$each","_excluded4","EachComp","customTypes","hookTypes","hiddenfieldssection","allfieldssections","fieldssectioncount","groupBy","d","field","isBoolean","layoutTypes","sectionNames","_excluded5","_layout$each","_excluded6","default","comp","sectionsCreation","openedSectionsRules","prevSections","customprops","textAlign","paddingBottom","noMaxWidth","tag","marginTop","padding","lineHeight","borderRadius","popper","border","boxShadow","zIndex","backgroundColor","borderBottom","inputBase","palette","common","white","transition","transitions","create","fade","primary","main","borderColor","margin","minHeight","alignItems","hover","popperDisablePortal","iconSelected","flexShrink","flexGrow","close","opacity","spacing","Cards","componentlist","card","Card","CardMedia","CardContent","content","gutterBottom","Divider","divider","light","footer","muiBaseTheme","media","paddingTop","heading","subheading","GreenSwitch","switchBase","red","green","track","Switch","LabeltransformProps","showvalue","LayerTemplate","handleChange","filtertypelist","domainlist","isCombo","Name","Value","filterType","isDomain","lookUp","LabelComponets","minWidth","selectEmpty","SubModuleCheckboxes","subModuleMenu","setSubModuleMenu","submoduleselection","hidesubmodules","subModuleItems","setSubModuleItems","_useState5","_useState6","openConfirmation","setopenConfirmation","_useState7","_useState8","filteredResults","setfilteredResults","_useState9","_useState10","reload","setReload","isconsultantprofile","isprofile","isConsultant","SubModuleMenuRead","itemresult","customnoticesave","newfun","handleConfirmationCancel","checkboxitems","elements","SubModuleId","Number","SubmoduleId","_step2","_iterator2","_createForOfIteratorHelper","s","done","subModuleArr","k","Boolean","isEmpty","_step3","_iterator3","DisplayName","islabel","ConfirmationDialog","titleinfo","urlinfo","moduleaccess","CompanyId","filteredlist","CompaniesModules","_step","_iterator","handleConfirmationChange","filteredarr","handleLink","labelinfo","IframeView","extra","frameView","addEventListener","origin","contentWindow","postMessage","token","getToken","innerHeight","src","frameBorder","marginHeight","marginWidth","scrolling","Otp","_len","args","_key","formstyles","formcontainer","formrow","itemrow","CForm","setInitialResults","multiplenames","initialvalue","splitName","setInitialFieldResults","_this$props2","changeResults","objProperty","len","setFormFieldValue","subform","_this$props3","storeChildrenState","changedFieldName","newResults","subforms","previoussubforms","managesubforms","componentSubForm","addSubForms","fieldname","getValue","createFormLayout","_this$props4","totalrows","totalcolumns","allComponents","cache","cacheColProps","cacheRowProps","itemslen","allRows","rows","compwidth","currentValue","comprow","compcol","jumpToStep","_cacheColProps$name","compAttr","currentrow","rowProps","compProps","otherCompProps","_createElement","newcompwidth","newrow","newrowProps","_cacheColProps$name2","insertCol","eachName","_cacheColProps$name3","_cacheColProps$name4","step","rest","_this$props5","goToNext","setAdditionalFormFieldValue","_this$props6","additionalresults","onSave","save","actions","crud","update","_this$props7","newroute","_save$post$newroute","pushlink","route","matchProps","history","errfieldnames","errfieldValues","onCancel","cancel","_this$props8","formLayout","_this$props9","read","delete","multiplevalues","memoizeFormLayout","_this$props10","_this$props11","sendProps","receiveProps","handleSubmit","sectionDesktop","CButton","globalitem","iconname","iconColor","iconFontSize","iconposition","passer","handleIconClick","otherOptions","Icon","leftIcon","rightIcon","mapkeyval","CCheckbox","checkboxoutlineblankicon","checkboxIcon","otherCustomOptions","_EachComp","CCheckBoxGroup","checkboxvalue","labelcomp","controlcomp","select","lists","FormLabel","cvalue","clabel","cconfirmationpopup","CDateTimePicker","textField","container","flexWrap","CDivider","CDropDown","changedval","checkcomp","handleBlur","handleOpen","_props$options","valueKey","valueName","checkkey","_this$props$currentVa","helpfultext","reCalculateFieldLayout","htmlForLabel","placeholder","inputattrprops","inputLabelProps","inputprops","inputadornmentprops","_this$props$currentVa2","Select","onOpen","MenuItem","CDropDownWithAdd","openDialog","closeDialog","searchItem","addItem","handleothercomponents","deleteItem","handleToggle","currentIndex","newChecked","renderValue","chips","chip","List","ListItem","role","dense","tabIndex","disableRipple","ListItemText","ListItemSecondaryAction","DeleteIcon","justifyContent","iconHover","CDualListBox","available","showselected","opts","foundresults","selectedListbox","selectedvalue","passPropsToOtherFields","_read$get","customProps","availableCollection","selectedCollection","DualListBox","selectedRef","showHeaderLabels","CFormAutoComplete","displayname","styles","handleAutoCompleteInputChange","newtransformProps","selarr","CheckBoxAutoComplete","touched","handleClick","CFormCheckbox","confirmOpen","setConfirmOpen","currenteventvalue","setCurrenteventvalue","disablecheckbox","onlyLabel","hidecond","hideval","String","hasconfirmation","handleFieldChangeValue","confirmtitle","FormColorPicker","displayColorPicker","hex","reactCSS","background","editcolor","swatch","cursor","popover","cover","right","bottom","left","SketchPicker","isHTML","str","doc","DOMParser","parseFromString","from","childNodes","some","node","nodeType","CFormDiscussionPanel","iter","CreatedByName","CreatedOn","dangerouslySetInnerHTML","__html","CardActions","CFormFieldsGroup","helpertext","formgrouprow","otherprops","CFormInputHidden","hidden","variantIcon","success","CheckCircleIcon","warning","WarningIcon","ErrorIcon","InfoIcon","MySnackbarContentWrapper","dark","amber","iconVariant","other","SnackbarContent","classNames","CloseIcon","CustomizedSnackbars","snackbarmessageType","snackbarmessage","Snackbar","anchorOrigin","vertical","horizontal","autoHideDuration","snackbar_Red","snackbar","checkboxtransformprops","CFormMultiDualListBox","firstboxselected","firstboxavailable","secondboxselected","secondboxavailable","firstboxresults","secondboxresults","currentfirstboxselecteditem","currentsecondboxselecteditem","firstboxformresults","onFirstBoxChange","_components","firstbox","firstboxoptions","firstboxtranformProps","firstboxresultsavailable","firstboxresultsselected","newselecteditems","addeditemsvalue","customsave","onhandleSave","onSecondBoxChange","handleFirstBoxFieldChange","_components2","_components3","firstboxcrud","firstboxsave","savefirstboxresults","customextraProps","customvalue","newurl","urlpath","saveurl","replaceidvalue","customsaveref","handleSnackBarClose","reason","eventOn","_components4","secondbox","firstboxread","firstboxget","oldrequestApi","tempfirstboxavailable","tempfirstboxselected","tempselectedid","firstselectedbox","_this2$state","tempformControls","tempchangedFieldName","selecteditem","secondboxoptions","secondboxtranformProps","secondboxboxcrud","secondboxread","secondboxget","secondboxrouteProps","subids","secondselectedbox","selectedformresults","finalselecteditem","firstcomp","_ref4","multiboxes","_components5","firstboxprops","secondboxprops","headerProps","designprops","_ref5","closebutton","helpertitle","icons","moveLeft","moveAllLeft","moveRight","moveAllRight","SubForm","handleSecondBoxFieldChange","SnackBar","messageType","TextMaskCustom","inputRef","MaskedInput","inputElement","mask","placeholderChar","showMask","guide","CFormText","dvalue","dropdowntransformProps","CPaper","getIntialSitePermits","urlPath","getOwnPropertyNames","colnames","allgridcols","initialdata","gridoptions","datagridcol","loadText","rowRender","trElement","secondcomponent","trProps","onDoubleClick","pushLink","link","cloneElement","siteId","mapIdstoSiteIds","m","add","mapSiteIdstoPermissions","accessLevel","dataState","routes","columnsState","onColumnsInitialSubmit","export","_export","skip","pageable","buttonCount","previousNext","modulePermissions","SiteId","accessrights","unshift","toDataSourceRequestString","firstcomponent","FirstComp","GridHeader","ExcelExport","exporter","Grid","total","onDataStateChange","handleDataStateChange","onRowClick","handleRowClick","resizable","GridToolbar","GridColumn","cell","handleStatusStyle","columnMenu","mixins","gutters","CLabel","line","CLink","effect","location","to","RouterLink","CMultiDualListBox","unsavedData","compareresults","newComponentDidMount","duallistprops","firstboxeventsavailable","firstboxeventsselected","firstboxeventsavailableget","firstboxeventsselectedget","firstboxavailablelist","firstboxselectedlist","results1","selectedKeys","firstboxavailablelistbind","firstboxselectedlistbind","firstboxresultsbind","parentId","eventId","subtypeurls","customurl","_ref6","_components6","duallistheader","Tags","defaultSelValue","defaultitems","savestringformat","itemname","dataitemvalue","dataitemarray","selitemarray","_jsxs2","_jsxs3","displayvalues","stringformatvalues","e1","filterSelectedOptions","CMultiDualListBox2","notificationToRoles","notificationToUsers","notificationToApplicantOwner","notificationToPrimaryContact","notificationToPropertyOwner","contactTypes","true","false","ID","notifyToContactTypes","notificationRoles","notificationUsers","firstboxsaveurl","requestURL","autcompletetagshelp","autcompletetagshelproles","hideonnull","autcompletetagshelpusers","autcomcompletetagschange","tags","notifyToContactTypesValue","autcomcompletetagschangeroles","autcomcompletetagschangeusers","getContactTypes","firstboxrouteProps","results2","firstboxselectedarray","secondboxselectedarray","requesturi","ctypes","notifyTorolesValue","ProgressBar","progressBar","Autocompletetags","paragraph","notificationtype","CMultiSelect","MultiSelect","NoticeTextTemplate","handleEditorTemplateId","editorVal","callTemplateSave","resultExists","start","NoticeText","ismasterfield","tabprops","putRecordData","complete","getData","passingId","CNumberFormat","min","cformat","parseFloat","Numberformat","CRadio","Radio","CRadioGroup","choosen","selecteditemlabel","setValue","Paper","ChooseTime","hour","onAtHourChange","SelectProps","native","range","minute","onAtMinuteChange","DisplayCard","secondaryPaper","radioBtn","every","setEvery","StartTime","endTimeSelect","onCheck","justify","search","startsWith","paddingLeft","Cron","textResult","tabs","displayCard","selectedTab","setSelectedTab","selectedTabValue","setSelectedTabValue","parentChange","tab","onValueChange","newVal","xs","Tabs","scrollButtons","Tab","a11yProps","tabChanged","Minutes","Hourly","Daily","Weekly","Monthly","Yearly","getComponent","showResultText","showResultCron","sm","lg","cronstrue","getVal","cronResult","CronComponent","CScheduler","ScheduledOn","CSectionCard","forwardProps","iwsusersignin","responsivescreen","validation","formdata","CSignUpForm","_event$currentTarget","jumptostep","jumptofalsestep","changepassword","tokenvalid","isValidtoken","guid","isLinkValid","nextButton","compsForEachStep","_event$target2","isIWAAuth","passwordvalid","steps","username","emailaddressusername","emailaddresspassword","pincodevalue","newpassword","confirmpassword","otpinput","passwordmessage","_this$props$match$par","test","backdrop","backdropOpen","Module","Portal","userID","backdropClose","token_type","access_token","validUser","pincodeRequired","isFirstTimeLogin","invalid","error_description","Password","initialstep","emailAddress","pincode","isWindowsAuth","GetAuthType","isldap","iswindows","isAutoLogin","hash","_iwsJSON$components$","GetSSOToken","cheader","currentformprops","BackDrop","CSimpleLink","handleCancel","_save$post","SendIcon","underline","colorBar","colorChecked","iOSSwitchBase","duration","shortest","easing","sharp","iOSChecked","transform","iOSBar","grey","iOSIcon","iOSIconChecked","shadows","inputattrProps","uncheckedIcon","bar","iconChecked","TabPanel","Box","p","CText","divstyle","CTextBox","returnval","menuProps","ainputadornment","CToggleButton","otherIconProps","CTreeView","getAllId","arr","checkeditem","parentID","newArray","getPathdata","o","formatData","isEqual","isNull","treeStructurechange","addURL","isViewMode","tree","viewMode","postRecordData","processTreeViewItems","handleDoneOutline","passtabData","handleTabChange","tabindex","onCheckChange","itemHierarchicalIndex","newCheckedChange","newtempitem","handleTreeViewCheckChange","checkChildren","checkParents","handleSubItems","shift","newExpandChange","checkStatusChange","checkAll","uncheckAll","forceUpdate","onSingleModeChange","singleMode","onCheckChildrenChange","onCheckParentsChange","applyCheckIndeterminate","loaditems","treeURL","iscurrentuser","_ref11","progressbar","doneoutline","sendbutton","TreeView","expandIcons","checkboxes","treeItems","checkIndeterminate","searchSpecifiedTreeItem","isChecked","CUpload","onStatusChange","saveUrl","removeUrl","attachmentTypeId","batch","Upload","defaultFiles","withCredentials","extract","beg","end","matcher","RegExp","normalise","strGenerate","dropdown","t","DiscussionsForm","handleSubjectChanged","subhelpertext","handleCommentsChange","strlength","trim","LayoutForm","getResult","helpertextbody","vald","createput","_save$put","_save$post2","_save$post3","_save$post4","requiredFieldsKeys","sidepopupadd","formgridadd","addtoresults","excludefromresults","navigateview","navigateadd","clearResult","showview","showsend","showsavebtn","afterSaveroutes","connectingroute","connectingrouteid","routeparams","routeparams2","existparams","autcompletetagshelpcontacts","helpertextcontact","helpertextinternaluser","stateresults","sendEmail","resultsss","savetypes","send","_save$put2","_save$post5","_save$post6","AppContacts","InternalUsers","AppContactsDetails","InternalUsersDetails","PermitNumber","effects","_ref12","hidepath","InverseParentDiscussion","reverse","initialloadextrainfo","loadContacts","appContacts","propssiteid","propsregionid","propsdistrictid","propsrecordid","propscontactid","configid","internalUsersRead","internalusers","preSelectedUsers","internalUserDetailResults","_ref13","_ref14","savebtn","editbutton","notdisableitem","isedited","roleaccess","canAdd","SaveTemplateInfo","sendtemplatebutton","CRichTextEditor","form","defaultSelected","KeyboardDatePickerExample","InlineTimePickerDemo","DateTimeePicker","BasicDateTimePicker","Timepicker","FilteredNameHeader","NameHeader","_React$Component2","_super2","CInterchangableGrid","_React$Component3","_super3","gridWorkflowColumns","gridRowClickEvent","changeEvent","Status","handleGridForm","tabValue","filteredfield","take","clearFilters","pathname","removeItem","cols","excel","fileName","allPages","dataSource","transport","headers","change","pageSize","serverPaging","serverSorting","serverFiltering","serverGrouping","serverAggregates","schema","refresh","pageSizes","dataBound","selectable","sortable","scrollable","reorderable","filterable","multi","noRecords","template","savereprt","useComp","gridkey","customcondition","LoadExtraInfo","_LoadExtraInfo","initialloadextrainfodata","handlecustomCondition","sent","isColumnActive","active","gridcolumns","noquery","gisurl","UpdatedOn","urlPath2","workflowdata","tempString","LoginDate","bodyval","ReactResizeDetector","handleWidth","handleHeight","indicatorColor","textColor","headerClassName","columnProps","headerCell","CSimpleGrid","_update$link","getLandingPagelogo","RightDrawerAvatar","oregonlogo","delasoftlogo","adotbackground","wisdot","DeldotLogo","externaluserprofile","hidescroll","hidemargin","tabinfo","tablabel","tabkey","subfieldname","addsubfieldname","hideall","dependency","equal","SelectedApplicants","typography","bottomstyle","large","SimplePopover","_React$useState","_React$useState2","anchorEl","setAnchorEl","_React$useState3","userProfile","_React$useState4","setUser","_React$useState5","_React$useState6","loading","setLoading","_React$useState7","_React$useState8","openSlide","setopenSlide","_React$useState9","_React$useState10","impersonate","setImpersonate","UserProfileJSON","mobile","Avatar","alt","UserImageUI","defaultImage","Popover","transformOrigin","impersonateAccess","handleSlide","IsOfficial","ExtUserProfileJSON","authentication","logOut","MuiEdgeLayout","mobileMoreAnchorEl","landinglogo","loadInitialGrid","logo","getSignInToken","setNotifications","handleNavigation","handleMenuClose","handleMobileMenuClose","handleMobileMenuOpen","handleNotificationClick","CSSBackgroundClasses","CSSColorClasses","setProfile","notification","handleDrawerOpen","headerTitle","isMobileMenuOpen","toolbaropt","iconbtnopt","menuopt","menuitemopt","alignchildren","drawer","isresponsive","isnotresponsive","inhead","alignitem","child","renderMobileMenu","Menu","UserIcon","SupportIcon","Badge","badgeContent","NotificationIcon","RightDrawer","grow","sectionNonDesktop","HomeIcon","User","FullName","textDecoration","sectionMobile","MoreIcon","_sectionDesktop","_sectionNonDesktop","_sectionMobile","breakpoints","up","notifications","getProjectMessages","HeaderView","actionmessage","WRSHeader","WRsLogo","drawerWidth","Accordion","marginBottom","MuiAccordion","AccordionSummary","MuiAccordionSummary","muiName","AccordionDetails","MuiAccordionDetails","SidebarView","appBar","leavingScreen","appBarShift","enteringScreen","menuButton","purpleAvatar","deepPurple","hide","whiteSpace","drawerOpen","drawerClose","toolbar","last","_classNames","_classNames2","handleTitle","openSidebarDisplay","Profile","typeAccess","Popovers","ChevronLeftIcon","ChevronRightIcon","Wrapper","submodules","AddIcon","hideForSubmodules","GroupItem","TreeItem","RecordMenuView","listitem","newtab","isProfile","tempColor","companyId","linkis","paddingRight","ListItemIcon","materialicon","rel","groupitems","treeitems","lskey","defaultExpanded","withWidth","permdatasettingicon","PermDataSettingIcon","dollaricon","AttachMoneyIcon","closeButton","MuiDialogTitle","disableTypography","MuiDialogContent","CPopUp","borderTop","MuiDialogActions","responsivefullscreen","handleClickOpen","handleNavigate","updateDimensions","removeEventListener","closefunc","parentProps","onResultDisable","dialogtitle","buttonprops","hideon","dialogprops","contentstyles","showFullScreen","disableBackdropClick","disableEscapeKeyDown","buttonlink","sidepopupbuttonlink","routeval","fabicon","isConfig","customstyles","otherButtonProps","issystemadmin","isSystemAdmin","pathval","finalpath","lastIndexOf","btncolor","ReorderIcon","fullScreen","URL","process","REACT_APP_API_URL","Base","fail","Axios","baseURL","Request","getById","InitialConfig","MaterialConfig","getConfig","json","properties","capitalize","subfields","enum","valueSources","fieldSettings","dateFormat","operators","preferWidgets","getFieldConfig","queryValue","QbUtils","uuid","SCHEMA_URL","FIELD_URL","FIELD_OPTION_URL","getSchema","schemaId","getType","fieldType","flex","INVOICE_URL","INVOICE_ITEMS","ITEM_TYPE","getCalculatedAmount","invoices","getInvoice","asset","invoice","recursive","expressions","expr","itemType","itemExpression","itemKey","itemValue","checkTree","loadTree","query","jsonLogicFormat","jsonLogic","logic","getExpression","getDateFormat","itemUnit","cnt","amount","round","valueOf","Math","floor","asHours","asDays","asMonths","asYears","expression","Function","rej","invoiceTypes","groupId","schemas","rslt","invoiceItems","flat","itemTypes","schemaData","list","invoiceId","finalData","assets","finalAssets","finalTotal","getTotal","curr","lineitems","otheritems","GetDomainValues","GetSitePermitType","sitepermittypepath","GetInvoiceCycle","GetInvoiceCycleDetails","cycle","appdata","nextInvoiceCycleDate","returndetails","NextInvoiceCycleDate","InvoiceDueDate","DatePrintedOnInvoice","authorizeddate","stringToDate","getFullYear","datecal","invoiceperiod","InvoicePeriod","cycleinvoiceon","GenerateInvoiceDate","GenerateInvoiceOn","InvoiceType","IsInvoiced","currentDate","currentyear","evenyear","isEven","oddyear","isOdd","InvoiceOn","setFullYear","caldate","AddYearToDate","DateOnInvoice","datetoprintoninvoice","DateToPrintOnInvoice","PaymentDueOnInvoice","invduedate","setDate","getDate","PaymentDueDays","PaymentDueDate","abs","adder","year","month","getMonth","day","AddDaysToDate","date","days","_date","_format","_delimiter","formatItems","toLowerCase","dateItems","monthIndex","dayIndex","yearIndex","ReGenerateInvoice","RegenerateProps","invoiceid","ownerid","invoicetype","submodulekey","InvoiceId","ApplicantId","SitePermitTypeId","recordpath","renewalres","renewalpermits","rv","promises","GetComputedFee","allres","merged","permit","BRFee","dynamicpermitfee","findPropFromObject","PermitRenewalFee","ReGenerateInvoiceWrapper","RenewalPermits","invoiceres","dataSet","dset","invoicecycleDetails","AuthorizedDate","InvoiceDate","InvoiceDueDays","OwnerId","PermitNo","DistrictName","County","CancelParent","invoicesRef","PermitInvoiceSchema","RecordId","GenerateInvoiceWrapper","sectionkey","filters","recursivelyFindProp","keyToBeFound","GenerateInvoice","BillingOption","sitepermittypedetails","ApplicationFeeType","ProrateFeeType","PermitRenewalFeeType","computedfeeres","dynamicappfee","dynamicproratefee","ApplicationFee","ProrateFee","GenerateInvoiceController","invres","HasApplicationFee","ApplicationInvoiceSchema","GenerateApplicationFeeInvoice","HasPorate","PorateInvoiceCycle","ProrateInvoiceSchema","invoicecycleres","GenerateProrateFeeInvoice","PermitRenewal","PermitInvoiceCycle","GeneratePermitFeeInvoice","refid","dataSetIN","invoicesIN","invoiceentity","dueDateCalc","extendedDate","setMonth","invoicingfor","regenerateid","RegenerateId","cancelParent","InvoiceCyleDueDate","submodule","RefType","reftyp","charAt","invoiceTypeKey","invoiceDate","DateTimeToZone","paymentReferenceId","dueDate","invoiceType","invoiceLineItems","invoiceDetails","regenerateId","litem","RecordID","ownerId","liteminvoicedetails","invoicedetail","GetInvoiceEntityResult","InvoiceCreatePath","InsertInvoice","toLocaleString","timeZone","GetTotalFee","InvoiceDetails","totalAmount","Amount","GetTotalDue","paidAmount","BillingPayments","payment","BillingPaymentDetails","SubTotal","RunInvoiceCycle","GetAllRenewalPermits","ownersitepermittypegroup","groups","groupByMultiple","resultPemrits","renpermits","wrapperProps","InvoiceSettings","subModules","setSubModules","module","FileUpload","handleFileUpload","filename","files","toBase64","extension","imageFormats","handleImageUpload","reader","FileReader","readAsDataURL","onload","onerror","RemoveImage","imagename","DownloadImage","image","linkSource","downloadLink","document","createElement","download","click","ConfirmDelete","handleCancelDelete","GridList","gridList","GridListTile","defaultSigImage","GridListTileBar","titlePosition","titleBar","actionIcon","DropDownIcon","CloudUploadIcon","imagesupload","overflow","subtitle","TermsandConditions","btoa","Style","showComments","S3Upload","filetype","setFiles","setEvents","filePreviews","setFilePreviews","affectedFiles","setAffectedFiles","uploadRef","fileStatuses","file","validationErrors","onloadend","ev","uid","getRawFile","canSave","handleUploadClick","passresults","realFiles","formData","FormData","append","OldPostMutiFormData","attachmentDetailsCallBack","attachFileExtensions","imageFileExtensions","allowedExtensions","returnfiles","AttachmentDetails","FileName","ContentType","Size","progress","UploadFileStatus","Initial","FileReference","fileDescriptions","ExternalDropZone","customHint","customNote","showActionButtons","autoUpload","restrictions","onAdd","newState","onAddCallBack","onRemove","newFilePreviews","onProgress","edge","fileModle","FileType","Folder","downloadAttachments","fileKey","MultipleFileUpload","fileInput","attach","ContentStr","multiplefiles","handleAttachmentSet","getUploadResult","handleDownload","dFile","OpenConfirmationMessage","openconfirmation","deleteattachmentindex","handleDelete","deletefile","deletefilearr","remFiles","finalarr","CloseConfirmationMessage","CancelDelete","setAttribute","appendChild","removeChild","DownloadAttachment","zipAttachDownload","archiveParentId","downloadAttachId","viewAttachments","FileId","downloadurl","focus","bind","_assertThisInitialized","ismultiple","zipDownload","attachmenthistorygrid","sidepopupgridheight","savedreports","newsavedreportstypes","ExtendFileAttachments","AttachmentType","attachment","AttachmentTypeIdVal","AttachmentTypeId","notesVal","notes","getallresultsInfo","newattachedfile","allfile","attachedfiles","includeremovedfiles","newValue","getallattachementtypes","externallink","downloadContent","downloadName","firstIterate","updateAttachment","attachmentComponentsArray","getallattachements","Notes","docmissing","editformat","urlmissing","urlhelpertext","typemissing","handleEdit","menu","stateprops","UpdatedBy","UpdatedByName","FileAttachments","WizardAttachment","editorValResults","Attachemntresults","handlefinalSave","dfinalresults","getState","formresults","finalresults","handleCustomSave","customSave","urlValue","Dataresult","_props$options$crud","attachmentTypedd","uploadedAttachments","selecttype","noteWizard","attachmentTypeWizard","wizardView","componentsArray","atComponents","hideheader","ExtendedAttachment","atUploadOptions","FileImages","sUrl","imageTypeId","imageId","imageTypedd","uploadedimages","updateimage","atTypeOptions","data1","imageDetails","DownloadIcon","GridButton","customParams","CTemplateLoader","editorValOrg","subject","fileContentHTML","NotificationSettingId","dropdowndefaultvalue","routinghelpertext","routingerror","BodyStr","finalresult","Rank","getTemplateDetails","settingid","templateurl","templateid","reqbody","datarequrl","recorddataurl","fieldvaluedata","templateFormats","handleCustomBack","final","templateFormatsCallBack","templatedata","dropdowndata","notificationSettingId","dropdownurl","allnotesurl","allroutingurl","ddldata","el","callbacksave","hidesub","fullheight","nonstickyposition","duplicatebutton","CRoutingTreeView","itemsselected","initialload","notescount","showvalidation","expandedvalue","dataWrapper","treeData","allnotesData","allroutingData","treeStructureLatestUpdates","getDataPromise","allnotes","allrouting","superparentid","lastcommenteddate","getLastDataNotes","userid","getLastDataCreated","lastsentdate","getLastDataRouting","records","filterrecords","CreatedBy","getAllSelectedItems","allitems","nonresponders","parentType","roleId","handleNoteUrl","isbool","selectedrecords","passDbData","UsersList","DownloadNote","base64PDFFileContent","downloadBase64File","handleCheckBoxChange","moditems","checkForNestedItems","getRoutingControl","lableVal","nodeId","align","nest","nodeIds","handleSelect","handlePrint","printurl","printurlval","contentBase64","_ref9","_ref10","_ref15","initialloadextrainfoProps","allnotescounturl","notesurl","routingurl","notescounturl","allRequests","returnitems","isitemfound","parentName","checkAllChildItems","childrecord","stringdate","toLocaleDateString","handleContact","handleNotes","contactbutton","notesbutton","printbutton","hasclearfix","defaultCollapseIcon","ExpandMoreIcon","defaultExpandIcon","onNodeToggle","onNodeSelect","answer_array","Banner","AMESRouteControls","APSRouteControls","HolidayAdd","mapValues","Holidays","sub","hidevalue","param","routeName","HolidayDay","HolidayDate","editInfo","allgriddata","valid","removesubfieldname","EditHoliday","closepopup","closepopupval","ViewHoliday","hideanother","historyurl","saveAs","I","A","HolidaysContainer","addOpen","editOpen","navigateItem","loadreportfilter","ReportJsonQueryStr","reportOpen","HolidaysGrid","HolidaysReport","condition","uncheck","inValid","menucolor","convert","Report","HolidayContainer","Container","HolidayGrid","AddNotice","Notice","Description","canOverwrite","ViewNotice","sectionscomp","NoticeContainer","NoticeGrid","NoticeReport","_NoticeGrid","MasterTemplateContainer","MasterTemplate","SitePermitType","CanEditCurrentNoticeDate","CanEditFutureNoticeDate","CanEditNoticeDate","CanEditPastNoticeDate","AttachmentAdd","Attachment","AttachmentEdit","ViewAttachment","FileDetails","AttachmentContainer","AttachmentGrid","AttachmentReport","TemplateBr","saveduplicate","isIcon","Edit","GeneralsettingsAdd","AddGeneralsettings","Type","GeneralsettingsEdit","EditGeneralsettings","CanEdit","ProjectMessagesTableAdd","AddProjectMessagesTable","noParams","Message","subname","alternateUrl","sublist","replaceBody","word","getdatafrom","ProjectMessagesTableEdit","editProjectInfo","subnavigation","EditProjectMessagesTable","Order","ProjectmessagesEdit","ProjectMessagesTable","customsubgrid","ProjectMessagesAdd","AddProjectMessages","BusiessRulesAdd","AddBusiessRules","BusiessRulesEdit","EditBusiessRules","ProjectMessagesReport","ProjectMessagesContainer","ProjectmessagesGrid","SelectProjectMgs","GROUP_NAME","_ProjectmessagesGrid","customizedheight","verify","removeObjParams","ProjectMessagesTabs","ProjectMessagesSectionTab","ProjectMessagesGrid","BusinessRulesContainer","BusiessRulesGrid","_BusiessRulesGrid","PolicysettingsAdd","AddPolicysettings","showOnUI","ShowOnUI","PolicysettingsEdit","EditPolicysettings","SettingstabView","PolicysettingsContainer","PolicysettingsGrid","PolicysettingsReport","Settingstab","SettingsHeader","SettingsContainer","settingsgrid","SimpleGrid","getResults","gridFields","DynamicFilter","handleDynamicResult","setColumns","CustomDataClxn","gColumns","colObj","addOnsByName","accept","getElementById","PostMutiFormData","ViewComfy","disableEnforceFocus","disableAutoFocus","Header","KendoGrid","ExtraProperties","_ref$isSidebar","isSidebar","notices","setNotices","alerts","setAlerts","setRules","eventsList","_useState11","_useState12","setMessagetype","_useState13","_useState14","setReports","_response","eventlist","messagetypes","reportlist","_response$","noneItem","ProjectMessageId","RadioButtonsGroup","MultiCheckAutoComplete","EventOn","CanOverwriteGlobalRule","RuleType","IsTriggerAnotherRuleOnFailure","TriggerAnotherRuleOnFailure","PreConditionCheck","PreConditionRuleId","Scheduler","ScheduleAt","ProjectMessagesId","NotificationSettingsId","NotificationSettingsIsAuto","NoticesId","NoticesIsAuto","maxDrawerWidth","fullscreenwidth","dragger","screensize","setDrawerWidth","fullwidth","setFullWidth","updateWidth","handleMouseUp","handleMouseMove","useCallback","newWidth","offsetWidth","clientX","offsetLeft","closeFieldSettings","fieldopen","fieldSettingsValue","ValueType","CustomComponents","handleCheckChange","validresultset","AllowedValues","handleCheckGroupChange","handleDateChange","handleCurrentDateChange","Editor","allfields","fld","changeValue","vals","disableToolbar","KeyboardButtonProps","ViewFields","viewResults","isLabel","confirmation","setConfirmation","EachResultChange","newSet","MasterFieldId","isVirtual","selectValues","SystemBusinessRuleId","viewFieldType","editorType","MasterFieldName","ColumnName","CheckBox","IsVisible","IsEnabled","IsRequired","FieldSettings","DNSIcon","ruleType","IsVirtual","setSelected","EachDropResultChange","SaveIcon","pxToRem","flexBasis","expand","expandOpen","Fields","expandedvalid","setExpandedValid","expandedInvalid","setExpandedInValid","validFields","setvalidFields","invalidFields","setinvalidFields","validadd","setValid","invalidadd","setInvalid","changeBusinessFields","vbusinessrules","ibusinessrules","BusinessRuleFields","rb","cf","invalids","panel","isExpanded","addNewRule","resultset","business","editRule","getMasterInputType","returntype","getMasterIdValues","bussinessrule","rule","DeleteRecord","expandIcon","ResultsCard","isSectionField","StaticFilter","_ref$section","internalroles","setInternalRoles","externalroles","setExternalroles","internalroleset","externalroleset","Stepper","orientation","Step","StepLabel","StepIconComponent","CodeIcon","StepContent","InternalRoles","ExernalRoles","isCalcualtedQuery","Uploaded","QueryBuilder","onQueryChange","showNotToggle","showCloneButtons","showLockButtons","enableDragAndDrop","CalcualtedQueryBuilder","EventIcon","Events","FiberManualRecordIcon","elevation","ValidationSideRules","setItems","tablenames","setTableNames","sidePop","setSidePop","setTotal","eachsection","_useState15","_useState16","_useState17","_useState18","_useState19","_useState20","SystemBusinessRulesDependencyFields","filtericon","newItem","Kendoheader","_evt$target","Simplegrid","onUp","JsonQueryStr","onDown","onDelete","enablerender","Rule","_useState21","_useState22","setResult","_useState23","_useState24","setFields","_useState25","_useState26","uploaded","setUploaded","_useState27","_useState28","_useState29","_useState30","queryError","setqueryError","_useState31","_useState32","nameError","setnameError","_useState33","_useState34","descError","setDescError","_useState35","_useState36","columnnames","setColumnNames","fieldset","tempColumns","onError","errorstate","errorval","tempResult","SqlQuery","Formatter","NoticesEventOn","NoticesOnLoad","NotificationSettingsEventOn","NotificationSettingsOnLoad","ProjectMessagesEventOn","ProjectMessagesOnLoad","ReportIsAuto","Textbox","dynResponse","CvsDateItems","HashKey","SidebarBusinessRules","SidebarBR","Alert","_useSnackbar","useSnackbar","enqueueSnackbar","closeSnackbar","showAlert","persist","random","closeAlert","AlertView","IntegrationNotistack","alertView","Counter","addCount","onClickDismiss","reduceCount","getCount","ReactDOM","createPortal","Backdrop","SnackbarProvider","maxSnack","variantSuccess","variantError","variantWarning","variantInfo","drawerPaper","HelpSideBar","setUrl","opendrawer","modal","SimpleBackdrop","loaderMessage","CircularProgress","NoticeEditor","setId","notify","setNotify","notifyAuto","setAutoNotify","noticeAuto","setAutoNotice","parentTableName","setParentTableName","setValues","openNotice","isAuto","openNotification","NoticeEditors","onEventStatus","showError","onEventshowError","onEventStatusUpdate","NotificationEditior","openNotificationSlide","handleNotificationClose","AssociatedApplicants","externaluserloginhistory","receiveValues","paramname","valuefromparent","companyinternal","alttabkey","hidename","exactRoute","nestedhide","nestedkey","isnested","newcompanyuser","removeotherfield","removefield","changedvalue","companyusersgrid","customheader","kendogridprops","comapanyuser","newcomapanyuser","users","consultantgrid","consultantuser","PermitOptions","QuickSearchOptions","defaultProps","Search","permitSearch","setPermitSearch","showAdvancedSearch","setShowAdvancedSearch","permitOptions","setPermitOptions","setData","selectionmapdata","setSelectionmapdata","searchType","setsearchType","changedModule","setChangedModule","waitMap","setWaitMap","quicksearchitems","setQuickSearchItems","collapsible","panes","setPanes","handleClear","handleModuleChange","tempResultdata","permitOptionsData","handleAdvanceSearch","tempItems","CriteriaItems","SearchList","Sites","Stage","renderSwitch","disableField","hasPadding","hasPaddingS","permitsearchkey","MultiDropDown","DatePickers","Asynchronous","optionsurl","SITE_PERMIT_TYPE","tempdomains","_res2","_res2$","searchdata","domains","wrssearchdata","tempsearchdata","tempFields","handleSearch","datastate","SEARCH_CRITERIA","SearchKey","tempSearchKey","tempModule","tempSearchKeyresult","searchParams","operator","IsQuickSearch","_res3","tempcolumns","customcolumns","assign","fieldKey","columnName","Breadcrumbs","Splitter","KenodGrid","selecteddata","selectiondata","AddRecordMapJson","isGridView","handleSeclectionfromMap","setDataState","setFilteredField","gridDataState","gridPageable","tempdataState","KendoGrids","hasfilterfields","selectedField","onSelectionChange","onHeaderSelectionChange","selectData","syntheticEvent","Column","headerSelectionValue","Pageview","EditAuthorization","ViewAuthorization","FirstName","LastName","GotoUser","IsApproved","Approved","Denied","buttontype","navurl","optionalRoutes","useFieldVals","ruleOrder","AuthorizationsContainer","AuthorizationsGrid","AuthorizationsReport","CreateRecord","lazy","EditRecord","CGrid","ProjectDownloads","WRSRouteControls","userProps","AccessPortal","helpContext","loaderView","noticeView","confirmationView","setLoader","setAlert","setDrawer","Suspense","fallback","Skeleton","Loader","HelpContext","RecordEditor","Route","exact","strict","render","Settings","MasterTemplates","SidebarBr","Authorizations","FORWARDRouteControls","Content","generatePin","substr","contentcomp","dynamicKey","EPSRouteControls","UPSRouteControls","KEPTRouteControls","SACRouteControls","MPSRouteControls","drawerHeader","InvoiceSideBar","htmlFileContent","fileContent","setFileContent","gridrow","DownloadInvoice","DownloadId","toggleDrawer","handleInvoiceSlider","GetAppIcon","RegenerateSideBar","cancelInvoice","setCancelInvoice","setInvoiceDate","invoiceDueDays","setInvoiceDueDays","handleRegenerateSlider","lable_baseCAP","recordDetails","isFine","regenerateOptions","RegenerateType","CancelInvoice","IsValidPermitStatus","prevstatus","currstatus","IsValidInvoiceStatus","BillingGrid","gridColumns","setGridColumns","hascheckbox","hasCheckbox","setHasCheckbox","setcheck","submodulemenu","rowRenderData","checkdata","handleSelection","finalitems","gridselectionLoad","selectionChange","propsdata","datavalues","gridSelection","headerSelectionChange","gridprops","selectDataVal","dataValues","StatusCustomCell","DateCustomCell","GridTitle","issidebar","fontWeightRegular","PhysicalCheckSideBar","itemEdit","setItemEdit","PayeeName","PayeeLastName","PayeeAddressLine1","PayeeAddressLine2","PayeeCity","PayeeState","PayeeZip","PayeeEmail","billingInfo","setBillinfInfo","TransactionDate","Quantity","ProcessingFee","CheckNumber","CheckDepositNumber","CheckBankNumber","CheckDepositDate","TotalAmount","CheckDepositedBy","currentCheckData","setCurrentCheckData","initialCheckData","checkData","setCheckData","ApplicationType","TotalFee","BalanceDue","paymentInformation","setPaymentInformation","setHelperText","billingHelperText","setBillingHelperText","amountHelperText","setAmountHelperText","zipHelperText","setZipHelperText","balanceAmount","setBalanceAmount","statedropdownvalues","setStatedropdownvalues","firstnameHelperText","setFirstnameHelperText","lastnameHelperText","setLastnameHelperText","addressline1HelperText","setAddressline1HelperText","addressline2HelperText","setAddressline2HelperText","cityHelperText","setCityHelperText","_useState37","_useState38","editedData","setEditedData","_useState39","_useState40","invoicePermits","setInvoicePermits","_useState41","TransactionId","PaymentDate","_useState42","ACHCCPaymentDetails","setACHCCPaymentDetails","viewtype","LoadBillingData","LoadInvoiceData","LoadInvoicesData","LoadInvoicePermitDetailsList","invids","billingid","invoiceids","InvoiceGetPath","invoiceidlist","invdetailsmerged","invlineitemsmerged","invbillingpaymentsmerged","invbillingpaymentdetailsmerged","inv","InvoiceLineItems","blg","GetTotalDueMultiPayments","billingpaymentdetails","invmerged","billinginfo","achepayments","invlist","physicalcheckSlider","saveInvoicePayments","billinginformation","checkinfo","paymentdetails","valuedata","num","myArray","dectext","discard","addcheck","totalcheckdata","savedCheckData","Invoices","ReceiptDownloadId","downloadbutton","MaterialTable","InvoiceLineItemsForm","InvoiceLineItemsFormControl","AddCircleIcon","propdata","EditIcon","finalarray","blncamount","deleteCheck","startAdornment","startIcon","DeleteOutlineIcon","CheckIcon","Billing","TabValue","setTabValue","setInvoice","pdf","openInvoice","setOpenInvoice","generateInvoiceType","setGenerateInvoiceType","openGenerateInvoice","setOpenGenerateInvoice","permitDropdown","setPermitDropdown","appDropdown","setAppDropdown","paymentStatusOptions","setPaymentStatusOptions","setInitialloadextrainfo","silderContext","gridSelectionRecord","setGridSelectionRecord","setHasCheckBox","_useState43","_useState44","gridCheckBoxSelectionRecords","setGridCheckBoxSelectionRecords","_useState45","_useState46","sitePermitTypeData","setSitePermitTypeData","_useState47","_useState48","_useState49","_useState50","physicalCheckProps","setPhysicalCheckProps","_useState51","_useState52","setRecordDetails","reqpath","recorddetails","apppaymentstatus","permitpaymentstatus","fullrecorddetails","initialtabvalue","LoadData","LoadExistingInvoiceData","LoadInvoiceDetails","LoadPaymentInformation","invoicetypeexp","extdata","statusopts","proinvoice","invdataarr","dataitems","columnsarr","flatten","removedfields","GenerateProrateInvoice","GeneratePermitRenewalInvoice","Error","SetGridData","payOnline","currentuser","payment_window","timer","setInterval","closed","clearInterval","payOnlineAll","invoicecondition","selectionmapdataid","isInteger","gridcheckload","regenerateSlider","RegenerateOptions","invoiceprops","applicantid","invtype","invid","InvoiceStatusChange","viewInvoice","gridselectionrecord","lable_base","lable_allinvoices","lable_renewallable","lable_allrenewal","lable_paymentinformation","LocalAtmIcon","MonetizationOnIcon","PaymentIcon","AccountBalanceWalletIcon","stagedetails","progressstatus","showbutton","calTotalFee","calTotalDue","generatebutton","showbutton_fine","opt","DueDate","PaymentReferenceId","recorddata","frameborder","getGrid","OwnerBilling","setDisabled","invoiceSummary","setInvoiceSummary","setAllInvoices","setCompanyId","_useState53","_useState54","checkModules","setCheckModules","billingtype","reftype","passid","passtype","LoadStatistics","SetInvoiceSummary","unpaid","cancelled","paid","unpaidamount","GetSummaryFee","paidamount","cancelledamount","invoiceSummaryArr","iscancel","district","county","MasterFieldsList","displayalert","dateshowcomp","datecomps","newcomponents","AllowDate","isduplicate","currentDefaultDate","CurrentDefaultDate","handleHelperText","UIfieldcomponent","lengthHelper","handleShow","compname","conditionalComponents","hidecomp","showcomp","requiredFieldNamesInUpperCase","dropdownchoice","masterdropdownchoice","Linkeddropdown","linkeddropdowns","tempResultShow","newmasterfieldslist","fieldConfiguration","datecomponents","createdcomponents","otherchangedfield","alreadyshowncomp","createshowcomp","tempResults","toolTipFieldNamesInUpperCase","compcrud","compread","helpContextMsg","IsSystem","tval","embeddtext","ContextHelp","contexthelpval","ContextHelpExternal","showdomains","getDomainKeys","nameinuppercase","globalvalidate","addedname","fieldprops","domainKey","_objectSpread8","getRequiredFields","returnkeys","duplicaterecord","duplicate","extcontexthelp","afterSaveroutesId","handleView","popupback","changedNames","errformControls","customhandleedit","isHidden","createcomps","self","aryofvalidations","xvalidations","subfieldnamelength","validationname","lastvalidation","iseditduplicate","rowrenderedslide","CustomAlert","isAction","severity","masterfield","domainvaluesurl","comptypes","RT","ApplicationInspections","formControlsKeys","transformIntoForms","allvalidations","initformControls","_formControls$FieldKe","datevalue","mapfieldnamestofieldkeys","compprops","fieldkey","newapplicationinspection","updateInspection","newInspection","validationurl","encodeURIComponent","_this$props$match$par2","applicationstatus","_values","formvalues","_this$props$match$par3","CFormButton","taxparcels","taxparcel","validateDuplicateTacparcel","isexists","addTaxParcel","validateTaxparcel","taxParcelFlag","parcelId","QueryTask","parcelFeatures","FinalPIN","ParcelIDwithoutsplchar","PINwithoutsplchar","attributes","PIN","grpcentroid","centroid","validateTaxParcelTask","deleteTaxParcel","ConfirmDialog","UsersNContacts","refs","EPSNotifications","FormTextBox","FormDropDown","notificationvalues","modulevalues","SitePermitsSectionsFields","newsectiondropdown","availableSections","selectedsection","SectionId","selectedParentSection","sectionsettings","fieldsettings","togglebackslider","handleBackSlider","opensection","openfield","isNewSection","sectionData","settings","SlidingButton","OnAddNewSection","defaultDrawerWidth","minDrawerWidth","Editable","sitePermitTypeAppStatusId","ModuleJSON","dropdownlist","setdropdownlist","templookup","settempdropdownlist","lookup","tempdata","tempLookup","finaltempdata","IsInternalVisible","IsMandatory","IsExternalVisible","IsExternalMandatory","tableData","addorupdate","initialEditValue","validate","isValid","editComponent","doubleHorizontalScroll","paging","emptyRowsWhenPaging","addRowPosition","actionsColumnIndex","editable","onRowAdd","newData","setTimeout","onRowUpdate","oldData","dataUpdate","onRowDelete","dataDelete","TableHead","TableRow","TableCell","rowSpan","MyCommandCell","setTemplateSettingsOpen","subGrid","inEdit","AttachmentIcon","TemplateSettingsheader","TemplateSettings","closeTemplate","appDownloadsHelperText","setAppDownloadsHelperText","permitDownloadsHelperText","setPermitDownloadsHelperText","setTemplateSettings","buttonsettings","setButtonsettings","templatesettings","IsApplicationDownload","IsPermitDownload","AppDownloadsId","PermitDownloadsId","AppDownloadsGroup","PermitDownloadsGroup","DropDown","editField","attachments","initialGroup","processWithGroups","newDataState","setGroupIds","StatusAdd","_ref$dataItem","closeEdit","newDataItem","setDataitem","_evt$target2","ApplicationStatusId","StatusCode","TransmisionStatusId","IsDefault","autoFocus","DescCons","IntialLoad","isMoved","jsoninfo","descconsgridjson","upanddowndisplaycondition","AdminList","NoAdminList","ExternalList","WRS","NotAdminRegList","NotRegList","SuperAdminList","PreparerExternalList","SystemAdminList","CHART_COLORS","SAME_DAY","ONE_DAY","TWO_DAYS","THREE_DAYS","FOUR_DAYS","FIVE_PLUS_DAYS","OTHERS","ADDITIONAL","CHART_STYLES","FONT_FAMILY","TITLE_COLOR","GRID_COLOR","TOOLTIP_BG","LABEL_COLOR","LABEL_SHADOW","generateColorPalette","baseColors","h","l","colors","iterations","ceil","_loop","base","lightness","formatNumber","Intl","getColorForCategory","category","KendoChart","donutCenterRenderer","renderColumnChart","showPercentages","reportType","animalType","useHorizontalBars","sortedData","categories","kind","countyColors","Chart","ChartArea","ChartTitle","font","ChartValueAxis","ChartValueAxisItem","majorGridLines","ChartCategoryAxis","ChartCategoryAxisItem","rotation","visible","ChartSeries","ChartSeriesItem","categoryField","gap","ChartSeriesLabels","percentage","textShadow","ChartTooltip","point","countyData","dueDates","ChartLegend","countiesWithValues","countiesWithZero","displayedData","displayedTotal","sum","calculatedHeight","totalCounties","flexDirection","isZero","baseColor","allContractors","contractors","contractor","contractorColors","filteredSeries","contractorName","_county$contractors","series","stack","countyTotal","_county$contractors2","contractorData","contractorTotal","dueTotal","hasMismatch","hasTinySegments","fontStyle","animalTypes","uniqueCounties","processedData","isSecondChart","dashType","colorField","highlight","_data$e$category","LABEL_BG","_county$contractors3","renderDonutChart","allPossibleCategories","completeLegendData","alwaysShowInLegend","donutCenterRender","holeSize","isDarkColor","boxSizing","letterSpacing","renderPerformanceContractorsColumnChart","dynamicHeight","overflowY","_ref16","_ref17","chartType","hoveredSeries","showValues","effectiveChartType","monthName","dialogContent","pickerContainer","spinnerContainer","spinnerValue","arrowButton","dialogTitle","dialogActions","validationText","MONTHS","MonthYearPicker","_MONTHS$find2","onSelect","initialMonth","initialYear","_ref$maxYearsFromNow","maxYearsFromNow","_ref$title","currentYear","currentMonth","minYear","selectedMonth","setSelectedMonth","selectedYear","setSelectedYear","validationError","setValidationError","handleMonthChange","direction","newMonth","newYear","handleYearChange","isMonthUpDisabled","isYearUpDisabled","isMonthDownDisabled","isYearDownDisabled","KeyboardArrowUp","KeyboardArrowDown","_MONTHS$find","rangeContainer","shape","rangeItem","rangeLabel","secondary","rangeValue","MonthYearInput","startValue","endValue","_ref$disabled","_ref$isRangeSelector","isRangeSelector","_ref$type","pickerType","setPickerType","getMonthName","monthNum","displayStartMonth","displayStartYear","displayEndMonth","displayEndYear","selection","newStartValue","newEndValue","startDate","siteTransformProps","reportsTransformProps","yearTransformProps","contractorJson","reportsJson","monthsJson","DashboardChart","contractorChart","targetval","reportkey","filteredData","entry","C_NAME","AnimalType","Year","endMonth","endYear","endDate","endOf","entryMonth","Month","isBetween","startOf","aggregatedByCounty","Total","UserType","userType","contractorperformaceData","monthdisplay","performanceReport","aggregatedMetrics","metric","metrics","countyName","performanceCountyAsContractors","handleSignInventoryReport","chartMonthApplicationData","minimalBody","REPORTTYPE","warn","numericValue","allWisconsinCounties","yearFilter","startYear","startMonth","isNaN","countiesWithData","loadInitialApplicationChart","reportno","standardizeCategory","lowerKey","reports","queryParam2","body2","site","groupedData","Dueby0","Dueby1","Dueby2","Dueby3","Dueby4","Dueby5plus","caseTotal","Dueby2plus","contractorsSum","chartLegendName","replaceAll","monthApplicationChart","permitType","arrchartlabels","loadInitialChart","sitedata","permittypedata","SitePermitTypesConfig","YEARVAL","sitesJson","permitTypeJson","permitsAll","loadContractors","contractorBody","callback","userlist","IsAdmin","set","iteratorValues","uniquecontractors","handleContractorChange","buildRequestBody","handleReportChange","newReportType","dateState","applicant","handleSiteDropdownChange","initalpermit","handlePermitTypeDropdownChange","selectedpermit","permitValue","handleMonthDropdownChange","handleYearDropdownChange","endMonthName","isSameOrBefore","handleFilterTypeChange","handleAnimalTypeChange","newType","getYears","handlemonthval","loadInitialPermitChart","SITEVAL","START_MONTHVAL","START_YEARVAL","END_MONTHVAL","END_YEARVAL","ANIMALTYPE","STARTDATE","ENDDATE","handleChartNavigation","activeChartIndex","handleDateRangeChange","initialReportType","chartApplicationData","chartPermitData","contractorChartData","ShortName","isLoading","yearlist","showDateFilters","hasTwoCharts","isPerformanceContractorsReport","showContractorFilter","showCountyFilter","dropdownLabelProps","BreadCrumb","labelProps","borderLeft","gridTemplateColumns","reportval","nsComponents","_options","_options2","_options3","selrecord","handleAccordionChange","handleSaveWithTemplateData","descInValid","strlengthnotice","descLeading","descLength","AttachmentIDS","PermitTempalteID","ApplicationTemplateID","downloadExternalPDF","pdfurl","contentPDF","fileContentPDF","handleFileDownload","fetch","blob","createObjectURL","revokeObjectURL","toggleEmailDrawer","SendNoticeEmail","strbodylen","bodyInValid","subLeading","subLength","bodyLeading","bodyLength","subInValid","errorForBody","ownerdetailsurl","Notices","handleEmailFieldChange","vieweditnotice","DisableNoticeDate","hidesavebutton","canShowTemplate","attachmentsdata","Templatedownloaddata","canAttachApplication","canAttachPermit","nsComponentsArray","noticeCommonComponents","statusJson","url6","url7","statusid","attachids","Apptemplateid","Permittemplateid","subjectError","bodyError","submoduletransformProps","tempname","openconfirmationpopup","targetname","compvalidation","errorname","errorhelpertext","resetSitepermittype","loadSitePermitType","SiteID","loadSubModulePermitType","loadSideBarTables","getBusinessRules","sidebarItems","sideUrl","getValidations","selectedId","sitePermitTypeJson","showSitePermitType","loadRegionPermitType","regionId","url9","url11","handleEditNoticeDate","error_NAME","error_SUBMODULEKEY","error_SITEPERMITTYPE","error_NAME_helpertext","error_SUBMODULEKEY_helpertext","error_SITEPERMITTYPE_helpertext","checkresults","handleFormSave","canEditNoticeDate","error_DESCRIPTION","error_DESCRIPTION_helpertext","url8","handleStatusChange","closeconfirmation","stayInSamePage","unsavedchanges","_this$setState4","handlemultidropdown","resultdatasplit","selectedRecords","submoduleselectedtables","submoduleselectedtablesresults","handleconfirmation","_this$setState6","_this$setState5","handleclose","regionsJson","submoduleJson","RegionId","error_SITEID","error_REGIONID","error_SITEID_helpertext","error_REGIONID_helpertext","sitesPopup","url10","setSideBarTablesData","maxLength","ConfirmationPopup","CFormCheckBox","CFormSwitch","MultipleDropdown","moduleId","showHistory","NotificationSettings","handleState","inputState","NotificationType","embedform","v","NotificationEvents","selectednotificationeventscollection","availablenotificationevents","selectednotificationeventsTRANSITION","selectednotificationeventscollectionTRANSITION","selectedcollection","onNotificationEventChange","transitionstatus","seltransitionstatus","existingdata","selectednotificationevents","alltransitionstatus","allpermittypestatusitems","SelectedStatus","TransmisionStatus","notificationeventresults","availablenotificationeventsTRANSITION","onToNotificationEventChange","appstatusfirstboxeventsavailable","appstatusavailable","selectedValues","selcted","selectedStatus","loadSelectedNotificationEvents","selctedsep","selectedTransitionValArr","sectedTransitionsep","loadScheudleNotificationReports","reportsurl","eventdetails","selresults","selids","availableresults","selectedresults","selectedTransition","autcompletetags_FROM","getEventLabel","autcompletetags_TO","multitransformProps","NSTemplate","handleIsGroupChange","IsGrouped","handleInternalTemplateId","internalTemplateId","handleExternalTemplateId","externalTemplateId","tabSelection","getBusiessRules","noExtNotification","UseType","hasExternalNotify","hideexternal","transformPropsWithKey","NS","Site","loadEventOn","handleEventOn","targetVal","showEventDetailsButton","changeEventDetailProps","callRecipients","url12","isapplicantcheck","notificationType","defaultrecord","selectedKey","jsn","notificationEventOnJson","error_name","error_submodulekey","error_siteID","error_Sitepermittype","error_EventOn","validatestatus","helperText1","hideeventstabs","hideeventrecipients","notificationTypeJson","showSubModule","showSite","showEventOn","showScheduleNotitificationTemplateButton","showSchedulerButton","BeforeDueDays","error_regionId","progresscomplete","schedulerPopup","eventTemplatePopup","recipientsPopup","eventDetailsPopup","scheduleReportsPopup","trace","CMulti","NsTemplate","NsPopUp","RadioList","Title","Heading","CompanyType","innerwidth","AccountType","activeStep","continue","nextStep","prevStep","MobileStepper","KeyboardArrowRight","backButton","KeyboardArrowLeft","ModuleSelection","checkboxvalues","CompanyModules","handleCheckboxChange","moduleChecked","SubModuleSelection","submoduleItemsToParent","setSubmoduleItemsToParent","CompanyDetails","stateList","StateList","AddressLine1","AddressLine2","City","State","Zip","Country","Phone","SecondaryPhone","HomePhone","Fax","hidebutton","SignUp","openpolicy","editorval","validateusernameandsubmit","signuperrors","singuperrorupdate","newreg","correctvalidation","UserName","externalUsernameReqURL","submit","signUpError","isRequired","HasValidationError","errorSubmit","getTerms","handleChecked","handlerecaptchachange","readonlyandprint","ReCAPTCHA","sitekey","AgreeTerms","ReCaptcha","Success","UserDetails","handlecontactcheckbox","UserPhone","Officephonecheck","OwnerRegistration","IsElectronicCommunicationAllowed","MaxUsers","AddressType","Modules","ModuleKeys","EPSCheck","CompanyValidations","ContactValidations","ownerRegErrors","userDetailsErrors","closestep","onclose","regNextStepValidation","validateRegistrationData","regNextStepUserValidation","input","isRequiredVal","hasError","_this$setState9","_this$setState10","handleStepFunc","_this$state4","customErrors","requiredFieldErrors","validationerror","_this$state5","externalUserEmail","companyValidations","contactValidations","allValidations","loadDropdownValues","dropLists","requests","contacts","comvalidations","convaliations","ContactTypeList","RequestApproval","setApproveDenyStates","companyModules","reqstatus","idval","requeststatusval","RequestStatus","hidedenyval","requestStatus","initialresult","hidedeny","disableapproveall","radiodata","DenyAll","radioevt","changestatus","ApproveAll","handleApprovalChange","moduleidval","resetStatus","approveallClickedEvent","othername","requestStatusData","changeToApprovestatus","handleIcons","notaccesseditems","loadSubModuleMenu","radioval","RegistrationRequestApproval","approvalButtons","comments","Comments","disabletab","violation","submodulemenudata","violationId","resdata","containsapproved","companymodulesresdata","companiesmodulesresdata","initialrequest","requestApprovalSave","assignSubModuleMenu","dataItemVal","getHeader","ButtonGroup","windowHeight","requestApprovalSaveFnc","StyledMenu","getContentAnchorEl","StyledMenuItem","reorder","startIndex","endIndex","_result$splice","removed","getRowStyle","isDragging","draggableStyle","getRowFieldStyle","getListStyle","IsEqual","Clone","jsonObj","FieldsConfig","_this$state$options","OnSettings","FieldType","CDateTime","CDate","CTime","CMultiDropdown","SettingsIcon","CRowDraggable","OnMouseHover","isHovering","onMouseLeave","dropclazzName","dragclazzName","draggableIndex","showFieldActions","Draggable","draggableId","dndId","rp","rs","onMouseEnter","innerRef","draggableProps","dragHandleProps","CRowDroppable","sdp","Droppable","droppableId","dropType","isDraggingOver","DNDSettings","CSubSectionsContainer","sectionConfig","mainSections","clazzName","wrapperWlazzName","getSubSections","droptype","isSectionsOpen","OnAddSubSection","OnAddRow","OnMoveDown","OnMoveUp","CanShowMoveUp","CanShowMoveDown","OnSectionSettings","OnSectionRemove","OnRowSettings","sp","ss","CSectionDraggable","draggable","CSectionDroppable","droppable","sectiondroptype","subSections","sds","isDragDisabled","canDrag","sdp2","sds2","setRuleTypeDropdown","haskey","ruleset","Static","kendoheader","pathKey","setPathKey","setDatastate","customDataState","tempDatastate","pathName","ds","kendoresponse","gridAddOnsByName","allowPropsData","onCustomDataChange","openValidate","opened","availablelist","sectionerror","titleClazz","ExclamatoryIcon","MoreVertIcon","keepMounted","canAddRows","MoveUpIcon","MoveDownIcon","showSettings","SettingIcon","BussinessIcon","ValidationsRules","CSectionsContainer","CBuildDragDropContext","droppables","onDragEnd","DragDropContext","CBuildDND","startup","suburl","SectionFields","availableFields","Rows","ssection","finalsection","saveSitePermits","saveresponse","beforeSave","_this$props$options","AddUpdate","datSave","norows","updatedSecctions","secfields","rowOrder","secrows","RowOrder","colOrder","ColOrder","selectedfield","OnAddSection","parentSection","filteravailable","addedSection","sectiondroppableid","allsections","newSection","DisplayOrder","parentDndId","droppableid","newRow","newsections","allFieldssections","allFieldssectionsRowfields","nondeletedsections","newavailableSections","upsections","upsection","updateSectionOrder","downsections","downsection","displayOrder","updatedsections","settingsstate","updatedsec","handleValidateBackSlider","currentsectiondata","destination","sourceIndex","source","destIndex","sourceParentId","destParentId","sectionsubItemMap","sourcerows","destrows","reorderedrows","newSourcerows","_newSourcerows$splice","draggedItem","newDestrows","sectionfieldsMap","_newSourcerows$splice3","currentsection","dndconfig","handleAdd","addbutton","canAddSections","custombutton","handleCustom","customicon","customtitle","ValidateIcon","otherModules","isviolationgrid","getcolumns","getviolationid","initialLoad","hascustomselection","isViolation","checkread","datacustomkeys","databykeysrecorddata","checkedlist","isTransferGrid","TransferPermitNo","TransferPermitId","MasterTableId","submoduleKey","permitTypeId","customSubmodule","defid","defaultId","getGridColumns","routeidval","getAccessById","urlGridPath","istransfer","applicantId","isrevision","method","GetFetchProps","dataarr","tempdatarr","uiFieldTypeComponent","GridFilters","radiovalue","valueref","withdatastateformat","columnurl","passDataState","kendoStructure","filterkey","localStorageFilter","tempDataState","changeDataState","changedDataState","fil","filt","sor","handleRadioChange","siteval","selectedMapData","mapresdata","_components7","hasDefaultReport","urlGrid","_grid","loadReportFilterGridColumns","view","loadReportFilterFetchData","onSplitterChange","onNestedChange","nestedPanes","handleCustomCheckBox","finaldata","hascheckboxselection","checkBoxData","handleCheckBox","deleteitem","checkedarray","inthis","CustomSelection","elementsIndex","customselectiondisabled","handleDisableCheckbox","checkBoxEnableCount","isLoad","Checked","gridview","_this$props12","_components8","isExport","verticalsplitterorientaion","nestedpanesize","exportExcelName","accessfrom","grid","hidegridtools","simplegrid","showdefault","userrole","mapview","_this$props13","_components9","hidemapview","hideMap","mapnestedpanesize","addMapJson","handlelayerFilter","customMapHeight","layerCustomFilters","SHOW_ON_TYPE","applicantinfo","previd","presid","exportData","isfilter","access","userurl","usertype","hasGroups","_this$props14","translateDataSourceResultGroups","attachparamgridkey","existingReportsURL","loadReportFilter","newdatastateval","flatMap","_this$props15","queryStrdefault","OwnerName","_this$props16","_components10","customselectionheaderProps","submodulekeyheader","inquiryheaderProps","applicationheaderProps","Transfer","iscgrid","loadReport","setRecordData","Authorization","_props$data","_props$typeList","typeList","changeTab","setRefresh","AuthenticationName","AuthenticationType","MapUrl","Dashboard","FormContainer","AViewPort","ns","addworkflow","AddWorkFlow","administration","permissions","isSuperAdmin","displaySettingsTabList","printlist","isRequestAdmin","roles","epsgeneral","_printlist$epsgeneral","Adminlist","sitesettings","setStatus","TemplateSettingsOpen","setEdit","setAdd","setSearch","moduleJSON","setModuleJSon","orgData","setOrgData","collapsedState","setCollapsedState","tempStatus","handleTransision","itemChange","DropDownCell","dataValue","objT","rowType","newCollapsedIds","tempData","setExpandedState","collapsedIds","getTableView","filterData","SearchIcon","groupable","cellRender","tdElement","cellProps","AppStatusLabel","NoticeIcon","expandField","banner","billing","billingbr","businessrulename","currentresult","setCurrentResult","setAmount","masterfieldid","setmasterfieldid","sectionId","setSectionId","geturl","requiredsection","masterfielddata","masterfieldkey","IdVal","pushdata","querystr","businessrulefields","adddata","Input","cnoticetexttemplate","companybilling","CompanyBilling","companyiframe","configcomp","configtypes","setconfigtype","menuDisabled","setOpenConfirmation","deleteItemId","setDeleteItemId","configTypeData","setEnabledItems","configdata","idarray","DistrictId","scope","dashboard","descofconsgrid","DescOfConstructionGrid","discussionsform","EPSNewApplication","NewApplicationInspection","epssectionsfields","EPSSectionsFields","logout","newApplicationMap","NewApplicationMap","noticecommon","notificationsettings","nspopup","nstemplate","pagenotfound","phasetypes","phase","setPhase","phaseItems","setPhaseItems","gridItems","setGridItems","phaseSelection","setPhaseSelection","selectedPhaseTypes","setSelectedPhaseTypes","phasetypedropdown","gridread","idreplace","requestUrl","pushid","selectedphasetypes","disableditem","addurl","PhaseId","orderurl","changeorder","scheduler","signupform","SignUpForm","systemstatistics","SystemStatistics","taxparcelbutton","TaxParcelBtn","unauthorize","usersncontacts","workflow","WorkFlow","workflowuse","sitepermitdnd","registrationrequestapproval","Sidebar","popupbutton","PopUpButton","slidingbutton","SlidingPage","autocompletepopover","labelsList","pendingValue","setPendingValue","usersList","_React$useState11","_React$useState12","setVisible","Popper","disablePortal","noOptionsText","DoneIcon","visibility","ai","bi","InputBase","cautocompletetags","formattype","cautocompletetagsnotification","AutocompleteTagsNotification","cconfirmpopup","cformautocomplete","FormAutoComplete","cformcolorpicker","cformdiscussionspanel","FormDiscussionPanel","cformphoneextn","inputComponent","cformphonetext","cformtext","FormText","checkbox","checkboxgroup","CheckBoxGroup","cnumberFormat","colorpicker","FormTextField","companyaccesscontrol","checkboxval","resultarr","companySubModuleMenu","setCompanySubModuleMenu","setSubModuleArr","changed","setChanged","CompanySubModuleMenuRead","selectedval","ModuleId","primarycheck","changedsubmodule","checkedval","confirmationpopupbutton","ctab","setOpenconfirmation","tempVal","setTempVal","prevdataItemVal","currentdatavalue","usePrevious","unsaveddata","Admin","displaycondition","tabhide","hidetabcond","hidetabval","hidetab","onhidetabcondition","dataItemKey","aftersavetab","AuthType","isLocalStorage","showtab","profileaccesscontrol","displaytab","inactiveusertabkey","profilepwd","leave","stay","customArcgisMultiselect","dropValues","dropval","initalVal","lastvalue","changedVal","newDrop","difference","splitDropArray","nd","pullAt","splittedArray","textval","drop","handleLastVal","customlabelexpression","addValue","setAddValue","subvalue","postfix","customlayerfiltertype","setDomain","setFilterType","list1","list2","customlayertemplate","dataoptions","setRender","propVal","setval","parseVal","tempMatch","ismatched","isMatch","newtempval","customTermsandConditions","CustomTermsConditions","invoicesettings","standarddescofconstruction","CustomStandardDescOfConstruction","MaterialDateTimePicker","datetimetext","Text","datemonth","Date_MonthPicker","dropdownwithadd","DropDownWithAdd","dtext","duallistbox","dynamiclayoutform","Form","editor","etext","fileattachments","fileimages","fileupload","formbutton","FormButton","formcheckbox","FormCheckBox","formdropdown","formdropdownwithadd","formfieldsgroup","FormFieldsGroup","formmultiduallistbox","FormMultiDualListBox","formswitch","FormSwitch","formtextbox","generalpaper","GeneralPaper","gridbutton","historydate","historyuser","iframe","imageupload","ImageUpload","infotext","inputFieldHidden","InputFieldHidden","interchangablegrid","InterchangableGrid","multiduallistbox","MultiDualListBox","multiduallistbox2","MultiDualListBox2","multipleslect","ditems","customitems","multiselect","multiselectautocomplete","extratempProps","propsVal","initalpropval","autoOptions","auto","navbutton","navformbutton","navlink","routelink","radio","radiogroup","routingtreeview","simplelink","SimpleLink","sectionscard","SectionsCard","switch","templateloader","textbox","time","togglebutton","ToggleButton","toggleicon","treeview","upload","associatedapplicants","nonassociated","setNonassociated","associatedResult","setAssociatedResult","reference","setReference","information","getAll","nonassociate","associate","dataItemTemp","handleUploads","getReference","RequestFileReference","isUpdate","handleUpdate","addupdate","S3NativeUpload","uploadType","isCustom","isButton","regisconsultants","SetSelectedCom","companies","Companies","accessControl","setuser","authDetails","setAuthDetails","groupIndeterminate","setGroupIndeterminate","urls","accesscontrol","reqAuthDetails","handleIndetermineGroupCheck","indeterminate","eachItem","onFocus","stopPropagation","checkGroupSection","subeach","subindex","parent","checkRoleSection","handleCountyChange","layerauth","sidePopUp","setSidepopup","authList","setAuthList","settypeList","GetLatestData","authorization","authenticationlogin","signOptions","AuthorizationPath","handleRoute","compmapReducer","SignInViewPortWrapper","setLogin","ProposedLandUse","AddProposedLandUse","UsageNotes","LandUse","Unit","LandUseADT","PropertyGroupID","ProposedHeader","ViewProposedLandUse","ViewProposedLand","loadtransformProps","initialdataAttributes","CalculatedValue","ProposedLandContainer","ProposedLandUseGrid","ProposedLandUseReport","_ProposedLandUseGrid","hiddenProps","fieldval","CTemplate","GetDataPromise","sourceURL","callBack","GetTemplateFormats","setSubject","setAttachment","setReportsVal","reportsval","noticetypementions","attachmentsmentions","sidebartablementions","loadtemplate","loadDropDownData","snapshot","loadSideBarTableColumns","mapresults","mapattach","sourceURL1","sourceURL2","sourceURL3","mentionsval","noticetypementionsval","attachmentsVal","allreports","reportsmapresults","requiredProps","_this6","parentFields","tempmentions","canDownload","showhistory","hideattachments","hideAttachments","showReports","queryval","ok","loader","notice","borderBottomColor","datetime","HeaderFieldProps","onAsOfDateChanged","otherConfigs","setRange","passDate","futureDate","headerfieldprops","KeyboardDateTimePicker","cancelLabel","okLabel","clonemenu","sidebaritemsinfo","cloneitems","setCloneItems","DynamicFeedIcon","ITEM_HEIGHT","fab","expressionFormats","appendslash","beforeslash","labelitems","buttons","hassidebartabs","_props$fieldProps","openMenuDisplay","openMenu","setOpenMenu","canRead","handleBreadcrumbMenu","customname","trimvalue","valuereplace","exptype","hidecondition","haseditrecord","hasrolebasedcondition","accessPortal","prevcondition","dataItemName","dataItemValue","LeftSideBar","ExternalApplicationSidebar","chunk","findLastIndex","moreicon","GISLookupTask","domainlookupdata","allPromises","domainitem","ServiceUrl","eachpromise","inputgeom","gisFeatureLayer","QueryTaskExecuteBufferWithrelation","viewProperties","extent","gisResponse","isMultiNames","isMultiValues","valefs","resposnsattr","NameReferenceValue","GetFormatVal","ValueReferenceValue","responseData","namereference","arrnamereference","GISLookupTaskWithGeom","UIFieldType","initialBuffer","GISLookupBuffer","buffertimeresponse","BufferTime","BufferDistance","DomainLookupWithinBufferDistance","resultreference","record","CSubForm","memoizeLayout","setMemoizeLayout","createSubFormLayout","_props$value","radioVal","isNumber","isString","validationrules","R","Mask","percent","BI","IsNumber","VC","IsString","NVC","int","convertval","datetime2","Minlen","Maxlen","X","exp","IsRange","U","Z","Str","EStr","S","leadingorTrailing","validationskeys","fieldValueskeys","uppercasefieldValueskeys","eachfieldvalidations","requiredRule","fieldValue","globaleachvalidate","validationtypevariants","callvalidationfn","validationtype","callvalidationAttr","RegistrationDashboardDrawer","setCount","totalCount","setTotalCount","useHistory","submodulearr","HowToVoteIcon","sx","searchtextbox","handleSearchChange","registrationrequestnav","RegistrationRequestNav","KendoHeader","extracomponent","extraactions","extracomponents","reportapplied","setOpenMenuList","setMobileMoreAnchorEl","mobileMoreAnchorEld","setMobileMoreAnchorEld","mobileBreadcrumbAnchorEl","setMobileBreadcrumbAnchorEl","isBreadcrumbMenu","isMobileSubMenuOpen","configtypeAccess","handleMobileSubMenuOpen","handleMobileSubMenuClose","navigatebreadcrumbmenu","hideinmenu","changecolor","hideconditionvalue","_excluded7","matchparams","_excluded8","hideinexternal","_excluded9","conditionsHandle","_excluded10","menuhref","Materialicon","onClickEvents","menudisplay","eachs","ErrorHandler","errorInfo","delcomp","addcomp","adminformReducer","headerReducer","isTourOpen","workflowreload","recordssetvalue","messages","projmessages","passtabdata","recordidinfo","isreset","onEventTransition","onTriggerSave","onSitePermitTypesStatus","sidebarReducer","snackbarReducer","snackmessage","confirmationReducer","onyes","onno","combineReducers","adminform","compmapvalues","createTheme","fontFamily","h6","overrides","MuiToolbar","MuiCssBaseline","MuiDrawer","MuiFab","MuiButton","textTransform","containedPrimary","MuiIcon","MuiCheckbox","colorPrimary","colorSecondary","MuiAppBar","colorDefault","MuiTypography","MuiFormControl","MuiExpansionPanel","MuiExpanded","MuiInputBase","MuiInputLabel","MuiLinearProgress","MuiTab","MuiIconButton","MuiFormLabel","asterisk","MuiMenu","wrs_theme","_overrides","_overrides2","MuiRadio","store","createStore","reducers","applyMiddleware","thunk","moduleKey","MaterialTheme","App","GetApp","classList","createRoot","MuiThemeProvider","CssBaseline","Provider","request","routeValues","tempBody","customBody","tempUrl","createBody","createIds","createGridRequest","isNotQueryStr","removeSpace","customAlert","PostFormData","asyncgetData","isLoader","_args","getLoader","abrupt","t0","_callee2","_args2","_context2","_x2","_callee3","_args3","_context3","_x3","_x4","_callee5","noHeader","_args5","_context5","URLSearchParams","_x6","_x7","_callee6","_data","_args6","_context6","t1","_x8","_x9","_callee8","_args8","_context8","_x12","_callee9","_args9","_context9","_x13","_x14","_callee10","_args10","_context10","_x15","_x16","instructions","accordion","secondaryHeading","createLayout","stepper","setActiveStep","prevActiveStep","useTheme","SwipeableViews","axis","onChangeIndex","sectionKeysData","SectionDescription","SectionContextHelp","eachsec","addlayout","removelayout","changevalue","_objectSpread5","checkval","completedata","indexdata","nextitemindex","nextItem","_objectSpread6","previtemindex","prevItem","useContainer","handleScreenWidth","addRoute","_props$removelayout","layoutType","backtorecord","loc","backtoapplicationsteps","lastSlash","lastSlashVal","goBack","prevsharedValues","unEqualProps","addons","previtem","nextitem","passProps","setOpenSlide","customId","customAdd","addtype","addactions","addSubGrid","evname","Passer","passcomp","allpasses","foundval","del","requestparams","getDataFetch","postDataFetch","putDataFetch","passingProps","removeDataFetch","bodyrequest","formName","getrequestparams","gridProps","subquery","initvalues","hidestyles","cacheHiddenRowProps","hideMargin","customclassName","hidemarginRow","_each$customClassName","customClassName","dispClassName","compClassName","formControlsConfigs","storeFormControlInitValues","otherFieldProps","rowDisplayProps","propvalues","resultsdata","urldata","requesturl","reqdata","getfrom","notEquals","_otherProps$min","_otherProps$max","pvalue","numberType","evtVal","tar","onBlur","pink","getContrastText","teal","changeTypefieldto","datedisplay","displayonedit","hidelabel","checktype","labelval","finallabel","dateval","alternatevalue","CircularStatic","WorkflowUse","overflowWrap","handlecustommultiplelocation","gisdistrictid","configtypedropdown","isvalid","selectedconfigtypes","handlecustommultiplelocationreq","configtypedomains","validres","savedconfigitems","availabledistricts","handlePrimaryCheck","permittypeid","District","SetApplicationFieldsData","_x5","minGridWidth","handleGroupChange","expandChange","stopRowClick","custompropsvalue","rowselected","checkindexeddata","currentDataItem","presentItemIndex","intialLoadData","LoadGrid","noReportFilter","subgrid","childGrid","loadDefaultsGridData","handleResize","setMinWidth","gridCurrent","setWidth","titleLength","handleDataPageState","deepCopy","exportdata","handleDate","newDate","wTime","hour12","handleColor","ColorIcon","onClearColumnsSubmit","getOptions","parentIdValue","exportalldatastate","nonautoopen","dataItemObj","onNextClick","onPrevClick","HTMLCell","HTMLCellSize","downloadCell","downloadNoticeData","handleActionEvents","NoDataDisplay","deleteCell","customcell","dataitem","selecteddataItem","CreateIcon","inset","ArrowUpwardIcon","ArrowDownwardIcon","ClearIcon","setPercentage","newRequestApi","td","handleRefresh","passDataItem","DidMount","_DidMount","_this$props$options$c","recordinfo","transPropsurl","querySelector","isLSProfile","htmlconvert","FieldLabel","convertOldValue","OldValue","convertNewValue","NewValue","regex","NewValueDesc","OldValueDesc","selectdataitem","selectedDataItem","checkLocation","gridurl","columnsinfo","res1","hideEdit","hideEditCheckVal","_ref10$headerProps","gridstyle","formgrid","addcomponents","extragridinfo","extrainfo","customHeight","_this$state2$isExport","addrecord","handleFormGrid","refreshbutton","reportbutton","excelbutton","filterbutton","onPageChange","pageChange","disablerender","fieldtype","isHTMLcolumn","encoded","isdownload","isdelete","extrainfoobj","RefId","selectedrow","AUTHORIZE","LOGOUT","PROFILE","completed","diff","diff2","animate","LinearProgress","linearColorPrimary","barColorPrimary","linearBarColorPrimary","valueBuffer","envVariable","WRS9543InternalJSON","_props$allowedValues","noofdays","pastDate","currdate","fieldAllowedProps","someDate","numberOfDaysToAdd","currentVal","setCurrentVal","multiplelocationdata","UpdateMultipleLocations","objctids","SetLocationIsPrimary","rowdata","GetRecordValuesFromPrimaryLocation","GeomLatitude","GeomLongitude","appres","locdata","GetRouteIndexDefinition","rtq","rtqsplitter","StringTruncate","routeuniquenumberval","RouteUniqueNumber","Latitude","Longitude","GeomArea","FunctionalClassValue","MilePoint","CountyName","Routename","appresults","MapConstants","getSVGPointSymbolWrapper","linecolor","fillColor","outlineWidth","getSVGPointtSymbol","getSVGHighlighPointtSymbol","getHighlightsymbol","layerConfig","KEY","getsymbolsByLayerConfig","Permit_Color","StatusColor","getsymbol","isHighlight","getDefaultSymbols","lc_lineSymbolColor","lc_PointSymbol","lc_LineSymbol","lc_line_Size","lc_lineSelected_Size","lineSymbolColor","SRID","PointSymbol","PointSymbolHidden","ExistingPointSymbol","LineSymbol","line_Size","LineSelectedSymbol","lineSelected_Size","PolygonSymbol","PolygonFillSymbol","PolygonNoFillSymbol","PolygonFillSymbolSecondary","PolygonFillSymbolReset","labelClass","haloColor","family","weight","greenFlagsymbol","highlightPlugin","createHighlightPlugin","Draft","EditorState","RichUtils","getDefaultKeyBinding","convertToRaw","ContentState","convertFromRaw","convertFromHTML","Modifier","handleKeyCommand","command","mapKeyToEditorCommand","keyCode","newEditorState","onTab","toggleBlockType","blockType","toggleInlineStyle","inlineStyle","finalval","draftToHtml","getCurrentContent","unescape","checkvalidation","getPlainText","handleParseData","htmlEntities","printDiv","mywindow","write","print","displayhelpertextdata","helpertextdata","createEmpty","escape","htmlToDraft","decodeURIComponent","createFromBlockArray","contentBlocks","entityMap","createWithContent","moveFocusToEnd","contentState","firstBlock","getFirstBlock","lastBlock","getLastBlock","allSelected","SelectionState","anchorKey","getKey","anchorOffset","focusKey","focusOffset","getLength","hasFocus","removeRange","hasText","getBlockMap","first","arrow","BlockStyleControls","onToggle","InlineStyleControls","PrintIcon","blockStyleFn","getBlockStyle","customStyleMap","styleMap","keyBindingFn","spellCheck","plugins","CODE","block","StyleButton","BLOCK_TYPES","getSelection","getBlockForKey","getStartKey","INLINE_STYLES","currentStyle","getCurrentInlineStyle","has","_objectSpread41","clearList","nestedlistArray","nesteddropdownArray","appendextravalues","getLocalStorageData","disablekey","eachitem","_nestedlistArray$","_nestedlistArrayValue","_objectSpread34","_objectSpread35","fieldValidationsData","initialFieldValues","gridExport","isexport","convertList","_objectSpread4","convertListKeys","exportaction","_defaults$props","nosubgridrouting","setSetMinWidth","setGridCurrent","rowSelected","setRowSelected","setHasDefaultReport","useLocation","tempExtras","prevfieldValues","hascustomcondition","hascustomconditionLoad","initalReqDataState","reportinfo","filtereddatastate","hasreport","loadreportdata","columnsdata","navigateItems","newitem","gridItem","navigate","_objectSpread7","actiontype","kendoProps","backnavigation","datastateval","gridOptions","allcolumns","NotificationEditor","isNotificationSent","eventDetails","internalNotificationTemplate","externalNotificationTemplate","isSuccess","getLatestRecordDataDictionary","applicationdataurl","isFieldValueChange","getLastUpdatedFieldRecords","getPossibleNotifications","EventId","EventOnKey","eventonkey","EventDetails","DataDictionary","requrl","internal","external","returnid","triggerManualNotification","templateformat","NotificationTemplateModel","NotificationSubject","NotificationContentHTML","reqtriggerurl","templateEditorSave","AppDownloads","dataMerge","modulesData","sitePermitTypesData","entitydata","j","mergeData","loadData","sidebartables","sidebartablementionoptions","iframeoptions","msg","messageHandler","RequestNewApi","modulesdata","sitepermittypesdata","iframeProps","messagetype","ifrmaopt","formatsCallBack","ifrmaOpts","seldownloadmodule","filterSitePermitType","SubmoduleKey","sidebarlist","getSideBarItems","tablename","GetAppDownloadTableDetails","seltable","getSideBarTableMentionOptionsAsync","sidebarres","sidebars","SidebarTittle","callbackdata","templateCallBack","entrydata","downloadmodules","useraccesstoken","documentElement","scrollHeight","Cgridheader","resizeIframe","TemplateBusinessRuleScreen","_ref2$index","_ref2$fields","_ref2$notices","_ref2$templates","templates","showSave","setCurrent","handleMove","errorYN","setSave","calculated","setCalculated","UpIcon","DownIcon","ISQuery","showCombinatorsBetweenRules","Conditional","_ref3$each","WrongIcon","RightIcon","textfield","phoneformat","numberformat","datetimepicker","multiadd","popup","SidePopUp","handleCloseClick","handleSaveClick","Notify","kendoHeader","autocomplete","gridreport","GridReport","toggle","switchcomponent","checkauto","Checkautocomplete","isSave","setList","inputEl","appdownloads","appdownloadstab","customprovision","_ref$value","setType","IsCustomProvision","setIsCustomProvision","setCustom","Provision","ProvisionId","hold","setHold","setError","errorState","setErrorState","getItems","setHoldData","handleCustomProvision","holddata","prov","STD_PROV_REFNAME","ProvisionDescription","ProvisionShortText","ele","tempType","GetDisabledType","STD_PROV_SHORT_TXT","STD_PROV_TXT","_setCustom","errorobj","_itemval","_setCustom2","handleProvisionSave","SaveAltIcon","templatebusiness","setExpanded","setTemplates","setErrorList","mid","SectionOrder","tempLists","JsonQuery","jsonQuery","handleCurrent","_ref$ismultiple","setMultipleFiles","fname","UploadType","AttachFileIcon","tempfiles","RemoveIcon","tranferlist","isCheckBox","switchProps","tname","tvalue","setLeft","setRight","not","handleCheckOnRight","tempValue","customList","isRight","labelId","domainCalVal","_props$items","subheader","removereduxValues","nestedValues","dispatchhandleSave","currentField","keyval","errorfieldlabel","_e$target2","SitePermitTypesStatus","closeTour","setSectionsReload","PaperComponent","urlparams","_ref$isButton","recResult","handleValidateRules","hideBackdrop","RefreshOutlined","RequiredFieldName","ValueEditor","handleOnChange","inputType","fieldData","mutliple","handleChangeMultiple","ValueSelector","ActionElement","handleOnClick","NotToggle","translations","_ref$schema","controls","getInputType","getLevel","getOperators","getValueEditorType","getValues","onPropChange","onRuleRemove","onElementChanged","property","level","fieldSelector","operatorSelector","valueEditor","removeRuleAction","removeRule","onValueChanged","RuleGroup","combinator","combinators","createRule","createRuleGroup","createCalculated","isRuleGroup","isCalculated","onGroupAdd","onGroupRemove","onRuleAdd","onCalculateAdd","onCombinatorChange","ruleGroup","combinatorSelector","notToggle","addRuleAction","addRule","newRule","addGroupAction","addGroup","newGroup","addCalcualtedAction","addCalculated","removeGroupAction","removeGroup","Calculated","findRule","subRule","generateValidQuery","nanoid","foundAtIndex","indexForRule","ruleOrGroup","calculate","defaultTranslations","removeCalculated","defaultControlClassnames","queryBuilder","defaultControlElements","removeCalcualtedAction","getInitialQuery","vet","ops","getRuleDefaultValue","_notifyQueryChange","newRoot","setRoot","controlClassnames","rootCopy","onCalculatedRemove","resetOnFieldChange","controlElements","MainBuilder","Download","getIdUrl","downloadObject","Group","DownloadWithSideBarData","worknotifId","Buttons","clickval","buttonfunction","stylecolor","disabledvalue","setDisabledvalue","routepath","newpath","routing","regExp","RegExpression","M","phone","FileCopyIcon","RefreshIcon","SaveReportIcon","ExportExcel","FilterListIcon","markread","DraftsIcon","markunread","MarkunreadIcon","CancelIcon","HistoryIcon","check_box","doneall","DoneAll","Filter","FilterList","quickview","QuickView","DeleteForeverIcon","Icons","IsBuildMGR","AlertDialog","navigatingnext","navigatingprev","ApplyEditsFeatures","mapConstants","graphicsLayer","lookupdata","graphics","g","pointgraphics","linegraphics","polygongraphics","graphicTo","ApplyEditsTaskExecuteByType","applyEditResponses","pointgeomres","POINT_GEOM_OBJECT_ID","linegeomres","LINE_GEOM_OBJECT_ID","polygeomres","POLYGON_GEOM_OBJECT_ID","multipointgeomres","MULTIPOINT_GEOM_OBJECT_ID","poinggeomid","polygongeomid","linegeomid","multipointgeomid","MultipleLocations","delpoints","GetDeletedObjects","delline","delpolygon","POINT_IDS","applyObjectids","ApplyEditsTaskExecute","objecttype","latestids","objectfeildvalue","latestobjectarr","applyeditsgeomtype","FeatureLayers","proposedgeometries","existinggeometries","pointTypes","svgPointtSymbol","itemobjectid","OBJECTID","getTime","HASHKEY","allPromise","geompointtype","editgeometries","lookupdatabytype","applyEditsTaskExecuteWrapper","applyResponses","objresultid","ObjectId","returnObj","fetchGeomPointType","applyFeatures","geomapplyFeatures","centerapplyFeatures","geomFeatures","multigeoms","pointgeoms","ismultigeom","Graphic","Polyline","Polygon","SpatialReference","parseApplyEditsGeometriesWrapper","applyFeaturesResponse","applyFeaturesineerror","Multipoint","parseApplyEditsGeometries","applyGeoms","lookupgeoms","geomlist","ApplyEdits","isMultiGeom","centerGeom","geomApplyEditResponse","centerApplyEditResponse","lookupApplyEditResponse","applyGeomsError","addFeatures","updateFeatures","FeatureLayer","layerType","featureUrl","outFields","applyEdits","objectIdResponse","addFeatureResults","updateFeatureResults","ref_centerLongitude","ref_geomObjectID","objectId","ref_layerGeomObjectID","uniongeomEngineResponse","geomSymbol","FDCenterObjectid","centerattributes","center","projGeom","projcenterGeom","graphic","centerGeomGraphic","GetQueryValue","stringval","FeaturesLayerGraphicsTaskByType","zoom","isAllowMultiple","graphicsLayerIndex","FDObjectid","proposed_objectid","proposed_objectid_point","proposed_objectid_multipoint","allGeomObjectIds","layerDef","searchEqu","GraphicsLayer","listMode","points","currgeomobjectid","primaryobjectidRes","IsPrimary","GeomEngineresponse","CenterAndZoom","GeomEngineerror","FeaturesLayerGraphicsTaskAddLookupByType","drawOptions","Tools","lookupDataresult","layervalues","settingvalues","sectionmapsettings","mapbussinesRules","getSettingValue","collection","centergeomser","statemaintroads","taxparcelserDB","taxparcelser","mapBussinessRules","_i2","_Object$entries2","_Object$entries2$_i","flatMapBussinessRules","LayerOptionsConfig","Category","mapType","MapType","featurelayersConfig","SubModuleKeys","landingFeaturelayersConfig","allFeatureLayers","eachLayer","defaultExpression","CanFilterAsof","HasCenterGeomServiceArchive","archivedate","now","HasValidation","SelectTools","SubscribedMasterFieldsKey","CanLabel","labelExpression","josnStr","JSONParser","rtnstr","GetStringFromJsonText","showLabels","labelColor","LabelColor","GetJsonFromText","sortBy","AllFeatureLayerListOptions","FeatureLayerListOptions","ShowOnMap","SketchValidationLayers","HasSketchValidation","ValidationDistance","jsonstr","Validation","SearchLayerListOptions","CanSearch","SelectLayerListOptions","CanSelect","CountyLayerOptions","X_Center","Y_Center","featurelayerPoint","featurelayermultiPoint","featurelayerLine","featurelayerPolygon","POINT","MULTIPOINT","LINE","POLYGON","masterlookups","MasterLookupFields","lookupjson","masterlayerauth","LayerAuthenticationId","hastaxlotlayer","searchOptions","initialzoom","printOptions","serviceURL","widgets","AllowMultiple","gisbuffer","AddLayers","mapkey","layersList","statusres","PopupTemplate","MapImageLayer","esriConfig","toremlayers","removeMany","lyrinfo","HasAuthentication","interceptors","before","requestOptions","expiration","labelExpressionInfo","highlightOptions","fillOpacity","popupTemplateContent","IsRecord","popupTemplate","rendereruniqueValueInfos","permittype","statustype","uniqvalObj","getpermittypeSymbol","Color","permittypeRenderer","defaultSymbol","defaultLabel","uniqueValueInfos","when","ExtentZoom","LayerScaleType","minScale","ScaleInBeyond","maxScale","ScaleOutBeyond","definitionExpression","labelingInfo","labelsVisible","removeAll","existinglayer","elayer","userdefinitions","GetRecordQueryExpressions","AddingLayers","permitTypecolor","statusColor","layerinfo","layerDefinitionExpressionFilter","defaultLayerExpression","editFeature","queryResponse","CActionsLayerList","listItemCreated","watchUtils","Expand","LayerList","layerList","listItemCreatedFunction","getLayerPanelActions","layerListcontainer","findDOMNode","layerListExpand","collapseTooltip","expandTooltip","ui","inThis","pausable","oldValue","onexpanded","loadEditFeatures","applyLayerFilter","layerfilter","Asofdate","_layer$LayerOptions","asofqueryExpression","Distance","Units","geometrySearch","activeLayer","QueryTaskBufferWithGeom","whenLayerView","layerView","objidkey","geomSearchHighlight","bufferSearch","domElem","callayer","getElementsByClassName","innerHTML","searchTaskURL","pretaxlotdata","parcelIdarra","queryTaxlotsString","querycondition","queryTaskConfigTaxLot","queryTaskConfigRef","processResponse","panelHandleChange","domelem","selectedLayer","setuplayer","selectedLayerKey","layerFilterQuery","ActiveLayer","visibleLayerid","visibleLayer","getLayerFullExtent","queryExtentRes","goTo","layerFilter","Query","where","outSpatialReference","queryExtent","hasBuffer","hasFilter","CanFilter","panelAction","divElement","allelem","labelsele","arealabeled","getAttribute","onclick","triggerAction","tabchangerdom","_loop2","openTab","gridDiv","gridId","addBufferEvents","bufferdoms","selecttaxlotsdoms","selectTaxlotWithinBuffer","OnDemandGrid","ColumnHider","Selection","gridid","createSubclass","on","selectFeatureFromGrid","firstRecord","allAttributes","projectGridData","Memory","StoreAdapter","dataStore","objectStore","idProperty","dom","tabcontent","tablinks","bufferSearchStartup","onchange","updateState","FeatureForm","msgDOM","featureLayersIds","layersWithEditorConfig","featureLayer","fieldConfig","EPSfeatureLayerFieldConfig","groupDisplay","unselectFeature","hitTest","selectedFeatureLayer","selectedFeatureLayerFieldConfig","refobjectid","objectIdField","selectFeature","featureFormSubmit","queryFeatures","objectIds","returnGeometry","feature","contains","updated","edits","applyAttributeUpdates","editsResult","code","clearTaxLots","loadingimg","closeEditPanel","CBasemapGallery","BasemapGallery","basemapGallery","basemapcontainer","basemapExpand","widgetRenderCallBack","tileFunction","urlTemplate","tileUrl","transformedTileCoords","transformedCol","transformedRow","startup_custom_1","Basemap","TileLayer","customSpatialReference","wkid","baseLayers","basemapsSource","fromId","startup_custom","WebTileLayer","Extent","portalItem","xmin","ymin","xmax","ymax","thumbnailUrl","getTileUrl","CDatTable","domEle","DataTableExpand","expandIconClass","selectedLayerId","loadDataBySelectedArea","processForTaxlots","selectedLayerOptions","featurelist","PrimaryChangeContent","chk","evt1","onPrimaryChage","brek","bold","lable","for","isSelectionValid","selectrecord","validatRule","fildVal","getselectedRecordId","selectedrecord","gridData","currentdataitem","dataItems","searchfieldkey","showGrid","clearGridData","gridresponse","griddata","selectedArea","selectedState","isDataTableExpand","primarySelectedRecord","cleargraphic","clearAreaSelection","recordsReponse","isselected","selectrecordGeom","newGeoms","isTaxlot","IsTaxlot","layerfield","getPrimarySelectedRecord","isNew","allrecords","gd","primFieldValue","primarySelectedRecord_ref","isprimarytaxlot","grpahicsymbol","selectgraphic","validateBussinessRulesResponse","vbr","ng","stateselectedRecords","preselectedrecords","Site_Permit_Type_Id","SelectGeomInsteadOfDraw","gisres","validateBussinessRuleseerror","AutoSelect","buildColumns","uniquetaxlots","updatePrimaryGeomSymbols","queryParams","grph","isprimary","alias","layerkey","enabled","drag","CHome","Home","homecontainer","home","alignSelf","FormDialog","unitsdomain","setDomains","isArchive","setIsArchive","layerId","fieldsdata","rulesBuilder","tempQuery","showLayerFilter","tempquery","tquery","CLocate","Locate","locatecontainer","locate","CLocationCompare","compareGISData","GetCurrentGISInformation","primaryloc","y","queryTaskConfigMultiLocation","EsriRequest","RouteInfos","routeUNQ","GovLevelCode","propsDiffer","compareObjects","updateLocationInformaiton","onConfirmation","gisrow","o1","o2","CLocationZoom","zoomTo","CMeasurement","DistanceMeasurement","AreaMeasurement","measurement","_readOnlyError","measurementcontainer","measurementExpand","addClearTool","isElementExist","parentdiv","clearMeasurement","viewModel","CCompMultiLocationBufferCalc","defaultGridColumns","parentcal","showLoading","coordinates","GeometryService","ProjectParameters","outSR","gsvc","prjParams","lat","long","object","RTUnique","registry","byId","rec","requestConfig","XYResults","firstres","selecteddetail","XCoord","YCoord","inSR","inputpoint","latlong","area","geodesicArea","areares","GeomType","canShow","currentResult","CMultiLocationSelector","multilocationcalccontainer","locationcalcExpand","bufferCalcLayer","CPrint","Print","prntServiceURL","printServiceUrl","printcontainer","printExpand","CSearch","Locator","modulekey","searchSources","searchSuffix","locator","suffix","countryCode","singleLineFieldName","withinViewEnabled","searchLayer","searchfeatureLayer","overwriteActions","searchFields","displayField","exactMatch","suggestionsEnabled","minSuggestCharacters","resultGraphicEnabled","searchcontainer","includeDefaultSources","sources","searchAllEnabled","xoffset","yoffset","setInfoMessage","setLoadingMessage","activeSourceIndex","AddressSearchForLayers","presentTaxLotLayerWithRenderer","allSources","searchExpand","watch","onZoomLevelChange","activeSource","parentNodes","childlable","search_info","prepend","isSet","lblInnerHTML","queryEXp","MapTaxlot","AddressSearchForZoom","taxlayersinformation","QueryTaskPromise","layermatch","sourcetaxloturl","allCountyTaxlotLayers","layeraddressed","customfeature","zoomonly","QueryTaskExecuteZoomAddLayerToResponse","setSearchLayerConfigData","Layeroptions","searchterm","afterSearch","layerOptions","searchQueries","_this7","allProm","ShowMapLayers","GetMasterGISFieldsData","spatialRelationship","executeForCount","taxlotnumber","_this8","masterdataresponse","mapinformation","QueryTaskExecuteWithrelation","DndList","handleReorder","provided","RootRef","rootRef","ContainerComponent","ContainerProps","BookmarkBorderIcon","NAME","USERNAME","handleTrash","BookmarkControl","Draw","webMercatorUtils","searchbookmarks","sbcontainer","defi","appname","bookmarkLayer","glayer","draw","onSearchStart","newgraphic","newbookmarkname","saved","updateVertices","drawComplete","createGraphic","addtoDrawLayer","towebmarker","docenter","vertices","geographicToWebMercator","symbl","drawcounter","nme","defaultName","handleChoices","defaultMessage","choice","choisemssage","handleSaveBookmark","mgeom","webMercatorToGeographic","paths","hasZ","hasM","APPNAME","SHARE","addToLayer","deleteFromLayer","allbookmarks","handleShare","toupdate","bookmarks","listupdated","bcrdom","nextState","todelete","deleteFeatures","added","addedfinal","createQuery","q","_jsx3","_jsx2","containerbg","centeralign","noValidate","autoComplete","hintText","floatingLabelText","txtf","noName","listing","highlightClass","scrollList","SearchBookmark","CSelect","RemoveNode","selectcontainer","HideNode","ShowNode","OnToolLoad","select_ToolBox_Widget_options","toolboxdom","pointbuffer_Widget_options","singleselection_Widget_options","clearselection_Widget_options","onSingleSelect","SelectTool","selectViewModel","selectVM","pointSymbol","polylineSymbol","polygonSymbol","selectTool","availableCreateTools","tools","selectExpand","onGraphicCreate","onGraphicUpdate","onGraphicdelete","onActiveTool","tooltype","flag","tool","SingleSelect","bufferGraphic","bufferunits","bufferdistance","onGraphicCreateComplete","onSaveorUpdate","enableSave","onAreaSelection","onBufferPoint","onClear","onAreaClear","setDefaultSelectLayerByModule","defaultSelectLayer","setDefaultSelectLayerByUrl","defaulturl","selectlayer","customfilter","SelectionSubModules","pointgraphic","graphicJson","removeGraphic","setGISLookUpFieldsData","onSelectSaveorUpdate","CSketch","sketchcontainer","RemoveTools","Sketch","SketchViewModel","sketchVM","sketch","creationMode","defaultUpdateOptions","onGraphicDelete","sketchExpand","LayerIndex","isTwoWayPoint","Points","Lines","Polygons","pointType","anchorEl1","setPointTypeChange","validateSketchDistance","checkForSaveorUpdate","currgraphic","onGraphicSelection","hasMultiLocationSelector","hasgraphic","onCancelConfirmation","eventflag","hideflag","hasProposedGeom","hasExistsGeom","onTaxlotSelect","pointTypeChange","clearGraphicsTwoWay","onRequestClose","showPointType","ProposedPointGeom","ExistingPointGeom","enableTaxlot","showGraphicFieldEdit","graphicFieldEditName","graphicFieldEditDesc","selectedGraphicType","validationlayers","SketchDistanceValidatorTask","errLayers","errText","lres","ResponseCount","getSelectionData","graphicitems","nolocationgraphics","MasterTable_Id","desc","showEditTemplate","slot","saveGraphicFieldEdit","CSelector","predata","selectedTaxLots","GeomObjIndex","pretaxlotdatageom","highlighttaxlotdata","isSelected","hightlightlayer","Taxlot","primaryTaxLot","existingtaxlotsgeom","getTaxlotsGeom","preselection","secondarysymbol","defaultsymbol","eachgraphic","eachTaxlot","preValue","highlightdata","selIcon","CZoom","ZoomViewModel","vm","onZoomChange","maxZoomed","constraints","maxZoom","minZoomed","minZoom","zoomIn","zoomOut","maxstate","minstate","CConfig","filterRecordLayers","mappedSubModuleKey","GetUserLayerExpression","selectRecordDefinitionExpression","lyr","layerDefinitionExpression","hideLayersFromList","highlightedGraphics","addComponent","AddMapLayers","highlightSelectedData","highlightSelectedDataWrapper","lyrView","CenterAndZoomWithUnionPointZoom","QuerySelectedData","promise","QuerySelectedTask","OnExpanded","widget","ExpandedWidget","collapse","graphiccoordinates","coordinatesfilter","onClearSelection","featureTable","clearSelection","onDataTableLoad","setWidgetOptions","widgetrenderer","widgetrender","searchdomainlookup","_componentDidUpdate","arraysEqualCheck","isRecordLayerAdded","recordlayers","recordFeatureLayerListOptions","hidelayers","showlayers","definition","userExpression","GetUserAccessQueryExpressions","isInternal","regions","customTaxLot","hasrecordlayers","featureLayerListOptions","highlightrenderer","reqLayer","ly","_items","ishighlight","mapcenterlatlong","getMapCenterData","Zoom","zoomOptions","setDefaultSelectWidgetLayer","basemap","ActionsLayerList","Measurement","Selector","HasMultiLocationSelector","MultiLocationSelector","LayerFilter","csselect","LocationZoom","LocationCompare","CMap","handleMapSettings","allmapsettings","tempLayers","tempallmalsettings","tempmapbussinesRules","tempsectionmapsettings","showTaxParcelLayer","selectedlayer","queryField","TaxParcelLayerTask","taxpres","centerAndZoom","taxParcelCenterAndZoom","TaxParcelzoom","QueryTaxParcel","seltaxlotnumber","taxparcelcenter","setCenterforMapviewNoFlag","taxparcelgraphics","TaxParcelTaskFeatureLayer","grapohics","ApplyEditsGeometry","prevSITE_PERMIT_TYPE_ID","OnMapLoad","allmapsettingsReq","layersReq","sectionmapsettingsReq","mapbussinesRulesReq","layes","clearGraphics","isPointAllowMultiple","isLinesAllowMultiple","isPolygonssAllowMultiple","applyViewResponses","pointgeomApplyViewResponse","linegeomApplyViewResponse","polygongeomApplyViewResponse","FeaturesLayerGraphicsTaskAddLookup","applyViewGraphics","FeaturesLayerGraphicsTask","parentNode","getLoaderHTML","mmap","currentoptions","basemapviewprops","_this$props$customMap","mapProperties","getViewProperties","WidgetsConfig","dataval","getDropdown","Table","_props$hideEditIcon","hideEditIcon","Urls","isDelete","_otherProps$isUpdate","tableName","requiredfield","setRequired","editicon","updatedAt","setGridData","setGrid","getDomainApi","maxBodyHeight","headerStyle","isEditable","currentObj","setCurrentUser","setCurrentDate","fieldKeys","tempsendActualVal","refIds","finalvalue","evaluate","DynamicEvaluate","dyn","NewApplicationWorkflow","handleSidebar","sidebarList","pathcontains","displayOrientation","handleRules","linkParams","CFormContainer","getlatestFormData","onLoadValidate","Validate","onLoadLayerURLRequest","innerText","handleDisplay","setnewResults","viewroutesId","handleOnResultEdit","displayCondition","otherval","out","ModuleKey","showOnModuleKey","hideonconfigType","secval","hidecontains","nestedhidedataItem","hideanotherval","enableConditions","requiredConditions","isrequired","intialvaluedata","firstinitialvalue","isObject","loadurl","anotherProps","subcomp","compreadresult","tempFieldFormControls","hideOnNoResult","avoidread","compget","urllist","_changedFieldName","handleDataLoad","initialresults","handleResultValues","handleFieldChangeData","otherchangedFieldNames","setotherfield","removefields","removefielddependency","removeotherfielddependency","fielddependencyname","hasconditionaldropdownfield","hasconditionaldropdownvalues","valuesdata","conditionaldropdownvalues","changedFieldNames","isfieldchanged","filled","handleSetValue","_objectSpread15","_objectSpread16","_objectSpread17","_objectSpread18","_objectSpread19","_objectSpread20","_objectSpread21","_removefields$count","slide","isEdit","_event$target3","viewresults","_actions$label","getread","getvalue","setvalue","_actions$label2","_actions$label3","gisdata","GisDropdown","gisdd","gissurl","tempChangedField","subkey","_actions$label4","_actions$label5","_this$state6","newchanged","tempchange","_this$formControlsCon","newDisplay","newdisabled","newdependency","dependencyFields","finalformControls","multiply","finaldropval","finalfieldval","_this$state7","requireddropdownval","dropdowns","dropdownfields","assignval","isAdminAlert","isStatus","statusValue","statusField","statusCheck","readURL","statusURL","statusID","statusTarget","_this$state8","_this$state9","callbacksaveval","resultitems","customsavenames","hidepathval","_this$state10","tabadd","loopobj","allowDataItem","assignValue","navigateclose","clearResults","formsave","closeviewconfirmation","handleNotificationEdit","_options2$afterSavero","_afterSaveroutes$conn","_afterSaveroutes$conn2","_afterSaveroutes$rout","_afterSaveroutes$rout2","_afterSaveroutes$rout3","_afterSaveroutes$exis","nocondition","issubgrid","nocond","checkcond","insamepage","chooseEditAlert","notificationkey","openNotificationEditor","isSent","customedit","tempinitalResults","hideediticon","hideduplicateicon","showcustomvalidations","hascustomvalidations","errordata","excludegetstate","adminuser","hideDuplicateIcon","isexternal","resultdataval","propertyval","checkresultval","replaceTable","_ref18","_ref20","_ref21","hideheaderprops","saveappbtn","historyalign","alignresend","alignprofile","hideEditCheckValue","hideEditButton","hideEditCheckName","_ref22","savetemplatebutton","_this$state11","onNextItem","onPrevItem","NotificatinoEditor","CWorkflow","handleStatusClose","statusOpen","currentStatus","prevStatusVal","handleDropdownChange","workflowStatus","mgs","workflowStage","handleSelectChange","isForceInspection","hasInspection","changeWorkflowStatus","handleStatusSubmit","WorkflowId","ApplicationID","workflowOptions","isApprover","isAssigned","currentTaskAssigned","workflowTask","loadWorkflowObject","tworkflowId","tempWorkflowId","workflowObj","getTasks","getFlow","retFlow","currFlow","currflow","currTask","task","flowid","approver","investigator","assignee","xml","exec","workflowChangeObj","comment","workflowStatusUpdateUrl","ApplicationStatusUpdateUrl","issuer","rappes","valueindex","newworkflowoptions","removedworkflowoptions","applicationStatus","RulesSnapShot","applicationstate","setApplicationState","datakeysurl","_datacustomkeys$","SnapshotIcon","RecordCurrentState","TableContainer","stickyHeader","TableBody","eachBus","EventField","Required","IsDisabled","EventAt","lock","LockIcon","unlock","UnlockIcon","ForwardIcon","FullscreenIcon","FullscreenExitIcon","tour","TourIcon","downloadpermit","SystemUpdateAltIcon","withdraw","AssignmentReturnIcon","moreitems","MenuIconOpen","call_split","CallSplit","pause","PauseCircleFilledIcon","preview","Preview","showon","hideByValues","hideResult","roleTypeName","Conditions","History","removesubfieldnamelength","sectionToolTips","ActionAlerts","buttonLabels","setMessage","showalertcond","setShowAlertCond","handleAlerts","returndata","formattedData","GetMailMergeFormatFromObj","ProjectDownloadMailMerge","ProjectDownload","datatiems","dataobj","parentObj","parentfields","parentvalues","relationtableobjs","Entity","relationtables","GetMailMergeFormatFromArray","GetMailMergeFormatFromObj_Defined","eachrelationtable","eachrelatiochildobj","parenttablename","groupName","firstLetterCaps","valuesarr","relationtablename","firstLetterSmall","string","appdetails","downloadid","tabledata","IsTemplate","Section","_i3","_Object$entries3","_Object$entries3$_i","GetTableDataToCustomFormat","ProjectDownloadMailMergeGetContent","downloadres","defaultdataset","namevalue","passtabinfo","passtabinfoval","setDefaultitems","n2","key2","useStyleLink","classes2","ishide","WRSDatePicker","DaysTimer","isAvoid","handleEffect","otherconfigs","selecturl","setOptions","originalOptions","setOriginalOptions","curVal","selectedItems","assignoptions","fargmentval","getOptionSelected","onInputChange","autoResults","handleChangeAuto","paperWidth","fullscreens","CSlidingPage","side","handleMousedown","isResizing","lastDownX","handleMousemove","offsetRight","handleMouseup","changedresp","fulldata","ItemIndex","resultantdata","initialresp","resizewidth","resizedwidthnum","customstyling","BackIcon","withTheme","CircularProgressWithLabel","dailog","setDialog","currentDay","changeDate","setText","seterror","colorClass","eventState","extraFields","setProgress","_React$useState13","_React$useState14","setEvent","totalDays","timerDate","CFormHeader","displayicon","handleExport","CreateNewRecord","resetbutton","addaccessPermissions","CachedIcon","ContactMailIcon","NotesIcon","DoneOutlineIcon","sidepopup","handleReset","abc","userprofile","isadmintabkey","agencyuserloginhistory","loadreportinfo","iconMapper","allinbox","AllInboxIcon","dismissed","BackspaceIcon","undismissed","CallToActionIcon","menuItems","setMenuItems","loadonclick","loadQuickViewMenu","setDefaultMenuItems","IconComp","Itemicon","historyJson","_ref$url","_ref$fieldValues","_ref$sharedProps","setExport","historyOpen","setHistoryOpen","GridResults","req","querystractiontype","table","SwipeableDrawer","execute","customerrormessage","QueryTaskExecute","defaultZoom","CenterAndZoomWithUnion","QuerySelectedTaskExecute","setCenterforMapviewwithFlag","xCenter","yCenter","spid","responseType","EsriRequestExecute","queryParamsStr","_ref25","_ref26","premaplayer","maplayer","taxlotval","indx","primaryObjIndex","primaryrecordsel","confirmSave","confirmClose","GetHeaders","urlencoded","IWAAUTH","fetchProps","getBasePath","basePath","accesskeys","getAccess","getAccessKeys","ModuleDistrictAccess","ModuleSiteAccess","GetLookUpValues","lookupFieldsData","geomPt","CustomizedDialogDemo","new","dialogOpen","requestMaster","masterreports","DrawerContent","TemplateView","paramvalue","getvaluefromtype","handleInitialState","inforeadurl","RoleRegionsurl","sitepermittypeId","tempparams","_params$each","SitePermitTypeAppSettingsId","setPageState","workflowprocessAdmin","_inthis$state","reloadWorkflowId","userdata","isDefault","workflowprocessMain","_inthis$state2","ParentWorkflowId","parentworkflowidval","workflowid","applicationUpdateUrl","workflowAppealprocessMain","_inthis$state3","appealWorkflowId","ParentWorkflowappealId","confirmationopen","disableddropdown","workflowval","defaultworkflow","disabledappealdropdown","workflowappealval","handleAppealsDropdownChange","displayworkflow","siteID","workflowitems","displayEmpty","WorkflowName","appealresetbutton","ParentAppealWorkflowId","AppealWorkflowId","loadAdminflow","loadMasterflow","firstResult","_this4$setState","defaultworkflowval","defaultworkflowitem","loadworkflow","loadappealworkflow","firstappealResult","_this$props$options2","ApprovedFlag","FileAppeal","ParentWorkflowIdValue","addworkflowid","workflowName","workflowDescription","workflowId","ConfigIds","finalurl","workflownameerror","workflownamehelpertext","handlechange","handleToggleChange","handleConfigChange","currentconfigId","workflowinfo","WorkflowDescription","filteredconfigItems","configtypeidval","configtypename","configItems","filtered","addnewworkflow","maxRows","spellcheck","linkurl","BasicButtonGroup","_ref$items","_ref$rows","_ref$options","insert","setInsertValue","pos","setPos","showCaretPos","setSelectionRange","handleDel","output","selectionStart","_chunk","otherContainerProps","setFullScreen","openDrawer","setOpenDrawer","_useContainer","screen","noticehistorygrid","CreateReport","report","savedreportsjson","optionprops","finalprops","savePermit","ShowOnUi","PageOreientation","IsDynamicQuery","handleSelectedColumns","customValidation","errorsdata","strlengthreport","strlengthreportdesc","callbackfunc","compmapdata","sharedtooptions","ShareOptions","SharedTo","SharedToRoles","rolesoptions","rolesoptionsselected","reportDetails","tagsChange","getRoles","getReportDetails","FormDropdown","updateurl","CustomizedDialogDemoContent","savedfilters","openShareOptions","selectedReportId","optionsOpen","handleSimpleClose","api","MasterId","GroupKey","getSavedFilters","setNew","shareReport","shareDialogClose","ShareOptionsForm","getShareOptions","handleDefaultReport","def","updatedefaultvalurl","foundIndex","setQuickView","IsQuickView","PostAdd","SaveReport","ViewCarouselIcon","ShareIcon","hidedefault","_unshift","defval","searchText","setSearchText","isUndefined","defObj","displayedOptions","useMemo","containsText","MenuProps","ListSubheader","onKeyDown","_transformProps","nestedSelected","isSelectable","handleEvents","notificationId","noticesId","isAutoNotice","isAutoNotification","_events$sideBarItems","decodeType","displayConfirmation","handleConfirmation","handleMessage","showNotice","handleNotices","showNotify","handleNotifications","validityStatus","prevalidityStatus","_ref$onEvent","_ref$info","_ref$name","_ref$EventType","handleGlobalRules","triggerRules","handleConditon","globalEffects","globalFieldChanges","removeDuplicateEffects","individualEffects","_handleConditon2","_handleConditon2$effe","namehandle","onEventEffects","alleffects","globaleffect","_each$effects","_eachCondition$unchec","isDynamicRule","hasTriggerRule","triggerRuleId","_eachCondition$dynami","evts","hasRaiseNotification","validityRun","tempValidityRun","filterRules","preConditionRuleId","preConditionCheck","handleOnEvent","randomnumber","storageBusiness","storageValues","handleEffects","onEvtconditions","pre","preResult","stateeffects","fieldEffects","setLocalStorage","handleLoad","returnvalue","handleBRActivity","handleLoadBody","handleValidations","validationConverter","handleGrid","handleCalculations","fieldRules","_fieldRules$hideLocal","hideLocalStorage","tempAndBoolean","handleOperators","tempBoolean","RecordHiddenState","IsDisabledObj","rename","operands","attr","quotient","CFormDropdown","AttachmentsS3Form","selectedFile","fileProgress","_ref$required","_ref$errorObj","_ref$NoteView","NoteView","FormhandleFieldValue","referencekey","error_Obj","newtemp","FolderIcon","ImagesS3Form","_ref$currentUser","currentUser","handleHideSave","notInitalLoad","setNotInitalLoad","setCurrentUsername","IsViewable","TakenBy","UploadDate","Datepicker","setSelectedFile","setAttachmentDetails","setUploadedFiles","setNoteView","setErrorObj","hideSave","setHideSave","uploadFileWrapper","selectedAttachName","predetails","pop","fileReference","fileType","ParentCallBack","customclose","getFileTypes","dividers","uploadFile","standarddescriptionofconstruction","StandardDescConsgrid","getbyModuleKey","showGridToolBar","showCanEdit","boolItem","checkReferenceKey","refercekey","showEdit","isview","canedit","StandardDescOfConstruction","ConstructionTypeId","TypeId","constructionTypeError","dropdownread","ConstructionTypeJson"],"mappings":"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","file":"static/js/main.5a2086f2.chunk.js","sourcesContent":["import * as Actions from './actions';\r\n\r\nconst initialState = {\r\n user: null,\r\n\r\n}\r\n\r\nexport default (state = initialState, action) => {\r\n switch (action.type) {\r\n case Actions.AUTHORIZE:\r\n let user = setUserAccess(action.user);\r\n return { ...state, user: user }\r\n case Actions.PROFILE:\r\n let profile = action.profile;\r\n return { ...state, profile: profile }\r\n case Actions.LOGOUT:\r\n action.user = null;\r\n return { ...state, user: action.user }\r\n default:\r\n return state\r\n }\r\n return state;\r\n}\r\n\r\n\r\nexport const getConfigType = (data) => {\r\n let profile = localStorage.getItem('profile') && JSON.parse(localStorage.getItem('profile'))\r\n switch (profile.configType) {\r\n case 'S':\r\n return data['SiteId']\r\n case 'R':\r\n return data['RegionId']\r\n case 'D':\r\n return data['DistrictId']\r\n default: return ''\r\n }\r\n}\r\n\r\nconst setUserAccess = (user) => {\r\n if (user) {\r\n if (user.isAdmin === 'Y')\r\n user = true\r\n }\r\n /*\r\n if (user.isInternal) {\r\n if (user.isAdmin) {\r\n user.super = true;\r\n user.admin = true;\r\n user.editor = true;\r\n user.access = true;\r\n }\r\n if (user.isEditor && user.canAdd) {\r\n user.admin = true;\r\n user.editor = true;\r\n user.access = true;\r\n }\r\n if (user.isEditor) {\r\n user.editor = true;\r\n }\r\n user.moderator = true;\r\n }\r\n else {\r\n if (user.isAdmin)\r\n user.access = true;\r\n else\r\n user.access = false\r\n }\r\n\r\n user.trusted = false;\r\n\r\n if (user.isInternal) {\r\n if (user.isAdmin) {\r\n user.trusted = true;\r\n }\r\n if (user.isEditor && user.canAdd)\r\n user.trusted = true;\r\n }\r\n else {\r\n if (user.isAdmin)\r\n user.trusted = true;\r\n }*/\r\n return user;\r\n\r\n}","/* eslint-disable no-use-before-define */\r\n\r\nimport { Chip } from '@material-ui/core';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport CheckBoxIcon from '@material-ui/icons/CheckBox';\r\nimport CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport React, { Fragment } from 'react';\r\nimport DefaultSettings from './settings';\r\nimport { getColor } from '../../controls/components/custom/customcolor';\r\nconst _ = require('lodash');\r\nconst icon = <CheckBoxOutlineBlankIcon fontSize=\"small\" />;\r\nconst checkedIcon = <CheckBoxIcon fontSize=\"small\" />;\r\n\r\nconst defaults = {\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Id'\r\n }\r\n}\r\n\r\nexport default function CheckboxesTags(props) {\r\n const { value, handleFieldValue, extraProps, shareProps, error, required, tooltip, ismulti, contexthelp, changefieldto, limitTags, ...otherProps } = props\r\n const { label, helperText, items, name, fullWidth, disabled } = otherProps\r\n let { transformProps } = extraProps || {}\r\n transformProps = transformProps || defaults.transformProps\r\n let val = (value === undefined || value === null) ? '' : value;\r\n let valarray = []\r\n if (val !== '' && items && items.length > 0) {\r\n if (ismulti || changefieldto === 'DM') {\r\n val = val && val.split(',')\r\n items.sort((a, b) => val.indexOf(a) - val.indexOf(b));\r\n valarray = items.filter(function (item) {\r\n if (item[transformProps.value])\r\n return val.indexOf((item[transformProps.value]).toString()) > -1\r\n else return false\r\n });\r\n valarray.sort(function (a, b) {\r\n return val.indexOf(a[transformProps.value]) - val.indexOf(b[transformProps.value]);\r\n });\r\n }\r\n else {\r\n valarray = items.filter(item => { return item[transformProps.value] === val })\r\n valarray = valarray[0]\r\n }\r\n }\r\n let tlabel = (tooltip || contexthelp) ? <Fragment> {label} < Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em', color: '#007bff' }} onClick={() => DefaultSettings.showDrawer(contexthelp)} />\r\n </Tooltip> </Fragment> : label;\r\n return (\r\n\r\n <Autocomplete\r\n // label={tlabel}\r\n helperText={helperText}\r\n fullWidth={fullWidth ? fullWidth : true}\r\n error={error} required={required}\r\n multiple={ismulti || changefieldto === 'DM'}\r\n disabled={disabled || false}\r\n limitTags={limitTags || 3}\r\n value={valarray}\r\n {...otherProps}\r\n options={items && Array.isArray(items) ? items : []}\r\n disableCloseOnSelect\r\n getOptionLabel={(option) => option[transformProps.label]}\r\n onChange={(event, option) => handleFieldValue({\r\n target: {\r\n name: name, value: (ismulti || changefieldto === 'DM') ?\r\n (_.map(option, transformProps.value)).join(',') : (option && option[transformProps.value]) || null, checked: false\r\n }, currentTarget: { dataset: null }\r\n })}\r\n renderOption={(option, { selected }) => (\r\n <React.Fragment>\r\n <Checkbox\r\n icon={icon}\r\n checkedIcon={checkedIcon}\r\n style={{ marginRight: 8 }}\r\n checked={selected}\r\n />\r\n {option[transformProps.label]}\r\n </React.Fragment>\r\n )}\r\n renderTags={(value, getTagProps) =>\r\n valarray.map((option, index) => (\r\n <Chip variant=\"outlined\" label={option[transformProps.label]} {...getTagProps({ index })} />\r\n ))\r\n }\r\n // renderTags={() => null} \r\n renderInput={params => (\r\n <TextField\r\n style={{ maxHeight: '80px', overflowX: 'hidden' }}\r\n {...params}\r\n label={tlabel}\r\n helperText={helperText}\r\n error={error}\r\n required={required}\r\n InputProps={{\r\n ...params.InputProps,\r\n endAdornment: (\r\n <React.Fragment>\r\n {/* {loading ? <CircularProgress color=\"inherit\" size={20} /> : null} */}\r\n {params.InputProps.endAdornment}\r\n </React.Fragment>\r\n ),\r\n }}\r\n InputLabelProps={{\r\n style: {fontWeight: 'bold', color: required ? getColor() : (error ? 'red' : 'black')},\r\n shrink: true,\r\n }}\r\n />\r\n )}\r\n />\r\n\r\n // </FormControl>\r\n )\r\n}\r\n\r\n// <FormControl>\r\n{/* <InputLabel style={{ fontWeight: 'bold', color: error ? 'red' : 'black' }} shrink> {label} {tooltip && <Tooltip title={tooltip ? tooltip : null}\r\n placement=\"bottom-start\" >{contexthelp && <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em', color: '#007bff' }} onClick={(evt) => contexthelp ?\r\n DefaultSettings.showDrawer(contexthelp) : evt.preventDefault()} />}\r\n </Tooltip>} </InputLabel> */}\r\n{/* <div className=\"mb-1\" /> */ }","/**\r\n *********************************************************\r\n Description: Textbox component. xtype can be used to handle the types such as password, email etc.\r\n Required props: type, value.\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\nimport React, { Component, Fragment, useState } from 'react';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport DefaultSettings from '../../controls/components/settings';\r\nimport InputAdornment from '@material-ui/core/InputAdornment';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport VisibilityIcon from '@material-ui/icons/Visibility';\r\nimport VisibilityOffIcon from '@material-ui/icons/VisibilityOff';\r\nimport { InputLabel } from '@material-ui/core';\r\n\r\nconst CFormTextBox = (props) => {\r\n const { handleFieldChange, onKeyPress, defaultValue, format, value, name, id, tooltip, error, helperText, edit, editduplicate, options, conditions, disabled, accessPermissions, accessLevelPermissions, label, contexthelp, ...otherProps } = props\r\n let disabledstatus = conditions && conditions.enable ? conditions.enable : disabled\r\n const { xtype, inputProps, password, required, minnumber, minval, hasdecimalvalue } = otherProps;\r\n let textProps = otherProps\r\n let val = (value === undefined) ? '' : value;\r\n const [showPassword, setShowPassword] = useState(false);\r\n const handleClickShowPassword = () => {\r\n setShowPassword(!showPassword);\r\n }\r\n const handleMouseDownPassword = () => {\r\n setShowPassword(!showPassword);\r\n }\r\n\r\n const handleNumberChange = (event) => {\r\n if (minval && event.target.value != '' && event.target.value < minnumber) {\r\n event.target.value = ''\r\n props.handleFieldChange(event)\r\n }\r\n else if (hasdecimalvalue) {\r\n props.handleFieldChange(event)\r\n }\r\n else {\r\n event.target.value = parseFloat(event.target.value)\r\n props.handleFieldChange(event)\r\n }\r\n }\r\n\r\n let urlval\r\n if (val != '' && format === 'URL' && typeof val === 'string') {\r\n urlval = val.includes(\"http://\") || val.includes(\"https://\") ? val : \"http://\" + val\r\n }\r\n else if (val && typeof val === 'string' && val.includes('?view=embedded')) {\r\n let temp = val.split('?view=embedded')\r\n val = temp[0]\r\n }\r\n if (edit === false) {\r\n if (format === 'URL') {\r\n return <Fragment>\r\n {(tooltip || contexthelp) && <div > <Typography variant={'caption'} className=\"fw-bold\" color={'textPrimary'}>{label} \r\n < Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em' }} onClick={() => DefaultSettings.showDrawer(contexthelp)} />\r\n </Tooltip> </Typography> <Typography variant={'body2'} >{val} </Typography>\r\n </div>}\r\n {!tooltip && <div > <Typography variant={'caption'} className=\"fw-bold\">{label} </Typography> <br />\r\n <a target={'_blank'} href={urlval} >{val} </a>\r\n </div>}\r\n </Fragment >\r\n }\r\n else return <Fragment>\r\n {(tooltip || contexthelp) && <div > <Typography variant={'caption'} className=\"fw-bold\" color={'textPrimary'} >{label} \r\n < Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em' }} onClick={() => DefaultSettings.showDrawer(contexthelp)} />\r\n </Tooltip> </Typography> <Typography className=\"text-secondary\">{val} </Typography>\r\n </div>}\r\n {!tooltip && <div > <Typography variant={'caption'} className=\"fw-bold\" color={'textPrimary'}>{label} </Typography> <Typography\r\n className=\"eps-content-wrap text-secondary\">{val} </Typography>\r\n </div>}\r\n </Fragment >\r\n }\r\n else {\r\n let tlabel = (tooltip || contexthelp) ? <Fragment> {label} < Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em' }} onClick={() => DefaultSettings.showDrawer(contexthelp)} />\r\n </Tooltip> </Fragment> : label;\r\n textProps = { ...textProps }\r\n return <>\r\n <InputLabel style={{ fontWeight: 'bold', color : error ? 'red' : 'black' }} shrink>{tlabel}</InputLabel>\r\n <TextField onChange={handleFieldChange}\r\n value={val || defaultValue}\r\n name={name}\r\n // label={variant ? '' : tlabel}\r\n id={id || name}\r\n fullWidth\r\n required={required}\r\n helperText={helperText}\r\n {...textProps}\r\n error={error}\r\n disabled={editduplicate ? false : disabledstatus}\r\n onKeyPress={onKeyPress}\r\n type={(password || xtype == \"password\") ? (showPassword ? 'text' : \"password\") : (xtype || 'text')}\r\n {...inputProps}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n endAdornment: xtype == \"password\" ? (\r\n <InputAdornment position=\"end\">\r\n <IconButton\r\n aria-label=\"toggle password visibility\"\r\n onClick={handleClickShowPassword}\r\n onMouseDown={handleMouseDownPassword}\r\n >\r\n {showPassword ? <VisibilityOffIcon /> : <VisibilityIcon />}\r\n </IconButton>\r\n </InputAdornment>\r\n ) : \"\"\r\n }} />\r\n\r\n </>\r\n\r\n }\r\n}\r\nexport default CFormTextBox;\r\n\r\n// changed from xtype && xtype to xtype || type ( type = passowrod or email)","import React, { forwardRef, useImperativeHandle, useRef, useState } from 'react';\r\nimport Button from '@material-ui/core/Button';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { setResetValue } from '../../actions';\r\n\r\n\r\nfunction Confirmation(props, ref) {\r\n const [open, setOpen] = useState(false);\r\n const [description, setDescription] = useState(false);\r\n const dispatch = useDispatch()\r\n const resetval = useSelector(state => state.header && state.header.resetval);\r\n\r\n const onSubmit = () => {\r\n if (props.onSubmit)\r\n props.onSubmit();\r\n else {\r\n let tempResetVal = resetval\r\n setOpen(false);\r\n if (tempResetVal && tempResetVal.name)\r\n dispatch(setResetValue({ name: tempResetVal.name, isReset: false }))\r\n }\r\n }\r\n\r\n const onClose = () => {\r\n if (props.onClose && !props.customClose)\r\n props.onClose();\r\n else {\r\n let tempResetVal = resetval\r\n setOpen(false);\r\n if (tempResetVal && tempResetVal.name)\r\n dispatch(setResetValue({ name: tempResetVal.name, isReset: true }))\r\n }\r\n }\r\n\r\n useImperativeHandle(ref, () => (\r\n {\r\n show: (message) => {\r\n setDescription(message)\r\n setOpen(true);\r\n }\r\n }\r\n ))\r\n\r\n return (\r\n <Dialog open={open || (props.value && props.value !== 'N')}>\r\n <DialogTitle>{props.title}</DialogTitle>\r\n <DialogContent> <DialogContentText>{description || props.description}</DialogContentText> </DialogContent>\r\n <DialogActions>\r\n <Button color=\"primary\" onClick={onSubmit}> {(props.labels && props.labels.length > 0) ? props.labels[0] : \"YES\"} </Button>\r\n <Button color=\"primary\" onClick={onClose}> {(props.labels && props.labels.length > 0) ? props.labels[1] : \"NO\"} </Button>\r\n </DialogActions>\r\n </Dialog>\r\n );\r\n}\r\n\r\nexport default forwardRef(Confirmation);","import { loadModules } from 'esri-loader';\r\nexport function GeometryEngineTask(config) {\r\n return new Promise((resolve, reject) => {\r\n if (!loadModules) {\r\n reject('GeometryEngineTask: ArcGIS API is not loaded');\r\n return;\r\n }\r\n GeometryEngineTaskExecute(config).then(\r\n response => {\r\n resolve(response);\r\n },\r\n error => {\r\n reject(error);\r\n }\r\n );\r\n });\r\n};\r\n\r\nfunction GeometryEngineTaskExecute(config) {\r\n return new Promise((resolve, reject) => {\r\n loadModules([\r\n \"esri/geometry/geometryEngine\",\r\n \"esri/geometry/projection\"\r\n ]).then(([geometryEngine, projection]) => {\r\n switch (config.type) {\r\n case \"union\":\r\n UnionTaskExecute(projection, geometryEngine, config, resolve, reject);\r\n break;\r\n case \"buffer\":\r\n BufferTaskExecute(projection, geometryEngine, config, resolve, reject);\r\n break;\r\n case \"project\":\r\n ProjectionTaskExecute(projection, config, config.geometries, resolve, reject);\r\n break;\r\n case \"length\":\r\n LengthTaskExecute(geometryEngine, config, config.geometries, resolve, reject).then(\r\n lengthResponse => {\r\n resolve(lengthResponse);\r\n }, lengthError => {\r\n reject({ \"error\": lengthError });\r\n });\r\n break;\r\n case \"validateBussinessRules\":\r\n ValidateBussinessRulesTaskExecute(geometryEngine, config, config.geometries, resolve, reject);\r\n break;\r\n case \"unionpointzoom\":\r\n UnionTaskExecutePointZoom(projection, geometryEngine, config, resolve, reject);\r\n break;\r\n default: break;\r\n }\r\n });\r\n });\r\n}\r\n\r\n\r\nexport function RequestTaskExecute(config) {\r\n return new Promise((resolve, reject) => {\r\n loadModules([\r\n \"esri/request\"\r\n ]).then(([esriRequest]) => {\r\n switch (config.type) {\r\n case \"Info\":\r\n InfoTaskExecute(esriRequest, config, resolve, reject);\r\n break;\r\n case \"layerinfo\":\r\n LayerInfoTaskExecute(esriRequest, config, resolve, reject);\r\n break;\r\n case \"layerFieldsInfo\":\r\n LayerFieldsInfoTaskExecute(esriRequest, config, resolve, reject);\r\n break;\r\n case \"Validatelayerinfo\":\r\n ValidatelayerinfoTaskExecute(esriRequest, config, resolve, reject);\r\n break;\r\n default: break;\r\n }\r\n });\r\n });\r\n}\r\n\r\n/*\r\n * //Usage\r\n GeometryEngineTask({ \"geometries\": geom, \"spatialReference\": spatialReference, \"type\": \"project\" })\r\n * geometryEngine of esri/geometry/geometryEngine\r\n * config of union task requires geometries and type\r\n * resolve resolve of Promise\r\n * reject resolve of reject\r\n */\r\nfunction ProjectionTaskExecute(projection, config, geometry, resolve, reject) {\r\n try {\r\n if (config && config.spatialReference) {\r\n //console.log('spatialReference......',config.spatialReference)\r\n let projectionPromise = projection.load();\r\n projectionPromise.then(\r\n response => {\r\n //console.log('spatialReference......',config.spatialReference)\r\n const projectedgeom = projection.project(geometry, config.spatialReference);\r\n resolve(projectedgeom);\r\n },\r\n error => {\r\n reject(error);\r\n });\r\n } else {\r\n reject({ \"error\": \"Invalid geometries\" });\r\n }\r\n } catch (error) {\r\n reject({ \"error\": error });\r\n }\r\n}\r\n\r\n\r\n/*\r\n * //Usage\r\n * GeometryEngineTask({ \"geometries\": geometries, \"type\": \"union\" }).then(\r\n GeomEngineresponse => {\r\n if (GeomEngineresponse && GeomEngineresponse.centroid)\r\n CenterAndZoom(view, GeomEngineresponse.centroid, inThis.props.options.viewProperties.zoom);\r\n },\r\n GeomEngineerror => {\r\n console.log(GeomEngineerror);\r\n });\r\n * geometryEngine of esri/geometry/geometryEngine\r\n * config of union task requires geometries and type\r\n * resolve resolve of Promise\r\n * reject resolve of reject\r\n */\r\nfunction UnionTaskExecute(projection, geometryEngine, config, resolve, reject) {\r\n try {\r\n //Check fo not null geoms\r\n //let configgeom = config.geometries.filter(a => a.geometry != null);\r\n if (config && config.geometries) {\r\n let union = geometryEngine.union(config.geometries);\r\n if (config.spatialReference)\r\n ProjectionTaskExecute(projection, config, union, resolve, reject);\r\n else\r\n resolve(union);\r\n } else {\r\n reject({ \"error\": \"Invalid geometries\" });\r\n }\r\n } catch (error) {\r\n reject({ \"error\": error });\r\n }\r\n}\r\n\r\n/*\r\n * //Usage\r\n GeometryEngineTask({ \"geometries\": geometries, \"type\": \"buffer\", \"distance\": \"10\", \"unit\": \"miles\" }).then(\r\n GeomEngineresponse => {\r\n let g=new Graphic(GeomEngineresponse[0]);\r\n g.symbol= inThis.mapConstants.PolygonFillSymbol;\r\n layer.graphics.add(g);\r\n if (GeomEngineresponse && GeomEngineresponse)\r\n CenterAndZoom(view, GeomEngineresponse, inThis.props.options.viewProperties.zoom);\r\n },\r\n GeomEngineerror => {\r\n console.log(GeomEngineerror);\r\n });\r\n * geometryEngine of esri/geometry/geometryEngine\r\n * config of union task requires geometries, type as buffer , distance and unit\r\n * resolve resolve of Promise\r\n * reject resolve of reject\r\n */\r\nfunction BufferTaskExecute(projection, geometryEngine, config, resolve, reject) {\r\n try {\r\n if (config && config.geometries && config.distance && config.unit) {\r\n let bufferGeom = geometryEngine.buffer(config.geometries, config.distance, config.unit);\r\n if (config.spatialReference)\r\n ProjectionTaskExecute(projection, config, bufferGeom, resolve, reject);\r\n else\r\n resolve(bufferGeom);\r\n } else {\r\n reject({ \"error\": \"Invalid geometries or distance or unit\" });\r\n }\r\n } catch (error) {\r\n reject({ \"error\": error });\r\n }\r\n}\r\n\r\n/*\r\n * //Usage\r\n GeometryEngineTask({ \"geometries\": geom, \"spatialReference\": spatialReference, \"type\": \"length\",units:\"meters | feet | kilometers | miles | nautical-miles | yards\" })\r\n * geometryEngine of esri/geometry/geometryEngine\r\n * config of union task requires geometries and type\r\n * resolve resolve of Promise\r\n * reject resolve of reject\r\n */\r\nfunction ValidateBussinessRulesTaskExecute(geometryEngine, config, graphicies, resolve, reject) {\r\n try {\r\n if (config.MapBussinessRules) {\r\n var geomLengthRules = config.MapBussinessRules.find(function (mr) { if (mr.fields && mr.fields.indexOf(config.ValidateOf || \"GEOMETRY_LENGTH\") !== -1) return mr.rules })\r\n let inthis = this;\r\n if (geomLengthRules && geomLengthRules.rules) {\r\n LengthTaskExecute(geometryEngine, config, graphicies, resolve, reject).then(\r\n geomEngineResponse => {\r\n if (geomEngineResponse) {\r\n if (geomEngineResponse.length) {\r\n geomLengthRules.rules.forEach(function (gr) {\r\n const checks = gr.check\r\n const run = gr.run\r\n let rulesResponses = [];\r\n if (checks && run && run.events) {\r\n checks.forEach(function (check) {\r\n if (check && check.rules && check.rules.length > 0) {\r\n check.rules.forEach(function (r) {\r\n let isValidationFalied = false;\r\n if (r.type === \"=\") {\r\n isValidationFalied = geomEngineResponse.length === r.value\r\n }\r\n else if (r.type === \">\") {\r\n isValidationFalied = geomEngineResponse.length > r.value\r\n }\r\n else if (r.type === \"<\") {\r\n isValidationFalied = geomEngineResponse.length < r.value\r\n }\r\n else if (r.type === \">=\") {\r\n isValidationFalied = geomEngineResponse.length >= r.value\r\n }\r\n else if (r.type === \"<=\") {\r\n isValidationFalied = geomEngineResponse.length <= r.value\r\n }\r\n rulesResponses.push({ RuleId: gr.ruleId, IsValidationFalied: isValidationFalied, alertMessage: run.events.alertMessage });\r\n });\r\n }\r\n });\r\n }\r\n resolve(rulesResponses);\r\n });\r\n }\r\n console.log('length sketch ------------------', geomEngineResponse)\r\n }\r\n resolve([]);\r\n },\r\n geomEngineerror => {\r\n reject({ \"error\": geomEngineerror });\r\n });\r\n } else {\r\n resolve([]);\r\n }\r\n } else {\r\n resolve([]);\r\n }\r\n } catch (error) {\r\n reject({ \"error\": error });\r\n }\r\n}\r\n\r\n/*\r\n * //Usage\r\n GeometryEngineTask({ \"geometries\": geom, \"spatialReference\": spatialReference, \"type\": \"length\",units:\"meters | feet | kilometers | miles | nautical-miles | yards\" })\r\n * geometryEngine of esri/geometry/geometryEngine\r\n * config of union task requires geometries and type\r\n * resolve resolve of Promise\r\n * reject resolve of reject\r\n */\r\nfunction LengthTaskExecute(geometryEngine, config, geometry, resolve, reject) {\r\n return new Promise((Lengthresolve, Lengthreject) => {\r\n try {\r\n if (geometry && config && config.spatialReference) {\r\n let length = 0;\r\n if (geometry.length > 0) {\r\n geometry.forEach(geom => {\r\n const templength = LengthTaskWrapper(geometryEngine, geom.geometry || geom, config.units || \"feet\")\r\n console.log(templength)\r\n if (templength && templength > 0)\r\n length = templength + length\r\n });\r\n } else {\r\n let geom = geometry.length ? geometry[0] : geometry\r\n length = LengthTaskWrapper(geometryEngine, geom.geometry || geom, config.units || \"feet\")\r\n }\r\n Lengthresolve({ \"length\": length });\r\n } else {\r\n Lengthreject({ \"error\": \"Invalid geometries\" });\r\n }\r\n } catch (error) {\r\n Lengthreject({ \"error\": error });\r\n }\r\n });\r\n}\r\n\r\nfunction LengthTaskWrapper(geometryEngine, geometry, unit) {\r\n return geometryEngine.geodesicLength(geometry, unit);\r\n}\r\n/*\r\n* //Usage\r\n* RequestTaskExecute({ \"url\": serviceurl, \"type\": \"info\" }).then(\r\nresponse => {\r\nif (response){\r\n\r\n},\r\nerror => {\r\nconsole.log(error);\r\n});\r\n* config of union task requires serviceurl and type\r\n* resolve resolve of Promise\r\n* reject resolve of reject\r\n*/\r\nfunction InfoTaskExecute(esriRequest, config, resolve, reject) {\r\n try {\r\n if (config && config.url) {\r\n let url = ParseLayerUrl(config.url, true);\r\n InfoTaskExecuteRequest(esriRequest, config, resolve, reject, url, true)\r\n }\r\n } catch (error) {\r\n reject({ \"error\": error });\r\n }\r\n}\r\n\r\nfunction InfoTaskExecuteRequest(esriRequest, config, resolve, reject, url, isinfo) {\r\n esriRequest(url).then(\r\n response => {\r\n InfoTaskExecuteResponse(esriRequest, config, resolve, reject, response)\r\n },\r\n error => {\r\n if (isinfo) {\r\n url = ParseLayerUrl(config.url, false);\r\n InfoTaskExecuteRequest(esriRequest, config, resolve, reject, url, false)\r\n }\r\n else\r\n reject(error);\r\n });\r\n}\r\n\r\nfunction InfoTaskExecuteResponse(esriRequest, config, resolve, reject, response) {\r\n if (response != null && response.data != null && response.data.fields != null) {\r\n var layerInfo = response.data.fields.map(function (f) { return { \"Name\": f.name, \"Type\": f.type } });\r\n resolve(layerInfo);\r\n } else {\r\n reject({ \"Message\": \"Unable to load fields info\" });\r\n }\r\n}\r\nfunction ParseLayerUrl(url, isinfo) {\r\n /*\r\n if (url.indexOf('/info?') === -1) {\r\n url = url + '/info?f=json'\r\n url = url.replace('/query', '/info?f=json')\r\n .replace('/info', '/info?f=json');\r\n }*/\r\n\r\n if (url.indexOf('/query') !== -1) {\r\n const urlParts = url.split('/query')\r\n url = urlParts[0];\r\n }\r\n if (isinfo && url.indexOf('/info?') === -1) {\r\n url = url + '/info?f=json'\r\n }\r\n else {\r\n const urlParts = url.split('/info')\r\n url = urlParts[0] + '?f=json'\r\n }\r\n return url;\r\n}\r\nfunction rgb2hex(rgb) {\r\n rgb = rgb.match(/^[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?/i);\r\n return (rgb && rgb.length === 4) ? \"#\" +\r\n (\"0\" + parseInt(rgb[1], 10).toString(16)).slice(-2) +\r\n (\"0\" + parseInt(rgb[2], 10).toString(16)).slice(-2) +\r\n (\"0\" + parseInt(rgb[3], 10).toString(16)).slice(-2) : '';\r\n}\r\n\r\n\r\n/*\r\n* //Usage\r\n* RequestTaskExecute({ \"url\": serviceurl, \"type\": \"layerinfo\" }).then(\r\nresponse => {\r\nif (response){\r\n\r\n},\r\nerror => {\r\nconsole.log(error);\r\n});\r\n* config of union task requires serviceurl and type\r\n* resolve resolve of Promise\r\n* reject resolve of reject\r\n*/\r\nfunction LayerInfoTaskExecute(esriRequest, config, resolve, reject) {\r\n try {\r\n if (config && config.url) {\r\n let url = ParseLayerUrl(config.url, true);\r\n LayerInfoTaskExecuteRequest(esriRequest, config, resolve, reject, url, true)\r\n }\r\n } catch (error) {\r\n reject({ \"error\": error });\r\n }\r\n}\r\nfunction LayerInfoTaskExecuteRequest(esriRequest, config, resolve, reject, url, isinfo) {\r\n esriRequest(url).then(\r\n response => {\r\n LayerInfoTaskExecuteResponse(esriRequest, config, resolve, reject, response)\r\n },\r\n error => {\r\n if (isinfo) {\r\n url = ParseLayerUrl(config.url, false);\r\n LayerInfoTaskExecuteRequest(esriRequest, config, resolve, reject, url, false)\r\n }\r\n else\r\n reject(error);\r\n });\r\n\r\n}\r\nfunction LayerInfoTaskExecuteResponse(esriRequest, config, resolve, reject, response) {\r\n let layerInfo = {};\r\n if (response != null && response.data != null && response.data.fields != null && response.data.fields.length > 0) {\r\n layerInfo.fields = response.data.fields.map(function (f) { return { \"Name\": f.name, \"Type\": f.type } });\r\n layerInfo.type = response.data.type === \"Feature Layer\" ? \"F\" : \"M\";\r\n layerInfo.name = response.data.name;\r\n layerInfo.geometryType = response.data.geometryType;\r\n layerInfo.description = response.data.description;\r\n layerInfo.LayerColor = response.data.drawingInfo && response.data.drawingInfo.renderer\r\n && response.data.drawingInfo.renderer.symbol && response.data.drawingInfo.renderer.symbol.color && rgb2hex(response.data.drawingInfo.renderer.symbol.color.join(',')) //: '#ffffff'\r\n layerInfo.HighlightColor = layerInfo.LayerColor //|| '#ffffff'\r\n // layerInfo.InfoTemplateFields = response.data.fields.map(function (f) { return { \"Name\": f.name, \"Value\": f.name } }) || []\r\n layerInfo.SelectField = response.data.fields.map(function (f) { return { \"Name\": f.name, \"Value\": f.name } }) || []\r\n layerInfo.SearchField = response.data.fields.map(function (f) { return { \"Name\": f.name, \"Value\": f.name } }) || []\r\n layerInfo.LabelExpression = response.data.fields.map(function (f) { return { \"Name\": f.name, \"Value\": f.name } }) || []\r\n layerInfo.AsofArchiveStart = response.data.fields.map(function (f) { return { \"Name\": f.name, \"Value\": f.name } }) || []\r\n layerInfo.AsofArchiveEnd = response.data.fields.map(function (f) { return { \"Name\": f.name, \"Value\": f.name } }) || []\r\n layerInfo.InfoTemplate = response.data.fields.map(function (f) { return { \"Name\": f.name, \"Value\": f.name } }) || []\r\n layerInfo.GridTemplate = response.data.fields.map(function (f) { return { \"Name\": f.name, \"Value\": f.name } }) || []\r\n layerInfo.EditorTemplate = response.data.fields.map(function (f) { return { \"Name\": f.name, \"Value\": f.name } }) || []\r\n layerInfo.FilterAttributes = response.data.fields.map(function (f) { return { \"Name\": f.name, \"Value\": f.name } }) || []\r\n resolve(layerInfo);\r\n } else {\r\n reject({ \"Message\": \"Unable to load fields info\" });\r\n }\r\n\r\n\r\n}\r\n//LayerFieldsInfoTaskExecute\r\n/*\r\n* //Usage\r\n* RequestTaskExecute({ \"url\": serviceurl, \"type\": \"layerinfo\" }).then(\r\nresponse => {\r\nif (response){\r\n\r\n},\r\nerror => {\r\nconsole.log(error);\r\n});\r\n* config of union task requires serviceurl and type\r\n* resolve resolve of Promise\r\n* reject resolve of reject\r\n*/\r\nfunction LayerFieldsInfoTaskExecute(esriRequest, config, resolve, reject) {\r\n try {\r\n if (config && config.url) {\r\n let url = ParseLayerUrl(config.url, true);\r\n LayerFieldsInfoTaskExecuteRequest(esriRequest, config, resolve, reject, url, true);\r\n }\r\n } catch (error) {\r\n reject({ \"error\": error });\r\n }\r\n}\r\nfunction LayerFieldsInfoTaskExecuteRequest(esriRequest, config, resolve, reject, url, isinfo) {\r\n esriRequest(url).then(\r\n response => {\r\n let layerInfo = [];\r\n if (response != null && response.data != null && response.data.fields != null && response.data.fields.length > 0) {\r\n layerInfo = response.data.fields.map(function (f) { return { \"Name\": f.name, \"Value\": f.name } });\r\n resolve(layerInfo);\r\n } else {\r\n reject({ \"Message\": \"Unable to load fields info\" });\r\n }\r\n\r\n },\r\n error => {\r\n if (isinfo) {\r\n url = ParseLayerUrl(config.url, false);\r\n LayerFieldsInfoTaskExecuteRequest(esriRequest, config, resolve, reject, url, isinfo)\r\n }\r\n else\r\n reject(error);\r\n });\r\n}\r\n/*\r\n* //Usage\r\n* RequestTaskExecute(\"layers\":[{\"name\":\"layer name\",\"url\": serviceurl}], \"type\": \"validatelayerinfo\" }).then(\r\nresponse => {\r\nif (response){\r\n\r\n},\r\nerror => {\r\nconsole.log(error);\r\n});\r\n* config of union task requires serviceurl and type\r\n* resolve resolve of Promise\r\n* reject resolve of reject\r\n*/\r\n\r\nfunction ValidatelayerinfoTaskExecute(esriRequest, config, resolve, reject) {\r\n try {\r\n if (config && config.layers) {\r\n let layersResponses = config.layers.map(function (layerconfig) {\r\n return new Promise((layerresolve, layerreject) => {\r\n ValidateLayerInfoTaskExecuteWrapper(esriRequest, layerconfig, layerresolve, layerreject, \"status\");\r\n });\r\n });\r\n Promise.all(layersResponses).then(\r\n response => {\r\n resolve(response);\r\n }, error => {\r\n resolve(error);\r\n });\r\n }\r\n } catch (error) {\r\n //type : correct: type is missing\r\n config[\"Message\"] = false;\r\n config[\"Error\"] = error;\r\n resolve(config);\r\n }\r\n}\r\n\r\n\r\n/*\r\n* //Usage\r\n* RequestTaskExecute(\"layers\":[{\"name\":\"layer name\",\"url\": serviceurl}], \"type\": \"validatelayerinfo\" }).then(\r\nresponse => {\r\nif (response){\r\n\r\n},\r\nerror => {\r\nconsole.log(error);\r\n});\r\n* config of union task requires serviceurl and type\r\n* resolve resolve of Promise\r\n* reject resolve of reject\r\n*/\r\nfunction ValidateLayerInfoTaskExecuteWrapper(esriRequest, config, resolve, reject, type) {\r\n try {\r\n if (config && config.url) {\r\n let url = config.url\r\n if (url.indexOf('/query') !== -1) {\r\n const urlParts = url.split('/query')\r\n url = urlParts[0];\r\n }\r\n if (type === \"info\") {\r\n let url = ParseLayerUrl(config.url, true);\r\n }\r\n else if (type === \"status\") {\r\n url = url.replace('/query', '/query?where=1%3D1&returnCountOnly=true&f=json').replace('query', '/query?where=1%3D1&returnCountOnly=true&f=json')\r\n .replace('/info', '/query?where=1%3D1&returnCountOnly=true&f=json').replace('info', '/query?where=1%3D1&returnCountOnly=true&f=json');\r\n }\r\n ValidateLayerInfoTaskExecuteWrapperRequest(esriRequest, config, resolve, reject, type, url, true)\r\n }\r\n } catch (error) {\r\n config[type + \"Message\"] = false;\r\n config[type + \"Error\"] = error;\r\n resolve(config);\r\n }\r\n}\r\nfunction ValidateLayerInfoTaskExecuteWrapperRequest(esriRequest, config, resolve, reject, type, url, isinfo) {\r\n esriRequest(url).then(\r\n response => {\r\n ValidateLayerInfoTaskExecuteWrapperResponse(config, type, response, resolve, reject)\r\n },\r\n error => {\r\n if (type === \"info\" && isinfo) {\r\n url = ParseLayerUrl(config.url, false);\r\n ValidateLayerInfoTaskExecuteWrapperRequest(esriRequest, config, resolve, reject, type, url, false)\r\n }\r\n else {\r\n config[type + \"Message\"] = false;\r\n config[type + \"Error\"] = error;\r\n resolve(config);\r\n }\r\n });\r\n}\r\nfunction ValidateLayerInfoTaskExecuteWrapperResponse(config, type, response, resolve, reject) {\r\n let layerInfo = {};\r\n let esriRequest = '' // correct: esriRequest is missing.compare and correct\r\n if (type === \"status\") {\r\n if (response.data != null && response.data.count >= 0) {\r\n config.statusMessage = true;\r\n return new Promise((inforesolve, inforeject) => {\r\n ValidateLayerInfoTaskExecuteWrapper(esriRequest, config, inforesolve, inforeject, \"info\").then(\r\n inforesponse => {\r\n resolve(config);\r\n },\r\n infoerror => {\r\n resolve(config);\r\n });\r\n });\r\n } else {\r\n config.statusMessage = false;\r\n config.statusError = \"Layers is down.\";\r\n resolve(config);\r\n }\r\n }\r\n if (type === \"info\") {\r\n if (config.name === response.data.name) {\r\n config.infoMessage = true;\r\n resolve(config);\r\n } else {\r\n config.infoMessage = false;\r\n config.infoError = \"Layers information is changed or misconfigured.\";\r\n resolve(config);\r\n }\r\n }\r\n}\r\n\r\n//Not using - UNTESTED\r\nexport function GeometryProjectionTask(config, geometry) {\r\n return new Promise((resolve, reject) => {\r\n loadModules([\r\n \"esri/geometry/geometryEngine\",\r\n \"esri/geometry/projection\"\r\n ]).then(([geometryEngine, projection]) => {\r\n try {\r\n if (config && config.spatialReference) {\r\n //console.log('spatialReference......',config.spatialReference)\r\n projection.load().then(res => {\r\n projection.project(geometry, config.spatialReference).then(projres => {\r\n console.log(projres);\r\n })\r\n })\r\n\r\n } else {\r\n reject({ \"error\": \"Invalid geometries\" });\r\n }\r\n } catch (error) {\r\n reject({ \"error\": error });\r\n }\r\n })\r\n })\r\n}\r\n\r\n/*\r\n * //Usage\r\n * GeometryEngineTask({ \"geometries\": geometries, \"type\": \"union\" }).then(\r\n GeomEngineresponse => {\r\n if (GeomEngineresponse && GeomEngineresponse.centroid)\r\n CenterAndZoom(view, GeomEngineresponse.centroid, inThis.props.options.viewProperties.zoom);\r\n },\r\n GeomEngineerror => {\r\n console.log(GeomEngineerror);\r\n });\r\n * geometryEngine of esri/geometry/geometryEngine\r\n * config of union task requires geometries and type\r\n * resolve resolve of Promise\r\n * reject resolve of reject\r\n */\r\nfunction UnionTaskExecutePointZoom(projection, geometryEngine, config, resolve, reject) {\r\n try {\r\n //Check fo not null geoms\r\n //let configgeom = config.geometries.filter(a => a.geometry != null);\r\n if (config && config.geometries) {\r\n\r\n GetFeaturePointOnFail(config.geometries).then(res => {\r\n let union = geometryEngine.union(res);\r\n if (config.spatialReference)\r\n ProjectionTaskExecute(projection, config, union, resolve, reject);\r\n else\r\n resolve(union);\r\n })\r\n } else {\r\n reject({ \"error\": \"Invalid geometries\" });\r\n }\r\n } catch (error) {\r\n reject({ \"error\": error });\r\n }\r\n}\r\n\r\nfunction GetFeaturePointOnFail(features) {\r\n return new Promise((resolve, reject) => {\r\n loadModules([\r\n \"esri/Graphic\",\r\n \"esri/geometry/Point\"\r\n ]).then(([Graphic, Point]) => {\r\n let pointsArr = [];\r\n features.forEach(element => {\r\n if(element && element.geometry && element.geometry.latitude){\r\n pointsArr.push(new Point({\r\n latitude: element.geometry.latitude,\r\n longitude: element.geometry.longitude,\r\n spatialReference: element.geometry.spatialReference\r\n }));\r\n } \r\n });\r\n resolve(pointsArr);\r\n })\r\n })\r\n}\r\n\r\n","\r\nimport React, { Fragment } from 'react';\r\nimport {\r\n GridColumnMenuSort,\r\n GridColumnMenuFilter, GridColumnMenuItemGroup, GridColumnMenuItem, GridColumnMenuItemContent\r\n} from '@progress/kendo-react-grid';\r\n\r\nexport class CustomColumnMenu extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n columns: this.props.columns,\r\n columnsExpanded: false,\r\n filterExpanded: false\r\n };\r\n }\r\n\r\n onToggleColumn = (id) => {\r\n this.setState({\r\n columns: this.state.columns.map((column, idx) => {\r\n return idx === id ? { ...column, show: !column.show } : column;\r\n })\r\n });\r\n }\r\n\r\n onReset = (event) => {\r\n event.preventDefault();\r\n const allColumns = this.props.columns.map(col => {\r\n return {\r\n ...col,\r\n show: true\r\n };\r\n });\r\n\r\n this.setState({ columns: allColumns }, () => this.onSubmit());\r\n }\r\n\r\n onSubmit = (event) => {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n this.props.onColumnsSubmit(this.state.columns);\r\n if (this.props.onCloseMenu) {\r\n this.props.onCloseMenu();\r\n }\r\n }\r\n\r\n onMenuItemClick = () => {\r\n const value = !this.state.columnsExpanded;\r\n this.setState({\r\n columnsExpanded: value,\r\n filterExpanded: value ? false : this.state.filterExpanded\r\n });\r\n }\r\n\r\n saveReport = (e) => {\r\n console.log(e)\r\n this.props.saveReport(this.state.columns);\r\n }\r\n\r\n onFilterExpandChange = (value) => {\r\n this.setState({\r\n filterExpanded: value,\r\n columnsExpanded: value ? false : this.state.columnsExpanded\r\n });\r\n }\r\n\r\n render() {\r\n const oneVisibleColumn = this.state.columns.filter(c => c.show).length === 1;\r\n\r\n return (\r\n <div>\r\n <GridColumnMenuSort {...this.props} />\r\n {this.props && !this.props.hidefilter && <GridColumnMenuFilter\r\n {...this.props}\r\n onExpandChange={this.onFilterExpandChange}\r\n expanded={this.state.filterExpanded}\r\n />}\r\n {/* <GridColumnMenuItemGroup>\r\n <GridColumnMenuItem\r\n title={'Save Report'}\r\n iconClass={'k-i-save'}\r\n onClick={this.saveReport}\r\n />\r\n </GridColumnMenuItemGroup> */}\r\n <GridColumnMenuItemGroup>\r\n <GridColumnMenuItem\r\n title={'Columns'}\r\n iconClass={'k-i-columns'}\r\n onClick={() => {\r\n this.setState({\r\n columnsExpanded: !this.state.columnsExpanded,\r\n filterExpanded: !this.state.columnsExpanded ? false : this.state.filterExpanded\r\n })\r\n }}\r\n />\r\n <GridColumnMenuItemContent show={this.state.columnsExpanded}>\r\n <div className={'k-column-list-wrapper'}>\r\n <form onSubmit={this.onSubmit} onReset={this.onReset}>\r\n <div className={'k-column-list'}>\r\n {this.state.columns.map((column, idx) =>\r\n (\r\n <div key={idx} className={'k-column-list-item'}>\r\n <span>\r\n <input\r\n id={`column-visiblity-show-${idx}`}\r\n className=\"k-checkbox\"\r\n type=\"checkbox\"\r\n readOnly={true}\r\n disabled={column.show && oneVisibleColumn}\r\n checked={column.show}\r\n onClick={() => { this.onToggleColumn(idx); }}\r\n />\r\n <label\r\n htmlFor={`column-visiblity-show-${idx}`}\r\n className=\"k-checkbox-label\"\r\n style={{ userSelect: 'none' }}\r\n >\r\n {column.title}\r\n </label>\r\n </span>\r\n </div>\r\n )\r\n )}\r\n </div>\r\n <div className={'k-columnmenu-actions'}>\r\n <button type={'reset'} className={'k-button'}>Reset</button>\r\n <button className={'k-button k-primary'} >Save</button>\r\n\r\n </div>\r\n </form>\r\n </div>\r\n </GridColumnMenuItemContent>\r\n </GridColumnMenuItemGroup>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n","import MomentUtils from '@date-io/moment';\r\nimport Drawer from '@material-ui/core/Drawer';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport { KeyboardDatePicker, MuiPickersUtilsProvider } from \"@material-ui/pickers\";\r\nimport moment from 'moment';\r\nimport React, { Component, Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { bindActionCreators } from 'redux';\r\nimport FormHeader from '../../core/modules/form/cformheader';\r\nimport { snackbarMessage } from '../../core/actions';\r\nimport { GetData, PostData, PutData } from '../../core/controls/helpers/requests';\r\nimport { getEnvVariable } from '../environmentalList';\r\nimport CFormDropDown from '../../core/modules/form/cformdropdown';\r\nimport CFormTextBox from '../../core/modules/form/cformtextbox';\r\nimport { globalvalidate as GlobalValidate } from '../../core/modules/form/validations';\r\nimport Template from '../../core/modules/template/template';\r\nimport historygrid from '../../json/common/notices/noticehistorygrid';\r\nimport TextBox from '../../core/controls/components/textbox';\r\nimport { Button } from '@material-ui/core';\r\n\r\nconst transformProps = {\r\n \"value\": \"Id\",\r\n \"name\": \"Name\",\r\n \"key\": \"Id\"\r\n}\r\n\r\nconst addbreadcrumbs = [\r\n { \"link\": \"Notice\", \"materialicon\": \"chrome_reader_mode\", className: 'eps-breadcrumb-item', class: 'text-light' }\r\n]\r\nconst editbreadcrumbs = [\r\n { \"link\": \"Notice\", appendval: 'NoticeTypeIdDesc', \"materialicon\": \"chrome_reader_mode\", className: 'eps-breadcrumb-item', class: 'text-light' }\r\n]\r\n\r\nconst styles = theme => ({\r\n paperAnchorRight: {\r\n top: 'auto',\r\n maxHeight: '100%',\r\n width: '70%',\r\n maxWidth: '70%',\r\n },\r\n root: {\r\n width: '70%',\r\n maxWidth: '70%',\r\n }\r\n});\r\n\r\nclass NoticeCommon extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n noticeTypeJson: [],\r\n results: { TemplateId: 0, NoticeTypeId: this.props.noticetypeid, NoticeDate: moment().format('MM/DD/YYYY'), CertifiedMailNo: \"\", NoticeDescription: \"\" },\r\n showTemplate: false,\r\n TemplateId: 0,\r\n ParentId: 0,\r\n NoticeTypeId: this.props.noticetypeid || '',\r\n updateRecord: this.props.updateRecord,\r\n noticeEntryData: [],\r\n NoticeDate: moment().format('MM/DD/YYYY'),\r\n CertifiedMailNo: \"\",\r\n NoticeDescription: \"\",\r\n ProjectMessages: [],\r\n errors: {},\r\n SendToOwner: false,\r\n tabvalue: 0,\r\n EmailModel: { Subject: '', Body: '', MailTo: [], TemplateList: [] },\r\n open: this.props.open || true,\r\n sideBarTablesRecords: [],\r\n sideBarTables: [],\r\n openSendNotice: false,\r\n sendNoticeObj: {}\r\n }\r\n this.masterTableId = this.props.recordid || this.props.match.params.routeid1// ApplicationId, PermitId, CompanyId\r\n this.sitePermitTypeId = this.props.sitepermittypeid || this.props.match.params.routeid\r\n this.fieldValues = {};\r\n if (this.state.updateRecord) {\r\n this.noticeComponentsArray = { ...historygrid };\r\n this.historygridjson = this.noticeComponentsArray.options\r\n }\r\n\r\n this.url1 = getEnvVariable('Admin') + `/api/NoticeTypes/All/${this.props.sitepermittypeid || this.props.match.params.routeid}`\r\n this.url2 = this.props.dataItem && this.props.dataItem.Id ? getEnvVariable('Application') + `/api/Notices/${this.props.recordid}/Notice/${this.props.Id}` :\r\n getEnvVariable('Application') + `/api/Notices/${this.props.recordid}/Notice/${this.props.routeid2}`\r\n this.url3 = this.props.dataItem && this.props.dataItem.Id ? getEnvVariable('Application') + `/api/Notices/${this.props.recordid}/Update/${this.props.Id}` :\r\n getEnvVariable('Application') + `/api/Notices/${this.props.recordid}/Update/${this.props.routeid2}`\r\n this.url4 = getEnvVariable('Application') + `/api/Notices/${this.props.recordid || this.props.match.params.routeid1}/Add`\r\n this.url5 = getEnvVariable('Application') + `/api/Application/FieldValues`;\r\n this.noticeporjectmessage = getEnvVariable('Application') + `/api/ProjectMessages/RulesByName?name=modulemaster.notices`;\r\n this.sidebartablesurl = getEnvVariable('Application') + `/api/SubModuleSideBar/All`\r\n this.TemplateForm = React.createRef()\r\n }\r\n\r\n\r\n\r\n handleFieldChange = (event) => {\r\n const value = event.target.value;\r\n const name = event.target.name;\r\n\r\n if (name === 'NoticeTypeId') {\r\n let noticeType = this.state.noticeTypeJson.find(x => x.Id === value)\r\n let sdtables = noticeType.SideBarTables ? noticeType.SideBarTables.split(',') : [];\r\n let sdtablesfilter = this.state.sideBarTablesRecords.filter(a => sdtables.includes(a.id.toString()));\r\n let sdtablesloadmap = sdtablesfilter ? sdtablesfilter.map(a => (a.name)) : [];\r\n\r\n this.setState({\r\n [name]: value,\r\n ParentId: noticeType.TemplateId,\r\n showTemplate: true,\r\n sideBarTables: sdtablesloadmap,\r\n results: {\r\n ...this.state.results,\r\n [name]: value\r\n }\r\n }, () => {\r\n this.loadNoticeEntryData(this.state.sideBarTables)\r\n this.validateFieldChange(name, value)\r\n })\r\n }\r\n else if (name === 'NoticeDate') {\r\n this.setState({\r\n [name]: moment(value).format('MM/DD/YYYY'),\r\n results: {\r\n ...this.state.results,\r\n [name]: value\r\n }\r\n }, () => this.validateFieldChange(name, value))\r\n }\r\n else {\r\n this.setState({\r\n [name]: value,\r\n results: {\r\n ...this.state.results,\r\n [name]: value\r\n }\r\n }, () => this.validateFieldChange(name, value))\r\n }\r\n }\r\n\r\n\r\n handleNoticeDateChange = (e) => {\r\n let convertMoment = e ? moment(e, 'MM/DD/YYYY').format('MM/DD/YYYY') : null\r\n this.setState({\r\n \"NoticeDate\": convertMoment,\r\n results: {\r\n ...this.state.results,\r\n \"NoticeDate\": convertMoment\r\n }\r\n }, () => this.validateFieldChange(\"NoticeDate\", convertMoment))\r\n }\r\n\r\n componentDidMount() {\r\n this.didmountinitialload();\r\n }\r\n\r\n\r\n didmountinitialload() {\r\n this.fetchData('GET', this.noticeporjectmessage, null, null).then(data => this.setState({\r\n ProjectMessages: data\r\n }))\r\n\r\n this.fetchData('GET', this.url1, null, null).then(data => this.setState({\r\n noticeTypeJson: data, ParentId: data.find(x => x.Id == this.props.noticetypeid).TemplateId, NoticeTypeId: this.props.noticetypeid\r\n }))\r\n let SideBarDataItems = {};\r\n this.props.sideBarItems && this.props.sideBarItems.length > 0 && this.props.sideBarItems.forEach(element => {\r\n SideBarDataItems[element] = this.props.childTable.Id\r\n })\r\n this.fetchData('POST', this.url5, null, {\r\n 'sitePermitTypeId': this.props.sitepermittypeid,\r\n 'masterTableId': this.props.recordid,\r\n 'SideBarDataItems': SideBarDataItems,\r\n 'sideBarItems': this.props.sideBarItems || [],\r\n 'Values': this.props.ParentValues || '',\r\n 'Info': (this.props.ParentValues && this.props.ParentValues['AvoidSaveRecord'] && this.props.ParentValues['AvoidSaveRecord']) !== 'Y' ? (this.props.ParentTableName || '') : {}\r\n }, true).then(data => {\r\n this.setState({ noticeEntryData: data });\r\n })\r\n\r\n // this.fetchData('GET', this.url5, null, null).then(data => {\r\n // this.setState({ noticeEntryData: data });\r\n // })\r\n\r\n this.fetchData('GET', `${this.sidebartablesurl}`, null, null)\r\n .then(data => {\r\n if (data && Array.isArray(data)) {\r\n let tabls = data.map(a => ({ id: a.Id, name: a.TableName, value: a.Id }))\r\n this.setState({\r\n sideBarTablesRecords: tabls\r\n })\r\n }\r\n })\r\n\r\n if (this.state.updateRecord) {\r\n this.fetchData('GET', this.url2, null, null)\r\n .then(data => {\r\n this.setState({\r\n TemplateId: data.TemplateId,\r\n NoticeTypeId: data.NoticeTypeId,\r\n NoticeDate: data.NoticeDate,\r\n CertifiedMailNo: data.CertifiedMailNo,\r\n NoticeDescription: data.NoticeDescription,\r\n results: data,\r\n showTemplate: true\r\n })\r\n })\r\n }\r\n }\r\n\r\n loadNoticeEntryData(tables) {\r\n let urlcon = \"\";\r\n let body = {};\r\n let SideBarDataItems = {}\r\n let sideBarItems = tables;\r\n sideBarItems.forEach(element => {\r\n urlcon = urlcon + 'table=' + element + '&';\r\n if (this.props.childTable)\r\n SideBarDataItems[element] = this.props.childTable.Id\r\n });\r\n body['sitePermitTypeId'] = this.props.sitepermittypeid;\r\n body['masterTableId'] = this.props.recordid;\r\n body['SideBarDataItems'] = SideBarDataItems;\r\n body['sideBarItems'] = sideBarItems;\r\n body['Values'] = this.props.ParentValues || '';\r\n body['Info'] = this.props.ParentValues['AvoidSaveRecord'] === 'Y' ? {} : (this.props.ParentTableName || '');\r\n\r\n let url = this.url5 + \"?\" + urlcon;\r\n this.fetchData('POST', url, null, body).then(data => {\r\n this.setState({ noticeEntryData: data });\r\n })\r\n }\r\n\r\n handleSaveWithTemplate = (event) => {\r\n var isValid = this.validateData(this.state.results);\r\n if (isValid && this.TemplateForm && this.TemplateForm.current && this.TemplateForm.current.saveTemplate) {\r\n this.TemplateForm.current.saveTemplate();\r\n } else {\r\n this.props.snackbarMessage('Invalid Data, Cannot be saved', 'error')\r\n }\r\n }\r\n\r\n handleSave = (event) => {\r\n if (this.state.updateRecord) {\r\n this.fetchData('PUT', this.url3, null, this.state.results)\r\n .then(data => {\r\n this.setState({\r\n results: data,\r\n opensnackbar: true\r\n })\r\n this.props.onClose();\r\n })\r\n }\r\n else {\r\n this.fetchData('POST', this.url4, null, this.state.results)\r\n .then(data => {\r\n this.setState({\r\n results: data,\r\n opensnackbar: true,\r\n openSendNotice: this.props.recordid ? true : false\r\n })\r\n })\r\n }\r\n }\r\n handleBack = () => {\r\n this.props.onClose()\r\n }\r\n\r\n validateData = (resultdata) => {\r\n var allErrors = this.validateStateResults(resultdata);\r\n if (Object.keys(allErrors).length > 0) {\r\n this.setState({ errors: allErrors })\r\n return false\r\n } else {\r\n this.setState({ errors: {} })\r\n return true\r\n }\r\n }\r\n\r\n validateStateResults = (resultdata) => {\r\n var allErrors = {};\r\n for (let [key, value] of Object.entries(resultdata)) {\r\n var errorJson = {}\r\n errorJson = { [key]: this.getDBValidationMessages(key) };\r\n const error = GlobalValidate(errorJson, { [key]: value })\r\n var isError = (Object.keys(error).length > 0 && error[key]['error']) ? error[key]['error'] : false;\r\n if (isError) {\r\n allErrors[key] = { error: true, errortext: error[key]['errortext'] };\r\n }\r\n }\r\n return allErrors;\r\n }\r\n\r\n validateFieldChange(key, value) {\r\n var allErrors = this.state.errors;\r\n var errorJson = {}\r\n errorJson = { [key]: this.getDBValidationMessages(key) };\r\n const error = GlobalValidate(errorJson, { [key]: value })\r\n var isError = (Object.keys(error).length > 0 && error[key]['error']) ? error[key]['error'] : false;\r\n if (isError) {\r\n allErrors[key] = { error: true, errortext: error[key]['errortext'] };\r\n } else {\r\n delete allErrors[key];\r\n }\r\n this.setState({ errors: allErrors });\r\n }\r\n\r\n getDBValidationMessages(key) {\r\n var keyinuppercase = key.toUpperCase();\r\n var validationSearchKey = \"_\" + keyinuppercase;\r\n var matchingKeys = this.state.ProjectMessages.filter(f => f['Key'].includes(validationSearchKey));;\r\n return matchingKeys;\r\n }\r\n\r\n //This is the template Id\r\n handleTemplateId = (data) => {\r\n this.setState({\r\n TemplateId: data.id,\r\n ParentId: 0,\r\n results: {\r\n ...this.state.results,\r\n \"TemplateId\": data.id\r\n }\r\n }, () => { this.handleSave(); })\r\n }\r\n\r\n fetchData(requestType, url, queryParam, body, alert = false) {\r\n const queryStr = queryParam != null ? `${url}?${queryParam}` : `${url}`\r\n if (requestType == \"GET\") {\r\n return GetData(queryStr);\r\n }\r\n else if (requestType == \"POST\") {\r\n return PostData(queryStr, body, alert, 'Notice Sent Successfully');\r\n }\r\n else if (requestType == \"PUT\")\r\n return PutData(queryStr, body);\r\n }\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevProps.dataItem != this.props.dataItem) {\r\n this.setState({ tabvalue: 0 })\r\n this.url2 = getEnvVariable('Application') + `/api/Notices/${this.props.routeid1}/Notice/${this.props.Id}`\r\n this.url3 = getEnvVariable('Application') + `/api/Notices/${this.props.routeid1}/Update/${this.props.Id}`\r\n this.didmountinitialload();\r\n }\r\n if (prevState.open !== this.props.open) {\r\n this.setState({ open: this.props.open, results: { TemplateId: 0, NoticeTypeId: this.props.noticetypeid, NoticeDate: \"\", CertifiedMailNo: \"\", NoticeDescription: \"\" }, }, () => {\r\n this.didmountinitialload();\r\n })\r\n }\r\n }\r\n handleClose = () => {\r\n this.setState({ open: false }, () => {\r\n this.props && this.props.onClose();\r\n })\r\n }\r\n\r\n handleFieldValue = (evt) => {\r\n const { name, value } = (evt && evt.target) || {};\r\n this.setState({ sendNoticeObj: { ...this.state.sendNoticeObj, [name]: value } })\r\n }\r\n\r\n handleNoticeSend = () => {\r\n const { sendNoticeObj } = this.state\r\n if (sendNoticeObj && sendNoticeObj.Subject && sendNoticeObj.Body) {\r\n let compUrl = getEnvVariable('MasterAdmin') + `/api/CompanyInternal/` + getEnvVariable('ModuleKey') + `/` + (this.props && this.props.companyid ? this.props.companyid : this.props.ParentValues && this.props.ParentValues['COMPANY_ID'])\r\n GetData(compUrl, false).then(resp => {\r\n if (resp && resp.Contacts && resp.Contacts.PrimaryContactAddress && resp.Contacts.PrimaryContactAddress.Email) {\r\n let mailContent = { ...sendNoticeObj, \"MailTo\": [resp.Contacts.PrimaryContactAddress.Email], \"Notices\": [this.props.noticetypeid] }\r\n let emaiLUrl = getEnvVariable('TemplateAPI') + `/api/Template/SendNotice`;\r\n PostData(emaiLUrl, mailContent, true, 'Notice sent to the User via Email').then(res => {\r\n this.handleClose()\r\n })\r\n }\r\n })\r\n }\r\n else {\r\n this.setState({ errorSendNotice: true })\r\n }\r\n }\r\n\r\n render() {\r\n const { compmap, onFullScreen, onExitFullScreen, fullscreen, exitfullscreen, onNextItemClick, onPrevItemClick, classes } = this.props;\r\n const { NoticeDate, updateRecord, sendNoticeObj, openSendNotice, open, sideBarTables, errorSendNotice } = this.state;\r\n const caneditfields = true;\r\n const noticeTypeError = this.state.errors && this.state.errors.NoticeTypeId && this.state.errors.NoticeTypeId.error ? this.state.errors.NoticeTypeId.errortext : null\r\n const certifiedMailError = this.state.errors && this.state.errors.CertifiedMailNo && this.state.errors.CertifiedMailNo.error ? this.state.errors.CertifiedMailNo.errortext : null\r\n const noticeDateError = this.state.errors && this.state.errors.NoticeDate && this.state.errors.NoticeDate.error ? this.state.errors.NoticeDate.errortext : null\r\n const noticeDescriptionError = this.state.errors && this.state.errors.NoticeDescription && this.state.errors.NoticeDescription.error ? this.state.errors.NoticeDescription.errortext : null\r\n return (\r\n <Fragment>\r\n <Drawer\r\n open={open}\r\n anchor=\"right\"\r\n classes={{\r\n paperAnchorRight: classes.paperAnchorRight,\r\n root: classes.root\r\n }}\r\n onClose={this.handleClose}>\r\n <FormHeader title=\"Notices\" handleSave={this.handleSaveWithTemplate} savebutton={(updateRecord || openSendNotice) ? false : caneditfields}\r\n // sendbutton={openSendNotice ? true : false}\r\n breadcrumbs={updateRecord ? editbreadcrumbs : addbreadcrumbs} accessLevelPermissions={this.props.accessLevelPermissions}\r\n onFullScreen={onFullScreen} onExitFullScreen={onExitFullScreen} fullscreen={fullscreen} exitfullscreen={exitfullscreen}\r\n backbutton={true} handleBack={this.handleBack} dataItem={this.props.dataItem} navigateup={updateRecord ? true : false}\r\n navigatedown={updateRecord ? true : false} onNextItemClick={onNextItemClick} onPrevItemClick={onPrevItemClick} />\r\n {!openSendNotice && <div className=\"col-12\">\r\n <div className=\"row mt-3\">\r\n <div className=\"col-md-12\">\r\n {/* {updateRecord && <FormHeader title=\"Notices\" handleSave={this.handleSaveWithTemplate} sendbutton={caneditfields}\r\n breadcrumbs={editbreadcrumbs} accessLevelPermissions={this.props.accessLevelPermissions} backbutton={true} handleBack={this.handleBack} designprops={true} dataItem={this.props.dataItem} />} */}\r\n\r\n <CFormDropDown value={this.state.NoticeTypeId} dropdownvalues={this.state.noticeTypeJson} required={true}\r\n name=\"NoticeTypeId\" label=\"Notice Type\" transformProps={transformProps}\r\n handleFieldChange={this.handleFieldChange} disabled={!caneditfields} helperText={noticeTypeError}\r\n error={noticeTypeError ? true : false} edit={false} />\r\n\r\n <MuiPickersUtilsProvider utils={MomentUtils}>\r\n <KeyboardDatePicker\r\n clearable\r\n variant=\"filled\"\r\n ampm={false}\r\n value={((NoticeDate && NoticeDate === '') ? new Date() : NoticeDate) || null}\r\n disablePast={false}\r\n disableFuture={false}\r\n onChange={this.handleNoticeDateChange}\r\n label={\"Notice Date\"}\r\n name={\"NoticeDate\"}\r\n format=\"MM/DD/YYYY\"\r\n InputLabelProps={{\r\n shrink: true,\r\n required: true\r\n }} disabled={!caneditfields}\r\n error={noticeDateError ? true : false}\r\n helperText={noticeDateError}\r\n />\r\n </MuiPickersUtilsProvider>\r\n <CFormTextBox value={this.state.CertifiedMailNo} /*required={true}*/\r\n name=\"CertifiedMailNo\" label=\"Certified Mail Number\"\r\n handleFieldChange={this.handleFieldChange} disabled={!caneditfields} helperText={certifiedMailError} error={certifiedMailError ? true : false} />\r\n\r\n <CFormTextBox value={this.state.NoticeDescription}\r\n name=\"NoticeDescription\" label=\"Notice Description\"\r\n handleFieldChange={this.handleFieldChange} multiline={true} disabled={!caneditfields} helperText={noticeDescriptionError} error={noticeDescriptionError ? true : false} />\r\n </div>\r\n </div>\r\n <div className=\"col-4 mt-2\" dir=\"rtl\">\r\n </div>\r\n <div className=\"col-12 mt-2\">\r\n {(this.state.noticeEntryData\r\n && Array.isArray(this.state.noticeEntryData)\r\n && this.state.noticeEntryData.length > 0)\r\n && <Template ref={this.TemplateForm} handleTemplateId={this.handleTemplateId}\r\n entryData={this.state.noticeEntryData}\r\n parentid={this.state.ParentId || this.props.recordid}\r\n isAdmin={false}\r\n templateId={this.state.TemplateId}\r\n isEnabled={getEnvVariable('AccessPortal') === 'E' ? false : true}\r\n sideBarTables={sideBarTables}\r\n refId={this.props.noticetypeid}\r\n refType={this.props.refType}\r\n />}\r\n\r\n </div>\r\n </div>}\r\n {openSendNotice && <div className='m-2'>\r\n <small className='text-primary my-3'>Send Notice to the Users</small>\r\n <div className='pt-4' />\r\n <TextBox className='col-8' name=\"Subject\" label=\"Subject\" required={errorSendNotice && !sendNoticeObj['Subject'] ? true : false}\r\n helperText={errorSendNotice && !sendNoticeObj['Subject'] ? 'Subject is Required' : ''} value={sendNoticeObj && sendNoticeObj.Subject} handleFieldValue={(e) => { this.handleFieldValue(e) }} />\r\n <TextBox className='col-8' name=\"Body\" label=\"Body\" value={sendNoticeObj && sendNoticeObj.Body}\r\n handleFieldValue={(e) => { this.handleFieldValue(e) }} required={errorSendNotice && !sendNoticeObj['Body'] ? true : false}\r\n helperText={errorSendNotice && !sendNoticeObj['Body'] ? 'Body is Required' : ''}\r\n multiline={true} rowsMax={7} />\r\n <div className='pt-4' />\r\n <Button variant='contained' color='primary' size='small' onClick={() => { this.handleNoticeSend() }}>Send Notice via Email</Button>\r\n\r\n </div>}\r\n </Drawer>\r\n </Fragment >\r\n )\r\n }\r\n}\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage }, dispatch);\r\n}\r\n\r\nNoticeCommon = connect(null, mapActions)(NoticeCommon)\r\nNoticeCommon = withStyles(styles)(NoticeCommon)\r\nexport default withRouter(NoticeCommon)","import { getEnvVariable } from \"../../modules/environmentalList\"\r\n\r\nexport const amesmap = {\r\n \"type\":\"map\",\r\n \"key\":\"EPS_map_ADD\",\r\n \"order\":32,\r\n \"width\":\"160vh\",\r\n \"options\":{\r\n \"mapkey\":\"EPS_map_ADD\",\r\n \"routes\":{\r\n \"route\":\"/Administration/map\"\r\n },\r\n \"widgets\":[\r\n \"Home\",\r\n \"Search\",\r\n \"Zoom\",\r\n \"Sketch\",\r\n \"Select\",\r\n \"BasemapGallery\",\r\n \"LayerList\",\r\n \"Measurement\",\r\n \"TaxlotSelector\",\r\n \"BufferCalc\",\r\n \"Print\"\r\n \r\n // \"SearchBookmark\"\r\n ],\r\n \"basemap\":\"streets\",\r\n \"viewProperties\":{\r\n // \"extent\":{\r\n // \"xmax\":-8057114.558988379,\r\n // \"xmin\":-8679311.969229413,\r\n // \"ymax\":4872179.908902848,\r\n // \"ymin\":4605567.554244282,\r\n // \"spatialReference\":102100\r\n // },\r\n \"zoom\":15,\r\n \"initialzoom\":12,\r\n \"center\":[\r\n -8368213.264108896,\r\n 4738873.731573565\r\n ],\r\n \"ui\":{\r\n \"components\":[\r\n \"attribution\"\r\n ]\r\n }\r\n },\r\n \"printOptions\":{\r\n \"serviceURL\":\"http://development.delasoft.com:8443/arcgis/rest/services/Utilities/PrintingTools/GPServer/Export%20Web%20Map%20Task\"\r\n },\r\n \"searchOptions\":{\r\n \"State\":\"OR\"\r\n },\r\n \"zoomOptions\":{\r\n \"maxZoomed\":false,\r\n \"minZoomed\":false\r\n },\r\n \"drawOptions\":{\r\n \"Tools\":[\r\n\r\n ],\r\n \"AllowMultiple\":{\"Points\":false, \"Lines\":false,\"Polygons\":false},\r\n \"LayerIndex\":1\r\n },\r\n 'searchbookmarks':{\r\n \"drawTool\":' Hello I ma me',\r\n \"url\":getEnvVariable('ArcGIS')+`/rest/services/AWS_KEPT_Test/Bookmarks/FeatureServer/0`,\r\n \"defaultChoice\":'E',\r\n \"defaultName\":'Bookmark #',\r\n \"defaultSymbol\":{\r\n type: \"simple-fill\",\r\n outline: {\r\n style: \"dash\",\r\n miterLimit: 16,\r\n color: [0, 112, 255, 1]\r\n },\r\n color: [115, 223, 255, 0.24]\r\n },\r\n \"defaultMessage\":'Draw Box on Map for Bookmark',\r\n 'appname':'INQUERY',\r\n 'username':'13384'\r\n },\r\n \"tasks\":{\r\n \"TaxParcels\":{\r\n \"url\":\"\", \r\n \"queryExpression\":\"\",\r\n \"LayerIndex\":0\r\n }\r\n },\r\n \"LayerOptionsConfig\":\r\n {\r\n \"Category\": [\"F\"],\r\n \"MapType\": [\"A\",\"R\"] //A-Add Record,L-Landing,G-Grid,R-Record review\r\n },\r\n \"LayerOptions\":[\r\n {\r\n \"ExtentZoom\": true,//CenterAndZoom after load\r\n \"title\": \"Tax Parcel Feature Layer\",\r\n \"type\": \"F\",//F-FeatureLayer,G-GraphicsLayer\r\n \"url\": \"\", //https://gistest1.odot.state.or.us/arcgis1006/rest/services/ames/ames/MapServer/29\r\n \"outFields\": [\"*\"],\r\n \"LayerColor\" : { type: \"simple-fill\", color: [ 255, 204, 153, 0.9 ], style: \"solid\", outline: { color: \"red\", width: 1 } },\r\n \"HighlightColor\" : { type: \"simple-fill\", color: [ 0, 255, 255, 0.1 ], style: \"solid\", outline: { color: \"red\", width: 1 } },\r\n \"InfoTemplate\" :[{type: \"fields\", fieldInfos: [{ fieldName: \"County\", label: \"County\" }, { label: \"MapNumber\" }, { fieldName: \"Taxlot\", label: \"Taxlot\" },{ fieldName: \"MapTaxlot\", label: \"MapTaxlot\" }] }],\r\n \"Key\": \"TaxLot\"\r\n },\r\n ],\r\n \"FeatureLayerListOptions\":[],\r\n \"CountyLayerOptions\":[\r\n {\r\n \"ExtentZoom\": true,//CenterAndZoom after load\r\n \"title\": \"Baker County Taxlots\",\r\n \"type\": \"F\",//F-FeatureLayer,G-GraphicsLayer\r\n \"url\": \"https://gistest1.odot.state.or.us/arcgis1006/rest/services/ames/ames/MapServer/28\",\r\n \"outFields\": [\"*\"],\r\n \"LayerColor\" : { type: \"simple-fill\", color: [ 255, 204, 153, 0.9 ], style: \"solid\", outline: { color: \"red\", width: 1 } },\r\n \"HighlightColor\" : { type: \"simple-fill\", color: [ 0, 255, 255, 0.1 ], style: \"solid\", outline: { color: \"red\", width: 1 } },\r\n \"InfoTemplate\" :[{type: \"fields\", fieldInfos: [{ fieldName: \"County\", label: \"County\" }, { label: \"MapNumber\" }, { fieldName: \"Taxlot\", label: \"Taxlot\" },{ fieldName: \"MapTaxlot\", label: \"MapTaxlot\" }] }],\r\n \"Key\": \"TaxLot\",\r\n \"id\":\"0\",\r\n \"GridTemplate\": [{\"field\":\"OBJECTID\",\"label\":\"OBJECTID\",\"sortable\":true,\"hidden\":true},\r\n {\"field\":\"Taxlot\",\"label\":\"Taxlot\",\"sortable\":true},\r\n {\"field\":\"MapTaxlot\",\"label\":\"MapTaxlot\",\"sortable\":true, colSpan: 2 },\r\n {\"field\":\"MapNumber\",\"label\":\"MapNumber\",\"sortable\":true},\r\n {\"field\":\"County\",\"label\":\"County\",\"sortable\":true}],\r\n \"EditorTemplate\" : []\r\n },\r\n {\r\n \"ExtentZoom\": true,//CenterAndZoom after load\r\n \"title\": \"Benton County Taxlots\",\r\n \"type\": \"F\",//F-FeatureLayer,G-GraphicsLayer\r\n \"url\": \"https://gistest1.odot.state.or.us/arcgis1006/rest/services/ames/ames/MapServer/29\",\r\n \"outFields\": [\"*\"],\r\n \"LayerColor\" : { type: \"simple-fill\", color: [ 255, 204, 153, 0.9 ], style: \"solid\", outline: { color: \"red\", width: 1 } },\r\n \"HighlightColor\" : { type: \"simple-fill\", color: [ 0, 255, 255, 0.1 ], style: \"solid\", outline: { color: \"red\", width: 1 } },\r\n \"InfoTemplate\" :[{type: \"fields\", fieldInfos: [{ fieldName: \"County\", label: \"County\" }, { label: \"MapNumber\" }, { fieldName: \"Taxlot\", label: \"Taxlot\" },{ fieldName: \"MapTaxlot\", label: \"MapTaxlot\" }] }],\r\n \"Key\": \"TaxLot\",\r\n \"id\":\"1\",\r\n \"GridTemplate\": [{\"field\":\"OBJECTID\",\"label\":\"OBJECTID\",\"sortable\":true,\"hidden\":true},\r\n {\"field\":\"Taxlot\",\"label\":\"Taxlot\",\"sortable\":true},\r\n {\"field\":\"MapTaxlot\",\"label\":\"MapTaxlot\",\"sortable\":true, colSpan: 2 },\r\n {\"field\":\"MapNumber\",\"label\":\"MapNumber\",\"sortable\":true},\r\n {\"field\":\"County\",\"label\":\"County\",\"sortable\":true}],\r\n \"EditorTemplate\" : []\r\n },\r\n {\r\n \"ExtentZoom\": true,//CenterAndZoom after load\r\n \"title\": \"Clackamas County Taxlots \",\r\n \"type\": \"F\",//F-FeatureLayer,G-GraphicsLayer\r\n \"url\": \"https://gistest1.odot.state.or.us/arcgis1006/rest/services/ames/ames/MapServer/30\",\r\n \"outFields\": [\"*\"],\r\n \"LayerColor\" : { type: \"simple-fill\", color: [ 255, 204, 153, 0.9 ], style: \"solid\", outline: { color: \"red\", width: 1 } },\r\n \"HighlightColor\" : { type: \"simple-fill\", color: [ 0, 255, 255, 0.1 ], style: \"solid\", outline: { color: \"red\", width: 1 } },\r\n \"InfoTemplate\" :[{type: \"fields\", fieldInfos: [{ fieldName: \"County\", label: \"County\" }, { label: \"MapNumber\" }, { fieldName: \"Taxlot\", label: \"Taxlot\" },{ fieldName: \"MapTaxlot\", label: \"MapTaxlot\" }] }],\r\n \"Key\": \"TaxLot\",\r\n \"id\":\"2\",\r\n \"GridTemplate\": [{\"field\":\"OBJECTID\",\"label\":\"OBJECTID\",\"sortable\":true,\"hidden\":true},\r\n {\"field\":\"Taxlot\",\"label\":\"Taxlot\",\"sortable\":true},\r\n {\"field\":\"MapTaxlot\",\"label\":\"MapTaxlot\",\"sortable\":true, colSpan: 2 },\r\n {\"field\":\"MapNumber\",\"label\":\"MapNumber\",\"sortable\":true},\r\n {\"field\":\"County\",\"label\":\"County\",\"sortable\":true}],\r\n \"EditorTemplate\" : []\r\n },\r\n {\r\n \"ExtentZoom\": true,//CenterAndZoom after load\r\n \"title\": \"Curry County Taxlots \",\r\n \"type\": \"F\",//F-FeatureLayer,G-GraphicsLayer\r\n \"url\": \"https://gistest1.odot.state.or.us/arcgis1006/rest/services/ames/ames/MapServer/31\",\r\n \"outFields\": [\"*\"],\r\n \"LayerColor\" : { type: \"simple-fill\", color: [ 255, 204, 153, 0.9 ], style: \"solid\", outline: { color: \"red\", width: 1 } },\r\n \"HighlightColor\" : { type: \"simple-fill\", color: [ 0, 255, 255, 0.1 ], style: \"solid\", outline: { color: \"red\", width: 1 } },\r\n \"InfoTemplate\" :[{type: \"fields\", fieldInfos: [{ fieldName: \"County\", label: \"County\" }, { label: \"MapNumber\" }, { fieldName: \"Taxlot\", label: \"Taxlot\" },{ fieldName: \"MapTaxlot\", label: \"MapTaxlot\" }] }],\r\n \"Key\": \"TaxLot\",\r\n \"id\":\"3\",\r\n \"GridTemplate\": [{\"field\":\"OBJECTID\",\"label\":\"OBJECTID\",\"sortable\":true,\"hidden\":true},\r\n {\"field\":\"Taxlot\",\"label\":\"Taxlot\",\"sortable\":true},\r\n {\"field\":\"MapTaxlot\",\"label\":\"MapTaxlot\",\"sortable\":true, colSpan: 2 },\r\n {\"field\":\"MapNumber\",\"label\":\"MapNumber\",\"sortable\":true},\r\n {\"field\":\"County\",\"label\":\"County\",\"sortable\":true}],\r\n \"EditorTemplate\" : []\r\n },\r\n {\r\n \"ExtentZoom\": true,//CenterAndZoom after load\r\n \"title\": \"Grant County Taxlots \",\r\n \"type\": \"F\",//F-FeatureLayer,G-GraphicsLayer\r\n \"url\": \"https://gistest1.odot.state.or.us/arcgis1006/rest/services/ames/ames/MapServer/32\",\r\n \"outFields\": [\"*\"],\r\n \"LayerColor\" : { type: \"simple-fill\", color: [ 255, 204, 153, 0.9 ], style: \"solid\", outline: { color: \"red\", width: 1 } },\r\n \"HighlightColor\" : { type: \"simple-fill\", color: [ 0, 255, 255, 0.1 ], style: \"solid\", outline: { color: \"red\", width: 1 } },\r\n \"InfoTemplate\" :[{type: \"fields\", fieldInfos: [{ fieldName: \"County\", label: \"County\" }, { label: \"MapNumber\" }, { fieldName: \"Taxlot\", label: \"Taxlot\" },{ fieldName: \"MapTaxlot\", label: \"MapTaxlot\" }] }],\r\n \"Key\": \"TaxLot\",\r\n \"id\":\"4\",\r\n \"GridTemplate\": [{\"field\":\"OBJECTID\",\"label\":\"OBJECTID\",\"sortable\":true,\"hidden\":true},\r\n {\"field\":\"Taxlot\",\"label\":\"Taxlot\",\"sortable\":true},\r\n {\"field\":\"MapTaxlot\",\"label\":\"MapTaxlot\",\"sortable\":true, colSpan: 2 },\r\n {\"field\":\"MapNumber\",\"label\":\"MapNumber\",\"sortable\":true},\r\n {\"field\":\"County\",\"label\":\"County\",\"sortable\":true}],\r\n \"EditorTemplate\" : []\r\n },\r\n {\r\n \"ExtentZoom\": true,//CenterAndZoom after load\r\n \"title\": \"Harney County Taxlots\",\r\n \"type\": \"F\",//F-FeatureLayer,G-GraphicsLayer\r\n \"url\": \"https://gistest1.odot.state.or.us/arcgis1006/rest/services/ames/ames/MapServer/33\",\r\n \"outFields\": [\"*\"],\r\n \"LayerColor\" : { type: \"simple-fill\", color: [ 255, 204, 153, 0.9 ], style: \"solid\", outline: { color: \"red\", width: 1 } },\r\n \"HighlightColor\" : { type: \"simple-fill\", color: [ 0, 255, 255, 0.1 ], style: \"solid\", outline: { color: \"red\", width: 1 } },\r\n \"InfoTemplate\" :[{type: \"fields\", fieldInfos: [{ fieldName: \"County\", label: \"County\" }, { label: \"MapNumber\" }, { fieldName: \"Taxlot\", label: \"Taxlot\" },{ fieldName: \"MapTaxlot\", label: \"MapTaxlot\" }] }],\r\n \"Key\": \"TaxLot\",\r\n \"id\":\"5\",\r\n \"GridTemplate\": [{\"field\":\"OBJECTID\",\"label\":\"OBJECTID\",\"sortable\":true,\"hidden\":true},\r\n {\"field\":\"Taxlot\",\"label\":\"Taxlot\",\"sortable\":true},\r\n {\"field\":\"MapTaxlot\",\"label\":\"MapTaxlot\",\"sortable\":true, colSpan: 2 },\r\n {\"field\":\"MapNumber\",\"label\":\"MapNumber\",\"sortable\":true},\r\n {\"field\":\"County\",\"label\":\"County\",\"sortable\":true}],\r\n \"EditorTemplate\" : []\r\n },\r\n {\r\n \"ExtentZoom\": true,//CenterAndZoom after load\r\n \"title\": \"Jackson County Taxlots \",\r\n \"type\": \"F\",//F-FeatureLayer,G-GraphicsLayer\r\n \"url\": \"https://gistest1.odot.state.or.us/arcgis1006/rest/services/ames/ames/MapServer/34\",\r\n \"outFields\": [\"*\"],\r\n \"LayerColor\" : { type: \"simple-fill\", color: [ 255, 204, 153, 0.9 ], style: \"solid\", outline: { color: \"red\", width: 1 } },\r\n \"HighlightColor\" : { type: \"simple-fill\", color: [ 0, 255, 255, 0.1 ], style: \"solid\", outline: { color: \"red\", width: 1 } },\r\n \"InfoTemplate\" :[{type: \"fields\", fieldInfos: [{ fieldName: \"County\", label: \"County\" }, { label: \"MapNumber\" }, { fieldName: \"Taxlot\", label: \"Taxlot\" },{ fieldName: \"MapTaxlot\", label: \"MapTaxlot\" }] }],\r\n \"Key\": \"TaxLot\",\r\n \"id\":\"6\",\r\n \"GridTemplate\": [{\"field\":\"OBJECTID\",\"label\":\"OBJECTID\",\"sortable\":true,\"hidden\":true},\r\n {\"field\":\"Taxlot\",\"label\":\"Taxlot\",\"sortable\":true},\r\n {\"field\":\"MapTaxlot\",\"label\":\"MapTaxlot\",\"sortable\":true, colSpan: 2 },\r\n {\"field\":\"MapNumber\",\"label\":\"MapNumber\",\"sortable\":true},\r\n {\"field\":\"County\",\"label\":\"County\",\"sortable\":true}],\r\n \"EditorTemplate\" : []\r\n },\r\n {\r\n \"ExtentZoom\": true,//CenterAndZoom after load\r\n \"title\": \"Jefferson County Taxlots \",\r\n \"type\": \"F\",//F-FeatureLayer,G-GraphicsLayer\r\n \"url\": \"https://gistest1.odot.state.or.us/arcgis1006/rest/services/ames/ames/MapServer/35\",\r\n \"outFields\": [\"*\"],\r\n \"LayerColor\" : { type: \"simple-fill\", color: [ 255, 204, 153, 0.9 ], style: \"solid\", outline: { color: \"red\", width: 1 } },\r\n \"HighlightColor\" : { type: \"simple-fill\", color: [ 0, 255, 255, 0.1 ], style: \"solid\", outline: { color: \"red\", width: 1 } },\r\n \"InfoTemplate\" :[{type: \"fields\", fieldInfos: [{ fieldName: \"County\", label: \"County\" }, { label: \"MapNumber\" }, { fieldName: \"Taxlot\", label: \"Taxlot\" },{ fieldName: \"MapTaxlot\", label: \"MapTaxlot\" }] }],\r\n \"Key\": \"TaxLot\",\r\n \"id\":\"7\",\r\n \"GridTemplate\": [{\"field\":\"OBJECTID\",\"label\":\"OBJECTID\",\"sortable\":true,\"hidden\":true},\r\n {\"field\":\"Taxlot\",\"label\":\"Taxlot\",\"sortable\":true},\r\n {\"field\":\"MapTaxlot\",\"label\":\"MapTaxlot\",\"sortable\":true, colSpan: 2 },\r\n {\"field\":\"MapNumber\",\"label\":\"MapNumber\",\"sortable\":true},\r\n {\"field\":\"County\",\"label\":\"County\",\"sortable\":true}],\r\n \"EditorTemplate\" : []\r\n },\r\n {\r\n \"ExtentZoom\": true,//CenterAndZoom after load\r\n \"title\": \"Klamath Tax Parcels\",\r\n \"type\": \"F\",//F-FeatureLayer,G-GraphicsLayer\r\n \"url\": \"https://gistest1.odot.state.or.us/arcgis1006/rest/services/ames/ames/MapServer/36\",\r\n \"outFields\": [\"*\"],\r\n \"LayerColor\" : { type: \"simple-fill\", color: [ 255, 204, 153, 0.9 ], style: \"solid\", outline: { color: \"red\", width: 1 } },\r\n \"HighlightColor\" : { type: \"simple-fill\", color: [ 0, 255, 255, 0.1 ], style: \"solid\", outline: { color: \"red\", width: 1 } },\r\n \"InfoTemplate\" :[{type: \"fields\", fieldInfos: [{ fieldName: \"County\", label: \"County\" }, { label: \"MapNumber\" }, { fieldName: \"Taxlot\", label: \"Taxlot\" },{ fieldName: \"MapTaxlot\", label: \"MapTaxlot\" }] }],\r\n \"Key\": \"TaxLot\",\r\n \"id\":\"8\",\r\n \"GridTemplate\": [{\"field\":\"OBJECTID\",\"label\":\"OBJECTID\",\"sortable\":true,\"hidden\":true},\r\n {\"field\":\"Taxlot\",\"label\":\"Taxlot\",\"sortable\":true},\r\n {\"field\":\"MapTaxlot\",\"label\":\"MapTaxlot\",\"sortable\":true, colSpan: 2 },\r\n {\"field\":\"MapNumber\",\"label\":\"MapNumber\",\"sortable\":true},\r\n {\"field\":\"County\",\"label\":\"County\",\"sortable\":true}],\r\n \"EditorTemplate\" : []\r\n },\r\n {\r\n \"ExtentZoom\": true,//CenterAndZoom after load\r\n \"title\": \"Lake County Taxlots \",\r\n \"type\": \"F\",//F-FeatureLayer,G-GraphicsLayer\r\n \"url\": \"https://gistest1.odot.state.or.us/arcgis1006/rest/services/ames/ames/MapServer/37\",\r\n \"outFields\": [\"*\"],\r\n \"LayerColor\" : { type: \"simple-fill\", color: [ 255, 204, 153, 0.9 ], style: \"solid\", outline: { color: \"red\", width: 1 } },\r\n \"HighlightColor\" : { type: \"simple-fill\", color: [ 0, 255, 255, 0.1 ], style: \"solid\", outline: { color: \"red\", width: 1 } },\r\n \"InfoTemplate\" :[{type: \"fields\", fieldInfos: [{ fieldName: \"County\", label: \"County\" }, { label: \"MapNumber\" }, { fieldName: \"Taxlot\", label: \"Taxlot\" },{ fieldName: \"MapTaxlot\", label: \"MapTaxlot\" }] }],\r\n \"Key\": \"TaxLot\",\r\n \"id\":\"9\",\r\n \"GridTemplate\": [{\"field\":\"OBJECTID\",\"label\":\"OBJECTID\",\"sortable\":true,\"hidden\":true},\r\n {\"field\":\"Taxlot\",\"label\":\"Taxlot\",\"sortable\":true},\r\n {\"field\":\"MapTaxlot\",\"label\":\"MapTaxlot\",\"sortable\":true, colSpan: 2 },\r\n {\"field\":\"MapNumber\",\"label\":\"MapNumber\",\"sortable\":true},\r\n {\"field\":\"County\",\"label\":\"County\",\"sortable\":true}],\r\n \"EditorTemplate\" : []\r\n },\r\n {\r\n \"ExtentZoom\": true,//CenterAndZoom after load\r\n \"title\": \"Lincoln County Taxlots \",\r\n \"type\": \"F\",//F-FeatureLayer,G-GraphicsLayer\r\n \"url\": \"https://gistest1.odot.state.or.us/arcgis1006/rest/services/ames/ames/MapServer/38\",\r\n \"outFields\": [\"*\"],\r\n \"LayerColor\" : { type: \"simple-fill\", color: [ 255, 204, 153, 0.9 ], style: \"solid\", outline: { color: \"red\", width: 1 } },\r\n \"HighlightColor\" : { type: \"simple-fill\", color: [ 0, 255, 255, 0.1 ], style: \"solid\", outline: { color: \"red\", width: 1 } },\r\n \"InfoTemplate\" :[{type: \"fields\", fieldInfos: [{ fieldName: \"County\", label: \"County\" }, { label: \"MapNumber\" }, { fieldName: \"Taxlot\", label: \"Taxlot\" },{ fieldName: \"MapTaxlot\", label: \"MapTaxlot\" }] }],\r\n \"Key\": \"TaxLot\",\r\n \"id\":\"10\",\r\n \"GridTemplate\": [{\"field\":\"OBJECTID\",\"label\":\"OBJECTID\",\"sortable\":true,\"hidden\":true},\r\n {\"field\":\"Taxlot\",\"label\":\"Taxlot\",\"sortable\":true},\r\n {\"field\":\"MapTaxlot\",\"label\":\"MapTaxlot\",\"sortable\":true, colSpan: 2 },\r\n {\"field\":\"MapNumber\",\"label\":\"MapNumber\",\"sortable\":true},\r\n {\"field\":\"County\",\"label\":\"County\",\"sortable\":true}],\r\n \"EditorTemplate\" : []\r\n },\r\n {\r\n \"ExtentZoom\": true,//CenterAndZoom after load\r\n \"title\": \"Tillamook County Taxlots \",\r\n \"type\": \"F\",//F-FeatureLayer,G-GraphicsLayer\r\n \"url\": \"https://gistest1.odot.state.or.us/arcgis1006/rest/services/ames/ames/MapServer/39\",\r\n \"outFields\": [\"*\"],\r\n \"LayerColor\" : { type: \"simple-fill\", color: [ 255, 204, 153, 0.9 ], style: \"solid\", outline: { color: \"red\", width: 1 } },\r\n \"HighlightColor\" : { type: \"simple-fill\", color: [ 0, 255, 255, 0.1 ], style: \"solid\", outline: { color: \"red\", width: 1 } },\r\n \"InfoTemplate\" :[{type: \"fields\", fieldInfos: [{ fieldName: \"County\", label: \"County\" }, { label: \"MapNumber\" }, { fieldName: \"Taxlot\", label: \"Taxlot\" },{ fieldName: \"MapTaxlot\", label: \"MapTaxlot\" }] }],\r\n \"Key\": \"TaxLot\",\r\n \"id\":\"11\",\r\n \"GridTemplate\": [{\"field\":\"OBJECTID\",\"label\":\"OBJECTID\",\"sortable\":true,\"hidden\":true},\r\n {\"field\":\"Taxlot\",\"label\":\"Taxlot\",\"sortable\":true},\r\n {\"field\":\"MapTaxlot\",\"label\":\"MapTaxlot\",\"sortable\":true, colSpan: 2 },\r\n {\"field\":\"MapNumber\",\"label\":\"MapNumber\",\"sortable\":true},\r\n {\"field\":\"County\",\"label\":\"County\",\"sortable\":true}],\r\n \"EditorTemplate\" : []\r\n },\r\n {\r\n \"ExtentZoom\": true,//CenterAndZoom after load\r\n \"title\": \"Wheeler County Taxlots \",\r\n \"type\": \"F\",//F-FeatureLayer,G-GraphicsLayer\r\n \"url\": \"https://gistest1.odot.state.or.us/arcgis1006/rest/services/ames/ames/MapServer/40\",\r\n \"outFields\": [\"*\"],\r\n \"LayerColor\" : { type: \"simple-fill\", color: [ 255, 204, 153, 0.9 ], style: \"solid\", outline: { color: \"red\", width: 1 } },\r\n \"HighlightColor\" : { type: \"simple-fill\", color: [ 0, 255, 255, 0.1 ], style: \"solid\", outline: { color: \"red\", width: 1 } },\r\n \"InfoTemplate\" :[{type: \"fields\", fieldInfos: [{ fieldName: \"County\", label: \"County\" }, { label: \"MapNumber\" }, { fieldName: \"Taxlot\", label: \"Taxlot\" },{ fieldName: \"MapTaxlot\", label: \"MapTaxlot\" }] }],\r\n \"Key\": \"TaxLot\",\r\n \"id\":\"12\",\r\n \"GridTemplate\": [{\"field\":\"OBJECTID\",\"label\":\"OBJECTID\",\"sortable\":true,\"hidden\":true},\r\n {\"field\":\"Taxlot\",\"label\":\"Taxlot\",\"sortable\":true},\r\n {\"field\":\"MapTaxlot\",\"label\":\"MapTaxlot\",\"sortable\":true, colSpan: 2 },\r\n {\"field\":\"MapNumber\",\"label\":\"MapNumber\",\"sortable\":true},\r\n {\"field\":\"County\",\"label\":\"County\",\"sortable\":true}],\r\n \"EditorTemplate\" : []\r\n }\r\n\r\n ],\r\n \"FeatureLayers\":{\r\n \"POINT\":\"http://development.delasoft.com:8443/arcgis/rest/services/EPS/MasterTable_Geom_Service/FeatureServer/0\",\r\n \"MULTIPOINT\":\"http://development.delasoft.com:8443/arcgis/rest/services/EPS/MasterTable_Geom_Service/FeatureServer/1\",\r\n \"LINE\":\"http://development.delasoft.com:8443/arcgis/rest/services/EPS/MasterTable_Geom_Service/FeatureServer/2\",\r\n \"POLYGON\":\"http://development.delasoft.com:8443/arcgis/rest/services/EPS/MasterTable_Geom_Service/FeatureServer/3\",\r\n \"LayerIndex\":2\r\n },\r\n \"MasterLookupFields\":[\r\n {\r\n Id:0,\r\n 'ServiceUrl': 'https://gistest1.odot.state.or.us/arcgis1006/rest/services/ames/ames/MapServer/26/query',\r\n 'FieldKey':'REGION_GISID',\r\n 'NameReference':'REG_NO',\r\n 'ValueReference':'REG_NO'\r\n },\r\n {\r\n Id:1,\r\n 'ServiceUrl': 'https://gistest1.odot.state.or.us/arcgis1006/rest/services/ames/ames/MapServer/25/query',\r\n 'FieldKey':'DISTRICT_GISID',\r\n 'NameReference':'DISTRICT',\r\n 'ValueReference':'DISTRICT'\r\n },\r\n {\r\n Id:2,\r\n 'ServiceUrl': 'https://gistest1.odot.state.or.us/arcgis1006/rest/services/ames/ames/MapServer/41/query',\r\n 'FieldKey':'SITE_GISID',\r\n 'NameReference':'CNTY_NAME',\r\n 'ValueReference':'OBJECTID'\r\n }\r\n ],\r\n \"FieldsData\":[\r\n {\r\n \"Fieldkey\":\"MAP_CENTER_LATITUDE\",\r\n \"FieldValue\":\"\"\r\n },\r\n {\r\n \"Fieldkey\":\"MAP_CENTER_LONGITUDE\",\r\n \"FieldValue\":\"\"\r\n },\r\n {\r\n \"Fieldkey\":\"PROPOSED_MAP_CENTER_LATITUDE\",\r\n \"FieldValue\":\"\"\r\n },\r\n {\r\n \"Fieldkey\":\"PROPOSED_MAP_CENTER_LONGITUDE\",\r\n \"FieldValue\":\"\"\r\n },\r\n {\r\n \"Fieldkey\":\"POINT_GEOM_OBJECT_ID\",\r\n \"FieldValue\":0\r\n },\r\n {\r\n \"Fieldkey\":\"PROPOSED_POINT_GEOM_OBJECT_ID\",\r\n \"FieldValue\":0\r\n },\r\n {\r\n \"Fieldkey\":\"LINE_GEOM_OBJECT_ID\",\r\n \"FieldValue\":0\r\n },\r\n {\r\n \"Fieldkey\":\"PROPOSED_LINE_GEOM_OBJECT_ID\",\r\n \"FieldValue\":0\r\n },\r\n {\r\n \"Fieldkey\":\"POLYGON_GEOM_OBJECT_ID\",\r\n \"FieldValue\":0\r\n },\r\n {\r\n \"Fieldkey\":\"PROPOSED_POLYGON_GEOM_OBJECT_ID\",\r\n \"FieldValue\":0\r\n },\r\n {\r\n \"Fieldkey\":\"MULTIPOINT_GEOM_OBJECT_ID\",\r\n \"FieldValue\":0\r\n },\r\n {\r\n \"Fieldkey\":\"PROPOSED_MULTIPOINT_GEOM_OBJECT_ID\",\r\n \"FieldValue\":0\r\n },\r\n {\r\n \"Fieldkey\":\"TAX_PARCEL_IDS\",\r\n \"FieldValue\":''\r\n },\r\n {\r\n \"Fieldkey\":\"TAX_PARCEL_IDS_GEOM\",\r\n \"FieldValue\":''\r\n },\r\n {\r\n \"Fieldkey\":\"PRIMARY_TAX_PARCEL_IDS\",\r\n \"FieldValue\":''\r\n },\r\n {\r\n \"Fieldkey\":\"ADC_MAP_GRID_NO\",\r\n \"FieldValue\":''\r\n },\r\n {\r\n \"Fieldkey\":\"CENTER_GEOM_OBJECT_ID\",\r\n \"FieldValue\":0\r\n },\r\n {\r\n \"Fieldkey\":\"PROPOSED_CENTER_GEOM_OBJECT_ID\",\r\n \"FieldValue\":0\r\n },\r\n {\r\n \"Fieldkey\":\"LATITUDE_ROAD_POSITION\",\r\n \"FieldValue\":\"\"\r\n },\r\n {\r\n \"Fieldkey\":\"LONGITUDE_ROAD_POSTION\",\r\n \"FieldValue\":\"\"\r\n },\r\n ],\r\n \"MapSettings\":{\r\n\r\n },\r\n //\"MultipleLocationData\":[], // Specific to KEPT project for stroing the multiple location data, if any.\r\n \"UserId\":\"1\"\r\n }\r\n}\r\n\r\n\r\nexport const DefaultMapSettingsSinglePoint = {\r\n \"HASHKEY\":\"1213456789055\",\r\n \"IsInternal\":\"N\",\r\n \"IsAllowingInternalEdit\":\"Y\",\r\n \"IsAllowingInternalToEditPoints\":\"Y\",\r\n \"IsAllowingInternalToEditLines\":\"Y\",\r\n \"IsAllowingInternalToEditPolygons\":\"Y\",\r\n \"IsAllowingInternalToEditPointsSignleOrMultiple\":\"Y\",\r\n \"IsAllowingInternalToEditLinesSignleOrMultiple\":\"Y\",\r\n \"IsAllowingInternalToEditPolygonsSignleOrMultiple\":\"Y\",\r\n \"IsAllowingExternalEdit\":\"Y\",\r\n \"IsAllowingExternalToEditPoints\":\"Y\",\r\n \"IsAllowingExternalToEditLines\":\"Y\",\r\n \"IsAllowingExternalToEditPolygons\":\"Y\",\r\n \"IsAllowingExternalToEditPointsSignleOrMultiple\":\"Y\",\r\n \"IsAllowingExternalToEditLinesSignleOrMultiple\":\"Y\",\r\n \"IsAllowingExternalToEditPolygonsSignleOrMultiple\":\"Y\",\r\n \"IsTwoWayMultiPoint\":\"N\"\r\n}\r\n\r\nexport const DefaultMapSettingsMultiPoint = {\r\n \"HASHKEY\":\"1213456789055\",\r\n \"IsInternal\":\"N\",\r\n \"IsAllowingInternalEdit\":\"Y\",\r\n \"IsAllowingInternalToEditPoints\":\"Y\",\r\n \"IsAllowingInternalToEditLines\":\"Y\",\r\n \"IsAllowingInternalToEditPolygons\":\"Y\",\r\n \"IsAllowingInternalToEditPointsSignleOrMultiple\":\"Y\",\r\n \"IsAllowingInternalToEditLinesSignleOrMultiple\":\"Y\",\r\n \"IsAllowingInternalToEditPolygonsSignleOrMultiple\":\"Y\",\r\n \"IsAllowingExternalEdit\":\"Y\",\r\n \"IsAllowingExternalToEditPoints\":\"Y\",\r\n \"IsAllowingExternalToEditLines\":\"Y\",\r\n \"IsAllowingExternalToEditPolygons\":\"Y\",\r\n \"IsAllowingExternalToEditPointsSignleOrMultiple\":\"Y\",\r\n \"IsAllowingExternalToEditLinesSignleOrMultiple\":\"Y\",\r\n \"IsAllowingExternalToEditPolygonsSignleOrMultiple\":\"Y\",\r\n \"IsTwoWayMultiPoint\":\"Y\"\r\n}","import { getEnvVariable } from '../../modules/environmentalList'\r\nimport { NewApplicationSidebar } from './newapplicationsidebar'\r\nconst newapplicationreview = {\r\n type: 'eps-newapplication-review',\r\n key: 'newnewapplicationformreview',\r\n options: {\r\n \"routes\": [\r\n {\r\n \"route\": \"/Administration/applicationreview\",\r\n \"routeParams\": \":routeid\",\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \":routeid1\"\r\n },\r\n ],\r\n drawerprops: NewApplicationSidebar,\r\n navigationpath: {\r\n path: {\r\n url: '/Administration/applicationreview'\r\n }\r\n },\r\n allurls: {\r\n inquiryrecordData: {\r\n get: {\r\n url: getEnvVariable('Application') + `/api/Application/ApplicationByAppId` + `${localStorage.getItem('impersonate') ? '?impersonateFor=' + localStorage.getItem('impersonate') : ''}`\r\n }\r\n },\r\n allSites: {\r\n get: {\r\n url: getEnvVariable('Admin') + `/api/Sites/` + getEnvVariable('ModuleKey') + `/All/Active`\r\n }\r\n },\r\n allRegions: {\r\n get: {\r\n url: getEnvVariable('Admin') + `/api/Regions/` + getEnvVariable('ModuleKey') + `/All/Active`\r\n }\r\n },\r\n allDistricts: {\r\n get: {\r\n url: getEnvVariable('Admin') + `/api/Districts/` + getEnvVariable('ModuleKey') + `/All/Active`\r\n }\r\n },\r\n DomainValues: {\r\n get: {\r\n url: getEnvVariable('Application') + `/api/Domains/values?domainkey=`\r\n }\r\n },\r\n allProcessTypes: {\r\n get: {\r\n url: getEnvVariable('Application') + `/api/Domains/values?domainkey=WHAT_WOULD_YOU_LIKE_TO_DO_`\r\n }\r\n },\r\n generalApplicationTypes: {\r\n get: {\r\n url: getEnvVariable('Application') + `/api/Domains/values?domainkey=GENERAL_APPLICATION_TYPE`\r\n }\r\n },\r\n permittypes: {\r\n get: {\r\n url: getEnvVariable('Application') + `/api/Domains/values?domainkey=APPLICATION_SUB_TYPE`\r\n }\r\n },\r\n outdoorpermittypes: {\r\n get: {\r\n url: getEnvVariable('Application') + `/api/Domains/values?domainkey=OUTDOOR_PERMIT_SUBTYPE`\r\n }\r\n },\r\n encroachmentpermittypes: {\r\n get: {\r\n url: getEnvVariable('Application') + `/api/Domains/values?domainkey=ENCROACHMENT_SUB_TYPE`\r\n }\r\n },\r\n applicationProcessTypes: {\r\n get: {\r\n url: getEnvVariable('Application') + `/api/Domains/values?domainkey=PROCESS_TYPES`\r\n }\r\n },\r\n allSectionFields: {\r\n get: {\r\n url: getEnvVariable('Application') + `/api/Application/Fields`\r\n }\r\n },\r\n AllOwnerInternal: {\r\n get: {\r\n url: getEnvVariable('MasterAdmin') + `/api/CompanyInternal/All/Active`\r\n\r\n }\r\n }, AllOwnerInternalSearch: {\r\n get: {\r\n url: getEnvVariable('MasterAdmin') + `/api/CompanyInternal/Search`\r\n\r\n }\r\n },\r\n TermsAndConditions: {\r\n get: {\r\n url: getEnvVariable('AdminConfig') + `/api/SitePermitTypeTermsAndCond`,\r\n routeProps: {}\r\n }\r\n },\r\n SitePermitTypesData: {\r\n get: {\r\n url: getEnvVariable('AdminConfig') + `/api/${getEnvVariable('ModuleKey')}SitePermitTypes`,\r\n routeProps: {}\r\n }\r\n },\r\n // domainValues: {\r\n // get: {\r\n // url: getEnvVariable('Application')+`/api/Domains/values?domainkey=`\r\n // }\r\n // },\r\n updateNewApplication: {\r\n put: {\r\n url: getEnvVariable('Application') + `/api/Application/Update`\r\n }\r\n },\r\n OfficialUser: {\r\n get: {\r\n url: getEnvVariable('MasterAdmin') + `/api/CompanyInternal/`\r\n }\r\n },\r\n Preparer: {\r\n get: {\r\n url: getEnvVariable('MasterAdmin') + `/api/CompanyInternal/`\r\n }\r\n },\r\n ContactType: {\r\n get: {\r\n url: getEnvVariable('MasterAdmin') + `/api/CompanyInternal/`\r\n }\r\n },\r\n SelectUser: {\r\n get: {\r\n url: getEnvVariable('MasterAdmin') + `/api/CompanyInternal/`\r\n }\r\n },\r\n SitePermitTypesRegions: {\r\n get: {\r\n url: getEnvVariable('AdminConfig') + `/api/SitePermitTypesConfig/Regions/Active`\r\n }\r\n },\r\n SitePermitTypesSites: {\r\n get: {\r\n url: getEnvVariable('AdminConfig') + `/api/SitePermitTypes/Sites/Active`\r\n }\r\n },\r\n SitePermitTypesBasedOnConfigType: {\r\n get: {\r\n url: getEnvVariable('AdminConfig') + `/api/SitePermitTypesConfig/ApplicationTypes/Active`\r\n }\r\n },\r\n SitePermitTypesValue: {\r\n get: {\r\n url: getEnvVariable('Admin') + `/api/MasterPermitTypes/`\r\n }\r\n },\r\n SitePermitTypesSubModuleKey: {\r\n get: {\r\n url: getEnvVariable('AdminConfig') + `/api/SitePermitTypes/SubModuleKey/Active`, //${getEnvVariable('ModuleKey')}\r\n routeProps: {}\r\n },\r\n\r\n },\r\n Validationurl: {\r\n get: {\r\n url: getEnvVariable('Application') + `/api/SitePermitTypeValidation/`\r\n }\r\n },\r\n AllFields: {\r\n get: {\r\n url: getEnvVariable('Application') + `/api/SitePermitSectionFieldsView/AllFields`\r\n }\r\n },\r\n\r\n AddNewApplication: {\r\n post: {\r\n url: getEnvVariable('Application') + `/api/Application/Add/`\r\n }\r\n },\r\n\r\n AllFieldsGroupBySection: {\r\n get: {\r\n url: getEnvVariable('Application') + `/api/SitePermitSectionFieldsView/AllFieldsGroupBySection`\r\n }\r\n },\r\n OwnerAddress: {\r\n get: {\r\n url: getEnvVariable('MasterAdmin') + `/api/CompanyInternal`,\r\n routeProps: {\r\n\r\n }\r\n }\r\n },\r\n StatusChange: {\r\n put: {\r\n url: getEnvVariable('Application') + `/api/Application/UpdateStatus/`\r\n }\r\n },\r\n StatusChangeNotification: {\r\n get: {\r\n url: getEnvVariable('Application') + `/api/Application/TemplateSearchByDomainKey/`\r\n }\r\n },\r\n\r\n GetApplicationStatus: {\r\n get: {\r\n url: getEnvVariable('Application') + `/api/Domains/values?domainkey=APPLICATION_STATUS&domainid=0`\r\n }\r\n },\r\n\r\n GetSubmissionType: {\r\n get: {\r\n url: getEnvVariable('Application') + `/api/Domains/values?domainkey=SUBMISSION_TYPE&domainid=0`\r\n }\r\n },\r\n\r\n GetApplicationProcessType: {\r\n get: {\r\n url: getEnvVariable('Application') + `/api/Domains/values?domainkey=WHAT_WOULD_YOU_LIKE_TO_DO_&domainid=0`\r\n }\r\n },\r\n\r\n GetResolutionStatus: {\r\n get: {\r\n url: getEnvVariable('Application') + `/api/Domains/values?domainkey=RESOLUTION_STATUS&domainid=0`\r\n }\r\n },\r\n\r\n GetPermitStatus: {\r\n get: {\r\n url: getEnvVariable('Application') + `/api/Domains/values?domainkey=PERMIT_STATUS&domainid=0`\r\n }\r\n },\r\n\r\n Duplicate: {\r\n get: {\r\n url: '${Application}/api/Application/Duplicate'\r\n }\r\n },\r\n AdminDomainValues: {\r\n get: {\r\n url: getEnvVariable('MasterAdmin') + `/api/Domains/values?domainkey=`\r\n }\r\n },\r\n Domainsurl: {\r\n get: {\r\n url: getEnvVariable('Application') + `/api/DomainsMapper/ByParams`,\r\n routeProps: {}\r\n }\r\n },\r\n Getallsubmodules: {\r\n get: {\r\n url: getEnvVariable('MasterAdmin') + `/api/module/` + getEnvVariable('ModuleKey') + `/submodule/All/Active/IsConfigurable`\r\n }\r\n },\r\n TownVillageCity:{\r\n get:{\r\n url: getEnvVariable('Application') + `/api/Domains/values?domainkey=MUNICIPALITY_TYPE`\r\n }\r\n },\r\n InterStateHwy:{\r\n get:{\r\n url: getEnvVariable('Application') + `/api/Domains/values?domainkey=INTERSTATE_HIGHWAY_NETWORK`\r\n }\r\n },\r\n InterStateHwyNumber:{\r\n get:{\r\n url: getEnvVariable('Application') + `/api/Domains/values?domainkey=INTERSTATE_HIGHWAY_NETWORK`\r\n }\r\n }\r\n\r\n\r\n }\r\n },\r\n\r\n\r\n}\r\n\r\nexport default newapplicationreview","\r\nimport React, { Fragment } from 'react';\r\nimport Dropdown from '../../../core/controls/components/dropdown';\r\nimport TextBox from '../../../core/controls/components/textbox';\r\n\r\n\r\nconst extraProps = {\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Id'\r\n },\r\n}\r\n\r\nconst domainProps = {\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Value'\r\n },\r\n}\r\n\r\nconst domainPropsHWY = {\r\n transformProps: {\r\n label: 'name',\r\n value: 'value'\r\n },\r\n}\r\n\r\n\r\n\r\nexport default function WRSApplicationProperties({ handleFieldChange, loadFieldsData, state }) {\r\n\r\n return <Fragment>\r\n <div className='d-flex col- sm-12 mx-1'>\r\n <Dropdown disabled={state.disable} className=\"col-3 mx-3\" extraProps={extraProps} items={state.applicationsite || []} handleFieldValue={handleFieldChange} value={state.SITE_ID} label={'County'} name={'SITE_ID'} />\r\n <Dropdown disabled={state.disable} className=\"col-3 mx-3\" extraProps={domainProps} items={state.townvillagecity || []} handleFieldValue={handleFieldChange} value={state.townvillagecityvalue} label={'Town/Village/City'} name={'TOWN_VILLAGE_CITY'} />\r\n <Dropdown disabled={!state.interstatehwyvalue} className=\"col-3 mx-3\" extraProps={domainPropsHWY} items={state.interstatehwy|| []} handleFieldValue={handleFieldChange} value={state.interstatehwyvalue} label={'Interstate/Hwy'} name={'INTERSTATE_HIGHWAY_NETWORK'} />\r\n </div>\r\n </Fragment>\r\n}\r\n\r\n\r\n//value={((state.applicationregion || []).find(each => String(each.Id) === String(state.REGION_ID)) || {}).Name}","export const AMESMAPFIELDS = [\r\n 'MAP_CENTER_LATITUDE',\r\n 'MAP_CENTER_LONGITUDE',\r\n 'PROPOSED_MAP_CENTER_LATITUDE',\r\n 'PROPOSED_MAP_CENTER_LONGITUDE',\r\n 'PROPOSED_POINT_GEOM_OBJECT_ID',\r\n 'LINE_GEOM_OBJECT_ID',\r\n 'PROPOSED_LINE_GEOM_OBJECT_ID',\r\n 'POLYGON_GEOM_OBJECT_ID',\r\n 'PROPOSED_POLYGON_GEOM_OBJECT_ID',\r\n 'MULTIPOINT_GEOM_OBJECT_ID',\r\n 'PROPOSED_MULTIPOINT_GEOM_OBJECT_ID',\r\n 'CENTER_GEOM_OBJECT_ID',\r\n 'PROPOSED_CENTER_GEOM_OBJECT_ID']\r\nexport const AMESADDFEILDVALUES = [{\r\n 'WHAT_WOULD_YOU_LIKE_TO_DO_': '',\r\n // 'SUBMISSION_TYPE': 'E',\r\n 'PERMIT_SITE': 160,\r\n 'APPLICATION_STATUS': 1,\r\n 'REGION_ID': '',\r\n 'subModuleKey': '',\r\n 'PROCESS_TYPE': '',\r\n 'SITE_ID': '1',\r\n 'MultipleLocationData': '',\r\n 'SITE_PERMIT_TYPE_ID': '',\r\n 'SUB_MODULE_ID': '',\r\n 'RECORDS_REF': '',\r\n // 'PAPER_APPLICATION_NUMBER': '',\r\n 'REFERENCE_KEY': '',\r\n 'TAX_PARCEL_IDS': '',\r\n 'PRIMARY_TAX_PARCEL_IDS': '',\r\n 'TOWN_VILLAGE_CITY':'',\r\n 'INTERSTATE_HWY':''\r\n}]\r\n\r\nexport const AMESStateFields = [{\r\n REGION_ID: '', DISTRICT_ID: '', EXISTING_COUNTY: '', PROPOSED_COUNTY: '', SITE_ID: '', CREATE_APPLICATION: 'AE', 'PROCESS_TYPE': '', 'SITE_ID': '',\r\n WHAT_WOULD_YOU_LIKE_TO_DO_: '', whatwldTypes: [], permittypes: [], submoduletypes: [], processtype: [],\r\n refWhatWouldYouLikeToDo: '',TOWN_VILLAGE_CITY:'',INTERSTATE_HWY:'',\r\n}]\r\n","\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport Drawer from '@material-ui/core/Drawer';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport React, { useEffect, useState } from 'react';\r\nimport TemplateForm from '../../core/modules/template/template';\r\nimport { createRequest, requestApi as requestApiNew } from '../../core/controls/helpers/rest';\r\n\r\nexport default function TermsAndCond({ handleAgreement, handleClose, agreement, url, SITE_PERMIT_TYPE_ID, openTerms }) {\r\n\r\n const [editorState, seteditor] = useState();\r\n const [tAndC, settAndC] = useState();\r\n\r\n useEffect(() => {\r\n let arrayUrl = [\r\n { url: url.get.url + '/' + SITE_PERMIT_TYPE_ID, type: 'get' },\r\n ]\r\n Promise.all(arrayUrl.map(each => requestApiNew(createRequest(each)))).then(res => {\r\n const [tAndC] = res\r\n if (tAndC && tAndC.Id) {\r\n seteditor(parseInt(atob(tAndC.TermsAndConditionsStr))); settAndC(tAndC)\r\n }\r\n }).catch(ex => {\r\n\r\n })\r\n }, [])\r\n\r\n\r\n return <Drawer anchor=\"right\" PaperProps={{ style: { width: window.innerWidth - 520 } }} classes={{ paper: window.innerWidth - 200 || '' }} onClose={handleClose} open={openTerms}>\r\n <AppBar position=\"static\" color='secondary'>\r\n <Toolbar variant=\"dense\">\r\n <Typography variant=\"h6\" color=\"inherit\" >\r\n Terms and Conditions\r\n </Typography>\r\n </Toolbar>\r\n </AppBar>\r\n {editorState && <TemplateForm templateId={editorState} isEnabled={false} mentions={null} entryData={tAndC} showcomments={false}\r\n hasSubject={false} isadmin={true} handleTemplateId={() => { }} />}\r\n <FormControlLabel\r\n control={<Checkbox\r\n checked={agreement || false}\r\n onChange={handleAgreement}\r\n color='primary'\r\n />}\r\n label='I have read and agree to the Terms and Conditions'\r\n labelPlacement='end'\r\n className=\"col\"\r\n />\r\n </Drawer>\r\n}","import { getEnvVariable } from '../../modules/environmentalList';\r\n//import { requestApi } from '../../form/utilities'\r\nimport { createRequest, requestApi } from '../../core/controls/helpers/rest';\r\nimport { GetLookUpValues } from '../../core/modules/map/eps/lookupDataTaskKEPT'; \r\n\r\n\r\nexport function GetGISFields(sitepermittypeid) {\r\n return new Promise((resolve, reject) => {\r\n let datakeys = [{\r\n url: getEnvVariable('Application') + `/api/SitePermitSectionFieldsView/AllFieldsGroupBySection/${sitepermittypeid}`,\r\n \"routeProps\": [],\r\n type: 'get' \r\n }]\r\n Promise.all(datakeys.map(each => requestApi(createRequest(each, each.body, null)))).then(totalsections => {\r\n console.log(totalsections, ' Get');\r\n let sectionKeys = Object.keys(totalsections);\r\n let sections = totalsections;\r\n let GISDomainLookupFields = [];\r\n let GISLookupData = []\r\n sectionKeys.forEach((each, index) => {\r\n let allSectionNames = Object.keys(sections[each])\r\n allSectionNames.map((sectionname,inx) =>{ \r\n sections[each][sectionname].sort((a, b) => a.FieldRowDisplayOrder - b.FieldRowDisplayOrder).map((section, i) => {\r\n const { FieldKey, Key, FieldValue, FieldName, FieldDisplayName, UIFieldTypeComponent, FieldDescription,\r\n SectionName, SectionKey, FieldDecimalPlace, FieldContextHelp,FieldRowDisplayOrder, FieldColDisplayOrder, \r\n FieldMin, FieldMax, IsHidden, FieldFetchDomainKey, FieldFetchGeomType, IsLabel, IsInternal, \r\n FieldIsSpellCheck, FieldDomainKey, FieldProps, FieldIsBuffer, FieldBufferDistance, FieldBufferUnits } = section;\r\n if (FieldFetchDomainKey) {\r\n let eachDomainLookup = {\r\n FieldFetchDomainKey: FieldFetchDomainKey,\r\n FieldFetchGeomType: FieldFetchGeomType,\r\n FieldKey: FieldKey,\r\n FieldIsBuffer: FieldIsBuffer,\r\n FieldBufferDistance: FieldBufferDistance,\r\n FieldBufferUnits: FieldBufferUnits,\r\n UIFieldTypeComponent: UIFieldTypeComponent\r\n }\r\n GISDomainLookupFields.push(eachDomainLookup);\r\n //GISKeys[FieldKey] = each.FieldFetchDomainKey\r\n }\r\n })\r\n }) \r\n })\r\n console.log(GISDomainLookupFields);\r\n let allkeys = GISDomainLookupFields.map(each => each.FieldFetchDomainKey);\r\n GetGISFieldsDomainLookup(allkeys).then((results) => {\r\n GISDomainLookupFields.forEach(function (master) {\r\n results && results[0].forEach(function (domain) {\r\n if (domain.Layer && domain.Layer.Url && master.FieldFetchDomainKey === domain.Key) {\r\n let obj = {\r\n 'Id': domain.Id, //MasterField\r\n 'ServiceUrl': domain.Layer.Url, //Domain\r\n 'FieldKey': master.FieldKey, //Masterfield\r\n 'NameReference': domain.NameReference,//Domain\r\n 'ValueReference': domain.ValueReference, //Domain,\r\n 'FieldFetchGeomType': master.FieldFetchGeomType,\r\n 'FieldIsBuffer': master.FieldIsBuffer,\r\n 'FieldBufferDistance': master.FieldBufferDistance,\r\n 'FieldBufferUnits': master.FieldBufferUnits,\r\n 'UIFieldTypeComponent': master.UIFieldTypeComponent, //-- Feild UI type for tectbox only name should come\r\n 'Token': domain.Layer.Token,\r\n 'TokenExpiration': domain.Layer.TokenExpiration,\r\n 'NameFormat':domain.NameFormat,\r\n 'ValueFormat':domain.ValueFormat\r\n }\r\n GISLookupData.push(obj)\r\n }\r\n });\r\n });\r\n console.log(GISLookupData);\r\n resolve(GISLookupData);\r\n })\r\n }).catch(error => {\r\n console.error('Error in saving multiple locations')\r\n console.log(error);\r\n reject(error)\r\n }) \r\n })\r\n}\r\n\r\nexport function GetGISFieldValues(sitepermittypeid, coordinates) {\r\n return new Promise((resolve, reject) => {\r\n let datakeys = [{\r\n url: getEnvVariable('Application') + `/api/SitePermitSectionFieldsView/AllFieldsGroupBySection/${sitepermittypeid}`,\r\n \"routeProps\": [],\r\n type: 'get' \r\n }]\r\n Promise.all(datakeys.map(each => requestApi(createRequest(each, each.body, null)))).then(totalsections => {\r\n console.log(totalsections, ' Get');\r\n let sectionKeys = Object.keys(totalsections);\r\n let sections = totalsections;\r\n let GISDomainLookupFields = [];\r\n let GISLookupData = []\r\n sectionKeys.forEach((each, index) => {\r\n let allSectionNames = Object.keys(sections[each])\r\n allSectionNames.map((sectionname,inx) =>{ \r\n sections[each][sectionname].sort((a, b) => a.FieldRowDisplayOrder - b.FieldRowDisplayOrder).map((section, i) => {\r\n const { FieldKey, Key, FieldValue, FieldName, FieldDisplayName, UIFieldTypeComponent, FieldDescription,\r\n SectionName, SectionKey, FieldDecimalPlace, FieldContextHelp,FieldRowDisplayOrder, FieldColDisplayOrder, \r\n FieldMin, FieldMax, IsHidden, FieldFetchDomainKey, FieldFetchGeomType, IsLabel, IsInternal, \r\n FieldIsSpellCheck, FieldDomainKey, FieldProps, FieldIsBuffer, FieldBufferDistance, FieldBufferUnits } = section;\r\n if (FieldFetchDomainKey) {\r\n let eachDomainLookup = {\r\n FieldFetchDomainKey: FieldFetchDomainKey,\r\n FieldFetchGeomType: FieldFetchGeomType,\r\n FieldKey: FieldKey,\r\n FieldIsBuffer: FieldIsBuffer,\r\n FieldBufferDistance: FieldBufferDistance,\r\n FieldBufferUnits: FieldBufferUnits,\r\n UIFieldTypeComponent: UIFieldTypeComponent\r\n }\r\n GISDomainLookupFields.push(eachDomainLookup);\r\n //GISKeys[FieldKey] = each.FieldFetchDomainKey\r\n }\r\n })\r\n }) \r\n })\r\n console.log(GISDomainLookupFields);\r\n let allkeys = GISDomainLookupFields.map(each => each.FieldFetchDomainKey);\r\n GetGISFieldsDomainLookup(allkeys).then((results) => {\r\n GISDomainLookupFields.forEach(function (master) {\r\n results[0].forEach(function (domain) {\r\n if (domain.Layer && domain.Layer.Url && master.FieldFetchDomainKey === domain.Key) {\r\n let obj = {\r\n 'Id': domain.Id, //MasterField\r\n 'ServiceUrl': domain.Layer.Url, //Domain\r\n 'FieldKey': master.FieldKey, //Masterfield\r\n 'NameReference': domain.NameReference,//Domain\r\n 'ValueReference': domain.ValueReference, //Domain,\r\n 'FieldFetchGeomType': master.FieldFetchGeomType,\r\n 'FieldIsBuffer': master.FieldIsBuffer,\r\n 'FieldBufferDistance': master.FieldBufferDistance,\r\n 'FieldBufferUnits': master.FieldBufferUnits,\r\n 'UIFieldTypeComponent': master.UIFieldTypeComponent, //-- Feild UI type for tectbox only name should come\r\n 'Token': domain.Layer.Token,\r\n 'TokenExpiration': domain.Layer.TokenExpiration,\r\n 'NameFormat':domain.NameFormat,\r\n 'ValueFormat':domain.ValueFormat\r\n }\r\n GISLookupData.push(obj)\r\n }\r\n });\r\n });\r\n console.log(GISLookupData);\r\n //Send for fetching fields data\r\n GetLookUpValues(coordinates, GISLookupData).then(lookupres => {\r\n console.log(lookupres);\r\n resolve(lookupres);\r\n })\r\n })\r\n \r\n }).catch(error => {\r\n console.error('Error in saving multiple locations')\r\n console.log(error);\r\n reject(error)\r\n }) \r\n })\r\n}\r\n\r\nexport function GetGISFieldsDomainLookup(keys){\r\n return new Promise((resolve, reject) => {\r\n let datakeys = [{\r\n url: getEnvVariable('Application') + '/api/Domains/Keys?domaintype=A',\r\n type: 'post',\r\n alert: true,\r\n body: keys\r\n },\r\n {\r\n url: getEnvVariable('Admin') + `/api/Layers/All/Active`,\r\n type: 'get'\r\n }]\r\n Promise.all(datakeys.map(each => requestApi(createRequest(each, each.body, null)))).then(resp => {\r\n const [domainlookup, layers] = resp;\r\n if(Array.isArray(layers)){\r\n domainlookup.forEach(each => {\r\n each.Layer = layers.find(layer => each.LayerId === layer.Id)\r\n // layers.forEach(layer => {\r\n // if(each.LayerId === layer.Id){ \r\n // each.Layer.Token = layer.Token;\r\n // each.Layer.TokenExpiration = layer.TokenExpiration;\r\n // }\r\n // })\r\n }) \r\n }\r\n resolve([domainlookup])\r\n }).catch(error => {\r\n console.error('Error in saving multiple locations')\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","\r\n\r\nimport Fab from '@material-ui/core/Fab';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport TourIcon from '@material-ui/icons/LocalLibraryTwoTone';\r\nimport TermIcon from '@material-ui/icons/PlaylistAddCheck';\r\nimport StartIcon from '@material-ui/icons/Subtitles';\r\nimport React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { bindActionCreators } from 'redux';\r\nimport { showTour } from '../../core/actions';\r\nimport DefaultSettings from '../../core/controls/components/settings';\r\nimport { createRequest, requestApi as requestApiNew } from '../../core/controls/helpers/rest';\r\nimport { requestApi } from '../../core/modules/form/utilities';\r\nimport Map from '../../core/modules/map/map';\r\nimport { amesmap } from '../../json/map/ameslandingmap';\r\nimport SummaryJSON from '../../json/newapplication/newapplicationreview';\r\nimport { getEnvVariable } from '../../modules/environmentalList';\r\nimport WRSApplicationProperties from './create_record/wrs';\r\nimport { AMESMAPFIELDS, AMESStateFields } from './newentrance_fieldvalues';\r\nimport TermsAndCond from './termsconditions'\r\nimport { GetGISFields } from './gisdomainlookuphelper';\r\nimport { green, red } from '@material-ui/core/colors';\r\nimport Icon from '@material-ui/core/Icon';\r\nconst _ = require('lodash');\r\n\r\n\r\n/**\r\n*********************************************************\r\nDescription: Initializaing the application.\r\n formcontrolsconfigs: contains the intial configuration details of all the fields\r\n changedFieldName: Contains the fields whose values has been changed by the user.\r\n mapofficialusernames: Map id's of all offical users for the a particular owner to FirstName and LastName. This FirstName and LastName are used to prefill the\r\n fields in the owner section.\r\n mapIdPermitTypeId: maps siteid to permittype ids.\r\n applicationsite: Contains all sites.\r\n applicationsitevalue: Selected site value.\r\n sitepermittype: contains the sitepermittypes for a particular site.\r\n SITE_PERMIT_TYPE_ID. selected sitepermittype value.\r\n officialfirstname/officiallastname: handles owner section prefilling values with owner address. FirstName and LastName\r\n are filled with officialfirstname and officiallastname.\r\n\r\n\r\nRequired props: Urls for official user, preparer, owner address, active sites, sitepermittypesites, validations, section fields, domain values, status change, fileupload.\r\nlimitations : Can be used only to create new application.\r\n*********************************************************\r\n**/\r\nclass NewEntrancePermitApplication extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.mapIdPermitTypeId = {};\r\n if (!this.props.createrecordopen)\r\n this.state = {\r\n subModuleKey: props.match.params.key, mapchangedFieldName: [],\r\n applicationsite: [], applicationsitevalue: '', sitepermittype: [],\r\n formControls: {}, header: {}, map: false, taxparcelexp: '', applicationregion: [], applicationdistricts: [],\r\n mapClear: false, fetchGeomType: ['E'], userId: 1, mapsettings: { ...amesmap }, SITE_PERMIT_TYPE_ID: '', SUB_MODULE_ID: '', changedFieldvalues: {},\r\n isAdd: false, APPROACH_ADDRESS: '', MultipleLocationData: [], clearsketch: false, currentsitepermittypeid: null, configType: this.props.accessPermissions.configType,\r\n GISDomainLookupFields: [],townvillagecity:[],townvillagecityvalue:'',interstatehwy:[],interstatehwyvalue:'', disable:true,\r\n //fields\r\n ...AMESStateFields\r\n }\r\n else {\r\n this.state = this.props.createState\r\n }\r\n this.TemplateForm = React.createRef()\r\n }\r\n /**\r\n *********************************************************\r\n Description: Get all sites.\r\n Required props: Url for getting all sites.\r\n limitations: N/A\r\n *********************************************************\r\n **/\r\n componentDidMount() {\r\n const { allSites, allRegions, allProcessTypes, allDistricts, SitePermitTypesSubModuleKey, applicationProcessTypes, generalApplicationTypes,TownVillageCity,InterStateHwy } = SummaryJSON.options.allurls;\r\n if (this.props.match.params.key) {\r\n localStorage.setItem('TOUR_KEY', this.props.match.params.key)\r\n }\r\n let configurl = allSites;\r\n if (this.props.accessPermissions.configType === 'R')\r\n configurl = allRegions;\r\n else if (this.props.accessPermissions.configType === 'D')\r\n configurl = allDistricts;\r\n let arrayUrl = [\r\n { url: configurl.get.url, type: 'get' },\r\n { url: SitePermitTypesSubModuleKey.get.url, type: 'get' },\r\n { url: allDistricts.get.url, type: 'get' },\r\n { url: allSites.get.url, type: 'get' },\r\n { url :TownVillageCity.get.url, type: 'get'},\r\n { url: InterStateHwy.get.url, type: 'get'}\r\n ]\r\n if (getEnvVariable('ModuleKey') === 'WRS')\r\n arrayUrl.push({ url: applicationProcessTypes.get.url, type: 'get' }, { url: allProcessTypes.get.url, type: 'get' }, { url: generalApplicationTypes.get.url, type: 'get' })\r\n Promise.all(arrayUrl.map(each => requestApiNew(createRequest(each)))).then(res => {\r\n const [configs, types, districts, sites, townvillagecity=[],interstatehwy=[], proocess = [], whatwould = [], generalappltypes = []] = res;\r\n this.setState({\r\n applicationsite: sites,\r\n applicationregion: configs,\r\n applicationdistricts: districts,\r\n sitepermittype: types && types.length > 0 && types.filter(each => each.SubModuleKey === this.state.subModuleKey),\r\n townvillagecity:townvillagecity,\r\n interstatehwy: Array.isArray(interstatehwy) ? interstatehwy.sort((a, b) => a.name.localeCompare(b.name)) : [],\r\n processtype: proocess,\r\n whatwldTypes: whatwould,\r\n generalapptypes: generalappltypes,\r\n mapsettings: { ...amesmap }\r\n }, () => { this.loadMapSectionDefaultInformation(); this.getDefaultSitePermitType(this.state.sitepermittype) })\r\n }).catch(ex => {\r\n console.error(ex)\r\n })\r\n }\r\n getDefaultSitePermitType = (res) => {\r\n let defaultsitepermittypeid = ''\r\n if (res && res.length > 0) {\r\n let defaultvalue = _.find(res, { 'IsDefault': 'Y', 'SubModuleKey': this.state.subModuleKey });\r\n defaultsitepermittypeid = defaultvalue ? defaultvalue.Id : ''\r\n let mapconfig = this.state.mapsettings;\r\n let def_sitepermittypeid = defaultvalue ? defaultsitepermittypeid : res[0].Id;\r\n mapconfig.options.SITE_PERMIT_TYPE_ID = def_sitepermittypeid;\r\n this.setState({ SITE_PERMIT_TYPE_ID: def_sitepermittypeid, mapsettings: mapconfig },\r\n this.getSiteandPermitInfo('SITE_PERMIT_TYPE_ID', mapconfig.options.SITE_PERMIT_TYPE_ID));\r\n this.getSitePermitTypeGisFieldsData(def_sitepermittypeid);\r\n }\r\n }\r\n getSitePermitTypeGisFieldsData(sitepermittypeid) {\r\n if (sitepermittypeid) {\r\n GetGISFields(sitepermittypeid).then(res => {\r\n if (res && Array.isArray(res)) {\r\n console.log('Gis fields data for the current sitepermit type', res);\r\n this.setState({ GISDomainLookupFields: res });\r\n }\r\n })\r\n }\r\n }\r\n loadMapSectionDefaultInformation = () => {\r\n let mapdata = { ...amesmap };\r\n mapdata.options.FieldsData.forEach((each, index) => {\r\n each.FieldValue = ''\r\n })\r\n if (mapdata.options && mapdata.options.LayerOptions.length > 0)\r\n mapdata.options.LayerOptions[0].url = \"\"\r\n if (mapdata.options && mapdata.options.tasks && mapdata.options.tasks.TaxParcels) {\r\n mapdata.options.tasks.TaxParcels.url = \"\";\r\n mapdata.options.tasks.TaxParcels.queryexpression = \"\";\r\n }\r\n this.setState({ mapsettings: mapdata, REGION_ID: '', SITE_PERMIT_TYPE_ID: '', WHAT_WOULD_YOU_LIKE_TO_DO_: '' });\r\n }\r\n\r\n addTaxParcels = (taxparcelexp) => {\r\n let premapsettings = this.state.mapsettings\r\n if (taxparcelexp) {\r\n //Find index of specific object using findIndex method.\r\n let objIndex = premapsettings.options.FieldsData.findIndex((obj => obj.Fieldkey === \"TAX_PARCEL_IDS\"));\r\n if (objIndex > 0)\r\n premapsettings.options.FieldsData[objIndex].FieldValue = taxparcelexp\r\n this.setState({\r\n taxparcelexp: taxparcelexp, mapsettings: premapsettings,\r\n taxparcelallexp: taxparcelexp, ['TAX_PARCEL_IDS']: taxparcelexp\r\n // changedFieldvalues: { ...this.state.changedFieldvalues, ['TAX_PARCEL_IDS']: taxparcelexp }\r\n })\r\n }\r\n else this.setState({ taxparcelexp: '', ['TAX_PARCEL_IDS']: taxparcelexp, }) //changedFieldvalues: { ...this.state.changedFieldvalues, ['TAX_PARCEL_IDS']: '' }\r\n }\r\n getSiteandPermitInfo = (name, value) => {\r\n const { SitePermitTypesRegions, } = SummaryJSON.options.allurls\r\n const read = [{\r\n url: SitePermitTypesRegions.get.url,\r\n type: 'get'\r\n },]\r\n let regioninitials\r\n let configId = this.state.configType === 'R' ? this.state.REGION_ID : this.state.configType === 'S' ? this.state.EXISTING_COUNTY : this.state.DISTRICT_ID;\r\n if (name === 'EXISTING_COUNTY' || name === 'REGION_ID' || name === 'SITE_ID') {\r\n requestApi({ get: { url: SitePermitTypesRegions.get.url, routeProps: {} } }, value).then(retresults => {\r\n let results = retresults || [];\r\n let siteinitials = this.state.applicationregion.find(each => {\r\n return each.Id === configId\r\n }).Initials\r\n results.forEach(each => {\r\n const { Id, PermitTypeId } = each\r\n this.mapIdPermitTypeId[Id] = PermitTypeId\r\n })\r\n this.setState({\r\n sitepermittype: results,\r\n regionInitials: siteinitials\r\n })\r\n })\r\n }\r\n }\r\n handleFieldChange = (event) => {\r\n const { name, value } = event.target\r\n const interstateprops = {}\r\n let mapconfig = this.state.mapsettings;\r\n if (name === 'SITE_PERMIT_TYPE_ID') {\r\n mapconfig.options.SITE_PERMIT_TYPE_ID = value\r\n }\r\n if(name==='TOWN_VILLAGE_CITY')\r\n {\r\n this.onTypeSlectionChange(value, false)\r\n }\r\n if(name==='INTERSTATE_HWY' || name==='INTERSTATE_HIGHWAY_NETWORK')\r\n {\r\n this.onTypeSlectionChange(value, false);\r\n interstateprops['interstatehwyvalue'] = value;\r\n interstateprops['INTERSTATE_HWY'] = value;\r\n interstateprops['UI_INTERSTATE_HWY'] = value;\r\n }\r\n this.setState({\r\n [name]: value, agreement: name === 'SITE_PERMIT_TYPE_ID' ?\r\n false : this.state.agreement, clearsketch: name === 'SITE_PERMIT_TYPE_ID' ? !this.state.clearsketch : this.state.clearsketch,\r\n mapsettings: mapconfig,\r\n ...interstateprops\r\n }, () => {\r\n if (name === 'SITE_PERMIT_TYPE_ID') {\r\n this.getSitePermitTypeGisFieldsData(event.target.value);\r\n }\r\n if (name === 'REGION_ID' || name === 'EXISTING_COUNTY' || name === 'SITE_PERMIT_TYPE_ID' || name === 'INQUIRY_SITE_PERMIT_TYPE_ID') {\r\n this.getSiteandPermitInfo(name, value);\r\n this.onTypeSlectionChange(false)\r\n }\r\n else\r\n if (name === 'WHAT_WOULD_YOU_LIKE_TO_DO_') {\r\n this.onTypeSlectionChange(value, false)\r\n }\r\n });\r\n }\r\n moveToSections = () => {\r\n const { mapchangedFieldName, WHAT_WOULD_YOU_LIKE_TO_DO_ } = this.state;\r\n let proceed = true;\r\n let tempchangedFieldvalues = this.state;\r\n let fetchGeomType = this.getFetchGeomType(WHAT_WOULD_YOU_LIKE_TO_DO_);\r\n //Remove un used county data\r\n if (fetchGeomType.length === 1) {\r\n if (fetchGeomType.includes(\"E\")) {\r\n tempchangedFieldvalues['PROPOSED_COUNTY'] = \"\"\r\n } else if (fetchGeomType.includes(\"P\")) {\r\n tempchangedFieldvalues['EXISTING_COUNTY'] = \"\"\r\n }\r\n }\r\n if (this.state['CREATE_APPLICATION'] && this.state['CREATE_APPLICATION'] != 'AE') {\r\n tempchangedFieldvalues['SITE_ID'] = this.state.EXISTING_COUNTY\r\n }\r\n if (this.state['CREATE_APPLICATION'] && this.state['CREATE_APPLICATION'] == 'AE') {\r\n tempchangedFieldvalues['INQUIRY_STATUS'] = this.state.APPLICATION_STATUS\r\n }\r\n // tempchangedFieldvalues['state'] = this.state\r\n if (getEnvVariable('AccessPortal') === 'E')\r\n proceed = this.state.agreement ? true : false\r\n if (proceed)\r\n this.setState({\r\n ...tempchangedFieldvalues,\r\n }, () => this.props.LoadInitialPage(tempchangedFieldvalues))\r\n else {\r\n if (DefaultSettings.getAlert() != null)\r\n DefaultSettings.getAlert().show('Please Agree Terms and Conditions to Proceed', 'error');\r\n }\r\n // }\r\n }\r\n //Auto Populate Initail Page Dropdown Values --Wrs-Project\r\n InitialPageDropDown(name,valueobj){\r\n if(name==='MUNICIPALITY_TYPE')\r\n {\r\n let m_value =valueobj.MUNICIPALITY_TYPE\r\n if(m_value=='C'){\r\n return this.setState({townvillagecityvalue:'1'});\r\n }\r\n else if(m_value=='T'){\r\n return this.setState({townvillagecityvalue:'3'});\r\n }\r\n else if(m_value=='V'){\r\n return this.setState({townvillagecityvalue:'2'});\r\n }\r\n }\r\n \r\n }\r\n onSaveorUpdateMapResponse = (maplocation) => {\r\n console.log('onSaveorUpdateMapResponse-------------');\r\n // let tempchangedFieldvalues = this.state.changedFieldvalues;\r\n let premapsettings = this.state.mapsettings\r\n const maplocationkeys = Object.keys(maplocation)\r\n const newheader = {}, newformControls = {}, newchangedFieldName = {}\r\n if (maplocationkeys && maplocationkeys.length > 0) {\r\n console.log('Map information selected-------------', maplocation)\r\n // if (DefaultSettings.getAlert() != null)\r\n // DefaultSettings.getAlert().show('Map points Saved Successfully', 'success');\r\n maplocation['PROPOSED_MAP_CENTER_LATITUDE'] = maplocation['PROPOSED_MAP_CENTER_LATITUDE'] ? maplocation['PROPOSED_MAP_CENTER_LATITUDE'].toFixed(6) : maplocation['PROPOSED_MAP_CENTER_LATITUDE']\r\n maplocation['PROPOSED_MAP_CENTER_LONGITUDE'] = maplocation['PROPOSED_MAP_CENTER_LONGITUDE'] ? maplocation['PROPOSED_MAP_CENTER_LONGITUDE'].toFixed(6) : maplocation['PROPOSED_MAP_CENTER_LONGITUDE']\r\n maplocation['MAP_CENTER_LATITUDE'] = maplocation['MAP_CENTER_LATITUDE'] ? maplocation['MAP_CENTER_LATITUDE'].toFixed(6) : maplocation['MAP_CENTER_LATITUDE']\r\n maplocation['MAP_CENTER_LONGITUDE'] = maplocation['MAP_CENTER_LONGITUDE'] ? maplocation['MAP_CENTER_LONGITUDE'].toFixed(6) : maplocation['MAP_CENTER_LONGITUDE']\r\n \r\n maplocationkeys.forEach(each => {\r\n newheader[each] = maplocation[each]\r\n premapsettings.options.FieldsData.map(fd => {\r\n if (fd.Fieldkey === each) {\r\n fd.FieldValue = maplocation[each];\r\n }\r\n })\r\n newformControls[each] = { ...this.state.formControls[each], value: maplocation[each] }\r\n newchangedFieldName[each] = maplocation[each]\r\n })\r\n if (maplocation['SELECT_LAYER_URL']) {\r\n newchangedFieldName['TAX_PARCEL_LAYER'] = maplocation['SELECT_LAYER_URL'];\r\n if (premapsettings.options.tasks && premapsettings.options.tasks.TaxParcels) {\r\n premapsettings.options.tasks.TaxParcels.url = maplocation[\"SELECT_LAYER_URL\"]\r\n premapsettings.options.tasks.TaxParcels.queryexpression = maplocation[\"TAX_PARCEL_IDS\"]\r\n premapsettings.options.tasks.TaxParcels[\"PRIMARY_TAX_PARCEL_IDS\"] = maplocation[\"PRIMARY_TAX_PARCEL_IDS\"]\r\n }\r\n }\r\n if(getEnvVariable('ModuleKey')==='WRS' && maplocation)\r\n {\r\n this.InitialPageDropDown('MUNICIPALITY_TYPE',maplocation);// Method Call for Auto Populate Dropdown Values --Wrs-Project\r\n //this.InitialPageDropDown('INTERSTATE_HWY',maplocation)\r\n }\r\n this.setState({\r\n header: { ...this.state.header, ...newheader },\r\n formControls: { ...this.state.formControls, ...newformControls },\r\n mapchangedFieldName: { ...this.state.formControls, ...newformControls },\r\n mapsettings: premapsettings,\r\n mapClear: false,\r\n interstatehwyvalue:maplocation.INTERSTATE_HWY,// Interstate Highway value in wrs initial page\r\n ...newchangedFieldName\r\n })\r\n } else {\r\n let mapdata = { ...amesmap };\r\n mapdata.options.FieldsData.forEach((each, index) => {\r\n each.FieldValue = ''\r\n })\r\n this.clearMapChangedFields();\r\n this.setState({\r\n header: { ...this.state.header, ...newheader },\r\n formControls: {},\r\n mapchangedFieldName: {},\r\n mapsettings: mapdata,\r\n mapClear: false\r\n })\r\n }\r\n }\r\n clearMapChangedFields() {\r\n const { changedFieldvalues } = this.state;\r\n let tempchangedFieldvalues = {};\r\n AMESMAPFIELDS.map(each => {\r\n tempchangedFieldvalues[each] = ''\r\n })\r\n this.setState({ ...tempchangedFieldvalues })\r\n }\r\n getMapInformation = () => {\r\n return {\r\n ...this.state.mapchangedFieldName,\r\n taxparcelexp: this.state.taxparcelexp,\r\n taxparcelallexp: this.state.taxparcelexp,\r\n isnewObjectId: this.state.isnewObjectId ? 1 : 0\r\n }\r\n }\r\n getTaxParcelCustomNumber = (regionid) => {\r\n const { applicationregion } = this.state\r\n if (getEnvVariable('ModuleKey') === 'AMES') {\r\n let current = applicationregion.find(each => each.Id.toString() === regionid.toString())\r\n if (current)\r\n return current.Initials + ('000000000000').substring(current.Initials.length);\r\n }\r\n return ''\r\n }\r\n setStateMapInformation = (data) => {\r\n console.log('setStateMapInformation----');\r\n let tempchangedFieldvalues = {};\r\n if (data && Object.keys(data).length > 0 && Object.keys(data)[0] !== 'undefined') {\r\n let regionid = this.getByGISlayerID(\"region\", data[\"REGION_GISID\"]);\r\n let districtid = ((this.state.applicationdistricts || []).find(each => each.Id === this.getByGISlayerID(\"district\", data[\"DISTRICT_GISID\"])) || {}).Id;\r\n let siteid = this.getByGISlayerID(\"site\", data[\"SITE_GISID\"]);\r\n let taxparclelayer = data[\"TAX_PARCEL_LAYER\"] || this.state['TAX_PARCEL_LAYER']\r\n let approachaddress = data[\"APPROACH_ADDRESS\"];\r\n let taxparcelexp = data[\"TAX_PARCEL_IDS\"];\r\n //.toFixex(6)\r\n if (!this.state[\"TAX_PARCEL_IDS\"]) {\r\n data[\"TAX_PARCEL_IDS\"] = this.getTaxParcelCustomNumber(regionid);\r\n }\r\n let configType = this.props.accessPermissions.configType\r\n let configId = siteid\r\n let subModuleKey = this.state.subModuleKey;\r\n //let isuserhasaccess = this.hasUserConfigAccess(siteid+'', this.props.accessPermissions)\r\n\r\n // if (regionid !== this.state.REGION_ID || districtid !== this.state.DISTRICT_ID || siteid !== this.state.EXISTING_COUNTY) \r\n let isadmin = this.props.accessPermissions.isAdmin;\r\n\r\n let isuserhasaccess = this.hasUserConfigAccess(siteid+'', this.props.accessPermissions)\r\n if(!isuserhasaccess && isadmin && isadmin != \"Y\")\r\n {\r\n DefaultSettings.getAlert().show('Access Denied for Selected County.', 'error');\r\n this.setState({\r\n mapClear: true,\r\n REGION_ID: '',\r\n SITE_ID:'',\r\n DISTRICT_ID: '',\r\n EXISTING_COUNTY: '',\r\n PROPOSED_COUNTY: ''\r\n });\r\n }\r\n else if (regionid !== this.state.REGION_ID || districtid !== this.state.DISTRICT_ID || siteid !== this.state.EXISTING_COUNTY) \r\n {\r\n tempchangedFieldvalues['REGION_ID'] = regionid\r\n tempchangedFieldvalues['DISTRICT_ID'] = districtid\r\n tempchangedFieldvalues['SITE_ID'] = siteid\r\n tempchangedFieldvalues['EXISTING_COUNTY'] = siteid\r\n tempchangedFieldvalues['PROPOSED_COUNTY'] = siteid\r\n tempchangedFieldvalues['TAX_PARCEL_LAYER'] = taxparclelayer\r\n tempchangedFieldvalues['APPROACH_ADDRESS'] = approachaddress\r\n const { SitePermitTypesBasedOnConfigType } = SummaryJSON.options.allurls;\r\n requestApi({ get: { url: SitePermitTypesBasedOnConfigType.get.url + \"/\" + configId + \"/\" + configType + \"/\" + subModuleKey, routeProps: {} } }, null).\r\n then(results => {\r\n let regioninitials = \"\";\r\n results.forEach(each => {\r\n const { Id, PermitTypeId } = each\r\n this.mapIdPermitTypeId[Id] = PermitTypeId\r\n })\r\n let premapsettings = this.state.mapsettings;\r\n if (premapsettings.options && premapsettings.options.LayerOptions.length > 0) {\r\n premapsettings.options.LayerOptions[0].url = taxparclelayer\r\n }\r\n \r\n this.setState({\r\n ...tempchangedFieldvalues,\r\n sitepermittype: results,\r\n regionInitials: regioninitials,\r\n REGION_ID: regionid,\r\n DISTRICT_ID: districtid,\r\n EXISTING_COUNTY: siteid,\r\n PROPOSED_COUNTY: siteid,\r\n SITE_ID: siteid,\r\n TAX_PARCEL_LAYER: taxparclelayer,\r\n APPROACH_ADDRESS: approachaddress,\r\n ...data,\r\n mapsettings: premapsettings,\r\n taxparcelallexp: taxparcelexp,\r\n })\r\n }).catch(ex => { })\r\n }\r\n } else {\r\n this.showUserAccessAlert();\r\n }\r\n }\r\n showUserAccessAlert(){\r\n if (DefaultSettings.getAlert() != null) {\r\n DefaultSettings.getAlert().show('User do not have access or Selected location is out of state boundaries.', 'error');\r\n this.setState({\r\n mapClear: true,\r\n REGION_ID: '',\r\n DISTRICT_ID: '',\r\n EXISTING_COUNTY: '',\r\n PROPOSED_COUNTY: ''\r\n });\r\n }\r\n }\r\n \r\n getByGISlayerID = (name, gisid) => {\r\n try {\r\n if (name === \"region\") {\r\n if (gisid && gisid > 0) {\r\n return this.state.applicationregion.filter(a => (a.ArcGISBoundaryId && a.ArcGISBoundaryId) == gisid)[0].Id\r\n } else return this.state[\"REGION_ID\"]\r\n } else if (name === \"district\") {\r\n if (gisid) {\r\n return this.state.applicationdistricts.filter(a => (a.ArcGISBoundaryId && a.ArcGISBoundaryId) == gisid)[0].Id\r\n } else return this.state[\"DISTRICT_ID\"]\r\n } else if (name === \"site\") {\r\n if (gisid && gisid > 0) {\r\n var gisid = gisid.replace(/^0+/,\"\"); //regex to remove 0 from start for single digit county to match argis id-Manoj Thiparapu\r\n return this.state.applicationsite.filter(a => (a.ArcGISBoundaryId && a.ArcGISBoundaryId) == gisid)[0].Id\r\n } else return this.state[\"EXISTING_COUNTY\"]\r\n }\r\n } catch (ex) {\r\n return gisid\r\n }\r\n }\r\n //Check user has access to current sitelocation\r\n hasUserConfigAccess(id, accessPermissions){\r\n let configType = accessPermissions.configType;\r\n if(configType == 'S' && accessPermissions.moduleSiteAccess){\r\n return Object.keys(accessPermissions.moduleSiteAccess).includes(id);\r\n }\r\n if(configType == 'R' && accessPermissions.moduleRegionAccess){\r\n return Object.keys(accessPermissions.moduleRegionAccess).includes(id);\r\n }\r\n if(configType == 'D' && accessPermissions.moduleDistrictAccess){\r\n return Object.keys(accessPermissions.moduleDistrictAccess).includes(id);\r\n }\r\n return false;\r\n }\r\n hasAccessToConfig(id, listarr){\r\n }\r\n taxparcelURLChange(url) {\r\n let tempmapsettings = this.state.map\r\n tempmapsettings.options.tasks.TaxParcels.url = url;\r\n this.setState({ mapsettings: { ...tempmapsettings } });\r\n }\r\n onTypeSlectionChange(mapreset, dialogconfirm) { //refvalue,\r\n // let setname = 'WHAT_WOULD_YOU_LIKE_TO_DO_'\r\n let mapset = { ...amesmap };\r\n let fetchGeomType = ''\r\n if (mapreset !== \"\") {\r\n fetchGeomType = this.getFetchGeomType(mapreset);\r\n }\r\n else {\r\n fetchGeomType = this.getFetchGeomType(-1);\r\n }\r\n if (mapreset && dialogconfirm) {\r\n mapset.options.FieldsData.forEach((each, index) => {\r\n each.FieldValue = ''\r\n })\r\n this.setState({\r\n mapchangedFieldName: {}, formControls: {}, newformControls: {},\r\n mapsettings: mapset,\r\n confirmClickedEvent: false,\r\n // [mapreset]: mapreset,\r\n mapClear: true, fetchGeomType: fetchGeomType\r\n }); //WHAT_WOULD_YOU_LIKE_TO_DO_:refvalue,\r\n } else {\r\n this.setState({\r\n mapsettings: mapset,\r\n confirmClickedEvent: false,\r\n mapClear: false, fetchGeomType: fetchGeomType\r\n }); //WHAT_WOULD_YOU_LIKE_TO_DO_: refvalue,\r\n }\r\n }\r\n getFetchGeomType(type) {\r\n //Two Points 1, //Existing 2,3, //Proposed 4,5\r\n //As Discussed with Deepa, Updated this (20/07/2022): All the time available - Exisitng and proposed pins.\r\n return ['E']\r\n }\r\n /**\r\n * loads exisiting inquiry information\r\n */\r\n loadFieldsData = () => {\r\n const { inquiryrecordData } = SummaryJSON.options.allurls;\r\n requestApi({ get: { url: inquiryrecordData.get.url, routeProps: {} } }, this.state.INQUIRY_RECORD_NUMBER).then(results => {\r\n if (results) {\r\n const data = results;\r\n this.setState({ ...data[0], ['SITE_PERMIT_TYPE_ID']: this.state.SITE_PERMIT_TYPE_ID, taxparcelallexp: 'all' }, () => {\r\n let temp = data[0]\r\n temp['SITE_PERMIT_TYPE_ID'] = this.state.SITE_PERMIT_TYPE_ID\r\n this.setMapLocationIfnformationCont(temp);\r\n })\r\n }\r\n })\r\n }\r\n setMapLocationIfnformationCont(maplocation) {\r\n console.log('setMapLocationIfnformationCont--------------');\r\n // let tempchangedFieldvalues = this.state.changedFieldvalues;\r\n let premapsettings = this.state.mapsettings\r\n if (maplocation) {\r\n //let mapsettings = { ...amesmap };\r\n const newheader = {}, newformControls = {}, newchangedFieldName = {}\r\n const maplocationkeys = Object.keys(maplocation)\r\n maplocationkeys.forEach(each => {\r\n premapsettings.options.FieldsData.map(fd => {\r\n if (fd.Fieldkey === each) {\r\n fd.FieldValue = maplocation[each];\r\n }\r\n })\r\n newformControls[each] = { ...this.state.formControls[each], value: maplocation[each] }\r\n newchangedFieldName[each] = maplocation[each]\r\n })\r\n premapsettings.options.tasks.TaxParcels.url = maplocation[\"TAX_PARCEL_LAYER\"];\r\n premapsettings.options.tasks.TaxParcels.queryexpression = maplocation[\"TAX_PARCEL_IDS\"];\r\n premapsettings.options.tasks.TaxParcels['PRIMARY_TAX_PARCEL_IDS'] = maplocation[\"PRIMARY_TAX_PARCEL_IDS\"];\r\n //this.mapsettings.options.tasks.TaxParcels.queryexpression = maplocation[\"TAX_PARCEL_IDS\"]\r\n premapsettings.options.LayerOptions[0].url = maplocation[\"TAX_PARCEL_LAYER\"]\r\n this.setState({\r\n header: { ...this.state.header, ...newheader },\r\n formControls: { ...this.state.formControls, ...newformControls },\r\n mapchangedFieldName: { ...this.state.formControls, ...newformControls },\r\n mapsettings: premapsettings, mapClear: false, userId: this.state.userId + 1,\r\n taxparcelexp: maplocation.TAX_PARCEL_IDS, taxparcelallexp: maplocation.TAX_PARCEL_IDS, ...newchangedFieldName\r\n })\r\n }\r\n }\r\n checkStartOpen = () => {\r\n const { REGION_ID,SITE_ID, PROPOSED_COUNTY, EXISTING_COUNTY, SITE_PERMIT_TYPE_ID, WHAT_WOULD_YOU_LIKE_TO_DO_, PROPOSED_MAP_CENTER_LATITUDE, PROPOSED_MAP_CENTER_LONGITUDE, MAP_CENTER_LATITUDE, MAP_CENTER_LONGITUDE } = this.state\r\n \r\n if(getEnvVariable('ModuleKey') === 'WRS'){\r\n if (this.state.subModuleKey === \"APPLICATIONS\") {\r\n return (SITE_PERMIT_TYPE_ID && SITE_ID && MAP_CENTER_LATITUDE && MAP_CENTER_LONGITUDE) ? true : false\r\n }\r\n }\r\n }\r\n getMapEdit = () => {\r\n // Without selection of what would you like to do- user can select pin information - confirmed with Deepa.\r\n // if (getEnvVariable('ModuleKey') === 'AMES') {\r\n // return this.state.WHAT_WOULD_YOU_LIKE_TO_DO_ ? true : false\r\n // }\r\n return true\r\n }\r\n\r\n render() {\r\n const { compmap } = this.props\r\n const { SITE_PERMIT_TYPE_ID, openTerms, agreement, TAX_PARCEL_LAYER, GISDomainLookupFields } = this.state\r\n return (\r\n <div className='col-sm-12'>\r\n {/* <Fab size='small' variant=\"contained\" color=\"primary\" title={'Tour'} className=\"float-md-right\" onClick={() => { this.props.showTour(true) }}>\r\n <TourIcon />\r\n </Fab> */}\r\n <Fab disabled={!this.checkStartOpen()} size='small' variant=\"contained\" color={!this.checkStartOpen() ? \"disabled\" :\"primary\"} title={'Start Record Process'} className=\"float-end startprocess my-3\"\r\n onClick={this.moveToSections} > <StartIcon /> </Fab> \r\n <div className=\"float-end\"> </div>\r\n {SITE_PERMIT_TYPE_ID && getEnvVariable('AccessPortal') == 'E' && <Fab variant=\"contained\" size='small' color=\"primary\" onClick={() => { this.setState({ openTerms: true }) }}\r\n title={'Terms and Conditions'} className=\"float-md-right termscondtions\"><TermIcon /> </Fab>} \r\n {getEnvVariable('ModuleKey') === 'WRS' && <WRSApplicationProperties handleFieldChange={this.handleFieldChange} state={this.state}\r\n loadFieldsData={this.loadFieldsData} />}\r\n {openTerms && <TermsAndCond url={SummaryJSON.options.allurls.TermsAndConditions} handleClose={() => { this.setState({ openTerms: false }) }}\r\n handleAgreement={(e) => { this.setState({ agreement: e.target.checked, openTerms: false }) }} openTerms={openTerms} agreement={agreement} SITE_PERMIT_TYPE_ID={SITE_PERMIT_TYPE_ID} />}\r\n <br />\r\n {/* <div className='row float-right pr-3'>\r\n <Icon title=\"Existing Driveway\" fontSize='small' className='float-right' style={{ color: green[600], fontSize: 15 }}>{\"square\"}</Icon>\r\n <span className='float-right pr-2' style={{ fontSize: '10px' }}>Existing Driveway</span>\r\n <Icon title=\"Proposed Driveway\" fontSize='small' className='float-right' style={{ color: red[600], fontSize: 15 }}>{\"square\"}</Icon>\r\n <span className='float-right' style={{ fontSize: '10px' }}>Proposed Driveway</span>\r\n </div> */}\r\n {this.state.mapsettings && SITE_PERMIT_TYPE_ID && <Map {...this.state.mapsettings}\r\n userId={this.state.userId} onSaveorUpdateMapResponse={this.onSaveorUpdateMapResponse} queryexpression={this.state.taxparcelallexp}\r\n selectedtaxparcel={this.state.taxparcelexp} taxparcelresponse={this.taxparcelresponse} addTaxParcels={this.addTaxParcels}\r\n setStateMapInformation={this.setStateMapInformation} SubModuleKey={this.state.subModuleKey} width={'100% '} height={'80vh'}\r\n mapClear={this.state.mapClear} fetchGeomType={this.state.fetchGeomType} canEdit={this.getMapEdit()} compmap={compmap} SITE_PERMIT_TYPE_ID={SITE_PERMIT_TYPE_ID}\r\n TAX_PARCEL_LAYER={TAX_PARCEL_LAYER}\r\n gisDomainLookupData={GISDomainLookupFields}\r\n />}\r\n </div>\r\n )\r\n }\r\n}\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ showTour }, dispatch);\r\n}\r\nNewEntrancePermitApplication = connect(null, mapActions, null, { forwardRef: true })(NewEntrancePermitApplication)\r\nexport default (withRouter(NewEntrancePermitApplication));\r\n","import { Tooltip } from '@material-ui/core';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport FormGroup from '@material-ui/core/FormGroup';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport React from 'react';\r\nimport DefaultSettings from './settings';\r\nconst _ = require('lodash');\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n root: {\r\n display: 'flex',\r\n },\r\n formControl: {\r\n //margin: theme.spacing(3),\r\n },\r\n}));\r\n\r\nexport default function CheckboxesGroup(props) {\r\n const { handleFieldValue, extraProps, shareProps, tooltip, contexthelp, disabled, IsSelectable, ...otherProps } = props\r\n const { label, helperText, required, items, error, name, fullWidth } = otherProps\r\n const { transformProps } = extraProps || {}\r\n const classes = useStyles();\r\n let tempval = props.value ? props.value.split(\",\") : [];\r\n const handleFieldChange = (e) => {\r\n let val = props.value ? props.value.split(\",\") : [];\r\n if (e.target.checked) {\r\n val.push(e.target.value)\r\n }\r\n else {\r\n val = _.remove(val, function (n) {\r\n return n != e.target.value;\r\n });\r\n }\r\n val = val.join()\r\n handleFieldValue({ target: { checked: true, value: val, name: e.target.name }, currentTarget: e.currentTarget })\r\n }\r\n\r\n const isDisabled = () => {\r\n if (IsSelectable)\r\n return IsSelectable === 'Y' ? true : false\r\n else return false\r\n }\r\n\r\n return (\r\n <div className={classes.root}>\r\n <FormControl fullWidth={fullWidth ? fullWidth : true} disabled={disabled} component=\"fieldset\" className={classes.formControl} required={required} error={error} >\r\n <small className='fw-bold'>{label} {tooltip && <Tooltip title={tooltip ? tooltip : null}\r\n placement=\"bottom-start\" ><HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em',color: '#007bff' }} onClick={(evt) => contexthelp ?\r\n DefaultSettings.showDrawer(contexthelp) : evt.preventDefault()} />\r\n </Tooltip>} </small>\r\n <FormGroup row className='text-secondary'>\r\n {\r\n items && items.map((each, index) => {\r\n const { label, value } = transformProps\r\n const text = each[label]\r\n const key = each[value]\r\n return <FormControlLabel\r\n disabled={disabled ? disabled : isDisabled()}\r\n key={key}\r\n value={key}\r\n control={<Checkbox checked={(key === props.value) || (tempval.includes(key))} onChange={handleFieldChange} name={name} />}\r\n label={text}\r\n labelPlacement=\"end\"\r\n />\r\n })\r\n }\r\n </FormGroup>\r\n {helperText && <FormHelperText>{helperText}</FormHelperText>}\r\n\r\n </FormControl>\r\n </div>\r\n );\r\n}\r\n","\r\n//import React from \"react\";\r\nimport React, { Fragment, useCallback, useEffect, useState } from 'react';\r\nimport { useParams } from \"react-router\";\r\nimport MapJson from '../../../json/map/map';\r\nimport { getEnvVariable } from \"../../../modules/environmentalList\";\r\nimport MapSection from '../../modules/map/map';\r\nimport { GetData, PostData } from \"../helpers/requests\";\r\nimport { withRouter } from 'react-router-dom';\r\nimport { bindActionCreators } from 'redux';\r\nimport { connect } from 'react-redux';\r\nimport { snackbarMessage } from '../../../core/actions';\r\nimport { SaveMultipleLocations, SaveMultipleLocationsSingle, DeleteMultipleLocations, UpdateApplicationGISFields } from '../../modules/map/eps/multipleLocationServices'\r\n\r\nfunction MapComponent(props) {\r\n const { FieldsData, MapSettings, GISLookupData, isAdd, handleMapChanges, TAX_PARCEL_LAYER, fetchGeomType, edit = true, params,\r\n MultipleLocationData, SitePermitTypeDistricts, fieldValues, statusList } = props\r\n const [clearSketch, setclearSketch] = useState(false)\r\n const [status, setStatuses] = useState(statusList || [])\r\n\r\n let MapJsonExtend = {\r\n ...MapJson,\r\n options: {\r\n ...mapJsonOptions(MapJson),\r\n ///...MapJson.options,\r\n FieldsData,\r\n MapSettings,\r\n MultipleLocationData\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (statusList && statusList.length === 0) {\r\n let url = getEnvVariable('Admin') + '/api/ApplicationStatus/Active';\r\n GetData(url).then(res => {\r\n if (res && res.length > 0)\r\n setStatuses(res)\r\n })\r\n }\r\n }, [])\r\n\r\n function mapJsonOptions(mapJson) {\r\n let mapJsonOptions = mapJson.options;\r\n let taxparcelfield = FieldsData.find(each => each.Fieldkey === \"TAX_PARCEL_LAYER\")\r\n let taxparcellayer = TAX_PARCEL_LAYER || (taxparcelfield && taxparcelfield.FieldValue ? taxparcelfield.FieldValue : \"\")\r\n if (taxparcellayer && taxparcellayer != \"\") {\r\n let taxparcelslots = FieldsData.find(each => each.Fieldkey === \"TAX_PARCEL_IDS\");\r\n if (taxparcelslots && taxparcelslots.FieldValue)\r\n mapJsonOptions.tasks.TaxParcels.queryExpression = taxparcelslots.FieldValue\r\n\r\n let primarytaxparcelslots = FieldsData.find(each => each.Fieldkey === \"PRIMARY_TAX_PARCEL_IDS\");\r\n if (primarytaxparcelslots && primarytaxparcelslots.FieldValue)\r\n mapJsonOptions.tasks.TaxParcels['PRIMARY_TAX_PARCEL_IDS'] = primarytaxparcelslots.FieldValue\r\n\r\n mapJsonOptions.tasks.TaxParcels.url = taxparcellayer;\r\n mapJsonOptions['LayerOptions'] && mapJsonOptions['LayerOptions'].push({ url: taxparcellayer, })\r\n }\r\n let sitepermittype = FieldsData.find(each => each.Fieldkey === \"SITE_PERMIT_TYPE_ID\");\r\n if (sitepermittype) {\r\n mapJsonOptions[\"SITE_PERMIT_TYPE_ID\"] = sitepermittype.FieldValue;\r\n }\r\n return mapJsonOptions;\r\n }\r\n\r\n function handleMapChange(res, wkid = '') {\r\n if (params.key === 'COLLISION') {\r\n let url = `${getEnvVariable('GDOTWhatishere')}x=${res.MAP_CENTER_LONGITUDE ? res.MAP_CENTER_LONGITUDE : (FieldsData.find(each => each.Fieldkey === 'MAP_CENTER_LONGITUDE')).FieldValue}\r\n &y=${res.MAP_CENTER_LATITUDE ? res.MAP_CENTER_LATITUDE : (FieldsData.find(each => each.Fieldkey === 'MAP_CENTER_LATITUDE')).FieldValue}&srid=${4326}`\r\n // &lat=${res.MAP_CENTER_LATITUDE}&lon=${res.MAP_CENTER_LONGITUDE}`\r\n GetData(url).then(ressearch => {\r\n res['LOCATION_TYPE'] = '5'\r\n if (ressearch.result && ressearch.result.length > 0 && ressearch.result[0].intersections && ressearch.result[0].intersections.length > 0) {\r\n res['LOCATION_TYPE'] = '5'\r\n }\r\n else {\r\n if (ressearch.result && ressearch.result.length > 0 && ressearch.result[0].road)\r\n res['LOCATION_TYPE'] = ressearch.result[0].road.RD_TYPE || '5'\r\n }\r\n handleMapChanges(res)\r\n })\r\n //LOCATION_TYPE\r\n }\r\n else handleMapChanges(res)\r\n }\r\n function multipleLocationHandler(data) {\r\n console.log('from core------', data, params);\r\n if (params && params.routeid1) {\r\n SaveMultipleLocationsSingle(data, params.routeid1).then(res => {\r\n console.log('locations saved', res)\r\n });\r\n }\r\n }\r\n\r\n function multipleLocationRangeHandler(data) {\r\n console.log('from core------', data, params);\r\n if (params && params.routeid1) {\r\n SaveMultipleLocations(data, params.routeid1).then(res => {\r\n console.log('locations saved', res)\r\n });\r\n }\r\n }\r\n\r\n function handleMapChangesWrapper(res) {\r\n if (res && Object.keys(res).length > 0 && Object.keys(res)[0] !== 'undefined') {\r\n if (res && res[\"DISTRICT_GISID\"] && (params.key === 'RECYCLERS' || params.key === 'OUTDOOR' || params.key === 'AAHVOLUNTEER'\r\n || params.key === 'ENCROACHMENTS' || params.key === 'VIOLATIONS')) {\r\n let hasdistrictvalue = SitePermitTypeDistricts.filter(a => a.ArcGISBoundaryId == res[\"DISTRICT_GISID\"])\r\n if (hasdistrictvalue.length > 0) {\r\n updateMapChanges(res)\r\n } else {\r\n setclearSketch(!clearSketch);\r\n props.snackbarMessage('Location is out of boundaries. Please Select a location within the range.', 'error');\r\n }\r\n } else {\r\n updateMapChanges(res)\r\n }\r\n } else {\r\n setclearSketch(!clearSketch);\r\n props.snackbarMessage('Location is out of boundaries. Please Select a location within the range.', 'error');\r\n }\r\n }\r\n\r\n function updateMapChanges(response) {\r\n let res = response\r\n console.log('updated map changes -------', res);\r\n res['PROPOSED_MAP_CENTER_LATITUDE'] = res['PROPOSED_MAP_CENTER_LATITUDE'] ? res['PROPOSED_MAP_CENTER_LATITUDE'].toFixed(6) : res['PROPOSED_MAP_CENTER_LATITUDE']\r\n res['PROPOSED_MAP_CENTER_LONGITUDE'] = res['PROPOSED_MAP_CENTER_LONGITUDE'] ? res['PROPOSED_MAP_CENTER_LONGITUDE'].toFixed(6) : res['PROPOSED_MAP_CENTER_LONGITUDE']\r\n res['MAP_CENTER_LATITUDE'] = res['MAP_CENTER_LATITUDE'] ? res['MAP_CENTER_LATITUDE'].toFixed(6) : res['MAP_CENTER_LATITUDE']\r\n res['MAP_CENTER_LONGITUDE'] = res['MAP_CENTER_LONGITUDE'] ? res['MAP_CENTER_LONGITUDE'].toFixed(6) : res['MAP_CENTER_LONGITUDE']\r\n if(res && res['SITE_GISID']) {\r\n res['SITE_ID'] = res['SITE_GISID']\r\n }\r\n if (res && res.MultipleLocationData && Array.isArray(res.MultipleLocationData) && res.MultipleLocationData.length > 0) {\r\n multipleLocationRangeHandler(res.MultipleLocationData);\r\n res.MultipleLocationData = []\r\n }\r\n if (res && res[\"DELETED_GEOM_OBJECT_ID\"] && Array.isArray(res[\"DELETED_GEOM_OBJECT_ID\"]) && params.routeid1 && getEnvVariable('ModuleKey') !== 'AMES') {\r\n DeleteMultipleLocations(res[\"DELETED_GEOM_OBJECT_ID\"], params.routeid1);\r\n }\r\n if (res && (res['POINT_GEOM_OBJECT_ID'] || res['LINE_GEOM_OBJECT_ID'] ||\r\n res['POLYGON_GEOM_OBJECT_ID'] || res['MULTIPOINT_GEOM_OBJECT_ID'])) {\r\n let mapupdatefields = {\r\n 'POINT_GEOM_OBJECT_ID': res['POINT_GEOM_OBJECT_ID'],\r\n 'LINE_GEOM_OBJECT_ID': res['LINE_GEOM_OBJECT_ID'],\r\n 'POLYGON_GEOM_OBJECT_ID': res['POLYGON_GEOM_OBJECT_ID'],\r\n 'MULTIPOINT_GEOM_OBJECT_ID': res['MULTIPOINT_GEOM_OBJECT_ID'],\r\n 'CENTER_GEOM_OBJECT_ID': res['CENTER_GEOM_OBJECT_ID']\r\n }\r\n if (params.routeid && params.routeid1) {\r\n UpdateApplicationGISFields(params.routeid, params.routeid1, mapupdatefields).then(res => {\r\n console.log('Application gis fields update on single click', res)\r\n });\r\n } else {\r\n handleMapChange(res)\r\n }\r\n\r\n }\r\n handleMapChange(res)\r\n }\r\n\r\n const checkStatus = (id) => {\r\n let portal = getEnvVariable('AccessPortal');\r\n let returnVal = true;\r\n if (status.length > 0) {\r\n let obj = status.find(each => each.Id.toString() === id.toString() && (each.StatusName === 'Approved' || each.StatusName == 'Completed' ||\r\n each.StatusName === 'Submitted')) || null //|| (each.StatusName === 'Submitted' && portal == \"E\")\r\n if (obj) {\r\n return returnVal = false\r\n }\r\n }\r\n else return returnVal\r\n }\r\n\r\n function canEditMap() {\r\n // application view or edit\r\n // approved == no edit -- done\r\n //exter after submit = no edit -- done\r\n //user access level view or edit -- done\r\n //let stagedetails = localStorage.getItem('stagedetails')\r\n let portal = getEnvVariable('AccessPortal');\r\n let returnval = true\r\n let profile = JSON.parse(localStorage.getItem('profile'))\r\n let readPermissionsList = (profile && profile.moduleRegionAccess) ? profile.moduleRegionAccess : {}\r\n let readPermissions = true\r\n if (Object.keys(readPermissionsList).length > 0) {\r\n Object.keys(readPermissionsList).forEach(each => {\r\n if (fieldValues && fieldValues['REGION_ID'] && Object.keys(readPermissionsList).includes(fieldValues['REGION_ID'])\r\n && readPermissionsList[each] !== 'Add')\r\n readPermissions = false\r\n })\r\n }\r\n // if (portal == \"E\" && stagedetails != 'Not_Submitted' && edit !== true) {\r\n // return false;\r\n // } else// portal == \"I\" && \r\n if ((readPermissions === false && portal === 'I') || (fieldValues && (checkStatus(fieldValues['APPLICATION_STATUS']) === false)) || (edit !== true)) {\r\n return false;\r\n }\r\n return returnval;\r\n }\r\n\r\n return (\r\n <MapSection {...MapJsonExtend}\r\n queryexpression={props.value}\r\n onSaveorUpdateMapResponse={(res) => handleMapChangesWrapper(res)}\r\n taxparcelresponse={() => { }}\r\n gisDomainLookupData={GISLookupData}\r\n SubModuleKey={params.key}\r\n isAdd={isAdd}\r\n fetchGeomType={fetchGeomType}\r\n setStateMapInformation={(res) => handleMapChangesWrapper(res)}\r\n //canEdit={edit ? edit : false}\r\n canEdit={canEditMap()}\r\n width='calc(100% - 20px)'\r\n multipleLocationHandler={(res) => multipleLocationHandler(res)}\r\n userId={props.accessPermissions ? props.accessPermissions.userId : \"1\"}\r\n //mapClear={this.state.mapClear}\r\n clearsketch={clearSketch}\r\n />\r\n\r\n )\r\n}\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage }, dispatch);\r\n}\r\n\r\nMapComponent = connect(null, mapActions)(MapComponent)\r\nexport default withRouter(MapComponent)\r\n","import React, { Fragment, useEffect, useReducer, useRef, useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useParams } from \"react-router-dom\";\r\nimport useDeepCompareEffect from 'use-deep-compare-effect';\r\nimport WorkFlowUse from '../../../modules/workflow/workflowuse';\r\nimport { onTirggerAfterSave, setResetValue } from '../../actions';\r\nimport HeaderAlert from '../../modules/form/calertbox';\r\nimport { Evaluate } from '../effects/calculate';\r\nimport { handleActionsToEffects } from '../effects/effects';\r\nimport { fieldValidate } from '../helpers/checkers';\r\nimport { groupByType } from '../helpers/components';\r\nimport { fieldTypes as customTypes, hookTypes } from '../helpers/fieldtypes';\r\nimport { layoutTypes } from '../layout/types';\r\nimport { objectConversion } from '../wrappers/helpers/converters';\r\nimport AutoComplete from './autocomplete';\r\nimport Button from './buttons';\r\nimport MultiDropdown from './checkautocomplete';\r\nimport Checkbox from './checkbox';\r\nimport CheckboxesGroup from './checkboxgroup';\r\nimport MissingItemsDrawer from './custom/missinglists';\r\nimport DatePicker from './datepicker';\r\nimport DateTimePicker from './datetimepicker';\r\n//wrs holidays date\r\nimport DateMonth from './date_daymonth';import Timer from './daystimer';\r\nimport Dropdown from './dropdown';\r\nimport Label from './label';\r\nimport Link from './link';\r\nimport MapSection from './map';\r\nimport MultiAdd from './multiadd';\r\nimport NumberFormat from './numberformat';\r\nimport PhoneFormat from './phoneformat';\r\nimport RadioGroup from './radiogroup';\r\nimport PopUp from './sidepopup';\r\nimport Signature from './signature';\r\nimport TextField from './textbox';\r\nimport TextBox from './textfield_box';\r\nimport TimePicker from './timepicker';\r\nimport SubHeader from './subheader';\r\nconst _ = require('lodash');\r\n\r\nconst fieldTypes = {\r\n DS: Dropdown,\r\n TB: TextField,\r\n TA: TextField,\r\n DN: NumberFormat,\r\n N: NumberFormat,\r\n P: NumberFormat,\r\n RB: RadioGroup,\r\n CB: CheckboxesGroup,\r\n CF: Checkbox,\r\n C: NumberFormat,\r\n button: PopUp,\r\n RG: RadioGroup,\r\n // DM: Label,\r\n D: DatePicker,\r\n DT: DateTimePicker,\r\n DDM:DateMonth,\r\n T: TimePicker,\r\n AC: AutoComplete,\r\n CM: Label,\r\n LB: Label,\r\n PH: PhoneFormat,\r\n RC: Label,\r\n B: RadioGroup,\r\n Map: MapSection,\r\n CSC: Checkbox,\r\n ULB: Label,\r\n DM: MultiDropdown,\r\n TM: Timer,\r\n G: MultiAdd,\r\n TBB: TextBox,\r\n SGN: Signature,\r\n 'workflowuse': WorkFlowUse,\r\n HM: HeaderAlert,\r\n L: Link,\r\n BU: Button,\r\n 'LB-BU': Button,\r\n RBT: MissingItemsDrawer,\r\n SH:SubHeader,\r\n}\r\n\r\nconst checkBoxTransformProps = {\r\n N: false,\r\n Y: true,\r\n 'true': 'Y',\r\n 'false': 'N'\r\n\r\n}\r\n\r\nfunction DefaultValues(fieldDetails, prevVal, name) {\r\n const { items, extraProps } = fieldDetails || {};\r\n if (extraProps) {\r\n const { transformProps } = extraProps;\r\n if (items && items.length > 0) {\r\n let item = (items || []).find(i => i['IsDefault'] === 'Y' || i['isDefault'] === 'Y')\r\n return (item && item[transformProps.value]) ? item[transformProps.value] : ('' || null)\r\n }\r\n }\r\n else return prevVal[name]\r\n}\r\n\r\n\r\nfunction handleFieldChange(state, action) {\r\n const { type, ...otherProps } = action;\r\n console.log(otherProps)\r\n try {\r\n if (type === 'init') {\r\n const { values } = otherProps\r\n return { ...state, fieldValues: { ...values } }\r\n }\r\n if (type === 'value') {\r\n const { name, value, dataAttr } = otherProps\r\n return { ...state, fieldValues: { ...state.fieldValues, [name]: value }, dataAttr: { ...state.dataAttr, [name]: dataAttr } }\r\n }\r\n if (type === 'prop') {\r\n const { name, value, dataAttr } = otherProps\r\n let newstate = { ...state }\r\n newstate = { ...state, fieldProps: { ...state.fieldProps, [otherProps.name]: { ...state.fieldProps[otherProps.name], ...otherProps.value } }, dataAttr: { ...state.dataAttr, [otherProps.name]: dataAttr } }\r\n return newstate\r\n }\r\n if (type === 'props') {\r\n const fields = otherProps\r\n // let newstate = { ...state }\r\n fields.forEach(each => {\r\n state = { ...state, fieldProps: { ...state.fieldProps, [each]: { ...state.fieldProps[each], ...otherProps[each] } } }\r\n })\r\n return state\r\n }\r\n if (type === 'inital') {\r\n const resultskeys = Object.keys(state.fieldValues)\r\n // let newstate = { ...state }\r\n resultskeys.forEach(each => {\r\n state = { ...state, fieldValues: { ...state.fieldValues, [each]: otherProps.updates[each] } }\r\n })\r\n return state\r\n }\r\n if (type === 'required') {\r\n // const { fields } = otherProps\r\n const resultskeys = Object.keys(otherProps.fields)\r\n // let newstate = { ...state }\r\n resultskeys.forEach(each => {\r\n state = { ...state, fieldProps: { ...state.fieldProps, [each]: { ...state.fieldProps[each], ...otherProps.fields[each] } } }\r\n })\r\n return state\r\n }\r\n if (type === 'validations') {\r\n state = { ...state, validations: { ...otherProps } }\r\n }\r\n\r\n if (type === 'updates') {\r\n let newstate = { ...state }\r\n const { updates, triggersave } = otherProps\r\n const { prop, value, layout, validations, required, businessrules, map, nestedlist, error, initial, BRHiddenState,\r\n edit, createduplicate, loadDefaultValues, domainmapper, savesuccess, nestedlistArrayValues,autocompleteselectonload, BRActivity } = updates //getLocalStorageData\r\n if (nestedlistArrayValues) { // change the structure of this code write for infinity\r\n nestedlistArrayValues.forEach(nestedlistArrayValues_each => {\r\n const { items, name, itemfilterval, otherProps } = nestedlistArrayValues_each\r\n const { mapNameList, nested, subnested, valuefrom } = otherProps\r\n let itemslist;\r\n if (items && items.length > 0 && itemfilterval && state && state.fieldValues && state.fieldValues[itemfilterval]) {\r\n itemslist = itemfilterval ? _.find(items, { 'Id': newstate.fieldValues[itemfilterval] }) : items[0]\r\n }\r\n else if (valuefrom && items && items.length > 0 && itemfilterval && state && state.fieldValues && state.fieldValues[valuefrom] && state.fieldValues[valuefrom][itemfilterval]) {\r\n itemslist = itemfilterval ? _.find(items, { 'Id': newstate.fieldValues[valuefrom][itemfilterval] }) : items[0]\r\n }\r\n else if (items && !Array.isArray(items)) {\r\n itemslist = items\r\n }\r\n itemslist && name.forEach(each => {\r\n const { key, value, nestedname, name, nonnested } = each\r\n let nestedvalue = nestedname ? nestedname : (nested ? nested : null)\r\n if (name && nonnested) {\r\n state = { ...state, fieldValues: { ...state.fieldValues, [name]: itemslist[mapNameList[name]] } }\r\n }\r\n else if (name) {\r\n state = { ...state, fieldValues: { ...state.fieldValues, [name]: nestedvalue ? itemslist[nestedvalue][mapNameList[name]] : itemslist[mapNameList[name]] } }\r\n }\r\n else if (subnested) {\r\n state = { ...state, fieldValues: { ...state.fieldValues, [each]: nestedvalue ? itemslist[nestedvalue][subnested][mapNameList[each]] : itemslist[subnested][mapNameList[each]] } }\r\n }\r\n else\r\n state = { ...state, fieldValues: { ...state.fieldValues, [each]: nestedvalue ? itemslist[nestedvalue][mapNameList[each]] : itemslist[mapNameList[each]] } }\r\n })\r\n newstate = { ...state }\r\n })\r\n }\r\n if (autocompleteselectonload) { // added code for WRS Assigned To Dropdown by Manoj Thiparapu\r\n autocompleteselectonload.forEach(autocompleteselectonload_each => {\r\n const { items, name, value, itemfilterval, otherProps } = autocompleteselectonload_each\r\n const { mapNameList, nested, subnested, valuefrom } = otherProps\r\n let itemslist;\r\n let assignedids=[]\r\n let ids=''\r\n if (items && items.length > 0) {\r\n assignedids= items.filter(e=>e.IsSendEmailNotification==\"Y\")\r\n itemslist = assignedids.map(a => a.UserId);\r\n for(let i=0;i<itemslist.length;i++)\r\n {\r\n ids = itemslist.join(\",\")\r\n }\r\n if( value[name] && ids)\r\n { //selected value\r\n let val = value[name]\r\n var noprimeuser = items.find(e => val.includes(e.UserId));\r\n ids = ids == val ? ids : val.includes(ids) ? val : ids != val ? (noprimeuser !=null ? val : ids) : val\r\n }\r\n }\r\n items.forEach(each => {\r\n const { key, value, nestedname, nonnested } = each\r\n state={...state,fieldProps:{...state.fieldProps,[name]:{...state.fieldProps[name],items:items}},fieldValues:{...state.fieldValues,[name]:ids}}\r\n })\r\n newstate = { ...state }\r\n })\r\n }\r\n if (prop) {\r\n prop.forEach(each => {\r\n const { name, ...otherPropProperties } = each\r\n if (otherPropProperties && otherPropProperties.hasOwnProperty('allowedValues') && otherPropProperties.allowedValues.length > 0) {\r\n let transformValue = (state.fieldProps[name] && state.fieldProps[name].extraProps && state.fieldProps[name].extraProps.transformProps &&\r\n state.fieldProps[name].extraProps.transformProps.value) || 'value';\r\n const defaultItems = state.fieldProps[name] && state.fieldProps[name].defaultItems && state.fieldProps[name].defaultItems.length > 0 ?\r\n state.fieldProps[name].defaultItems : ((state.fieldProps[name] && state.fieldProps[name].items) ? state.fieldProps[name].items : [])\r\n if ((state.fieldProps[name] && state.fieldProps[name].defaultItems && state.fieldProps[name].defaultItems &&\r\n state.fieldProps[name].defaultItems.length > 0) || (state.fieldProps[name] && state.fieldProps[name].items && state.fieldProps[name].items.length > 0)) {\r\n const filterItems = (state.fieldProps[name].defaultItems && state.fieldProps[name].defaultItems) ||\r\n ((state.fieldProps[name] && state.fieldProps[name].items) ? state.fieldProps[name].items : []).filter(function (item) {\r\n return otherPropProperties.allowedValues.indexOf((item[transformValue]).toString()) > -1\r\n })\r\n state = {\r\n ...state, fieldProps: {\r\n ...state.fieldProps, [name]: {\r\n ...state.fieldProps[name],\r\n items: filterItems || [],\r\n defaultItems: defaultItems || []\r\n\r\n }\r\n },\r\n }\r\n }\r\n else {\r\n state = {\r\n ...state, fieldProps: { ...state.fieldProps, [name]: { ...state.fieldProps[name], ...otherPropProperties } },\r\n }\r\n }\r\n newstate = { ...state }\r\n }\r\n if (otherPropProperties && otherPropProperties.hasOwnProperty('hasValue') && otherPropProperties.hasValue\r\n && (otherPropProperties.valueType === 'D' || otherPropProperties.valueType === 'C' || otherPropProperties.valueType === 'R')) {\r\n\r\n state = {\r\n ...state, fieldProps: { ...state.fieldProps, [name]: { ...state.fieldProps[name], ...otherPropProperties, className: 'd-block', } },\r\n fieldValues: {\r\n ...state.fieldValues, [name]:\r\n otherPropProperties.valueType === 'D' ?\r\n (otherPropProperties.value === '' || otherPropProperties.value === undefined) ?\r\n DefaultValues(state.fieldProps[name], state.prevFieldvalues, name) : (otherPropProperties.value || (otherPropProperties.disabled ? 'Y' : 'N')) :\r\n otherPropProperties.valueType === 'C' ? Evaluate(otherPropProperties.value, state.fieldValues,\r\n otherPropProperties.currentrefIds, otherPropProperties.dynamicData, (state.fieldProps[name] && state.fieldProps[name].sendActualVal && state.fieldProps[name].sendActualVal === true) ? true : false)\r\n : otherPropProperties.valueType === 'R' ? state.prevFieldvalues[name] : state.fieldValues[name]\r\n }\r\n }\r\n // console.log(\"name\",name) \r\n newstate = { ...state }\r\n }\r\n if (otherPropProperties && otherPropProperties.hasOwnProperty('isVisible')) {\r\n if (!otherPropProperties.isVisible)\r\n state = {\r\n ...state, fieldProps: { ...state.fieldProps, [name]: { ...state.fieldProps[name], ...otherPropProperties, className: 'd-none' } },\r\n }\r\n\r\n else state = {\r\n ...state, fieldProps: { ...state.fieldProps, [name]: { ...state.fieldProps[name], ...otherPropProperties, className: 'd-block' } },\r\n }\r\n newstate = { ...state }\r\n }\r\n if (name === 'domainitems') {\r\n let tempDomains = {};\r\n if (otherPropProperties && otherPropProperties.domainitems)\r\n tempDomains = otherPropProperties.domainitems\r\n else tempDomains = otherPropProperties\r\n let listKeys = Object.keys(tempDomains)\r\n for (let i = 0; i < listKeys.length; i++) {\r\n if (state.fieldProps[listKeys[i]])\r\n state = {\r\n ...state, fieldProps: {\r\n ...state.fieldProps, [listKeys[i]]: {\r\n ...state.fieldProps[listKeys[i]],\r\n items: tempDomains[listKeys[i]] || []\r\n }\r\n },\r\n }\r\n }\r\n newstate = { ...state }\r\n }\r\n if (name === 'edit') {\r\n const resultskeys = Object.keys(state.fieldProps)\r\n resultskeys.map(name => {\r\n state = {\r\n ...state, fieldProps: { ...state.fieldProps, [name]: { ...state.fieldProps[name], type: 'label', edit: !edit || true } },\r\n }\r\n })\r\n newstate = { ...state }\r\n }\r\n else {\r\n state = {\r\n ...state, fieldProps: { ...state.fieldProps, [name]: { ...state.fieldProps[name], ...otherPropProperties } },\r\n }\r\n newstate = { ...state }\r\n }\r\n })\r\n }\r\n if (domainmapper) {\r\n domainmapper.forEach(each => {\r\n const { name } = each;\r\n let splitNames = name.split(',')\r\n if (splitNames.length > 1) {\r\n splitNames.map(splitname => {\r\n state = {\r\n ...state, fieldValues: { ...state.fieldValues, [splitname]: (each[splitname] && each[splitname].length > 0) ? each[splitname][0].name : '' },\r\n }\r\n })\r\n }\r\n else state = {\r\n ...state, fieldValues: { ...state.fieldValues, [name]: (each[name] && each[name].length > 0) ? each[name][0].name : '' },\r\n }\r\n })\r\n newstate = { ...state }\r\n\r\n }\r\n if (edit || createduplicate) {\r\n const resultskeys = Object.keys(state.fieldProps)\r\n let roleList = JSON.parse(localStorage.getItem('roles'));\r\n let found = false;\r\n let show = false;\r\n let unique = []\r\n if (roleList && roleList.length > 0) {\r\n let array = roleList\r\n unique = [...new Set(array.map(item => item.RoleType))];\r\n }\r\n resultskeys.map(name => {\r\n if (state.fieldProps[name].readOnly) {\r\n found = unique.find(element => element === state.fieldProps[name].readOnly);\r\n if (found) {\r\n state = {\r\n ...state, fieldProps: { ...state.fieldProps, [name]: { ...state.fieldProps[name], type: 'label', edit: !edit || true } },\r\n }\r\n }\r\n else {\r\n state = createduplicate ? {\r\n ...state, fieldProps: {\r\n ...state.fieldProps, [name]: {\r\n ...state.fieldProps[name], type: state.fieldProps[name].changefieldto ?\r\n state.fieldProps[name].changefieldto : 'label', createduplicate: !createduplicate || true\r\n }\r\n },\r\n } : {\r\n ...state, fieldProps: {\r\n ...state.fieldProps, [name]: {\r\n ...state.fieldProps[name], type: (state.fieldProps[name].changefieldto && !state.fieldProps[name].noEdit) ?\r\n state.fieldProps[name].changefieldto : 'label', edit: !edit || true\r\n }\r\n },\r\n }\r\n }\r\n }\r\n else if (state.fieldProps[name].showOnly) {\r\n show = unique.find(element => element === state.fieldProps[name].showOnly);\r\n if (show) {\r\n state = {\r\n ...state, fieldProps: {\r\n ...state.fieldProps, [name]: {\r\n ...state.fieldProps[name], type: state.fieldProps[name].changefieldto ?\r\n state.fieldProps[name].changefieldto : 'label', edit: !edit || true\r\n }\r\n },\r\n }\r\n }\r\n else {\r\n state = {\r\n ...state, fieldProps: { ...state.fieldProps, [name]: { ...state.fieldProps[name], type: 'label', edit: !edit || true } },\r\n }\r\n }\r\n }\r\n else\r\n state = createduplicate ? {\r\n ...state, fieldProps: {\r\n ...state.fieldProps, [name]: {\r\n ...state.fieldProps[name],\r\n type: (state.fieldProps[name].changefieldto) ? state.fieldProps[name].changefieldto : 'label',\r\n createduplicate: !createduplicate || true\r\n }\r\n },\r\n } : {\r\n ...state, fieldProps: {\r\n ...state.fieldProps, [name]: {\r\n ...state.fieldProps[name],\r\n type: (state.fieldProps[name].changefieldto && !state.fieldProps[name].noEdit) ? state.fieldProps[name].changefieldto : 'label', edit: !edit || true\r\n }\r\n },\r\n }\r\n })\r\n newstate = { ...state }\r\n }\r\n\r\n if (initial && initial.length > 0 && state && state.fieldValues) {\r\n let resultskeys = Object.keys(state.fieldValues)\r\n let initalfieldValues = state.fieldValues;\r\n\r\n initial.forEach(init => {\r\n if (init) {\r\n resultskeys.forEach(each => {\r\n let value = init[each] ? init[each] : objectConversion(init, each)\r\n state = { ...state, fieldValues: { ...state.fieldValues, [each]: ((value || value === 0) && value !== ' ') ? value : initalfieldValues[each] } } //each.split(\".\").reduce((res, prop) => { return res && res[prop] }, initialdata)\r\n })\r\n initalfieldValues = state.fieldValues;\r\n newstate = { ...state }\r\n // dispatch(saveFindings(initalfieldValues))\r\n }\r\n })\r\n }\r\n if (loadDefaultValues) {\r\n loadDefaultValues.forEach(each => {\r\n const { defaultCondition, value, checkDefaultValue, savetype } = each.transformProps\r\n let allItems = (initial && initial[0]) ? initial[0] : state.fieldValues.navigation ? state.fieldValues.navigation : null\r\n let defaultval\r\n if (savetype === 'add' && defaultCondition && value && checkDefaultValue && allItems && allItems.length) {\r\n defaultval = allItems.find(i => i[defaultCondition] === checkDefaultValue)\r\n }\r\n if (defaultval ? defaultval : allItems) {\r\n let objval = defaultval ? defaultval : allItems\r\n if (each.datasetval) {\r\n let items = each.datasetval\r\n let dataAttrVal = {}\r\n for (let key in items) {\r\n let itemkey = items[key]\r\n let itemval = objval[key]\r\n dataAttrVal[itemkey] = itemval\r\n }\r\n state = {\r\n ...state, fieldValues: { ...state.fieldValues, [each.name]: objval[value] }, dataAttr: { ...state.dataAttr, [each.name]: dataAttrVal },\r\n }\r\n newstate = { ...state }\r\n }\r\n else {\r\n state = {\r\n ...state, fieldValues: { ...state.fieldValues, [each.name]: objval[value] }\r\n }\r\n newstate = { ...state }\r\n }\r\n }\r\n })\r\n }\r\n\r\n if (value) {\r\n value.forEach(each => {\r\n const { key, result, resultKey } = each\r\n state = { ...state, fieldValues: { ...state.fieldValues, [key]: resultKey ? state.fieldValues[resultKey] : result.value } }\r\n\r\n })\r\n newstate = { ...state }\r\n }\r\n if (BRActivity) {\r\n newstate = { ...state, 'triggerBRActivity': false }\r\n }\r\n if (nestedlistArrayValues) { // change the structure of this code write for infinity\r\n nestedlistArrayValues.forEach(nestedlistArrayValues_each => {\r\n const { items, name, itemfilterval, otherProps } = nestedlistArrayValues_each\r\n const { mapNameList, nested, subnested, valuefrom } = otherProps\r\n let itemslist=[];\r\n if (items && items.length > 0 && itemfilterval && state && state.fieldValues && state.fieldValues[itemfilterval]) {\r\n itemslist = itemfilterval ? _.find(items, { 'Id': newstate.fieldValues[itemfilterval] }) : items[0]\r\n }\r\n else if (valuefrom && items && items.length > 0 && itemfilterval && state && state.fieldValues && state.fieldValues[valuefrom] && state.fieldValues[valuefrom][itemfilterval]) {\r\n itemslist = itemfilterval ? _.find(items, { 'Id': newstate.fieldValues[valuefrom][itemfilterval] }) : items[0]\r\n }\r\n else if (items && !Array.isArray(items)) {\r\n itemslist = items\r\n }\r\n itemslist && name.forEach(each => {\r\n const { key, value, nestedname, name, nonnested } = each\r\n let nestedvalue = nestedname ? nestedname : (nested ? nested : null)\r\n if (name && nonnested) {\r\n state = { ...state, fieldValues: { ...state.fieldValues, [name]: itemslist[mapNameList[name]] } }\r\n }\r\n else if (name) {\r\n state = { ...state, fieldValues: { ...state.fieldValues, [name]: nestedvalue ? itemslist[nestedvalue][mapNameList[name]] : itemslist[mapNameList[name]] } }\r\n }\r\n else if (subnested) {\r\n state = { ...state, fieldValues: { ...state.fieldValues, [each]: nestedvalue ? itemslist[nestedvalue][subnested][mapNameList[each]] : itemslist[subnested][mapNameList[each]] } }\r\n }\r\n else\r\n state = { ...state, fieldValues: { ...state.fieldValues, [each]: nestedvalue ? itemslist[nestedvalue][mapNameList[each]] : itemslist[mapNameList[each]] } }\r\n })\r\n newstate = { ...state }\r\n })\r\n }\r\n if (savesuccess) {\r\n let values = state.fieldValues\r\n if (savesuccess[0] && savesuccess[0].fieldValues)\r\n values = savesuccess[0].fieldValues\r\n if (state.fieldValues['edit']) {\r\n const resultskeys = Object.keys(state.fieldProps)\r\n resultskeys.map(name => {\r\n state = {\r\n ...state, fieldProps: {\r\n ...state.fieldProps, [name]: {\r\n ...state.fieldProps[name], value: values[name],\r\n type: (state.fieldProps[name].customField || (savesuccess[0] && savesuccess[0].noEdit)) ?\r\n state.fieldProps[name].type : 'label', helperText: '', error: false,\r\n edit: (savesuccess[0] && savesuccess[0].noEdit) ? true : false\r\n }\r\n }, triggerBRActivity: savesuccess[0] ? true : false\r\n }\r\n })\r\n newstate = {\r\n ...state, back: state.fieldValues['back'] && state.fieldValues['back'] === true ? true : false,\r\n triggerBRActivity: savesuccess[0] ? true : false,\r\n fieldValues: {\r\n ...state.fieldValues, ...values, ['save']: false,\r\n ['edit']: (savesuccess[0] && savesuccess[0].noEdit) ? true : false\r\n }\r\n }\r\n // dispatch(saveFindings(values))\r\n }\r\n else if (state.fieldValues['createduplicate']) {\r\n newstate = { ...state, back: true }\r\n }\r\n else {\r\n let data = savesuccess && savesuccess.length > 0 && savesuccess[0].fieldValues || {}\r\n data = _.merge(state.fieldValues, data)\r\n newstate = {\r\n ...state, addData: { ...state.fieldValues, ...data }, fieldValues: {\r\n ...data, ['save']: false, ['edit']: true,\r\n }, back: savesuccess && savesuccess.length > 0 && savesuccess[0].back === false ? false : true, triggerBRActivity: savesuccess[0] ? true : false,\r\n }\r\n }\r\n }\r\n if (error) {\r\n let fielderrors = error[0].error\r\n if (fielderrors && fielderrors.errors) {\r\n fielderrors = fielderrors.errors\r\n }\r\n let errorKeys = Object.keys(fielderrors);\r\n errorKeys.forEach(err => {\r\n state = {\r\n ...state, fieldProps: { ...state.fieldProps, [err]: { ...state.fieldProps[err], error: true, helperText: fielderrors[err][0] } },\r\n }\r\n newstate = { ...state }\r\n })\r\n newstate = { ...newstate, fieldValues: { ...newstate.fieldValues, ['save']: false } }\r\n }\r\n if (map) {\r\n map.forEach(each => {\r\n const { key, value } = each\r\n state = { ...state, fieldValues: { ...state.fieldValues, [key]: value } }\r\n })\r\n newstate = { ...state }\r\n\r\n }\r\n if (nestedlist) {\r\n const { items, name, otherProps } = nestedlist[0]\r\n const { mapNameList, nested, subnested } = otherProps\r\n name.forEach(each => {\r\n const { key, value } = each\r\n state = { ...state, fieldValues: { ...state.fieldValues, [each]: subnested ? (items && items[nested][subnested][mapNameList[each]]) : (items && items[nested][mapNameList[each]]) } }\r\n })\r\n newstate = { ...state }\r\n }\r\n if (validations) {\r\n if (Array.isArray(validations)) {\r\n validations.forEach(valids => {\r\n if (valids['validations']) {\r\n state = { ...state, fieldValidations: valids['validations'] }\r\n newstate = { ...state }\r\n }\r\n if (valids['required']) {\r\n valids['required'].forEach(each => {\r\n let name = (state.validationRequiredMapKeys && state.validationRequiredMapKeys[each]) || each\r\n state = { ...state, fieldProps: { ...state.fieldProps, [name]: { ...state.fieldProps[name], required: true } } }\r\n })\r\n newstate = { ...state, requiredFields: valids['required'] }\r\n }\r\n if (valids['tooltip']) {\r\n if (Object.keys(valids['tooltip']).length > 0)\r\n Object.keys(valids['tooltip']).forEach(each => {\r\n state = { ...state, fieldProps: { ...state.fieldProps, [each]: { ...state.fieldProps[each], tooltip: valids['tooltip'][each] } } }\r\n })\r\n newstate = { ...state }\r\n }\r\n if (valids['contexthelp']) {\r\n if (Object.keys(valids['contexthelp']).length > 0)\r\n Object.keys(valids['contexthelp']).forEach(each => {\r\n state = { ...state, fieldProps: { ...state.fieldProps, [each]: { ...state.fieldProps[each], contexthelp: valids['contexthelp'][each] } } }\r\n })\r\n newstate = { ...state }\r\n }\r\n if (valids['sectionToolTips']) {\r\n if (Object.keys(valids['sectionToolTips']).length > 0) {\r\n let SectionContext = state.sections.SectionContext;\r\n Object.keys(valids['sectionToolTips']).forEach(each => {\r\n Object.keys(state.sections.SectionContext).forEach(section => {\r\n if (state.sections.SectionContext[section].key === each)\r\n SectionContext[section] = { ...state.sections.SectionContext[section], 'SectionDescription': valids['sectionToolTips'][each] }\r\n })\r\n state = { ...state, sections: { ...state.sections, SectionContext: SectionContext } }\r\n })\r\n }\r\n newstate = { ...state }\r\n }\r\n })\r\n }\r\n else {\r\n state = { ...state, fieldValidations: validations }\r\n newstate = { ...state }\r\n }\r\n\r\n }\r\n if (businessrules) {\r\n newstate = {\r\n ...state, conditions: {\r\n ...state.conditions, 'afterSave': {\r\n ...state.conditions['afterSave'], ...businessrules[0]['afterSave']\r\n },\r\n 'onChange': {\r\n ...state.conditions['onChange'], ...businessrules[0]['onChange']\r\n }, 'onLoad': {\r\n ...state.conditions['onLoad'], ...businessrules[0]['onLoad']\r\n },\r\n 'auto': { ...state.conditions['auto'], ...businessrules[0]['auto'] },\r\n 'onEvent': {\r\n ...state.conditions['onEvent'], ...businessrules[0]['onEvent']\r\n },\r\n 'info': {\r\n ...state.conditions['info'], ...businessrules[0]['info']\r\n },\r\n }\r\n }\r\n }\r\n if (BRHiddenState) {\r\n if (BRHiddenState && BRHiddenState[0]) {\r\n localStorage.setItem('RecordHiddenState', JSON.stringify(Object.values(BRHiddenState[0])))\r\n }\r\n }\r\n if (required) {\r\n required.forEach(each => {\r\n let name = (state.validationRequiredMapKeys && state.validationRequiredMapKeys[each]) || each\r\n state = { ...state, fieldProps: { ...state.fieldProps, [name]: { ...state.fieldProps[name], required: true } } }\r\n })\r\n newstate = { ...state, requiredFields: required }\r\n }\r\n if (layout) {\r\n }\r\n if (newstate) {\r\n newstate = { ...newstate, triggersave: triggersave || false }\r\n return newstate\r\n }\r\n else {\r\n return { ...state, triggersave: triggersave || false }\r\n }\r\n }\r\n if (type === 'customfields') {\r\n const { layout, components } = otherProps\r\n const { group, ...othersLayout } = layout\r\n return {\r\n ...state, fieldProps: { ...state.fieldProps, ...components }, fieldsLayout: {\r\n ...state.fieldsLayout, ...othersLayout,\r\n group: state.fieldsLayout.group.concat(group).reduce((acc, current) => {\r\n const x = acc.find(item => item.order === current.order);\r\n if (!x) {\r\n return acc.concat([current]);\r\n } else {\r\n const { position, components } = current\r\n x.components.splice(position, 0, ...components)\r\n return acc;\r\n }\r\n }, [])\r\n }\r\n }\r\n }\r\n }\r\n catch (ex) {\r\n console.log(\"sections : \" + ex)\r\n }\r\n return state\r\n}\r\n\r\n\r\nexport default function useSections(props) {\r\n const { key, components, layout, routeParams, values, displayName, aliases, removeValues, mapActionsToEffects, dispatchSharedValueChange,\r\n validations, required, dataAttributes, sections, validationMapKeys, fieldsinSectionNames, validationRequiredMapKeys, fieldsinSection, mapSettingsJson,\r\n fieldLabelsinSection, fieldKeysValues, fieldMappedColName, initRun } = props\r\n let layoutType = null\r\n let sectionType = (sections && sections.type) || '';\r\n const counter = useRef(0)\r\n const sharedProps = props.sharedProps || {}\r\n const sharedValues = props.sharedValues || []\r\n const errors = useRef(false)\r\n let params = useParams();\r\n let errorSections = {}\r\n let hideSections = []\r\n const prevState = useRef(sharedProps);\r\n const resetval = useSelector(state => state.header && state.header.resetval);\r\n const parentRecordVals = useSelector(state => state.sidebar && state.sidebar.modules);\r\n const dispatch = useDispatch()\r\n const [prevFieldvalues, setPrevFeildValues] = useState(values);\r\n const [currValue, setCurrValue] = useState(null);\r\n const [fields, dispatchFieldsChange] = useReducer(\r\n handleFieldChange,\r\n {\r\n fieldValues: values, fieldProps: components, fieldsLayout: layout, fieldValidations: validations || {}, requiredFields: required || [],\r\n conditions: mapActionsToEffects, dataAttr: dataAttributes, validationMapKeys: validationMapKeys, validationRequiredMapKeys: validationRequiredMapKeys,\r\n fieldsinSection: fieldsinSection, fieldLabelsinSection: fieldLabelsinSection, mapSettingsJson: mapSettingsJson, fieldKeysValues: fieldKeysValues, back: false,\r\n fieldsinSectionNames: fieldsinSectionNames, addData: null, prevFieldvalues: prevFieldvalues, sections: sections, triggerBRActivity: false,\r\n fieldMappedColName: fieldMappedColName, triggersave: false\r\n }\r\n )\r\n const { fieldValues, fieldProps, fieldsLayout, fieldValidations, conditions, dataAttr, back, addData, triggerBRActivity, triggersave } = fields //loadAfterPreInit\r\n\r\n useEffect(() => {\r\n let tempVal = [values]\r\n updateSections({\r\n initial: tempVal\r\n })\r\n }, [values])\r\n\r\n useEffect(() => {\r\n if (triggerBRActivity) {\r\n handleEffectUpdates(\r\n handleActionsToEffects({\r\n fieldValues: { ...fieldValues, ...params },\r\n conditions: (conditions.afterSave['businessrulesactivity']),\r\n })\r\n )\r\n }\r\n }, [triggerBRActivity])\r\n\r\n useEffect(() => {\r\n console.log(\"TriggerSave\", triggersave)\r\n if (triggersave) {\r\n dispatch(onTirggerAfterSave(fieldValues))\r\n }\r\n }, [triggersave])\r\n\r\n\r\n\r\n\r\n useEffect(() => {\r\n if (resetval && resetval.name && fieldValues && Object.keys(fieldValues).indexOf(resetval.name) > -1) {\r\n const { name, isReset } = resetval\r\n if (isReset) {\r\n let tempConditions = _.cloneDeep(conditions)\r\n let values = []\r\n Object.keys(fieldValues).map(each => {\r\n if (fieldValues[each] !== prevFieldvalues[each])\r\n values.push({\r\n key: each,\r\n result: {\r\n value: prevFieldvalues[each]\r\n }\r\n })\r\n })\r\n if (name && conditions && conditions.onChange) {\r\n let sectionname = fieldsinSection ? fieldsinSection[currValue] : currValue;\r\n let eachCondition = (conditions.onChange[sectionname] && conditions.onChange[sectionname].fields) || null;\r\n let globalCondition = (conditions.onChange.GLOBAL && conditions.onChange.GLOBAL.fields) || null;\r\n\r\n //each filter\r\n let filterEachRules = [];\r\n // eslint-disable-next-line no-unused-expressions\r\n tempConditions.onChange[sectionname] && tempConditions.onChange[sectionname].rules.map(each => {\r\n if (each.fields && each.fields.includes(currValue)) {\r\n filterEachRules.push(each)\r\n }\r\n }) || [];\r\n let OnCondition = tempConditions.onChange[sectionname] || {};\r\n OnCondition['rules'] = filterEachRules;\r\n // Global filter\r\n let filterGlobalRules = [];\r\n tempConditions.onChange.GLOBAL && tempConditions.onChange.GLOBAL.rules.map(each => {\r\n if (each.fields && each.fields.includes(currValue)) {\r\n filterGlobalRules.push(each)\r\n }\r\n })\r\n let OnGlbalCondition = tempConditions.onChange.GLOBAL || {};\r\n OnGlbalCondition['rules'] = filterGlobalRules;\r\n if ((eachCondition && eachCondition.includes(currValue)) || (globalCondition && globalCondition.includes(currValue))) {\r\n handleEffectUpdates(\r\n handleActionsToEffects({\r\n fieldValues: { ...prevFieldvalues, ...params },\r\n conditions: OnCondition || [],\r\n global: OnGlbalCondition,\r\n EventType: 'OC'\r\n }))\r\n }\r\n }\r\n dispatch(setResetValue({}))\r\n dispatchFieldsChange({\r\n type: 'updates',\r\n updates: {\r\n value: values,\r\n }\r\n })\r\n }\r\n }\r\n }, [resetval && resetval.isReset])\r\n\r\n useEffect(() => {\r\n let reduxVals = []\r\n let tempFieldValues = fieldValues\r\n if (tempFieldValues && tempFieldValues['GetParentValues']) {\r\n reduxVals = parentRecordVals\r\n tempFieldValues = { ...tempFieldValues, ...reduxVals }\r\n }\r\n let updatedSharedValues = sharedValues.reduce((accum, each) => {\r\n accum[each] = tempFieldValues[each]\r\n return accum\r\n }, {})\r\n\r\n //const names = currentField.current\r\n const names = Object.keys(updatedSharedValues)\r\n if (counter.current > 0 && names.length > 0 && dispatchSharedValueChange) {\r\n dispatchSharedValueChange({\r\n type: 'values',\r\n values: names.map(each => {\r\n return {\r\n name: aliases[each] || each,\r\n value: updatedSharedValues[each]\r\n }\r\n })\r\n })\r\n }\r\n\r\n counter.current++\r\n // currentField.current = []\r\n }, [fieldValues])\r\n\r\n\r\n useDeepCompareEffect(() => {\r\n let sharedkeys = [];\r\n let prevStateShaedProps = prevState.current\r\n let tempConditions = (conditions && conditions.onChange) || {};\r\n if (tempConditions && (sharedProps['save'] !== prevStateShaedProps['save'])) {\r\n sharedkeys.push('save');\r\n tempConditions = conditions.afterSave;\r\n if (tempConditions)\r\n tempConditions['GLOBAL'] = conditions.afterSave.GLOBAL;\r\n }\r\n else if (sharedProps['saveduplicate'] === true) {\r\n sharedkeys.push('saveduplicate');\r\n tempConditions = conditions.onChange['saveduplicate'] || conditions.afterSave\r\n }\r\n else if (sharedProps['edit'] === true || sharedProps['createduplicate'] === true) {\r\n let prevStateProps = Object.keys(sharedProps).filter(each => sharedProps[each] !== prevStateShaedProps[each])\r\n sharedkeys = (prevStateProps)\r\n }\r\n\r\n else sharedkeys = Object.keys(sharedProps)\r\n if (sharedkeys && tempConditions)\r\n (sharedkeys || []).map(share => {\r\n if (tempConditions && (tempConditions[share] && (sharedProps[share] !== false)) ||\r\n (sharedProps[share] === false && tempConditions['GLOBAL'])) { //we took global for executing aftersave need to verify for edit\r\n let reduxVals = {}\r\n if (fieldValues['GetParentValues']) {\r\n reduxVals = parentRecordVals\r\n }\r\n let sendvalues = { ...fieldValues, ...sharedProps, ...params, ...reduxVals }\r\n let proceed = true;\r\n if (sharedProps[share] && (share === 'save' || share === 'saveduplicate')) {\r\n // {\r\n proceed = !saveFields();\r\n localStorage.setItem('SaveCurrentRecord', 'N')\r\n // }\r\n if (!proceed) {\r\n counter.current = 0\r\n let names = share === 'saveduplicate' ? ['saveduplicate'] : ['save']\r\n dispatchSharedValueChange({\r\n type: 'values',\r\n values: names.map(each => {\r\n return {\r\n name: each,\r\n value: false\r\n }\r\n })\r\n })\r\n dispatchFieldsChange({\r\n type: 'value',\r\n name: share,\r\n value: sendvalues[share],\r\n dataAttr: dataAttr\r\n })\r\n }\r\n\r\n let tempsendvalues = share === 'saveduplicate' ? { ...fieldValues, ...sharedProps, ...params, IsDuplicate: \"Y\" } :\r\n { ...fieldValues, ...sharedProps, ...params }\r\n sendvalues = tempsendvalues;\r\n if (removeValues) {\r\n removeValues.forEach(fields => {\r\n delete sendvalues[fields]\r\n })\r\n }\r\n }\r\n if ((share === 'navigation' || share === 'subnavigation') && sharedProps.navigation) {\r\n sendvalues = { ...sharedProps.navigation, ...sharedProps, ...params }\r\n }\r\n proceed && handleEffectUpdates(\r\n handleActionsToEffects({\r\n fieldValues: sendvalues,\r\n conditions: (sharedProps[share] || (props.tempconditions && props.tempconditions.includes(share))) ? tempConditions[share] : [],\r\n global: (!sharedProps[share] || fieldValues['RunAfterSave']) ? (tempConditions && tempConditions.GLOBAL) : [],\r\n extras: { runEvents: tempConditions[share] && tempConditions[share].runEvents ? true : false, },// based on onload and onsave,\r\n EventType: 'OC'\r\n })\r\n )\r\n }\r\n })\r\n prevState.current = sharedProps;\r\n }, [sharedProps])\r\n\r\n useDeepCompareEffect(() => {\r\n try {\r\n if (sharedProps && Object.keys(sharedProps).length > 0)\r\n dispatchFieldsChange({\r\n type: 'updates',\r\n updates: {\r\n value: Object.keys(sharedProps).map(each => {\r\n return {\r\n key: each,\r\n result: {\r\n value: sharedProps[each]\r\n }\r\n }\r\n })\r\n }\r\n })\r\n }\r\n catch (ex) {\r\n console.error(\"console error in section\" + ex)\r\n }\r\n }, [sharedProps])\r\n\r\n\r\n\r\n useEffect(() => {\r\n if (addData)\r\n if (routeParams && routeParams.replace) {\r\n }\r\n else {\r\n props.handleBack(true)\r\n }\r\n }, [addData])\r\n\r\n useEffect(() => {\r\n if (back) {\r\n props.handleBack(true)\r\n }\r\n }, [back])\r\n\r\n useEffect(() => {\r\n if (key) {\r\n localStorage.setItem('TOUR_KEY', key)\r\n }\r\n if (conditions && conditions.onLoad && conditions.onLoad['init']) { // dependency and bussiness rules checking\r\n let reduxVals = {}\r\n if (fieldValues['GetParentValues']) {\r\n /** GetParentValues: should be add to jsons to data ( applicant, compnay) get from parent data */\r\n reduxVals = parentRecordVals\r\n }\r\n handleEffectUpdates(\r\n handleActionsToEffects({\r\n fieldValues: { ...fieldValues, ...sharedProps, ...params, ...reduxVals },\r\n conditions: (conditions.onLoad['init']),\r\n extras: { ...params },\r\n name: 'GLOBAL',\r\n EventType: 'OL'\r\n })\r\n )\r\n }\r\n }, [])\r\n\r\n\r\n\r\n useEffect(() => {\r\n if (!initRun && conditions && conditions.onLoad) {\r\n let secKeys = Object.keys(conditions.onLoad)\r\n let reduxVals = {}\r\n if (fieldValues['GetParentValues']) {\r\n /** GetParentValues: should be add to jsons to data ( applicant, compnay) get from parent data */\r\n reduxVals = parentRecordVals\r\n }\r\n handleEffectUpdates(\r\n handleActionsToEffects({\r\n fieldValues: { ...fieldValues, ...params, ...reduxVals },\r\n conditions: {},\r\n global: (conditions && conditions.onLoad.GLOBAL) || [],\r\n extras: { runEvents: false, },\r\n name: 'GLOBAL',\r\n EventType: 'OL'\r\n }), true\r\n )\r\n\r\n secKeys.map(sec => {\r\n if (sec !== 'GLOBAL' && sec !== 'init' && !(conditions.onLoad[sec].onSectionKey))\r\n handleEffectUpdates(\r\n handleActionsToEffects({\r\n fieldValues: { ...fieldValues, ...params, ...reduxVals },\r\n conditions: conditions.onLoad[sec],\r\n global: [],\r\n extras: { runEvents: false, },\r\n name: 'GLOBAL',\r\n EventType: 'OL'\r\n })\r\n )\r\n })\r\n }\r\n }, [])\r\n\r\n const handleEffectUpdates = async (res) => {\r\n if (res)\r\n await Promise.all(res).then(results => {\r\n dispatchFieldsChange({\r\n type: 'updates',\r\n updates: groupByType(results)\r\n })\r\n })\r\n }\r\n\r\n const handleMapChanges = (results) => {\r\n let objKeys = Object.keys(results);\r\n let result = []\r\n objKeys.forEach(res => {\r\n let obj = {\r\n key: res,\r\n value: results[res]\r\n }\r\n result.push(obj)\r\n })\r\n dispatchFieldsChange({\r\n type: 'updates',\r\n updates: ({\r\n map: result\r\n\r\n })\r\n\r\n })\r\n }\r\n\r\n const handleFieldValue = (e, runBussinessRule = true) => {\r\n const { name, value, checked } = e.target\r\n\r\n const { dataset } = e && e.currentTarget ? e.currentTarget : { dataset: null };\r\n\r\n let tempConditions = _.cloneDeep(conditions)\r\n let validaterules = [];\r\n let errorExists = (fieldProps[name] && fieldProps[name].error) || null\r\n let validmapkeys = fieldValidations ? fieldValidations : null\r\n if (validationMapKeys && validationMapKeys[name] && fieldValidations[validationMapKeys[name]]) {\r\n validaterules.push(fieldValidations[validationMapKeys[name]])\r\n }\r\n else if (validmapkeys && validmapkeys[name]) {\r\n validaterules.push(fieldValidations[name])\r\n }\r\n const errorObj = fieldValidate(validaterules, value)\r\n if (errorObj) {\r\n if (errorObj.error)\r\n errors.current = true\r\n dispatchFieldsChange({\r\n type: 'prop',\r\n name: name,\r\n value: {\r\n error: errorObj.error,\r\n helperText: errorObj.errorText\r\n },\r\n dataAttr: dataset\r\n })\r\n }\r\n errors.current = false;\r\n let sectionname = fieldsinSection ? fieldsinSection[name] : name;\r\n let proceed = true;\r\n dispatch(setResetValue({ name: name, isReset: null }))\r\n if (runBussinessRule && ((conditions && conditions.onChange && conditions.onChange[sectionname] && conditions.onChange[sectionname].fields) || (conditions && conditions.onChange && conditions.onChange.GLOBAL && conditions.onChange.GLOBAL.fields))) {\r\n setPrevFeildValues(fieldValues);\r\n let eachCondition = (conditions.onChange[sectionname] && conditions.onChange[sectionname].fields) || null;\r\n let globalCondition = (conditions.onChange.GLOBAL && conditions.onChange.GLOBAL.fields) || null;\r\n\r\n //each filter\r\n let filterEachRules = [];\r\n // eslint-disable-next-line no-unused-expressions\r\n tempConditions.onChange[sectionname] && tempConditions.onChange[sectionname].rules.map(each => {\r\n if (each.fields && each.fields.includes(name)) {\r\n filterEachRules.push(each)\r\n }\r\n }) || [];\r\n let OnCondition = tempConditions.onChange[sectionname] || {};\r\n OnCondition['rules'] = filterEachRules;\r\n // Global filter\r\n let filterGlobalRules = [];\r\n tempConditions.onChange.GLOBAL && tempConditions.onChange.GLOBAL.rules.map(each => {\r\n if (each.fields && each.fields.includes(name)) {\r\n filterGlobalRules.push(each)\r\n }\r\n })\r\n let OnGlbalCondition = tempConditions.onChange.GLOBAL || {};\r\n OnGlbalCondition['rules'] = filterGlobalRules;\r\n if ((eachCondition && eachCondition.includes(name)) || (globalCondition && globalCondition.includes(name))) {\r\n const val = handleValue(name, value, checked);\r\n let reduxVals = {}\r\n if (fieldValues['GetParentValues']) {\r\n /** GetParentValues: should be add to jsons to data ( applicant, compnay) get from parent data */\r\n reduxVals = parentRecordVals\r\n }\r\n if (name === 'save') {\r\n proceed = !saveFields();\r\n localStorage.setItem('SaveCurrentRecord', 'N')\r\n }\r\n proceed && handleEffectUpdates(\r\n handleActionsToEffects({\r\n fieldValues: { ...fieldValues, [name]: val, ...params, ...reduxVals },\r\n conditions: OnCondition || [],\r\n global: OnGlbalCondition,\r\n extras: { [name]: dataset, dataAttr: { ...dataAttr, [name]: dataset }, runEvents: true, },\r\n onEvent: name !== 'save' ? (conditions.onEvent && conditions.onEvent.GLOBAL) : {},\r\n info: conditions.info ? conditions.info : null,\r\n name: name === 'save' || name === 'edit' ? null : name,\r\n EventType: 'OC'\r\n })\r\n )\r\n dispatchFieldsChange({\r\n type: 'value',\r\n name: name,\r\n value: val,\r\n dataAttr: dataset\r\n })\r\n if (!errorObj || !errorObj.error) {\r\n dispatchFieldsChange({\r\n type: 'prop',\r\n name: name,\r\n value: {\r\n error: errorExists ? false : fieldProps[name].error,\r\n helperText: errorExists ? null : fieldProps[name].errorText,\r\n },\r\n dataAttr: dataset,\r\n })\r\n }\r\n\r\n dispatchSharedValueChange && sharedProps[name] && dispatchSharedValueChange({\r\n type: 'update',\r\n name: sharedProps[name],\r\n value: val\r\n })\r\n\r\n }\r\n else if (errorObj && errorObj.error) {\r\n }\r\n else {\r\n const val = handleValue(name, value, checked)\r\n dispatchFieldsChange({\r\n type: 'value',\r\n name: name,\r\n value: val,\r\n dataAttr: dataset\r\n })\r\n dispatchFieldsChange({\r\n type: 'prop',\r\n name: name,\r\n value: {\r\n error: errorExists ? false : fieldProps[name].error,\r\n helperText: errorExists ? null : fieldProps[name].errorText,\r\n },\r\n dataAttr: dataset\r\n })\r\n\r\n\r\n dispatchSharedValueChange && sharedProps[name] && dispatchSharedValueChange({\r\n type: 'update',\r\n name: sharedProps[name],\r\n value: val,\r\n dataAttr: dataset\r\n })\r\n }\r\n }\r\n else {\r\n const val = handleValue(name, value, checked)\r\n dispatchFieldsChange({\r\n type: 'value',\r\n name: name,\r\n value: val,\r\n dataAttr: dataset\r\n })\r\n if (!errorObj)\r\n dispatchFieldsChange({\r\n type: 'prop',\r\n name: name,\r\n value: {\r\n error: errorExists ? false : fieldProps[name].error,\r\n helperText: errorExists ? null : fieldProps[name].errorText,\r\n },\r\n dataAttr: dataset\r\n })\r\n\r\n dispatchSharedValueChange && sharedProps[name] && dispatchSharedValueChange({\r\n type: 'update',\r\n name: sharedProps[name],\r\n value: val\r\n })\r\n }\r\n }\r\n\r\n\r\n\r\n // change the handlefieldvalue code\r\n const handleValue = (name, value, checked) => {\r\n const { changefieldto, type, custom } = components[name]\r\n let changeType = changefieldto || type;\r\n let val = value\r\n switch (changeType) {\r\n case 'CF':\r\n case 'CSC':\r\n case 'checkbox': {\r\n return checkBoxTransformProps[checked.toString()]\r\n }\r\n default:\r\n return value;\r\n }\r\n }\r\n\r\n const saveFields = () => {\r\n let errorlist = {};\r\n let saveStatus = false\r\n if (errors.current)\r\n console.log('Please Fix errors')\r\n else {\r\n let fields = Object.keys(fieldProps)\r\n const errorFields = fields.filter(each => {\r\n if (fieldProps[each].required) {\r\n if (fieldValues[each] && fieldValues[each] !== '') {\r\n if (fieldProps[each].error) {\r\n saveStatus = true\r\n return true\r\n }\r\n else {\r\n return false\r\n }\r\n }\r\n else {\r\n saveStatus = true\r\n return true\r\n }\r\n }\r\n if (fieldProps[each].error) {\r\n saveStatus = true\r\n return true\r\n }\r\n else return false\r\n })\r\n errorFields.map(each => {\r\n if (!(fieldProps && fieldProps[each] && fieldProps[each].error) && fieldProps[each].required) {\r\n return errorlist[each] = {\r\n error: true,\r\n helperText: `${fieldLabelsinSection ? fieldLabelsinSection[each] : fieldProps[each].label ? fieldProps[each].label : each} is Required`,\r\n }\r\n }\r\n else {\r\n return errorlist[each] = {\r\n error: true,\r\n helperText: fieldProps[each].helperText ? fieldProps[each].helperText : '',\r\n }\r\n }\r\n\r\n })\r\n dispatchFieldsChange({\r\n type: 'required',\r\n fields: errorlist\r\n })\r\n }\r\n return saveStatus\r\n }\r\n\r\n\r\n //custom components (editor/ multiselect)\r\n const updateSections = (res, triggersave = false) => {\r\n dispatchFieldsChange({\r\n type: 'updates',\r\n updates: res,\r\n triggersave: triggersave\r\n })\r\n }\r\n\r\n\r\n\r\n function setCustomFields(customprops) {\r\n dispatchFieldsChange({\r\n type: 'customfields',\r\n ...customprops\r\n })\r\n }\r\n\r\n\r\n\r\n const handleButtonClick = (e, callRequest) => {\r\n const { name } = e.currentTarget\r\n let proceed = true;\r\n let sectionname = fieldsinSection ? fieldsinSection[name] : name;\r\n if ((conditions && conditions.onChange && conditions.onChange[name]) || (conditions && conditions.onChange && conditions.onChange[sectionname] && conditions.onChange[sectionname].fields)) {\r\n counter.current++\r\n if (name === 'save' || name === 'IsLocked' || callRequest) {\r\n proceed = !saveFields();\r\n localStorage.setItem('SaveCurrentRecord', 'N')\r\n }\r\n proceed && handleEffectUpdates(\r\n handleActionsToEffects({\r\n fieldValues: { ...fieldValues, ...sharedProps, ...params, IsDuplicate: name === 'saveduplicate' ? 'Y' : 'N' },\r\n conditions: (conditions.onChange[name] || conditions.onChange[sectionname]) || [],\r\n extras: { runEvents: true, },\r\n onEvent: name !== 'save' ? (conditions.onEvent && conditions.onEvent[name]) : {},\r\n info: conditions.info ? conditions.info : null,\r\n EventType: 'OC'\r\n })\r\n )\r\n }\r\n }\r\n\r\n const handleButtonSave = (e) => {\r\n const { name } = e.currentTarget\r\n let proceed = true;\r\n let tempConditions = conditions.afterSave\r\n let sendvalues = { ...fieldValues, ...sharedProps, ...params }\r\n proceed = !saveFields();\r\n if (!proceed) {\r\n dispatchFieldsChange({\r\n type: 'value',\r\n name: name,\r\n value: sendvalues[name],\r\n dataAttr: dataAttr\r\n })\r\n }\r\n let tempsendvalues = { ...fieldValues, ...sharedProps, ...params }\r\n sendvalues = tempsendvalues;\r\n if (removeValues && removeValues[name]) {\r\n removeValues[name].forEach(fields => {\r\n delete sendvalues[fields]\r\n })\r\n }\r\n\r\n\r\n proceed && handleEffectUpdates(\r\n handleActionsToEffects({\r\n fieldValues: sendvalues,\r\n conditions: tempConditions[name],\r\n global: [], //(tempConditions && tempConditions.GLOBAL) ||\r\n extras: { runEvents: tempConditions[name].runEvents ? true : false, },// based on onload and onsave,\r\n EventType: 'AS'\r\n })\r\n )\r\n\r\n }\r\n\r\n const handlerowClick = (e, rowData) => {\r\n const { name } = e.target\r\n if (conditions && conditions.onChange && conditions.onChange[name]) {\r\n counter.current++\r\n handleEffectUpdates(\r\n handleActionsToEffects({\r\n fieldValues: { ...fieldValues, ...sharedProps, [displayName]: rowData, ...params },\r\n conditions: conditions.onChange[name] || [],\r\n EventType: 'OC'\r\n\r\n })\r\n )\r\n }\r\n }\r\n\r\n const onConfirmationSubmit = () => {\r\n let sendvalues = { ...fieldValues, ...sharedProps, ...params };\r\n if (removeValues) {\r\n removeValues.forEach(fields => {\r\n delete sendvalues[fields]\r\n })\r\n }\r\n if (conditions && conditions.onChange && conditions.onChange['confirmation']) {\r\n handleEffectUpdates(\r\n handleActionsToEffects({\r\n fieldValues: sendvalues,\r\n conditions: conditions.onChange['confirmation'] || [],\r\n extras: { runEvents: conditions.onChange['confirmation'].runEvents ? true : false, },\r\n EventType: 'OC'\r\n })\r\n )\r\n }\r\n }\r\n\r\n const onConfirmationClose = () => {\r\n dispatchFieldsChange({\r\n type: 'value',\r\n name: 'confirmation',\r\n value: false,\r\n })\r\n dispatchFieldsChange({\r\n type: 'value',\r\n name: 'save',\r\n value: false,\r\n })\r\n let sendvalues = { ...fieldValues, ...sharedProps, ...params };\r\n if (removeValues) {\r\n removeValues.forEach(fields => {\r\n delete sendvalues[fields]\r\n })\r\n }\r\n sendvalues['confirmation'] = false\r\n if (conditions && conditions.onChange && conditions.onChange['confirmation']) {\r\n handleEffectUpdates(\r\n handleActionsToEffects({\r\n fieldValues: sendvalues,\r\n conditions: conditions.onChange['confirmation'] || [],\r\n extras: { runEvents: conditions.onChange['confirmation'].runEvents ? true : false, },\r\n EventType: 'OC'\r\n })\r\n )\r\n }\r\n }\r\n\r\n\r\n // need to remove the code here and extend the functionality function\r\n useEffect(() => {\r\n let oldconditionsarr = [];\r\n let newconditionarr = [];\r\n if (mapActionsToEffects && conditions) {\r\n for (let key in mapActionsToEffects.onLoad) {\r\n oldconditionsarr.push(key);\r\n };\r\n for (let key in conditions.onLoad) {\r\n newconditionarr.push(key);\r\n };\r\n let oldvalues = newconditionarr.filter(x => !oldconditionsarr.includes(x));\r\n // if (oldvalues.length === 0)\r\n // oldvalues = newconditionarr// removed the code because every request is been called multiple times\r\n let tempFieldValues = fieldValues\r\n if (tempFieldValues && tempFieldValues['GetParentValues']) {\r\n let reduxVals = parentRecordVals\r\n tempFieldValues = { ...tempFieldValues, ...reduxVals }\r\n }\r\n for (let i = 0; i < oldvalues.length; i++) {\r\n let onloadname = oldvalues[i]\r\n if (conditions && conditions.onLoad && conditions.onLoad[onloadname]) { // dependency and bussiness rules checking\r\n handleEffectUpdates(\r\n handleActionsToEffects({\r\n fieldValues: { ...tempFieldValues, ...sharedProps, ...params },\r\n conditions: (conditions.onLoad[onloadname]),\r\n global: conditions.onLoad.GLOBAL,\r\n onEvent: (conditions.onEvent && conditions.onEvent['GLOBAL']) ? conditions.onEvent['GLOBAL'] : {},\r\n name: 'GLOBAL',\r\n EventType: 'OL'\r\n })\r\n )\r\n }\r\n }\r\n }\r\n // counterval = 1;\r\n }, [(conditions && conditions.onLoad)])\r\n\r\n //important ex:\r\n const componentsCreation = (fieldNames, values) => {\r\n if (fieldProps)\r\n try {\r\n return fieldNames.reduce((accum, each) => {\r\n const { type, custom, ...otherProps } = fieldProps[each]\r\n // console.log(type, fieldProps[each])\r\n const EachComp = custom ? (customTypes[type] || hookTypes[type]) : (fieldTypes[type] || hookTypes[type])\r\n if (type === 'Map')\r\n accum[each] = <EachComp {...otherProps} {...mapSettingsJson} value={values[each]} handleMapChanges={handleMapChanges}\r\n handlerowClick={handlerowClick} params={params} accessPermissions={props.accessPermissions} fieldValues={values} />\r\n else accum[each] = <EachComp sharedProps={sharedProps} {...otherProps} value={values[each]} handleFieldValue={handleFieldValue} onClose={onConfirmationClose}\r\n onSubmit={onConfirmationSubmit} handleButtonClick={handleButtonClick} handleButtonSave={handleButtonSave} handlerowClick={handlerowClick}\r\n handleEffectUpdates={handleEffectUpdates} accessPermissions={props.accessPermissions} fieldValues={values} fieldProps={fieldProps} />\r\n return accum\r\n }, {})\r\n } catch (ex) {\r\n console.error(\"exception \" + ex)\r\n }\r\n }\r\n\r\n const openedSectionsRules = (sections, prevSections) => {\r\n let secKeys = (conditions && conditions.onLoad && Object.keys(conditions.onLoad)) || []\r\n if (secKeys.length > 0)\r\n (secKeys || []).map(sec => {\r\n if (sec !== 'GLOBAL' && (prevSections[sec] != sections[sec]) && conditions.onLoad[sec].onSectionKey)\r\n handleEffectUpdates(\r\n handleActionsToEffects({\r\n fieldValues: { ...fieldValues, ...params },\r\n conditions: conditions.onLoad[sec],\r\n global: [],\r\n onEvent: (conditions.onEvent && conditions.onEvent['GLOBAL']) ? conditions.onEvent['GLOBAL'] : {},\r\n extras: { runEvents: false, },\r\n EventType: 'OL'\r\n })\r\n )\r\n })\r\n }\r\n\r\n //important\r\n const sectionsCreation = (sections) => {\r\n const { type, sectionNames, ...otherProps } = sections\r\n return {\r\n ...otherProps,\r\n sections: sectionNames.map(each => {\r\n const { group, ...otherNames } = layout[each]\r\n return layoutType && layoutTypes[layoutType] ?\r\n layoutTypes[layoutType]({\r\n layout: fieldsLayout[each],\r\n fields: componentsCreation(group.reduce((accum, each) => {\r\n return accum.concat(\r\n each.components.map(comp => {\r\n return comp.name\r\n })\r\n )\r\n }, []), fieldValues)\r\n }) :\r\n layoutTypes.default({\r\n layout: fieldsLayout[each],\r\n fields: componentsCreation(group.reduce((accum, each) => {\r\n return accum.concat(\r\n each.components.map(comp => {\r\n return comp.name\r\n })\r\n )\r\n }, []), fieldValues)\r\n })\r\n })\r\n }\r\n }\r\n\r\n if (fieldsinSectionNames) {\r\n let hiddenfieldssection = {}\r\n let allfieldssections = Object.values(fieldsinSectionNames)\r\n const fieldssectioncount = _.values(_.groupBy(allfieldssections)).map(d => ({ [d[0]]: d.length }));\r\n Object.keys(fieldProps).map(field => {\r\n\r\n if (!fieldProps[field].isVisible && _.isBoolean(fieldProps[field].isVisible)) {\r\n if (hiddenfieldssection[fieldsinSectionNames[field]]) {\r\n hiddenfieldssection[fieldsinSectionNames[field]] = hiddenfieldssection[fieldsinSectionNames[field]] + 1\r\n }\r\n else {\r\n hiddenfieldssection[fieldsinSectionNames[field]] = 1\r\n }\r\n\r\n }\r\n // new error\r\n //exisiting section\r\n if (!errorSections[fieldsinSectionNames[field]] || errorSections[fieldsinSectionNames[field]] === false || errorSections[fieldsinSectionNames[field]] !== true) {\r\n errorSections[fieldsinSectionNames[field]] = fieldProps[field].error ? true : false;\r\n }\r\n })\r\n for (const key in hiddenfieldssection) {\r\n if (_.find(fieldssectioncount, { [key]: hiddenfieldssection[key] })) {\r\n hideSections.push(key);\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n return [\r\n <Fragment>\r\n {sectionType && layoutTypes[sectionType] ?\r\n layoutTypes[sectionType]({\r\n ...sectionsCreation({ ...sections, openedSectionsRules, errorSections, hideSections })\r\n }) :\r\n layoutTypes.default({\r\n layout: fieldsLayout,\r\n fields: componentsCreation(fieldProps, fieldValues)\r\n })\r\n }\r\n </Fragment>,\r\n fieldValues,\r\n fieldProps,\r\n fieldKeysValues,\r\n updateSections,\r\n handleFieldValue,\r\n setCustomFields,\r\n saveFields,\r\n conditions,\r\n fieldMappedColName\r\n ]\r\n}\r\n\r\n","/**\r\n *********************************************************\r\n Description: Textbox component. .\r\n Required props: type,value.\r\n limitations : N/A.\r\n *********************************************************\r\n**/\r\n\r\nimport React, { Fragment, useState, useEffect } from \"react\";\r\nimport OtpInput from 'react-otp-input';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport { Tooltip, Typography } from '@material-ui/core';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport DefaultSettings from './settings';\r\n\r\nexport default function (props) {\r\n const { value, handleFieldValue, extraProps, disabled, error, required, fullWidth, tooltip, max, contexthelp, length, ...otherProps } = props\r\n const { label, helperText, name } = otherProps;\r\n\r\n return (\r\n <FormControl className={name} fullWidth={fullWidth ? fullWidth : true} error={error} required={required}>\r\n <InputLabel style={{ fontWeight: 'bold', color: error ? 'red' : 'black' }} shrink> {label} {tooltip && <Tooltip title={tooltip ? tooltip : null}\r\n placement=\"bottom-start\" ><HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em',color: '#007bff' }} onClick={(evt) => contexthelp ?\r\n DefaultSettings.showDrawer(contexthelp) : evt.preventDefault()} />\r\n </Tooltip>} </InputLabel> \r\n <OtpInput\r\n className=\"text-secondary\"\r\n style={{ color: 'grey' }}\r\n value={value}\r\n onChange={(otp) => { handleFieldValue({ target: { value: otp, name: name, checked: false }, currentTarget: { dataset: null } }) }}\r\n numInputs={max || 1}\r\n separator={<p> </p>}\r\n inputStyle={{ width: '2em', height: '2em' }}\r\n isDisabled={disabled}\r\n hasErrored={error}\r\n />\r\n {helperText && <FormHelperText>{helperText}</FormHelperText>}\r\n </FormControl>\r\n )\r\n}","import Fab from '@material-ui/core/Fab'\r\nimport CheckBoxOutlineBlank from '@material-ui/icons/Check'\r\nimport Close from '@material-ui/icons/Close'\r\nimport React, { Fragment, useEffect, useRef, useState } from 'react'\r\nimport SignaturePad from 'react-signature-canvas'\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport DefaultSettings from './settings';\r\n\r\n\r\nexport default function Signature(props) {\r\n const { value, name, helperText, error, label, edit, contexthelp, tooltip, fullWidth, required, disabled, handleFieldValue } = props\r\n const sigPad = useRef(null)\r\n\r\n const clear = () => {\r\n sigPad.current.clear()\r\n }\r\n\r\n useEffect(() => {\r\n if (value !== \"\" || value !== null || value !== undefined) {\r\n sigPad.current.getSignaturePad().fromDataURL(value)\r\n }\r\n }, [value])\r\n\r\n const trim = () => {\r\n let events = { target: { value: sigPad.current.getSignaturePad().toDataURL('image/png'), name: name, checked: false }, currentTarget: { dataset: null } }\r\n handleFieldValue(events);\r\n }\r\n\r\n return <FormControl fullWidth={fullWidth ? fullWidth : true} error={error} required={required}>\r\n {label && tooltip && <Fragment>\r\n <InputLabel shrink>{label} \r\n <Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em', color: '#007bff', marginLeft: 5 }} onClick={(evt) => contexthelp ?\r\n DefaultSettings.showDrawer(contexthelp) : evt.preventDefault()} />\r\n </Tooltip></InputLabel> \r\n </Fragment>}\r\n {label && !tooltip && <Fragment>\r\n <InputLabel shrink>{label}\r\n </InputLabel>\r\n </Fragment>}\r\n <div className='row'>\r\n <div className='row m-2 col-sm-6 border'>\r\n <SignaturePad disabled={disabled || false} clearOnResize={true} ref={sigPad} canvasProps={{ width: 800, height: 100, className: 'sigCanvas' }} />\r\n </div><br />\r\n </div>\r\n <div className='row col-sm-6' >\r\n <Fab variant=\"extended\" className=' col-sm-6' size=\"small\" color=\"secondary\" aria-label=\"add\" onClick={clear}> <Close /> Clear </Fab>\r\n <Fab variant=\"extended\" className=' col-sm-6' size=\"small\" color=\"secondary\" aria-label=\"add\" onClick={trim}> <CheckBoxOutlineBlank />OK </Fab>\r\n </div>\r\n {helperText && <FormHelperText>{helperText}</FormHelperText>}\r\n </FormControl>\r\n\r\n}\r\n\r\n","import React from 'react';\r\nimport { fade, makeStyles } from '@material-ui/core/styles';\r\nimport Popper from '@material-ui/core/Popper';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport DoneIcon from '@material-ui/icons/Done';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport InputBase from '@material-ui/core/InputBase';\r\nimport Chip from \"@material-ui/core/Chip\";\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport VisibilityIcon from '@material-ui/icons/Visibility';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport VisibilityOffIcon from '@material-ui/icons/VisibilityOff';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n width: '90%',\r\n fontSize: 13,\r\n },\r\n button: {\r\n fontSize: 13,\r\n width: '100%',\r\n textAlign: 'left',\r\n paddingBottom: 8,\r\n color: '#586069',\r\n fontWeight: 600,\r\n '&:hover,&:focus': {\r\n color: '#0366d6',\r\n },\r\n '& span': {\r\n width: '100%',\r\n },\r\n '& svg': {\r\n width: 16,\r\n height: 16,\r\n },\r\n\r\n },\r\n noMaxWidth: {\r\n maxWidth: 'none',\r\n },\r\n tag: {\r\n marginTop: 3,\r\n height: 20,\r\n padding: '.15em 4px',\r\n fontWeight: 600,\r\n lineHeight: '15px',\r\n borderRadius: 2,\r\n },\r\n popper: {\r\n border: '1px solid rgba(27,31,35,.15)',\r\n boxShadow: '0 3px 12px rgba(27,31,35,.15)',\r\n borderRadius: 3,\r\n width: 300,\r\n zIndex: 1,\r\n fontSize: 13,\r\n color: '#586069',\r\n backgroundColor: '#f6f8fa',\r\n },\r\n header: {\r\n borderBottom: '1px solid #e1e4e8',\r\n padding: '8px 10px',\r\n fontWeight: 600,\r\n },\r\n inputBase: {\r\n padding: 10,\r\n width: '100%',\r\n borderBottom: '1px solid #dfe2e5',\r\n '& input': {\r\n borderRadius: 4,\r\n backgroundColor: theme.palette.common.white,\r\n padding: 8,\r\n transition: theme.transitions.create(['border-color', 'box-shadow']),\r\n border: '1px solid #ced4da',\r\n fontSize: 14,\r\n '&:focus': {\r\n boxShadow: `${fade(theme.palette.primary.main, 0.25)} 0 0 0 0.2rem`,\r\n borderColor: theme.palette.primary.main,\r\n },\r\n },\r\n },\r\n paper: {\r\n boxShadow: 'none',\r\n margin: 0,\r\n color: '#586069',\r\n fontSize: 13,\r\n },\r\n option: {\r\n minHeight: 'auto',\r\n alignItems: 'flex-start',\r\n padding: 8,\r\n '&[aria-selected=\"true\"]': {\r\n backgroundColor: 'transparent',\r\n },\r\n '&[data-focus=\"true\"]': {\r\n backgroundColor: theme.palette.action.hover,\r\n },\r\n },\r\n popperDisablePortal: {\r\n position: 'relative',\r\n },\r\n iconSelected: {\r\n width: 17,\r\n height: 17,\r\n marginRight: 5,\r\n marginLeft: -2,\r\n },\r\n color: {\r\n width: 14,\r\n height: 14,\r\n flexShrink: 0,\r\n borderRadius: 3,\r\n marginRight: 8,\r\n marginTop: 2,\r\n },\r\n text: {\r\n flexGrow: 1,\r\n },\r\n close: {\r\n opacity: 0.6,\r\n width: 18,\r\n height: 18,\r\n },\r\n}));\r\n\r\nexport default function GitHubLabel(props) {\r\n const classes = useStyles();\r\n const [anchorEl, setAnchorEl] = React.useState({ \"company 1\": null, \"company 2\": null });\r\n const [labelsList, setLabelsList] = React.useState({ \"company 1\": labels, \"company 2\": labels }); //userslist as per company\r\n const [value, setValue] = React.useState({ \"company 1\": [], \"company 2\": [] });\r\n const [pendingValue, setPendingValue] = React.useState({ \"company 1\": [], \"company 2\": [] });\r\n\r\n const [usersList, setUsersList] = React.useState([\"company 1\", \"company 2\"]);\r\n const [visible, setVisible] = React.useState({ \"company 1\": false, \"company 2\": false });\r\n\r\n // const [anchorEl, setAnchorEl] = React.useState({});\r\n // const [labelsList, setLabelsList] = React.useState({}); //userslist as per company\r\n // const [value, setValue] = React.useState({});\r\n // const [pendingValue, setPendingValue] = React.useState({});\r\n\r\n // const [usersList, setUsersList] = React.useState([]);\r\n // const [visible, setVisible] = React.useState({});\r\n\r\n\r\n const handleClick = (event, name) => {\r\n setPendingValue({ ...pendingValue, [name]: value[name] });\r\n setAnchorEl({ ...anchorEl, [name]: event.currentTarget });\r\n };\r\n\r\n const viewUser = (e, name) => {\r\n setVisible({ ...visible, [name]: true });\r\n }\r\n\r\n const hideUser = (e, name) => {\r\n setVisible({ ...visible, [name]: false });\r\n }\r\n\r\n const handleClose = (name, event, reason) => {\r\n if (reason === 'toggleInput') {\r\n return;\r\n }\r\n setValue(pendingValue);\r\n if (anchorEl[name]) {\r\n anchorEl[name].focus();\r\n }\r\n setAnchorEl({ ...anchorEl, [name]: null });\r\n };\r\n\r\n\r\n return (\r\n <React.Fragment>\r\n {usersList.map(each => {\r\n return (\r\n <div>\r\n <div>\r\n <span>{each}</span>\r\n <span className=\"pl-5\">\r\n <IconButton title={\"Edit Users\"} color={\"primary\"} onClick={e => handleClick(e, each)}> <EditIcon fontSize=\"small\" />\r\n </IconButton>\r\n </span>\r\n {!visible[each] && <span className=\"pl-2\">\r\n <IconButton title={\"View Users\"} color={\"primary\"} onClick={e => viewUser(e, each)}> <VisibilityOffIcon fontSize=\"small\" />\r\n </IconButton>\r\n </span>}\r\n {visible[each] && <span className=\"pl-2\">\r\n <IconButton title={\"Hide Users\"} color={\"primary\"} onClick={e => hideUser(e, each)}> <VisibilityIcon fontSize=\"small\" />\r\n </IconButton>\r\n </span>}\r\n </div>\r\n {visible[each] && <div className={classes.root}>\r\n {value[each].map((label, getTagProps) => (\r\n <Chip\r\n variant=\"outlined\"\r\n label={label.name}\r\n />\r\n ))}\r\n </div>}\r\n <Popper\r\n open={Boolean(anchorEl[each])}\r\n anchorEl={anchorEl[each]}\r\n placement=\"bottom-start\"\r\n className={classes.popper}\r\n >\r\n <div className={classes.header}>Add users for {each}</div>\r\n <Autocomplete\r\n open\r\n onClose={e => handleClose(each, e)}\r\n multiple\r\n classes={{\r\n paper: classes.paper,\r\n option: classes.option,\r\n popperDisablePortal: classes.popperDisablePortal,\r\n }}\r\n value={pendingValue[each]}\r\n onChange={(event, newValue) => {\r\n setPendingValue({ ...pendingValue, [each]: newValue });\r\n }}\r\n disableCloseOnSelect\r\n disablePortal\r\n renderTags={() => null}\r\n noOptionsText=\"No labels\"\r\n renderOption={(option, { selected }) => (\r\n <React.Fragment>\r\n <DoneIcon\r\n className={classes.iconSelected}\r\n style={{ visibility: selected ? 'visible' : 'hidden' }}\r\n />\r\n <div className={classes.text}>\r\n {option.name}\r\n </div>\r\n <CloseIcon\r\n className={classes.close}\r\n style={{ visibility: selected ? 'visible' : 'hidden' }}\r\n />\r\n </React.Fragment>\r\n )}\r\n options={[...labelsList[each]].sort((a, b) => {\r\n // Display the selected labels first.\r\n let ai = value[each].indexOf(a);\r\n ai = ai === -1 ? value[each].length + labelsList[each].indexOf(a) : ai;\r\n let bi = value[each].indexOf(b);\r\n bi = bi === -1 ? value[each].length + labelsList[each].indexOf(b) : bi;\r\n return ai - bi;\r\n })}\r\n getOptionLabel={(option) => option.name}\r\n renderInput={(params) => (\r\n <InputBase\r\n ref={params.InputProps.ref}\r\n inputProps={params.inputProps}\r\n autoFocus\r\n className={classes.inputBase}\r\n />\r\n )}\r\n />\r\n </Popper>\r\n </div>\r\n )\r\n })}\r\n </React.Fragment>\r\n );\r\n}\r\n\r\n\r\nconst labels = [\r\n {\r\n name: 'user 1',\r\n },\r\n {\r\n name: 'user 2',\r\n },\r\n {\r\n name: 'user 3',\r\n },\r\n {\r\n name: 'user 4',\r\n },\r\n {\r\n name: 'user 5',\r\n },\r\n {\r\n name: 'user 6',\r\n },\r\n {\r\n name: 'user 7',\r\n },\r\n {\r\n name: 'user 8',\r\n },\r\n {\r\n name: 'user 9',\r\n },\r\n {\r\n name: 'user 10',\r\n },\r\n {\r\n name: 'user 11',\r\n },\r\n {\r\n name: 'user 12',\r\n },\r\n {\r\n name: 'user 13',\r\n },\r\n {\r\n name: 'user 14',\r\n },\r\n {\r\n name: 'user 15',\r\n },\r\n {\r\n name: 'user 16',\r\n },\r\n {\r\n name: 'user 17',\r\n },\r\n {\r\n name: 'user 18',\r\n },\r\n {\r\n name: 'user 19',\r\n },\r\n {\r\n name: 'user 20',\r\n },\r\n {\r\n name: 'user 21',\r\n },\r\n {\r\n name: 'user 22',\r\n },\r\n {\r\n name: 'user 23',\r\n },\r\n {\r\n name: 'user 24',\r\n },\r\n {\r\n name: 'user 25',\r\n },\r\n {\r\n name: 'user 26',\r\n },\r\n {\r\n name: 'user 27',\r\n },\r\n {\r\n name: 'user 28',\r\n },\r\n {\r\n name: 'user 29',\r\n },\r\n {\r\n name: 'user 30',\r\n },\r\n];\r\n","import React, { Fragment, useEffect, useState, useRef } from \"react\"\r\nimport Autocomplete from '../components/checkautocomplete';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport { ListItemSecondaryAction } from \"@material-ui/core\";\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nconst _ = require('lodash');\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n //width: 500,\r\n '& > * + *': {\r\n marginTop: theme.spacing(3),\r\n },\r\n },\r\n}));\r\n\r\n\r\n\r\nexport default function Tags(props) {\r\n const { name, Name, value, handleFieldChange, formattype, customnoticesave, options, dropdownvalues, dataItem, defaultSelValue, tooltip, edit, transformProps, label, required, helperText, error } = props\r\n const classes = useStyles();\r\n let items = dropdownvalues || []\r\n //let defaultitems = value || [];\r\n\r\n // const handleChange = (event, values) => {\r\n // let resultdata = values.map(a => a.Id);\r\n // let stringformatvalues = [...new Set(resultdata)].join()\r\n\r\n // const e = {\r\n // target: {\r\n // name: name || Name || options.name,\r\n // value: values\r\n // }}\r\n\r\n // }\r\n // defaultitems = values\r\n // if (options.savestringformat) {\r\n // const e1 = {\r\n // target: {\r\n // name: name || Name || options.name,\r\n // value: stringformatvalues\r\n // }\r\n // }\r\n // props.handleFieldChange(e1)\r\n // defaultitems = dropdownvalues.filter(a => value.split(',').includes(a.id.toString()))\r\n // } else\r\n // props.handleFieldChange(e)\r\n // }\r\n\r\n // if (options.savestringformat) {\r\n // defaultitems = dropdownvalues ? dropdownvalues.filter(a => value.split(',').includes(a.id.toString())) : []\r\n // }\r\n\r\n\r\n // if (dataItem && options.itemname) {\r\n // if (dataItem[options.itemname] && dataItem[options.itemname] != \"\") {\r\n // let dataitemvalue = dataItem[options.itemname];\r\n // if (dataitemvalue) {\r\n // dataitemvalue = dataitemvalue.toString();\r\n // let dataitemarray = dataitemvalue.split(\",\");\r\n // if (Array.isArray(dataitemarray)) {\r\n // defaultitems = items.filter(a => dataitemarray.includes(a.id.toString()))\r\n // }\r\n // }\r\n // }\r\n // } else if (defaultSelValue) {\r\n // let selitemarray = defaultSelValue.split(\",\");\r\n // if (Array.isArray(selitemarray)) {\r\n // defaultitems = items.filter(a => selitemarray.includes(a.id.toString()))\r\n // }\r\n // }\r\n\r\n\r\n\r\n let displayname\r\n if (transformProps) {\r\n if (value && value !== '' && !Array.isArray(value) && Array.isArray(items)) {\r\n let val = value && value.split(',');\r\n let valarray = items && items.filter(function (item) { return val.indexOf((item[transformProps.value]).toString()) > -1 });\r\n displayname = (_.map(valarray, transformProps.label)).join(', ')\r\n }\r\n else if (value && value !== '' && Array.isArray(value) && Array.isArray(items) && items && items.length > 0 && items[0].Id) {\r\n let val = value\r\n let valarray = []\r\n items.forEach(item => {\r\n if (val.includes(item.Id) || val.includes(String(item.Id))) {\r\n valarray.push(item.Name)\r\n }\r\n });\r\n displayname = valarray.join(',')\r\n }\r\n }\r\n\r\n const handleFieldAutoChange = (evt) => {\r\n if (formattype === \"A\") {\r\n handleFieldChange({ target: { value: evt.target.value.split(','), name: evt.target.name, checked: false }, currentTarget: { dataset: null } })\r\n }\r\n else handleFieldChange(evt)\r\n }\r\n\r\n if (edit === false) {\r\n // let resultdata = defaultitems.map(a => a.name || a.Name);\r\n // let displayvalues = [...new Set(resultdata)].join()\r\n //let getvalue = (items) => items.name || items.Name\r\n return <Fragment>\r\n {tooltip && <div > <Typography variant={'caption'} className=\"fw-bold\">{options.label} \r\n < Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em', color: '#007bff' }} />\r\n </Tooltip> </Typography> <Typography className=\"text-secondary\" variant={'body2'} color={'textPrimary'} >{displayname} </Typography>\r\n </div>}\r\n {!tooltip && <div > <Typography variant={'caption'} className=\"fw-bold\">{options.label} </Typography> <Typography className=\"text-secondary\" variant={'body2'} color={'textPrimary'} >{displayname} </Typography>\r\n </div>}\r\n </Fragment >\r\n }\r\n else {\r\n return (\r\n <div className={classes.root}>\r\n <Autocomplete\r\n label={label}\r\n error={error}\r\n name={name || Name}\r\n required={required}\r\n ismulti={true}\r\n value={value ? (formattype === 'A' ? value.join() : value) : \"\"}\r\n items={(Array.isArray(items) && items) || []}\r\n handleFieldValue={handleFieldAutoChange}\r\n extraProps={{ transformProps: transformProps }}\r\n\r\n />\r\n {helperText && <FormHelperText className='mt-1' error={true}>{helperText}</FormHelperText>}\r\n\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n","import React, { useReducer, useEffect, useRef, useState, Fragment, Component } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\nimport Card from \"@material-ui/core/Card\";\r\nimport CardMedia from \"@material-ui/core/CardMedia\";\r\nimport CardContent from \"@material-ui/core/CardContent\";\r\nimport Divider from \"@material-ui/core/Divider\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\n\r\n\r\n\r\nconst styles = muiBaseTheme => ({\r\n card: {\r\n width: 220,\r\n margin: \"10px\",\r\n transition: \"0.3s\",\r\n boxShadow: \"0 8px 40px -12px rgba(0,0,0,0.3)\",\r\n \"&:hover\": {\r\n boxShadow: \"0 16px 70px -12.125px rgba(0,0,0,0.3)\"\r\n },\r\n display: \"inline-block\",\r\n textAlign:\"center\"\r\n \r\n },\r\n media: {\r\n paddingTop: \"56.25%\"\r\n },\r\n content: {\r\n textAlign: \"left\",\r\n padding: muiBaseTheme.spacing.unit * 1,\r\n \"&:last-child\": {\r\n paddingBottom: 0\r\n }\r\n },\r\n divider: {\r\n margin: 0\r\n },\r\n heading: {\r\n fontWeight: \"bold\"\r\n },\r\n subheading: {\r\n lineHeight: 1.8\r\n },\r\n});\r\n\r\nfunction Cards(props) {\r\n const {classes} = props;\r\n \r\n return (\r\n props.componentlist && props.componentlist.map(each => {\r\n return <div className={classes.card}>\r\n <Card >\r\n <CardMedia/>\r\n <CardContent className={classes.content}>\r\n \r\n <Typography\r\n className={\"MuiTypography--subheading\"}\r\n variant={\"caption\"}\r\n display=\"block\"\r\n >\r\n {each.header}\r\n </Typography>\r\n <Typography variant=\"button\" display=\"block\" gutterBottom>\r\n {each.body}\r\n </Typography>\r\n <Divider className={classes.divider} light />\r\n <Typography\r\n className={\"MuiTypography--heading\"}\r\n variant={\"h6\"}\r\n gutterBottom\r\n >\r\n {each.footer}\r\n </Typography>\r\n </CardContent>\r\n </Card>\r\n </div>})\r\n )\r\n}\r\n\r\nCards = withStyles(styles)(Cards);\r\nexport default (withRouter)(Cards);\r\n","/**\r\n *********************************************************\r\n Description: Switch component.\r\n Required props: type, value\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\nimport React, { Component, Fragment } from 'react';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Switch from '@material-ui/core/Switch';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport FormHelperText from '@material-ui/core/FormHelperText'\r\nimport Typography from '@material-ui/core/Typography';\r\nimport { green, red } from '@material-ui/core/colors';\r\nimport FormControl from '@material-ui/core/FormControl';\r\n\r\nconst styles = {\r\n root: {\r\n flexGrow: 1,\r\n },\r\n};\r\n\r\nconst GreenSwitch = withStyles({\r\n switchBase: {\r\n color: red[800],\r\n '&$checked': {\r\n color: green[700],\r\n },\r\n '&$checked + $track': {\r\n backgroundColor: green[700],\r\n },\r\n },\r\n checked: {},\r\n track: {},\r\n})(Switch);\r\n\r\nconst FormSwitch = (props) => {\r\n\r\n const { handleFieldChange, value, name, color, label, transformProps, disabled, edit, conditions, helperText, LabeltransformProps } = props;\r\n let disabledstatus = conditions && conditions.enable ? conditions.enable : disabled;\r\n let showvalue = 'In-Active';\r\n if (edit === false) {\r\n if (transformProps[value] === 'Y' || value === \"Y\") showvalue = 'Yes';\r\n if (transformProps[value] === 'N' || value === \"N\") showvalue = 'No';\r\n if (transformProps[value] === 'A' || value === \"A\") showvalue = 'Active';\r\n if (transformProps[value] === 'I' || value === \"I\") showvalue = 'In-Active';\r\n return <Fragment>\r\n <div > <Typography variant={'caption'} className=\"fw-bold\">{label}\r\n </Typography> <Typography variant={'body2'} color={'textPrimary'} className=\"text-secondary\">\r\n {showvalue} </Typography>\r\n </div>\r\n </Fragment >\r\n }\r\n else return (\r\n <Fragment>\r\n <FormControl required={props.required} error={props.errors || false}>\r\n <FormControlLabel\r\n control={\r\n <GreenSwitch\r\n checked={value ? (transformProps ? transformProps[value] : value) : false}\r\n onChange={handleFieldChange}\r\n //color={color || \"primary\"}\r\n //size='small'\r\n name={name}\r\n disabled={disabledstatus || false}\r\n />\r\n }\r\n label={<span style={{ fontSize: '12px' }}>{value ? (LabeltransformProps ? LabeltransformProps[value] : (label || '')) : label}</span>}\r\n />\r\n {helperText && <FormHelperText error>{helperText}</FormHelperText>}\r\n </FormControl>\r\n </Fragment>\r\n );\r\n}\r\n\r\n\r\nexport default withStyles(styles)(FormSwitch);","import React, { useEffect, useState, Fragment } from 'react'\r\nimport { getEnvVariable } from '../../../../modules/environmentalList';\r\nimport { createRequest, requestApi } from '../../helpers/rest';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport Dropdown from '../../../modules/form/cformdropdown';\r\nimport Switch from '../../../modules/form/cformswitch';\r\nimport TextBox from '../../../modules/form/cformtextbox';\r\nimport { IconButton } from '@material-ui/core';\r\n\r\nexport default function CustomAdminLayer(props) {\r\n const { label, transformProps, edit, error, required, isCombo, handleFieldChange, dropdownvalues } = props;\r\n const [domainlist, setDomain] = useState([]);\r\n const [add, setAdd] = useState(false);\r\n const [filtertypelist, setFilterType] = useState([])\r\n let value = props.value && JSON.parse(props.value) || [];\r\n\r\n useEffect(() => {\r\n const read = [\r\n {\r\n url: getEnvVariable('Admin') + `/api/Domains/values?domainkey=LAYER_FILTERTYPE`,\r\n type: 'get'\r\n },\r\n {\r\n \"url\": getEnvVariable('AdminConfig') + `/api/Domains/All`,\r\n type: 'get'\r\n },\r\n ]\r\n Promise.all(read.map(each => requestApi(createRequest(each, {})))).then(response => {\r\n const [list1, list2] = response;\r\n setDomain(list2)\r\n setFilterType(list1)\r\n\r\n })\r\n }, [])\r\n\r\n const handleChange = (evt, index, type = '') => {\r\n const { name } = evt.target;\r\n if (value && value[index]) {\r\n value[index][name] = (evt.target.value || type === 'TB' ? evt.target.value : (evt.target.checked && evt.target.checked === true ? 'Y' : 'N'))\r\n }\r\n else {\r\n let subvalue = Object.assign({}, { [name]: evt.target.value })\r\n value.push(subvalue)\r\n }\r\n setAdd(false);\r\n handleFieldChange({ target: { name: props.name, value: JSON.stringify(value), checked: false } })\r\n }\r\n\r\n const handleDelete = (evt, index) => {\r\n value.splice(index, 1);\r\n setAdd(false);\r\n handleFieldChange({ target: { name: props.name, value: JSON.stringify(value), checked: false } })\r\n }\r\n\r\n return (\r\n <div className=\"row col-sm-12\">\r\n <small className=\"fw-bold\" style={{ fontSize: '12px' }}>{label} {edit && <IconButton size=\"small\" color='primary' onClick={() => setAdd(true)} ><AddIcon /> </IconButton>}</small><br />\r\n {add && <LayerTemplate handleChange={handleChange} edit={true} dropdownvalues={dropdownvalues} filtertypelist={filtertypelist}\r\n domainlist={domainlist} transformProps={transformProps} />}\r\n {value && value.length > 0 && value.map((each, index) => {\r\n return <small className=\"row col-sm-12\"><LayerTemplate isCombo={isCombo} value={each} index={index} edit={edit}\r\n dropdownvalues={dropdownvalues} filtertypelist={filtertypelist} domainlist={domainlist} transformProps={transformProps}\r\n handleChange={handleChange} /> {edit && <IconButton size=\"small\" color=\"primary\" onClick={(evt) => handleDelete(evt, index)} ><DeleteIcon /> </IconButton>}</small>\r\n })}\r\n </div>\r\n )\r\n\r\n}\r\n\r\n\r\nfunction LayerTemplate(props) {\r\n\r\n const { handleChange, value, dropdownvalues, filtertypelist, domainlist, edit, transformProps, index, isCombo } = props;\r\n return <div className=\"row col-sm-12\">\r\n <div className={isCombo ? \"col-sm-2\" : 'col-sm-4'}>\r\n <Dropdown edit={edit} name=\"fieldName\" label={'Field Name'} value={(value && value.fieldName) || ''}\r\n dropdownvalues={dropdownvalues ? dropdownvalues : ((value && value.fieldName) ? [{ Name: value.fieldName, Value: value.fieldName }] : [])}\r\n transformProps={transformProps} handleFieldChange={(evt) => handleChange(evt, index)} />\r\n </div>\r\n {isCombo && value && value.fieldName && <div className=\"col-sm-3\">\r\n <Dropdown edit={edit} name=\"filterType\" label={'Filter Type'} value={(value && value.filterType) || ''}\r\n dropdownvalues={filtertypelist ? filtertypelist : ((value && value.filterType) ? [{ Name: value.filterType, Value: value.fieldName }] : [])}\r\n transformProps={transformProps} handleFieldChange={(evt) => handleChange(evt, index)} />\r\n </div>}\r\n {isCombo && value && value.filterType === 'SCM' && <div className=\"col-sm-2\">\r\n <Switch edit={edit} label=\"Domain?\" handleFieldChange={(evt) => handleChange(evt, index)} name=\"isDomain\" value={value.isDomain || ''}\r\n transformProps={{\r\n 'true': \"Y\",\r\n 'false': \"N\",\r\n \"Y\": true,\r\n \"N\": false\r\n }} />\r\n </div>}\r\n {isCombo && value && value.isDomain === 'Y' && <div className=\"col-sm-4\">\r\n <Dropdown label={'Domain List'} edit={edit} handleFieldChange={(evt) => handleChange(evt, index)} name=\"lookUp\" value={value.lookUp || ''}\r\n dropdownvalues={domainlist || []} transformProps={{\r\n \"value\": \"Key\",\r\n \"name\": \"Name\"\r\n }} />\r\n </div>}\r\n {value && (value.filterType === 'STB' || value.label || !isCombo) &&\r\n <div className={isCombo ? \"col-sm-2\" : 'col-sm-4'}>\r\n <TextBox label={'Label'} edit={edit} handleFieldChange={(evt) => handleChange(evt, index, 'TB')} name=\"label\" value={value.label || ''} />\r\n </div>\r\n }\r\n </div>\r\n}","import Checkbox from '@material-ui/core/Checkbox';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport React, { Fragment, useEffect, useState } from 'react';\r\nimport { getEnvVariable } from '../../../../modules/environmentalList';\r\nimport { requestApi } from '../../../modules/form/utilities';\r\nconst _ = require('lodash');\r\n\r\n\r\nexport default function SubModuleCheckboxes(props) {\r\n let checkboxval = props && props.dropdownvalues ? props.dropdownvalues : null\r\n let arr = []\r\n let checkboxitems = []\r\n let resultarr = []\r\n const [subModuleItems, setSubModuleItems] = useState(resultarr);\r\n const [companySubModuleMenu, setCompanySubModuleMenu] = useState([]);\r\n const [subModuleMenu, setSubModuleMenu] = useState([]);\r\n const [subModuleArr, setSubModuleArr] = useState([]);\r\n const [changed, setChanged] = useState(false);\r\n const [helpertext, setHelperText] = useState(null);\r\n\r\n useEffect(() => {\r\n let SubModuleMenuRead = {\r\n \"get\": {\r\n url: getEnvVariable('MasterAdmin') + `/api/module/` + getEnvVariable('ModuleKey') + `/submodule/All/Active/IsConfigurable`\r\n }\r\n };\r\n requestApi(SubModuleMenuRead, '').then(res => {\r\n if (res && Array.isArray(res)) {\r\n setSubModuleMenu(res)\r\n }\r\n })\r\n }, [])\r\n\r\n useEffect(() => {\r\n let CompanySubModuleMenuRead = {\r\n \"get\": {\r\n url: getEnvVariable('MasterAdmin') + `/api/CompanyInternal/` + getEnvVariable('ModuleKey') + `/` + `${props.dataItem.CompanyId}`\r\n }\r\n };\r\n requestApi(CompanySubModuleMenuRead, '').then(res => {\r\n setCompanySubModuleMenu(res.CompaniesModules)\r\n\r\n })\r\n }, [subModuleMenu]);\r\n\r\n useEffect(() => {\r\n setHelperText(props.helperText);\r\n }, [props.helperText]);\r\n\r\n useEffect(() => {\r\n companySubModuleMenu.forEach(element => {\r\n let x = _.find(subModuleMenu, { 'Id': element['SubModuleId'] })\r\n if (x) {\r\n arr.push(x);\r\n }\r\n })\r\n setSubModuleArr(arr)\r\n checkboxitems = arr.map(x => x.Id);\r\n resultarr = []\r\n for (const element of checkboxitems) {\r\n let obj = {}\r\n let selectedval = null\r\n if (checkboxval) {\r\n selectedval = _.find(checkboxval, { 'SubModuleId': element })\r\n }\r\n if (selectedval) {\r\n obj[\"Id\"] = selectedval.Id\r\n obj[\"UserId\"] = selectedval.UserId\r\n obj[\"CreatedBy\"] = selectedval.CreatedBy\r\n }\r\n obj[\"ModuleId\"] = selectedval ? selectedval.ModuleId : companySubModuleMenu[0].ModuleId\r\n obj[\"SubModuleId\"] = element\r\n obj[\"AccessType\"] = selectedval ? selectedval[\"AccessType\"] : \"P\"\r\n obj[\"isprimarycheck\"] = selectedval && selectedval[\"isprimarycheck\"] ? selectedval[\"isprimarycheck\"] : \"N\"\r\n resultarr.push(obj);\r\n }\r\n setSubModuleItems(resultarr)\r\n }, [companySubModuleMenu]);\r\n\r\n useEffect(() => {\r\n props.customnoticesave(subModuleItems, props.name)\r\n }, [subModuleItems]);\r\n\r\n const handleChange = (event, primarycheck) => {\r\n let arr = subModuleItems\r\n let changedsubmodule = _.find(subModuleItems, { 'SubModuleId': Number(event.target.name) });\r\n let objIndex = arr.findIndex((obj => obj.SubModuleId == changedsubmodule.SubModuleId));\r\n if (primarycheck) {\r\n changedsubmodule[\"isprimarycheck\"] = event.target.checked == true ? \"Y\" : \"N\";\r\n arr[objIndex][\"isprimarycheck\"] = changedsubmodule[\"isprimarycheck\"]\r\n }\r\n else {\r\n changedsubmodule[\"AccessType\"] = event.target.checked == true ? \"O\" : \"P\";\r\n arr[objIndex][\"AccessType\"] = changedsubmodule[\"AccessType\"]\r\n }\r\n setSubModuleItems(arr);\r\n setChanged(!changed)\r\n };\r\n\r\n\r\n useEffect(() => {\r\n setSubModuleArr(subModuleArr);\r\n }, [changed]);\r\n\r\n if (props.edit === false) {\r\n return (\r\n <Fragment>\r\n <Typography variant=\"h6\" className=\"fw-bold\">{props.label}</Typography>\r\n <div>\r\n {subModuleArr.map(each => {\r\n let selectedval = _.find(subModuleItems, { 'SubModuleId': each.Id })\r\n let checkedval = selectedval && selectedval['AccessType'] === 'O' ? true : false\r\n return (\r\n <div>\r\n <label className=\"col-sm-5\" style={{ fontSize: '14px' }}>{each.DisplayName} </label>\r\n <label style={{ fontSize: '12px' }}>Admin : {props.value ? (props.transformProps ?\r\n String((checkedval === true || props.transformProps[props.value] === 'O' || props.transformProps[props.value] === true) ? 'Yes' : 'No') : String(props.value)) : 'No'}\r\n </label>\r\n {each.Key && each.Key == 'STATEPROJECTS' &&\r\n <label className=\"pl-5\" style={{ fontSize: '12px' }}>Primary Contact : {\r\n String(selectedval && selectedval[\"isprimarycheck\"] === \"Y\" ? 'Yes' : 'No')}\r\n </label>\r\n }\r\n </div>\r\n )\r\n })}\r\n </div>\r\n </Fragment>\r\n )\r\n }\r\n else {\r\n return (\r\n <div>\r\n <Typography variant=\"h6\" className=\"fw-bold\">{props.label}</Typography>\r\n {subModuleArr.map(each => {\r\n let selectedval = _.find(subModuleItems, { 'SubModuleId': each.Id })\r\n let checkedval = selectedval && selectedval['AccessType'] === 'O' ? true : false\r\n return (\r\n <div>\r\n <label className=\"col-sm-5\" style={{ fontSize: '14px' }}>{each.DisplayName}</label>\r\n <FormControlLabel\r\n control={<Checkbox checked={each.key ? each.key : checkedval} onChange={(e) => handleChange(e, false)} name={each.Id ? each.Id : each.Key} />}\r\n labelPlacement=\"start\" label={<span style={{ fontSize: '12px' }}>Admin</span>}\r\n />\r\n {each.Key && each.Key == 'STATEPROJECTS' &&\r\n <FormControlLabel\r\n control={<Checkbox checked={selectedval['isprimarycheck'] == \"Y\" ? true : false} onChange={(e) => handleChange(e, true)} name={each.Id ? each.Id : each.Key} />}\r\n labelPlacement=\"start\" label={<span style={{ fontSize: '12px' }}>Primary Contact</span>}\r\n />\r\n }\r\n\r\n </div>\r\n )\r\n })}\r\n {helpertext && <div style={{ color: \"#F44336\" }}>\r\n <Typography variant=\"caption\" display=\"block\" gutterBottom>{helpertext}</Typography>\r\n </div>}\r\n </div>\r\n );\r\n }\r\n}\r\n","import React, { useEffect, useState, Fragment } from 'react'\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport SaveIcon from '@material-ui/icons/Save';\r\nimport Dropdown from '../../../modules/form/cformdropdown';\r\nimport TextBox from '../../../modules/form/cformtextbox';\r\nimport { IconButton } from '@material-ui/core';\r\n\r\nexport default function LabelExpression(props) {\r\n const { dropdownvalues, transformProps, label, edit, handleFieldChange } = props;\r\n const [add, setAdd] = useState(false)\r\n const [addValue, setAddValue] = useState(null)\r\n const [reload, setReload] = useState(false)\r\n let value = props.value && JSON.parse(props.value) || {};\r\n\r\n const handleChange = (evt, index) => {\r\n const { name } = evt.target;\r\n if (name === 'postfix') {\r\n value[name] = evt.target.value\r\n }\r\n else {\r\n if (value && value[index]) {\r\n value['list'][index][name] = evt.target.value\r\n }\r\n else {\r\n if (!addValue) {\r\n let subvalue = Object.assign({}, { [name]: evt.target.value })\r\n setAddValue(subvalue)\r\n }\r\n else {\r\n addValue[name] = evt.target.value;\r\n setAddValue(addValue)\r\n setReload(!reload)\r\n }\r\n }\r\n }\r\n if (!add)\r\n handleFieldChange({ target: { name: props.name, value: JSON.stringify(value), checked: false } })\r\n }\r\n\r\n const handleEachSave = () => {\r\n if (value && value.list)\r\n value['list'].push(addValue)\r\n else {\r\n value['list'] = [];\r\n value['list'].push(addValue)\r\n }\r\n handleFieldChange({ target: { name: props.name, value: JSON.stringify(value), checked: false } })\r\n setAdd(false);\r\n setAddValue(null)\r\n }\r\n\r\n const handleDelete = (evt, index) => {\r\n if (value.list.length > 0) {\r\n value.list.splice(index, 1);\r\n setAdd(false);\r\n handleFieldChange({ target: { name: props.name, value: JSON.stringify(value), checked: false } })\r\n }\r\n\r\n }\r\n\r\n return (<div className=\"row\">\r\n {reload}\r\n <small className=\"fw-bold col-sm-12\" style={{ fontSize: '12px' }}>{label} {edit && <IconButton size=\"small\" color='primary' onClick={() => setAdd(true)} ><AddIcon /> </IconButton>}<br /></small>\r\n {add &&\r\n <Fragment><LabelComponets handleChange={handleChange} edit={true} dropdownvalues={dropdownvalues} transformProps={transformProps} value={addValue} /> <IconButton size=\"small\" color=\"primary\" onClick={() => handleEachSave()} ><SaveIcon /> </IconButton></Fragment>\r\n }\r\n <div className=\"col-12\">\r\n {value && value.list && value.list.length > 0 && <small className=\"row\"> {value.list.map((each, index) => {\r\n return <Fragment><LabelComponets handleChange={handleChange} index={index} edit={edit} dropdownvalues={dropdownvalues} transformProps={transformProps} value={each} />\r\n {edit && <IconButton size=\"small\" color=\"primary\" onClick={(evt) => handleDelete(evt, index)} ><DeleteIcon /> </IconButton>} <br /></Fragment>\r\n })}<br /></small>}\r\n </div>\r\n {((value && Object.keys(value).length > 0) || add) && <div className=\"col-sm-10\">< TextBox label={'Postfix'} edit={edit} handleFieldChange={(evt) => handleChange(evt)} name=\"postfix\" value={value && value.postfix || ''} /></div>}\r\n </div>)\r\n\r\n}\r\n\r\n\r\nfunction LabelComponets(props) {\r\n\r\n const { handleChange, value, dropdownvalues, edit, transformProps, index, } = props;\r\n return <div className=\"row col-sm-12\">\r\n <div className=\"col-sm-6\">\r\n <TextBox label={'Prefix'} edit={edit} handleFieldChange={(evt) => handleChange(evt, index)} name=\"label\" value={value && value.label || ''} />\r\n </div>\r\n <div className=\"col-sm-6\">\r\n {dropdownvalues && <Dropdown edit={edit} name=\"fieldName\" label={'Field Name'} value={value && value.fieldName || ''} dropdownvalues={dropdownvalues || []}\r\n transformProps={transformProps} handleFieldChange={(evt) => handleChange(evt, index)} />}\r\n {!dropdownvalues && <TextBox label={'Field Name'} edit={edit} handleFieldChange={(evt) => handleChange(evt, index)} name=\"fieldName\" value={value && value.fieldName || ''} />\r\n }\r\n </div>\r\n </div>\r\n}","import React, { Fragment, useEffect, useState, useRef } from \"react\"\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank';\r\nimport CheckBoxIcon from '@material-ui/icons/CheckBox';\r\nconst icon = <CheckBoxOutlineBlankIcon fontSize=\"small\" />;\r\nconst checkedIcon = <CheckBoxIcon fontSize=\"small\" />;\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n //width: 500,\r\n '& > * + *': {\r\n marginTop: theme.spacing(3),\r\n },\r\n },\r\n}));\r\n\r\n\r\nexport default function Tags(props) {\r\n const { name, Name, value, handleFieldValue, customnoticesave, handleFieldChange, options, dropdownvalues, dataItem, defaultSelValue, tooltip, edit, items } = props\r\n const classes = useStyles();\r\n let ditems = options && options.sublist && dropdownvalues ? dropdownvalues[options.sublist] : items ? items : []\r\n let defaultitems = value || [];\r\n\r\n const handleChange = (event, values) => {\r\n let resultdata = values.map(a => a.Id);\r\n let stringformatvalues = [...new Set(resultdata)].join()\r\n\r\n const e = {\r\n target: {\r\n name: name || Name || values.name,\r\n value: values\r\n\r\n }\r\n }\r\n defaultitems = values\r\n if (values && values.savestringformat) {\r\n const e1 = {\r\n target: {\r\n name: name || Name || values.name,\r\n value: stringformatvalues\r\n }\r\n }\r\n if (props.handleFieldChange) {\r\n props.handleFieldChange(e1)\r\n }\r\n else {\r\n props.handleFieldValue(e1)\r\n }\r\n\r\n defaultitems = items.filter(a => value.split(',').includes(a.Id.toString()))\r\n }\r\n else {\r\n if (props.handleFieldChange) {\r\n props.handleFieldChange(e)\r\n }\r\n else {\r\n props.handleFieldValue(e)\r\n }\r\n }\r\n\r\n }\r\n\r\n if (options && options.savestringformat) {\r\n defaultitems = items ? items.filter(a => value.split(',').includes(a.Id.toString())) : []\r\n }\r\n\r\n\r\n if (dataItem && options.itemname) {\r\n if (dataItem[options.itemname] && dataItem[options.itemname] != \"\") {\r\n let dataitemvalue = dataItem[options.itemname];\r\n if (dataitemvalue) {\r\n dataitemvalue = dataitemvalue.toString();\r\n let dataitemarray = dataitemvalue.split(\",\");\r\n if (Array.isArray(dataitemarray)) {\r\n defaultitems = items.filter(a => dataitemarray.includes(a.id.toString()))\r\n }\r\n }\r\n }\r\n } else if (defaultSelValue) {\r\n let selitemarray = defaultSelValue.split(\",\");\r\n if (Array.isArray(selitemarray)) {\r\n defaultitems = items.filter(a => selitemarray.includes(a.id.toString()))\r\n }\r\n }\r\n\r\n\r\n if (edit === false) {\r\n let resultdata = defaultitems.map(a => a.Name);\r\n let displayvalues = [...new Set(resultdata)].join()\r\n let getvalue = (ditems) => ditems.name || ditems.Name\r\n return <Fragment>\r\n {tooltip && <div > <Typography variant={'caption'} className=\"text-secondary\">{options && options.label} \r\n < Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em' }} />\r\n </Tooltip> </Typography> <Typography className=\"fw-bold\" variant={'body2'} color={'textPrimary'} className=\"fw-bold\">{displayvalues} </Typography>\r\n </div>}\r\n {!tooltip && <div > <Typography variant={'caption'} className=\"text-secondary\">{options && options.label} </Typography> <Typography className=\"fw-bold\" variant={'body2'} color={'textPrimary'} className=\"fw-bold\">{displayvalues} </Typography>\r\n </div>}\r\n </Fragment >\r\n }\r\n else {\r\n return (\r\n <div className={classes.root}>\r\n <Autocomplete\r\n key={name || options && options.name}\r\n fullWidth\r\n multiple\r\n name={name || Name}\r\n id=\"tags-standard\"\r\n options={ditems}\r\n getOptionLabel={(customitems) => customitems.name || customitems.Name}\r\n onChange={handleChange}\r\n //filterSelectedOptions\r\n defaultValue={ditems[0]}\r\n value={defaultitems}\r\n disabled={options && options.disabled}\r\n renderOption={(ditems, { selected }) => (\r\n <React.Fragment>\r\n <Checkbox\r\n icon={icon}\r\n checkedIcon={checkedIcon}\r\n style={{ marginRight: 8 }}\r\n checked={selected}\r\n />\r\n {ditems && ditems.name || ditems.Name}\r\n </React.Fragment>\r\n )}\r\n renderInput={(params) => (\r\n <TextField\r\n fullWidth\r\n {...params}\r\n onChange={handleFieldChange ? handleFieldChange : handleFieldValue}\r\n name={name || Name}\r\n variant=\"standard\"\r\n label={options && options.label}\r\n placeholder={options && options.placeholder}\r\n InputLabelProps={{\r\n shrink: true,\r\n }\r\n }\r\n />\r\n )}\r\n />\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n","import React, { useEffect, Fragment, useState, useCallback } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport Select from '@material-ui/core/Select';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport { requestApi } from '../../../modules/form/utilities'\r\nimport SimpleGrid from '../../../modules/Grid/cgrid'\r\nimport Typography from '@material-ui/core/Typography';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport SaveIcon from '@material-ui/icons/Save';\r\nconst _ = require('lodash');\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n formControl: {\r\n margin: theme.spacing(1),\r\n minWidth: 250,\r\n },\r\n selectEmpty: {\r\n marginTop: theme.spacing(2),\r\n },\r\n}));\r\n\r\nexport default function PhaseTypeSeclection(props) {\r\n const classes = useStyles();\r\n const [phase, setPhase] = React.useState('');\r\n const [phaseItems, setPhaseItems] = React.useState([]);\r\n const [gridItems, setGridItems] = React.useState(null);\r\n const [phaseSelection, setPhaseSelection] = React.useState(false);\r\n const [selectedPhaseTypes, setSelectedPhaseTypes] = React.useState([]);\r\n const handleChange = (event) => {\r\n setPhase(event.target.value);\r\n };\r\n\r\n const addPhaseType = (event) => {\r\n setPhaseSelection(true)\r\n }\r\n\r\n const savePhaseType = (event) => {\r\n let addurl = props.options.add\r\n let idreplace = addurl.post.routeProps\r\n let requestUrl = addurl.post.url\r\n let id = []\r\n if (addurl.post.routeProps) {\r\n idreplace.forEach(each => {\r\n let idval = props && props.dataItem ? props.dataItem[each.value] : null\r\n let pushid = {key:each.value, value:idval}\r\n id.push(pushid);\r\n })}\r\n id.forEach(each => {\r\n const { key, value } = each;\r\n requestUrl = `${requestUrl.replace(`{${key}}`, value)}`;\r\n })\r\n let resultdata = { PhaseId: phase, SitePermitTypeId: props.dataItem.Id }\r\n\r\n requestApi({post:{url : requestUrl}}, '', resultdata).then(res => {\r\n setPhaseSelection(false);\r\n setPhase('');\r\n IntialLoad();\r\n })\r\n\r\n\r\n }\r\n\r\n useEffect(() => {\r\n let phasetypedropdown = props.options.phasetypedropdown\r\n requestApi(phasetypedropdown, '').then(res => {\r\n setPhaseItems(res)\r\n })\r\n IntialLoad();\r\n }, [])\r\n\r\n const onUp = (dataItem) => {\r\n let orderurl = props.options.changeorder\r\n let idreplace = orderurl.post.routeProps\r\n let requestUrl = orderurl.post.url\r\n let id = []\r\n if (orderurl.post.routeProps) {\r\n idreplace.forEach(each => {\r\n let idval = each.value!= \"direction\" ? props && props.dataItem ? props.dataItem[each.value] : null : \"UP\"\r\n let pushid = {key:each.value, value:idval}\r\n id.push(pushid);\r\n })}\r\n id.forEach(each => {\r\n const { key, value } = each;\r\n requestUrl = `${requestUrl.replace(`{${key}}`, value)}`;\r\n })\r\n requestApi({post:{url : requestUrl}}).then(res => {\r\n IntialLoad();\r\n })\r\n }\r\n\r\n const onDown = (dataItem) => {\r\n let orderurl = props.options.changeorder\r\n let idreplace = orderurl.post.routeProps\r\n let requestUrl = orderurl.post.url\r\n let id = []\r\n if (orderurl.post.routeProps) {\r\n idreplace.forEach(each => {\r\n let idval = each.value!= \"direction\" ? props && props.dataItem ? props.dataItem[each.value] : null : \"DOWN\"\r\n let pushid = {key:each.value, value:idval}\r\n id.push(pushid);\r\n })}\r\n id.forEach(each => {\r\n const { key, value } = each;\r\n requestUrl = `${requestUrl.replace(`{${key}}`, value)}`;\r\n })\r\n requestApi({post:{url : requestUrl}}).then(res => {\r\n IntialLoad();\r\n })\r\n }\r\n\r\n const onDelete = (dataItem) => {\r\n IntialLoad();\r\n console.log(dataItem);\r\n }\r\n\r\n const IntialLoad = () => {\r\n let gridread = props.options.gridread\r\n let idreplace = gridread.get.routeProps\r\n let requestUrl = gridread.get.url\r\n let id = []\r\n if (gridread.get.routeProps) {\r\n idreplace.forEach(each => {\r\n let idval = props && props.dataItem ? props.dataItem[each.value] : null\r\n let pushid = {key:each.value, value:idval}\r\n id.push(pushid);\r\n })}\r\n id.forEach(each => {\r\n const { key, value } = each;\r\n requestUrl = `${requestUrl.replace(`{${key}}`, value)}`;\r\n })\r\n requestApi({get:{url : requestUrl}}, '').then(res => {\r\n let selectedphasetypes = res && res.data ? _.map(res.data, 'PhaseId') : []\r\n setSelectedPhaseTypes(selectedphasetypes)\r\n setGridItems(res)\r\n })\r\n }\r\n\r\n return (\r\n <div>\r\n <div>\r\n <FormControl className={classes.formControl}>\r\n <InputLabel shrink>Select Phase Type</InputLabel>\r\n <Select\r\n value={phase}\r\n onChange={handleChange}\r\n disabled = {phaseSelection ? false : true}\r\n >\r\n <option value=\"\">None</option>\r\n {phaseItems.map(each => {\r\n let disableditem = selectedPhaseTypes.includes(Number(each.Value));\r\n return (\r\n <option value={each.Value} disabled={disableditem} name={each.Name}>{each.Name}</option>\r\n )\r\n })}\r\n </Select>\r\n </FormControl>\r\n {phase =='' && <IconButton title='Add' color=\"primary\" onClick={addPhaseType}> <AddIcon />\r\n </IconButton>}\r\n {phase !='' && <IconButton title='Save' color=\"primary\" onClick={savePhaseType}> <SaveIcon />\r\n </IconButton>}\r\n {/* <IconButton title='Save' disabled={phase == '' ? true : false} color=\"primary\" onClick={savePhaseType}> <SaveIcon />\r\n </IconButton> */}\r\n </div>\r\n <div className=\"pt-8\">\r\n {gridItems && gridItems.data.length > 0 ? <SimpleGrid\r\n onUp={onUp}\r\n onDown={onDown} onDelete={onDelete}\r\n data={gridItems || []} columns={props.options.gridcolumns} useComp={true}\r\n options={{ headerProps: null, gridcolumns: props.options.gridcolumns, sidepopupgridheight: true, }} />\r\n :\r\n <Typography variant=\"body\" display=\"block\">\r\n No Phase Types selected\r\n </Typography>}\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import Button from '@material-ui/core/Button';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport FormGroup from '@material-ui/core/FormGroup';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport React, { Fragment, useEffect, useState } from 'react';\r\nimport { getEnvVariable } from '../../../../modules/environmentalList';\r\nimport { requestApi } from '../../../modules/form/utilities';\r\nimport ConfirmationDialog from '../confirmationPopup';\r\nconst _ = require('lodash');\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n display: 'flex',\r\n },\r\n}));\r\n\r\nexport default function SubModuleCheckboxes(props) {\r\n\r\n const classes = useStyles();\r\n let resultdata = props.value ? props.value : null\r\n const [subModuleMenu, setSubModuleMenu] = useState(null);\r\n let submoduleselection = getEnvVariable('IsSubModuleSelection') == \"Y\" ? true : false\r\n let hidesubmodules = getEnvVariable('HideSubmodules') == \"Y\" ? true : false\r\n const [subModuleItems, setSubModuleItems] = useState({});\r\n const [openConfirmation, setopenConfirmation] = useState(null);\r\n const [filteredResults, setfilteredResults] = useState(null);\r\n const [reload, setReload] = useState(false)\r\n let isconsultantprofile = props && props.options && props.options.isprofile && props.accessPermissions && props.accessPermissions.isConsultant == \"Y\" ? true : false\r\n\r\n useEffect(() => {\r\n let SubModuleMenuRead = {\r\n \"get\": {\r\n url: getEnvVariable('MasterAdmin') + `/api/module/` + getEnvVariable('ModuleKey') + `/submodule/All/Active/IsConfigurable`\r\n }\r\n };\r\n requestApi(SubModuleMenuRead, '').then(res => {\r\n if (res && Array.isArray(res)) {\r\n setSubModuleMenu(res)\r\n }\r\n })\r\n }, [])\r\n\r\n useEffect(() => {\r\n let itemresult = []\r\n if (hidesubmodules && subModuleMenu && subModuleMenu.length>0) {\r\n subModuleMenu.forEach(element => {\r\n let obj = { \"ModuleKey\": getEnvVariable('ModuleKey') }\r\n obj['SubmoduleId'] = element.Id\r\n itemresult.push(obj);\r\n });\r\n props.customnoticesave(itemresult, props.name, 'includeinresults')\r\n }\r\n\r\n newfun();\r\n }, [subModuleMenu])\r\n\r\n useEffect(() => {\r\n newfun();\r\n }, [resultdata])\r\n\r\n const handleConfirmationCancel = () => {\r\n setopenConfirmation(false);\r\n setfilteredResults(null);\r\n }\r\n\r\n const handleConfirmationChange = (urlinfo) => {\r\n let moduleaccess = {};\r\n if (urlinfo == \"grant\") {\r\n moduleaccess = {\r\n \"put\": {\r\n url: getEnvVariable('MasterAdmin') + `/api/CompanyInternal/Access/${props && props.dataItem && props.dataItem.Id ? props.dataItem.Id : props.match.params.routeid}/` + getEnvVariable('ModuleKey')\r\n }\r\n };\r\n }\r\n else {\r\n moduleaccess = {\r\n \"put\": {\r\n url: getEnvVariable('MasterAdmin') + `/api/CompanyInternal/RequestAccess/${props.dataItem && props.dataItem.CompanyId}/` + getEnvVariable('ModuleKey')\r\n }\r\n };\r\n }\r\n requestApi(moduleaccess, null, filteredResults).then(res => {\r\n if (res && urlinfo == \"grant\") {\r\n let obj = subModuleItems;\r\n let filteredlist = res.CompaniesModules\r\n // let arrlist = subModuleMenu || localStorage.getItem('submodule') && JSON.parse(localStorage.getItem('submodule')) ? JSON.parse(localStorage.getItem('submodule')) : []\r\n let checkboxitems = subModuleMenu.map(x => x.key ? x.key : x.Id);\r\n // for (const element of checkboxitems) {\r\n if (filteredlist) {\r\n filteredlist.forEach(elements => {\r\n if (checkboxitems.includes(elements.SubModuleId)) {\r\n obj[elements.SubModuleId] = true\r\n }\r\n else if (checkboxitems.includes(Number(elements.SubmoduleId))) {\r\n obj[elements.SubmoduleId] = true\r\n }\r\n else {\r\n obj[elements.SubModuleId] = false\r\n }\r\n });\r\n }\r\n else {\r\n for (const element of checkboxitems) {\r\n obj[element] = false\r\n }\r\n }\r\n setSubModuleItems(obj);\r\n\r\n }\r\n })\r\n setopenConfirmation(false);\r\n setfilteredResults(null);\r\n\r\n }\r\n\r\n const handleLink = (e, id) => {\r\n setopenConfirmation(true);\r\n let filteredarr = subModuleMenu.filter(a => a.Id == id);\r\n setfilteredResults(filteredarr[0]);\r\n }\r\n\r\n const newfun = () => {\r\n if (subModuleMenu && subModuleMenu.length > 0) {\r\n let checkboxitems = subModuleMenu.map(x => x.key ? x.key : x.Id);\r\n let obj = subModuleItems;\r\n if (resultdata) {\r\n resultdata.forEach(elements => {\r\n if (checkboxitems.includes(elements.SubModuleId)) {\r\n obj[elements.SubModuleId] = true\r\n }\r\n else if (checkboxitems.includes(Number(elements.SubmoduleId))) {\r\n obj[elements.SubmoduleId] = true\r\n }\r\n else {\r\n obj[elements.SubModuleId] = false\r\n }\r\n\r\n\r\n });\r\n }\r\n else {\r\n for (const element of checkboxitems) {\r\n obj[element] = false\r\n }\r\n }\r\n setSubModuleItems(obj);\r\n setReload(!reload)\r\n }\r\n }\r\n\r\n const handleChange = (event) => {\r\n setSubModuleItems({ ...subModuleItems, [event.target.name]: event.target.checked });\r\n };\r\n\r\n useEffect(() => {\r\n if (submoduleselection) {\r\n let selectesSubModuleItems = Object.keys(subModuleItems).map(function (k) { if (subModuleItems[k] == true) { return k } else return false })\r\n let subModuleArr = selectesSubModuleItems.filter(Boolean);\r\n let itemresult = []\r\n if (!(_.isEmpty(subModuleArr)) && !hidesubmodules) {\r\n for (const element of subModuleArr) {\r\n let obj = { \"ModuleKey\": getEnvVariable('ModuleKey') }\r\n obj['SubmoduleId'] = element\r\n itemresult.push(obj);\r\n }\r\n }\r\n if(!hidesubmodules && subModuleMenu && subModuleMenu.length > 0) {\r\n props.customnoticesave(itemresult, props.name)\r\n }\r\n\r\n }\r\n }, [subModuleItems]);\r\n\r\n if (props.edit === false && submoduleselection && !hidesubmodules) {\r\n return (\r\n <Fragment>\r\n {isconsultantprofile && <div>\r\n <Typography variant={'caption'} className=\"fw-bold\">{props.label}Access To</Typography>\r\n {subModuleMenu && subModuleMenu.length > 0 && subModuleMenu.map(each => {\r\n\r\n return (\r\n <Fragment>\r\n {subModuleItems[each.key || each.Id] && (<Typography className=\"text-secondary\" variant={'body2'} color={'textPrimary'}> {each.title ? each.title : each.DisplayName} </Typography>)}\r\n </Fragment>\r\n )\r\n })}</div>\r\n }\r\n </Fragment>\r\n )\r\n }\r\n else if (submoduleselection && !hidesubmodules) {\r\n return (\r\n <div className={classes.root}>\r\n {reload}\r\n <FormControl component=\"fieldset\" className={classes.formControl}>\r\n <Typography variant={'caption'} className=\"text-secondary\">{props.label}</Typography>\r\n <FormGroup>\r\n {subModuleMenu && subModuleMenu.length > 0 && subModuleMenu.map(each => {\r\n return (\r\n <Fragment>\r\n {props.options && props.options.islabel && props.options.islabel == true && !isconsultantprofile &&\r\n <div>\r\n {openConfirmation && <ConfirmationDialog value={openConfirmation} title={props.options.titleinfo} labels={['Yes', 'No']} onSubmit={(e) => handleConfirmationChange(props.options.urlinfo)} onClose={handleConfirmationCancel} />}\r\n {subModuleItems[each.key || each.Id] ?\r\n (<Typography variant={'body2'} color={'textPrimary'} ><b className=\"fw-bold\" >Access To :</b> <span className=\"text-secondary\"> {each.title ? each.title : each.DisplayName} </span> </Typography>)\r\n :\r\n <Button variant={'outlined'} onClick={(e) => handleLink(e, each.Id)} color=\"primary\"> {props.options.labelinfo} {each.DisplayName} </Button>}\r\n </div>}\r\n {!(props.options && props.options.islabel && props.options.islabel == true) && <FormControlLabel\r\n control={<Checkbox checked={subModuleItems[each.key ? each.key : each.Id] ? true : false} onChange={handleChange} name={each.key ? each.key : each.Id} />}\r\n label={<span style={{ fontSize: '14px' }}>{each.title ? each.title : each.DisplayName}</span>}\r\n />}\r\n </Fragment>\r\n )\r\n })}\r\n </FormGroup>\r\n </FormControl>\r\n </div>\r\n );\r\n }\r\n else {\r\n return null\r\n }\r\n}\r\n","import React, { useRef, useEffect, useState } from 'react';\r\n//import './App.css';\r\nimport useDeepCompareEffect from 'use-deep-compare-effect'\r\nimport { getEnvVariable } from '../../../modules/environmentalList';\r\nimport { getToken } from '../../modules/header';\r\n\r\nexport default function IframeView({ props, extra }) {\r\n const frameView = useRef(null);\r\n const [reload, setReload] = useState(false)\r\n\r\n useEffect(() => {\r\n\r\n const messageHandler = (message) => {\r\n console.log(\"message\", props.url + extra)\r\n if (props.url + extra + ``.includes(message.origin)) {\r\n if (frameView.current && frameView.current.contentWindow) {\r\n if (message.data === 'Initialized')\r\n frameView.current.contentWindow.postMessage({ prop: { ...props, token: getToken() } }, \"*\")\r\n }\r\n }\r\n }\r\n window.addEventListener('message', messageHandler)\r\n }, [])\r\n\r\n // useDeepCompareEffect(() => {\r\n // setTimeout(() => {\r\n // if (frameView.current && frameView.current.contentWindow) {\r\n // setReload(!reload)\r\n // frameView.current.contentWindow.postMessage({ prop: { ...props } }, \"*\")\r\n // }\r\n // }, 400)\r\n\r\n // }, [props])\r\n\r\n\r\n return (<div style={{ height: props.height ? window.innerHeight - 50 : (getEnvVariable('AccessPortal') === 'I' ? window.innerHeight - 180 : window.innerHeight - 60), width: '100%' }}> {reload}\r\n <iframe id='template-editor' src={props.url + extra} ref={frameView}\r\n frameBorder=\"0\"\r\n marginHeight=\"0\"\r\n marginWidth=\"0\"\r\n width=\"100%\"\r\n height=\"100%\"\r\n title='Indemnity'\r\n scrolling=\"auto\">\r\n </iframe>\r\n </div>)\r\n}\r\n\r\n\r\n","import React, { Component } from 'react';\r\nimport OtpInput from 'react-otp-input';\r\n\r\nexport default class Otp extends Component {\r\n\r\n handleChange = (otp) => {\r\n const { handleFieldChange, name } = this.props\r\n let events = { target: { value: otp, name: name, checked: false } }\r\n handleFieldChange(events);\r\n }\r\n\r\n render() {\r\n const { value } = this.props\r\n return (\r\n <div>\r\n <OtpInput\r\n value={value}\r\n onChange={this.handleChange}\r\n numInputs={6}\r\n separator={<span>-</span>}\r\n inputStyle={{ width: '3em', height: '3em' }}\r\n />\r\n </div>\r\n );\r\n }\r\n}","/**\r\n *********************************************************\r\n Deprecated\r\n *********************************************************\r\n**/\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormGroup from '@material-ui/core/FormGroup';\r\nimport FormLabel from '@material-ui/core/FormLabel';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport PropTypes from 'prop-types';\r\nimport React, { Component, Fragment } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { requestApi } from './utilities';\r\n\r\n\r\nconst styles = theme => ({\r\n\r\n});\r\n\r\nconst formstyles = {\r\n formcontainer: {\r\n //margin: 15\r\n },\r\n formrow: {\r\n margin: 10\r\n },\r\n\r\n itemrow: {\r\n margin: 0\r\n }\r\n}\r\n\r\nclass CForm extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.subforms = {};\r\n this.managesubforms = {};\r\n this.previoussubforms = {};\r\n this.componentSubForm = null;\r\n this.validations = []\r\n this.state = {\r\n //memoizeFormLayout: this.createFormLayout(),\r\n additionalresults: null,\r\n changedFieldName: null,\r\n formLayout: null,\r\n fieldValues: this.setInitialFieldResults(),\r\n results: this.setInitialResults()\r\n };\r\n }\r\n\r\n handleFieldChange=()=>{\r\n\r\n }\r\n\r\n setInitialResults = () => {\r\n const { components, compmap } = this.props\r\n let results = {}\r\n components.forEach(each => {\r\n const { options } = each\r\n const { name, multiplenames, initialvalue } = options\r\n if (name) {\r\n if (multiplenames) {\r\n multiplenames.forEach(e => {\r\n results[e] = initialvalue || ''\r\n })\r\n }\r\n else {\r\n const splitName = name.split(\".\")\r\n if (splitName.length > 1) {\r\n if (results[splitName[0]]) (results[splitName[0]][splitName[1]] = (initialvalue || ''))\r\n else results[splitName[0]] = { [splitName[1]]: (initialvalue || '') }\r\n\r\n }\r\n else results[name] = initialvalue || ''\r\n }\r\n\r\n }\r\n })\r\n return results\r\n }\r\n\r\n\r\n setInitialFieldResults = () => {\r\n const { components, compmap } = this.props\r\n let results = {}\r\n components.forEach(each => {\r\n const { options } = each\r\n const { name, initialvalue } = options\r\n if (name) {\r\n results[name] = {\r\n value: initialvalue || '',\r\n error: null,\r\n validations: []\r\n }\r\n }\r\n\r\n })\r\n return results\r\n }\r\n\r\n changeResults = (objProperty, len, splitName, value) => {\r\n if (len === 0) return value\r\n else {\r\n const index = splitName.length - len\r\n const name = splitName[index]\r\n if (name) return { ...objProperty, [name]: this.changeResults(objProperty[name], --len, splitName, value) }\r\n }\r\n }\r\n\r\n setFormFieldValue = (name, value, error = false, helperText = '', subform, multiplenames) => {\r\n console.log('name,value-------------', name, value, error, this.state.results);\r\n const { storeChildrenState, options } = this.props\r\n if (name) {\r\n if (multiplenames) {\r\n this.setState({\r\n results: { ...this.state.results, ...value },\r\n fieldValues: { ...this.state.fieldValues, [name]: { ...this.state.fieldValues[name], value: value, error: error, helperText: helperText } },\r\n changedFieldName: [name]\r\n }, () => {\r\n if (storeChildrenState) {\r\n storeChildrenState(options.name, this.state.results)\r\n }\r\n })\r\n }\r\n else {\r\n let newResults\r\n const splitName = name.split(\".\")\r\n if (splitName.length > 1) newResults = this.changeResults(this.state.results, splitName.length, splitName, value)\r\n\r\n if (subform) {\r\n if (this.subforms[name]) { this.previoussubforms[name] = this.subforms[name]; this.managesubforms[name] = 'R' }\r\n else this.managesubforms[name] = 'C'\r\n this.subforms[name] = subform\r\n this.componentSubForm = name\r\n }\r\n else {\r\n if (this.subforms[name]) this.managesubforms[name] = 'D'\r\n }\r\n\r\n this.setState({\r\n //results: { ...this.state.results, [name]: name.split(\".\").reduce((res, prop) => { return res && res[prop] }, results) },\r\n results: newResults || { ...this.state.results, [name]: value },\r\n fieldValues: { ...this.state.fieldValues, [name]: { ...this.state.fieldValues[name], value: value, error: error, helperText: helperText } },\r\n changedFieldName: [name]\r\n }, () => {\r\n if (storeChildrenState) {\r\n storeChildrenState(options.name, this.state.results)\r\n }\r\n })\r\n }\r\n\r\n }\r\n else {\r\n this.setState({\r\n results: value\r\n }, () => {\r\n if (storeChildrenState) {\r\n storeChildrenState(options.name, this.state.results)\r\n }\r\n })\r\n }\r\n\r\n }\r\n addSubForms = (subform, fieldname) => {\r\n\r\n }\r\n\r\n\r\n getValue = (name) => {\r\n const { fieldValues } = this.state\r\n if (fieldValues) return fieldValues[name]\r\n }\r\n\r\n\r\n\r\n createFormLayout = () => {\r\n const { components, compmap, options } = this.props\r\n const { totalrows, totalcolumns, items } = options\r\n const allComponents = components\r\n const subforms = this.subforms\r\n let cache = [], cacheColProps = {}, cacheRowProps = [], itemslen = 0, allRows = []\r\n if (items) itemslen = items.length\r\n const rows = totalrows || (allComponents.length + itemslen)\r\n\r\n allComponents.forEach((each, index) => {\r\n const { type, options, order, key } = each\r\n const { width, name } = options\r\n const EachComp = compmap[type]\r\n let compwidth, row, currentValue\r\n if (width) compwidth = 'col-' + width\r\n else compwidth = 'col'\r\n if (totalrows) row = options.row || order || index\r\n else row = index\r\n if (this.state && this.state.fieldValues) currentValue = this.state.fieldValues[name]\r\n else currentValue = { value: '', error: false, validations: [] }\r\n cache[row] || (cache[row] = [])\r\n cacheColProps[name] = {\r\n comprow: row,\r\n compcol: cache[row].length,\r\n className: compwidth,\r\n compmap: compmap,\r\n addSubForms: this.addSubForms,\r\n setFormFieldValue: this.setFormFieldValue,\r\n jumpToStep: this.jumpToStep,\r\n currentValue: currentValue,\r\n handleFieldChange:this.handleFieldChange,\r\n ...each\r\n }\r\n const { className, ...compAttr } = cacheColProps[name]\r\n cache[row].push(\r\n <div className={className} key={each.key}>\r\n <EachComp {...compAttr} />\r\n </div>\r\n )\r\n })\r\n\r\n for (let currentrow = 0; currentrow < rows; currentrow++) {\r\n const rowProps = { className: 'row', key: 'fieldrow' + currentrow, style: formstyles.formrow }\r\n cacheRowProps[currentrow] = rowProps\r\n allRows.push(\r\n <div {...rowProps}>\r\n {cache[currentrow]}\r\n </div>\r\n )\r\n }\r\n\r\n return (fieldNames) => {\r\n if (fieldNames && fieldNames.length > 0) {\r\n fieldNames.forEach(changedFieldName => {\r\n const compProps = cacheColProps[changedFieldName]\r\n const EachComp = compmap[compProps.type]\r\n const { comprow, compcol, className, key, ...otherCompProps } = compProps\r\n const rowProps = cacheRowProps[comprow]\r\n const subforms = this.subforms\r\n const componentSubForm = this.componentSubForm\r\n cache[comprow][compcol] = <div className={className} key={key}>\r\n <EachComp {...otherCompProps} key={key} currentValue={this.state.fieldValues[changedFieldName]} />\r\n </div>\r\n allRows[comprow] = <div {...rowProps}>\r\n {cache[comprow]}\r\n </div>\r\n\r\n if (subforms[componentSubForm]) {\r\n if (this.managesubforms[componentSubForm] === 'C') {\r\n subforms[componentSubForm].components && subforms[componentSubForm].components.map((e, i) => {\r\n const type = e.type\r\n const EachComp = compmap[type]\r\n let { options } = e\r\n let { name, width } = options\r\n let newcompwidth\r\n if (width) newcompwidth = 'col-' + width\r\n else newcompwidth = 'col'\r\n const newrow = comprow + i + 1\r\n const newcol = 0\r\n cacheColProps[name] = {\r\n comprow: newrow,\r\n compcol: newcol,\r\n className: newcompwidth,\r\n compmap: compmap,\r\n addSubForms: this.addSubForms,\r\n setFormFieldValue: this.setFormFieldValue,\r\n jumpToStep: this.jumpToStep,\r\n handleFieldChange:this.handleFieldChange,\r\n currentValue: this.state.fieldValues[name] || { value: '', error: false, validations: [] },\r\n ...e\r\n }\r\n //this.subformCompPosition[changedFieldName] || (this.subformCompPosition[changedFieldName] = [])\r\n const newrowProps = { className: 'row', key: 'insertedrow' + cacheColProps[name].key, style: formstyles.formrow }\r\n const { className, ...compAttr } = cacheColProps[name]\r\n const insertCol = [\r\n <div className={className} key={e.key}>\r\n <EachComp {...compAttr} />\r\n </div>\r\n ]\r\n //this.subformCompPosition[changedFieldName].push({ row: newrow, col: newcol })\r\n cache.splice(newrow, 0, insertCol)\r\n cacheRowProps.splice(newrow, 0, newrowProps)\r\n allRows.splice(newrow, 0,\r\n <div {...newrowProps}>\r\n {cache[newrow]}\r\n </div>\r\n )\r\n const colNames = Object.keys(cacheColProps)\r\n colNames.forEach(eachName => {\r\n const eachcomprow = cacheColProps[eachName].comprow;\r\n (eachcomprow > (newrow)) && cacheColProps[eachName].comprow++\r\n })\r\n\r\n })\r\n }\r\n else {\r\n this.previoussubforms[changedFieldName] && this.previoussubforms[changedFieldName].components && this.previoussubforms[changedFieldName].components.map(e => {\r\n const { options } = e\r\n const { name } = options\r\n const { comprow, compcol } = cacheColProps[name]\r\n cache.splice(comprow, 1)\r\n cacheRowProps.splice(comprow, 1)\r\n allRows.splice(comprow, 1)\r\n const colNames = Object.keys(cacheColProps)\r\n colNames.forEach(eachName => {\r\n const eachcomprow = cacheColProps[eachName].comprow;\r\n (eachcomprow > (comprow)) && cacheColProps[eachName].comprow--\r\n })\r\n })\r\n if (this.managesubforms[changedFieldName] === 'R') {\r\n subforms[changedFieldName].components.map((e, i) => {\r\n const type = e.type\r\n const EachComp = compmap[type]\r\n let { options } = e\r\n let { name, width } = options\r\n let newcompwidth\r\n if (width) newcompwidth = 'col-' + width\r\n else newcompwidth = 'col'\r\n const newrow = comprow + i + 1\r\n const newcol = 0\r\n cacheColProps[name] = {\r\n comprow: newrow,\r\n compcol: newcol,\r\n className: newcompwidth,\r\n compmap: compmap,\r\n addSubForms: this.addSubForms,\r\n setFormFieldValue: this.setFormFieldValue,\r\n jumpToStep: this.jumpToStep,\r\n currentValue: this.state.fieldValues[name] || { value: '', error: false, validations: [] },\r\n ...e\r\n }\r\n //this.subformCompPosition[changedFieldName] || (this.subformCompPosition[changedFieldName] = [])\r\n const newrowProps = { className: 'row', key: 'insertedrow' + cacheColProps[name].key, style: formstyles.formrow }\r\n const { className, ...compAttr } = cacheColProps[name]\r\n const insertCol = [\r\n <div className={className} key={e.key}>\r\n <EachComp {...compAttr} />\r\n </div>\r\n ]\r\n //this.subformCompPosition[changedFieldName].push({ row: newrow, col: newcol })\r\n cache.splice(newrow, 0, insertCol)\r\n cacheRowProps.splice(newrow, 0, newrowProps)\r\n allRows.splice(newrow, 0,\r\n <div {...newrowProps}>\r\n {cache[newrow]}\r\n </div>\r\n )\r\n const colNames = Object.keys(cacheColProps)\r\n colNames.forEach(eachName => {\r\n const eachcomprow = cacheColProps[eachName].comprow;\r\n (eachcomprow > (newrow)) && cacheColProps[eachName].comprow++\r\n })\r\n })\r\n }\r\n }\r\n }\r\n })\r\n }\r\n return allRows\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n const { options, components } = this.props\r\n const { crud, validations } = options\r\n const create = crud ? crud.create : null\r\n const read = crud ? crud.read : null\r\n const del = crud ? crud.delete : null\r\n const update = crud ? crud.update : null\r\n const get = read ? read.get : null\r\n const routeProps = get ? get.routeProps : null\r\n const id = routeProps ? this.props.match.params[routeProps.value] : null\r\n\r\n get && requestApi({ get: get }, id).then(results => {\r\n const { components } = this.props\r\n let fieldValues = {}\r\n components.forEach(each => {\r\n const { options } = each\r\n const { name, multiplenames } = options\r\n if (name) {\r\n if (multiplenames) {\r\n let multiplevalues = {}\r\n multiplenames.forEach(e => {\r\n multiplevalues[e] = results[e]\r\n })\r\n fieldValues[name] = {\r\n value: multiplevalues,\r\n error: null,\r\n validations: []\r\n }\r\n }\r\n else {\r\n fieldValues[name] = {\r\n value: name.split(\".\").reduce((res, prop) => { return res && res[prop] }, results),\r\n error: null,\r\n validations: []\r\n }\r\n }\r\n\r\n }\r\n\r\n })\r\n console.log('fieldValues-----', fieldValues)\r\n this.setState((prevState, props) => {\r\n return { ...prevState, results: results, fieldValues: fieldValues }\r\n }, () => {\r\n this.setState({\r\n memoizeFormLayout: this.createFormLayout()\r\n })\r\n })\r\n\r\n })\r\n\r\n !get && this.setState({\r\n memoizeFormLayout: this.createFormLayout()\r\n })\r\n\r\n }\r\n\r\n // reCalculateFieldLayout = (results) => {\r\n // const id = this.props.match.params.routeid\r\n // const { rest } = this.props.options\r\n // const { options, components, defaults, order, type, compmap, actions, storeChildrenState, ...otherProps } = this.props;\r\n // const { totalcolumns, totalrows, rules, layout } = options\r\n // this.setState({\r\n // fieldLayout: { ...this.state.fieldLayout }\r\n // })\r\n // }\r\n\r\n jumpToStep = (step, rest) => {\r\n const id = this.props.match.params.routeid\r\n const { fetchData, options } = this.props\r\n if (rest) {\r\n const requestOutput = requestApi(rest, id, this.state.results, fetchData)\r\n requestOutput.then(results => {\r\n const keys = this.state.results && Object.keys(this.state.results)\r\n results && this.props.goToNext(step)\r\n })\r\n }\r\n else {\r\n this.props.goToNext(step)\r\n }\r\n }\r\n\r\n\r\n\r\n setAdditionalFormFieldValue = (name, value) => {\r\n console.log('name,value additionalvalues-------------', name, value);\r\n const { storeChildrenState, options } = this.props\r\n this.setState({\r\n additionalresults: { ...this.state.additionalresults, [name]: value }\r\n })\r\n }\r\n\r\n onSave = () => (event) => {\r\n const id = this.props.match.params.routeid\r\n const { options } = this.props\r\n const { actions } = options\r\n const save = actions.crud.update\r\n const { fetchData, onClose } = this.props\r\n if (save) {\r\n requestApi(save, id, this.state.results, fetchData).then(results => {\r\n console.log('after save---', results);\r\n if (save.post.newroute) {\r\n const { route, matchProps } = save.post.newroute;\r\n const pushlink = route + '/' + results[matchProps.value];\r\n this.props.history.push(`${pushlink}`)\r\n }\r\n if (onClose) onClose()\r\n\r\n }).catch(error => {\r\n error.then(err => {\r\n const { results, fieldValues } = this.state\r\n const errfieldnames = Object.keys(err)\r\n let errresults, errfieldValues = {}\r\n errfieldnames.forEach(each => {\r\n errfieldValues[each] = {\r\n value: fieldValues[each].value,//{...fieldValues[each],error:true,helperText:err[each].reduce((sum = '', val) => sum + val)},\r\n error: true,\r\n helperText: err[each].reduce((sum = '', val) => sum + val)\r\n }\r\n })\r\n this.setState({\r\n fieldValues: { ...fieldValues, ...errfieldValues },\r\n changedFieldName: errfieldnames\r\n })\r\n })\r\n\r\n\r\n })\r\n }\r\n else {\r\n onClose()\r\n }\r\n\r\n }\r\n onCancel = (cancel) => (event) => {\r\n const { fetchData, onClose } = this.props\r\n if (onClose) onClose()\r\n\r\n }\r\n\r\n\r\n render() {\r\n const { options, components, defaults, order, type, compmap, ...otherProps } = this.props;\r\n const { actions } = options\r\n let save, cancel, previous, next\r\n if (actions) {\r\n save = actions.crud.update; cancel = actions.crud.cancel;\r\n }\r\n const { classes, theme } = this.props;\r\n console.log('formresults----', this.state)\r\n const { sendProps, receiveProps } = options\r\n\r\n //const fieldLayout = this.fieldslayout(totalrows, totalcolumns, components, compmap, this.state.results)\r\n\r\n return (\r\n <Fragment>\r\n <form onSubmit={this.handleSubmit} style={formstyles.formcontainer}>\r\n <div className={classes.sectionDesktop}>\r\n {this.state.memoizeFormLayout && this.state.memoizeFormLayout(this.state.changedFieldName)}\r\n </div>\r\n </form>\r\n {\r\n this.state.memoizeFormLayout && actions && <div className=\"row\">\r\n {save && <div className=\"ml-4 mb-3 pt-2\"> <button className=\" btn btn-outlined btn-secondary\" onClick={this.onSave()} > Save</button></div>}\r\n {cancel && <div className=\"ml-3 mb-3 pt-2\"> <button className=\" btn btn-outlined btn-secondary\" onClick={this.onCancel(cancel)} >Cancel </button></div>}\r\n {/* <br /> */}\r\n </div>\r\n\r\n }\r\n\r\n\r\n </Fragment>\r\n );\r\n }\r\n}\r\n\r\nCForm.propTypes = {\r\n classes: PropTypes.object.isRequired\r\n};\r\n\r\nexport default withRouter(withStyles(styles)(CForm))\r\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// class CFormLayout extends Component {\r\n// state = {\r\n// fieldLayout: null\r\n// }\r\n\r\n// componentDidMount() {\r\n// const { results, fieldProps } = this.props\r\n// const { totalrows, totalcols, components, compmap } = fieldProps\r\n// this.setState({\r\n// fieldLayout: this.generateFieldLayout(totalrows, totalcols, components, compmap, results)\r\n// })\r\n// }\r\n\r\n\r\n// render() {\r\n// return (\r\n// <Fragment>\r\n// <form onSubmit={this.handleSubmit} style={formstyles.formcontainer}>\r\n// <div className={classes.sectionDesktop}>\r\n// {this.state.fieldLayout}\r\n// </div>\r\n// </form>\r\n// {\r\n// actions && <div className=\"row\">\r\n// {save && <div className=\"ml-4 mb-3 pt-2\"> <button className=\" btn btn-outlined btn-secondary\" onClick={this.onSave(save)} > Save</button></div>}\r\n// {cancel && <div className=\"ml-3 mb-3 pt-2\"> <button className=\" btn btn-outlined btn-secondary\" onClick={this.onCancel(cancel)} >Cancel </button></div>}\r\n// {/* <br /> */}\r\n// </div>\r\n\r\n// }\r\n// </Fragment>\r\n// )\r\n// }\r\n\r\n// }\r\n\r\nconst CGroupFields = (props) => {\r\n const { label, formgrouprow, margin, ...otherProps } = props\r\n return (\r\n <FormControl component=\"fieldset\" margin={margin || 'normal'}>\r\n <FormLabel>{label}</FormLabel>\r\n <FormGroup row={formgrouprow || true} {...otherProps}>\r\n {props.children}\r\n </FormGroup>\r\n </FormControl>\r\n )\r\n}\r\n\r\n\r\n\r\n// export default withRouter(withStyles(styles, { withTheme: true })(CForm))\r\n\r\n/**\r\n * rows[\r\n * {\r\n * type:'',\r\n * order:1,\r\n * options:{\r\n * width:3\r\n * }\r\n * }\r\n * ]\r\n */\r\n\r\n\r\n/**\r\n * {\r\n  \"type\":\"form\",\r\n  \"options\":{\r\n    \"totalColums\":1\r\n  },\r\n  \"rules\":{\r\n    \"edit\":false,\r\n    \"scope\":form\r\n  },\r\n  \"components\":[\r\n    {\r\n    \"type\":\"textbox\",\r\n    \"label\":\"Name\",\r\n    \"options\":{\r\n        \"row\":1,\r\n        \"col\":1\r\n    },\r\n    \"rules\":{\r\n      \"add\":{\r\n        \"events\":{\r\n          \"onChange\":[1,2,3]\r\n        },\r\n        \"items\":[\r\n          {\r\n            \"type\":\"textbox\",\r\n            \"label\":\"Name\"\r\n          }\r\n        ],\r\n        \"scope\":\"unique name\"\r\n      }\r\n    }\r\n  },\r\n  {\r\n    \"type\":\"dropdown\",\r\n    \"label\":\"Type\",\r\n    \"options\":{\r\n        \"row\":2,\r\n        \"col\":1\r\n    },\r\n    \"rules\":{\r\n      \"add\":{\r\n        \"mapeventstovalues\":{\r\n          \"onChange\":[1,2,3]\r\n        },\r\n        \"items\":[\r\n          {\r\n            \"type\":\"textbox\",\r\n            \"label\":\"Name\"\r\n          }\r\n        ],\r\n        \"scope\":\"unique name\"\r\n      }\r\n    }\r\n  },\r\n  {\r\n    \"type\":\"sitepermityype\",\r\n    \"label\":\"Type\",\r\n    \"options\":{\r\n        \"row\":3,\r\n        \"col\":1\r\n    },\r\n    \"rules\":{\r\n      \"add\":{\r\n        \"mapeventstovalues\":{\r\n          \"onChange\":[1,2,3]\r\n        },\r\n        \"items\":[\r\n          {\r\n            \"type\":\"textbox\",\r\n            \"label\":\"Name\"\r\n          }\r\n        ],\r\n        \"scope\":\"unique name\"\r\n      }\r\n    }\r\n  }\r\n  ]\r\n}\r\n */\r\n\r\n\r\n\r\n\r\n// if (rest) {\r\n// const { get, post, put } = rest\r\n// const del = rest.delete\r\n// if (get) {\r\n// const requestparams = this.getDataFetch(get)\r\n// GetData(baseurl, get.url, requestparams).then(results => {\r\n// const keys = this.state.results && Object.keys(this.state.results)\r\n// results && keys.every(each => {\r\n// return !this.state.results[each].error\r\n// }) && this.props.goToNext(step)\r\n\r\n// })\r\n// }\r\n// if (post) {\r\n// const requestparams = this.postDataFetch(baseurl, post, rest)\r\n// PostData(baseurl, get.url, requestparams).then(results => {\r\n// const keys = this.state.results && Object.keys(this.state.results)\r\n// results && keys.every(each => {\r\n// return !this.state.results[each].error\r\n// }) && this.props.goToNext(step)\r\n\r\n// })\r\n// }\r\n// }\r\n// else {\r\n// this.props.goToNext(step)\r\n// }\r\n\r\n\r\n\r\n\r\n// {/* {results && React.cloneElement(child, { setFormFieldValue: this.setFormFieldValue, options: { ...options, initialvalue: results[name] } })} */ }\r\n\r\n\r\n// gridLayout = () => {\r\n// const { options, components, fetchData, compmap, actions, storeChildrenState, ...otherProps } = this.props;\r\n// const { totalcolumns, totalrows, crud, rules } = options\r\n// //const results = this.state.results\r\n// const { classes, items } = this.props\r\n// const { parentProps } = this.props\r\n// let rowfield = []\r\n// const { subforms } = this\r\n// let subformskeys, keyslen\r\n// if (subforms) { subformskeys = Object.keys(subforms), keyslen = subformskeys.length }\r\n// const allComponents = components.concat(this.newAddedComponents)\r\n// let rows = totalrows || (allComponents.length + items.length)\r\n// this.newAddedComponents = []\r\n// for (let currentrow = 1; currentrow <= rows; currentrow++) {\r\n// let rowchild = []\r\n// allComponents.forEach((each, index) => {\r\n// const type = each.type\r\n// const EachComp = compmap[type]\r\n// let { options, order } = each\r\n// let { width, name } = options\r\n// let row = options.row || order || (index + 1)\r\n// let compwidth\r\n// if (width) {\r\n// compwidth = 'col-' + width\r\n// }\r\n// else {\r\n// compwidth = 'col'\r\n// }\r\n// if (row === currentrow) {\r\n// rowchild.push(() => <div className={compwidth} key={'fieldcol' + index}>\r\n// {/* <EachComp {...each} key={each.key} compmap={compmap} parentProps={{ id: results.Id || (parentProps && parentProps.id) }} getValue={this.getValue} setFormFieldValue={this.setFormFieldValue} setAdditionalFormFieldValue={this.setAdditionalFormFieldValue} reCalculateFieldLayout={this.reCalculateFieldLayout} jumpToStep={this.jumpToStep} /> {results && React.cloneElement(child, { setFormFieldValue: this.setFormFieldValue, options: { ...options, initialvalue: results[name] } })} */}\r\n// <EachComp {...each} key={each.key} compmap={compmap} checkkey={each.key} currentValue={this.state.fieldValues[name]} addSubForms={this.addSubForms} setFormFieldValue={this.setFormFieldValue} jumpToStep={this.jumpToStep} />\r\n// {subformskeys && (keyslen > 0) && (subforms[each.key]) && subforms[each.key].components.map((each, c) => {\r\n// this.newAddedComponents.push(each)\r\n// const type = each.type\r\n// const EachComp = compmap[type]\r\n// let { options, order } = each\r\n// let { width, name } = options\r\n// let row = options.row || order || (index + c + 1)\r\n// let compwidth\r\n// if (width) {\r\n// compwidth = 'col-' + width\r\n// }\r\n// else {\r\n// compwidth = 'col'\r\n// }\r\n// return <EachComp {...each} key={each.key} checkkey={each.key} compmap={compmap} currentValue={this.state.fieldValues[name]} addSubForms={this.addSubForms} setFormFieldValue={this.setFormFieldValue} jumpToStep={this.jumpToStep} />\r\n\r\n// })}\r\n// </div>)\r\n// }\r\n// })\r\n// items && items.forEach((each, i) => {\r\n// const type = each.type\r\n// let { options, order } = each\r\n// let { width } = options\r\n// let row = options.row || order || (len + i + 1)\r\n// let compwidth\r\n// if (width) {\r\n// compwidth = 'col-' + width\r\n// }\r\n// else {\r\n// compwidth = 'col'\r\n// }\r\n// if (type === 'fieldsgroup') {\r\n// const { type, components, options } = each\r\n// const { row, col, width, ...otherProps } = options\r\n// if (row === currentrow) {\r\n// rowchild.push(() => <div className={compwidth} key={'fieldcol' + i}>\r\n// <CGroupFields {...otherProps}>\r\n// {components.map((each, ix) => {\r\n// const { type, options } = each\r\n// const { key } = options\r\n// const { name } = options\r\n// const EachComp = compmap[type]\r\n// // return <EachComp {...e} key={e.key} compmap={compmap} style={formstyles.itemrow} parentProps={{ id: results.Id || (parentProps && parentProps.id) }} getValue={this.getValue} setFormFieldValue={this.setFormFieldValue} setAdditionalFormFieldValue={this.setAdditionalFormFieldValue} reCalculateFieldLayout={this.reCalculateFieldLayout} jumpToStep={this.jumpToStep} />\r\n// return <EachComp {...each} key={(each.key + ix) || 'action' + ix} value={this.state.results[name]} checkkey={each.key} addSubForms={this.addSubForms} compmap={compmap} setFormFieldValue={this.setFormFieldValue} jumpToStep={this.jumpToStep} />\r\n// })}\r\n// </CGroupFields>\r\n// </div>)\r\n// }\r\n\r\n// }\r\n// })\r\n// let eachrow = <div className='row' key={'fieldrow' + currentrow} style={formstyles.formrow} >{rowchild}</div>\r\n// rowfield.push(rowchild)\r\n// }\r\n// const cache = rowfield\r\n// return () => {\r\n// return cache.map((each, index) => {\r\n// return <div className='row' key={'fieldrow' + index} style={formstyles.formrow} >\r\n// {each.map(e => e())}\r\n// </div>\r\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 // fieldslayout = (subform, fieldkey) => {\r\n // const { options, components, fetchData, compmap, actions, storeChildrenState, ...otherProps } = this.props;\r\n // const { totalcolumns, totalrows, crud, rules } = options\r\n // //const results = this.state.results\r\n // const fieldValues = this.state.fieldValues\r\n // const { classes, items } = this.props\r\n // const { parentProps } = this.props\r\n // let rowfield = []\r\n // let rows = totalrows || (components.length + items.length)\r\n // const len = components.length\r\n // for (let currentrow = 1; currentrow <= rows; currentrow++) {\r\n // let rowchild = []\r\n // components.forEach((each, index) => {\r\n // const type = each.type\r\n // const EachComp = compmap[type]\r\n // let { options, order } = each\r\n // let { width, name } = options\r\n // let row = options.row || order || index\r\n // let compwidth\r\n // if (width) {\r\n // compwidth = 'col-' + width\r\n // }\r\n // else {\r\n // compwidth = 'col'\r\n // }\r\n // if (row === currentrow) {\r\n // rowchild.push(<div className={compwidth} key={'fieldcol' + index}>\r\n // {/* <EachComp {...each} key={each.key} compmap={compmap} parentProps={{ id: results.Id || (parentProps && parentProps.id) }} getValue={this.getValue} setFormFieldValue={this.setFormFieldValue} setAdditionalFormFieldValue={this.setAdditionalFormFieldValue} reCalculateFieldLayout={this.reCalculateFieldLayout} jumpToStep={this.jumpToStep} /> {results && React.cloneElement(child, { setFormFieldValue: this.setFormFieldValue, options: { ...options, initialvalue: results[name] } })} */}\r\n // <EachComp {...each} key={each.key} compmap={compmap} checkkey={each.key} addSubForms={this.addSubForms} setFormFieldValue={this.setFormFieldValue} jumpToStep={this.jumpToStep} />\r\n // {subform && (fieldkey === each.key) && subform.components.map((each, c) => {\r\n // const type = each.type\r\n // const EachComp = compmap[type]\r\n // let { options, order } = each\r\n // let { width, name } = options\r\n // let row = options.row || order || (index + c + 1)\r\n // let compwidth\r\n // if (width) {\r\n // compwidth = 'col-' + width\r\n // }\r\n // else {\r\n // compwidth = 'col'\r\n // }\r\n // return <EachComp {...each} key={each.key} checkkey={each.key} compmap={compmap} addSubForms={this.addSubForms} setFormFieldValue={this.setFormFieldValue} jumpToStep={this.jumpToStep} />\r\n\r\n // })}\r\n // </div>)\r\n // }\r\n // })\r\n // items && items.forEach((each, i) => {\r\n // const type = each.type\r\n // let { options, order } = each\r\n // let { width } = options\r\n // let row = options.row || order || (len + i + 1)\r\n // let compwidth\r\n // if (width) {\r\n // compwidth = 'col-' + width\r\n // }\r\n // else {\r\n // compwidth = 'col'\r\n // }\r\n // if (type === 'fieldsgroup') {\r\n // const { type, components, options } = each\r\n // const { row, col, width, ...otherProps } = options\r\n // if (row === currentrow) {\r\n // rowchild.push(<div className={compwidth} key={'fieldcol' + i}>\r\n // <CGroupFields {...otherProps}>\r\n // {components.map((each, ix) => {\r\n // const { type, options } = each\r\n // const { key } = options\r\n // const { name } = options\r\n // const EachComp = compmap[type]\r\n // // return <EachComp {...e} key={e.key} compmap={compmap} style={formstyles.itemrow} parentProps={{ id: results.Id || (parentProps && parentProps.id) }} getValue={this.getValue} setFormFieldValue={this.setFormFieldValue} setAdditionalFormFieldValue={this.setAdditionalFormFieldValue} reCalculateFieldLayout={this.reCalculateFieldLayout} jumpToStep={this.jumpToStep} />\r\n // return <EachComp {...each} key={(each.key + ix) || 'action' + ix} checkkey={each.key} addSubForms={this.addSubForms} compmap={compmap} setFormFieldValue={this.setFormFieldValue} jumpToStep={this.jumpToStep} />\r\n // })}\r\n // </CGroupFields>\r\n // </div>)\r\n // }\r\n\r\n // }\r\n // })\r\n // let eachrow = <div className='row' key={'fieldrow' + currentrow} style={formstyles.formrow} >{rowchild}</div>\r\n // rowfield.push(eachrow)\r\n // }\r\n // return rowfield\r\n\r\n // }","/**\r\n *********************************************************\r\n Description: Button component.\r\n Required props: type.\r\n limitations : Currently only one functionality is present (href). Can add other functionalities.\r\n *********************************************************\r\n**/\r\n\r\nimport Button from '@material-ui/core/Button';\r\nimport Icon from '@material-ui/core/Icon';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport React, { Component, Fragment } from 'react';\r\n\r\nconst styles = theme => ({\r\n button: {\r\n margin: theme.spacing(1),\r\n },\r\n leftIcon: {\r\n marginRight: theme.spacing(1),\r\n },\r\n rightIcon: {\r\n marginLeft: theme.spacing(1),\r\n }\r\n});\r\n\r\nclass CButton extends Component {\r\n state = {\r\n globalitem: null\r\n }\r\n\r\n render() {\r\n const { classes } = this.props\r\n const { options, passer, type, rules, components, handleIconClick, onClick,...otherProps } = this.props;\r\n const { text, icon, color, disabled, href, size, name, variant, ...otherOptions } = options\r\n let iconname, iconColor, iconFontSize, iconposition\r\n if (icon) {\r\n iconname = icon.iconname\r\n iconColor = icon.iconColor\r\n iconFontSize = icon.iconFontSize\r\n }\r\n return (\r\n <Fragment>\r\n {(type === 'button' || type === 'navbutton') && <Button\r\n color={color ? color : 'default'}\r\n disabled={disabled}\r\n href={href}\r\n size={size}\r\n variant={variant}\r\n {...otherProps}\r\n {...otherOptions}\r\n name={name}\r\n onClick={handleIconClick||onClick}\r\n >\r\n {text}\r\n {(iconposition === 'left') && <Icon\r\n className={classes.leftIcon} color={iconColor || 'inherit'} fontSize={iconFontSize || 'default'} >{iconname}\r\n </Icon>\r\n }\r\n {iconposition && !(iconposition === 'left') && <Icon\r\n className={classes.rightIcon} color={iconColor || 'inherit'} fontSize={iconFontSize || 'default'} >{iconname}\r\n </Icon>\r\n }\r\n\r\n </Button>}\r\n {type === 'icon' && <Icon\r\n onClick={handleIconClick}\r\n color={iconColor || 'inherit'} fontSize={iconFontSize || 'default'}\r\n >\r\n {iconname}\r\n </Icon>\r\n }\r\n {this.state.globalitem}\r\n </Fragment>\r\n\r\n )\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(CButton);\r\n\r\n\r\n\r\n\r\n\r\n\r\n/**\r\n * {\r\n * type:'button',\r\n * options:{\r\n * text:'alarm',\r\n * icon:'alarm',\r\n * button:''\r\n * },\r\n * defaults:{\r\n * theme:'default',\r\n * custom: false\r\n * }\r\n * }\r\n */","/**\r\n *********************************************************\r\n deprecated\r\n *********************************************************\r\n**/\r\n\r\nimport React, { Component, Fragment } from 'react';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\n\r\nconst mapkeyval = {\r\n N: false,\r\n Y: true\r\n}\r\nclass CCheckbox extends Component {\r\n constructor(props) {\r\n super(props);\r\n // const { name, initialvalue, transformProps } = props.options\r\n // this.state = {\r\n // [name]: mapkeyval[initialvalue] || false\r\n // };\r\n }\r\n componentDidMount() {\r\n const { options, initialvalue } = this.props\r\n const { name } = options\r\n this.setState({\r\n [name]: mapkeyval[initialvalue]\r\n })\r\n }\r\n\r\n handleChange = name => event => {\r\n const { transformProps } = this.props.options\r\n this.setState({ [name]: event.target.checked });\r\n if (this.props.setFormFieldValue) {\r\n let val\r\n if (event.target.checked) val = transformProps['checked']\r\n else val = transformProps['unchecked']\r\n this.props.setFormFieldValue(name, val)\r\n }\r\n };\r\n\r\n render() {\r\n const { options } = this.props;\r\n const { label, labelPlacement, color, checked, name, checkboxoutlineblankicon, checkboxIcon, transformProps, compmap, ...otherOptions } = options\r\n const initialvalue = this.props.initialvalue ? this.props.initialvalue : false\r\n let otherCustomOptions = {}\r\n if (checkboxoutlineblankicon) {\r\n const { options, type } = checkboxoutlineblankicon\r\n const EachComp = compmap[type]\r\n otherCustomOptions.icon = <EachComp {...options} />\r\n }\r\n if (checkboxIcon) {\r\n const { options, type } = checkboxIcon\r\n const EachComp = compmap[type]\r\n otherCustomOptions.checkedIcon = <EachComp {...options} />\r\n }\r\n const { value } = this.props.currentValue || false\r\n return (\r\n <Fragment>\r\n <FormControlLabel\r\n control={<Checkbox\r\n checked={(transformProps && transformProps[value]) || value || initialvalue}\r\n onChange={this.handleChange(name)}\r\n //value={value}\r\n color={color || 'primary'}\r\n {...otherOptions}\r\n {...otherCustomOptions}\r\n />}\r\n label={label}\r\n labelPlacement={labelPlacement || 'end'}\r\n />\r\n </Fragment>\r\n )\r\n }\r\n\r\n}\r\n\r\nexport default CCheckbox;\r\n\r\n\r\n\r\n/**\r\n* {\r\n* type: 'checkbox',\r\n* options:{\r\n* label: '',\r\n * },\r\n* defaults:{\r\n* theme: 'default'\r\n * }\r\n * }\r\n*/\r\n\r\n","/** \r\n *********************************************************\r\n Description: Manages group of checkboxes.\r\n Required props: type, components. For each checkboxgroup child component options with name and value are required.\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\n\r\nimport React, { Component, Fragment } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport FormLabel from '@material-ui/core/FormLabel';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormGroup from '@material-ui/core/FormGroup';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\n\r\nconst CCheckBoxGroup = (props) => {\r\n\r\n const { options, value, handleFieldChange, dropdownvalues, checkboxvalue, tooltip, edit } = props;\r\n const { label, labelcomp, controlcomp, name, items, disabled, select, transformProps, ...otherOptions } = options;\r\n let lists = items && items.length > 0 ? items : dropdownvalues && dropdownvalues.length > 0 ? dropdownvalues : []\r\n if (edit === false) {\r\n let result = lists && lists.filter(res => {\r\n if (res[transformProps.value] === value)\r\n return res\r\n })\r\n result = result && result[0]\r\n return <Fragment>\r\n {tooltip && <div > <Typography variant={'caption'} className=\"text-secondary\">{label} < Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em' }} />\r\n </Tooltip></Typography><br />\r\n <Typography variant={'body2'} className=\"fw-bold\" color={'textPrimary'}>{result && result[transformProps.label || transformProps.name] || ''} </Typography></div>\r\n }\r\n {!tooltip && <div > <Typography variant={'caption'} className=\"text-secondary\">{label}</Typography><br />\r\n <Typography variant={'body2'} className=\"fw-bold\" color={'textPrimary'}>{result && result[transformProps.label || transformProps.name] || ''} </Typography>\r\n </div>}\r\n </Fragment >\r\n }\r\n else return (\r\n <Fragment>\r\n <FormControl component=\"fieldset\" > {/* required={props.required} */}\r\n {tooltip &&\r\n <FormLabel component={labelcomp}>{label} < Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em' }} />\r\n </Tooltip></FormLabel>}\r\n {!tooltip &&\r\n <FormLabel component={labelcomp}>{label}</FormLabel>}\r\n <FormGroup >\r\n {lists && lists.map(each => {\r\n const { options, key } = each\r\n let cvalue, clabel\r\n if (transformProps) {\r\n cvalue = each[transformProps.value]\r\n clabel = each[transformProps.label || transformProps.name]\r\n }\r\n else {\r\n cvalue = options.value\r\n clabel = options.label\r\n }\r\n return <FormControlLabel key={key || cvalue + 'item'} onChange={(e) => handleFieldChange({ target: { value: e.target.value, name: label, checked: true } })} control={<Checkbox disabled={disabled} checked={value === cvalue}\r\n value={cvalue || name} />} label={clabel} />\r\n })}\r\n </FormGroup>\r\n </FormControl>\r\n </Fragment>\r\n )\r\n\r\n\r\n}\r\n\r\nexport default CCheckBoxGroup;","/** \r\n *********************************************************\r\n Updated By: Vijaya\r\n Comments: Implemented for Confirmation popup.\r\n *********************************************************\r\n**/\r\nimport React from 'react';\r\nimport Button from '@material-ui/core/Button';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\n\r\n\r\nclass cconfirmationpopup extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n state = {\r\n open: true,\r\n title: '',\r\n description: ''\r\n\r\n };\r\n\r\n onSubmit = (e) => {\r\n this.setState({ open: false }, () => {\r\n this.props.onSubmit();\r\n })\r\n }\r\n\r\n onClose = (e) => {\r\n this.setState({ open: false },() => {\r\n this.props.onClose();\r\n })\r\n\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n return (\r\n <div>\r\n <Dialog open={this.state.open}>\r\n <DialogTitle>{this.props.title}</DialogTitle>\r\n\r\n <DialogContent>\r\n <DialogContentText>{this.props.description}</DialogContentText>\r\n </DialogContent>\r\n\r\n <DialogActions>\r\n <Button color=\"primary\" onClick={this.onSubmit}>\r\n YES, I AGREE\r\n </Button>\r\n <Button color=\"primary\" onClick={this.onClose}>\r\n CANCEL\r\n </Button>\r\n </DialogActions>\r\n </Dialog>\r\n </div>\r\n );\r\n\r\n }\r\n}\r\n\r\nexport default cconfirmationpopup;\r\n","/** \r\n *********************************************************\r\n Description: Date and Time component. The value this component receives is in\r\n MM/DD/YYYY hh:mm:ss format which needs to be converted.Format required by the component is YYYY-MM-DDThh:mm. Moment is used to convert to this format.\r\n Required props: type,value. \r\n limitations : N/A\r\n *********************************************************\r\n**/\r\n\r\nimport React, { Fragment, Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport moment from 'moment';\r\n\r\nconst styles = theme => ({\r\n container: {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n },\r\n textField: {\r\n marginLeft: theme.spacing(1),\r\n marginRight: theme.spacing(1),\r\n width: 200,\r\n },\r\n});\r\n\r\nclass CDateTimePicker extends Component {\r\n render() {\r\n const { classes, type, handleFieldChange, name, compmap, options, value, edit } = this.props\r\n const { label } = options\r\n let val = ((value === null) || (value === undefined) || (value === '')) ? '' : value\r\n if (type === 'date') val = val ? moment(val).format('MM/DD/YYYY') : val\r\n // if (type === 'datetime-local') val = val ? moment(val, 'MM/DD/YYYY hh:mm:ss').format('YYYY-MM-DDThh:mm') : val;\r\n if (type === 'time') val = val ? moment(val, \"HH:mm:ss\").format(\"hh:mm A\") : '';\r\n if (edit === false) {\r\n return <Fragment>\r\n <div > <Typography variant={'caption'} className=\"text-secondary\">{label} </Typography>\r\n <Typography variant={'body2'} color={'textPrimary'} className=\"fw-bold\">{val || ''} </Typography>\r\n </div>\r\n </Fragment >\r\n }\r\n else return (\r\n <div className=\"row pl-1\">\r\n <TextField\r\n label={label}\r\n type={type}\r\n className={classes.textField}\r\n onChange={handleFieldChange}\r\n name={name}\r\n defaultValue={value}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </div>\r\n );\r\n }\r\n\r\n}\r\n\r\nCDateTimePicker.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n};\r\n\r\nexport default withStyles(styles)(CDateTimePicker);\r\n\r\n\r\n\r\n\r\n/**\r\n * {\r\n * type:'title',\r\n * options:{\r\n * text:'',\r\n * },\r\n * defaults:{\r\n * layout:'material',\r\n * customlayout: 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// import React, { useState } from \"react\";\r\n// import MomentUtils from '@date-io/moment';\r\n// import {\r\n// DatePicker,\r\n// TimePicker,\r\n// DateTimePicker,\r\n// MuiPickersUtilsProvider,\r\n// } from \"@material-ui/pickers\";\r\n\r\n// function App() {\r\n// const [selectedDate, handleDateChange] = useState(new Date());\r\n\r\n// return (\r\n// <div>\r\n// <MuiPickersUtilsProvider utils={DateFnsUtils}>\r\n// <DatePicker value={selectedDate} onChange={handleDateChange} />\r\n// {/* <TimePicker value={selectedDate} onChange={handleDateChange} />\r\n// <DateTimePicker value={selectedDate} onChange={handleDateChange} /> */}\r\n// </MuiPickersUtilsProvider>\r\n// </div>\r\n// );\r\n// }\r\n\r\n/**\r\n * {\r\n * type:'datetimepicker',\r\n * options:{\r\n * pick:'date/time/datetime'\r\n * }\r\n * }\r\n */\r\n\r\n","import React from 'react';\r\nimport Divider from '@material-ui/core/Divider';\r\n\r\nconst CDivider = () => {\r\n return <Divider />\r\n}\r\n\r\nexport default CDivider"," /**\r\n *********************************************************\r\n deprecated\r\n *********************************************************\r\n**/\r\n\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Select from '@material-ui/core/Select';\r\nimport React, { Component } from 'react';\r\nimport { checkcomp, requestApi } from './utilities';\r\n\r\nclass CDropDown extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n const { name, initialvalue } = props.options\r\n this.subform = {}\r\n this.state = {\r\n globalitem: null\r\n }\r\n\r\n }\r\n\r\n componentDidMount() {\r\n const { options, initialvalue, checkkey } = this.props\r\n const { crud, values, name, transformProps } = options\r\n const { value, validations, error } = this.props.currentValue\r\n let valueKey, valueName\r\n if (transformProps) {\r\n valueKey = transformProps.value\r\n valueName = transformProps.name\r\n }\r\n else {\r\n valueKey = 'id'\r\n valueName = 'name'\r\n }\r\n if (crud) {\r\n const { create, read, update } = crud\r\n const del = crud.delete\r\n if (!values) {\r\n requestApi(read).then(results => {\r\n const dropdownvalues = results\r\n this.setState({\r\n items: results.map(each => {\r\n return { value: each[valueKey], name: each[valueName] }\r\n })\r\n })\r\n })\r\n }\r\n\r\n }\r\n if (this.props.setFormFieldValue && value) {\r\n this.props.setFormFieldValue(name, value, false, '', this.subform[value])\r\n }\r\n }\r\n\r\n handleChange = (name, rules, passer) => event => {\r\n const target = event.target;\r\n if (target) {\r\n const value = target && target.value;\r\n if (this.props.setFormFieldValue) {\r\n this.props.setFormFieldValue(name, value, false, '', this.subform[value])\r\n\r\n if (rules) {\r\n const changedval = checkcomp(value, rules, 'onChange', passer)\r\n this.setState({\r\n globalitem: changedval\r\n })\r\n }\r\n }\r\n\r\n }\r\n };\r\n\r\n handleBlur = () => (event) => {\r\n const { options } = this.props\r\n const { validations } = options\r\n const target = event.target;\r\n if (target) {\r\n const value = target && target.value;\r\n let invalid = ''\r\n if (validations && (validations.length > 0)) {\r\n validations && validations.forEach(each => {\r\n // if (validationmap[each]) { // --correct validationmap is missing\r\n // const returnval = validationmap[each](value)\r\n // if (returnval) invalid += returnval + '/n'\r\n\r\n // }\r\n if (invalid !== '') {\r\n if (this.props.setFormFieldValue) {\r\n this.props.setFormFieldValue(target.name, value, true, invalid)\r\n }\r\n }\r\n else {\r\n if (this.props.setFormFieldValue) {\r\n this.props.setFormFieldValue(target.name, value)\r\n }\r\n }\r\n })\r\n }\r\n else {\r\n if (this.props.setFormFieldValue) {\r\n this.props.setFormFieldValue(target.name, value)\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n handleOpen = (name, rules, passer) => event => {\r\n\r\n }\r\n handleClose = (name, rules, passer) => event => {\r\n\r\n }\r\n\r\n\r\n render() {\r\n const { options, rules, passer, type, reCalculateFieldLayout } = this.props;\r\n const { values, initialvalue, transformProps } = options\r\n const { id, label, htmlForLabel, name, placeholder, validations, helperText, disabled, required, inputLabelProps, inputattrprops, inputprops, inputadornmentprops, margin, tooltip, contexthelp, ...otherOptions } = options\r\n const dropdownvalues = values || this.state.items\r\n const { value, error } = this.props.currentValue\r\n let helpfultext\r\n if (error) helpfultext = this.props.currentValue.helperText\r\n return (\r\n <FormControl disabled={disabled} error={error} required={required} fullWidth>\r\n <InputLabel shrink htmlFor={htmlForLabel}>{label}</InputLabel> \r\n {/* <Fragment>\r\n {(tooltip || contexthelp) && <div > <Typography variant={'caption'} className=\"text-secondary\">{label} \r\n < Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em' }} onClick={() => DefaultSettings.showDrawer(contexthelp)} />\r\n </Tooltip> </Typography> <Typography className=\"fw-bold\" variant={'body2'} color={'textPrimary'} className=\"fw-bold\">{value} </Typography>\r\n </div>}\r\n {!tooltip && <div > <Typography variant={'caption'} className=\"text-secondary\">{label} </Typography> <Typography className=\"fw-bold eps-content-wrap\" variant={'body2'} color={'textPrimary'} className=\"fw-bold eps-content-wrap\">{value} </Typography>\r\n </div>}\r\n </Fragment > */}\r\n <Select\r\n value={value || initialvalue || ''}\r\n onChange={this.handleChange(name, rules, passer)}\r\n onOpen={this.handleOpen(name, rules, passer)}\r\n onClose={this.handleClose(name, rules, passer)}\r\n //onBlur={this.handleBlur()}\r\n // input={<Input {...inputprops} />}\r\n inputProps={{\r\n name: name,\r\n id: id || name,\r\n ...inputattrprops\r\n }}\r\n >\r\n {dropdownvalues && dropdownvalues.map((each, index) => {\r\n const { value, name, subform, key } = each\r\n if (subform) {\r\n this.subform[value] = subform\r\n }\r\n return <MenuItem key={key || ('item' + value)} value={value}>{name}</MenuItem>\r\n })}\r\n </Select>\r\n {(helpfultext || helperText) && <FormHelperText>{helpfultext || helperText}</FormHelperText>}\r\n {this.state.globalitem}\r\n </FormControl>\r\n )\r\n }\r\n}\r\n\r\nexport default CDropDown;\r\n\r\n\r\n\r\n\r\n/**\r\n * {\r\n * type:'dropdown',\r\n * label:'dropdown',\r\n * values:[1,2,4],\r\n * options:{\r\n *\r\n * },\r\n * rules:[{\r\n * 'forvalue':[1,2,4],\r\n * 'onevent':['onchange','onblur','onfocus'],\r\n * 'effect': 'create',\r\n * 'condition':[\r\n * {\r\n * type:'textbox',\r\n * label:'textbox',\r\n * value:'textbox'\r\n * },\r\n * {\r\n * type:'textbox',\r\n * label:'textbox',\r\n * value:'textbox'\r\n * }\r\n *\r\n * ]\r\n * }],\r\n * defaults:{\r\n * theme:'material',\r\n * }\r\n * }\r\n */\r\n\r\n\r\n\r\n\r\n\r\n\r\n // if (add) {\r\n // const { mapeventstovalues, scope, items } = add\r\n // if (mapeventstovalues.onChange) {\r\n // if (scope) {\r\n // const { passer, passertype, passervar } = this.props\r\n // let passeraction\r\n // if (passer) {\r\n // passeraction = <SpecificPasser type={passertype} message={items} />\r\n // }\r\n // this.setState({\r\n // textelement: <Fragment>\r\n // {this.state.textelement}\r\n // {passeraction}\r\n // </Fragment>\r\n // })\r\n\r\n // }\r\n // else {\r\n // this.props.dropdownchange(items)\r\n // }\r\n // }\r\n // else return\r\n // }\r\n // if (del) {\r\n // const { mapeventstovalues, items } = del\r\n // if (mapeventstovalues.onChange) {\r\n // const values = mapeventstovalues.onChange\r\n // const foundval = values.length > 0 && values.find(each => {\r\n // const { value } = each.value\r\n // return targetval === value\r\n // })\r\n // if (foundval) {\r\n // const scope = foundval.scope\r\n // if (scope.length > 0) {\r\n // scope.foreach(each => {\r\n // const { passer, passertype } = this.props\r\n // let passeraction\r\n // const { name, items } = each\r\n // if (passer) {\r\n // passeraction = <SpecificPasser type={name} message={items} />\r\n // }\r\n // this.setState({\r\n // textelement: <Fragment>\r\n // {this.state.textelement}\r\n // {passeraction}\r\n // </Fragment>\r\n // })\r\n // })\r\n // }\r\n // else {\r\n // this.props.dropdownchange(items)\r\n // }\r\n // // if (scope) {\r\n // // const { passer, passertype, passervar } = this.props\r\n // // let passeraction\r\n // // if (passer) {\r\n // // passeraction = <SpecificPasser type={passertype} message={items} />\r\n // // }\r\n // // this.setState({\r\n // // textelement: <Fragment>\r\n // // {this.state.textelement}\r\n // // {passeraction}\r\n // // </Fragment>\r\n // // })\r\n\r\n // // }\r\n // // else {\r\n // // this.props.dropdownchange(items)\r\n // // }\r\n // }\r\n // }\r\n // else return\r\n // }\r\n // if (edit) {\r\n // const { mapeventstovalues, scope, items } = edit\r\n // if (mapeventstovalues.onChange) {\r\n // if (scope) {\r\n // const { passer, passertype, passervar } = this.props\r\n // let passeraction\r\n // if (passer) {\r\n // passeraction = <SpecificPasser type={passertype} message={items} />\r\n // }\r\n // this.setState({\r\n // textelement: <Fragment>\r\n // {this.state.textelement}\r\n // {passeraction}\r\n // </Fragment>\r\n // })\r\n\r\n // }\r\n // else {\r\n // this.props.dropdownchange(items)\r\n // }\r\n // }\r\n // else return\r\n // }\r\n // if (styling) {\r\n // const { mapeventstovalues, scope, items } = styling\r\n // if (mapeventstovalues.onChange) {\r\n // if (scope) {\r\n // const { passer, passertype, passervar } = this.props\r\n // let passeraction\r\n // if (passer) {\r\n // passeraction = <SpecificPasser type={passertype} message={items} />\r\n // }\r\n // this.setState({\r\n // textelement: <Fragment>\r\n // {this.state.textelement}\r\n // {passeraction}\r\n // </Fragment>\r\n // })\r\n\r\n // }\r\n // else {\r\n // this.props.dropdownchange(items)\r\n // }\r\n // }\r\n // else return\r\n // }","/**\r\n *********************************************************\r\n Currently not used anywhere\r\n *********************************************************\r\n**/\r\nimport Button from '@material-ui/core/Button';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport Chip from '@material-ui/core/Chip';\r\nimport red from '@material-ui/core/colors/red';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport Icon from '@material-ui/core/Icon';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport List from '@material-ui/core/List';\r\nimport ListItem from '@material-ui/core/ListItem';\r\nimport ListItemSecondaryAction from '@material-ui/core/ListItemSecondaryAction';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Select from '@material-ui/core/Select';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport { requestApi } from './utilities';\r\n\r\nconst styles = theme => ({\r\n root: {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'flex-end',\r\n },\r\n icon: {\r\n margin: theme.spacing(2),\r\n },\r\n iconHover: {\r\n margin: theme.spacing(2),\r\n '&:hover': {\r\n color: red[800],\r\n },\r\n },\r\n});\r\n\r\nclass CDropDownWithAdd extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n const { name, initialvalue } = props.options;\r\n this.state = {\r\n open: false,\r\n name: '',\r\n items: [],\r\n checked: [0],\r\n }\r\n\r\n }\r\n\r\n componentDidMount() {\r\n const { options, initialvalue, checkkey, value, error } = this.props\r\n const { crud, values, name, transformProps } = options\r\n let valueKey, valueName\r\n if (transformProps) {\r\n valueKey = transformProps.value\r\n valueName = transformProps.name\r\n }\r\n else {\r\n valueKey = 'id'\r\n valueName = 'name'\r\n }\r\n if (crud) {\r\n const { create, read, update } = crud\r\n const del = crud.delete\r\n if (!values) {\r\n requestApi(read).then(results => {\r\n const dropdownvalues = results\r\n this.setState({\r\n items: results.map(each => {\r\n return { value: each[valueKey], name: each[valueName] }\r\n })\r\n })\r\n })\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n handleChange = (name) => event => {\r\n const target = event.target;\r\n if (target) {\r\n const value = target && target.value;\r\n if (this.props.setFormFieldValue) {\r\n this.props.setFormFieldValue(name, value, false, '', this.subform[value])\r\n }\r\n\r\n }\r\n };\r\n\r\n handleBlur = () => (event) => {\r\n const { options } = this.props\r\n const { validations } = options\r\n const target = event.target;\r\n if (target) {\r\n const value = target && target.value;\r\n\r\n }\r\n }\r\n\r\n\r\n openDialog = () => {\r\n this.setState({\r\n open: true\r\n })\r\n }\r\n closeDialog = () => {\r\n this.setState({\r\n open: false\r\n })\r\n }\r\n\r\n searchItem = () => event => {\r\n this.setState({\r\n name: event.target.value\r\n })\r\n }\r\n\r\n addItem = () => {\r\n this.setState({\r\n items: this.state.items.concat(this.state.name)\r\n })\r\n\r\n this.props.handleothercomponents(this.props.options.name, this.state.items.concat(this.state.name))\r\n }\r\n\r\n deleteItem = () => {\r\n this.setState({\r\n\r\n })\r\n }\r\n handleToggle = value => () => {\r\n const { checked } = this.state;\r\n const currentIndex = checked.indexOf(value);\r\n const newChecked = [...checked];\r\n\r\n if (currentIndex === -1) {\r\n newChecked.push(value);\r\n } else {\r\n newChecked.splice(currentIndex, 1);\r\n }\r\n\r\n this.setState({\r\n checked: newChecked,\r\n });\r\n };\r\n\r\n\r\n render() {\r\n const { options, classes } = this.props;\r\n const { values } = options\r\n const { id, label, htmlForLabel, name, value, error, placeholder, validations, helperText, disabled, required, inputLabelProps, inputattrprops, inputprops, inputadornmentprops, margin, ...otherOptions } = options\r\n const dropdownvalues = values || this.state.items\r\n return (\r\n <div className='row'>\r\n <div className='col-10'>\r\n <FormControl disabled={disabled} error={error} required={required} fullWidth>\r\n <InputLabel htmlFor={htmlForLabel}>{label}</InputLabel>\r\n <Select\r\n multiple\r\n value={dropdownvalues}\r\n onChange={this.handleChange(name)}\r\n inputProps={{\r\n name: name,\r\n id: id || name,\r\n ...inputattrprops\r\n }}\r\n renderValue={selected => (\r\n <div className={classes.chips}>\r\n {selected.map(value => (\r\n <Chip key={value} label={value} className={classes.chip} />\r\n ))}\r\n </div>\r\n )}\r\n >\r\n {dropdownvalues && dropdownvalues.map((each, index) => {\r\n const { value, name, key } = each\r\n return <MenuItem key={key || ('item' + value)} value={value}>{name}</MenuItem>\r\n })}\r\n </Select>\r\n {(helperText) && <FormHelperText>{helperText}</FormHelperText>}\r\n </FormControl>\r\n </div>\r\n\r\n <div className='col-2'>\r\n <Icon className={classes.icon} color=\"primary\" onClick={this.openDialog}>\r\n add_circle\r\n </Icon>\r\n </div>\r\n\r\n <Dialog aria-labelledby=\"simple-dialog-title\"\r\n open={this.state.open}\r\n onClose={this.closeDialog}\r\n >\r\n <DialogTitle id=\"simple-dialog-title\">Add or Delete Items</DialogTitle>\r\n <div>\r\n <TextField\r\n id=\"standard-name\"\r\n label=\"Name\"\r\n value={this.state.name}\r\n onChange={this.searchItem('name')}\r\n margin=\"normal\"\r\n />\r\n <Button variant=\"contained\" size=\"small\" color=\"primary\" className={classes.margin} onClick={this.addItem} >\r\n Add\r\n </Button>\r\n <List className={classes.root}>\r\n {this.state.items.map(value => (\r\n <ListItem key={value} role={undefined} dense button onClick={this.handleToggle(value)}>\r\n <Checkbox\r\n checked={this.state.checked.indexOf(value) !== -1}\r\n tabIndex={-1}\r\n disableRipple\r\n />\r\n <ListItemText primary={`${value}`} />\r\n <ListItemSecondaryAction>\r\n <IconButton aria-label=\"Delete\" onClick={this.deleteItem}>\r\n <DeleteIcon />\r\n </IconButton>\r\n </ListItemSecondaryAction>\r\n </ListItem>\r\n ))}\r\n </List>\r\n </div>\r\n </Dialog>\r\n </div>\r\n )\r\n }\r\n}\r\n\r\nCDropDownWithAdd.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n};\r\n\r\nexport default withStyles(styles)(CDropDownWithAdd);\r\n\r\n\r\n\r\n/**\r\n * {\r\n * type:'dropdown',\r\n * label:'dropdown',\r\n * values:[1,2,4],\r\n * options:{\r\n *\r\n * },\r\n * rules:[{\r\n * 'forvalue':[1,2,4],\r\n * 'onevent':['onchange','onblur','onfocus'],\r\n * 'effect': 'create',\r\n * 'condition':[\r\n * {\r\n * type:'textbox',\r\n * label:'textbox',\r\n * value:'textbox'\r\n * },\r\n * {\r\n * type:'textbox',\r\n * label:'textbox',\r\n * value:'textbox'\r\n * }\r\n *\r\n * ]\r\n * }],\r\n * defaults:{\r\n * theme:'material',\r\n * }\r\n * }\r\n */\r\n\r\n\r\n\r\n"," /**\r\n *********************************************************\r\n deprecated\r\n *********************************************************\r\n **/\r\n\r\nimport React, { Component, Fragment } from 'react';\r\nimport DualListBox from 'react-dual-listbox';\r\nimport 'react-dual-listbox/lib/react-dual-listbox.css';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { requestApi } from './utilities';\r\n\r\nclass CDualListBox extends Component {\r\n\r\n state = {\r\n selected: [],\r\n available: [],\r\n showselected: [],\r\n opts: []\r\n };\r\n\r\n onChange = (selected) => {\r\n const { options } = this.props\r\n const { name, transformProps } = options\r\n const foundresults = {\r\n [transformProps.selected]: this.state.results[transformProps.options].filter(each => { return selected.find(e => e === (each.value || each.id)) }),\r\n //[transformFile.options]:\r\n }\r\n // this.setState({\r\n // selected: selected,\r\n // results: foundresults\r\n\r\n // });\r\n if (this.props.setFormFieldValue) {\r\n this.props.setFormFieldValue(name, foundresults)\r\n }\r\n // if (this.props.setAdditionalFormFieldValue) {\r\n // this.props.setAdditionalFormFieldValue(name, { availableCollection: this.state.opts, selectedCollection: this.state.selected })\r\n // }\r\n };\r\n\r\n componentDidMount() {\r\n const { options } = this.props\r\n const { crud } = options\r\n const { name, sendProps, receiveProps } = options\r\n // const { parentProps } = this.props\r\n // const { name } = parentProps\r\n const { transformProps } = options\r\n let showselected = []\r\n let available = []\r\n let selected = []\r\n this.selectedListbox.addEventListener('click', (event) => {\r\n console.log(event);\r\n const selectedvalue = sendProps ? (sendProps.selectedvalue ? event.target.value : null) : null\r\n this.props.passPropsToOtherFields(selectedvalue)\r\n });\r\n if (crud) {\r\n const { read } = crud\r\n const { get } = read\r\n let id\r\n const { routeProps, customProps } = read.get;\r\n if (routeProps) {\r\n id = this.props.match.params[get.routeProps.value]\r\n }\r\n else if (customProps){\r\n id = this.props.dataItem[customProps.custom]\r\n }\r\n requestApi(read, id).then(results => {\r\n console.log('dulalistbox results---', results);\r\n if (this.props.setFormFieldValue) {\r\n this.props.setFormFieldValue(name, results)\r\n }\r\n })\r\n }\r\n }\r\n\r\n render() {\r\n const { options, components, compmap, order, type, rules, currentValue, ...otherProps } = this.props;\r\n\r\n const { transformProps } = options\r\n const value = currentValue ? currentValue.value : null\r\n\r\n const availableCollection = value ? value[transformProps.options] : null\r\n const selectedCollection = value ? value[transformProps.selected] : null\r\n const selected = selectedCollection ? selectedCollection.map(each => {\r\n return each[transformProps.value]\r\n }) : []\r\n const opts = availableCollection ? availableCollection.map(each => {\r\n return { value: each[transformProps.value], label: each[transformProps.label] }\r\n }) : []\r\n\r\n\r\n return (\r\n <Fragment>\r\n <DualListBox\r\n options={opts}\r\n //selected={showselected}\r\n selected={selected}\r\n onChange={this.onChange}\r\n selectedRef={(element) => { this.selectedListbox = element; }}\r\n showHeaderLabels={true}\r\n />\r\n </Fragment>\r\n )\r\n }\r\n}\r\n\r\nexport default withRouter(CDualListBox)","import React, { Component, Fragment } from 'react'\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport CheckBoxAutoComplete from '../../controls/components/checkautocomplete'\r\n\r\nconst CFormAutoComplete = (props) => {\r\n const { classes } = props\r\n const { handleFieldChange, dropdownvalues, edit, name, tooltip, label, disabled, error, required, htmlForLabel,\r\n helperText, id, crud, styles, className, multiple, handleAutoCompleteInputChange, ...otherProps } = props\r\n let { transformProps, newtransformProps } = props\r\n let value = props.value\r\n if (multiple) value = value ? value.split(',') : []\r\n let displayname, isLoading\r\n if (newtransformProps) {\r\n let selarr = []\r\n const selected1 = dropdownvalues && dropdownvalues.filter(each => {\r\n let val = each.Value\r\n if(value && value.includes(val)) {\r\n selarr.push(each.Name)\r\n return each.Name\r\n }\r\n }\r\n )\r\n if (selected1 && selarr.length>0) {\r\n displayname = selarr.join()\r\n }\r\n else displayname = value\r\n }\r\n else if (transformProps) {\r\n const selected = dropdownvalues && dropdownvalues.find(each => {\r\n return each[transformProps.value] == value\r\n }\r\n )\r\n if (selected) displayname = selected[transformProps.name || transformProps.label]\r\n else displayname = value\r\n }\r\n else displayname = value\r\n // defaultValue={(dropdownvalues && Array.isArray(dropdownvalues) ? dropdownvalues[0].value : null)}\r\n\r\n function loadoptions(e) {\r\n handleAutoCompleteInputChange({ target: { name: name, value: e ? e : null, checked: false } });\r\n }\r\n\r\n if (edit === false) {\r\n return <div className={className ? className : ''} >\r\n {tooltip && <Fragment> <Typography variant={'caption'} className=\"fw-bold\">{label} < Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em' }} />\r\n </Tooltip></Typography>\r\n <Typography variant={'body2'} color={'textPrimary'} className=\"text-secondary\">{displayname} </Typography></Fragment>}\r\n {!tooltip && <Fragment> <Typography variant={'caption'} className=\"fw-bold\">{label} </Typography>\r\n <Typography variant={'body2'} color={'textPrimary'} className=\"text-secondary\">{displayname} </Typography></Fragment>}\r\n </div>\r\n }\r\n else {\r\n return (\r\n <div>\r\n {/* <InputLabel htmlFor={htmlForLabel || label}>{label}</InputLabel>\r\n <FormControl disabled={disabled} error={error} required={required} fullWidth >\r\n <Select\r\n value={{ label: displayname, value: value }}\r\n onInputChange={loadoptions}\r\n onChange={(e) => handleFieldChange({ target: { name: name, value: e && e.value ? e.value : null, checked: false } })}\r\n options={(dropdownvalues && Array.isArray(dropdownvalues) && dropdownvalues.map((each, index) => {\r\n const value = transformProps ? each[transformProps.value] : each.value\r\n const name = transformProps ? each[transformProps.name] : each.name\r\n const key = each.key || value\r\n return { label: name, value: value }\r\n }) || [])}\r\n closeMenuOnSelect={true}\r\n isLoading={!(dropdownvalues && Array.isArray(dropdownvalues) && dropdownvalues.length > 0)}\r\n isClearable\r\n isMulti={multiple}\r\n />\r\n {helperText && <FormHelperText>{helperText}</FormHelperText>}\r\n </FormControl> */}\r\n <CheckBoxAutoComplete label={label} name={name} required={required} error={error} helperText={helperText} ismulti={true} value={value} extraProps={{ transformProps: transformProps ? transformProps : newtransformProps}}\r\n items={dropdownvalues || []} handleFieldValue={(evt) => handleFieldChange(evt)} />\r\n </div>\r\n )\r\n }\r\n}\r\n\r\n\r\nexport default CFormAutoComplete;","import React, { Fragment } from 'react';\r\n /**\r\n *********************************************************\r\n deprecated\r\n *********************************************************\r\n **/\r\nimport Button from '@material-ui/core/Button';\r\nimport Icon from '@material-ui/core/Icon';\r\nimport { withStyles } from '@material-ui/core/styles';\r\n\r\nconst styles = theme => ({\r\n // button: {\r\n // margin: theme.spacing(1),\r\n // },\r\n leftIcon: {\r\n marginRight: theme.spacing(1),\r\n },\r\n rightIcon: {\r\n marginLeft: theme.spacing(1),\r\n }\r\n});\r\n\r\nconst CFormButton = (props) => {\r\n\r\n const { classes } = props\r\n const { options, passer, type, rules, components, handleFieldChange, value, error, touched, ...otherProps } = props;\r\n const { text, icon, color, disabled, href, size, variant, name, ...otherOptions } = options\r\n let iconname, iconColor, iconFontSize, iconposition\r\n if (icon) {\r\n iconname = icon.iconname\r\n iconColor = icon.iconColor\r\n iconFontSize = icon.iconFontSize\r\n }\r\n\r\n const handleButton=(event)=>{\r\n console.log(event.name)\r\n }\r\n return (\r\n <Fragment>\r\n {(type === 'formbutton' || type === 'navformbutton') && <Button\r\n color={color || 'default'}\r\n disabled={disabled}\r\n href={href}\r\n size={size}\r\n variant={variant}\r\n {...otherProps}\r\n {...otherOptions}\r\n name = {name}\r\n >\r\n {text}\r\n {(iconposition === 'left') && <Icon\r\n className={classes.leftIcon} color={iconColor || 'inherit'} fontSize={iconFontSize || 'default'} >{iconname}\r\n </Icon>\r\n }\r\n {iconposition && !(iconposition === 'left') && <Icon\r\n className={classes.rightIcon} color={iconColor || 'inherit'} fontSize={iconFontSize || 'default'} >{iconname}\r\n </Icon>\r\n }\r\n\r\n </Button>}\r\n {type === 'icon' && <Icon\r\n onClick={this.handleClick(name, rules, passer)}\r\n color={iconColor || 'inherit'} fontSize={iconFontSize || 'default'}\r\n >\r\n {iconname}\r\n </Icon>\r\n }\r\n </Fragment>\r\n\r\n )\r\n\r\n}\r\n\r\nexport default withStyles(styles)(CFormButton);\r\n\r\n\r\n\r\n\r\n\r\n\r\n/**\r\n * {\r\n * type:'button',\r\n * options:{\r\n * text:'alarm',\r\n * icon:'alarm',\r\n * button:''\r\n * },\r\n * defaults:{\r\n * theme:'default',\r\n * custom: false\r\n * }\r\n * }\r\n */","/**\r\n *********************************************************\r\n Description: Checkbox component. Value received is converted using transformProps to true or false.\r\n Required props: type,value.\r\n limitations : N/A.\r\n *********************************************************\r\n**/\r\n\r\nimport React, { Component, Fragment, useState } from 'react';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormGroup from '@material-ui/core/FormGroup';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport ConfirmationDialog from \"../../../core/controls/components/confirmationPopup\";\r\nimport DefaultSettings from '../../controls/components/settings';\r\n\r\nconst CFormCheckbox = (props) => {\r\n const [confirmOpen, setConfirmOpen] = useState(false)\r\n const [currenteventvalue, setCurrenteventvalue] = useState(null)\r\n const { handleFieldChange, value, edit, name, disablecheckbox, color, tooltip, label, labelPlacement, contexthelp, required, helperText,\r\n transformProps, onlyLabel, disabled, hidecond, hideval } = props\r\n let disabledstatus = disabled;\r\n\r\n const handleFieldChangeValue = (e) => {\r\n let event = { target: {} }\r\n event.target.name = e.target.name\r\n event.target.value = e.target.value\r\n event.target.checked = e.target.checked\r\n event.target.type = e.target.type\r\n setCurrenteventvalue(event);\r\n setConfirmOpen(true);\r\n }\r\n const handleSaveConfirmation = () => {\r\n handleFieldChange(currenteventvalue);\r\n setCurrenteventvalue(null);\r\n setConfirmOpen(false);\r\n }\r\n\r\n const handleClose = () => {\r\n setCurrenteventvalue(null);\r\n setConfirmOpen(false);\r\n }\r\n\r\n if (hidecond && hideval && hidecond == hideval) {\r\n return null\r\n }\r\n else if (edit === false || onlyLabel === true) {\r\n return <div>\r\n {(tooltip || contexthelp) && <Fragment>\r\n <Typography variant={'caption'} className=\"fw-bold\">{label} < Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em' }} onClick={() => DefaultSettings.showDrawer(contexthelp)} />\r\n </Tooltip></Typography><Typography className=\"text-secondary\" variant={'body2'} color={'textPrimary'}>{value ? (transformProps ?\r\n String((transformProps[value] === 'Y' || transformProps[value] === true) ? 'Yes' : 'No') : String(value)) : 'No'} </Typography>\r\n </Fragment>}\r\n {!(tooltip || contexthelp) && <Fragment>\r\n <Typography variant={'caption'} className=\"fw-bold\">{label} </Typography><Typography className=\"text-secondary\" variant={'body2'} color={'textPrimary'}>{value ? (transformProps ?\r\n String((transformProps[value] === 'Y' || transformProps[value] === true) ? 'Yes' : 'No') : String(value)) : 'No'} </Typography>\r\n </Fragment>}\r\n </div>\r\n }\r\n else {\r\n let tlabel = <div style={{ fontWeight: 'bold', color: props.errors ? 'red' : disabled ? disabled : 'black' ,fontSize:'0.8rem'}} shrink> {label} {tooltip && <Tooltip title={tooltip ? tooltip : null}\r\n placement=\"bottom-start\" ><HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em' }} onClick={() => DefaultSettings.showDrawer(contexthelp)} />\r\n </Tooltip>} </div>\r\n return <Fragment>\r\n <FormControl required={props.required} disabled={disabledstatus} error={props.errors || props.error || false}>\r\n <div className=\"row pl-3\">\r\n {/* {props.required && <FormLabel ></FormLabel>} */}\r\n <FormGroup >\r\n <FormControlLabel className=\"text-secondary\"\r\n control={<Checkbox\r\n checked={value ? (transformProps ? transformProps[value] : value) : false}\r\n onChange={(e) => props.options && props.options.hasconfirmation ? handleFieldChangeValue(e) : handleFieldChange(e)}\r\n color={disabled ? \"#808080\":(color || \"primary\")}\r\n // color={\"red\"}\r\n name={name}\r\n disabled={disablecheckbox}\r\n />}\r\n label={tlabel}\r\n labelPlacement={labelPlacement || 'end'}\r\n />\r\n </FormGroup >\r\n </div>\r\n {props.options && props.options.helperText && <FormHelperText>{props.options.helperText}</FormHelperText>}\r\n {props.helperText && <FormHelperText error={props.error}>{props.helperText}</FormHelperText>}\r\n {props.options && props.options.hasconfirmation && confirmOpen && <ConfirmationDialog value={confirmOpen} description={props.options.description} title={props.options.confirmtitle} onSubmit={() => handleSaveConfirmation()} onClose={() => handleClose()} />}\r\n </FormControl>\r\n </Fragment>\r\n }\r\n}\r\n\r\nexport default CFormCheckbox;\r\n\r\n","import FormHelperText from '@material-ui/core/FormHelperText';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport React, { Component, Fragment } from 'react';\r\nimport { SketchPicker } from 'react-color';\r\nimport reactCSS from 'reactcss';\r\n\r\nclass FormColorPicker extends Component {\r\n\r\n state = {\r\n displayColorPicker: false,\r\n color: null,\r\n };\r\n\r\n handleChange = (e) => {\r\n const { handleFieldChange, value, name, id, edit, options, ...otherProps } = this.props\r\n let events = { target: { value: e.hex, name: name, checked: false } }\r\n this.props.handleFieldChange(events);\r\n this.handleClick();\r\n }\r\n\r\n handleClick = () => {\r\n this.setState({ displayColorPicker: !this.state.displayColorPicker })\r\n };\r\n\r\n handleClose = () => {\r\n this.setState({ displayColorPicker: false })\r\n };\r\n\r\n\r\n render() {\r\n const { handleFieldChange, value, name, id, edit, options, disabled, error, required, defaultValue, className, helperText, conditions, ...otherProps } = this.props\r\n let disabledstatus = conditions && conditions.enable ? conditions.enable : disabled\r\n const { label, xtype, inputProps, password } = otherProps\r\n const val = ((value === null) || (value === undefined)) ? '' : value;\r\n const styles = reactCSS({\r\n 'default': {\r\n color: {\r\n width: '36px',\r\n height: '14px',\r\n borderRadius: '2px',\r\n background: val,\r\n },\r\n editcolor: {\r\n height: '14px',\r\n borderRadius: '2px',\r\n background: val,\r\n },\r\n swatch: {\r\n padding: '5px',\r\n background: '#fff',\r\n borderRadius: '1px',\r\n boxShadow: '0 0 0 1px rgba(0,0,0,.1)',\r\n display: 'inline-block',\r\n cursor: 'pointer',\r\n width: '45px'\r\n },\r\n popover: {\r\n // position: 'absolute',\r\n // zIndex: '2',\r\n },\r\n cover: {\r\n position: 'fixed',\r\n top: '0px',\r\n right: '0px',\r\n bottom: '0px',\r\n left: '0px',\r\n },\r\n },\r\n });\r\n if (edit === false) {\r\n return <Fragment>\r\n <div >\r\n <Typography variant={'caption'} className=\"fw-bold\">{label} </Typography><br />\r\n <div style={styles.swatch} >\r\n <div style={styles.color} />\r\n </div>\r\n </div>\r\n </Fragment >\r\n }\r\n // else return <ColorPicker\r\n // value={val || ''}\r\n // name={name}\r\n // {...otherProps}\r\n // //defaultValue='#000000'\r\n // onChange={this.handleChange}//event.target=['value']= e, event.target['checked']= false, event.target['name']= name\r\n\r\n // />\r\n else return <Fragment>\r\n {/* <FormControl fullwidth disabled={disabledstatus} error={error} required={required}> */}\r\n <InputLabel shrink error={error} required={required}>{label}</InputLabel>\r\n <div style={styles.swatch} onClick={() => this.handleClick()}>\r\n <div style={styles.editcolor} />\r\n </div>\r\n {\r\n this.state.displayColorPicker ? <div style={styles.popover}>\r\n <div style={styles.cover} onClick={() => this.handleClose()} />\r\n <SketchPicker color={val} onChange={(e) => this.handleChange(e)} />\r\n </div> : null\r\n }\r\n {helperText && <FormHelperText error={error}>{helperText}</FormHelperText>}\r\n {/* </FormControl> */}\r\n </Fragment>\r\n\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\nexport default FormColorPicker;\r\n\r\n\r\n","/** \r\n *********************************************************\r\n Description: Card panel component. xtype can be used to show the text etc.\r\n Required props: type, values (Text or content to show in panel)..\r\n limitations : N/A\r\n Added By: Narendra\r\n *********************************************************\r\n**/\r\nimport React, { Component, Fragment } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardActions from '@material-ui/core/CardActions';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport Button from '@material-ui/core/Button';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport moment from 'moment';\r\n\r\nconst isHTML = (str) => {\r\n var doc = new DOMParser().parseFromString(str, \"text/html\");\r\n return Array.from(doc.body.childNodes).some(node => node.nodeType === 1);\r\n }\r\n\r\nconst CFormDiscussionPanel = (props) => {\r\n const { handleFieldChange, value, name, id, edit, options, ...otherProps } = props\r\n const { label, xtype, inputProps } = otherProps\r\n const val = ((value === null) || (value === undefined)) ? [] : value\r\n \r\n const classes = {}; \r\n return <Fragment>\r\n <div className=\"\"> \r\n \r\n {val && val.map((iter,index) => { \r\n return( <Card className=\"\">\r\n <CardContent>\r\n \r\n <Typography color=\"textSecondary\" >\r\n {iter.CreatedByName ? iter.CreatedByName: \"\"} commented on {moment(iter.CreatedOn).format('MM/DD/YYYY')}\r\n </Typography> \r\n\r\n <Typography className=\"\" variant=\"body2\" component=\"p\" gutterBottom>\r\n <b>Comments: </b> \r\n { isHTML(atob(iter.Body)) ? \r\n <div dangerouslySetInnerHTML={{ __html: atob(iter.Body) }} /> : iter.Body}\r\n <br /> \r\n </Typography>\r\n\r\n </CardContent>\r\n <CardActions>\r\n {/* <Button size=\"small\">Learn More</Button> */}\r\n </CardActions>\r\n </Card>) \r\n })}\r\n </div>\r\n </Fragment >\r\n}\r\nexport default CFormDiscussionPanel;\r\n"," /** \r\n *********************************************************\r\n Currently not used anywhere. \r\n *********************************************************\r\n **/ \r\n\r\nimport React, { Component, Fragment } from 'react';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport FormGroup from '@material-ui/core/FormGroup'\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormLabel from '@material-ui/core/FormLabel';\r\n\r\n\r\nclass CFormFieldsGroup extends Component {\r\n\r\n render() {\r\n const { options, compmap, components } = this.props;\r\n const { label, labelcomp, controlcomp, helpertext, disabled, error, required, fullWidth, margin, formgrouprow, ...otherprops } = options\r\n\r\n return (\r\n <Fragment>\r\n <FormControl component=\"fieldset\" disabled={disabled} required={required} error={error} fullWidth={fullWidth} margin={margin} {...otherprops}>\r\n <FormLabel component={labelcomp}>{label}</FormLabel>\r\n <FormGroup row={formgrouprow}>\r\n {components && components.map(each => {\r\n const EachComp = compmap[each.type]\r\n return <EachComp {...each} />\r\n })}\r\n </FormGroup>\r\n {helpertext && <FormHelperText>{helpertext}</FormHelperText>}\r\n </FormControl>\r\n </Fragment>\r\n )\r\n }\r\n\r\n}\r\n\r\nexport default CFormFieldsGroup;\r\n\r\n\r\n\r\n/**\r\n* {\r\n* type: 'formgroup',\r\n* options:{\r\n label:'',\r\n labelcomp: \"legend\",\r\n controlcomp:'fieldset',\r\n\r\n items:[{\r\n type:'radio',\r\n options:{\r\n\r\n }\r\n }]\r\n* label: '',\r\n * },\r\n* defaults:{\r\n* theme: 'default'\r\n * }\r\n * }\r\n*/"," /** \r\n *********************************************************\r\n Currently not used anywhere. \r\n *********************************************************\r\n **/ \r\n\r\nimport React, { Component, Fragment } from 'react';\r\n\r\nconst CFormInputHidden = (props) => {\r\n const { value,name } = props\r\n\r\n return <input type=\"text\" value= {value || ''} name={name} hidden/>\r\n}\r\nexport default CFormInputHidden;","/** \r\n *********************************************************\r\n Description: Handles alerts. Used internally by components. Not handled from json\r\n Required props: variant.\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\n\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport InfoIcon from '@material-ui/icons/Info';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport green from '@material-ui/core/colors/green';\r\nimport amber from '@material-ui/core/colors/amber';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport WarningIcon from '@material-ui/icons/Warning';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport { bindActionCreators } from 'redux'\r\nimport { connect } from 'react-redux';\r\nimport { snackbarMessage } from '../../actions';\r\n\r\nconst variantIcon = {\r\n success: CheckCircleIcon,\r\n warning: WarningIcon,\r\n error: ErrorIcon,\r\n info: InfoIcon,\r\n};\r\n\r\nconst styles1 = theme => ({\r\n success: {\r\n backgroundColor: green[600],\r\n },\r\n error: {\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n info: {\r\n backgroundColor: theme.palette.primary.dark,\r\n },\r\n warning: {\r\n backgroundColor: amber[700],\r\n },\r\n icon: {\r\n fontSize: 20,\r\n },\r\n iconVariant: {\r\n opacity: 0.9,\r\n marginRight: theme.spacing(1),\r\n },\r\n message: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n});\r\n\r\nfunction MySnackbarContent(props) {\r\n const { classes, className, message, onClose, variant, ...other } = props;\r\n const Icon = variantIcon[variant];\r\n return (\r\n <SnackbarContent\r\n className={classNames(classes[variant], className)}\r\n aria-describedby=\"client-snackbar\"\r\n message={\r\n <span id=\"client-snackbar\" className={classes.message}>\r\n <Icon className={classNames(classes.icon, classes.iconVariant)} />\r\n {message}\r\n </span>\r\n }\r\n action={[\r\n <IconButton\r\n key=\"close\"\r\n aria-label=\"Close\"\r\n color=\"inherit\"\r\n className={classes.close}\r\n onClick={onClose}\r\n >\r\n <CloseIcon className={classes.icon} />\r\n </IconButton>,\r\n ]}\r\n {...other}\r\n />\r\n );\r\n}\r\n\r\nMySnackbarContent.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n className: PropTypes.string,\r\n message: PropTypes.node,\r\n onClose: PropTypes.func,\r\n variant: PropTypes.oneOf(['success', 'warning', 'error', 'info']).isRequired,\r\n};\r\n\r\nconst MySnackbarContentWrapper = withStyles(styles1)(MySnackbarContent);\r\n\r\nconst styles2 = theme => ({\r\n margin: {\r\n margin: theme.spacing(1),\r\n },\r\n});\r\n\r\nclass CustomizedSnackbars extends React.Component {\r\n\r\n\r\n handleClose = () => {\r\n this.props.snackbarMessage(null, null);\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n const { snackbarmessageType, snackbarmessage } = this.props;\r\n if (snackbarmessage) {\r\n return (\r\n <div>\r\n <Snackbar\r\n anchorOrigin={{ vertical: 'bottom', horizontal: 'left' }}\r\n open={this.props.snackbarmessage != null}\r\n autoHideDuration={6000}\r\n onClose={this.handleClose}\r\n >\r\n <MySnackbarContentWrapper\r\n onClose={this.handleClose}\r\n variant={snackbarmessageType}\r\n message={snackbarmessage}\r\n />\r\n </Snackbar>\r\n </div>\r\n );\r\n } else return <div />\r\n }\r\n}\r\n\r\nCustomizedSnackbars.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n};\r\n\r\n\r\nconst mapProps = (state) => {\r\n let snackbar_Red = (state && state.snackbar && state.snackbar)\r\n if (snackbar_Red)\r\n return { snackbarmessageType: snackbar_Red.snackbarmessageType, snackbarmessage: snackbar_Red.snackbarmessage }\r\n else return { snackbarmessageType: null, snackbarmessage: null }\r\n}\r\n\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage }, dispatch);\r\n}\r\n\r\nCustomizedSnackbars = connect(mapProps, mapActions)(CustomizedSnackbars);\r\nexport default withStyles(styles2)(CustomizedSnackbars);","/**\r\n *********************************************************\r\n deprecated\r\n *********************************************************\r\n**/\r\n\r\nimport React, { Component, Fragment } from 'react';\r\nimport DualListBox from 'react-dual-listbox';\r\nimport 'react-dual-listbox/lib/react-dual-listbox.css';\r\nimport { requestApi as oldrequestApi } from './utilities'\r\nimport { HashRouter as Router, Switch, Route, withRouter } from 'react-router-dom';\r\nimport SubForm from './csubform'\r\nimport Typography from '@material-ui/core/Typography';\r\nimport SnackBar from '../viewport/snackbar'\r\nimport FormHeader from './cformheader'\r\nimport { bindActionCreators } from 'redux'\r\nimport { connect } from 'react-redux';\r\nimport { snackbarMessage } from '../../actions';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport { createRequest, requestApi } from '../../controls/helpers/rest';\r\n\r\nconst checkboxtransformprops = {\r\n \"N\": false,\r\n \"Y\": true,\r\n \"true\": \"Y\",\r\n \"false\": \"N\"\r\n}\r\n\r\nclass CFormMultiDualListBox extends Component {\r\n constructor(props) {\r\n super(props)\r\n console.log(props);\r\n }\r\n state = {\r\n firstboxselected: [],\r\n firstboxavailable: [],\r\n secondboxselected: [],\r\n secondboxavailable: [],\r\n firstboxresults: null,\r\n secondboxresults: null,\r\n currentfirstboxselecteditem: null,\r\n currentsecondboxselecteditem: null,\r\n changedFieldName: [],\r\n opensnackbar: false,\r\n snackbarmessageType: '',\r\n snackbarmessage: '',\r\n firstboxformresults: {},\r\n formControls: {}\r\n };\r\n\r\n onFirstBoxChange = (selected) => {\r\n const { firstboxselected } = this.state\r\n const { options, components } = this.props\r\n const [firstbox, secondbox] = components\r\n const firstboxoptions = firstbox ? firstbox.options : null\r\n const firstboxtranformProps = firstboxoptions ? firstboxoptions.transformProps : null\r\n\r\n const { firstboxresults } = this.state\r\n const firstboxresultsavailable = firstboxresults[firstboxtranformProps.available.key]\r\n const firstboxresultsselected = firstboxresults[firstboxtranformProps.selected.key]\r\n let newselecteditems = []\r\n if (selected.length > firstboxselected.length) {\r\n const addeditemsvalue = selected.filter(each => {\r\n const val = firstboxselected.find(e => e === each)\r\n if (!val) return true\r\n else return false\r\n })\r\n\r\n firstboxresultsavailable.forEach(each => {\r\n const val = each[firstboxtranformProps.available.value]\r\n if (addeditemsvalue.find(e => e === val) !== undefined) {\r\n const temp = { ...each, [firstboxtranformProps.selected.label]: each[firstboxtranformProps.available.label], [firstboxtranformProps.selected.value]: each[firstboxtranformProps.available.value] }\r\n newselecteditems.push(temp)\r\n }\r\n })\r\n newselecteditems = firstboxresultsselected.concat(newselecteditems)\r\n }\r\n if (selected.length < firstboxselected.length) {\r\n firstboxresultsselected.forEach(each => {\r\n const val = each[firstboxtranformProps.selected.value]\r\n if (selected.find(e => e === val) !== undefined) {\r\n newselecteditems.push(each)\r\n }\r\n })\r\n }\r\n console.log('previous selectd, new selected', firstboxresultsselected, newselecteditems)\r\n if (options.customsave) {\r\n this.setState({\r\n firstboxselected: selected,\r\n firstboxresults: { ...this.state.firstboxresults, [firstboxtranformProps.selected.key]: newselecteditems }\r\n }, () => {\r\n this.onhandleSave()\r\n })\r\n }\r\n else {\r\n this.setState({\r\n firstboxselected: selected,\r\n firstboxresults: { ...this.state.firstboxresults, [firstboxtranformProps.selected.key]: newselecteditems }\r\n })\r\n }\r\n };\r\n\r\n\r\n onSecondBoxChange = (selected) => {\r\n this.setState({\r\n secondboxselected: selected\r\n })\r\n }\r\n\r\n componentDidMount() {\r\n const { options, components, eventOn } = this.props\r\n const [firstbox, secondbox] = components\r\n const firstboxoptions = firstbox ? firstbox.options : null\r\n const firstboxtranformProps = firstboxoptions ? firstboxoptions.transformProps : null\r\n const firstboxcrud = firstboxoptions ? firstboxoptions.crud : null\r\n const firstboxread = firstboxcrud ? firstboxcrud.read : null\r\n const firstboxget = firstboxread ? firstboxread.get : null\r\n //const firstboxrouteProps = firstboxget ? firstboxget.routeProps : null\r\n // id = firstboxrouteProps ? this.props.match.params[firstboxrouteProps.value] : null\r\n\r\n const { matchProps, routeProps, extraProps, customextraProps } = firstboxget ? firstboxget : {}\r\n\r\n let ids = [], id\r\n if (Array.isArray(routeProps)) {\r\n routeProps.forEach(each => {\r\n const { value } = each\r\n ids.push({ key: value, value: this.props.match.params[value] })\r\n })\r\n }\r\n else if (routeProps) {\r\n id = routeProps ? this.props.match.params[routeProps.value] : null\r\n }\r\n else if (matchProps) {\r\n if (Array.isArray(matchProps)) {\r\n // matchProps.forEach(each => {\r\n // const { value } = each\r\n // ids.push({ key: value, value: this.props.extraProps ? this.props.extraProps[matchProps[0].value] : null })\r\n // })\r\n }\r\n\r\n //if(results) id = results[matchProps.value]\r\n\r\n }\r\n if (extraProps) {\r\n id = this.props.extraProps[extraProps.value]\r\n ids.push({ key: extraProps.value, value: id })\r\n }\r\n if (customextraProps) {\r\n id = this.props.dataItem[customextraProps.customvalue]\r\n ids.push({ key: customextraProps.value, value: id })\r\n }\r\n if (eventOn) {\r\n var val = ''\r\n switch (eventOn) {\r\n case \"APPLICATION_STATUS_CHANGE\":\r\n val = 'APPLICATION_STATUS';\r\n break;\r\n case \"FIELD_VALUE_CHANGE\":\r\n val = 'FIELD_VALUE';\r\n break;\r\n case \"PERMIT_STATUS_CHANGE\":\r\n val = 'PERMIT_STATUS';\r\n break;\r\n case \"WORKFLOW_STATUS_CHANGE\":\r\n val = 'WORKFLOW_STATUS';\r\n break;\r\n case \"RESOLUTION_STATUS\":\r\n val = 'RESOLUTION_STATUS';\r\n break;\r\n default:\r\n val = '';\r\n break;\r\n }\r\n firstboxget.urlpath = firstboxget.urlpath + val;\r\n firstboxget && oldrequestApi(firstboxread, (ids.length > 0 ? ids : id)).then(results => {\r\n this.setState({\r\n firstboxavailable: results[firstboxtranformProps.available.key].map(each => {\r\n return { value: each[firstboxtranformProps.available.value], label: each[firstboxtranformProps.available.label] }\r\n }),\r\n firstboxselected: results[firstboxtranformProps.selected.key].map(each => {\r\n // return { value: each[firstboxtranformProps.available.value], label: each[firstboxtranformProps.available.label] }\r\n //return each[firstboxtranformProps.selected.value]\r\n return { value: each[firstboxtranformProps.selected.value], label: each[firstboxtranformProps.selected.label] }\r\n }),\r\n firstboxresults: results\r\n })\r\n\r\n })\r\n }\r\n else {\r\n firstboxget && oldrequestApi(firstboxread, (ids.length > 0 ? ids : id)).then(results => {\r\n let tempfirstboxavailable = results[firstboxtranformProps.available.key].map(each => {\r\n return { value: each[firstboxtranformProps.available.value], label: each[firstboxtranformProps.available.label] }\r\n })\r\n let tempfirstboxselected = results[firstboxtranformProps.selected.key].map(each => {\r\n //return { value: each[firstboxtranformProps.available.value], label: each[firstboxtranformProps.available.label] }\r\n //return { value: each[firstboxtranformProps.selected.value], label: each[firstboxtranformProps.selected.label] }\r\n return { value: each[firstboxtranformProps.selected.value], label: each[firstboxtranformProps.selected.label] }\r\n\r\n })\r\n let tempselectedid = results[firstboxtranformProps.selected.key].map(each => {\r\n //return { value: each[firstboxtranformProps.available.value], label: each[firstboxtranformProps.available.label] }\r\n //return { value: each[firstboxtranformProps.selected.value], label: each[firstboxtranformProps.selected.label] }\r\n return each[firstboxtranformProps.selected.value]\r\n })\r\n this.setState({\r\n firstboxavailable: [...tempfirstboxavailable, ...tempfirstboxselected], firstboxselected: tempselectedid,\r\n firstboxresults: results\r\n })\r\n // if (this.state.firstboxresults.SelectedCollection.length > 0) {\r\n // for (let index = 0; index < this.state.firstboxresults.SelectedCollection.length; index++) {\r\n // const element = this.state.firstboxresults.SelectedCollection[index];\r\n // if (!element.name) {\r\n // let elementName = this.state.firstboxresults.AvailableCollection.filter(s => s.id == element.id);\r\n // if (elementName) {\r\n // element.name = elementName[0].name;\r\n // }\r\n // }\r\n // }\r\n // }\r\n })\r\n }\r\n\r\n\r\n\r\n this.firstselectedbox.addEventListener('click', (event) => {\r\n const { firstboxresults, formControls, firstboxformresults } = this.state;\r\n let tempformControls = {}\r\n let tempchangedFieldName = []\r\n const selectedvalue = Number(event.target.value)\r\n const selecteditem = firstboxresults[firstboxtranformProps.selected.key].find(each => selectedvalue === each[firstboxtranformProps.selected.value])\r\n if (secondbox) {\r\n const secondboxoptions = secondbox ? secondbox.options : null\r\n const secondboxtranformProps = secondboxoptions ? secondboxoptions.transformProps : null\r\n const secondboxboxcrud = secondboxoptions ? secondboxoptions.crud : null\r\n const secondboxread = secondboxboxcrud ? secondboxboxcrud.read : null\r\n const secondboxget = secondboxread ? secondboxread.get : null\r\n const secondboxrouteProps = secondboxget ? secondboxget.routeProps : null\r\n const id = secondboxrouteProps ? this.props.match.params[secondboxrouteProps.value] : null\r\n const { ids } = secondboxget ? secondboxget : null\r\n let subids = [id]\r\n if (ids) {\r\n ids.forEach(each => {\r\n subids.push(selecteditem[each])\r\n })\r\n }\r\n secondboxread && oldrequestApi(secondboxread, ids ? subids : id).then(results => {\r\n this.setState({\r\n secondboxavailable: results[secondboxtranformProps.available.key].map(each => {\r\n return { value: each[secondboxtranformProps.available.value], label: each[secondboxtranformProps.available.label] }\r\n }),\r\n secondboxselected: results[secondboxtranformProps.selected.key].map(each => {\r\n return each[secondboxtranformProps.selected.value]\r\n }),\r\n secondboxresults: results\r\n })\r\n })\r\n this.secondselectedbox.addEventListener('click', (event) => {\r\n console.log('second box')\r\n })\r\n }\r\n let selectedformresults = firstboxformresults[selecteditem.Id]\r\n let finalselecteditem = { ...selecteditem, ...selectedformresults }\r\n // Object.keys(selecteditem).forEach(each => {\r\n // // tempformControls[each] = { name: each, value: selecteditem[each], edit: true, error: false }\r\n // // tempchangedFieldName.push({ name: each, value: selecteditem[each] })\r\n // })\r\n firstbox.components.map(firstcomp => {\r\n tempformControls[firstcomp.options.name] = { name: firstcomp.options.name, value: finalselecteditem[firstcomp.options.name], edit: true, error: false }\r\n tempchangedFieldName.push({ name: firstcomp.options.name, value: finalselecteditem[firstcomp.options.name] })\r\n })\r\n this.setState({\r\n currentfirstboxselecteditem: finalselecteditem,\r\n changedFieldName: tempchangedFieldName,\r\n formControls: tempformControls\r\n })\r\n });\r\n }\r\n\r\n // changeResults = (objProperty, len, splitName, value) => {\r\n // if (len === 0) return value\r\n // else {\r\n // const index = splitName.length - len\r\n // const name = splitName[index]\r\n // if (name) return { ...objProperty, [name]: this.changeResults(objProperty[name], --len, splitName, value) }\r\n // }\r\n // }\r\n\r\n handleFirstBoxFieldChange = (event) => {\r\n const { name, value, checked, type } = event.target\r\n const { options, components, extraProps } = this.props\r\n const [firstbox, secondbox] = components\r\n const firstboxoptions = firstbox ? firstbox.options : null\r\n const firstboxtranformProps = firstboxoptions ? firstboxoptions.transformProps : null\r\n let val\r\n if (type === 'checkbox') val = checkboxtransformprops[checked]\r\n else val = value\r\n const currentfirstboxselecteditem = this.state.currentfirstboxselecteditem\r\n console.log('multiduallist box------------------', currentfirstboxselecteditem)\r\n\r\n if (currentfirstboxselecteditem) {\r\n this.setState({\r\n changedFieldName: [{ name: name, value: val }],\r\n firstboxformresults: {\r\n ...this.state.firstboxformresults, [currentfirstboxselecteditem[firstboxtranformProps.selected.value]]:\r\n {\r\n ...this.state.firstboxformresults[currentfirstboxselecteditem[firstboxtranformProps.selected.value]],\r\n 'AttachmentTypeId': currentfirstboxselecteditem[firstboxtranformProps.selected.value],\r\n 'Name': currentfirstboxselecteditem['Name'], [name]: val, ...extraProps\r\n }\r\n }\r\n });\r\n }\r\n else {\r\n this.setState({\r\n changedFieldName: [{ name: name, value: val }],\r\n firstboxformresults: { ...this.state.firstboxformresults, [name]: val, ...extraProps }\r\n });\r\n }\r\n }\r\n\r\n onhandleSave = () => {\r\n const id = this.props.match.params.routeid\r\n const { options, components } = this.props\r\n const [firstbox, secondbox] = components\r\n const firstboxoptions = firstbox ? firstbox.options : null\r\n const firstboxcrud = firstboxoptions ? firstboxoptions.crud : null\r\n const firstboxsave = firstboxcrud ? firstboxcrud.update : null\r\n const { firstboxresults, secondboxresults, firstboxformresults, firstboxselected } = this.state\r\n const firstboxformresultskeys = Object.keys(firstboxformresults)\r\n const savefirstboxresults = firstboxformresultskeys.map(each => {\r\n return firstboxformresults[each]\r\n })\r\n\r\n const { matchProps, customextraProps } = firstboxsave.post || {}\r\n let ids = []\r\n matchProps && matchProps.forEach(each => {\r\n const { value } = each\r\n ids.push({ key: value, value: this.props.extraProps[value] })\r\n })\r\n customextraProps && customextraProps.forEach(each => {\r\n const { value, customvalue } = each\r\n ids.push({ key: value, value: this.props.dataItem[customvalue] })\r\n })\r\n\r\n if (firstboxsave && !options.customsave) {\r\n let newurl = firstboxsave.post.url + firstboxsave.post.urlpath\r\n ids.forEach(each => {\r\n const { key, value } = each;\r\n newurl = `${newurl.replace(`{${key}}`, value)}`;\r\n })\r\n let saveurl = {\r\n url: options.replaceidvalue ? newurl : firstboxsave.post.url,\r\n \"matchProps\": [{\r\n name: \"Id\",\r\n key: \"Id\",\r\n }],\r\n type: 'post',\r\n }\r\n // requestApi(saveurl, ids, savefirstboxresults).\r\n requestApi(createRequest(saveurl, savefirstboxresults, (id || ids))).then(results => {\r\n // console.log('after save---', results);\r\n // this.props.snackbarMessage('Saved Successfully', 'success')\r\n }).catch(ex => {\r\n })\r\n } else if (options.customsave) {\r\n this.props.customnoticesave(firstboxselected, options.customsaveref)\r\n }\r\n }\r\n\r\n\r\n handleSnackBarClose = (event, reason) => {\r\n if (reason === 'clickaway') {\r\n return;\r\n }\r\n this.setState({ opensnackbar: false });\r\n };\r\n\r\n\r\n render() {\r\n const { firstboxselected, firstboxavailable, secondboxselected, secondboxavailable, currentfirstboxselecteditem } = this.state\r\n const { options, components, compmap } = this.props\r\n const { multiboxes, save, title } = options ? options : {}\r\n const [firstbox, secondbox] = components\r\n const firstboxoptions = firstbox ? firstbox.options : null\r\n const secondboxoptions = secondbox ? secondbox.options : null\r\n const firstboxprops = {}, secondboxprops = {}\r\n if (multiboxes) {\r\n if (firstboxoptions) {\r\n firstboxprops.width = firstboxoptions.width || 6\r\n firstboxprops.helperText = firstboxoptions.helperText || ''\r\n firstboxprops.name = firstboxoptions.name || 'firstbox'\r\n }\r\n if (secondboxoptions) {\r\n secondboxprops.width = secondboxoptions.width || 6\r\n secondboxprops.helperText = secondboxoptions.helperText || ''\r\n secondboxprops.name = secondboxoptions.name || 'secondbox'\r\n }\r\n }\r\n else {\r\n firstboxprops.width = firstboxoptions.width || 6\r\n firstboxprops.helperText = firstboxoptions.helperText || ''\r\n firstboxprops.name = firstboxoptions.name || 'firstbox'\r\n }\r\n const { opensnackbar, snackbarmessage, snackbarmessageType } = this.state\r\n const { headerProps, designprops } = options\r\n const { savebutton, closebutton } = headerProps ? headerProps : {}\r\n\r\n return (\r\n <Fragment>\r\n {headerProps && <FormHeader title={title} handleSave={this.onhandleSave} savebutton={savebutton} handleClose={this.props.onClose} closebutton={closebutton} designprops={designprops} />}\r\n <div className=\"row mt-3\">\r\n {options.helpertitle && <InputLabel className=\"ml-3\" shrink={true}> {options.helpertitle} </InputLabel>}\r\n {firstbox && <div className={\"col-\" + firstboxprops.width}>\r\n <DualListBox\r\n options={firstboxavailable}\r\n selected={firstboxselected}\r\n onChange={this.onFirstBoxChange}\r\n selectedRef={(element) => { this.firstselectedbox = element }}\r\n showHeaderLabels={true}\r\n icons={{\r\n moveLeft: '<',\r\n moveAllLeft: '<<',\r\n moveRight: '>',\r\n moveAllRight: '>>'\r\n }}\r\n />\r\n <Typography>\r\n {firstboxprops.helperText} <span className=\"text-primary\">{currentfirstboxselecteditem && currentfirstboxselecteditem.Id && currentfirstboxselecteditem.Name}</span>\r\n </Typography>\r\n {firstbox.components && <SubForm {...firstbox} compmap={compmap} changedFieldName={this.state.changedFieldName} handleFieldChange={this.handleFirstBoxFieldChange} results={this.state.formControls} res={this.state.currentfirstboxselecteditem} />}\r\n </div>}\r\n {secondbox && <div className={\"col-\" + secondboxprops.width}>\r\n <DualListBox\r\n options={secondboxavailable}\r\n selected={secondboxselected}\r\n onChange={this.onSecondBoxChange}\r\n selectedRef={(element) => { this.secondselectedbox = element; }}\r\n showHeaderLabels={true}\r\n icons={{\r\n moveLeft: '<',\r\n moveAllLeft: '<<',\r\n moveRight: '>',\r\n moveAllRight: '>>'\r\n }}\r\n />\r\n <Typography>\r\n {secondboxprops.helperText}\r\n </Typography>\r\n {secondbox.components && <SubForm {...secondbox} compmap={compmap} changedFieldName={this.state.changedFieldName} handleFieldChange={this.handleSecondBoxFieldChange} />}\r\n </div>}\r\n </div>\r\n {/* {\r\n save && <div className=\"row\">\r\n {save && <div className=\"ml-4 mb-3 pt-2\"> <Button variant=\"contained\" onClick={this.onhandleSave} color=\"secondary\" > Save</Button></div>}\r\n </div>\r\n\r\n } */}\r\n {\r\n <SnackBar messageType={snackbarmessageType} message={snackbarmessage} open={opensnackbar} handleSnackBarClose={this.handleSnackBarClose} />\r\n }\r\n\r\n </Fragment>\r\n )\r\n }\r\n}\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage }, dispatch);\r\n}\r\n\r\nCFormMultiDualListBox = connect(null, mapActions)(CFormMultiDualListBox)\r\n\r\nexport default withRouter(CFormMultiDualListBox)\r\n\r\n","import React, { Fragment } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport MaskedInput from 'react-text-mask';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Input from '@material-ui/core/Input';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\n\r\nfunction TextMaskCustom(props) {\r\n const { inputRef, ...other } = props;\r\n\r\n return (\r\n <MaskedInput\r\n {...other}\r\n ref={ref => {\r\n inputRef(ref ? ref.inputElement : null);\r\n }}\r\n mask={['(', /[1-9]/, /\\d/, /\\d/, ')', ' ', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, /\\d/,'(x',/\\d/, /\\d/, /\\d/, /\\d/,')']}\r\n placeholderChar={'\\u2000'}\r\n showMask\r\n guide={false}\r\n />\r\n );\r\n}\r\n\r\nTextMaskCustom.propTypes = {\r\n inputRef: PropTypes.func.isRequired,\r\n\r\n};\r\n\r\nfunction formatText(text) {\r\n if (text) {\r\n if (this.props.mask == 'phone')\r\n return text.replace(/[^A-Z0-9]/ig, \"\");\r\n if (this.props.mask == 'amount')\r\n return text\r\n return text\r\n }\r\n return undefined\r\n}\r\n\r\nexport default function FormattedInputs(props) {\r\n console.log(props)\r\n const { handleFieldChange, tooltip, value, name, id, edit, options, conditions, disabled, ...otherProps } = props\r\n let disabledstatus = conditions && conditions.enable ? conditions.enable : disabled\r\n const { label, xtype, inputProps, password, error, helperText,required } = otherProps\r\n const val = ((value === null) || (value === undefined)) ? '' : value\r\n if (edit === true) {\r\n return (\r\n <div >\r\n <FormControl fullWidth error={error} >\r\n {tooltip && <InputLabel htmlFor=\"formatted-text-mask-input\">{label} < Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em' }} />\r\n </Tooltip></InputLabel>}\r\n {!tooltip && <InputLabel htmlFor=\"formatted-text-mask-input\">{label} </InputLabel>}\r\n <Input\r\n name={name}\r\n value={value}\r\n onChange={handleFieldChange}\r\n id=\"formatted-text-mask-input\"\r\n required={required}\r\n inputComponent={TextMaskCustom}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n {helperText && <FormHelperText >{helperText}</FormHelperText>}\r\n </FormControl>\r\n\r\n </div>\r\n );\r\n }\r\n else {\r\n return (\r\n <div className=\"row\">\r\n {tooltip && <Fragment><Typography variant={'subtitle2'} color={'primary'}>{label} < Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em' }} />\r\n </Tooltip> </Typography> : <Typography variant={'body2'} color={'textPrimary'}>{val} </Typography></Fragment>}\r\n {!tooltip && <Fragment><Typography variant={'subtitle2'} color={'primary'}>{label} </Typography> : <Typography variant={'body2'} color={'textPrimary'}>{val} </Typography></Fragment>}\r\n </div>\r\n );\r\n }\r\n}\r\n","import FormControl from '@material-ui/core/FormControl';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport Input from '@material-ui/core/Input';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport PropTypes from 'prop-types';\r\nimport React, { Fragment } from 'react';\r\nimport MaskedInput from 'react-text-mask';\r\nimport DefaultSettings from '../../controls/components/settings';\r\n\r\nfunction TextMaskCustom(props) {\r\n const { inputRef, ...other } = props;\r\n\r\n return (\r\n <MaskedInput\r\n {...other}\r\n ref={ref => {\r\n inputRef(ref ? ref.inputElement : null);\r\n }}\r\n mask={['(', /[1-9]/, /\\d/, /\\d/, ')', ' ', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, /\\d/]}\r\n placeholderChar={'\\u2000'}\r\n showMask\r\n guide={false}\r\n />\r\n );\r\n}\r\n\r\nTextMaskCustom.propTypes = {\r\n inputRef: PropTypes.func.isRequired,\r\n\r\n};\r\n\r\nfunction formatText(text) {\r\n if (text) {\r\n if (this.props.mask === 'phone')\r\n return text.replace(/[^A-Z0-9]/ig, \"\");\r\n if (this.props.mask === 'amount')\r\n return text\r\n return text\r\n }\r\n return undefined\r\n}\r\n\r\nexport default function FormattedInputs(props) {\r\n // console.log(props)\r\n const { handleFieldChange, tooltip, value, name, id, edit, options, conditions, disabled, required, contexthelp, ...otherProps } = props\r\n let disabledstatus = conditions && conditions.enable ? conditions.enable : disabled\r\n const { label, xtype, inputProps, password, error, helperText } = otherProps\r\n const val = ((value === null) || (value === undefined)) ? '' : value\r\n if (edit === true) {\r\n return (\r\n <div >\r\n <FormControl fullWidth error={error} required={required} >\r\n <InputLabel style={{ fontWeight: 'bold', color: error ? 'red' : 'black' }} shrink> {label}{tooltip && <Tooltip title={tooltip ? tooltip : null}\r\n placement=\"bottom-start\" ><HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em' }} onClick={() => DefaultSettings.showDrawer(contexthelp)} />\r\n </Tooltip>}</InputLabel>\r\n <Input\r\n name={name}\r\n value={value}\r\n onChange={handleFieldChange}\r\n id=\"formatted-text-mask-input\"\r\n required={required}\r\n inputComponent={TextMaskCustom}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n disabled={disabled}\r\n />\r\n {helperText && <FormHelperText >{helperText}</FormHelperText>}\r\n </FormControl>\r\n\r\n </div>\r\n );\r\n }\r\n else {\r\n return (\r\n <div >\r\n {tooltip && <Fragment><Typography variant={'caption'} className=\"fw-bold\">{label} < Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em' }} />\r\n </Tooltip> </Typography> <Typography variant={'body2'} color={'textPrimary'} className=\"text-secondary\">{val} </Typography></Fragment>}\r\n {!tooltip && <Fragment><Typography variant={'caption'} className=\"fw-bold\">{label} </Typography> <Typography variant={'body2'} color={'textPrimary'} className=\"text-secondary\">{val} </Typography></Fragment>}\r\n </div>\r\n );\r\n }\r\n}\r\n","/**\r\n *********************************************************\r\n Description: Hanldes text. different types- dtext, datetimetext. dtext handles dynamic text. datetimetext handles datetime text.\r\n Required props: type.\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\n\r\nimport React, { Component, Fragment } from 'react';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport moment from 'moment'\r\n\r\nconst CFormText = (props) => {\r\n const { options, style, type, value, edit } = props;\r\n const { text, error, label, ...otherOptions } = options ? options : { text: '' }\r\n let dvalue = null\r\n if (type === 'dtext') {\r\n if (value) {\r\n dvalue = <div className=\"row col\"> <Typography variant={'subtitle2'} color={error ? 'secondary' : 'primary'}>{text} </Typography> \r\n <Typography variant={'body2'} color={error ? 'secondary' : 'textPrimary'}>{value ? value : ''} </Typography></div>\r\n }\r\n // else dvalue = text + (value ? value : \"\")\r\n // else dvalue = <div className=\"row col\"> <Typography variant={'subtitle2'} color={error ? 'secondary' : 'primary'}>{text} </Typography> <Typography variant={'body2'} color={error ? 'secondary' : 'textPrimary'}>{value ? value : ''} </Typography></div>\r\n }\r\n if (type === 'etext') dvalue= (value ? value : \"\")\r\n if (type === 'datetimetext') dvalue = (value ? value : \"\")\r\n if (type === 'cformtext') dvalue = (value ? value : \"\")\r\n\r\n return (\r\n <Fragment>\r\n <Typography style={style} {...otherOptions}>\r\n {(type === 'text') && <div className=\"row pl-3\">{label}</div>}\r\n {(type === 'etext') && <div className=\"row col pt-3\" style={{color:'#f50057'}}>{dvalue === null ? '' : dvalue}</div>}\r\n {(type === 'dtext') && <div className=\"row col\">{dvalue === null ? '' : dvalue}</div>}\r\n {(type === 'datetimetext' && value != null) && <div className={!edit ? \"row\" : \"row col\"}> <Typography variant={'caption'} className=\"text-secondary\">{label} </Typography> <Typography variant={'body2'} color={'textPrimary'} className=\"fw-bold\">{moment(value).format('MM/DD/YYYY hh:mm:ss A') === \"Invalid date\" ? '' : moment(value).format('MM/DD/YYYY hh:mm:ss A') } </Typography>\r\n </div>}\r\n {(type === 'cformtext') && <div className={!edit ? \"row\" : \"row col\"}> <Typography variant={'caption'} className=\"text-secondary\">{label} : </Typography> <Typography variant={'body2'} color={'textPrimary'} className=\"fw-bold\">{dvalue } </Typography>\r\n </div>}\r\n </Typography>\r\n </Fragment>\r\n )\r\n\r\n}\r\n\r\n\r\n\r\nexport default CFormText;\r\n\r\n\r\n\r\n\r\n/**\r\n * {\r\n * type:'title',\r\n * options:{\r\n * text:'',\r\n * },\r\n * defaults:{\r\n * layout:'material',\r\n * customlayout: false\r\n * }\r\n * }\r\n */","/**\r\n *********************************************************\r\n Description: Handles paper component. It is used only once where all the created applications are shown. This is a custom file and contains a dropdown and grid.\r\n When the value in the dropdown changes the grid is updated.\r\n Required props: type.\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\n\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport { toDataSourceRequestString } from '@progress/kendo-data-query';\r\nimport { ExcelExport } from '@progress/kendo-react-excel-export';\r\nimport { Grid, GridColumn, GridToolbar } from '@progress/kendo-react-grid';\r\nimport PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { GetData } from '../../controls/helpers/requests';\r\nimport { getEnvVariable } from '../../../modules/environmentalList';\r\nimport GridHeader from '../Grid/cgridheader';\r\nimport { CustomColumnMenu } from '../Grid/customColumnMenu.jsx';\r\nimport { requestApi } from './utilities';\r\n\r\nconst styles = theme => ({\r\n root: {\r\n ...theme.mixins.gutters(),\r\n paddingTop: theme.spacing(2),\r\n paddingBottom: theme.spacing(2),\r\n },\r\n});\r\n\r\nconst dropdowntransformProps = {\r\n name: 'Name',\r\n value: 'Id'\r\n}\r\n\r\n\r\nfunction CStatus(props) {\r\n return (\r\n <td>\r\n <span className=\"badge badge-pill badge-success\"> {this.props.dataItem[this.props.field]}</span>\r\n </td>\r\n )\r\n}\r\n\r\nclass CPaper extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n values: null,\r\n value: '',\r\n dataState: { skip: 0 },\r\n add: true,\r\n loadText: \"Please wait the information is loading... \",\r\n initialdata: [],\r\n datagridcol: [],\r\n pageable: {\r\n buttonCount: 5,\r\n info: true,\r\n type: 'numeric',\r\n previousNext: true\r\n },\r\n }\r\n }\r\n /**\r\n *********************************************************\r\n Description: Fetches the data for the dropdown. Handles the permission to create application based on the user rights.\r\n Required props: crud.read for the dropdown\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n\r\n componentDidMount() {\r\n const { options, components, accessPermissions, accessLevelPermissions } = this.props\r\n const firstcomponent = components[0]\r\n const crud = firstcomponent.options.crud;\r\n const { modulePermissions } = accessPermissions ? accessPermissions : {}\r\n\r\n requestApi(crud.read).then(results => {\r\n this.mapIdstoSiteIds = {}\r\n this.mapSiteIdstoPermissions = {}\r\n results.forEach(each => {\r\n const { Id, SiteId } = each\r\n this.mapIdstoSiteIds[Id] = SiteId\r\n if (modulePermissions) {\r\n const accessrights = modulePermissions.find(e => e.siteId === SiteId)\r\n if (accessrights) this.mapSiteIdstoPermissions[SiteId] = accessrights\r\n }\r\n })\r\n results.unshift({ Id: -1, Name: 'All' })\r\n this.setState({\r\n values: results\r\n }, () => {\r\n this.getIntialSitePermits()\r\n })\r\n })\r\n }\r\n\r\n getIntialSitePermits = () => {\r\n const urlPath = getEnvVariable('Application') + '/api/Application/OwnerPermits/' + this.props.dataItem['Id'] + '';\r\n GetData(urlPath)\r\n .then((data) => {\r\n console.log('grid data--', data);\r\n if (data && data.length > 0) {\r\n console.log('grid data--', Object.getOwnPropertyNames(data[0]));\r\n let colnames = Object.getOwnPropertyNames(data[0]);\r\n let allgridcols = []\r\n colnames.forEach(col => {\r\n allgridcols.push({ title: col, show: true })\r\n })\r\n this.setState({\r\n initialdata: data,\r\n gridoptions: [],\r\n allgridcols: allgridcols,\r\n data: [], datagridcol: [],\r\n value: ''\r\n });\r\n }\r\n else {\r\n this.setState({\r\n loadText: \"No Data Found\"\r\n });\r\n }\r\n })\r\n .catch(err => {\r\n console.log('err-------------------', err)\r\n });\r\n }\r\n /**\r\n *********************************************************\r\n Description: Handles the double click on the grid row. Opens the created application for review.\r\n Required props: update prop on the grid components with link prop.\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\n rowRender = (trElement, dataItem) => {\r\n const { value } = this.state\r\n const { options, components, compmap } = this.props\r\n const [firstcomponent, secondcomponent] = components\r\n\r\n const trProps = {\r\n ...trElement.props,\r\n onDoubleClick: () => {\r\n console.log('Double click on ', dataItem)\r\n const pushLink = secondcomponent.options.crud.update.link.link + '/' + dataItem.dataItem['Site Permit Type Id'] + '/' + dataItem.dataItem.Id //value or dataItem.dataItem['Site Permit Type Id']\r\n // localStorage.setItem('entranceexists', 'N');\r\n // localStorage.setItem('resultskeys', null)\r\n // localStorage.setItem('results', null)\r\n // localStorage.setItem('allvalidations', null)\r\n this.props.history.push(`${pushLink}`)\r\n }\r\n };\r\n return React.cloneElement(trElement, { ...trProps }, trElement.props.children);\r\n }\r\n /**\r\n *********************************************************\r\n Description: Handles the change in dropdown values.\r\n Required props: event. Add button is controlled by the permissions\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\n\r\n handleFieldChange = (event) => {\r\n const { name, value } = event.target\r\n const siteId = this.mapIdstoSiteIds[value]\r\n const urlPath = getEnvVariable('Application') + '/api/SitePermitSectionFieldsView/GridFields/' + (value) + `${localStorage.getItem('impersonate') ? '?impersonateFor=' + localStorage.getItem('impersonate'):''}`\r\n\r\n GetData(urlPath)\r\n .then((data) => {\r\n data.map(m => {\r\n m.show = true;\r\n m.title = m.fieldName\r\n })\r\n this.setState({\r\n value: value,\r\n add: this.mapSiteIdstoPermissions[siteId] ? (this.mapSiteIdstoPermissions[siteId].accessLevel === 'Add') : true,\r\n datagridcol: data\r\n });\r\n })\r\n .catch(err => {\r\n console.log('err-------------------', err)\r\n });\r\n\r\n this.fetchData(this.state.dataState, value)\r\n }\r\n\r\n /**\r\n *********************************************************\r\n Description: Fetches data for the grid.\r\n Required props: type. url to fetch the grid values\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\n\r\n fetchData(dataState, value) {\r\n const queryStr = `${toDataSourceRequestString(dataState)}`; // Serialize the state\r\n const hasGroups = dataState.group && dataState.group.length;\r\n\r\n const { options, components, compmap } = this.props\r\n const [firstcomponent, secondcomponent] = components\r\n\r\n\r\n const urlPath = secondcomponent.options.crud.read.get.url + value\r\n GetData(urlPath)\r\n .then((data) => {\r\n console.log('grid data--', data);\r\n this.setState({\r\n data: data\r\n });\r\n })\r\n .catch(err => {\r\n console.log('err-------------------', err)\r\n });\r\n }\r\n /**\r\n *********************************************************\r\n Description: Handle Back to navigate to custom and history screen\r\n Required props: back url\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n handleBack = () => {\r\n const { options } = this.props\r\n const { back } = options;\r\n const { routes } = back;\r\n if (Array.isArray(routes)) {\r\n let path = ''\r\n routes.forEach(each => {\r\n const { route, routeParams, matchProps } = each\r\n if (routeParams) {\r\n path += route + \"/\" + this.props.match.params[routeParams]\r\n }\r\n else if (matchProps) {\r\n path += route + \"/\" + this.props.results[matchProps]\r\n }\r\n else {\r\n path += route\r\n }\r\n })\r\n this.props.history.push(path)\r\n }\r\n }\r\n\r\n /**\r\n *********************************************************\r\n Description: Columns modify and save to report.\r\n Required props: event. Add button is controlled by the permissions\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\n onColumnsSubmit = (columnsState) => {\r\n this.setState({\r\n datagridcol: columnsState\r\n });\r\n }\r\n\r\n onColumnsInitialSubmit = (columnsState) => {\r\n this.setState({\r\n allgridcols: columnsState\r\n });\r\n }\r\n\r\n _export;\r\n export = () => {\r\n this._export.save();\r\n }\r\n render() {\r\n const { classes } = this.props;\r\n const { options, components, compmap, accessPermissions, accessLevelPermissions } = this.props\r\n const [firstcomponent, secondcomponent] = components\r\n const FirstComp = compmap[firstcomponent.type]\r\n const SecondComp = compmap[secondcomponent.type]\r\n const { value, add, datagridcol, initialdata, allgridcols } = this.state\r\n const gridoptions = secondcomponent.options\r\n const { conditions } = gridoptions\r\n\r\n console.log(datagridcol)\r\n return (\r\n <div className=\"col w-100\">\r\n <div>\r\n <GridHeader accessPermissions={accessPermissions} accessLevelPermissions={accessLevelPermissions} {...secondcomponent.options.headerProps} add={add} export={this.export} handleBack={this.handleBack} />\r\n {initialdata &&\r\n <ExcelExport\r\n data={(datagridcol && datagridcol.length > 0) ? this.state.data : initialdata}\r\n ref={exporter => this._export = exporter}\r\n >\r\n {(this.state.data && this.state.data.length > 0) || (initialdata && initialdata.length > 0) && <Grid\r\n pageable={true}\r\n total={this.state.total}\r\n data={(datagridcol && datagridcol.length > 0) ? this.state.data : initialdata}\r\n {...this.state.dataState}\r\n onDataStateChange={this.handleDataStateChange}\r\n onRowClick={this.handleRowClick}\r\n rowRender={this.rowRender}\r\n style={{ height: '350px' }}\r\n resizable\r\n >\r\n <GridToolbar >\r\n <div className=\"row col\">\r\n <div className=\"col-sm-12\">\r\n <FirstComp className=\"pb-2\" {...firstcomponent.options} handleFieldChange={this.handleFieldChange} value={this.state.value} dropdownvalues={this.state.values} transformProps={dropdowntransformProps} />\r\n </div>\r\n\r\n </div>\r\n </GridToolbar>\r\n {datagridcol && datagridcol.length > 0 && datagridcol.map((each, index) => {\r\n if (each.fieldName == 'Status') {\r\n if (each.show) return <GridColumn {...each} key={index} cell={this.handleStatusStyle} columnMenu={\r\n props =>\r\n <CustomColumnMenu\r\n {...props}\r\n columns={datagridcol}\r\n onColumnsSubmit={this.onColumnsSubmit}\r\n />} />\r\n }\r\n else if (each.fieldName == 'CreatedOn' || each.fieldName == 'UpdatedOn') {\r\n if (each.show) return <GridColumn {...each} key={index} filter={'date'} format=\"{0:d}\" columnMenu={\r\n props =>\r\n <CustomColumnMenu\r\n {...props}\r\n columns={datagridcol}\r\n onColumnsSubmit={this.onColumnsSubmit}\r\n />} />\r\n }\r\n else {\r\n if (each.show) return <GridColumn {...each} width={'300px'} field={each.fieldName} title={each.fieldName} key={index} columnMenu={\r\n props =>\r\n <CustomColumnMenu\r\n {...props}\r\n columns={datagridcol}\r\n onColumnsSubmit={this.onColumnsSubmit}\r\n />} />\r\n }\r\n })}{datagridcol && datagridcol.length === 0 &&\r\n initialdata && initialdata.length > 0 && allgridcols.map((each, index) => {\r\n if (each.show) return <GridColumn width='200px' field={each.title} title={each.title} columnMenu={\r\n props =>\r\n <CustomColumnMenu\r\n {...props}\r\n columns={allgridcols}\r\n onColumnsSubmit={this.onColumnsInitialSubmit}\r\n />} />\r\n })}\r\n </Grid>\r\n }{\r\n !this.state.data && <div className=\"col-sm-12 text-primary\">{this.state.loadText}</div>\r\n }\r\n </ExcelExport>\r\n }\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n}\r\n\r\nCPaper.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n};\r\n\r\n\r\nexport default withStyles(styles)(withRouter(CPaper));\r\n","/**\r\n *********************************************************\r\n Description: Label component.\r\n Required props: value.\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\nimport React, { Component, Fragment } from 'react';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport { FormControl } from '@material-ui/core';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\n\r\nconst CLabel = (props) => {\r\n const { defaultValue, value, error, helperText, name, id, edit, tooltip, options, conditions, disabled, accessPermissions,accessLevelPermissions, ...otherProps } = props\r\n const { label } = otherProps\r\n const val = ((value === null) || (value === undefined)) ? '' : value\r\n return <Fragment>\r\n <FormControl error={error || false}>\r\n <Fragment>\r\n {tooltip &&\r\n < div>\r\n <Typography variant={'caption'} className=\"fw-bold\">{label} < Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em' }} />\r\n </Tooltip> </Typography>\r\n <div variant={'body2'} className=\"text-secondary\" color={'textPrimary'}>{val.split(\"/n\").map((line, idx) => <p key={idx}>{line}</p>)} </div>\r\n </div>}\r\n {!tooltip && < div >\r\n <Typography variant={'caption'} className=\"fw-bold\">{label}\r\n </Typography>\r\n <div variant={'body2'} className=\"text-secondary\" color={'textPrimary'}>{val.split(\"/n\").map((line, idx) => <p key={idx}>{line}</p>)} </div>\r\n </div>}\r\n </Fragment>\r\n {error && <FormHelperText id=\"component-error-text\" color={'secondary'}>{helperText}</FormHelperText>}\r\n </FormControl >\r\n </Fragment >\r\n}\r\nexport default CLabel;\r\n","/**\r\n *********************************************************\r\n Currenlty not used anywhere\r\n *********************************************************\r\n**/\r\n\r\nimport React, { Component, Fragment } from 'react';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Link from '@material-ui/core/Link';\r\nimport { Link as RouterLink } from 'react-router-dom';\r\n\r\nconst CLink = (props) => {\r\n\r\n const { options, type, handleFieldChange, error, value, touched, dropdownvalues, effect, ...otherProps } = props;\r\n const { text, name } = options;\r\n let url = window.location.href\r\n return (\r\n <Fragment>\r\n {\r\n type === 'link' && <Link to='#' component={RouterLink} onClick={handleFieldChange} name={name} {...otherProps}>\r\n {text}\r\n </Link>\r\n }\r\n {\r\n type === 'routelink' && <a href={url.split('#')[0]}>{text}</a>\r\n }\r\n {\r\n type === 'navlink' && <Link to='#' component={RouterLink} onClick={handleFieldChange} name={name} {...otherProps}>\r\n {text}\r\n </Link>\r\n }\r\n </Fragment>\r\n\r\n )\r\n\r\n\r\n}\r\n\r\nexport default CLink;\r\n\r\n/**\r\n * {\r\n * type:'txtlink',\r\n * text:'alarm',\r\n * options:{\r\n *\r\n * },\r\n * mobileoptions:{\r\n * },\r\n * suboptions:{\r\n * href:''\r\n * }\r\n * }\r\n */","/**\r\n *********************************************************\r\n Description: Handles the multiduallistbox component with form fields below the multiduallistbox. Not completely written, still needs to be verified and modified.\r\n Required props: type, components.\r\n limitations : N/A.\r\n *********************************************************\r\n**/\r\n\r\nimport React, { Component, Fragment } from 'react';\r\nimport DualListBox from 'react-dual-listbox';\r\nimport 'react-dual-listbox/lib/react-dual-listbox.css';\r\nimport { requestApi } from './utilities'\r\nimport { HashRouter as Router, Switch, Route, withRouter } from 'react-router-dom';\r\nimport SubForm from './csubform'\r\nimport Typography from '@material-ui/core/Typography';\r\nimport FormHeader from './cformheader'\r\nimport { bindActionCreators } from 'redux'\r\nimport { connect } from 'react-redux';\r\nimport { unsavedData } from '../../actions';\r\nimport { FormControl, FormHelperText } from '@material-ui/core';\r\n\r\nclass CMultiDualListBox extends Component {\r\n constructor(props) {\r\n super(props)\r\n console.log(props);\r\n /**\r\n *********************************************************\r\n Description: Initializing the state to handle the duallist box.\r\n Required props: N/A.\r\n limitations : N/A.\r\n *********************************************************\r\n **/\r\n this.state = {\r\n firstboxselected: [],\r\n firstboxavailable: [],\r\n secondboxselected: [],\r\n secondboxavailable: [],\r\n firstboxresults: null,\r\n secondboxresults: null,\r\n currentfirstboxselecteditem: null,\r\n currentsecondboxselecteditem: null,\r\n changedFieldName: [],\r\n opensnackbar: false,\r\n snackbarmessageType: '',\r\n snackbarmessage: '',\r\n errortext:'',\r\n \r\n\r\n };\r\n }\r\n\r\n\r\n /**\r\n *********************************************************\r\n Description: Handles firstbox change when the values are moved between selected and available.\r\n Required props: components. Within components one prop which is an object and contains the properties of firstbox.\r\n limitations : N/A.\r\n *********************************************************\r\n**/\r\n onFirstBoxChange = (selected) => {\r\n const { firstboxselected } = this.state\r\n const { options, components } = this.props\r\n const [firstbox, secondbox] = components\r\n const firstboxoptions = firstbox ? firstbox.options : null\r\n const firstboxtranformProps = firstboxoptions ? firstboxoptions.transformProps : null\r\n\r\n const { firstboxresults } = this.state\r\n const firstboxresultsavailable = firstboxresults[firstboxtranformProps.available.key]\r\n const firstboxresultsselected = firstboxresults[firstboxtranformProps.selected.key]\r\n let newselecteditems = []\r\n this.setState({ errortext: \"\"})\r\n if (selected.length > firstboxselected.length) {\r\n const addeditemsvalue = selected.filter(each => {\r\n const val = firstboxselected.find(e => e === each)\r\n if (!val) return true\r\n else return false\r\n })\r\n\r\n firstboxresultsavailable.forEach(each => {\r\n const val = each[firstboxtranformProps.available.value]\r\n if (addeditemsvalue.find(e => e === val) !== undefined) {\r\n const temp = { ...each, [firstboxtranformProps.selected.label]: each[firstboxtranformProps.available.label], [firstboxtranformProps.selected.value]: each[firstboxtranformProps.available.value] }\r\n newselecteditems.push(temp)\r\n }\r\n })\r\n newselecteditems = firstboxresultsselected.concat(newselecteditems)\r\n }\r\n if (selected.length < firstboxselected.length) {\r\n firstboxresultsselected.forEach(each => {\r\n const val = each[firstboxtranformProps.selected.value]\r\n if (selected.find(e => e === val) !== undefined) {\r\n newselecteditems.push(each)\r\n }\r\n })\r\n }\r\n console.log('previous selectd, new selected', firstboxresultsselected, newselecteditems)\r\n\r\n this.setState({\r\n firstboxselected: selected,\r\n firstboxresults: { ...this.state.firstboxresults, [firstboxtranformProps.selected.key]: newselecteditems }\r\n }, () => {\r\n this.props.unsavedData({results : this.state.firstboxresults , compareresults : this.state.compareresults});\r\n })\r\n };\r\n\r\n onSecondBoxChange = (selected) => {\r\n this.setState({\r\n secondboxselected: selected\r\n })\r\n }\r\n\r\n /**\r\n *********************************************************\r\n Description: Gets the values for the duallist box and setups click listener on each of the values.\r\n Required props: components.\r\n limitations : N/A.\r\n *********************************************************\r\n**/\r\n componentDidMount() {\r\n const { options, components, eventOn, duallistprops } = this.props\r\n if(options && options.subtypeurls)\r\n {\r\n\r\n const [firstbox, secondbox] = components\r\n const firstboxoptions = firstbox ? firstbox.options : null\r\n const firstboxcrud = firstboxoptions ? firstboxoptions.crud : null\r\n const customurl = firstboxcrud && firstboxcrud.customurl ? firstboxcrud.customurl.read : null\r\n const firstboxget = customurl ? customurl.get : null\r\n const { matchProps, routeProps, extraProps, customProps, customextraProps } = firstboxget ? firstboxget : {}\r\n let customvalue\r\n let ids = []\r\n if (Array.isArray(customextraProps)) {\r\n customextraProps.forEach(each => {\r\n const { value, custom } = each\r\n if(customextraProps) {\r\n ids.push({ key: custom, value: this.props.dataItem[custom] })\r\n }\r\n\r\n })\r\n }\r\n requestApi(customurl, ids).then(res => {\r\n customvalue=res //[options.subtypeurls]\r\n this.newComponentDidMount(customvalue);\r\n })\r\n }\r\n else {\r\n this.newComponentDidMount();\r\n }\r\n\r\n }\r\n\r\n newComponentDidMount = (customvalue) => {\r\n const { options, components, eventOn, duallistprops } = this.props\r\n const [firstbox, secondbox] = components\r\n const firstboxoptions = firstbox ? firstbox.options : null\r\n const firstboxtranformProps = firstboxoptions ? firstboxoptions.transformProps : null\r\n const firstboxcrud = firstboxoptions ? firstboxoptions.crud : null\r\n const firstboxread = firstboxcrud ? firstboxcrud.read : null\r\n const firstboxget = firstboxread ? firstboxread.get : null\r\n //const firstboxrouteProps = firstboxget ? firstboxget.routeProps : null\r\n // id = firstboxrouteProps ? this.props.match.params[firstboxrouteProps.value] : null\r\n const firstboxeventsavailable = firstboxcrud ? firstboxcrud.available : null\r\n const firstboxeventsselected = firstboxcrud ? firstboxcrud.selected : null\r\n\r\n const firstboxeventsavailableget = firstboxeventsavailable ? firstboxread.get : null\r\n const firstboxeventsselectedget = firstboxeventsselected ? firstboxeventsselected.get : null\r\n\r\n const { matchProps, routeProps, extraProps, customProps, customextraProps } = firstboxget ? firstboxget : {}\r\n\r\n\r\n\r\n\r\n let ids = [], id\r\n if (Array.isArray(routeProps)) {\r\n routeProps.forEach(each => {\r\n const { value, custom } = each\r\n if(custom) {\r\n ids.push({ key: custom, value: this.props.dataItem[custom] })\r\n }\r\n else {\r\n ids.push({ key: value, value: this.props.match.params[value] })\r\n }\r\n })\r\n }\r\n else if (routeProps) {\r\n id = routeProps ? this.props.match.params[routeProps.value] : null\r\n }\r\n else if (customProps){\r\n id = this.props.dataItem[customProps.custom]\r\n }\r\n else if (matchProps) {\r\n if (Array.isArray(matchProps)) {\r\n matchProps.forEach(each => {\r\n const { value } = each\r\n ids.push({ key: value, value: this.props.extraProps ? this.props.extraProps[matchProps[0].value] : null })\r\n })\r\n }\r\n //if(results) id = results[matchProps.value]\r\n\r\n }\r\n else if (Array.isArray(customextraProps)) {\r\n customextraProps.forEach(each => {\r\n const { value, custom } = each\r\n ids.push({ key: custom, value: customvalue[custom] })\r\n\r\n })\r\n }\r\n if (eventOn) {\r\n var val = ''\r\n switch (eventOn) {\r\n case \"APPLICATION_STATUS_CHANGE\":\r\n val = 'APPLICATION_STATUS';\r\n break;\r\n case \"FIELD_VALUE_CHANGE\":\r\n val = 'FIELD_VALUE';\r\n break;\r\n case \"PERMIT_STATUS_CHANGE\":\r\n val = 'PERMIT_STATUS';\r\n break;\r\n case \"WORKFLOW_STATUS_CHANGE\":\r\n val = 'WORKFLOW_STATUS_CHANGE';\r\n break;\r\n case \"RESOLUTION_STATUS\":\r\n val = 'RESOLUTION_STATUS';\r\n break;\r\n default:\r\n val = '';\r\n break;\r\n }\r\n ids.push({ key: 'eventOn', value: val });\r\n\r\n if (eventOn == \"FIELD_VALUE_CHANGE\") {\r\n //Refactor props for event on details\r\n const { matchProps, routeProps, extraProps } = firstboxeventsselectedget ? firstboxeventsselectedget : {}\r\n if (Array.isArray(routeProps)) {\r\n routeProps.forEach(each => {\r\n const { value, custom } = each\r\n if(custom) {\r\n ids.push({ key: custom, value: this.props.dataItem[custom] })\r\n }\r\n else {\r\n ids.push({ key: value, value: this.props.match.params[value] })\r\n }\r\n })\r\n }\r\n else if (routeProps) {\r\n id = routeProps ? this.props.match.params[routeProps.value] : null\r\n }\r\n else if (matchProps) {\r\n if (Array.isArray(matchProps)) {\r\n matchProps.forEach(each => {\r\n const { value } = each\r\n ids.push({ key: value, value: this.props.extraProps ? this.props.extraProps[matchProps[0].value] : null })\r\n })\r\n }\r\n }\r\n\r\n\r\n //firstboxeventsselected.urlpath = firstboxeventsselected.urlpath\r\n firstboxeventsavailableget && requestApi(firstboxeventsavailable, (ids.length > 0 ? ids : id)).then(results => {\r\n console.log(results);\r\n\r\n var availableCollection = results;\r\n var firstboxavailablelist = [];\r\n var firstboxselectedlist = [];\r\n firstboxeventsselectedget && requestApi(firstboxeventsselected, (ids.length > 0 ? ids : id)).then(results1 => {\r\n console.log(results1);\r\n\r\n if (results1 && results1.selectedCollection.length > 0) {\r\n firstboxselectedlist = results1.selectedCollection ? results1.selectedCollection : {};\r\n } else {\r\n firstboxavailablelist = availableCollection;\r\n }\r\n let selectedKeys = firstboxselectedlist.map(a => { return a.key}) || [];\r\n\r\n let firstboxavailablelistbind = firstboxavailablelist.map(each => {\r\n return { value: each.Value, label: each.Label }\r\n });\r\n let firstboxselectedlistbind= firstboxselectedlist.map(each => {\r\n return { value: each.key, label: each.key, key: each.key, name: each.key }\r\n })\r\n\r\n if(selectedKeys.length > 0){\r\n firstboxavailablelistbind = availableCollection.filter(a => !selectedKeys.includes(a.Key)).map(each => {\r\n return { value: each.Value, label: each.Label }\r\n });\r\n firstboxselectedlistbind = availableCollection.filter(a => selectedKeys.includes(a.Key)).map(each => {\r\n return { value: each.Value, label: each.Label, key: each.Value, name: each.Label }\r\n });\r\n }\r\n\r\n\r\n let firstboxresultsbind = {}\r\n firstboxresultsbind.availableCollection = availableCollection.map(each => {\r\n return { value: each.Value, label: each.Label, key: each.Value, name: each.Label }\r\n });\r\n firstboxresultsbind.selectedCollection = firstboxselectedlistbind;\r\n firstboxresultsbind.parentId = this.props.dataItem['ID'];\r\n firstboxresultsbind.eventId = eventOn;\r\n this.setState({\r\n firstboxavailable: firstboxavailablelistbind,\r\n firstboxselected: selectedKeys,\r\n firstboxresults: firstboxresultsbind\r\n })\r\n })\r\n\r\n\r\n })\r\n\r\n } else {\r\n //firstboxget.urlpath = firstboxget.urlpath + val;\r\n firstboxget && requestApi(firstboxread, (ids.length > 0 ? ids : id)).then(results => {\r\n\r\n this.setState({\r\n firstboxavailable: results[firstboxtranformProps.available.key].map(each => {\r\n return { value: each[firstboxtranformProps.available.value], label: each[firstboxtranformProps.available.label] }\r\n }),\r\n firstboxselected: results[firstboxtranformProps.selected.key].map(each => {\r\n return each[firstboxtranformProps.selected.value]\r\n }),\r\n firstboxresults: results\r\n })\r\n })\r\n\r\n }\r\n\r\n\r\n }\r\n else {\r\n firstboxget && requestApi(firstboxread, (ids.length > 0 ? ids : id)).then(results => {\r\n\r\n this.setState({\r\n firstboxavailable: results[firstboxtranformProps.available.key].map(each => {\r\n return { value: each[firstboxtranformProps.available.value], label: each[firstboxtranformProps.available.label] }\r\n }),\r\n firstboxselected: results[firstboxtranformProps.selected.key].map(each => {\r\n return each[firstboxtranformProps.selected.value]\r\n }),\r\n firstboxresults: results,\r\n compareresults : results\r\n })\r\n\r\n\r\n })\r\n }\r\n\r\n\r\n\r\n this.firstselectedbox.addEventListener('click', (event) => {\r\n const { firstboxresults } = this.state\r\n const selectedvalue = Number(event.target.value)\r\n const selecteditem = firstboxresults[firstboxtranformProps.selected.key].find(each => selectedvalue === each[firstboxtranformProps.selected.value])\r\n\r\n\r\n if (secondbox) {\r\n const secondboxoptions = secondbox ? secondbox.options : null\r\n const secondboxtranformProps = secondboxoptions ? secondboxoptions.transformProps : null\r\n const secondboxboxcrud = secondboxoptions ? secondboxoptions.crud : null\r\n const secondboxread = secondboxboxcrud ? secondboxboxcrud.read : null\r\n const secondboxget = secondboxread ? secondboxread.get : null\r\n const secondboxrouteProps = secondboxget ? secondboxget.routeProps : null\r\n const id = secondboxrouteProps ? this.props.match.params[secondboxrouteProps.value] : null\r\n const { ids } = secondboxget ? secondboxget : null\r\n let subids = [id]\r\n if (ids) {\r\n ids.forEach(each => {\r\n subids.push(selecteditem[each])\r\n })\r\n }\r\n secondboxread && requestApi(secondboxread, ids ? subids : id).then(results => {\r\n\r\n this.setState({\r\n secondboxavailable: results[secondboxtranformProps.available.key].map(each => {\r\n return { value: each[secondboxtranformProps.available.value], label: each[secondboxtranformProps.available.label] }\r\n }),\r\n secondboxselected: results[secondboxtranformProps.selected.key].map(each => {\r\n return each[secondboxtranformProps.selected.value]\r\n }),\r\n secondboxresults: results\r\n })\r\n })\r\n this.secondselectedbox.addEventListener('click', (event) => {\r\n console.log('second box')\r\n })\r\n }\r\n this.setState({\r\n currentfirstboxselecteditem: selecteditem\r\n })\r\n });\r\n }\r\n\r\n // changeResults = (objProperty, len, splitName, value) => {\r\n // if (len === 0) return value\r\n // else {\r\n // const index = splitName.length - len\r\n // const name = splitName[index]\r\n // if (name) return { ...objProperty, [name]: this.changeResults(objProperty[name], --len, splitName, value) }\r\n // }\r\n // }\r\n\r\n /**\r\n *********************************************************\r\n Description: handles the form field values for the first duallistbox.\r\n Required props: name, value.\r\n limitations : N/A.\r\n *********************************************************\r\n**/\r\n\r\n handleFirstBoxFieldChange = (event) => {\r\n const { name, value } = event.target\r\n const { options, components } = this.props\r\n const [firstbox, secondbox] = components\r\n const firstboxoptions = firstbox ? firstbox.options : null\r\n const firstboxtranformProps = firstboxoptions ? firstboxoptions.transformProps : null\r\n this.setState({\r\n changedFieldName: [{ name: name, value: value }],\r\n firstboxresults: { ...this.state.firstboxresults, [firstboxtranformProps.selected.key]: { ...this.state.firstboxresults[firstboxtranformProps.selected.key], [name]: value } }\r\n })\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevProps.save != this.props.save) {\r\n if (this.props.save) this.onhandleSave()\r\n }\r\n }\r\n\r\n /**\r\n *********************************************************\r\n Description: handles the saving of the results for the firstdual list box.\r\n Required props: components. Within components first dual list box save is needed.\r\n limitations : N/A.\r\n *********************************************************\r\n**/\r\n\r\n onhandleSave = () => {\r\n\r\n const id = this.props.options && this.props.options.subtypeurls ? [{key : 'Id', value :this.props.match.params.Id}] : this.props.match.params.routeid\r\n const { options, components } = this.props\r\n const [firstbox, secondbox] = components\r\n const firstboxoptions = firstbox ? firstbox.options : null\r\n const firstboxcrud = firstboxoptions ? firstboxoptions.crud : null\r\n const firstboxsave = firstboxcrud ? firstboxcrud.update : null\r\n const message = firstboxsave && firstboxsave.message ? firstboxsave.message : null\r\n const { firstboxresults, secondboxresults } = this.state\r\n const { multiboxes, save, title } = options ? options : {}\r\n if (firstboxsave) {\r\n requestApi(firstboxsave, id,firstboxresults,null,null,message).then(results => {\r\n this.props.unsavedData({ results: this.state.results, compareresults: this.state.results });\r\n if (this.props.save) this.props.handleSave()\r\n // this.props.snackbarMessage((title ? title : '') + ' Saved Successfully', 'success')\r\n\r\n }).catch(e=> {\r\n e.then(err => {\r\n if(Array.isArray(err.selectedCollection) && err.selectedCollection.length > 0)\r\n this.setState({ errortext: err.selectedCollection[0] });\r\n })\r\n\r\n if (this.props.save) this.props.handleSave()\r\n // this.props.snackbarMessage('Invalid Data, Please check the data', 'error')\r\n });\r\n }\r\n\r\n }\r\n /**\r\n *********************************************************\r\n Description: handles closing of the alerts.\r\n Required props: N/A.\r\n limitations : N/A.\r\n *********************************************************\r\n **/\r\n\r\n handleSnackBarClose = (event, reason) => {\r\n if (reason === 'clickaway') {\r\n return;\r\n }\r\n this.setState({ opensnackbar: false });\r\n };\r\n\r\n /**\r\n *********************************************************\r\n Description: handles rendering of the duallist boxes and the forms beneath it.\r\n Required props: type ,components, options.\r\n limitations : N/A.\r\n *********************************************************\r\n**/\r\n\r\n render() {\r\n const { firstboxselected, firstboxavailable, secondboxselected, secondboxavailable ,errortext} = this.state\r\n const { options, components, compmap, helperText, error, required } = this.props\r\n const { multiboxes, save, title } = options ? options : {}\r\n const [firstbox, secondbox] = components\r\n const firstboxoptions = firstbox ? firstbox.options : null\r\n const secondboxoptions = secondbox ? secondbox.options : null\r\n const firstboxprops = {}, secondboxprops = {}\r\n if (multiboxes) {\r\n if (firstboxoptions) {\r\n firstboxprops.width = firstboxoptions.width || 6\r\n firstboxprops.helperText = firstboxoptions.helperText || ''\r\n firstboxprops.name = firstboxoptions.name || 'firstbox'\r\n }\r\n if (secondboxoptions) {\r\n secondboxprops.width = secondboxoptions.width || 6\r\n secondboxprops.helperText = secondboxoptions.helperText || ''\r\n secondboxprops.name = secondboxoptions.name || 'secondbox'\r\n }\r\n }\r\n else {\r\n firstboxprops.width = firstboxoptions.width || 6\r\n firstboxprops.helperText = firstboxoptions.helperText || ''\r\n firstboxprops.name = firstboxoptions.name || 'firstbox'\r\n }\r\n const { opensnackbar, snackbarmessage, snackbarmessageType } = this.state\r\n const { headerProps, designprops } = options\r\n const { savebutton, closebutton } = headerProps ? headerProps : {}\r\n\r\n return (\r\n <Fragment>\r\n {headerProps && <FormHeader title={title} handleSave={this.onhandleSave} savebutton={savebutton} handleClose={this.props.onClose} closebutton={closebutton} duallistheader={true} designprops={designprops}/>} \r\n\r\n <div className=\"row mt-3\">\r\n {firstbox && <div className={\"col-\" + firstboxprops.width}>\r\n <DualListBox\r\n options={firstboxavailable}\r\n selected={firstboxselected}\r\n onChange={this.onFirstBoxChange}\r\n selectedRef={(element) => { this.firstselectedbox = element; }}\r\n showHeaderLabels={true}\r\n icons={{\r\n moveLeft: '<',\r\n moveAllLeft: '<<',\r\n moveRight: '>',\r\n moveAllRight: '>>'\r\n }}\r\n />\r\n <Typography>\r\n {firstboxprops.helperText}\r\n </Typography>\r\n {firstbox.components && <SubForm {...firstbox} compmap={compmap} changedFieldName={this.state.changedFieldName} handleFieldChange={this.handleFirstBoxFieldChange} results={this.state.currentfirstboxselecteditem} />}\r\n </div>}\r\n {secondbox && <div className={\"col-\" + secondboxprops.width}>\r\n <DualListBox\r\n options={secondboxavailable}\r\n selected={secondboxselected}\r\n onChange={this.onSecondBoxChange}\r\n selectedRef={(element) => { this.secondselectedbox = element; }}\r\n showHeaderLabels={true}\r\n icons={{\r\n moveLeft: '<',\r\n moveAllLeft: '<<',\r\n moveRight: '>',\r\n moveAllRight: '>>'\r\n }}\r\n />\r\n <Typography>\r\n {secondboxprops.helperText}\r\n </Typography>\r\n {secondbox.components && <SubForm {...secondbox} compmap={compmap} changedFieldName={this.state.changedFieldName} handleFieldChange={this.handleSecondBoxFieldChange} />}\r\n </div>}\r\n </div>\r\n {/* {\r\n save && <div className=\"row\">\r\n {save && <div className=\"ml-4 mb-3 pt-2\"> <Button variant=\"contained\" onClick={this.onhandleSave} color=\"secondary\" > Save</Button></div>}\r\n </div>\r\n\r\n } */}\r\n {this.state.errortext && <FormHelperText error={true}>{this.state.errortext}</FormHelperText>}\r\n\r\n\r\n </Fragment>\r\n )\r\n }\r\n}\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({unsavedData }, dispatch);\r\n}\r\n\r\nCMultiDualListBox = connect(null, mapActions)(CMultiDualListBox)\r\nexport default withRouter(CMultiDualListBox)\r\n\r\n","import React, { Fragment, useEffect, useState, useRef } from \"react\"\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n //width: 500,\r\n '& > * + *': {\r\n marginTop: theme.spacing(3),\r\n },\r\n },\r\n}));\r\n\r\n\r\nexport default function Tags(props) {\r\n const { name, Name, value, handleFieldChange, customnoticesave, options, dropdownvalues, dataItem, defaultSelValue, tooltip, edit } = props\r\n const classes = useStyles();\r\n let items = dropdownvalues || []\r\n let defaultitems = value || [];\r\n\r\n const handleChange = (event, values) => {\r\n let resultdata = values.map(a => a.Id);\r\n let stringformatvalues = [...new Set(resultdata)].join()\r\n\r\n const e = {\r\n target: {\r\n name: name || Name || (options && options.name),\r\n value: values\r\n\r\n }\r\n }\r\n defaultitems = values\r\n if (options && options.savestringformat) {\r\n const e1 = {\r\n target: {\r\n name: name || Name || options.name,\r\n value: stringformatvalues\r\n }\r\n }\r\n props.handleFieldChange(e1)\r\n defaultitems = dropdownvalues.filter(a => value.split(',').includes(a.Id.toString()))\r\n } else\r\n props.handleFieldChange(e)\r\n }\r\n\r\n if (options && options.savestringformat) {\r\n defaultitems = dropdownvalues ? dropdownvalues.filter(a => value.split(',').includes(a.Id.toString())) : []\r\n }\r\n\r\n\r\n if (dataItem && options && options.itemname) {\r\n if (dataItem[options.itemname] && dataItem[options.itemname] != \"\") {\r\n let dataitemvalue = dataItem[options.itemname];\r\n if (dataitemvalue) {\r\n dataitemvalue = dataitemvalue.toString();\r\n let dataitemarray = dataitemvalue.split(\",\");\r\n if (Array.isArray(dataitemarray)) {\r\n defaultitems = items.filter(a => dataitemarray.includes(a.id.toString()))\r\n }\r\n }\r\n }\r\n } else if (defaultSelValue) {\r\n let selitemarray = defaultSelValue.split(\",\");\r\n if (Array.isArray(selitemarray)) {\r\n defaultitems = items.filter(a => selitemarray.includes(a.id.toString()))\r\n }\r\n }\r\n\r\n\r\n if (edit === false) {\r\n let resultdata = defaultitems.map(a => a.Name);\r\n let displayvalues = [...new Set(resultdata)].join()\r\n let getvalue = (items) => items.name || items.Name\r\n return <Fragment>\r\n {tooltip && <div > <Typography variant={'caption'} className=\"text-secondary\">{options && options.label} \r\n < Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em' }} />\r\n </Tooltip> </Typography> <Typography className=\"fw-bold\" variant={'body2'} color={'textPrimary'} className=\"fw-bold\">{displayvalues} </Typography>\r\n </div>}\r\n {!tooltip && <div > <Typography variant={'caption'} className=\"text-secondary\">{options && options.label} </Typography> <Typography className=\"fw-bold\" variant={'body2'} color={'textPrimary'} className=\"fw-bold\">{displayvalues} </Typography>\r\n </div>}\r\n </Fragment >\r\n }\r\n else {\r\n return (\r\n <div className={classes.root}>\r\n <Autocomplete\r\n key={name || options && options.name}\r\n fullWidth\r\n multiple\r\n name={name || Name}\r\n id=\"tags-standard\"\r\n options={items}\r\n getOptionLabel={(items) => items.name || items.Name}\r\n onChange={handleChange}\r\n filterSelectedOptions\r\n defaultValue={items[0]}\r\n value={defaultitems}\r\n disabled={options && options.disabled}\r\n renderInput={(params) => (\r\n <TextField\r\n fullWidth\r\n {...params}\r\n onChange={handleFieldChange}\r\n name={name || Name}\r\n variant=\"standard\"\r\n label={options && options.label}\r\n placeholder={options && options.placeholder}\r\n InputLabelProps={{\r\n shrink: true,\r\n }\r\n }\r\n />\r\n )}\r\n />\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n","import Typography from '@material-ui/core/Typography';\r\nimport React, { Component, Fragment } from 'react';\r\nimport 'react-dual-listbox/lib/react-dual-listbox.css';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { bindActionCreators } from 'redux';\r\nimport { createRequest, requestApi as requestURL } from '../../controls/helpers/rest';\r\nimport { snackbarMessage } from '../../actions';\r\nimport Autocompletetags from '../../controls/components/custom/notificationtags';\r\nimport { getEnvVariable } from '../../../modules/environmentalList';\r\nimport ProgressBar from '../progress-bar';\r\nimport CFormCheckbox from './cformcheckbox';\r\nimport FormHeader from './cformheader';\r\nimport SubForm from './csubform';\r\nimport { requestApi } from './utilities';\r\n\r\n\r\nclass CMultiDualListBox2 extends Component {\r\n\r\n state = {\r\n firstboxselected: null,\r\n firstboxavailable: [],\r\n secondboxselected: null,\r\n secondboxavailable: [],\r\n firstboxresults: null,\r\n secondboxresults: null,\r\n currentfirstboxselecteditem: null,\r\n currentsecondboxselecteditem: null,\r\n changedFieldName: [],\r\n snackbarmessage: '',\r\n notificationToRoles: \"N\",\r\n notificationToUsers: \"N\",\r\n notificationToApplicantOwner: \"N\",\r\n notificationToPrimaryContact: \"N\",\r\n notificationToPropertyOwner: null,\r\n contactTypes: []\r\n };\r\n results = {};\r\n\r\n transformProps = {\r\n \"Y\": true,\r\n \"N\": false,\r\n true: \"Y\",\r\n false: \"N\"\r\n }\r\n\r\n componentDidMount() {\r\n this.getContactTypes();\r\n const { options, components } = this.props\r\n const [firstbox, secondbox] = components\r\n const firstboxoptions = firstbox ? firstbox.options : null\r\n const firstboxtranformProps = firstboxoptions ? firstboxoptions.transformProps : null\r\n const firstboxcrud = firstboxoptions ? firstboxoptions.crud : null\r\n const firstboxread = firstboxcrud ? firstboxcrud.read : null\r\n const firstboxget = firstboxread ? firstboxread.get : null\r\n const firstboxrouteProps = firstboxget ? firstboxget.routeProps : null\r\n const id = firstboxrouteProps ? (this.props.dataItem ? this.props.dataItem[firstboxrouteProps.value] : this.props.match.params[firstboxrouteProps.value]) : null\r\n\r\n //Second box code\r\n const secondboxoptions = secondbox ? secondbox.options : null\r\n const secondboxtranformProps = secondboxoptions ? secondboxoptions.transformProps : null\r\n const secondboxboxcrud = secondboxoptions ? secondboxoptions.crud : null\r\n const secondboxread = secondboxboxcrud ? secondboxboxcrud.read : null\r\n const secondboxget = secondboxread ? secondboxread.get : null\r\n const secondboxrouteProps = secondboxget ? secondboxget.routeProps : null\r\n console.log(firstboxread, 'roles read----')\r\n firstboxget && requestApi(firstboxread, id).then(res => {\r\n\r\n const results = res.notificationRoles\r\n const results2 = res.notificationUsers\r\n let firstboxselectedarray = results[firstboxtranformProps.selected.key].map(each => {\r\n return each[firstboxtranformProps.selected.value]\r\n })\r\n let secondboxselectedarray = results2[secondboxtranformProps.selected.key].map(each => {\r\n return each[secondboxtranformProps.selected.value]\r\n })\r\n this.results = res\r\n this.setState({\r\n\r\n firstboxavailable: results[firstboxtranformProps.available.key],\r\n firstboxselected: firstboxselectedarray.join(),\r\n firstboxresults: results,\r\n secondboxresults: results2,\r\n notificationToRoles: res.notificationToRoles,\r\n notificationToUsers: res.notificationToUsers,\r\n notificationToApplicantOwner: res.notificationToApplicantOwner,\r\n secondboxavailable: results2[secondboxtranformProps.available.key],\r\n secondboxselected: secondboxselectedarray.join(),\r\n notifyToContactTypes: res.notifyToContactTypes,\r\n notificationToPrimaryContact: res.notificationToPrimaryContact,\r\n })\r\n })\r\n }\r\n\r\n getContactTypes() {\r\n let requesturi = {\r\n get: {\r\n url: getEnvVariable('Admin') + `/api/Domains/values?domainkey=CONTACT_TYPE`\r\n }\r\n }\r\n requestApi(requesturi).then(res => {\r\n if (res && res.length > 0) {\r\n let ctypes = res.map(a => ({ id: a.Value, name: a.Name, refId: a.Id, description: a.Key }))\r\n console.log(ctypes);\r\n this.setState({ contactTypes: ctypes })\r\n }\r\n })\r\n }\r\n\r\n onhandleSave = () => {\r\n //changed the code please verify\r\n const id = this.props.dataItem.ID || this.props.dataItem.Id\r\n const { options, components } = this.props\r\n const [firstbox, secondbox] = components\r\n const firstboxoptions = firstbox ? firstbox.options : null\r\n const firstboxcrud = firstboxoptions ? firstboxoptions.crud : null\r\n const firstboxsave = firstboxcrud ? firstboxcrud.update : null\r\n const { firstboxresults, secondboxresults, notifyToContactTypes } = this.state\r\n\r\n this.results.notificationRoles = firstboxresults;\r\n this.results.notificationUsers = secondboxresults;\r\n this.results.notificationToRoles = this.state.notificationToRoles;\r\n this.results.notificationToUsers = this.state.notificationToUsers;\r\n this.results.notificationToApplicantOwner = this.state.notificationToApplicantOwner;\r\n this.results.notificationToPrimaryContact = this.state.notificationToPrimaryContact;\r\n this.results.notifyToContactTypes = notifyToContactTypes;\r\n this.results.parentId = id;\r\n let firstboxsaveurl = {\r\n url: firstboxsave.put.url,\r\n type: 'put',\r\n }\r\n requestURL(createRequest(firstboxsaveurl, this.results, (id))).then(results => {\r\n })\r\n }\r\n\r\n handleFieldChange = (event) => {\r\n console.log(event)\r\n const value = this.transformProps ? this.transformProps[event.target.checked] : value;\r\n this.setState({\r\n [event.target.name]: value,\r\n })\r\n }\r\n\r\n autcompletetagshelp = {\r\n \"options\": {\r\n \"label\": \"Select contact type(s)\",\r\n \"placeholder\": \"\",\r\n \"row\": 0,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"name\": \"UsersList\",\r\n \"itemname\": \"userId\",\r\n \"defaultSelected\": true\r\n }\r\n }\r\n\r\n autcompletetagshelproles = {\r\n \"options\": {\r\n \"label\": \"Select role(s)\",\r\n \"placeholder\": \"\",\r\n \"row\": 0,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"name\": \"RolesList\",\r\n \"itemname\": \"roleId\",\r\n disabled: false,\r\n conditions: {\r\n hideonnull: { 'roleId': null }\r\n },\r\n \"defaultSelected\": true\r\n }\r\n }\r\n autcompletetagshelpusers = {\r\n \"options\": {\r\n \"label\": \"Select User(s)\",\r\n \"placeholder\": \"\",\r\n \"row\": 0,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"name\": \"NamedUsersList\",\r\n \"itemname\": \"NameduserId\",\r\n disabled: false,\r\n conditions: {\r\n hideonnull: { 'NameduserId': null }\r\n },\r\n \"defaultSelected\": true\r\n }\r\n }\r\n\r\n autcomcompletetagschange = (tags) => {\r\n console.log(tags)\r\n let resultdata = tags.target.value.map(a => a.id);\r\n this.setState({\r\n notifyToContactTypes: [...new Set(resultdata)].join(),\r\n notifyToContactTypesValue: tags.target.value\r\n })\r\n }\r\n autcomcompletetagschangeroles = (tags) => {\r\n console.log(tags)\r\n let resultdata = tags.target.value.map(a => a.id);\r\n this.setState({\r\n firstboxselected: [...new Set(resultdata)].join(),\r\n firstboxresults: { ...this.state.firstboxresults, ['selectedCollection']: tags.target.value }\r\n })\r\n }\r\n autcomcompletetagschangeusers = (tags) => {\r\n console.log(tags)\r\n let resultdata = tags.target.value.map(a => a.id);\r\n this.setState({\r\n secondboxselected: [...new Set(resultdata)].join(),\r\n secondboxresults: { ...this.state.secondboxresults, ['selectedCollection']: tags.target.value }\r\n })\r\n }\r\n render() {\r\n const { firstboxselected, firstboxavailable, secondboxselected, secondboxavailable, notifyToContactTypes, notifyToContactTypesValue, contactTypes, notifyTorolesValue } = this.state\r\n const { options, components, compmap } = this.props\r\n const { multiboxes, save, title } = options ? options : {}\r\n const [firstbox, secondbox] = components\r\n const firstboxoptions = firstbox ? firstbox.options : null\r\n const secondboxoptions = secondbox ? secondbox.options : null\r\n const firstboxprops = {}, secondboxprops = {}\r\n if (multiboxes) {\r\n if (firstboxoptions) {\r\n firstboxprops.width = firstboxoptions.width || 6\r\n firstboxprops.helperText = firstboxoptions.helperText || ''\r\n firstboxprops.name = firstboxoptions.name || 'firstbox'\r\n }\r\n if (secondboxoptions) {\r\n secondboxprops.width = secondboxoptions.width || 6\r\n secondboxprops.helperText = secondboxoptions.helperText || ''\r\n secondboxprops.name = secondboxoptions.name || 'secondbox'\r\n }\r\n }\r\n const { headerProps } = options\r\n const { savebutton, closebutton } = headerProps ? headerProps : {}\r\n\r\n return (\r\n <Fragment>\r\n {headerProps && <FormHeader title={title} handleSave={this.onhandleSave} designprops={true} savebutton={savebutton} handleClose={this.props.onClose} closebutton={closebutton} />}\r\n <div> <ProgressBar ref={e => this.progressBar = e} /></div>\r\n <div className=\"row mt-3\">\r\n {firstbox && <div className={\"col-sm-12\"}>\r\n <CFormCheckbox value={this.state.notificationToRoles} handleFieldChange={this.handleFieldChange} name=\"notificationToRoles\" transformProps={this.transformProps} label=\"Send notification to users belonging to selected roles\" />\r\n <div className=\"mt-2\">\r\n <Autocompletetags\r\n key=\"Roles\"\r\n label=\"Role Users\"\r\n name=\"notificationRoles\"\r\n dropdownvalues={firstboxavailable}\r\n {...this.autcompletetagshelproles}\r\n handleFieldChange={this.autcomcompletetagschangeroles}\r\n defaultSelValue={firstboxselected}\r\n />\r\n </div>\r\n <Typography>\r\n {firstboxprops.helperText}\r\n </Typography>\r\n\r\n {firstbox.components && <SubForm {...firstbox} compmap={compmap} changedFieldName={this.state.changedFieldName} handleFieldChange={this.handleFirstBoxFieldChange} results={this.state.currentfirstboxselecteditem} />}\r\n </div>}\r\n {secondbox && <div className={\"col-sm-12\"}>\r\n <CFormCheckbox value={this.state.notificationToUsers} handleFieldChange={this.handleFieldChange} name=\"notificationToUsers\" transformProps={this.transformProps} label=\"Send notification to named users\" />\r\n <Autocompletetags\r\n key=\"Users\"\r\n label=\"Role Users\"\r\n name=\"notificationUsers\"\r\n dropdownvalues={secondboxavailable}\r\n {...this.autcompletetagshelpusers}\r\n handleFieldChange={this.autcomcompletetagschangeusers}\r\n defaultSelValue={secondboxselected}\r\n />\r\n\r\n <Typography>\r\n {secondboxprops.helperText}\r\n </Typography>\r\n {secondbox.components && <SubForm {...secondbox} compmap={compmap} changedFieldName={this.state.changedFieldName} handleFieldChange={this.handleSecondBoxFieldChange} />}\r\n </div>}\r\n <div className=\"col-12\">\r\n <div className=\"mt-2\">\r\n <Typography paragraph variant=\"caption\">\r\n Notification will be sent to users based upon region access and role membership. Workflow notifications are always send to\r\n the assigned user in addition to the recipients selected on this screen. Users will not receive multiples of the same notification.\r\n Application, notices are only sent to users that belong to the region of the application.\r\n Only users that belong to the regions selected are listed in named users. They receive the notification irrespective of belonging to the roles selected as long as they have region access.\r\n </Typography>\r\n </div>\r\n {this.props.notificationtype != 'SCHEDULED_NOTIFICATION' && <div className=\"mt-2\">\r\n <CFormCheckbox value={this.state.notificationToApplicantOwner} handleFieldChange={this.handleFieldChange} name=\"notificationToApplicantOwner\"\r\n transformProps={this.transformProps} label=\"Send notification to application submitter\" />\r\n <CFormCheckbox value={this.state.notificationToPrimaryContact} handleFieldChange={this.handleFieldChange} name=\"notificationToPrimaryContact\"\r\n transformProps={this.transformProps} label=\"Send notification to application primary contact\" />\r\n { getEnvVariable(\"ModuleKey\") != \"WRS\" &&\r\n <div className=\"mt-2\">\r\n <Autocompletetags\r\n key=\"contacts\"\r\n label=\"Contacts\"\r\n name=\"notifyToContactTypes\"\r\n dropdownvalues={contactTypes}\r\n {...this.autcompletetagshelp}\r\n handleFieldChange={this.autcomcompletetagschange}\r\n defaultSelValue={notifyToContactTypes}\r\n />\r\n </div>\r\n }\r\n <Typography paragraph variant=\"caption\">\r\n If sending notification to applicant primary contact,\r\n please ensure that the corresponding notification template has been created.\r\n </Typography>\r\n </div>}\r\n\r\n </div>\r\n </div>\r\n </Fragment>\r\n )\r\n }\r\n}\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage }, dispatch);\r\n}\r\n\r\nCMultiDualListBox2 = connect(null, mapActions)(CMultiDualListBox2)\r\nexport default withRouter(CMultiDualListBox2)\r\n\r\n\r\n","/** \r\n *********************************************************\r\n Currenlty not used anywhere\r\n *********************************************************\r\n**/\r\n\r\nimport React, { Fragment } from 'react';\r\nimport { MultiSelect } from '@progress/kendo-react-dropdowns';\r\n\r\nconst CMultiSelect = (props) => {\r\n const { handleFieldChange, dropdownvalues, name, label, disabled, error, required, htmlForLabel, value, helperText, id, transformProps, crud, placeholder, ...otherProps } = props\r\n return (\r\n <Fragment>\r\n <MultiSelect data={dropdownvalues} placeholder={placeholder} onChange={handleFieldChange} />\r\n </Fragment>\r\n\r\n );\r\n\r\n}\r\n\r\nexport default CMultiSelect","import React, { Component } from 'react';\r\nimport FormHeader from './cformheader';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { getData, postRecordData, putRecordData } from \"../rest\";\r\nimport { bindActionCreators } from 'redux'\r\nimport { connect } from 'react-redux';\r\nimport { snackbarMessage } from '../../actions';\r\nimport ProgressBar from '../progress-bar';\r\nimport TemplateForm from '../template/template';\r\n\r\nclass NoticeTextTemplate extends Component {\r\n\r\n constructor(props) {\r\n super(props); this.state = { editorState: null, result: {} };\r\n this.TemplateForm = React.createRef()\r\n }\r\n\r\n\r\n componentDidMount() {\r\n const { options } = this.props;\r\n const { editorState } = this.state;\r\n const { crud } = options;\r\n const { read, update } = crud;\r\n let url = read.get.url + this.props.dataItem.Id\r\n getData(url).then(result => {\r\n if (result && result.NoticeText) {\r\n let passingId = +(result.NoticeText)\r\n this.setState({ resultExists: true, editorState: passingId, result: result })\r\n }\r\n else this.setState({ editorState: null, resultExists: false })\r\n }).catch(error => {\r\n this.props.snackbarMessage(JSON.stringify(error), 'error');\r\n })\r\n }\r\n\r\n handleEditorTemplateId = (editorVal) => {\r\n this.handleSave(editorVal.id);\r\n }\r\n\r\n callTemplateSave = () => {\r\n this.TemplateForm.current.saveTemplate();\r\n }\r\n\r\n handleSave = (editorVal) => {\r\n const { options } = this.props;\r\n\r\n const { resultExists, result } = this.state;\r\n const { crud } = options;\r\n const { read, update } = crud;\r\n this.progressBar.start()\r\n // result.noticeText = btoa(editorVal.toString());\r\n result.NoticeText = editorVal.toString()\r\n if (options && options.ismasterfield) {\r\n result.Name = this.props.dataItem.Name\r\n result.UIFieldTypeComponent = this.props.dataItem.UIFieldTypeComponent\r\n }\r\n\r\n let url = ''\r\n if (!resultExists) {\r\n // this.progressBar.start()\r\n if (this.props.options.tabprops) {\r\n url = update.put.url + this.props.dataItem.Id\r\n }\r\n else {\r\n url = update.put.url + this.props.dataItem.Id\r\n }\r\n putRecordData(url, result).then(res => {\r\n this.setState({ resultExists: false })\r\n this.progressBar.complete()\r\n this.props.snackbarMessage('Notice Text Saved Successfully', 'success');\r\n if (!this.props.options.tabprops) {\r\n this.props.onClose();\r\n }\r\n\r\n }).catch(error => {\r\n this.props.snackbarMessage(JSON.stringify(error), 'error');\r\n this.progressBar.complete()\r\n })\r\n }\r\n else {\r\n // this.progressBar.start()\r\n if (this.props.options.tabprops) {\r\n url = update.put.url + this.props.dataItem.Id\r\n }\r\n else {\r\n url = update.put.url + this.props.dataItem.Id\r\n }\r\n putRecordData(url, result).then(res => {\r\n this.setState({ resultExists: false })\r\n this.progressBar.complete()\r\n this.props.snackbarMessage('Notice Text Updated Successfully', 'success');\r\n if (!this.props.options.tabprops) {\r\n this.props.onClose();\r\n }\r\n\r\n }).catch(error => {\r\n this.props.snackbarMessage(JSON.stringify(error), 'error');\r\n this.progressBar.complete()\r\n })\r\n }\r\n\r\n }\r\n\r\n\r\n render() {\r\n const { options } = this.props;\r\n const { headerProps, title } = options;\r\n const { editorState, result } = this.state\r\n return (\r\n <div>\r\n <FormHeader className=\"mx-1\" title={title} handleSave={() => this.callTemplateSave()} savebutton={headerProps.savebutton} closebutton={headerProps.closebutton} handleClose={() => this.props.onClose()} designprops={options.designprops} />\r\n <div className='clearfix' />\r\n <div> <ProgressBar ref={e => this.progressBar = e} /></div>\r\n <div className='pt-1'>\r\n <TemplateForm templateId={editorState} isEnabled={true} mentions={null} entryData={null}\r\n hasSubject={false} ref={this.TemplateForm} handleTemplateId={(editorVal) => { this.handleEditorTemplateId(editorVal) }} isadmin={true} />\r\n </div>\r\n </div>\r\n )\r\n }\r\n}\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage }, dispatch);\r\n}\r\n\r\nNoticeTextTemplate = connect(null, mapActions, null, { forwardRef: true })(NoticeTextTemplate)\r\nexport default withRouter(NoticeTextTemplate)","import React, { Fragment, Component } from 'react';\r\nimport { NumericTextBox } from '@progress/kendo-react-inputs'\r\nimport '@progress/kendo-react-intl'\r\nimport '@progress/kendo-drawing'\r\nimport '@progress/kendo-react-tooltip'\r\nimport '@progress/kendo-react-form'\r\nimport Typography from '@material-ui/core/Typography';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport Numberformat from '../../controls/components/numberformat';\r\nimport DefaultSettings from '../../controls/components/settings';\r\n\r\nclass CNumberFormat extends Component {\r\n\r\n handleChange = (e) => {\r\n // const { handleFieldChange, value, name, id, edit, options, ...otherProps } = this.props\r\n // let events = { target: { value: e.value || value, name: name, checked: false } }\r\n this.props.handleFieldChange(e);\r\n }\r\n\r\n render() {\r\n const { handleFieldChange, defaultValue, value, tooltip, helperText, format, htmlForLabel, name, disabled, min, max, error, required, id,\r\n edit, options, conditions, accessPermissions, contexthelp, accessLevelPermissions, ...otherProps } = this.props\r\n let disabledstatus = conditions && conditions.enable ? conditions.enable : disabled\r\n const { label, xtype } = otherProps\r\n let val = ((value === null) || (value === undefined) || (value === '')) ? 0 : value;\r\n let pvalue = 0\r\n if (xtype === 'P') {\r\n pvalue = value !== 0 ? value : 0\r\n }\r\n if (edit === false) {\r\n if (xtype === 'C') {\r\n let cformat = format ? format > 100 ? 2 : format : 2\r\n val = '$' + parseFloat(val).toFixed(cformat)\r\n }\r\n if (xtype === 'DN') {\r\n let cformat = format ? format > 100 ? 2 : format : 2\r\n val = parseFloat(val).toFixed(cformat)\r\n }\r\n if (xtype === 'P') {\r\n val = val + '%';\r\n }\r\n return <div >\r\n {tooltip && <Fragment> <Typography variant={'caption'} className=\"text-secondary\">{label} </Typography> \r\n < Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em' }} onClick={(evt) => contexthelp ?\r\n DefaultSettings.showDrawer(contexthelp) : evt.preventDefault()} />\r\n </Tooltip> <Typography variant={'body2'} color={'textPrimary'} className=\"fw-bold\">{val} </Typography> </Fragment>}\r\n {!tooltip && <Fragment><Typography variant={'caption'} className=\"text-secondary\">{label} </Typography>\r\n <Typography variant={'body2'} color={'textPrimary'} className=\"fw-bold\">{val} </Typography> </Fragment>}\r\n </div>\r\n }\r\n else return (\r\n <Fragment>\r\n <Numberformat\r\n required={required}\r\n disabled={true}\r\n min={min}\r\n max={max}\r\n xtype={xtype}\r\n format={format}\r\n tooltip={tooltip}\r\n error={error}\r\n helperText={helperText}\r\n label={label}\r\n contexthelp={contexthelp}\r\n handleFieldValue={this.handleChange}\r\n />\r\n </Fragment>\r\n // <div>\r\n // {xtype === 'DN' && <FormControl error={error} required={required}>\r\n // {!tooltip && <small className=\"text-secondary\" htmlFor=\"input-with-icon-adornment\">{label}\r\n // </small>}\r\n // {tooltip && <small className=\"text-secondary\" htmlFor=\"input-with-icon-adornment\">{label} \r\n // < Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n // <HelpOutlineIcon fontSize=\"small\" style={{ fontSize: 12 }} onClick={(evt) => contexthelp ?\r\n // DefaultSettings.showDrawer(contexthelp) : evt.preventDefault()}/>\r\n // </Tooltip></small>}\r\n // <Number\r\n // format={`n${format}` || \"n2\"}\r\n // value={value ? Number(value) : null}\r\n // min={min || 0}\r\n // max={max || 1000}\r\n // disabled={disabledstatus}\r\n // handleFieldValue={this.handleChange}\r\n // />\r\n // {helperText && <FormHelperText>{helperText}</FormHelperText>}\r\n\r\n // </FormControl >}\r\n // {\r\n // xtype === 'P' && <FormControl error={error} required={required}>\r\n // {!tooltip && <small className=\"text-secondary\" htmlFor=\"input-with-icon-adornment\">{label}\r\n // </small>}\r\n // {tooltip && <small className=\"text-secondary\" htmlFor=\"input-with-icon-adornment\">{label}\r\n // < Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n // <HelpOutlineIcon fontSize=\"small\" onClick={(evt) => contexthelp ?\r\n // DefaultSettings.showDrawer(contexthelp) : evt.preventDefault()}/>\r\n // </Tooltip></small>}\r\n\r\n // <label> <NumericTextBox\r\n // // format=\"p\"\r\n // value={pvalue ? Number(pvalue) : null}\r\n // min={min || 0}\r\n // max={max || 1000}\r\n // disabled={disabledstatus}\r\n // onChange={this.handleChange}\r\n // /> % </label>\r\n // {helperText && <FormHelperText>{helperText}</FormHelperText>}\r\n // </FormControl >\r\n // }\r\n // {\r\n // xtype === 'C' && <FormControl error={error} required={required}>\r\n // {!tooltip && <small className=\"text-secondary\" htmlFor=\"input-with-icon-adornment\">{label}\r\n // </small>}\r\n // {tooltip && <small className=\"text-secondary\" htmlFor=\"input-with-icon-adornment\">{label}\r\n // < Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n // <HelpOutlineIcon fontSize=\"small\" onClick={(evt) => contexthelp ?\r\n // DefaultSettings.showDrawer(contexthelp) : evt.preventDefault()}/>\r\n // </Tooltip></small>}\r\n // <NumericTextBox\r\n // format={`c${format}` || \"c\"}\r\n // min={0}\r\n // value={value ? Number(value) : null}\r\n // onChange={this.handleChange}\r\n // />\r\n // {helperText && <FormHelperText>{helperText}</FormHelperText>}\r\n // </FormControl >\r\n // }\r\n // </div >\r\n );\r\n }\r\n}\r\n\r\n\r\nexport default CNumberFormat;\r\n\r\n","/** \r\n *********************************************************\r\n Description: Handles radio button. \r\n Required props: type.\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\n\r\nimport React, { Component, Fragment } from 'react';\r\nimport Radio from '@material-ui/core/Radio';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\n\r\nconst CRadio = (props) => {\r\n const { handleFieldChange, value, name, color, label, labelPlacement } = props\r\n return (\r\n <Fragment>\r\n <FormControlLabel\r\n control={<Radio\r\n color={color || 'primary'}\r\n checked={value || false}\r\n onChange={handleFieldChange}\r\n name={name}\r\n />}\r\n label={label}\r\n labelPlacement={labelPlacement || 'end'}\r\n />\r\n </Fragment>\r\n )\r\n}\r\n\r\n\r\nexport default CRadio;\r\n\r\n\r\n","/**\r\n *********************************************************\r\n Description: Handles radigroup. In the view mode only the selected item label is shown.\r\n Required props: type,items.\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\n\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport FormLabel from '@material-ui/core/FormLabel';\r\nimport Radio from '@material-ui/core/Radio';\r\nimport RadioGroup from '@material-ui/core/RadioGroup';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport React, { Fragment } from 'react';\r\nimport DefaultSettings from '../../controls/components/settings';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n \"& .MuiFormLabel-root\": {\r\n fontSize: '0.7em'\r\n },\r\n \"& .MuiFormGroup-root\": {\r\n display: 'block'\r\n }\r\n }\r\n}));\r\n\r\nconst CRadioGroup = (props) => {\r\n const classes = useStyles();\r\n const { options, value, defaultValue, dropdownvalues, handleFieldChange, tooltip, edit,contexthelp } = props;\r\n const { label, labelcomp, controlcomp, items, name, select, disabled, transformProps, ...otherOptions } = options ? options : {}\r\n let choosen = transformProps || null;\r\n let lists = items && items.length > 0 ? items : dropdownvalues && dropdownvalues.length > 0 ? dropdownvalues : []\r\n const selecteditem = lists && lists.find(each => {\r\n if (choosen) {\r\n // const { key, value, label } = choosen\r\n return each[transformProps.value] === value\r\n }\r\n else return each.options.value === value\r\n }\r\n )\r\n const selecteditemlabel = selecteditem ? (choosen ? transformProps && selecteditem[transformProps.label || transformProps.name] : selecteditem.options.label) : ''\r\n if (edit === false) {\r\n return <Fragment>\r\n {tooltip && <div > <Typography variant={'caption'} className=\"fw-bold\">{label} < Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em' }} onClick={(evt) => contexthelp ?\r\n DefaultSettings.showDrawer(contexthelp) : evt.preventDefault()}/>\r\n </Tooltip></Typography><br />\r\n <Typography variant={'body2'} className=\"text-secondary\" color={'textPrimary'}>{selecteditem ? selecteditemlabel : null} </Typography></div>\r\n }\r\n {!tooltip && <div> <Typography variant={'caption'} className=\"fw-bold\">{label}\r\n </Typography><br /> <Typography className=\"text-secondary\" variant={'body2'} color={'textPrimary'}>{selecteditem ? selecteditemlabel : null} </Typography>\r\n </div>}\r\n </Fragment >\r\n }\r\n else return (\r\n //Updated by vijaya : Added the key 'error' in formhelpertext to display the message in red color.\r\n <Fragment>\r\n <FormControl component=\"fieldset\" required={props.required} className={classes.root} >\r\n {tooltip &&\r\n <FormLabel component={labelcomp}>{label} < Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em' }} onClick={(evt) => contexthelp ?\r\n DefaultSettings.showDrawer(contexthelp) : evt.preventDefault()}/>\r\n </Tooltip></FormLabel>}\r\n {!tooltip &&\r\n <FormLabel component={labelcomp}>{label}</FormLabel>}\r\n <RadioGroup\r\n name={name} className=\"text-secondary\"\r\n value={value || (defaultValue ? defaultValue : '')}\r\n onChange={handleFieldChange}\r\n >\r\n {lists && lists.map(each => {\r\n const { options, key } = each\r\n //const { value, label, name } = options\r\n let value, label\r\n if (transformProps) {\r\n value = each[transformProps.value]\r\n label = each[transformProps.label || transformProps.name]\r\n }\r\n else {\r\n value = options.value\r\n label = options.label\r\n }\r\n return <FormControlLabel key={key || value + 'item'} value={value} control={<Radio />} label={<span style={{ fontSize: '12px' }}>{label}</span>} />\r\n })}\r\n\r\n <FormHelperText error>{props.error && props.helperText}</FormHelperText>\r\n </RadioGroup>\r\n </FormControl>\r\n </Fragment>\r\n )\r\n\r\n}\r\n\r\n\r\n\r\nexport default CRadioGroup;\r\n\r\n\r\n\r\n/**\r\n* {\r\n* type: 'radiogroup',\r\n* options:{\r\n label:'',\r\n labelcomp: \"legend\",\r\n controlcomp:'fieldset',\r\n\r\n items:[{\r\n type:'radio',\r\n options:{\r\n\r\n }\r\n }]\r\n* label: '',\r\n * },\r\n* defaults:{\r\n* theme: 'default'\r\n * }\r\n * }\r\n*/","import React, { useState, useEffect } from 'react'\r\nimport Paper from '@material-ui/core/Paper'\r\nimport TextField from '@material-ui/core/TextField'\r\nimport { withStyles } from '@material-ui/core/styles';\r\n\r\nconst styles = theme => ({\r\n root: {\r\n padding: '20px',\r\n },\r\n})\r\n\r\nconst Minutes = (props) => {\r\n const [value, setValue] = useState(props.value)\r\n\r\n useEffect(() => {\r\n setValue(props.value)\r\n }, [props.value])\r\n\r\n const onChange = (e) => {\r\n if ((e.target.value > 0 && e.target.value < 60) || e.target.value === '') {\r\n let val = ['*', '*', '*', '*', '*']\r\n\r\n if (e.target.value === '') {\r\n val[0] = '0/1';\r\n } else {\r\n val[0] = `0/${e.target.value}`;\r\n }\r\n\r\n props.onChange(val)\r\n }\r\n }\r\n\r\n const classes = props\r\n return (\r\n <Paper className={classes.root}>\r\n <div className=\"col-sm-2 m-2\">\r\n <TextField \r\n label=\"Every minute(s)\"\r\n value={value[1].split('/')[1]} min={1} max={60}\r\n onChange={e => onChange(e)}\r\n type=\"number\"\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n margin=\"normal\" \r\n />\r\n </div>\r\n </Paper >\r\n\r\n )\r\n}\r\n\r\nexport default withStyles(styles)(Minutes);\r\n","import React from 'react'\r\n//import { makeStyles } from '@material-ui/core/styles'\r\nimport { range } from 'ramda'\r\nimport TextField from '@material-ui/core/TextField'\r\n\r\n// const useStyles = makeStyles(theme => ({\r\n// endTimeSelect: {\r\n// marginLeft: '10px'\r\n// }\r\n// }))\r\n\r\nconst ChooseTime = (props) => {\r\n // const classes = useStyles()\r\n\r\n return (\r\n <div className=\"row col-sm-12\">\r\n <TextField\r\n select\r\n value={props.hour}\r\n onChange={props.onAtHourChange}\r\n SelectProps={{\r\n disabled: props.disabled,\r\n native: true,\r\n }}\r\n margin=\"normal\"\r\n >\r\n {range(0, 24).map(m => <option key={m} id={m}>{m.toString().length < 2 ? `0${m}` : m}</option>)}\r\n </TextField>\r\n <div className=\"pt-3\"> hour(s) on minute </div>\r\n <TextField\r\n select\r\n value={props.minute}\r\n onChange={props.onAtMinuteChange}\r\n \r\n SelectProps={{\r\n disabled: props.disabled,\r\n native: true,\r\n }}\r\n margin=\"normal\"\r\n >\r\n {range(0, 60).map(m => <option key={m} id={m}>{m.toString().length < 2 ? `0${m}` : m}</option>)}\r\n </TextField>\r\n </div>\r\n )\r\n}\r\n\r\nexport default ChooseTime\r\n","import React from 'react'\r\n//import { makeStyles } from '@material-ui/core/styles'\r\nimport Card from '@material-ui/core/Card'\r\nimport CardContent from '@material-ui/core/CardContent'\r\nimport Typography from '@material-ui/core/Typography'\r\n\r\n// const useStyles = makeStyles(theme => ({\r\n// card: {\r\n// display: 'flex',\r\n// marginTop: '20px'\r\n// },\r\n// details: {\r\n// display: 'flex',\r\n// flexDirection: 'column',\r\n// },\r\n// content: {\r\n// flex: '1 0 auto',\r\n// },\r\n// }))\r\n\r\nexport default function DisplayCard(props) {\r\n // const classes = useStyles()\r\n\r\n return (\r\n <Card >\r\n <div className=\"col\">\r\n <CardContent >\r\n {props.label && <Typography variant=\"subtitle2\">\r\n {props.label}\r\n </Typography>}\r\n {props.children}\r\n </CardContent>\r\n </div>\r\n </Card>\r\n );\r\n}","import React, { useState, useEffect } from 'react'\r\nimport { range } from 'ramda'\r\nimport Paper from '@material-ui/core/Paper'\r\nimport TextField from '@material-ui/core/TextField'\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel'\r\nimport Radio from '@material-ui/core/Radio'\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport StartTime from './chooseTime'\r\nimport Card from './card'\r\n\r\nconst styles = theme => ({\r\n root: {\r\n padding: '20px',\r\n },\r\n secondaryPaper: {\r\n padding: '20px',\r\n marginTop: '20px'\r\n },\r\n radioBtn: {\r\n marginTop: '20px'\r\n }\r\n})\r\n\r\nconst Daily = (props) => {\r\n const [every, setEvery] = useState()\r\n const [value, setValue] = useState(props.value)\r\n\r\n useEffect(() => {\r\n setValue(props.value)\r\n\r\n }, [props.value])\r\n\r\n useEffect(() => {\r\n const value = props.value\r\n if (value[3] === '?') {\r\n setEvery(false)\r\n } else {\r\n setEvery(true)\r\n }\r\n }, [])\r\n\r\n const onDayChange = (e) => {\r\n if ((e.target.value > 0 && e.target.value < 32) || e.target.value === '') {\r\n let val = [value[0] === '*' ? '0' : value[0], value[1] === '*' ? '0' : value[1], '*', '*', '*'];\r\n if (e.target.value === '') {\r\n val[2] = '1/1';\r\n } else {\r\n val[2] = `1/${e.target.value}`;\r\n }\r\n props.onChange(val)\r\n }\r\n\r\n }\r\n const onAtHourChange = (e) => {\r\n let val = value;\r\n val[1] = `${e.target.value}`;\r\n props.onChange(val)\r\n }\r\n const onAtMinuteChange = (e) => {\r\n let val = value;\r\n val[0] = `${e.target.value}`;\r\n props.onChange(val)\r\n }\r\n\r\n const classes = props;\r\n return (\r\n <div>\r\n <Paper className={classes.root}>\r\n <div className=\"pl-1\">\r\n <Radio\r\n className={classes.radioBtn}\r\n checked={every ? true : false}\r\n onClick={(e) => { setEvery(true); props.onChange() }}\r\n value=\"1\"\r\n name=\"DailyRadio\"\r\n inputProps={{ 'aria-label': 'DailyRadio' }}\r\n />\r\n <TextField\r\n id=\"outlined-number\"\r\n label=\"Every day(s)\"\r\n value={value[2].split('/')[1] ? value[2].split('/')[1] : ''}\r\n onChange={onDayChange}\r\n type=\"number\"\r\n InputLabelProps={{\r\n disabled: every ? false : true,\r\n shrink: true,\r\n }}\r\n margin=\"normal\"\r\n />\r\n </div>\r\n <div className=\"col\">\r\n <FormControlLabel\r\n value=\"top\"\r\n //className=\"col\"\r\n control={<Radio\r\n onClick={(e) => { setEvery(false); props.onChange([value[0], value[1], '*', '*', 'MON-FRI']) }}\r\n value=\"2\"\r\n name=\"DailyRadio\"\r\n checked={every ? false : true}\r\n inputProps={{ 'aria-label': 'DailyRadio' }}\r\n />}\r\n label=\"Every week day\"\r\n labelPlacement=\"right\"\r\n />\r\n </div>\r\n </Paper> \r\n <Card label=\"Start time\">\r\n <StartTime hour={value[1]} minute={value[0]} onAtMinuteChange={onAtMinuteChange} onAtHourChange={onAtHourChange} />\r\n </Card>\r\n </div>\r\n )\r\n}\r\n\r\nexport default withStyles(styles)(Daily)\r\n","import React, { useEffect, useState } from 'react'\r\nimport Paper from '@material-ui/core/Paper'\r\nimport Grid from '@material-ui/core/Grid'\r\nimport TextField from '@material-ui/core/TextField'\r\nimport Radio from '@material-ui/core/Radio'\r\n//import { makeStyles } from '@material-ui/styles'\r\nimport StartTime from './chooseTime'\r\nimport Card from './card'\r\nimport { withStyles } from '@material-ui/core/styles';\r\n\r\nconst styles = theme => ({\r\n root: {\r\n padding: '20px',\r\n },\r\n secondaryPaper: {\r\n padding: '20px',\r\n marginTop: '20px'\r\n },\r\n radioBtn: {\r\n marginTop: '20px'\r\n },\r\n endTimeSelect: {\r\n marginLeft: '10px'\r\n }\r\n})\r\n\r\nconst Hourly = (props) => {\r\n const [value, setValue] = useState(props.value)\r\n\r\n useEffect(() => {\r\n setValue(props.value)\r\n }, [props.value])\r\n\r\n // useEffect(() => {\r\n // const value = props.value;\r\n // }, [])\r\n\r\n const onAtHourChange = (e) => {\r\n let val = [value[0], '*', '1/1', '*', '*']\r\n val[1] = `0/${e.target.value}`;\r\n props.onChange(val)\r\n }\r\n const onAtMinuteChange = (e) => {\r\n let val = ['*', value[1], '1/1', '*', '*']\r\n val[0] = `${e.target.value}`;\r\n props.onChange(val)\r\n }\r\n\r\n const classes = props;\r\n return (\r\n <Paper className={classes.root}>\r\n <div className=\"col\">\r\n <StartTime hour={value[1].split('/')[1] ? value[1].split('/')[1] : ''} minute={value[0]} onAtMinuteChange={onAtMinuteChange} onAtHourChange={onAtHourChange} />\r\n </div>\r\n </Paper>\r\n )\r\n}\r\n\r\nexport default withStyles(styles)(Hourly) \r\n","import React, { useState } from 'react'\r\nimport { range } from 'ramda'\r\nimport Paper from '@material-ui/core/Paper'\r\nimport Grid from '@material-ui/core/Grid'\r\nimport Checkbox from '@material-ui/core/Checkbox'\r\nimport TextField from '@material-ui/core/TextField'\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport StartTime from './chooseTime'\r\nimport Card from './card'\r\n\r\nconst styles = theme => ({\r\n root: {\r\n padding: '20px',\r\n },\r\n secondaryPaper: {\r\n padding: '20px',\r\n marginTop: '20px'\r\n },\r\n radioBtn: {\r\n marginTop: '20px'\r\n }\r\n})\r\n\r\nconst Weekly = (props) => {\r\n const [value] = useState(props.value)\r\n\r\n const onAtHourChange = (e) => {\r\n let val = value;\r\n val[1] = `${e.target.value}`;\r\n props.onChange(val)\r\n }\r\n const onAtMinuteChange = (e) => {\r\n let val = value;\r\n val[0] = `${e.target.value}`;\r\n props.onChange(val)\r\n }\r\n\r\n const onCheck = (e) => {\r\n let val = value;\r\n if (e.target.checked) {\r\n val[1] = (`${val[1]}`.split('/').length > 1) ? '0' : val[1].toString();\r\n val[3] = '*';\r\n if (val[4] === '*' || val[4] === 'MON-FRI') {\r\n val[4] = e.target.value;\r\n } else {\r\n val[4] = val[4] + '!' + e.target.value;\r\n }\r\n } else {\r\n val[4] = val[4] .split('!');\r\n if (val[4] .length > 1) {\r\n val[4] .splice(val[4] .indexOf(e.target.value), 1)\r\n val[4] = val[4] .toString().replace(/,/g, '!')\r\n } else {\r\n val[4] = '*';\r\n }\r\n }\r\n\r\n props.onChange(val)\r\n }\r\n\r\n const classes = props\r\n return (\r\n <div>\r\n <Paper className={classes.root}>\r\n <Grid container justify=\"space-evenly\">\r\n <Grid item justify=\"flex-start\">\r\n <Checkbox color=\"primary\" type=\"checkbox\" value=\"MON\" onChange={onCheck} checked={(value[4].search('MON') !== -1) ? true : false} /> Monday<br />\r\n <Checkbox color=\"primary\" type=\"checkbox\" value=\"WED\" onChange={onCheck} checked={value[4].search('WED') !== -1 ? true : false} /> Wednesday<br />\r\n <Checkbox color=\"primary\" type=\"checkbox\" value=\"FRI\" onChange={onCheck} checked={(value[4].search('FRI') !== -1) ? true : false} /> Friday<br />\r\n <Checkbox color=\"primary\" type=\"checkbox\" value=\"SUN\" onChange={onCheck} checked={value[4].search('SUN') !== -1 ? true : false} /> Sunday\r\n </Grid>\r\n <Grid item justify=\"flex-start\">\r\n <Checkbox color=\"primary\" type=\"checkbox\" value=\"TUE\" onChange={onCheck} checked={value[4].search('TUE') !== -1 ? true : false} /> Tuesday<br />\r\n <Checkbox color=\"primary\" type=\"checkbox\" value=\"THU\" onChange={onCheck} checked={value[4].search('THU') !== -1 ? true : false} /> Thursday<br />\r\n <Checkbox color=\"primary\" type=\"checkbox\" value=\"SAT\" onChange={onCheck} checked={value[4].search('SAT') !== -1 ? true : false} /> Saturday\r\n <br /><br />\r\n </Grid>\r\n </Grid>\r\n </Paper>\r\n \r\n <Card label=\"Start time\">\r\n <StartTime hour={value[1]} minute={value[0]} onAtMinuteChange={onAtMinuteChange} onAtHourChange={onAtHourChange} />\r\n </Card>\r\n </div>)\r\n}\r\n\r\nexport default withStyles(styles)(Weekly)\r\n","import React, { useState, useEffect, Fragment } from 'react'\r\nimport Paper from '@material-ui/core/Paper'\r\nimport Radio from '@material-ui/core/Radio'\r\nimport TextField from '@material-ui/core/TextField'\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel'\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport StartTime from './chooseTime'\r\nimport Card from './card'\r\n\r\nconst styles = theme => ({\r\n root: {\r\n padding: '20px',\r\n },\r\n secondaryPaper: {\r\n padding: '20px',\r\n marginTop: '20px'\r\n },\r\n radioBtn: {\r\n marginTop: '20px'\r\n }\r\n})\r\n\r\nconst Monthly = (props) => {\r\n const [every, setEvery] = useState()\r\n const [value, setValue] = useState(props.value)\r\n\r\n useEffect(() => {\r\n setValue(props.value)\r\n }, [props.value])\r\n\r\n useEffect(() => {\r\n const { value } = props\r\n if (value[2] === 'L')\r\n setEvery(\"2\")\r\n else if (value[2] === 'LW')\r\n setEvery(\"3\")\r\n else if (value[2].startsWith('L'))\r\n setEvery(\"4\")\r\n else\r\n setEvery(\"2\")\r\n }, [])\r\n\r\n\r\n const onDayChange = (e) => {\r\n if (((parseInt(e.target.value) > 0 && parseInt(e.target.value) <= 31)) || e.target.value === \"\") {\r\n let val = [value[0] === '*' ? '0' : value[0], value[1] === '*' ? '0' : value[1], value[2], value[3], '*'];\r\n if (e.target.value === '') {\r\n val[2] = '1'\r\n } else {\r\n val[2] = `${e.target.value}`;\r\n }\r\n props.onChange(val)\r\n }\r\n }\r\n\r\n const onMonthChange = (e) => {\r\n if (((parseInt(e.target.value) > 0 && parseInt(e.target.value) <= 12)) || e.target.value === \"\") {\r\n let val = [value[0] === '*' ? '0' : value[0], value[1] === '*' ? '0' : value[1], value[2], '1/1', '*'];\r\n if (e.target.value === '') {\r\n val[3] = '1/1'\r\n } else {\r\n val[3] = `1/${e.target.value}`;\r\n }\r\n props.onChange(val)\r\n }\r\n }\r\n\r\n const onLastDayChange = (e) => {\r\n if (((parseInt(e.target.value) >> 0 && parseInt(e.target.value) <= 31)) || e.target.value === \"\") {\r\n let val = [value[0] === '*' ? '0' : value[0], value[1] === '*' ? '0' : value[1], value[2], '1/1', '*'];\r\n if (e.target.value === '') {\r\n val[2] = 'L-1'\r\n } else {\r\n val[2] = `L-${e.target.value}`;\r\n }\r\n props.onChange(val)\r\n }\r\n }\r\n const onAtHourChange = (e) => {\r\n let val = value;\r\n val[1] = `${e.target.value}`;\r\n props.onChange(val)\r\n }\r\n const onAtMinuteChange = (e) => {\r\n let val = value;\r\n val[0] = `${e.target.value}`;\r\n props.onChange(val)\r\n }\r\n\r\n const classes = props\r\n return (<div className=\"tab-pane\" >\r\n <Paper className={classes.root}>\r\n <Radio style={{ paddingLeft: '14px' }}\r\n className={classes.radioBtn}\r\n onChange={(e) => { setEvery(e.target.value); props.onChange([value[0] === '*' ? '0' : value[0], value[1] === '*' ? '0' : value[1], '1', value[3] === '*' ? '1/1' : value[3], '*']) }}\r\n value=\"1\"\r\n name=\"MonthlyRadio\"\r\n checked={every === \"1\" ? true : false}\r\n inputProps={{ 'aria-label': 'DailyRadio' }}\r\n />\r\n <span> On the </span>\r\n <TextField\r\n id=\"outlined-number\"\r\n label=\"Day of\"\r\n disabled={every === \"1\" ? false : true}\r\n value={value[2]}\r\n onChange={onDayChange}\r\n type=\"number\"\r\n InputLabelProps={{\r\n readOnly: every !== \"1\",\r\n shrink: true,\r\n }}\r\n margin=\"normal\"\r\n />\r\n <span> of every </span>\r\n <TextField\r\n id=\"outlined-monthly-number\"\r\n label=\"Month(s)\"\r\n disabled={every === \"1\" ? false : true}\r\n value={value[3].split('/')[1] ? value[3].split('/')[1] : ''}\r\n onChange={onMonthChange}\r\n type=\"number\"\r\n InputLabelProps={{\r\n readOnly: every !== \"1\",\r\n shrink: true,\r\n }}\r\n margin=\"normal\"\r\n />\r\n <div className=\"col\">\r\n <FormControlLabel\r\n value=\"top\"\r\n control={<Radio\r\n onChange={(e) => { setEvery(e.target.value); props.onChange([value[0] === '*' ? '0' : value[0], value[1] === '*' ? '0' : value[1], 'L', '*', '*']) }}\r\n value=\"2\"\r\n name=\"DailyRadio\"\r\n checked={every === \"2\" ? true : false}\r\n inputProps={{ 'aria-label': 'DailyRadio' }}\r\n />}\r\n label=\"Last day of every month\"\r\n labelPlacement=\"right\"\r\n />\r\n </div>\r\n <div className=\"col\">\r\n <FormControlLabel\r\n value=\"top\"\r\n control={<Radio\r\n onChange={(e) => { setEvery(e.target.value); props.onChange([value[0] === '*' ? '0' : value[0], value[1] === '*' ? '0' : value[1], 'LW', '*', '*']) }}\r\n value=\"3\"\r\n name=\"DailyRadio\"\r\n checked={every === \"3\" ? true : false}\r\n inputProps={{ 'aria-label': 'DailyRadio' }}\r\n />}\r\n label=\"On the last weekday of every month\"\r\n labelPlacement=\"right\"\r\n />\r\n </div>\r\n <div className='pl-1'>\r\n <Radio\r\n className={classes.radioBtn}\r\n onChange={(e) => { setEvery(e.target.value); props.onChange([value[0] === '*' ? '0' : value[0], value[1] === '*' ? '0' : value[1], `L-${1}`, '*', '*']) }}\r\n value=\"4\"\r\n name=\"MonthlyRadio\"\r\n checked={every === \"4\" ? true : false}\r\n inputProps={{ 'aria-label': 'MonthlyRadio' }}\r\n />\r\n <TextField\r\n id=\"outlined-number\"\r\n label=\"Day(s) before the end of the month\"\r\n value={value[2].split('-')[1]}\r\n onChange={onLastDayChange}\r\n type=\"number\"\r\n InputLabelProps={{\r\n readOnly: every !== \"4\",\r\n shrink: true,\r\n }}\r\n margin=\"normal\"\r\n />\r\n </div>\r\n \r\n </Paper>\r\n <br />\r\n <Card label=\"Start time\">\r\n <StartTime hour={value[1]} minute={value[0]} onAtMinuteChange={onAtMinuteChange} onAtHourChange={onAtHourChange} />\r\n </Card>\r\n </div>)\r\n}\r\n\r\nexport default withStyles(styles)(Monthly)\r\n","import React, { Component } from 'react';\r\n\r\nexport default class Cron extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n };\r\n }\r\n\r\n\r\n render() {\r\n return (<div>\r\n \r\n yearly\r\n </div>)\r\n }\r\n}\r\n","import React from 'react'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport Card from '@material-ui/core/Card'\r\nimport CardContent from '@material-ui/core/CardContent'\r\nimport Typography from '@material-ui/core/Typography'\r\n\r\n// const useStyles = makeStyles(theme => ({\r\n// card: {\r\n// display: 'flex',\r\n// },\r\n// details: {\r\n// display: 'flex',\r\n// flexDirection: 'column',\r\n// },\r\n// content: {\r\n// flex: '1 0 auto',\r\n// },\r\n// cover: {\r\n// width: 151,\r\n// },\r\n// controls: {\r\n// display: 'flex',\r\n// alignItems: 'center',\r\n// paddingLeft: theme.spacing(1),\r\n// paddingBottom: theme.spacing(1),\r\n// },\r\n// playIcon: {\r\n// height: 38,\r\n// width: 38,\r\n// },\r\n// }));\r\n\r\nexport default function DisplayCard(props) {\r\n // const classes = useStyles();\r\n\r\n return (\r\n <Card className=\"col-sm-12\">\r\n <div >\r\n <CardContent >\r\n <Typography component=\"h5\" variant=\"h5\">\r\n Execute At:\r\n </Typography>\r\n {props.textResult && <Typography variant=\"subtitle1\" color=\"textPrimary\">\r\n {props.textResult}\r\n </Typography>}\r\n {/* {props.cronResult && <Typography variant=\"subtitle1\" color=\"textSecondary\">\r\n Cron: {props.cronResult}\r\n </Typography>} */}\r\n </CardContent>\r\n </div>\r\n </Card>\r\n );\r\n}","import React, { useState, useEffect } from 'react'\r\nimport cronstrue from 'cronstrue'\r\nimport AppBar from '@material-ui/core/AppBar'\r\nimport Tabs from '@material-ui/core/Tabs'\r\nimport Tab from '@material-ui/core/Tab'\r\nimport Grid from '@material-ui/core/Grid'\r\nimport { makeStyles } from '@material-ui/styles'\r\nimport Minutes from './minutes'\r\nimport Daily from './daily'\r\nimport Hourly from './hourly'\r\nimport Weekly from './weekly'\r\nimport Monthly from './monthly'\r\nimport Yearly from './yearly'\r\nimport DisplayCard from './displayCard'\r\nconst tabs = ['Minutes', 'Hourly', 'Daily', 'Weekly', 'Monthly'] //,'Yearly'\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n displayCard: {\r\n marginTop: '20px'\r\n },\r\n}))\r\n\r\nconst isQuartzCron = (config) => { return config.cronType === 'quartz'; }\r\nconst isStandardCron = (config) => { return config.cronType === 'standard'; }\r\nconst yearDefaultChar = (config) => { return config.cronType === 'quartz' ? \"*\" : \"\"; }\r\nconst weekDayDefaultChar = (config) => { return config.cronType === 'quartz' ? \"?\" : \"*\"; }\r\nconst monthDayDefaultChar = (config) => { return config.cronType === 'quartz' ? \"?\" : \"*\"; }\r\n\r\nconst Cron = (props) => {\r\n const [value, setValue] = useState(['0', '0', '1/1', '*', '*'])\r\n const [selectedTab, setSelectedTab] = useState(0)\r\n const [selectedTabValue, setSelectedTabValue] = useState(0)\r\n\r\n useEffect(() => {\r\n if (!props.value || (props.value !== -1 && props.value.split(' ').length !== 7)) {\r\n setValue(['0', '0', '1/1', '*', '*'])\r\n setSelectedTab(tabs[0])\r\n setSelectedTabValue(0)\r\n\r\n parentChange(value)\r\n } else {\r\n if (props.value !== -1 && props.value)\r\n setValue(props.value.replace(/,/g, '!').split(' '))\r\n }\r\n let val = value;\r\n if ((val[1].search('/') !== -1) && (val[2] === '*') && (val[3] === '1/1')) {\r\n setSelectedTab(tabs[0])\r\n setSelectedTabValue(0)\r\n } else if ((val[3] === '1/1')) {\r\n setSelectedTab(tabs[1])\r\n setSelectedTabValue(1)\r\n } else if ((val[3].search('/') !== -1) || (val[5] === 'MON-FRI')) {\r\n setSelectedTab(tabs[2])\r\n setSelectedTabValue(2)\r\n } else if (val[3] === '?') {\r\n setSelectedTab(tabs[3])\r\n setSelectedTabValue(3)\r\n } else if (val[3].startsWith('L') || val[4] === '1/1') {\r\n setSelectedTab(tabs[4])\r\n setSelectedTabValue(4)\r\n } else {\r\n setSelectedTab(tabs[0])\r\n setSelectedTabValue(0)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (props.value && props.value !== -1)\r\n setValue(props.value.replace(/,/g, '!').split(' '))\r\n }, [props.value])\r\n\r\n const defaultValue = (tab) => {\r\n switch (tab) {\r\n case tabs[0]:\r\n return ['0/1', '*', '*', '*', '*']\r\n case tabs[1]:\r\n return ['0', '0/1', '1/1', '*', '*']\r\n case tabs[2]:\r\n return ['0', '0', '1/1', '*', '*']\r\n case tabs[3]:\r\n return ['0', '0', '*', '*', '*']\r\n case tabs[4]:\r\n return ['0', '0', '1', '1/1', '*']\r\n case tabs[5]:\r\n return ['0', '0', '1', '1/1', '*']\r\n default:\r\n return\r\n }\r\n }\r\n\r\n const tabChanged = ({ tab, index }) => {\r\n setSelectedTab(tab)\r\n setSelectedTabValue(index)\r\n setValue((value !== -1 && value) ? value : defaultValue(tab))\r\n parentChange((value !== -1 && value) ? value : defaultValue(tab))\r\n }\r\n\r\n const getHeaders = () => {\r\n // const TabPanel = (props) => {\r\n // const { children, value, index, ...other } = props\r\n\r\n // return (\r\n // <Typography\r\n // component=\"div\"\r\n // role=\"tabpanel\"\r\n // hidden={value !== index}\r\n // id={`simple-tabpanel-${index}`}\r\n // aria-labelledby={`simple-tab-${index}`}\r\n // {...other}\r\n // >\r\n // <Box p={3}>{children}</Box>\r\n // </Typography>\r\n // )\r\n // }\r\n\r\n const 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\n return (\r\n <>\r\n <AppBar position=\"static\">\r\n <Tabs value={selectedTabValue} variant=\"scrollable\" scrollButtons=\"auto\" aria-label=\"simple tabs example\">\r\n {tabs.map((tab, index) =>\r\n <Tab key={index} label={tab} {...a11yProps(index)} onClick={() => tabChanged({ tab, index })} />\r\n )}\r\n </Tabs>\r\n </AppBar>\r\n {/* {tabs.map((d, i) =>\r\n <TabPanel key={i} value={selectedTabValue} index={i}>\r\n {d}\r\n </TabPanel>\r\n )} */}\r\n </>\r\n )\r\n }\r\n\r\n const onValueChange = (val) => {\r\n console.log('val', val)\r\n if (val && val.length) {\r\n setValue(val)\r\n } else {\r\n setValue(['0', '0', '1/1', '*', '*'])\r\n val = ['0', '0', '1/1', '*', '*'];\r\n }\r\n parentChange(val)\r\n }\r\n\r\n const parentChange = (val) => {\r\n let newVal = ''\r\n newVal = val.toString().replace(/,/g, ' ')\r\n newVal = newVal.replace(/!/g, ',')\r\n console.log('newVal', newVal);\r\n props.onChange(newVal)\r\n }\r\n\r\n const getVal = () => {\r\n if (props && props.value && props.value !== -1 && props.value.split(' ').length >= 6) {\r\n let retval = cronstrue.toString(props.value.toString().replace(/,/g, ' ').replace(/!/g, ','))\r\n return retval;\r\n }\r\n let val = cronstrue.toString(value.toString().replace(/,/g, ' ').replace(/!/g, ','))\r\n if (val.search('undefined') === -1) {\r\n return val;\r\n }\r\n return '-'\r\n }\r\n\r\n const getComponent = (tab) => {\r\n switch (tab) {\r\n case tabs[0]:\r\n return <Minutes value={value} onChange={onValueChange} />\r\n case tabs[1]:\r\n return <Hourly value={value} onChange={onValueChange} />\r\n case tabs[2]:\r\n return <Daily value={value} onChange={onValueChange} />\r\n case tabs[3]:\r\n return <Weekly value={value} onChange={onValueChange} />\r\n case tabs[4]:\r\n return <Monthly value={value} onChange={onValueChange} />\r\n case tabs[5]:\r\n return <Yearly value={value} onChange={onValueChange} />\r\n default:\r\n return\r\n }\r\n }\r\n const classes = useStyles()\r\n return (\r\n <>\r\n <Grid container>\r\n <Grid item xs={12}>\r\n <div>\r\n {getHeaders()}\r\n </div>\r\n <div className=\"\">{getComponent(selectedTab)}</div>\r\n </Grid>\r\n </Grid>\r\n {(props.showResultText || props.showResultCron) &&\r\n <Grid container justify=\"center\" className={classes.displayCard}>\r\n <Grid item xs={12} sm={12} lg={12}>\r\n <DisplayCard\r\n textResult={props.showResultText && getVal()}\r\n cronResult={props.showResultCron && value.toString().replace(/,/g, ' ').replace(/!/g, ',')}\r\n />\r\n </Grid>\r\n </Grid>\r\n }\r\n </>\r\n )\r\n}\r\n\r\nexport default Cron\r\n","import React, { Component } from 'react'\r\nimport Cron from './lib'\r\n/*\r\nSource : https://github.com/dealmeddevs/react-cron-generator;\r\nInitial setup: Pooja\r\nextended by : Narendra\r\n*/\r\nclass CronComponent extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n value: this.props.value\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevProps.value !== this.props.value) {\r\n this.setState({ value: this.props.value })\r\n }\r\n }\r\n\r\n render() {\r\n\r\n return (<div >\r\n <Cron\r\n onChange={(e) => { this.props.onChange(e) }}\r\n value={this.state.value}\r\n showResultText={true}\r\n showResultCron={true}\r\n />\r\n </div>)\r\n }\r\n\r\n}\r\n\r\nexport default CronComponent\r\n","/**\r\n *********************************************************\r\n Deprecated and the csheduler inbuild api might be wrong.\r\n *********************************************************\r\n **/\r\n\r\n import React, { Component } from 'react'\r\n //import Cron from 'react-cron-generator'\r\n import Cron from '../corn_generator'\r\n import 'react-cron-generator/dist/cron-builder.css'\r\n import FormHeader from '../form/cformheader';\r\n import { HashRouter as Router, Switch, Route, withRouter } from 'react-router-dom';\r\n import { PostData, PutData, GetData } from '../../controls/helpers/requests';\r\n import { getEnvVariable } from '../../../modules/environmentalList';\r\n \r\n \r\n \r\n class CScheduler extends Component {\r\n \r\n \r\n \r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n results: {},\r\n value: null\r\n };\r\n }\r\n \r\n componentDidMount() {\r\n if (this.props.dataItem) {\r\n const url = getEnvVariable('Notification') + `/api/NotificationScheduling/Schedule/${this.props.dataItem.ID}`\r\n this.fetchData('GET', url, null, this.state.results).then(data => {\r\n this.setState({\r\n value: data.ScheduledOn,\r\n results: data\r\n })\r\n })\r\n }\r\n }\r\n \r\n fetchData(requestType, url, queryParam, body) {\r\n const queryStr = queryParam != null ? `${url}?${queryParam}` : `${url}`\r\n \r\n if (requestType == \"GET\") {\r\n return GetData(queryStr);\r\n }\r\n else if (requestType == \"POST\") {\r\n return PostData(queryStr, body);\r\n }\r\n else if (requestType == \"PUT\")\r\n return PutData(queryStr, body);\r\n }\r\n \r\n \r\n onhandleSave = (e) => {\r\n const url = getEnvVariable('Notification') + `/api/NotificationScheduling/SaveSchedule/${this.props.dataItem.ID}`\r\n this.fetchData('PUT', url, null, this.state.results).then(data => this.setState({\r\n value: data.ScheduledOn\r\n }))\r\n }\r\n \r\n handleChange = (e) => {\r\n this.setState({\r\n value: -1,\r\n }, () => {\r\n this.setState({ value: e, results: { ...this.state.results, ScheduledOn: e } }, () => {\r\n let event = { target: { value: this.state.value, name: this.props.name, checked: false }, currentTarget: { dataset: null } }\r\n this.props.handleFieldValue(event)\r\n })\r\n });\r\n }\r\n \r\n render() {\r\n const { options } = this.props\r\n \r\n return (<div className=\"row w-100 h-100\">\r\n <div className=\"col-md-12\">\r\n {options && options.headerProps && <FormHeader title={options && options.title || ''} handleSave={this.onhandleSave}\r\n savebutton={options && options.headerProps.savebutton} designprops={true} />}\r\n </div>\r\n <div className=\"col-md-12\">\r\n {(<Cron\r\n onChange={this.handleChange}\r\n value={this.state.value || this.props.value}\r\n />)}\r\n </div>\r\n </div>)\r\n }\r\n }\r\n \r\n export default withRouter(CScheduler);\r\n","/**\r\n *********************************************************\r\n Currently not used anywhere.\r\n *********************************************************\r\n**/\r\n\r\nimport React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardActionArea from '@material-ui/core/CardActionArea';\r\nimport CardActions from '@material-ui/core/CardActions';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport CardMedia from '@material-ui/core/CardMedia';\r\nimport Button from '@material-ui/core/Button';\r\nimport Typography from '@material-ui/core/Typography';\r\n\r\nconst styles = {\r\n card: {\r\n\r\n }\r\n};\r\n\r\nclass CSectionCard extends Component {\r\n\r\n passPropsToOtherFields = (values, name) => {\r\n const { options } = this.props\r\n const { forwardProps } = options\r\n }\r\n render() {\r\n const { classes } = this.props;\r\n const { components, options, compmap } = this.props\r\n const { forwardProps } = options\r\n return (\r\n <Card className={classes.card}>\r\n <CardContent>\r\n <div className=\"row\">\r\n {components.map((each, index) => {\r\n const { type, key, options, name } = each\r\n const { width, sendProps, receiveProps } = options\r\n const EachComp = compmap[type]\r\n if (sendProps && receiveProps) {\r\n return <div className={'col-' + width} key={key}>\r\n <EachComp compmap={compmap} key={key} {...each} passPropsToOtherFields={this.passPropsToOtherFields} receiveProps={this.state[name].receiveProps} />\r\n </div>\r\n }\r\n if (sendProps) {\r\n return <div className={'col-' + width} key={key}>\r\n <EachComp compmap={compmap} key={key} {...each} passPropsToOtherFields={this.passPropsToOtherFields} />\r\n </div>\r\n }\r\n if (receiveProps) {\r\n return <div className={'col-' + width} key={key}>\r\n <EachComp compmap={compmap} key={key} {...each} receiveProps={this.state[name].receiveProps} />\r\n </div>\r\n }\r\n\r\n })}\r\n </div>\r\n </CardContent>\r\n {/* <CardActions>\r\n <Button size=\"small\" color=\"primary\">\r\n Share\r\n </Button>\r\n <Button size=\"small\" color=\"primary\">\r\n Learn More\r\n </Button>\r\n </CardActions> */}\r\n </Card>\r\n );\r\n }\r\n\r\n}\r\n\r\nCSectionCard.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n};\r\n\r\nexport default withStyles(styles)(CSectionCard);","import { getEnvVariable } from '../../modules/environmentalList'\r\nconst iwsusersignin =\r\n{\r\n \"type\": \"popupbutton\",\r\n \"key\": \"iwssignin\",\r\n \"order\": 3,\r\n \"options\": {\r\n responsivescreen: true,\r\n \"alignitem\": \"right\",\r\n \"buttonprops\":\r\n {\r\n \"text\": \"iws Sign In\",\r\n \"style\": {\r\n \"color\": \"#fafafa\",\r\n \"backgroundColor\": '#212529 !important'\r\n }\r\n },\r\n \"dialogprops\": {\r\n \"maxWidth\": 'xs',\r\n },\r\n conditions: {\r\n\r\n }\r\n },\r\n \"components\": [\r\n {\r\n \"type\": \"signupform\",\r\n \"options\": {\r\n \"steps\": 19,\r\n \"initialstep\": 2,\r\n },\r\n \"key\": \"signupformform1\",\r\n \"components\": [\r\n {//1\r\n \"type\": \"form\",\r\n \"key\": \"Username\",\r\n \"options\": {\r\n \"step\": 1,\r\n \"name\": \"form1\",\r\n validations: {\r\n 'form1': {\r\n 'username': [{\r\n validation: 'email',\r\n message: 'username is not valid'\r\n }]\r\n }\r\n },\r\n crud: {\r\n \"rest\": {\r\n \"get\": {\r\n \"url\": getEnvVariable('Auth') + `/api/userauth/Usernameexist`,\r\n \"query\": [{\r\n \"key\": \"portal\",\r\n \"value\": \"I\"\r\n },\r\n {\r\n \"key\": \"userName\",\r\n \"fieldName\": \"username\",\r\n \"value\": \"IWA\"\r\n }\r\n ]\r\n }\r\n },\r\n }\r\n },\r\n \"components\": [\r\n {\r\n \"type\": \"text\",\r\n \"order\": 1,\r\n \"key\": \"SignIn\",\r\n \"options\": {\r\n \"text\": \"Sign In\",\r\n \"name\": \"usernamesignin\",\r\n \"align\": \"center\",\r\n \"style\": {\r\n \"fontSize\": \"25px\",\r\n \"fontWeight\": \"bold\",\r\n }\r\n }\r\n },\r\n {\r\n \"type\": \"etext\",\r\n \"order\": 2,\r\n \"key\": \"passwordmessage\",\r\n \"options\": {\r\n \"text\": \"\",\r\n \"name\": \"passwordmessage\",\r\n \"error\": true\r\n }\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"margin\": \"normal\",\r\n \"variant\": \"outlined\",\r\n \"id\": \"outlined-required\",\r\n \"order\": 3,\r\n \"key\": \"username\",\r\n \"options\": {\r\n // \"placeholder\": \"Username\",\r\n \"name\": \"username\",\r\n \"label\": \"Username\"\r\n }\r\n },\r\n\r\n {\r\n \"type\": \"navformbutton\",\r\n \"order\": 4,\r\n \"key\": \"nextbutton\",\r\n \"options\": {\r\n \"jumptostep\": 2,\r\n \"text\": \"Next\",\r\n \"variant\": \"contained\",\r\n \"color\": \"primary\",\r\n \"name\": \"usernamebutton\"\r\n }\r\n },\r\n {\r\n \"type\": \"navlink\",\r\n \"order\": 5,\r\n \"key\": \"forgotusername\",\r\n \"options\": {\r\n \"jumptostep\": 3,\r\n \"text\": \"Forgot your Username?\",\r\n \"name\": \"usernameforgotlink\"\r\n }\r\n }\r\n ]\r\n },\r\n {//2\r\n \"type\": \"form\",\r\n \"key\": \"siginpassowrdform\",\r\n \"options\": {\r\n \"step\": 2,\r\n \"name\": \"form2\",\r\n \"link\": {\r\n \"url\": \"/notifications\"\r\n },\r\n formdata: true,\r\n crud: {\r\n \"rest\": {\r\n \"post\": {\r\n \"url\": getEnvVariable('ConnectToken') + ``,\r\n \"body\": [\r\n {\r\n \"key\": \"username\",\r\n \"fieldName\": \"username\",\r\n \"value\": \"IWA\"\r\n },\r\n {\r\n \"key\": \"password\",\r\n \"fieldName\": \"password\",\r\n \"value\": \"IWA\"\r\n },\r\n {\r\n \"key\": \"portal\",\r\n \"value\": \"I\"\r\n },\r\n {\r\n \"key\": \"module\",\r\n \"value\": getEnvVariable('ModuleKey')\r\n },\r\n {\r\n \"key\": \"grant_type\",\r\n \"value\": \"password\"\r\n }\r\n ]\r\n }\r\n },\r\n },\r\n },\r\n \"components\": [\r\n {\r\n \"type\": \"text\",\r\n \"order\": 1,\r\n \"key\": \"Passwordtext\",\r\n \"options\": {\r\n \"text\": \"Sign In\",\r\n \"name\": \"passwordsignin\",\r\n \"align\": \"center\",\r\n \"style\": {\r\n \"fontSize\": \"25px\",\r\n \"fontWeight\": \"bold\",\r\n }\r\n }\r\n },\r\n {\r\n \"type\": \"etext\",\r\n \"order\": 2,\r\n \"key\": \"passwordmessage\",\r\n \"options\": {\r\n \"text\": \"\",\r\n \"name\": \"passwordmessage\",\r\n \"error\": true\r\n }\r\n },\r\n // {\r\n // \"type\": \"formtextbox\",\r\n // \"margin\": \"normal\",\r\n // \"variant\": \"outlined\",\r\n // \"id\": \"outlined-required\",\r\n // \"order\": 3,\r\n // \"key\": \"username\",\r\n // \"options\": {\r\n // // \"placeholder\": \"Username\",\r\n // \"name\": \"username\",\r\n // \"label\": \"Username\"\r\n // }\r\n // },\r\n // {\r\n // \"type\": \"formtextbox\",\r\n // \"order\": 4,\r\n // \"key\": \"passwordformtextbox\",\r\n // \"margin\": \"normal\",\r\n // \"variant\": \"outlined\",\r\n // \"id\": \"outlined-required\",\r\n // \"options\": {\r\n // //\"placeholder\": \"Password\",\r\n // \"name\": \"password\",\r\n // \"label\": \"Password\",\r\n // \"xtype\": \"password\"\r\n // }\r\n // },\r\n {\r\n \"type\": \"navformbutton\",\r\n \"order\": 5,\r\n \"key\": \"passwordsigninbutton\",\r\n \"options\": {\r\n \"text\": \"Sign In\",\r\n \"jumptostep\": 14,\r\n \"jumptofalsestep\": 16,\r\n \"route\": \"/\",\r\n \"name\": \"passwordbutton\",\r\n \"variant\": \"contained\",\r\n \"color\": \"primary\"\r\n }\r\n },\r\n {\r\n \"type\": \"navlink\",\r\n \"order\": 6,\r\n \"key\": \"forgotusername\",\r\n \"options\": {\r\n \"jumptostep\": 3,\r\n \"text\": \"Forgot your Username?\",\r\n \"name\": \"usernameforgotlink\"\r\n }\r\n },\r\n {\r\n \"type\": \"navlink\",\r\n \"order\": 7,\r\n \"key\": \"passwordforgotpasswordtext\",\r\n \"options\": {\r\n \"jumptostep\": 4,\r\n \"text\": \"Forgot your Password?\",\r\n \"name\": \"passwordforgotlink\"\r\n }\r\n }\r\n ]\r\n },\r\n {//3\r\n \"type\": \"form\",\r\n \"key\": \"forgotusernameform\",\r\n \"options\": {\r\n \"step\": 3,\r\n \"name\": \"form3\",\r\n crud: {\r\n \"rest\": {\r\n \"post\": {\r\n \"url\": getEnvVariable('Auth') + `/api/UserAuth/ForgotUserName`,\r\n \"body\": [\r\n {\r\n \"key\": \"Email\",\r\n \"fieldName\": \"emailaddressusername\"\r\n }, {\r\n \"key\": \"Portal\",\r\n \"value\": \"I\"\r\n }\r\n\r\n ]\r\n }\r\n },\r\n }\r\n },\r\n \"components\": [\r\n {\r\n \"type\": \"text\",\r\n \"order\": 1,\r\n \"key\": \"forgotusernameSignIn\",\r\n \"options\": {\r\n \"text\": \"Forgot Your Username?\",\r\n \"name\": \"emailaddress\",\r\n \"align\": \"center\",\r\n \"style\": {\r\n \"fontSize\": \"25px\",\r\n \"fontWeight\": \"bold\",\r\n }\r\n }\r\n },\r\n {\r\n \"type\": \"etext\",\r\n \"order\": 2,\r\n \"key\": \"passwordmessage\",\r\n \"options\": {\r\n \"text\": \"\",\r\n \"name\": \"passwordmessage\",\r\n \"error\": true\r\n }\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"order\": 3,\r\n \"key\": \"forgotusernameusername\",\r\n \"variant\": \"outlined\",\r\n \"options\": {\r\n \"placeholder\": \"Enter your Email Address\",\r\n \"name\": \"emailaddressusername\",\r\n \"xtype\": \"email\",\r\n }\r\n },\r\n {\r\n \"type\": \"navformbutton\",\r\n \"order\": 4,\r\n \"key\": \"forgotusernamenextbutton\",\r\n \"options\": {\r\n \"jumptostep\": 5,\r\n \"jumptofalsestep\": 7,\r\n \"text\": \"Next\",\r\n \"color\": \"primary\",\r\n \"variant\": \"contained\",\r\n \"name\": \"emailaddressnextbtn\",\r\n\r\n }\r\n }\r\n ]\r\n },\r\n {//4\r\n \"type\": \"form\",\r\n \"key\": \"forgotpasswordform3\",\r\n \"options\": {\r\n \"step\": 4,\r\n \"name\": \"form4\",\r\n crud: {\r\n \"rest\": {\r\n \"post\": {\r\n \"url\": getEnvVariable('Auth') + `/api/UserAuth/` + getEnvVariable('ModuleKey') + `/ForgotPassword`,\r\n \"body\": [\r\n {\r\n \"key\": \"Module\",\r\n \"value\": getEnvVariable('ModuleKey')\r\n },\r\n {\r\n \"key\": \"Email\",\r\n \"fieldName\": \"Email\"\r\n }, {\r\n \"key\": \"Portal\",\r\n \"value\": \"I\"\r\n }\r\n\r\n ]\r\n }\r\n },\r\n }\r\n },\r\n \"components\": [\r\n {\r\n \"type\": \"text\",\r\n \"order\": 1,\r\n \"key\": \"forgotpasswordtext\",\r\n \"options\": {\r\n \"text\": \"Forgot Your Password?\",\r\n \"name\": \"passwordemailaddress\",\r\n \"align\": \"center\",\r\n \"style\": {\r\n \"fontSize\": \"25px\",\r\n \"fontWeight\": \"bold\",\r\n }\r\n }\r\n },\r\n {\r\n \"type\": \"etext\",\r\n \"order\": 2,\r\n \"key\": \"passwordmessage\",\r\n \"options\": {\r\n \"text\": \"\",\r\n \"name\": \"passwordmessage\",\r\n \"error\": true\r\n }\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"order\": 3,\r\n \"key\": \"forgotpasswordformtextbox\",\r\n \"variant\": \"outlined\",\r\n \"options\": {\r\n \"placeholder\": \"Enter your Email Address\",\r\n \"name\": \"emailaddresspassword\",\r\n \"validations\": [\r\n {\r\n \"validation\": \"emailAddress\"\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n \"type\": \"navformbutton\",\r\n \"order\": 4,\r\n \"key\": \"okbutton\",\r\n \"options\": {\r\n \"jumptostep\": 6,\r\n \"jumptofalsestep\": 7,\r\n \"text\": \"Next\",\r\n \"name\": \"emailaddressnextbtn1\",\r\n \"variant\": \"contained\",\r\n \"color\": \"primary\",\r\n }\r\n }\r\n ]\r\n },\r\n {//5\r\n \"type\": \"form\",\r\n \"key\": \"forgotusernameokform\",\r\n \"options\": {\r\n \"step\": 5,\r\n \"name\": \"form5\"\r\n },\r\n \"components\": [\r\n {\r\n \"type\": \"text\",\r\n \"order\": 1,\r\n \"key\": \"forgotusernameoktext\",\r\n \"options\": {\r\n \"text\": \"Forgot Your Username?\",\r\n \"name\": \"forgotusername\"\r\n }\r\n },\r\n {\r\n \"type\": \"text\",\r\n \"order\": 1,\r\n \"key\": \"forgotusernameokForgottext\",\r\n \"options\": {\r\n \"text\": \"An email has been sent to your email address\",\r\n \"name\": \"forgotusernametext\"\r\n }\r\n },\r\n {\r\n \"type\": \"navformbutton\",\r\n \"order\": 3,\r\n \"key\": \"forgotusernameokokbutton\",\r\n \"options\": {\r\n \"text\": \"Ok\",\r\n \"name\": \"forgotusernameokbtn\",\r\n \"close\": true,\r\n \"variant\": \"contained\",\r\n \"color\": \"primary\",\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"form\",\r\n \"key\": \"forgotpassowrd\",\r\n \"options\": {\r\n \"step\": 6,\r\n \"name\": \"form6\"\r\n },\r\n \"components\": [\r\n {\r\n \"type\": \"text\",\r\n \"order\": 1,\r\n \"key\": \"forgotpassowrdtext\",\r\n \"options\": {\r\n \"text\": \"Forgot Your Password?\",\r\n \"name\": \"forgotpassword\"\r\n }\r\n },\r\n {\r\n \"type\": \"text\",\r\n \"order\": 1,\r\n \"key\": \"forgotpassowrdForgotPassword\",\r\n \"options\": {\r\n \"text\": \"An email has been sent to your email address\",\r\n \"name\": \"forgotpasswordtext\"\r\n }\r\n },\r\n {\r\n \"type\": \"button\",\r\n \"order\": 3,\r\n \"key\": \"forgotpassowrdokbutton\",\r\n \"options\": {\r\n \"text\": \"Ok\",\r\n \"name\": \"forgotpasswordokbtn\",\r\n \"close\": true,\r\n \"variant\": \"contained\",\r\n \"color\": \"primary\",\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"form\",\r\n \"key\": \"notvalidemailaddressform\",\r\n \"options\": {\r\n \"step\": 7,\r\n \"name\": \"form7\"\r\n },\r\n \"components\": [\r\n {\r\n \"type\": \"text\",\r\n \"order\": 1,\r\n \"key\": \"notvalidemailaddresstext\",\r\n \"options\": {\r\n \"text\": \"Forgot Your Username?\",\r\n \"name\": \"notvalidemailaddress\"\r\n }\r\n },\r\n {\r\n \"type\": \"text\",\r\n \"order\": 1,\r\n \"key\": \"notvalidemailaddresstextinred\",\r\n \"options\": {\r\n \"text\": \"Email address entered is not valid.Please contact support\",\r\n \"name\": \"notvalidemailaddressinred\"\r\n }\r\n },\r\n {\r\n \"type\": \"button\",\r\n \"order\": 3,\r\n \"key\": \"okbutton\",\r\n \"options\": {\r\n \"text\": \"Ok\",\r\n \"name\": \"notvalidemailaddressokbtn\",\r\n \"variant\": \"contained\",\r\n \"color\": \"primary\",\r\n \"close\": true,\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"form\",\r\n \"key\": \"forgotpasswordform1\",\r\n \"options\": {\r\n \"step\": 8,\r\n \"name\": \"form8\"\r\n },\r\n \"components\": [\r\n {\r\n \"type\": \"text\",\r\n \"order\": 1,\r\n \"key\": \"forgotpasswordtext\",\r\n \"options\": {\r\n \"text\": \"Forgot Your Password?\",\r\n \"name\": \"notvalidemailaddresspassword\"\r\n }\r\n },\r\n {\r\n \"type\": \"text\",\r\n \"order\": 1,\r\n \"key\": \"forgotpasswordtextnired\",\r\n \"options\": {\r\n \"text\": \"Email address entered is not valid.Please contact support\",\r\n \"name\": \"notvalidemailaddresspasswordtext\"\r\n }\r\n },\r\n {\r\n \"type\": \"button\",\r\n \"order\": 3,\r\n \"key\": \"forgotpasswordokbutton\",\r\n \"options\": {\r\n \"text\": \"Ok\",\r\n \"name\": \"notvalidemailaddressokbtn\",\r\n \"close\": true,\r\n \"variant\": \"contained\",\r\n \"color\": \"primary\",\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"form\",\r\n \"key\": \"signinpincodeform\",\r\n \"options\": {\r\n \"step\": 9,\r\n \"name\": \"form9\"\r\n },\r\n \"components\": [\r\n {\r\n \"type\": \"text\",\r\n \"order\": 1,\r\n \"key\": \"signinpincodetext\",\r\n \"options\": {\r\n \"text\": \"Sign In\",\r\n \"name\": \"unknowndevice\",\r\n }\r\n },\r\n {\r\n \"type\": \"text\",\r\n \"order\": 1,\r\n \"key\": \"signinpincodetextnotdetected\",\r\n \"options\": {\r\n \"name\": \"unknowndevicetext\",\r\n \"text\": \"The system has detected that you are using an unknown device to signin. An email has been sent to your email address with a pincode please use that pin code to login \"\r\n }\r\n },\r\n {\r\n \"type\": \"button\",\r\n \"order\": 3,\r\n \"key\": \"signinpincodeokbutton\",\r\n \"options\": {\r\n \"name\": \"unknowndeviceOkbtn\",\r\n \"text\": \"Ok\"\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"form\",\r\n \"key\": \"signinpincodepasswordform\",\r\n \"options\": {\r\n \"step\": 10,\r\n \"name\": \"form10\",\r\n \"link\": {\r\n \"url\": \"/notifications\"\r\n },\r\n formdata: true,\r\n crud: {\r\n \"rest\": {\r\n \"post\": {\r\n \"url\": getEnvVariable('ConnectToken') + ``,\r\n \"body\": [\r\n {\r\n \"key\": \"username\",\r\n \"fieldName\": \"username\",\r\n \"value\": \"IWA\"\r\n },\r\n {\r\n \"key\": \"password\",\r\n \"fieldName\": \"password\",\r\n \"value\": \"IWA\"\r\n },\r\n {\r\n \"key\": \"portal\",\r\n \"value\": \"I\"\r\n },\r\n {\r\n \"key\": \"module\",\r\n \"value\": getEnvVariable('ModuleKey')\r\n },\r\n {\r\n \"key\": \"grant_type\",\r\n \"value\": \"password\"\r\n },\r\n {\r\n \"key\": \"randomnumber\",\r\n \"fieldName\": \"pincodevalue\"\r\n }\r\n ]\r\n }\r\n }\r\n }\r\n\r\n },\r\n \"components\": [\r\n {\r\n \"type\": \"text\",\r\n \"order\": 1,\r\n \"key\": \"signinpincodepasswordtext\",\r\n \"options\": {\r\n \"text\": \"Sign In\",\r\n \"name\": \"pincodesignin\",\r\n \"align\": \"center\",\r\n \"style\": {\r\n \"fontSize\": \"25px\",\r\n \"fontWeight\": \"bold\",\r\n }\r\n }\r\n },\r\n {\r\n \"type\": \"dtext\",\r\n \"order\": 2,\r\n \"key\": \"passwordmessage\",\r\n \"options\": {\r\n \"text\": \"\",\r\n \"name\": \"passwordmessage\",\r\n \"error\": true\r\n\r\n }\r\n },\r\n {\r\n \"type\": \"text\",\r\n \"order\": 3,\r\n \"key\": \"signinpincodepasswordpassowrd\",\r\n\r\n \"options\": {\r\n // //\"placeholder\": \"Password\",\r\n \"name\": \"pincodepassword\",\r\n \"text\": \"The system has detected that you are using an unknown device to signin. An email has been sent to your email address with a pincode please use that pin code to login \",\r\n }\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"order\": 4,\r\n \"key\": \"signinpincodepasswordpin\",\r\n \"margin\": \"normal\",\r\n \"variant\": \"outlined\",\r\n \"options\": {\r\n \"name\": \"pincodevalue\",\r\n \"placeholder\": \"Pin Code\"\r\n }\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"order\": 5,\r\n \"key\": \"passwordformtextbox\",\r\n \"margin\": \"normal\",\r\n \"variant\": \"outlined\",\r\n \"id\": \"outlined-required\",\r\n \"options\": {\r\n //\"placeholder\": \"Password\",\r\n \"name\": \"password\",\r\n \"label\": \"Password\",\r\n \"xtype\": \"password\"\r\n }\r\n },\r\n {\r\n \"type\": \"navformbutton\",\r\n \"order\": 6,\r\n \"key\": \"signinpincodepasswordsignin\",\r\n \"options\": {\r\n \"name\": \"pincodepincodesiginbtn\",\r\n \"text\": \"OK\",\r\n \"variant\": \"contained\",\r\n \"color\": \"primary\",\r\n\r\n }\r\n },\r\n {\r\n \"type\": \"navlink\",\r\n \"order\": 7,\r\n \"key\": \"signinpincodeforgotpassword\",\r\n \"options\": {\r\n \"jumptostep\": 4,\r\n \"name\": \"pincodeforgotlink\",\r\n \"text\": \"Forgot Your Password?\"\r\n }\r\n },\r\n // {\r\n // \"type\": \"navlink\",\r\n // \"order\": 7,\r\n // \"key\": \"signinpincoderesendpincode\",\r\n // \"options\": {\r\n // \"name\": \"pincoderesendlink\",\r\n // \"text\": \"Resend pin code\"\r\n // }\r\n // }\r\n ]\r\n },\r\n {\r\n \"type\": \"form\",\r\n \"key\": \"accountlockedform\",\r\n \"options\": {\r\n \"step\": 11,\r\n \"name\": \"form11\"\r\n },\r\n \"components\": [\r\n {\r\n \"type\": \"text\",\r\n \"order\": 1,\r\n \"key\": \"accountlockedtext\",\r\n \"options\": {\r\n \"text\": \"Account Locked\",\r\n \"name\": \"accountlocked\",\r\n \"align\": \"center\",\r\n \"style\": {\r\n \"fontSize\": \"25px\",\r\n \"fontWeight\": \"bold\",\r\n }\r\n }\r\n },\r\n {\r\n \"type\": \"text\",\r\n \"order\": 1,\r\n \"key\": \"accountlockedtextlock\",\r\n \"options\": {\r\n \"name\": \"accountlockedtext\",\r\n \"text\": \"Your account has been locked due to too many unsuccessful login attempts. Please contact Administrator\"\r\n }\r\n },\r\n {\r\n \"type\": \"navformbutton\",\r\n \"order\": 3,\r\n \"key\": \"signinpincodepasswordsignin\",\r\n \"options\": {\r\n \"name\": \"accountlockedokbtn\",\r\n \"text\": \"Ok\",\r\n \"close\": true,\r\n \"variant\": \"contained\",\r\n \"color\": \"primary\",\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"form\",\r\n \"key\": \"expiredpassword\",\r\n \"options\": {\r\n \"step\": 12,\r\n \"name\": \"form12\"\r\n },\r\n \"components\": [\r\n {\r\n \"type\": \"text\",\r\n \"order\": 1,\r\n \"key\": \"expiredpasswordtext\",\r\n \"options\": {\r\n \"text\": \"Password Expired\",\r\n \"name\": \"passwordexpired\",\r\n \"align\": \"center\",\r\n \"style\": {\r\n \"fontSize\": \"25px\",\r\n \"fontWeight\": \"bold\",\r\n }\r\n }\r\n },\r\n {\r\n \"type\": \"text\",\r\n \"order\": 2,\r\n \"key\": \"expiredpasswordtextpassword\",\r\n \"options\": {\r\n \"text\": \"Your password has expired, Email has been sent to emailaddress to change password\",\r\n \"name\": \"passwordexpiredtext\"\r\n }\r\n },\r\n {\r\n \"type\": \"navformbutton\",\r\n \"order\": 3,\r\n \"key\": \"signinpincodepasswordsignin\",\r\n \"options\": {\r\n \"jumptostep\": 2,\r\n \"text\": \"Ok\",\r\n \"variant\": \"contained\",\r\n \"color\": \"primary\",\r\n \"name\": \"passwordexpiredokbtn\"\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"form\",\r\n \"key\": \"changepasswordform\",\r\n \"options\": {\r\n \"step\": 13,\r\n \"name\": \"form13\",\r\n formdata: true,\r\n crud: {\r\n \"rest\": {\r\n \"post\": {\r\n \"url\": getEnvVariable('Auth') + `` + '/api/UserAuth/ResetPassword',\r\n \"body\": [\r\n {\r\n \"key\": \"guid\",\r\n \"fieldName\": \"guid\"\r\n },\r\n {\r\n \"key\": \"password\",\r\n \"fieldName\": \"confirmpassword\"\r\n },\r\n ]\r\n }\r\n }\r\n }\r\n },\r\n \"components\": [\r\n {\r\n \"type\": \"text\",\r\n \"order\": 1,\r\n \"key\": \"changepasswordtext\",\r\n \"options\": {\r\n \"text\": \"Change Password\",\r\n \"name\": \"changepassword\",\r\n \"align\": \"center\",\r\n \"style\": {\r\n \"fontSize\": \"25px\",\r\n \"fontWeight\": \"bold\",\r\n }\r\n }\r\n },\r\n {\r\n \"type\": \"dtext\",\r\n \"order\": 2,\r\n \"key\": \"passwordmessage\",\r\n \"options\": {\r\n \"text\": \"\",\r\n \"name\": \"passwordmessage\",\r\n\r\n }\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"order\": 3,\r\n \"key\": \"expiredpasswordtextnewpassword\",\r\n \"margin\": \"normal\",\r\n \"variant\": \"outlined\",\r\n \"id\": \"outlined-required\",\r\n \"options\": {\r\n \"placeholder\": \"New password\",\r\n \"name\": \"newpassword\",\r\n \"label\": \"New Password\",\r\n \"xtype\": \"password\"\r\n }\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"order\": 4,\r\n \"key\": \"expiredpasswordtextconfirmpassword\",\r\n \"margin\": \"normal\",\r\n \"variant\": \"outlined\",\r\n \"id\": \"outlined-required\",\r\n \"options\": {\r\n \"placeholder\": \"Confirm New password\",\r\n \"name\": \"confirmpassword\",\r\n \"label\": \"Confirm Password\",\r\n \"xtype\": \"password\"\r\n }\r\n },\r\n {\r\n \"type\": \"infotext\",\r\n \"key\": \"Infotext\",\r\n \"options\": {\r\n \"row\": 2,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"text\": \"Password Policy:\",\r\n\r\n }\r\n },\r\n {\r\n \"type\": \"infotext\",\r\n \"key\": \"Infotext\",\r\n \"options\": {\r\n \"row\": 2,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"text\": \"1. Password must contain at least 10 characters.\",\r\n\r\n }\r\n },\r\n {\r\n \"type\": \"infotext\",\r\n \"key\": \"Infotext\",\r\n \"options\": {\r\n \"row\": 2,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"text\": \"2. Password should includes 1 Uppercase Alphabet[A-Z], 1 Lowercase Alphabet[a-z], 1 number[0-9], 1 Special Character.\",\r\n\r\n }\r\n },\r\n {\r\n \"type\": \"infotext\",\r\n \"key\": \"Infotext\",\r\n \"options\": {\r\n \"row\": 2,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"text\": \"3. Password cannot contain spaces at the begin/end, Applicant Name, Username and cannot use the last five passwords.\",\r\n\r\n }\r\n },\r\n {\r\n \"type\": \"navformbutton\",\r\n \"order\": 5,\r\n \"key\": \"changepassordbtn\",\r\n \"changepassword\": true,\r\n \"options\": {\r\n \"text\": \"OK\",\r\n \"name\": \"changebtnpassword\",\r\n \"variant\": \"contained\",\r\n \"color\": \"primary\",\r\n }\r\n },\r\n {\r\n \"type\": \"navlink\",\r\n \"order\": 6,\r\n \"key\": \"forgotpasswordlink\",\r\n \"options\": {\r\n \"text\": \"Forgot Your Old Password?\",\r\n \"name\": \"changepasswordlink\"\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"form\",\r\n \"key\": \"createnewpasswordform\",\r\n \"options\": {\r\n \"step\": 14,\r\n \"name\": \"form14\"\r\n },\r\n \"components\": [\r\n {\r\n \"type\": \"text\",\r\n \"order\": 1,\r\n \"key\": \"createnewpasswordtext\",\r\n \"options\": {\r\n \"text\": \"Create New Password\",\r\n \"name\": \"createnewpassword\"\r\n }\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"order\": 2,\r\n \"key\": \"createnewpasswordnew\",\r\n \"options\": {\r\n \"placeholder\": \"New password\",\r\n \"name\": \"createnewnewpassword\"\r\n }\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"order\": 3,\r\n \"key\": \"createnewpasswordconfirm\",\r\n \"options\": {\r\n \"placeholder\": \"Confirm New password\",\r\n \"name\": \"createnewconfirmnewpassword\"\r\n }\r\n },\r\n {\r\n \"type\": \"infotext\",\r\n \"key\": \"Infotext\",\r\n \"options\": {\r\n \"row\": 2,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"text\": \"Password Policy:\",\r\n\r\n }\r\n },\r\n {\r\n \"type\": \"infotext\",\r\n \"key\": \"Infotext\",\r\n \"options\": {\r\n \"row\": 2,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"text\": \"1. Password must contain at least 10 characters.\",\r\n\r\n }\r\n },\r\n {\r\n \"type\": \"infotext\",\r\n \"key\": \"Infotext\",\r\n \"options\": {\r\n \"row\": 2,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"text\": \"2. Password should includes 1 Uppercase Alphabet[A-Z], 1 Lowercase Alphabet[a-z], 1 number[0-9], 1 Special Character.\",\r\n\r\n }\r\n },\r\n {\r\n \"type\": \"infotext\",\r\n \"key\": \"Infotext\",\r\n \"options\": {\r\n \"row\": 2,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"text\": \"3. Password cannot contain spaces at the begin/end, Applicant Name, Username and cannot use the last five passwords.\",\r\n\r\n }\r\n },\r\n {\r\n \"type\": \"navformbutton\",\r\n \"order\": 4,\r\n \"key\": \"changepassordbtn\",\r\n \"options\": {\r\n \"text\": \"Change\",\r\n \"name\": \"createnewpasswordokbtn\"\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"form\",\r\n \"key\": \"createPasswordexpired\",\r\n \"options\": {\r\n \"step\": 15,\r\n \"name\": \"form15\",\r\n },\r\n \"components\": [\r\n {\r\n \"type\": \"dtext\",\r\n \"order\": 1,\r\n \"key\": \"tokenexpired\",\r\n \"options\": {\r\n \"text\": \"Password is expired, Email is send to email address\",\r\n \"name\": \"tokenexpired\"\r\n }\r\n },\r\n\r\n ]\r\n },\r\n {\r\n \"type\": \"form\",\r\n \"key\": \"otpinputchange\",\r\n \"options\": {\r\n \"step\": 16,\r\n \"name\": \"form16\",\r\n \"link\": {\r\n \"url\": \"/notifications\"\r\n },\r\n formdata: true,\r\n crud: {\r\n \"rest\": {\r\n \"post\": {\r\n \"url\": getEnvVariable('ConnectToken') + ``,\r\n \"body\": [\r\n // {\r\n // \"key\": \"otpinput\",\r\n // \"fieldName\": \"otpinput\"\r\n // },\r\n {\r\n \"key\": \"username\",\r\n \"fieldName\": \"username\",\r\n \"value\": \"IWA\"\r\n },\r\n {\r\n \"key\": \"password\",\r\n \"fieldName\": \"password\",\r\n \"value\": \"IWA\"\r\n },\r\n {\r\n \"key\": \"portal\",\r\n \"value\": \"I\"\r\n },\r\n {\r\n \"key\": \"module\",\r\n \"value\": getEnvVariable('ModuleKey')\r\n },\r\n {\r\n \"key\": \"grant_type\",\r\n \"value\": \"password\"\r\n },\r\n {\r\n \"key\": \"randomnumber\",\r\n \"fieldName\": \"otpinput\"\r\n }\r\n ]\r\n }\r\n },\r\n },\r\n },\r\n \"components\": [\r\n {\r\n \"type\": \"text\",\r\n \"order\": 1,\r\n \"key\": \"Passwordtext\",\r\n \"options\": {\r\n \"text\": \"Pincode\",\r\n \"name\": \"passwordsignin\",\r\n \"align\": \"center\",\r\n \"style\": {\r\n \"fontSize\": \"25px\",\r\n \"fontWeight\": \"bold\",\r\n }\r\n }\r\n },\r\n {\r\n \"type\": \"text\",\r\n \"order\": 2,\r\n \"key\": \"otpmessage\",\r\n \"options\": {\r\n \"text\": \"Please enter the pincode sent to your email\",\r\n \"name\": \"otpmessage\",\r\n }\r\n },\r\n {\r\n \"type\": \"otp\",\r\n \"order\": 3,\r\n \"key\": \"otpinput\",\r\n \"options\": {\r\n \"name\": \"otpinput\",\r\n }\r\n },\r\n {\r\n \"type\": \"etext\",\r\n \"order\": 4,\r\n \"key\": \"passwordmessage\",\r\n \"options\": {\r\n \"text\": \"\",\r\n \"name\": \"passwordmessage\",\r\n \"error\": true\r\n }\r\n },\r\n {\r\n \"type\": \"navlink\",\r\n \"order\": 5,\r\n \"key\": \"resendotplink\",\r\n \"options\": {\r\n \"jumptostep\": 17,\r\n \"text\": \"Resend Pincode\",\r\n \"name\": \"resendotplink\"\r\n }\r\n },\r\n {\r\n \"type\": \"navformbutton\",\r\n \"order\": 6,\r\n \"key\": \"otpsigninbutton\",\r\n \"options\": {\r\n \"text\": \"Verify and Login\",\r\n \"jumptostep\": 14,\r\n \"route\": \"/\",\r\n \"name\": \"otppasswordbutton\",\r\n \"variant\": \"contained\",\r\n \"color\": \"primary\"\r\n }\r\n },\r\n\r\n ]\r\n },\r\n {//17\r\n \"type\": \"form\",\r\n \"key\": \"resendotptext\",\r\n \"options\": {\r\n \"step\": 17,\r\n \"name\": \"form17\",\r\n crud: {\r\n \"rest\": {\r\n \"get\": {\r\n \"url\": getEnvVariable('Auth') + `/api/UserAuth/ResendPin`,\r\n \"query\": [\r\n {\r\n \"key\": \"Username\",\r\n \"fieldName\": \"emailaddressusername\"\r\n },\r\n {\r\n \"key\": \"portal\",\r\n \"value\": \"I\"\r\n }\r\n ]\r\n }\r\n },\r\n }\r\n },\r\n \"components\": [\r\n {\r\n \"type\": \"text\",\r\n \"order\": 1,\r\n \"key\": \"resendotptextemailtext\",\r\n \"options\": {\r\n \"text\": \"An email will be sent to your email address\",\r\n \"name\": \"resendotptextemailtext\"\r\n }\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"order\": 2,\r\n \"key\": \"emailaddressusername\",\r\n \"variant\": \"outlined\",\r\n \"options\": {\r\n \"placeholder\": \"Enter your UserName\",\r\n \"name\": \"emailaddressusername\",\r\n //\"xtype\": \"email\",\r\n }\r\n },\r\n {\r\n \"type\": \"etext\",\r\n \"order\": 3,\r\n \"key\": \"passwordmessage\",\r\n \"options\": {\r\n \"text\": \"\",\r\n \"name\": \"passwordmessage\",\r\n \"error\": true\r\n\r\n }\r\n },\r\n {\r\n \"type\": \"navformbutton\",\r\n \"order\": 4,\r\n \"key\": \"resendotptextbutton\",\r\n \"options\": {\r\n \"jumptostep\": 18,\r\n \"jumptofalsestep\": 19,\r\n \"text\": \"Next\",\r\n \"color\": \"primary\",\r\n \"variant\": \"contained\",\r\n \"name\": \"emailaddressnextbtn2\",\r\n }\r\n }\r\n ]\r\n },\r\n {//18\r\n \"type\": \"form\",\r\n \"key\": \"forgototpok\",\r\n \"options\": {\r\n \"step\": 18,\r\n \"name\": \"form18\"\r\n },\r\n \"components\": [\r\n {\r\n \"type\": \"text\",\r\n \"order\": 1,\r\n \"key\": \"forgototpoktext\",\r\n \"options\": {\r\n \"text\": \"Resend Pincode\",\r\n \"name\": \"forgototp\"\r\n }\r\n },\r\n {\r\n \"type\": \"text\",\r\n \"order\": 1,\r\n \"key\": \"forgototpokForgottext\",\r\n \"options\": {\r\n \"text\": \"An email has been sent to your email address\",\r\n \"name\": \"forgototptext\"\r\n }\r\n },\r\n {\r\n \"type\": \"navformbutton\",\r\n \"order\": 3,\r\n \"key\": \"forgototpokokbutton\",\r\n \"options\": {\r\n \"text\": \"Ok\",\r\n \"name\": \"forgototpokokbutton\",\r\n \"close\": true,\r\n \"variant\": \"contained\",\r\n \"color\": \"primary\",\r\n }\r\n }\r\n ]\r\n },\r\n {//19\r\n \"type\": \"form\",\r\n \"key\": \"notvalidusername\",\r\n \"options\": {\r\n \"step\": 19,\r\n \"name\": \"form19\"\r\n },\r\n \"components\": [\r\n {\r\n \"type\": \"text\",\r\n \"order\": 1,\r\n \"key\": \"notvalidemailaddresstextinred\",\r\n \"options\": {\r\n \"text\": \"UserName entered is not valid.Please contact support\",\r\n \"name\": \"notvalidemailaddressinred\"\r\n }\r\n },\r\n {\r\n \"type\": \"button\",\r\n \"order\": 3,\r\n \"key\": \"okbutton\",\r\n \"options\": {\r\n \"text\": \"Ok\",\r\n \"name\": \"notvalidemailaddressokbtn\",\r\n \"close\": true,\r\n \"variant\": \"contained\",\r\n \"color\": \"primary\",\r\n \"close\": true,\r\n }\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n ]\r\n}\r\n\r\nexport default iwsusersignin","\r\n/**\r\n *********************************************************\r\n Description: Handles signup form.\r\n Required props: type, steps, components.\r\n limitations : can be used only to create a sigin form with username and password and its variations.\r\n *********************************************************\r\n**/\r\n\r\nimport React, { Component, Fragment } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport SubForm from '../form/csubform';\r\nimport { requestApi } from './utilities'\r\nimport FormHeader from './cformheader';\r\nimport { getToken } from '../header';\r\nimport BackDrop from '../backdrop';\r\nimport { GetData } from '../../controls/helpers/requests';\r\nimport { getEnvVariable } from '../../../modules/environmentalList';\r\nimport iwsusersignin from '../../../json/signin/isauthsignin';\r\nclass CSignUpForm extends Component {\r\n constructor(props) {\r\n super(props);\r\n /**\r\n *********************************************************\r\n Description: Handles component initialization.\r\n Required props: type, steps, components. Each field prop are stored in formControls\r\n limitations : N/A.\r\n *********************************************************\r\n**/\r\n\r\n const { options, components, compmap, steps } = props\r\n this.formControls = {}\r\n this.state = {\r\n step: options.initialstep,\r\n username: \"\",\r\n password: \"\",\r\n emailAddress: null,\r\n pincode: null,\r\n changedFieldName: [], tokenvalid: true,\r\n isWindowsAuth: false\r\n };\r\n this.compsForEachStep = components.sort((a, b) => { return a.options.step - b.options.step }).map(each => {\r\n const { components } = each\r\n components.forEach(e => {\r\n const { options, ...otherProps } = e\r\n const { name, ...otherOptions } = options\r\n this.formControls[name] = {\r\n name: name,\r\n ...otherProps,\r\n ...otherOptions\r\n }\r\n })\r\n return { ...each }\r\n })\r\n\r\n }\r\n\r\n\r\n componentDidMount() {\r\n //this.getAuthenticationType();\r\n this.GetAuthType();\r\n if (this.props.match && this.props.match.params && this.props.match.params.guid)\r\n this.isValidtoken();\r\n }\r\n\r\n GetAuthType() {\r\n let url = getEnvVariable('Auth') + '/api/UserAuth/AuthType/' + getEnvVariable(\"AccessPortal\");\r\n GetData(`${url}`).then(response => {\r\n // console.log('sso login....', response);\r\n if (response) {\r\n let isldap = (response['LDAP_AUTH'] === 'Y');\r\n let iswindows = (response['ACTIVE_DIRECTORY_AUTH'] === 'Y');\r\n let isAutoLogin = (response['AUTOLOGIN'] === 'Y');\r\n let isIWAAuth = (response['IWAAUTH'] === 'Y');\r\n if (isIWAAuth && !window.location.hash.includes(\"resetpassword\")) {\r\n localStorage.setItem('IWAAUTH', response['IWAAUTH'])\r\n let iwsJSON = iwsusersignin;\r\n const { options, components, compmap, steps } = iwsJSON.components[0]\r\n this.compsForEachStep = components.sort((a, b) => { return a.options.step - b.options.step }).map(each => {\r\n const { components } = each\r\n components.forEach(e => {\r\n const { options, ...otherProps } = e\r\n const { name, ...otherOptions } = options\r\n this.formControls[name] = {\r\n name: name,\r\n ...otherProps,\r\n ...otherOptions\r\n }\r\n })\r\n return { ...each }\r\n })\r\n const { type, jumptostep, jumptofalsestep, close, changepassword } = this.formControls['passwordbutton'] ? this.formControls['passwordbutton'] : {};\r\n this.setState({ step: 2 }, () => {\r\n this.goToNext(jumptostep, jumptofalsestep, 'passwordbutton', type, changepassword, isIWAAuth);\r\n })\r\n\r\n }\r\n if (iswindows && isAutoLogin) {\r\n this.GetSSOToken();\r\n }\r\n if (isldap || iswindows) {\r\n let message = \"\"//\"Authentication directory is active. Provide credentials that exists in the directory.\"\r\n this.setState({\r\n isWindowsAuth: response, passwordmessage: message,\r\n changedFieldName: [{ name: 'passwordmessage', value: message }]\r\n })\r\n }\r\n }\r\n }).catch(ex => {\r\n //this.setState({ isWindowsAuth: false })\r\n })\r\n }\r\n\r\n GetSSOToken(isIWAAuth = false) {\r\n this.backdrop.backdropOpen();\r\n const currentform = this.compsForEachStep[this.state.step - 1]\r\n const { options } = currentform\r\n const { validations, crud, link, formdata } = options\r\n const { rest } = crud ? crud : {}\r\n const { post } = rest ? rest : {}\r\n requestApi(rest, null, {}, formdata, true)\r\n .then(results => {\r\n this.backdrop.backdropClose();\r\n if (results) {\r\n console.log(results);\r\n if (link) {\r\n const token = results.token_type + ' ' + results.access_token\r\n localStorage.setItem('token', token)\r\n this.props.history.push(`${link.url}`)\r\n window.location.reload(true);\r\n }\r\n }\r\n }).catch(error => {\r\n this.backdrop.backdropClose();\r\n error.then(err => {\r\n if (err.error) {\r\n alert('Not a correct windows user')\r\n this.setState({ passwordmessage: err.error, changedFieldName: [{ name: 'passwordmessage', value: err.error }] })\r\n }\r\n })\r\n })\r\n }\r\n\r\n\r\n\r\n /**\r\n *********************************************************\r\n Description: Handles navigation on clicking the link or next button.\r\n Required props: name\r\n limitations : N/A.\r\n *********************************************************\r\n**/\r\n\r\n handleClick = (event) => {\r\n const { name, value } = event.currentTarget\r\n const { type, jumptostep, jumptofalsestep, close, changepassword } = this.formControls[name] ? this.formControls[name] : {}\r\n if (!close && (type === 'navformbutton' || type === 'navlink')) {\r\n if (changepassword) {\r\n if (this.state.tokenvalid) {\r\n this.goToNext(jumptostep, jumptofalsestep, name, type, changepassword);\r\n }\r\n }\r\n else this.goToNext(jumptostep, jumptofalsestep, name, type, null);\r\n\r\n }\r\n else if (close) {\r\n this.props.onClose();\r\n }\r\n }\r\n\r\n\r\n isValidtoken = () => {\r\n const { guid } = this.props.match.params;\r\n let url = getEnvVariable('Auth') + '/api/UserAuth/IsLinkValid' + '/' + guid;\r\n GetData(`${url}`).then(response => {\r\n if (!response.isLinkValid) {\r\n this.setState({\r\n step: 15,\r\n changedFieldName: [],\r\n tokenvalid: false\r\n });\r\n }\r\n }).catch(ex => {\r\n this.setState({ tokenvalid: false })\r\n })\r\n }\r\n /**\r\n *********************************************************\r\n Description: Handles updating the values in the field.\r\n Required props: name, value\r\n limitations : N/A.\r\n *********************************************************\r\n**/\r\n handleFieldChange = (event) => {\r\n const { name, value } = event.target\r\n this.setState({\r\n [name]: value,\r\n changedFieldName: [{ name: name, value: value }]\r\n })\r\n }\r\n\r\n onKeyPress = (event) => {\r\n let current = this.compsForEachStep[this.state.step - 1]\r\n let nextButton = current.components.filter(a => a.type === 'navformbutton')\r\n const { name, value } = event.target\r\n if (event.key === 'Enter') {\r\n let events = { currentTarget: { name: nextButton[0].options.name } }\r\n if (name === 'username' || name === 'password' || name === 'emailaddressusername' || name === 'emailaddressnextbtn1' ||\r\n name === 'confirmpassword' || name === 'createnewconfirmnewpassword' || name === 'emailaddresspassword')\r\n this.handleClick(events);\r\n }\r\n }\r\n\r\n /**\r\n *********************************************************\r\n Description: Handles jumping to the next form on clicking link or button.\r\n Required props: step, name.\r\n limitations : N/A.\r\n *********************************************************\r\n**/\r\n\r\n goToNext = (step, jumptofalsestep, name, type, changepassword, isIWAAuth = false) => {\r\n let passwordvalid = true;\r\n const { components, compmap } = this.props\r\n const totalsteps = this.props.options.steps\r\n const currentform = this.compsForEachStep[this.state.step - 1]\r\n const { options } = currentform\r\n const { validations, crud, link, formdata } = options\r\n const { rest } = crud ? crud : {}\r\n const { post } = rest ? rest : {}\r\n const { username, password, emailaddressusername, emailaddresspassword, pincodevalue, newpassword, confirmpassword, passwordmessage, otpinput } = this.state;\r\n const { guid, routeid } = this.props.match.params;\r\n let message = '';\r\n if (changepassword) {\r\n if (newpassword === '' || newpassword === null || newpassword === undefined) {\r\n passwordvalid = false;\r\n message = 'Please enter new password'\r\n this.setState({ passwordmessage: message, changedFieldName: [{ name: 'passwordmessage', value: message }] })\r\n }\r\n else if (confirmpassword === '' || confirmpassword === null || confirmpassword === undefined) {\r\n passwordvalid = false;\r\n message = 'Please enter confirm password'\r\n this.setState({ passwordmessage: message, changedFieldName: [{ name: 'passwordmessage', value: message }] })\r\n }\r\n else if ((newpassword === '' && confirmpassword === '') || (newpassword === confirmpassword)) {\r\n let re = /^(?=.*\\d)(?=.*[!@#$%^&*])(?=.*[a-z])(?=.*[A-Z]).{10,}$/;\r\n passwordvalid = re.test(confirmpassword);\r\n if (!passwordvalid) {\r\n message = 'Password must contain minimum 10 characters, atleast 1 upper case,atleast one lower case , atleast one number and one special character'\r\n }\r\n this.setState({ passwordmessage: message, changedFieldName: [{ name: 'passwordmessage', value: message }] })\r\n\r\n }\r\n else {\r\n passwordvalid = false;\r\n message = 'Password does not match';\r\n this.setState({\r\n passwordmessage: 'Password does not match',\r\n changedFieldName: [{ name: 'passwordmessage', value: 'Password does not match' }]\r\n })\r\n }\r\n }\r\n if(this.state.step && this.state.step == 3)\r\n {\r\n if(emailaddressusername =='' || emailaddressusername == undefined)\r\n {\r\n passwordvalid = false;\r\n message = 'Please provide Email Address'\r\n this.setState({ passwordmessage: message, changedFieldName: [{ name: 'passwordmessage', value: message }] })\r\n }\r\n }\r\n if (passwordvalid && rest && (type !== 'navlink')) {\r\n this.backdrop.backdropOpen();\r\n requestApi(rest, null, {\r\n Module: getEnvVariable('ModuleKey'), Email: emailaddresspassword, Portal: getEnvVariable(\"AccessPortal\"),\r\n otpinput: otpinput, username: isIWAAuth ? 'IWA' : username, password: isIWAAuth ? 'IWA' : password, emailaddressusername: emailaddressusername,\r\n emailaddresspassword: emailaddresspassword, pincodevalue: pincodevalue, guid: guid, userID: routeid, confirmpassword: confirmpassword\r\n }, formdata, true).then(results => {\r\n this.backdrop.backdropClose();\r\n if (results && results.error) {\r\n this.setState({\r\n passwordmessage: results.error || 'Email invalid',\r\n // step: jumptofalsestep ? jumptofalsestep : 'servicefail',\r\n changedFieldName: [{ name: 'passwordmessage', value: results.error }]\r\n })\r\n }\r\n if (results && !results.error) {\r\n if (link) {\r\n const token = results.token_type + ' ' + results.access_token\r\n localStorage.setItem('token', token)\r\n //document.cookie = \"JWTAuthorization=\" + results.access_token;\r\n //User login successful. Now set SSRS token.\r\n //Login to SSRS server\r\n //var ssrstokenparam = btoa('username=' + username + '&password=' + password + '&requester=app');\r\n //var reportauthurl = ReportServer + '/logon.aspx?token=' + ssrstokenparam;\r\n //window.open(reportauthurl, \"_blank\", \"width=1,height=1\");\r\n\r\n this.props.history.push(`${link.url}`)\r\n window.location.reload(true);\r\n }\r\n else if (results.validUser && results.pincodeRequired && !results.isFirstTimeLogin) {\r\n this.setState({\r\n step: 10,\r\n changedFieldName: []\r\n });\r\n }\r\n else {\r\n this.setState({\r\n step: step, //step\r\n changedFieldName: []\r\n });\r\n }\r\n }\r\n }).catch(error => {\r\n this.backdrop.backdropClose();\r\n error.then(err => {\r\n if (err.error) {\r\n if (err.error === \"invalid_request\") {\r\n let invalid = false;\r\n if (err.error_description === \"The mandatory 'username' and/or 'password' parameters are missing.\") {\r\n // err.error_description = \"Please provide username and Password\"\r\n invalid = true\r\n }\r\n this.setState({ passwordmessage: err.error, changedFieldName: [{ name: 'passwordmessage', value: (invalid && err.error_description) ? 'Username/Password cannot be left blank' : err.error }] })\r\n }\r\n else if (err.error === \"Password Expired\") {\r\n this.setState({\r\n step: 12,\r\n changedFieldName: []\r\n });\r\n }\r\n else if (err.error === \"Invalid PinCode\") {\r\n this.setState({ passwordmessage: err.error, changedFieldName: [{ name: 'passwordmessage', value: err.error }] })\r\n }\r\n else if (err.error === \"ACCOUNT_BLOCKED_LOGIN_ATTEMPTS_EXCEED\" || err.error === \"Too many invalid login attempts.\") {\r\n this.setState({ passwordmessage: err.error_description, changedFieldName: [{ name: 'passwordmessage', value: err.error_description }] })\r\n }\r\n else if (err.error_description === \"ACCOUNT_BLOCKED\") {\r\n this.setState({ passwordmessage: err.error, changedFieldName: [{ name: 'passwordmessage', value: err.error }] })\r\n }\r\n else if (err.error_description === \"access_denied\" || err.error === \"access_denied\" ) {\r\n this.setState({ passwordmessage: err.error_description, changedFieldName: [{ name: 'passwordmessage', value: err.error_description }] })\r\n }\r\n else if (err.error === \"USER_NO_ACCESS_CONTROLS\") {\r\n this.setState({ passwordmessage: err.error, changedFieldName: [{ name: 'passwordmessage', value: 'Your account is not assigned any permissions. Please contact administrator' }] })\r\n }\r\n else if (err.error_description === \"PASSWORD_UPDATED_LOGIN\") {\r\n window.location.replace(err.error)\r\n // this.setState({\r\n // step: 13,\r\n // guid:err.error.slice(err.error.indexOf('resetpassword/') + ('resetpassword/').length),\r\n // changedFieldName: []\r\n // });\r\n }\r\n else if (err.error_description === \"WINDOWS_AUTH_INVALID\") {\r\n this.setState({ passwordmessage: err.error, changedFieldName: [{ name: 'passwordmessage', value: err.error }] })\r\n }\r\n else if (err.error_description) {\r\n if (err.error_description === 'LOGIN_ATTEMPTS_EXCEEDED') {\r\n this.setState({\r\n step: 11,\r\n changedFieldName: []\r\n });\r\n }\r\n else if (err.error_description === 'NEW_IPADDRESS' || err.error_description === 'RANDOM_NUMBER') {\r\n this.setState({\r\n step: jumptofalsestep,\r\n changedFieldName: []\r\n });\r\n }\r\n else if (err.error_description === 'INACTIVE_USER') {\r\n this.setState({ passwordmessage: err.error, changedFieldName: [{ name: 'passwordmessage', value: err.error ? err.error : 'Invalid Information' }] })\r\n }\r\n else if (err.error_description === 'INVALID_PASSWORD') {\r\n this.setState({ passwordmessage: err.error, changedFieldName: [{ name: 'passwordmessage', value: err.error ? err.error : 'Invalid Information' }] })\r\n }\r\n else {\r\n this.setState({\r\n passwordmessage: err.error + ':' + err.error_description,\r\n changedFieldName: [{ name: 'passwordmessage', value: err.error ? err.error : 'Invalid Information' }]\r\n })\r\n }\r\n }\r\n else this.setState({ passwordmessage: err.error, changedFieldName: [{ name: 'passwordmessage', value: err.error }] })\r\n }\r\n else if (err.Password) {\r\n this.setState({ passwordmessage: err.Password[0], changedFieldName: [{ name: 'passwordmessage', value: err.Password[0] }] })\r\n }\r\n else this.setState({\r\n step: jumptofalsestep ? jumptofalsestep : 'servicefail',\r\n changedFieldName: []\r\n });\r\n })\r\n })\r\n }\r\n else if (passwordvalid && rest && (type === 'navformbutton')) {\r\n this.backdrop.backdropOpen();\r\n requestApi(rest, null, null, formdata, true).then(results => {\r\n this.backdrop.backdropClose();\r\n if (results) {\r\n if (link) {\r\n const token = results.token_type + ' ' + results.access_token\r\n localStorage.setItem('token', token)\r\n this.props.history.push(`${link.url}`)\r\n window.location.reload(true);\r\n\r\n }\r\n else {\r\n this.setState({\r\n step: step,\r\n changedFieldName: []\r\n });\r\n }\r\n }\r\n\r\n }).catch(error => {\r\n this.backdrop.backdropClose();\r\n })\r\n }\r\n else {\r\n if (!passwordvalid) {\r\n this.setState({ passwordmessage: message, changedFieldName: [{ name: 'passwordmessage', value: message }] })\r\n }\r\n else this.setState({\r\n step: step,\r\n changedFieldName: []\r\n });\r\n }\r\n\r\n }\r\n\r\n\r\n /**\r\n *********************************************************\r\n Description: renders the current component in the wizard flow for sigin.\r\n Required props: currentformprops.\r\n limitations : N/A.\r\n *********************************************************\r\n**/\r\n\r\n\r\n render() {\r\n const { compmap, options, classes } = this.props;\r\n const { cheader, title, headerProps } = options;\r\n const { step } = this.state\r\n const currentformprops = this.compsForEachStep[this.state.step - 1]\r\n return (\r\n <Fragment>\r\n {cheader && <FormHeader title={title} closebutton={headerProps.closebutton} handleClose={() => this.props.onClose()} />}\r\n {step !== 'servicefail' && <SubForm {...currentformprops} key={currentformprops.key} compmap={compmap} onClick={this.handleClick} onKeyPress={this.onKeyPress} handleFieldChange={this.handleFieldChange} changedFieldName={this.state.changedFieldName} />}\r\n {step === 'servicefail' && <div className=\"row pl-4 text-danger\">Unable to login at this time. Please try again or contact support team</div>}\r\n <div> <BackDrop ref={e => this.backdrop = e} /></div>\r\n\r\n </Fragment>\r\n )\r\n }\r\n}\r\n\r\n\r\n\r\nexport default (withRouter(CSignUpForm));\r\n\r\n","import React, { Component, Fragment } from 'react';\r\nimport Link from '@material-ui/core/Link';\r\nimport { requestApi } from './utilities';\r\nimport { Link as RouterLink } from 'react-router-dom';\r\nimport { snackbarMessage } from '../../actions';\r\nimport { bindActionCreators } from 'redux'\r\nimport { connect } from 'react-redux';\r\nimport ConfirmationDialog from '../../controls/components/confirmationPopup'\r\nimport SendIcon from '@material-ui/icons/Send';\r\nimport Fab from '@material-ui/core/Fab';\r\n\r\nclass CSimpleLink extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n snackbarmessage: '',\r\n openConfirmation: false\r\n }\r\n }\r\n\r\n handleCancel = () => {\r\n this.setState({ openConfirmation: false })\r\n }\r\n\r\n handleClick = () => {\r\n this.setState({ openConfirmation: true })\r\n }\r\n\r\n handleChange = (event) => {\r\n this.setState({ openConfirmation: false })\r\n const { options } = this.props\r\n const { crud } = options\r\n const save = crud.update\r\n const { put, post } = save || {}\r\n let ids = [], id;\r\n if (post) {\r\n const { url, urlpath, matchProps, customProps } = save.post;\r\n const { custom } = customProps\r\n if (customProps) {\r\n id = this.props.dataItem[custom];\r\n }\r\n else {\r\n id = this.props.match.params[matchProps.value];\r\n }\r\n }\r\n requestApi(save, (ids.length > 0 ? ids : id),'','',false,post.message).then(resp => {\r\n if (resp) {\r\n // this.props.snackbarMessage('Activation Link Sent Successfully', 'success');\r\n }\r\n }).catch(err => {\r\n // this.props.snackbarMessage('Invalid Data. Please verify.', 'error');\r\n })\r\n }\r\n\r\n render() {\r\n const { options, type, handleFieldChange, error, value, touched, dropdownvalues, effect, editduplicate, edit, ...otherProps } = this.props;\r\n const { text, name, format } = options\r\n return (\r\n <Fragment>\r\n {format && format == \"icon\" && type === 'simplelink' && !editduplicate && <Fab size=\"small\" color=\"secondary\" aria-label=\"Edit\"\r\n className=\"float-end\" style={{ marginTop: '11px' }} title=\"Send Activation Link\" onClick={this.handleClick}>\r\n <SendIcon fontSize=\"small\" />\r\n </Fab>}\r\n {!format && type === 'simplelink' && <Link underline=\"always\" component={RouterLink} onClick={this.handleClick} name={name} {...otherProps}>\r\n {text}\r\n </Link>\r\n }\r\n {this.state.openConfirmation && <ConfirmationDialog value={this.state.openConfirmation} title=\"Do you want to send Activation Link?\" labels={['SEND', 'CLOSE']} onSubmit={this.handleChange} onClose={this.handleCancel} />}\r\n </Fragment>\r\n )\r\n }\r\n}\r\n\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage }, dispatch);\r\n}\r\n\r\nCSimpleLink = connect(null, mapActions)(CSimpleLink)\r\nexport default CSimpleLink;\r\n\r\n\r\n\r\n","/**\r\n *********************************************************\r\n deprecated\r\n *********************************************************\r\n**/\r\nimport React, { Component, Fragment } from 'react';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Switch from '@material-ui/core/Switch';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport FormHelperText from '@material-ui/core/FormHelperText'\r\n\r\nconst styles = theme => ({\r\n colorBar: {},\r\n colorChecked: {},\r\n iOSSwitchBase: {\r\n '&$iOSChecked': {\r\n color: theme.palette.common.white,\r\n '& + $iOSBar': {\r\n backgroundColor: '#52d869',\r\n },\r\n },\r\n transition: theme.transitions.create('transform', {\r\n duration: theme.transitions.duration.shortest,\r\n easing: theme.transitions.easing.sharp,\r\n }),\r\n },\r\n iOSChecked: {\r\n transform: 'translateX(15px)',\r\n '& + $iOSBar': {\r\n opacity: 1,\r\n border: 'none',\r\n },\r\n },\r\n iOSBar: {\r\n borderRadius: 13,\r\n width: 42,\r\n height: 26,\r\n marginTop: -13,\r\n marginLeft: -21,\r\n border: 'solid 1px',\r\n borderColor: theme.palette.grey[400],\r\n backgroundColor: theme.palette.grey[50],\r\n opacity: 1,\r\n transition: theme.transitions.create(['background-color', 'border']),\r\n },\r\n iOSIcon: {\r\n width: 24,\r\n height: 24,\r\n },\r\n iOSIconChecked: {\r\n boxShadow: theme.shadows[1],\r\n },\r\n});\r\n\r\n\r\n\r\nconst Switches = (props) => {\r\n const { options, classes, handleFieldChange, compmap } = props;\r\n const { value, color, name, disabled, inputattrProps, checkedIcon, uncheckedIcon, transformProps, label, ...otherOptions } = options ? options : {}\r\n let otherCustomOptions = {}\r\n if (uncheckedIcon) {\r\n const { options, type } = uncheckedIcon\r\n const EachComp = compmap[type]\r\n otherCustomOptions.icon = <EachComp {...options} />\r\n }\r\n if (checkedIcon) {\r\n const { options, type } = checkedIcon\r\n const EachComp = compmap[type]\r\n otherCustomOptions.checkedIcon = <EachComp {...options} />\r\n }\r\n\r\n const checked = props.value\r\n return (\r\n <Fragment>\r\n <FormControlLabel\r\n control={<Switch\r\n classes={{\r\n switchBase: classes.iOSSwitchBase,\r\n bar: classes.iOSBar,\r\n icon: classes.iOSIcon,\r\n iconChecked: classes.iOSIconChecked,\r\n checked: classes.iOSChecked,\r\n }}\r\n disableRipple\r\n //color={color || 'primary'}\r\n checked={checked ? checked : false}\r\n onChange={handleFieldChange}\r\n {...otherOptions}\r\n {...otherCustomOptions}\r\n />}\r\n label={label}\r\n value={value}\r\n />\r\n </Fragment>\r\n );\r\n}\r\n\r\nexport default withStyles(styles)(Switches);","import React, { useEffect, useRef } from \"react\"\r\nimport PropTypes from 'prop-types';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Tabs from '@material-ui/core/Tabs';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Box from '@material-ui/core/Box';\r\nimport { useSelector } from 'react-redux';\r\nimport Confirmation from './confirmationdialog'\r\nimport { getEnvVariable } from \"../../../modules/environmentalList\";\r\nconst _ = require('lodash');\r\nfunction TabPanel(props) {\r\n const { children, value, index, ...other } = props;\r\n\r\n return (\r\n <Typography\r\n component=\"div\"\r\n role=\"tabpanel\"\r\n hidden={value !== index}\r\n id={`scrollable-force-tabpanel-${index}`}\r\n aria-labelledby={`scrollable-force-tab-${index}`}\r\n {...other}\r\n >\r\n {/* by removing style scrollbar will be hided {value === index && <Box p={3} style={{ overflow: 'auto', height: '800px' }}>{children}</Box>} */}\r\n {value === index && <Box p={3}>{children}</Box>}\r\n </Typography>\r\n );\r\n}\r\n\r\nTabPanel.propTypes = {\r\n children: PropTypes.node,\r\n index: PropTypes.any.isRequired,\r\n value: PropTypes.any.isRequired,\r\n};\r\n\r\nfunction a11yProps(index) {\r\n return {\r\n id: `scrollable-force-tab-${index}`,\r\n 'aria-controls': `scrollable-force-tabpanel-${index}`,\r\n };\r\n}\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n flexGrow: 1,\r\n width: '100%',\r\n backgroundColor: theme.palette.background.paper,\r\n \"& .MuiTab-root\": {\r\n 'text-transform': 'capitalize'\r\n },\r\n },\r\n}));\r\n\r\nexport default function ScrollableTabsButtonAuto(props) {\r\n const { options, components, compmap, headerProps, gridkey } = props\r\n let dataItemVal = props.dataItem\r\n const classes = useStyles();\r\n const [value, setValue] = React.useState(0);\r\n const [openConfirmation, setOpenconfirmation] = React.useState(false);\r\n const [tempVal, setTempVal] = React.useState(null);\r\n const prevdataItemVal = usePrevious(dataItemVal);\r\n let UnsavedData = useSelector(state => state.header && state.header.unsaveddata)\r\n\r\n function usePrevious(currentdatavalue) {\r\n const ref = useRef();\r\n useEffect(() => {\r\n ref.current = currentdatavalue;\r\n settingValue();\r\n });\r\n return ref.current;\r\n }\r\n\r\n useEffect(() => {\r\n if (prevdataItemVal && Object.entries(prevdataItemVal).toString() !== Object.entries(dataItemVal).toString()) {\r\n setValue(0)\r\n }\r\n }, [])\r\n\r\n function settingValue() {\r\n if (prevdataItemVal && Object.entries(prevdataItemVal).toString() !== Object.entries(dataItemVal).toString()) {\r\n setValue(0)\r\n }\r\n }\r\n\r\n const handleChange = (event, newValue) => {\r\n setValue(newValue);\r\n };\r\n\r\n const handleClose = (event, leave, stay) => {\r\n if (leave && (tempVal || tempVal == 0)) {\r\n props.unsavedData(null)\r\n setOpenconfirmation(false)\r\n setValue(tempVal);\r\n setTempVal(null)\r\n }\r\n else {\r\n setOpenconfirmation(false)\r\n setTempVal(null)\r\n }\r\n\r\n }\r\n return (\r\n <div className={classes.root}>\r\n <AppBar position=\"static\" color=\"white\" className='col-sm-12'>\r\n <Tabs\r\n value={value}\r\n onChange={handleChange}\r\n indicatorColor=\"primary\"\r\n textColor=\"primary\"\r\n variant={(options && options.variant) || \"scrollable\"}\r\n scrollButtons=\"auto\"\r\n\r\n >\r\n {options && options.tabinfo && options.tabinfo.map((e, i) => {\r\n let Admin = props.accessPermissions.isAdmin == \"Y\" ? true : false\r\n if (e.displaycondition) {\r\n if (e.value === props.accessPermissions.configType) {\r\n return <Tab label={e.tablabel} {...a11yProps(i)} />\r\n }\r\n }\r\n else if (e.tabhide && e.hidetabcond && e.hidetabval && e.hidetabcond == e.hidetabval) {\r\n return null\r\n }\r\n else if (e.hidetab && e.onhidetabcondition && props && props.dataItem && props.dataItem[e.nested] && props.dataItem[e.nested].Status == e.hidetabval) {\r\n return null\r\n }\r\n else if (e.hidetab && e.onhidetabcondition && e.dataItemKey && props && props.dataItem && props.dataItem[e.nested] && props.dataItem[e.nested][e.dataItemKey] === e.dataItemVal) {\r\n return null \r\n }\r\n else if (e.hidetab && e.onhidetabcondition && (props && props.dataItem && !props.dataItem.Status) && e.aftersavetab) {\r\n return null\r\n }\r\n else if (e.hidetab && props && props.dataItem && props.dataItem.Status === \"I\") {\r\n // return <Tab label={e.tablabel} disabled {...a11yProps(i)} />\r\n return null\r\n }\r\n else if (e.hidetab && props && props.dataItem && props.dataItem.AuthType !== e.dataItemVal) {\r\n // return <Tab label={e.tablabel} disabled {...a11yProps(i)} />\r\n return null\r\n }\r\n else if (e.hidetab && props && e.isLocalStorage && localStorage.getItem(e.isLocalStorage) === 'Y') {\r\n // return <Tab label={e.tablabel} disabled {...a11yProps(i)} />\r\n return null\r\n }\r\n else if (e.hidetab && props && Array.isArray(e.isLocalStorage) && e.isLocalStorage.length > 0 && e.isLocalStorage.some(e => localStorage.getItem(e) === 'Y')) {\r\n // return <Tab label={e.tablabel} disabled {...a11yProps(i)} />\r\n return null\r\n }\r\n else if ((e.showtab && props.dataItem.IsAdmin == 'Y') || (Admin && e.profileaccesscontrol == 'Y')) {\r\n return null\r\n }\r\n else return <Tab label={e.tablabel} disabled={e.disabletab} {...a11yProps(i)} />\r\n })}\r\n </Tabs>\r\n </AppBar>\r\n {options && options.tabinfo && options.tabinfo.map((e, i) => {\r\n let Admin = props.accessPermissions.isAdmin == \"Y\" ? true : false\r\n\r\n let displaytab\r\n if (e.displaycondition) {\r\n displaytab = _.find(components, { \"tabkey\": e.tabkey, \"tabdisplay\": props.accessPermissions.configType })\r\n }\r\n else if (e.hidetabcond && e.hidetabval && e.hidetabcond == e.hidetabval) {\r\n displaytab = _.find(components, { \"tabkey\": e.alttabkey })\r\n }\r\n else if (e.onhidetabcondition && props && props.dataItem && props.dataItem[e.nested] && props.dataItem[e.nested].Status == e.hidetabval) {\r\n displaytab = _.find(components, { \"tabkey\": e.alttabkey })\r\n }\r\n else if (e.onhidetabcondition && props && props.dataItem && props.dataItem.Status) {\r\n displaytab = props.dataItem.Status == 'A' ? (props.dataItem.IsAdmin == 'Y' ? _.find(components, { \"tabkey\": e.alttabkey }) : _.find(components, { \"tabkey\": e.tabkey })) : _.find(components, { \"tabkey\": e.alttabkey })\r\n }\r\n else if (e.hidetab && props && props.dataItem && props.dataItem.AuthType !== e.dataItemVal) {\r\n displaytab = props.dataItem.AuthType !== e.dataItemVal ? _.find(components, { \"tabkey\": e.alttabkey }) : _.find(components, { \"tabkey\": e.tabkey })\r\n }\r\n else if (e.hidetab && props && props.dataItem && props.dataItem.AuthType === e.dataItemVal) {\r\n displaytab = (props.dataItem.AuthType === e.dataItemVal && (props.dataItem.IsAdmin == 'Y' || props.dataItem.Status == 'I')) ? _.find(components, { \"tabkey\": e.alttabkey }) : _.find(components, { \"tabkey\": e.tabkey })\r\n }\r\n else if (e.showtab && props.dataItem.IsAdmin) //Access Control Tab\r\n {\r\n displaytab = props.dataItem.IsAdmin == 'Y' ? (props.dataItem.Status == 'A' ? _.find(components, { \"tabkey\": e.alttabkey }) : _.find(components, { \"tabkey\": e.inactiveusertabkey })) : _.find(components, { \"tabkey\": e.tabkey })\r\n }\r\n else if (e.profileaccesscontrol || e.profilepwd) {\r\n displaytab = e.profileaccesscontrol ? (Admin ? _.find(components, { \"tabkey\": e.alttabkey }) : _.find(components, { \"tabkey\": e.tabkey })) : (Admin ? _.find(components, { \"tabkey\": e.alttabkey }) : _.find(components, { \"tabkey\": e.tabkey }))\r\n }\r\n else {\r\n displaytab = _.find(components, { \"tabkey\": e.tabkey })\r\n }\r\n if (displaytab && displaytab.type) {\r\n const EachComp = compmap[displaytab.type]\r\n return <TabPanel value={value} index={i}>\r\n <EachComp dataItem={props.dataItem} compmap={compmap} components={displaytab.components || displaytab.options}\r\n actions={displaytab.actions || []} options={displaytab.options} accessPermissions={props.accessPermissions}\r\n datecomponents={displaytab.datecomponents} createdcomponents={displaytab.createdcomponents}\r\n onNextItemClick={props.onNextItemClick} onPrevItemClick={props.onPrevItemClick} onClose={props.onClose}\r\n handleTabChange={handleChange} initialloadextrainfo={props.initialloadextrainfo} gridkey={displaytab && displaytab.gridkey ? displaytab.gridkey : gridkey} />\r\n </TabPanel>\r\n }\r\n else return <></>\r\n })}\r\n {openConfirmation && <Confirmation open={openConfirmation} handleBack={handleClose} />}\r\n </div>\r\n );\r\n}\r\n","/**\r\n *********************************************************\r\n Description: Hanldes text. different types- dtext, datetimetext. dtext handles dynamic text. datetimetext handles datetime text.\r\n Required props: type.\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\n\r\nimport React, { Component, Fragment } from 'react';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport moment from 'moment'\r\nimport Chip from '@material-ui/core/Chip';\r\nimport FaceIcon from '@material-ui/icons/Face';\r\nimport CalandarIcon from '@material-ui/icons/CalendarToday';\r\n\r\nconst CText = (props) => {\r\n const { options, style, type, value, edit, editduplicate } = props;\r\n const { text, error, divstyle, ...otherOptions } = options ? options : { text: '' }\r\n let dvalue = null\r\n if (type === 'dtext') {\r\n if (value) {\r\n dvalue = <div className=\"row col\"> <Typography variant={'subtitle2'} color={error ? 'secondary' : 'primary'}>{text} </Typography> <Typography variant={'body2'} color={error ? 'secondary' : 'textPrimary'}>{value ? value : ''} </Typography></div>\r\n }\r\n // else dvalue = text + (value ? value : \"\")\r\n // else dvalue = <div className=\"row col\"> <Typography variant={'subtitle2'} color={error ? 'secondary' : 'primary'}>{text} </Typography> <Typography variant={'body2'} color={error ? 'secondary' : 'textPrimary'}>{value ? value : ''} </Typography></div>\r\n }\r\n if (type === 'etext') dvalue = (value ? value : \"\")\r\n // if (type === 'datetimetext') dvalue = (value ? value : \"\")\r\n if (type === 'datetimetext') {\r\n if (value) {\r\n const val = value.split('+');\r\n dvalue = val[0];\r\n }\r\n else\r\n dvalue = \"\"\r\n }\r\n\r\n\r\n return (\r\n <Fragment>\r\n <Typography style={style} {...otherOptions}>\r\n {(type === 'text') && <div className=\"row pl-3 m-1\" style={divstyle}>{text}</div>}\r\n {(type === 'etext') && <div className=\"row col pt-3\" style={{ color: '#f50057' }}>{dvalue === null ? '' : dvalue}</div>}\r\n {(type === 'dtext') && <div className=\"row col\">{dvalue === null ? '' : dvalue}</div>}\r\n {(type === 'datetimetext' && value != null) && <div className={!edit ? \" \" : \" \"}> <Typography variant={'subtitle2'}\r\n color={'primary'}>{text} </Typography> <Typography variant={'body2'} color={'textPrimary'}>\r\n {moment(dvalue).format('MM/DD/YYYY hh:mm:ss A') === \"Invalid date\" ? '' : moment(dvalue).format('MM/DD/YYYY hh:mm:ss A')} </Typography>\r\n </div>}\r\n {(type === 'infotext') && <small style={{ fontSize: '12px' }} className=\"text-secondary\">{text}</small>}\r\n {(type === 'historyuser' && !editduplicate && value != null && value != \"\") && <small style={{ fontSize: '12px' }} >\r\n <span className=\"fw-bold\"> {text}</span>{\" \"}<span className=\"text-secondary\">{value} </span>\r\n </small>}\r\n {(type === 'historydate' && !editduplicate && value != null && value != \"\" && value !== undefined && value) && <small style={{ fontSize: '12px' }} >\r\n <span className=\"fw-bold\"> {text}</span>{\" \"} <span className=\"text-secondary\">{(moment(value).format('MM/DD/YYYY hh:mm:ss A') === \"Invalid date\" ? '' : moment(value).format('MM/DD/YYYY hh:mm:ss A'))} </span>\r\n </small>}\r\n\r\n </Typography>\r\n </Fragment>\r\n )\r\n\r\n}\r\n\r\n\r\n\r\nexport default CText;\r\n\r\n\r\n\r\n\r\n/**\r\n * {\r\n * type:'title',\r\n * options:{\r\n * text:'',\r\n * },\r\n * defaults:{\r\n * layout:'material',\r\n * customlayout: false\r\n * }\r\n * }\r\n */","/**\r\n *********************************************************\r\n deprecated\r\n *********************************************************\r\n**/\r\n\r\nimport React, { Component, Fragment } from 'react';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport InputAdornment from '@material-ui/core/InputAdornment';\r\n\r\nclass CTextBox extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.subform = {};\r\n this.state = {\r\n globalitem: null\r\n }\r\n }\r\n\r\n\r\n handleChange = (name, validations) => event => {\r\n const target = event.target;\r\n if (target) {\r\n const value = target && target.value;\r\n let invalid = ''\r\n if (validations && (validations.length > 0)) {\r\n validations && validations.forEach(each => {\r\n if (validations[each]) {\r\n const returnval = validations[each](value)\r\n if (returnval) invalid += returnval + '/n'\r\n\r\n }\r\n if (invalid !== '') {\r\n if (this.props.setFormFieldValue) {\r\n this.props.setFormFieldValue(name, value, true, invalid)\r\n }\r\n }\r\n else {\r\n if (this.props.setFormFieldValue) {\r\n this.props.setFormFieldValue(name, value)\r\n }\r\n }\r\n })\r\n }\r\n else {\r\n if (this.props.setFormFieldValue) {\r\n this.props.setFormFieldValue(name, value)\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n render() {\r\n const { options, rules } = this.props;\r\n const { id, label, name, type, placeholder, helperText, validations, disabled, required, menuProps, inputLabelProps, inputattrprops, inputprops, inputadornmentprops, margin, ...otherOptions } = options\r\n const { subform, initialvalue } = options\r\n const { value, error } = this.props.currentValue\r\n let helpfultext\r\n if (error) helpfultext = this.props.currentValue.helperText\r\n let ainputadornment = {}\r\n if (inputadornmentprops) {\r\n let position = inputadornmentprops.position || 'start'\r\n ainputadornment = (position === 'start') && <InputAdornment {...inputadornmentprops} />\r\n if (position === 'end') {\r\n ainputadornment = {\r\n endAdornment: <InputAdornment position={position}>\r\n {inputadornmentprops.children}\r\n </InputAdornment>\r\n }\r\n }\r\n else {\r\n ainputadornment = {\r\n endAdornment: <InputAdornment position={position}>\r\n {inputadornmentprops.children}\r\n </InputAdornment>\r\n }\r\n }\r\n }\r\n\r\n\r\n return (\r\n <Fragment>\r\n <TextField\r\n fullWidth\r\n disabled={disabled}\r\n error={error}\r\n type={type}\r\n required={required}\r\n label={label}\r\n margin={margin || 'none'}\r\n value={value || initialvalue || ''}\r\n name={name}\r\n onChange={this.handleChange(name, validations)}\r\n placeholder={placeholder}\r\n helperText={helpfultext || helperText}\r\n InputProps={{ ...ainputadornment, ...inputprops }}\r\n inputProps={inputattrprops}\r\n InputLabelProps={{shrink: true}}\r\n {...otherOptions}\r\n />\r\n {this.state.globalitem}\r\n </Fragment>\r\n )\r\n }\r\n}\r\n\r\nexport default CTextBox;\r\n\r\n\r\n/**\r\n * {\r\n * type:'textbox',\r\n * options:{\r\n * id:'standard-name',\r\n * label:'name',\r\n * value:'textbox',\r\n * name:'textbos'\r\n * },\r\n * defaults:{\r\n * theme:'material',\r\n * }\r\n * }\r\n */\r\n\r\n\r\n // if (target || initialvalue) {\r\n // const value = target && target.value;\r\n // this.setState({\r\n // [name]: value || initialvalue\r\n // });\r\n // }\r\n\r\n // if (rules) {\r\n // const changedval = checkcomp(value, rules, 'onChange', this.props.passer)\r\n // this.setState({\r\n // globalitem: changedval\r\n // })\r\n // }\r\n\r\n// if (rules) {\r\n// const { add, del, edit, styling } = rules\r\n\r\n// if (add || del || edit || styling) {\r\n// const { mapeventstovalues, scope, items } = add\r\n// if (mapeventstovalues.onChange) {\r\n// passaddcomp(mapeventstovalues.onChange)\r\n// if (scope) {\r\n// const { passer, passertype, passervar } = this.props\r\n// const SpecificPasser = passer\r\n// let passeraction\r\n// if (passer) {\r\n// this.setState({\r\n// globalitem: <SpecificPasser type={passertype} message={items} />\r\n// })\r\n// }\r\n// this.setState({\r\n// textelement: <Fragment>\r\n// {this.state.globalitem}\r\n// </Fragment>\r\n// })\r\n\r\n// }\r\n// else {\r\n// this.props.dropdownchange(items)\r\n// }\r\n// }\r\n// else return\r\n// }\r\n// if (del) {\r\n// const { mapeventstovalues, scope, items } = del\r\n// if (mapeventstovalues.onChange) {\r\n// if (scope) {\r\n// const { passer, passertype, passervar } = this.props\r\n// const SpecificPasser = passer\r\n// let passeraction\r\n// if (passer) {\r\n// this.setState({\r\n// globalitem: <SpecificPasser type={passertype} message={items} />\r\n// })\r\n// }\r\n// this.setState({\r\n// textelement: <Fragment>\r\n// {this.state.globalitem}\r\n// </Fragment>\r\n// })\r\n\r\n// }\r\n// else {\r\n// this.props.dropdownchange(items)\r\n// }\r\n// }\r\n// else return\r\n// }\r\n// if (edit) {\r\n// const { mapeventstovalues, scope, items } = edit\r\n// if (mapeventstovalues.onChange) {\r\n// if (scope) {\r\n// const { passer, passertype, passervar } = this.props\r\n// const SpecificPasser = passer\r\n// let passeraction\r\n// if (passer) {\r\n// this.setState({\r\n// globalitem: <SpecificPasser type={passertype} message={items} />\r\n// })\r\n// }\r\n// this.setState({\r\n// textelement: <Fragment>\r\n// {this.state.globalitem}\r\n// </Fragment>\r\n// })\r\n\r\n// }\r\n// else {\r\n// this.props.dropdownchange(items)\r\n// }\r\n// }\r\n// else return\r\n// }\r\n// if (styling) {\r\n// const { mapeventstovalues, scope, items } = styling\r\n// if (mapeventstovalues.onChange) {\r\n// if (scope) {\r\n// const { passer, passertype, passervar } = this.props\r\n// const SpecificPasser = passer\r\n// let passeraction\r\n// if (passer) {\r\n// passeraction = <SpecificPasser type={passertype} message={items} />\r\n// }\r\n// this.setState({\r\n// textelement: <Fragment>\r\n// {this.state.globalitem}\r\n// </Fragment>\r\n// })\r\n\r\n// }\r\n// else {\r\n// this.props.dropdownchange(items)\r\n// }\r\n// }\r\n// else return\r\n// }\r\n// }"," /**\r\n *********************************************************\r\n deprecated\r\n *********************************************************\r\n **/\r\nimport React, { Component, Fragment } from 'react';\r\nimport Icon from '@material-ui/core/Icon';\r\nimport Button from '@material-ui/core/Button';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport { checkcomp } from './utilities';\r\n\r\nconst styles = theme => ({\r\n button: {\r\n margin: theme.spacing(1),\r\n },\r\n leftIcon: {\r\n marginRight: theme.spacing(1),\r\n },\r\n rightIcon: {\r\n marginLeft: theme.spacing(1),\r\n }\r\n});\r\n\r\nclass CToggleButton extends Component {\r\n state = {\r\n globalitem: null,\r\n open: true\r\n }\r\n\r\n handleClick = (name, rules, passer) => event => {\r\n\r\n if (rules) {\r\n const changedval = checkcomp(!this.state.open, rules, 'onClick', this.props.passer)\r\n this.setState({\r\n globalitem: changedval\r\n })\r\n }\r\n this.setState({\r\n open: !this.state.open\r\n })\r\n\r\n }\r\n\r\n render() {\r\n const { classes } = this.props\r\n const { options, rules, passer, type } = this.props;\r\n const { text, icon, color, disabled, href, size, variant, ...otherOptions } = options\r\n const { iconname, iconColor, iconFontSize, iconposition, ...otherIconProps } = icon\r\n return (\r\n <Fragment>\r\n {type === 'togglebutton' && <Button onClick={this.handleClick( rules, passer)}\r\n color={color || 'default'}\r\n disabled={disabled}\r\n href={href}\r\n size={size}\r\n variant={variant}\r\n {...otherOptions}\r\n >\r\n {text}\r\n {(iconposition === 'left') && <Icon\r\n className={classes.leftIcon} color={iconColor || 'inherit'} fontSize={iconFontSize || 'default'} {...otherIconProps}>{iconname}\r\n </Icon>\r\n }\r\n {!(iconposition === 'left') && <Icon\r\n className={classes.rightIcon} color={iconColor || 'inherit'} fontSize={iconFontSize || 'default'} {...otherIconProps}>{iconname}\r\n </Icon>\r\n }\r\n\r\n </Button>}\r\n {type === 'toggleicon' && <Icon\r\n onClick={this.handleClick( rules, passer)}\r\n color={'primary'} fontSize={iconFontSize || 'default'} {...otherIconProps}\r\n >\r\n {iconname}\r\n </Icon>\r\n }\r\n {this.state.globalitem}\r\n </Fragment>\r\n\r\n )\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(CToggleButton);\r\n\r\n\r\n\r\n/**\r\n * {\r\n * type:'button',\r\n * options:{\r\n * text:'alarm',\r\n * icon:'alarm',\r\n * button:''\r\n * },\r\n * defaults:{\r\n * theme:'default',\r\n * custom: false\r\n * }\r\n * }\r\n */","import { Button } from '@material-ui/core';\r\nimport '@progress/kendo-react-animation';\r\nimport { handleTreeViewCheckChange, processTreeViewItems, TreeView } from '@progress/kendo-react-treeview';\r\nimport React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { bindActionCreators } from 'redux';\r\nimport { passtabData, snackbarMessage } from '../../actions';\r\nimport ProgressBar from '../progress-bar';\r\nimport { getData, postRecordData } from '../rest';\r\nimport FormHeader from './cformheader';\r\nconst _ = require('lodash');\r\n\r\nclass CTreeView extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n items: null, singleMode: false, checkChildren: true, checkParents: true, newtempitem: null,\r\n check: { ids: [], applyCheckIndeterminate: true },\r\n };\r\n this.newArray = []\r\n this.loaditems = []\r\n }\r\n componentDidMount() {\r\n const { options, components, extraProps, match, dataItem } = this.props\r\n const { crud, validations, iscurrentuser } = options ? options : {}\r\n const { read } = crud ? crud : {}\r\n const { get } = read ? read : {}\r\n const { routeProps, customProps } = get ? get : {}\r\n const { addURL } = match;\r\n let ids = [], id, treeURL;\r\n this.progressbar.start();\r\n if (Array.isArray(routeProps)) {\r\n routeProps.forEach(each => {\r\n const { value } = each\r\n ids.push({ key: value, value: this.props.match.params[value] })\r\n })\r\n }\r\n else if (routeProps) {\r\n id = routeProps ? this.props.match.params[routeProps.value] : null\r\n }\r\n else if (customProps) {\r\n id = customProps ? (dataItem.Id || dataItem.userId) : null\r\n }\r\n if (iscurrentuser && this.props.accessPermissions) {\r\n id = this.props.accessPermissions.userId;\r\n }\r\n if (addURL == \"?isadmin=Y\") {\r\n treeURL = get.url + id + addURL;\r\n }\r\n else {\r\n if (id)\r\n treeURL = get.url + id;\r\n else\r\n treeURL = get.url\r\n }\r\n getData(treeURL).then(res => {\r\n let result = this.treeStructurechange(res)\r\n this.setState({ items: result, newtempitem: result })\r\n\r\n this.progressbar.complete();\r\n }).catch(err => {\r\n if (err)\r\n this.progressbar && this.progressbar.complete();\r\n });\r\n }\r\n\r\n getAllId = (arr, key) => {\r\n arr.forEach(item => {\r\n for (let elements in item) {\r\n if (elements === key) {\r\n if (item.checked) {\r\n let checkeditem = { parentID: item.parentID, id: item.id }\r\n this.newArray.push(checkeditem)\r\n }\r\n } else if (Array.isArray(item[elements])) {\r\n this.getAllId(item[elements], key)\r\n }\r\n }\r\n\r\n })\r\n }\r\n\r\n getPathdata = (array, id, parentID) => {\r\n var result;\r\n array.some((o, i) => {\r\n var temp;\r\n if (o.id === id && o.parentID == parentID) return result = `${i}`;\r\n if (temp = this.getPathdata(o.items || [], id, parentID)) return result = `${i}_${temp}`;\r\n });\r\n return result;\r\n }\r\n\r\n formatData = (arr) => {\r\n arr.forEach(i => {\r\n if (_.isEqual(i.checked, true)) {\r\n i.checked = false\r\n i.items = _.isNull(i.items) ? [] : i.items\r\n this.formatData(i.items)\r\n } else {\r\n i.items = _.isNull(i.items) ? [] : i.items\r\n this.formatData(i.items)\r\n }\r\n });\r\n return arr;\r\n }\r\n\r\n treeStructurechange = (res) => {\r\n const { options, match } = this.props;\r\n const { addURL } = match;\r\n const { tree } = this.state\r\n const { headerProps, title, viewMode } = options;\r\n let isViewMode = viewMode\r\n if (addURL == \"?isadmin=Y\") {\r\n isViewMode = true;\r\n }\r\n return res.map(each => {\r\n each.expanded = true;\r\n each.disabled = isViewMode;\r\n if (each.items) {\r\n each.items = this.treeStructurechange(each.items);\r\n }\r\n return each\r\n })\r\n }\r\n\r\n handleSave = () => {\r\n const { options, components, extraProps, dataItem } = this.props\r\n const { crud, validations, title } = options ? options : {}\r\n const { update } = crud ? crud : {}\r\n const { put } = update ? update : {}\r\n const { routeProps, customProps } = put ? put : {}\r\n let ids = [], id\r\n if (Array.isArray(routeProps)) {\r\n routeProps.forEach(each => {\r\n const { value } = each\r\n ids.push({ key: value, value: this.props.match.params[value] })\r\n })\r\n }\r\n else if (routeProps) {\r\n id = routeProps ? this.props.match.params[routeProps.value] : null\r\n }\r\n else if (customProps) {\r\n id = customProps ? this.props.dataItem[customProps.custom] : null\r\n }\r\n postRecordData(put.url + id, processTreeViewItems(this.state.items, { check: this.state.check })).then(res => {\r\n this.props.snackbarMessage(title + ' Saved Successfully', 'success');\r\n this.props.onClose();\r\n }).catch(error => {\r\n this.props.snackbarMessage(JSON.stringify(error), 'error');\r\n })\r\n }\r\n\r\n handleDoneOutline = () => {\r\n this.props.passtabData(this.state.items);\r\n let e = {}\r\n this.props.handleTabChange(e, this.props.options.tabindex)\r\n }\r\n\r\n render() {\r\n const { options, match } = this.props;\r\n const { addURL } = match;\r\n const { items, check } = this.state\r\n const { headerProps, title, viewMode, designprops } = options;\r\n let isViewMode = viewMode;\r\n if (addURL == \"?isadmin=Y\") { isViewMode = true; }\r\n return (\r\n <Fragment>\r\n <div className=\" example-config\">\r\n <FormHeader className=\"float-right\" title={title}\r\n handleSave={this.handleSave}\r\n doneoutline={headerProps.doneoutline}\r\n handleDoneOutline={this.handleDoneOutline}\r\n sendbutton={headerProps.sendbutton}\r\n savebutton={headerProps.savebutton && !isViewMode}\r\n closebutton={headerProps.closebutton}\r\n handleClose={() => this.props.onClose()}\r\n designprops={designprops} />\r\n </div>\r\n <div> <ProgressBar ref={e => this.progressbar = e} /></div>\r\n {!isViewMode && <div className={!designprops ? 'row float-right p-2' : ''}>\r\n <Button variant=\"contained\" color=\"primary\" onClick={this.checkAll} >Check all</Button>\r\n <span> </span>\r\n <Button variant=\"contained\" color=\"primary\" onClick={this.uncheckAll}>Uncheck all</Button>\r\n </div>}\r\n <div className={!designprops ? \"row col-sm-12 eps-treestyles pt-2\" : \"\"}>\r\n <TreeView expandIcons={true} onExpandChange={this.onExpandChange}\r\n data={processTreeViewItems(items, {\r\n check: check\r\n })}\r\n checkboxes={true} onCheckChange={this.onCheckChange}\r\n\r\n />\r\n </div>\r\n\r\n </Fragment>\r\n );\r\n }\r\n\r\n onCheckChange = (event) => {\r\n const settings = {\r\n //singleMode: true,\r\n checkChildren: true,\r\n checkParents: true\r\n };\r\n let split = event.itemHierarchicalIndex.split(\"_\");\r\n let pop = [];\r\n let items = this.newCheckedChange(this.state.newtempitem, split);\r\n this.setState({ items: items, newtempitem: items, check: handleTreeViewCheckChange(event, this.state.check, items, settings) });\r\n }\r\n\r\n handleSubItems = (items, check) => {\r\n return items.map(each => {\r\n if (each && each.items && each.items.length > 0) {\r\n each.checked = check;\r\n this.handleSubItems(each.items, check)\r\n }\r\n else each.checked = check;\r\n return each\r\n })\r\n }\r\n\r\n newCheckedChange = (items, split) => {\r\n return items.map((each, index) => {\r\n if ((split && split.length > 0) && index === parseInt(split[0])) {\r\n split.shift();\r\n if (split.length !== 0)\r\n this.newCheckedChange(each.items, split)\r\n else {\r\n if (each && each.items && each.items.length > 0) {\r\n each.checked = !each.checked\r\n each.items = this.handleSubItems(each.items, each.checked);\r\n return each\r\n }\r\n else {\r\n each.checked = !each.checked\r\n }\r\n }\r\n }\r\n return each\r\n })\r\n }\r\n\r\n newExpandChange = (items, split, count) => {\r\n return items.map((each, index) => {\r\n if (index === parseInt(split[count])) {\r\n count++;\r\n if (split.length !== count) {\r\n this.newExpandChange(each.items, split, count)\r\n }\r\n else each.expanded = !each.expanded;\r\n }\r\n return each\r\n })\r\n }\r\n\r\n\r\n searchSpecifiedTreeItem(id, name, treeItems) {\r\n for (let index = 0; index < treeItems.length; index++) {\r\n const element = treeItems[index];\r\n if (element.id == id && element.text == name) {\r\n if (element && element.items.some(s => s.checked == false)) {\r\n element.checkIndeterminate = true;\r\n }\r\n else {\r\n element.checkIndeterminate = false;\r\n element.checked = true;\r\n }\r\n break;\r\n }\r\n if (element.items) {\r\n this.searchSpecifiedTreeItem(id, name, element.items);\r\n }\r\n }\r\n }\r\n\r\n makeChecked(items, isChecked) {\r\n items.forEach(e => { e.checked = isChecked });\r\n }\r\n\r\n onExpandChange = (event) => {\r\n let split = event.itemHierarchicalIndex.split(\"_\")\r\n let count = 0;\r\n let items = this.newExpandChange(this.state.newtempitem, split, count);\r\n this.setState({ items: items, newtempitem: items });\r\n\r\n }\r\n\r\n\r\n checkStatusChange = (items, status) => {\r\n return items.map(each => {\r\n each.checked = status\r\n if (each.items) {\r\n each.items = this.checkStatusChange(each.items, status);\r\n }\r\n return each\r\n })\r\n }\r\n\r\n\r\n\r\n checkAll = () => {\r\n const settings = { checkChildren: true, checkParents: true };\r\n let items = this.checkStatusChange(this.state.items, true);\r\n this.setState({ check: handleTreeViewCheckChange(this.state.check, items, settings) });\r\n }\r\n\r\n uncheckAll = () => {\r\n const settings = { checkChildren: true, checkParents: true };\r\n let items = this.checkStatusChange(this.state.items, false);\r\n this.setState({ check: handleTreeViewCheckChange(this.state.check, items, settings) });\r\n this.forceUpdate();\r\n }\r\n\r\n onSingleModeChange = ({ target: { checked } }) => {\r\n let { checkChildren, checkParents } = this.state;\r\n if (checked) {\r\n checkChildren = checkParents = false;\r\n }\r\n this.setState({ singleMode: checked, checkChildren, checkParents });\r\n }\r\n onCheckChildrenChange = ({ target: { checked } }) => {\r\n let { singleMode } = this.state;\r\n if (checked) {\r\n singleMode = false;\r\n }\r\n this.setState({ singleMode, checkChildren: checked });\r\n }\r\n onCheckParentsChange = ({ target: { checked } }) => {\r\n let { singleMode } = this.state;\r\n if (checked) {\r\n singleMode = false;\r\n }\r\n this.setState({ singleMode, checkParents: checked });\r\n }\r\n}\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage, passtabData }, dispatch);\r\n}\r\n\r\nCTreeView = connect(null, mapActions)(CTreeView)\r\nexport default withRouter(CTreeView)\r\n","import { Upload } from '@progress/kendo-react-upload';\r\nimport React, { Fragment } from 'react';\r\n\r\nclass CUpload extends React.Component {\r\n constructor(props){\r\n super(props)\r\n }\r\n\r\n onStatusChange = (e) =>{\r\n this.props.onStatusChange(e)\r\n }\r\n\r\n render() {\r\n const { saveUrl, removeUrl, attachmentTypeId, multiple, batch } = this.props\r\n return (\r\n <Fragment>\r\n <Upload\r\n batch= {batch}\r\n multiple= {multiple}\r\n defaultFiles={[]}\r\n withCredentials={false}\r\n saveUrl={saveUrl}\r\n removeUrl = {removeUrl}\r\n onStatusChange = {this.onStatusChange}\r\n />\r\n </Fragment>\r\n )\r\n }\r\n}\r\nexport default CUpload;","import { Card } from '@material-ui/core';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Select from '@material-ui/core/Select';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport FormHelperText from '@material-ui/core/FormHelperText'\r\nimport React, { Fragment } from 'react';\r\nconst _ = require('lodash');\r\n\r\nconst extract = ([beg, end]) => {\r\n const matcher = new RegExp(`${beg}(.*?)${end}`, 'gm');\r\n const normalise = (str) => str.slice(beg.length, end.length * -1);\r\n return function (str) {\r\n return str.match(matcher).map(normalise);\r\n }\r\n}\r\n\r\n// const dropValGenerator = (splitDropArray, val) => {\r\n// let generatestr = ''\r\n// splitDropArray.map((spl, index) => {\r\n// if (splitDropArray[index + 1])\r\n// generatestr = generatestr + '${' + `${spl}` + '}' + ' # '\r\n// else generatestr = generatestr + '${' + `${spl}` + '}'\r\n// })\r\n// return val.split('-')[0] + '-' + generatestr\r\n// }\r\n\r\nconst strGenerate = (text, dropdown) => {\r\n let str = '';\r\n if (text.length > dropdown.length) {\r\n text.map((t, i) => {\r\n str = str + t + ('${' + (dropdown[i] ? `${dropdown[i]}` : '') + '}')\r\n })\r\n }\r\n if (text.length < dropdown.length) {\r\n dropdown.map((t, i) => {\r\n str = str + (text[i] ? text[i] : '') + '${' + `${t}` + '}'\r\n })\r\n }\r\n if (text.length == dropdown.length) {\r\n dropdown.map((t, i) => {\r\n str = str + text[i] + '${' + `${t}` + '}'\r\n })\r\n }\r\n return str\r\n}\r\n\r\n\r\nexport default function CheckboxesTags(props) {\r\n const { handleFieldChange, dropdownvalues, edit, name, label, tooltip, disabled, error, required,\r\n defaultValue, htmlForLabel, helperText, id, transformProps, crud, styles, className, multiple, conditions, ...otherProps } = props;\r\n // let [dropval, setDropVal] = useState([]) //props.value && props.value !== undefined && props.value.includes(\"${\") ? extract(['{', '}'])(props.value) : ''\r\n // let [initalVal, setInitalVal] = useState([])\r\n let dropValues = dropdownvalues && dropdownvalues.length > 0 && dropdownvalues.split(',') || []\r\n let dropval = [];\r\n let initalVal = [];\r\n let val = props.value || '';\r\n let lastvalue = '';\r\n let changedVal = val\r\n if (dropValues && dropValues.length > 0 && changedVal === '') {\r\n changedVal = strGenerate(initalVal, dropValues)\r\n dropval = dropValues\r\n }\r\n if (changedVal && changedVal !== '') {\r\n if (changedVal !== '') {\r\n if (val && val.includes(\"${\")) {\r\n dropval = extract(['{', '}'])(changedVal)\r\n }\r\n if (val && val.includes(\"$\")) {\r\n let initial = []\r\n changedVal = '}' + changedVal\r\n const words = changedVal.split('}');\r\n words.map(word => {\r\n if (word && word.includes(\"$\")) {\r\n initial.push(word.substr(0, word.indexOf('$')))\r\n initalVal = initial\r\n }\r\n else lastvalue = word\r\n })\r\n }\r\n }\r\n }\r\n // macth dropval and dropValues\r\n if (dropValues && dropValues.length > 0 && (props.value && props.value !== '' && props.value.includes(\"${\"))) {\r\n let inital = [];\r\n if (dropValues && dropval && (dropValues.length > dropval.length)) {\r\n let newDrop = _.difference(dropValues, dropval);\r\n let splitDropArray = extract(['{', '}'])(val);\r\n if (!(newDrop.some(r => dropValues.indexOf(r) >= 0)) && newDrop && newDrop.length > 0) {\r\n newDrop.map(nd => {\r\n const index = splitDropArray.indexOf(nd);\r\n if (index > -1) {\r\n _.pullAt(dropval, [index])\r\n // splitDropArray = splitDropArray.splice(index, 1);\r\n _.pullAt(initalVal, [index])\r\n // inital = initalVal.splice(index + 1, 1);\r\n // dropval = splittedArray\r\n }\r\n })\r\n // dropval = splittedArray;\r\n initalVal = inital\r\n val = strGenerate(initalVal, splitDropArray)\r\n //setDropVal(extract(['{', '}'])(val))\r\n }\r\n }\r\n else if (dropValues && dropval && (dropValues.length < dropval.length)) {\r\n let newDrop = _.difference(dropval, dropValues);\r\n let splittedArray = extract(['{', '}'])(val);\r\n if (!(dropValues.some(r => newDrop.indexOf(r) >= 0)) && newDrop && newDrop.length > 0) {\r\n newDrop.map(nd => {\r\n const index = splittedArray.indexOf(nd);\r\n if (index > -1) {\r\n _.pullAt(dropval, [index])\r\n // splitDropArray = splitDropArray.splice(index, 1);\r\n _.pullAt(initalVal, [index])\r\n\r\n }\r\n })\r\n // initalVal = inital\r\n // dropval = splittedArray\r\n if (dropval && dropval.length > 0)\r\n val = strGenerate(initalVal, dropval)\r\n }\r\n }\r\n }\r\n\r\n const handleChange = (event, index) => {\r\n const { value, name } = event.target;\r\n let splitDropArray = dropval;\r\n let textval = initalVal;\r\n if (name === 'initalVal') {\r\n if (textval.length > 0) {\r\n textval[index] = value;\r\n if (!splitDropArray[index]) {\r\n splitDropArray.push(dropValues[index])\r\n }\r\n }\r\n else {\r\n if (dropValues[index] !== splitDropArray[index]) {\r\n splitDropArray.push(dropValues[index])\r\n }\r\n textval.push(value);\r\n\r\n }\r\n // setInitalVal(textval)\r\n initalVal = textval\r\n // splitDropArray = extract(['{', '}'])(changedVal);\r\n }\r\n // lastvalue = initalVal.pop()\r\n if (name === 'dropval') {\r\n if (splitDropArray.length > 0)\r\n splitDropArray[index] = value;\r\n\r\n else {\r\n splitDropArray.push(value)\r\n }\r\n dropval = splitDropArray\r\n }\r\n\r\n let result = strGenerate(textval, splitDropArray)\r\n handleFieldChange({ target: { name: props.name, value: result + lastvalue, checked: false } })\r\n }\r\n\r\n const handleLastVal = (event) => {\r\n const { value, name } = event.target;\r\n let result = strGenerate(initalVal, dropval)\r\n handleFieldChange({ target: { name: props.name, value: result + value, checked: false } })\r\n }\r\n // US${34343}YP${sdfsd}oopp\r\n\r\n if (edit === true) {\r\n return (<Fragment>\r\n <small className=\"pt-1 fw-bold \" style={{ fontSize: '13px' }}>{label}</small> <br />\r\n <Card style={{ maxHeight: '300px', overflow: 'auto' }}>\r\n {dropValues && dropValues.length > 0 && dropValues.map((drop, i) => {\r\n return <Fragment>\r\n <TextField value={initalVal[i]} className=\"m-1 p-0\" onChange={(event) => handleChange(event, i)} name={'initalVal'} /> \r\n <Select\r\n value={(dropval && dropval.length > 0 && dropval[i]) || drop[i]}\r\n onChange={(event) => handleChange(event, i)}\r\n name={'dropval'}\r\n className=\"col-sm-5 my-1 mt-2\"\r\n >\r\n {dropValues && dropValues.length > 0 && dropValues.map(item => {\r\n return <MenuItem value={item}>{item}</MenuItem>\r\n })}\r\n </Select> <br /></Fragment>\r\n\r\n })}\r\n <TextField value={lastvalue} className=\"m-1\" onChange={(event) => handleLastVal(event)} name={'lastvalue'} /> \r\n </Card>\r\n {helperText && <FormHelperText error>{helperText}</FormHelperText>}\r\n </Fragment>\r\n );\r\n }\r\n if (edit === false) {\r\n return <Fragment>\r\n {tooltip && <div > <Typography variant={'caption'} className=\"fw-bold\" >{label} \r\n < Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em' }} />\r\n </Tooltip> </Typography> <Typography variant={'body2'} color={'textPrimary'} className=\"text-secondary\">{props.value || ''} </Typography>\r\n </div>}\r\n {!tooltip && <div > <Typography variant={'caption'} className=\"fw-bold\">{label} </Typography> <Typography variant={'body2'} color={'textPrimary'}\r\n className=\"text-secondary\">{props.value || ''} </Typography>\r\n </div>}\r\n </Fragment >\r\n }\r\n\r\n}","import React, { Component, Fragment } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { requestApi } from './utilities'\r\nimport FormHeader from './cformheader'\r\nimport { bindActionCreators } from 'redux'\r\nimport { snackbarMessage } from '../../actions';\r\nimport CRichTextEditor from './cwysiwyg';\r\nimport CFormTextBox from './cformtextbox';\r\nimport CFormDiscussionPanel from './cformdiscussionpanel';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport moment from 'moment';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport { connect } from 'react-redux';\r\nimport Autocompletetags from '../../controls/components/custom/autocompletetagsnotification'\r\nimport FormHelperText from '@material-ui/core/FormHelperText'\r\nimport { getEnvVariable } from '../../../modules/environmentalList';\r\nconst _ = require('lodash');\r\n\r\n//comment\r\nclass DiscussionsForm extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.LayoutForm = React.createRef();\r\n this.effects = {};\r\n this.state = {\r\n InternalUsersDetails: [],\r\n AppContactsDetails: [],\r\n InternalUsers: '',\r\n AppContacts: '',\r\n subhelpertext: null,\r\n helpertextbody: null,\r\n compareresults: {},\r\n results: {},\r\n showsend: false\r\n };\r\n //this.requiredFields=[\"Subject\",\"Body\",\"InternalUsers\",\"AppContacts\"]\r\n }\r\n componentDidMount() {\r\n this.didmountinitialload();\r\n }\r\n\r\n didmountinitialload() {\r\n //this.progressBar.start()\r\n const { options, components, extraProps, dataItem } = this.props\r\n const { crud } = options ? options : {}\r\n const { read } = crud ? crud : {}\r\n const { get } = read ? read : {}\r\n const { routeProps, hidepath } = get ? get : {}\r\n let ids = [], id\r\n if (hidepath) {\r\n id = this.props.accessPermissions.userId;\r\n }\r\n else {\r\n if (Array.isArray(routeProps)) {\r\n routeProps.forEach(each => {\r\n const { value, custom } = each;\r\n if (custom) {\r\n ids.push({ key: custom, value: dataItem[custom] })\r\n }\r\n else ids.push({ key: value, value: this.props.match.params[value] })\r\n })\r\n }\r\n else if (routeProps) {\r\n id = routeProps ? this.props.match.params[routeProps.value] : null\r\n }\r\n }\r\n if (read) {\r\n requestApi(read, (ids.length > 0 ? ids : id)).then(result => {\r\n let InverseParentDiscussion = { InverseParentDiscussion: _.reverse(result.InverseParentDiscussion) }\r\n this.setState({\r\n PermitNumber: this.props && this.props.initialloadextrainfo && this.props.initialloadextrainfo.results[\"REFERENCE_KEY\"] == \"VIOLATIONS\" ? this.props.initialloadextrainfo.results[\"Id\"] : this.props.initialloadextrainfo.results[\"REFERENCE_KEY\"] != \"VIOLATIONS\" && this.props.initialloadextrainfo.results[\"REFERENCE_KEY\"] != undefined ? this.props.initialloadextrainfo.results[\"RECORDS_REF\"] : this.props.initialloadextrainfo.results[\"PERMIT_NO\"],\r\n showsend: true,\r\n results: { ...result, ...InverseParentDiscussion, PermitNumber: this.props && this.props.initialloadextrainfo && this.props.initialloadextrainfo.results[\"REFERENCE_KEY\"] == \"VIOLATIONS\" ? this.props.initialloadextrainfo.results[\"Id\"] : this.props.initialloadextrainfo.results[\"REFERENCE_KEY\"] != \"VIOLATIONS\" && this.props.initialloadextrainfo.results[\"REFERENCE_KEY\"] != undefined ? this.props.initialloadextrainfo.results[\"RECORDS_REF\"] : this.props.initialloadextrainfo.results[\"PERMIT_NO\"] },\r\n compareresults: _.isEmpty({}, this.state.compareresults) ? result : this.state.compareresults\r\n }, () => this.loadContacts());\r\n // this.progressBar.complete();\r\n })\r\n .catch(err => {\r\n this.props.snackbarMessage('Invalid Data. Please verify.', 'error');\r\n })\r\n } else {\r\n this.setState({\r\n results: { PermitNumber: this.props && this.props.initialloadextrainfo && this.props.initialloadextrainfo.results[\"REFERENCE_KEY\"] == \"VIOLATIONS\" ? this.props.initialloadextrainfo.results[\"Id\"] : this.props.initialloadextrainfo.results[\"REFERENCE_KEY\"] != \"VIOLATIONS\" && this.props.initialloadextrainfo.results[\"REFERENCE_KEY\"] != undefined ? this.props.initialloadextrainfo.results[\"RECORDS_REF\"] : this.props.initialloadextrainfo.results[\"PERMIT_NO\"] },\r\n PermitNumber: this.props && this.props.initialloadextrainfo && this.props.initialloadextrainfo.results[\"REFERENCE_KEY\"] == \"VIOLATIONS\" ? this.props.initialloadextrainfo.results[\"Id\"] : this.props.initialloadextrainfo.results[\"REFERENCE_KEY\"] != \"VIOLATIONS\" && this.props.initialloadextrainfo.results[\"REFERENCE_KEY\"] != undefined ? this.props.initialloadextrainfo.results[\"RECORDS_REF\"] : this.props.initialloadextrainfo.results[\"PERMIT_NO\"]\r\n })\r\n this.loadContacts()\r\n // this.progressBar.complete();\r\n }\r\n }\r\n\r\n loadContacts() {\r\n const { results } = this.state\r\n let InternalUsers, AppContacts\r\n if (results) {\r\n InternalUsers = results.InternalUsers\r\n AppContacts = results.AppContacts\r\n }\r\n let propssiteid = this.props.initialloadextrainfo && this.props.initialloadextrainfo.results && this.props.initialloadextrainfo.results[\"SITE_ID\"] ? this.props.initialloadextrainfo.results[\"SITE_ID\"] : null\r\n let propsregionid = this.props.initialloadextrainfo && this.props.initialloadextrainfo.results && this.props.initialloadextrainfo.results[\"REGION_ID\"] ? this.props.initialloadextrainfo.results[\"REGION_ID\"] : null\r\n let propsdistrictid = this.props.initialloadextrainfo && this.props.initialloadextrainfo.results && this.props.initialloadextrainfo.results[\"DISTRICT_ID\"] ? this.props.initialloadextrainfo.results[\"DISTRICT_ID\"] : null\r\n let propsrecordid = this.props.match.params[\"routeid1\"]\r\n let propscontactid = this.props.initialloadextrainfo && this.props.initialloadextrainfo.results && this.props.initialloadextrainfo.results[\"SELECT_USER\"] ? this.props.initialloadextrainfo.results[\"SELECT_USER\"] : null\r\n let configType = this.props.accessPermissions.configType\r\n let configid = this.props.accessPermissions.configType == 'R' ? propsregionid : this.props.accessPermissions.configType == 'S' ? propssiteid : this.props.accessPermissions.configType == 'D' ? propsdistrictid : null\r\n\r\n\r\n let internalUsersRead = { \"get\": { \"url\": getEnvVariable('MasterAdmin')+`/api/InternalAccessControlView/GetUsersListByConfigType/`+getEnvVariable('ModuleKey')+`/${configid}/${configType}` } }\r\n let appContacts\r\n if (propscontactid) {\r\n appContacts = { \"get\": { \"url\": getEnvVariable('Application') + `/api/AppContacts/${propsrecordid}/${propscontactid}/ApplicationContactsList` } }\r\n }\r\n else {\r\n this.props.snackbarMessage('No Applicant Found', 'error')\r\n\r\n }\r\n requestApi(internalUsersRead).then(results => {\r\n if (results && results.length > 0) {\r\n let internalusers = Array.from(new Set(results.map(s => s.id))).map(id => {\r\n return {\r\n id: id,\r\n name: results.find(a => a.id === id).name,\r\n description: results.find(a => a.id === id).description\r\n }\r\n })\r\n let preSelectedUsers = (InternalUsers && InternalUsers.length > 0) ? internalusers.filter(f => InternalUsers.split(',').includes(f.id.toString())) : []\r\n let internalUserDetailResults = this.state.results || {}\r\n internalUserDetailResults[\"InternalUsersDetails\"] = preSelectedUsers\r\n this.setState({\r\n InternalUsersDetails: internalusers,\r\n results: internalUserDetailResults\r\n })\r\n }\r\n })\r\n if (appContacts) {\r\n requestApi(appContacts).then(results => {\r\n if (results && results.length > 0) {\r\n let preSelectedUsers = (AppContacts && AppContacts.length > 0) ? results.filter(f => AppContacts.split(',').includes(f.id.toString())) : []\r\n let appcontactDetailResults = this.state.results || {}\r\n appcontactDetailResults[\"AppContactsDetails\"] = preSelectedUsers\r\n //let resdata = _.filter(results, { 'refType ': 1 });\r\n this.setState({\r\n AppContactsDetails: results,\r\n // AppContacts: String(resdata[0]['id']),\r\n // results: { ...this.state.results, AppContacts: String(resdata[0]['id']) }\r\n\r\n\r\n })\r\n }\r\n })\r\n }\r\n }\r\n\r\n handleSubjectChanged = (event) => {\r\n if (this.state.results == undefined || this.state.results == null) {\r\n this.state.results = {};\r\n }\r\n let results = this.state.results\r\n results[event.target.name] = event.target.value;\r\n this.setState({ results: results, subhelpertext: null });\r\n }\r\n\r\n handleCommentsChange = (event) => {\r\n this.state.results.Body = event.target.value;\r\n }\r\n\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevProps.dataItem != this.props.dataItem) {\r\n this.didmountinitialload();\r\n }\r\n\r\n }\r\n\r\n\r\n handleBack = () => {\r\n // let checkcond = this.state.results && this.state.compareresults ? !(_.isEqual(this.state.results, this.state.compareresults)) : false\r\n // if (checkcond) {\r\n // this.setState({ openconfirmation: true })\r\n // }\r\n // else {\r\n // this.setState({ openconfirmation: false })\r\n // this.props.onClose();\r\n // }\r\n this.props.onClose();\r\n }\r\n handleSave = () => {\r\n // this.progressBar.start();\r\n const { options, dataItem } = this.props\r\n const { crud } = options\r\n const save = crud.update\r\n const { put, post } = save || {}\r\n const { conditions } = put || {}\r\n let ids = [], id\r\n let strlength = this.state.results && this.state.results.Subject && this.state.results.Subject != null ? this.state.results.Subject.length : \"\"\r\n let subInValid = this.state.results && this.state.results.Subject ? this.state.results.Subject.trim() : null\r\n let editorVal = this.LayoutForm.current.getResult();\r\n // if(subInValid && subInValid.length==0 && this.state.results.Subject!=\"\"){\r\n // this.setState({subhelpertext: 'Subject is not valid'})\r\n // }\r\n // else if(this.state.results.Subject && this.state.results.Subject != \"\" && (this.state.results.Subject.charAt(0) === \" \" || this.state.results.Subject.charAt(strlength - 1) === \" \"))\r\n // {\r\n // this.setState({ subhelpertext: 'Leading or trailing spaces are not allowed' })\r\n // }\r\n if (!editorVal) {\r\n this.setState({ helpertextbody: \"Body is Required.\" })\r\n }\r\n\r\n if (strlength === \"\") {\r\n this.setState({ subhelpertext: 'Subject is required' })\r\n }\r\n else if (strlength > 100) {\r\n this.setState({ subhelpertext: 'Subject test length should be in the range of (1-100)' })\r\n }\r\n else if (((atob(editorVal)).length > 4000)) {\r\n this.setState({ helpertextbody: 'Body length should be in the range of (1-4000)' })\r\n }\r\n // if (this.state.results.AppContactsDetails && this.state.results.AppContactsDetails.length == 0 && this.props.accessPermissions.portal == \"E\" && this.props.match.params.key != 'VIOLATIONS') {\r\n // this.setState({ helpertextcontact: 'Field is required' })\r\n // }\r\n // else if (this.state.results.InternalUsersDetails && this.state.results.InternalUsersDetails.length == 0 && this.props.accessPermissions.portal == \"I\") {\r\n // this.setState({ helpertextinternaluser: 'Field is required' })\r\n // }\r\n else if (this.state.results && this.state.results.Subject) {\r\n\r\n if (!editorVal)\r\n this.setState({ helpertextbody: \"Body is Required.\" })\r\n\r\n else if (((atob(editorVal)).length > 4000)) {\r\n this.setState({ helpertextbody: 'Body length should be in the range of (1-4000)' })\r\n } else\r\n this.setState({ helpertextbody: null })\r\n if (editorVal && this.state.results) {\r\n let vald = ((editorVal));\r\n this.state.results.Body = vald;\r\n }\r\n if (put && editorVal) {\r\n let createput = true\r\n if (conditions) {\r\n if (!this.state.results[conditions.results]) createput = false\r\n }\r\n if (createput) {\r\n const { routeProps, matchProps } = save.put\r\n if (save.put && (save.put.matchProps || save.put.routeProps) && Array.isArray(save.put.matchProps || save.put.routeProps)) {\r\n const tempsaveprops = save.put.matchProps || save.put.routeProps\r\n tempsaveprops.forEach(each => {\r\n const { value, custom } = each\r\n if (custom) {\r\n ids.push({ key: custom, value: dataItem[custom] })\r\n }\r\n else ids.push({ key: value, value: this.props.match.params[value] })\r\n })\r\n }\r\n else {\r\n id = this.props.match.params.routeid\r\n }\r\n }\r\n else {\r\n const { routeProps, matchProps } = save.post\r\n if (save.post && (save.post.matchProps || save.post.routeProps) && Array.isArray(save.post.matchProps || save.post.routeProps)) {\r\n const tempsaveprops = save.post.matchProps || save.post.routeProps\r\n tempsaveprops.forEach(each => {\r\n const { value } = each\r\n ids.push({ key: value, value: this.props.match.params[value] })\r\n })\r\n }\r\n else {\r\n const { routeProps, matchProps } = save.post\r\n id = routeProps ? this.props.match.params[routeProps.value] : null\r\n }\r\n }\r\n\r\n }\r\n else if (post && editorVal) {\r\n const { routeProps, matchProps } = save.post\r\n if (save.post && (save.post.matchProps || save.post.routeProps) && Array.isArray(save.post.matchProps || save.post.routeProps)) {\r\n const tempsaveprops = save.post.matchProps || save.post.routeProps\r\n tempsaveprops.forEach(each => {\r\n const { value } = each\r\n ids.push({ key: value, value: this.props.match.params[value] })\r\n })\r\n }\r\n else {\r\n const { routeProps, matchProps } = save.post\r\n id = routeProps ? this.props.match.params[routeProps.value] : null\r\n }\r\n }\r\n\r\n\r\n if (save && editorVal) {\r\n const { results, formControls, errors, errfieldnames } = this.state\r\n const requiredFields = this.requiredFields\r\n const requiredFieldsKeys = requiredFields && Object.keys(requiredFields)\r\n let changedFieldName = []\r\n let err\r\n if (requiredFieldsKeys) {\r\n !errors && requiredFieldsKeys.forEach(each => {\r\n if (requiredFields[each]) {\r\n const value = formControls[each].value\r\n if ((value === null) || (value === undefined) || (value === '')) {\r\n err = true\r\n changedFieldName.push({ ...this.state.formControls[each], name: each, error: true, helperText: 'Field is Required' })\r\n }\r\n }\r\n\r\n })\r\n }\r\n if (err) {\r\n console.log('errors----------------', changedFieldName)\r\n this.setState({\r\n errors: true,\r\n changedFieldName: changedFieldName\r\n })\r\n }\r\n else {\r\n const { components, options, formgridadd, sidepopupadd } = this.props\r\n const { addtoresults, title } = options ? options : { addtoresults: {} }\r\n let res = { ...this.state.results, ...addtoresults }\r\n components.forEach(each => {\r\n const { options } = each\r\n const { excludefromresults, name } = options ? options : {}\r\n excludefromresults && delete res[name]\r\n })\r\n !errors && requestApi(save, (id || ids), res).then(results => {\r\n const { headerProps } = options\r\n const { navigateview, navigateadd } = headerProps;\r\n if (navigateview) {\r\n this.LayoutForm.current.clearResult();\r\n this.setState({ showview: true, results: results, compareresults: results, showsend: true, showsavebtn: false }, () => {\r\n // this.props.snackbarMessage(title + ' Updated Successfully', 'success')\r\n //this.progressBar.complete();\r\n })\r\n }\r\n if (navigateadd) {\r\n if (formgridadd) {\r\n // this.props.snackbarMessage(title + ' Saved Successfully', 'success');\r\n // this.progressBar.complete();\r\n }\r\n if (sidepopupadd) {\r\n // this.props.snackbarMessage(title + ' Saved Successfully', 'success');\r\n this.props.onClose();\r\n }\r\n else {\r\n const { afterSaveroutes } = options;\r\n const { connectingroute, connectingrouteid, routeparams, routeparams2, route, existparams } = afterSaveroutes;\r\n if (!routeparams2 === '2' && routeparams && connectingroute && connectingrouteid) {\r\n this.props.history.push(route + routeparams && results[routeparams] + routeparams2 && results[routeparams2] + connectingroute + results[connectingrouteid])\r\n }\r\n else if (routeparams2 === '2') {\r\n this.props.history.push(route + this.props.match.params['routeid'] + '/' + this.props.match.params['routeid1'] + connectingroute + results[connectingrouteid])\r\n }\r\n else if (connectingroute) {\r\n if (existparams) {\r\n this.props.history.push(route + this.props.match.params[existparams] + connectingroute)\r\n }\r\n else\r\n if (connectingrouteid) {\r\n this.props.history.push(route + results[routeparams] + connectingroute + results[connectingrouteid])\r\n } else {\r\n this.props.history.push(route + results[routeparams] + connectingroute)\r\n }\r\n }\r\n else this.props.history.push(afterSaveroutes.route + results[afterSaveroutes.routeparams])\r\n this.props.snackbarMessage(title + ' Saved Successfully', 'success')\r\n // this.progressBar.complete();\r\n }\r\n }\r\n }).catch(error => {\r\n error.then(err => {\r\n if (err && err.Subject) {\r\n this.setState({ subhelpertext: err.Subject[0] })\r\n }\r\n if (err && err.Body) {\r\n this.setState({ helpertextbody: err.Body[0] + \". \" })\r\n }\r\n })\r\n })\r\n }\r\n }\r\n }\r\n else {\r\n this.setState({ subhelpertext: 'Subject is required' })\r\n }\r\n }\r\n\r\n isHTML(str) {\r\n var doc = new DOMParser().parseFromString(str, \"text/html\");\r\n return Array.from(doc.body.childNodes).some(node => node.nodeType === 1);\r\n }\r\n\r\n autcompletetagshelpusers = {\r\n \"options\": {\r\n \"label\": \"Involve Internal User(s)\",\r\n \"placeholder\": \"\",\r\n \"row\": 0,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"name\": \"InternalUsers\",\r\n \"itemname\": \"UserId\",\r\n disabled: false,\r\n conditions: {\r\n hideonnull: { 'UserId': null }\r\n },\r\n \"defaultSelected\": true\r\n }\r\n }\r\n\r\n autcompletetagshelpcontacts = {\r\n \"options\": {\r\n \"label\": \"Involve External Contact(s)\",\r\n \"placeholder\": \"\",\r\n \"row\": 0,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"name\": \"AppContacts\",\r\n \"itemname\": \"ContactId\",\r\n disabled: false,\r\n conditions: {\r\n hideonnull: { 'ContactId': null }\r\n },\r\n \"defaultSelected\": true\r\n }\r\n }\r\n\r\n autcomcompletetagschange = (tags) => {\r\n console.log(tags)\r\n let resultdata = tags.target.value.map(a => a.id);\r\n let name = tags.target.name\r\n if (name == 'AppContacts') {\r\n this.setState({ helpertextcontact: null })\r\n }\r\n if (name == 'InternalUsers') {\r\n this.setState({ helpertextinternaluser: null })\r\n }\r\n let value = [...new Set(resultdata)].join()\r\n let stateresults = this.state.results || {}\r\n stateresults[name] = value\r\n stateresults[name + \"Details\"] = tags.target.value\r\n this.setState({\r\n [name]: [...new Set(resultdata)].join(),\r\n results: stateresults\r\n })\r\n }\r\n\r\n sendEmail = (resultsss, names, savetypes) => {\r\n const { options, dataItem } = this.props\r\n const { crud } = options\r\n const save = crud.send\r\n const { put, post } = save || {}\r\n const { conditions } = put || {}\r\n let ids = [], id\r\n if (put) {\r\n let createput = true\r\n if (conditions) {\r\n if (!this.state.compareresults[conditions.compareresults]) createput = false\r\n }\r\n if (createput) {\r\n const { routeProps, matchProps } = save.put\r\n if (save.put && (save.put.matchProps || save.put.routeProps) && Array.isArray(save.put.matchProps || save.put.routeProps)) {\r\n const tempsaveprops = save.put.matchProps || save.put.routeProps\r\n tempsaveprops.forEach(each => {\r\n const { value, custom } = each\r\n if (custom) {\r\n ids.push({ key: custom, value: dataItem[custom] })\r\n }\r\n else ids.push({ key: value, value: this.props.match.params[value] })\r\n })\r\n }\r\n else {\r\n id = this.props.match.params.routeid\r\n }\r\n }\r\n else {\r\n const { routeProps, matchProps } = save.post\r\n if (save.post && (save.post.matchProps || save.post.routeProps) && Array.isArray(save.post.matchProps || save.post.routeProps)) {\r\n const tempsaveprops = save.post.matchProps || save.post.routeProps\r\n tempsaveprops.forEach(each => {\r\n const { value } = each\r\n ids.push({ key: value, value: this.props.match.params[value] })\r\n })\r\n }\r\n else {\r\n const { routeProps, matchProps } = save.post\r\n id = routeProps ? this.props.match.params[routeProps.value] : null\r\n }\r\n }\r\n\r\n }\r\n // if(this.state.results.AppContactsDetails.length == 0 && this.state.results.InternalUsersDetails.length == 0 && this.props.accessPermissions.portal == \"I\"){\r\n // this.setState({helpertextcontact: 'Field is required', helpertextinternaluser : 'Field is required'})\r\n // }\r\n // else if(this.state.results.AppContactsDetails.length == 0 && this.props.accessPermissions.portal == \"E\"){\r\n // this.setState({helpertextcontact: 'Field is required'})\r\n // }\r\n // if ((this.state.results.AppContactsDetails && this.props.accessPermissions.portal == \"E\")||this.state.results.AppContactsDetails.length == 0) {\r\n // this.setState({helpertextcontact: 'Field is required'})\r\n // }\r\n // if ((this.state.results.InternalUsersDetails && this.props.accessPermissions.portal == \"I\")|| this.state.results.InternalUsersDetails.length == 0) {\r\n // this.setState({helpertextinternaluser : 'Field is required'})\r\n\r\n // }\r\n if ((save && this.state.results['AppContacts'] && this.state.results['AppContacts'] != '' && this.props.accessPermissions.portal == \"E\") || (save && this.state.results['InternalUsers'] && this.state.results['InternalUsers'] != '' && this.props.accessPermissions.portal == \"I\")) {\r\n const { results, formControls, errors, errfieldnames } = this.state\r\n const requiredFields = this.requiredFields\r\n const requiredFieldsKeys = requiredFields && Object.keys(requiredFields)\r\n let changedFieldName = []\r\n let err\r\n if (requiredFieldsKeys) {\r\n !errors && requiredFieldsKeys.forEach(each => {\r\n if (requiredFields[each]) {\r\n const value = formControls[each].value\r\n if ((value === null) || (value === undefined) || (value === '')) {\r\n err = true\r\n changedFieldName.push({ ...this.state.formControls[each], name: each, error: true, helperText: 'Field is Required' })\r\n }\r\n }\r\n\r\n })\r\n }\r\n if (err) {\r\n console.log('errors----------------', changedFieldName)\r\n this.setState({\r\n errors: true,\r\n changedFieldName: changedFieldName\r\n })\r\n }\r\n else {\r\n const { components, options, formgridadd, sidepopupadd } = this.props\r\n const { addtoresults, title } = options ? options : { addtoresults: {} }\r\n let finalresult = { ...this.state.compareresults, AppContacts: this.state.results.AppContacts, InternalUsers: this.state.results.InternalUsers }\r\n let res = { ...this.state.compareresults, AppContacts: this.state.results.AppContacts, InternalUsers: this.state.results.InternalUsers, AppContactsDetails: this.state.results.AppContactsDetails.length > 0 ? this.state.results.AppContactsDetails : this.state.AppContactsDetails, InternalUsersDetails: this.state.results.InternalUsersDetails, PermitNumber: this.state.results.PermitNumber ? this.state.results.PermitNumber : this.state.PermitNumber }\r\n components.forEach(each => {\r\n const { options } = each\r\n const { excludefromresults, name } = options ? options : {}\r\n excludefromresults && delete res[name]\r\n })\r\n !errors && requestApi(save, (id || ids), res,'',false,save.put.message).then(results => {\r\n const { headerProps } = options\r\n const { navigateview, navigateadd } = headerProps;\r\n if (navigateview) {\r\n this.LayoutForm.current.clearResult();\r\n this.setState({ showsavebtn: false }, () => {\r\n // this.props.snackbarMessage(title + ' Updated Successfully', 'success')\r\n //this.progressBar.complete();\r\n })\r\n }\r\n if (navigateadd) {\r\n if (formgridadd) {\r\n // this.props.snackbarMessage(title + ' Saved Successfully', 'success');\r\n // this.progressBar.complete();\r\n }\r\n if (sidepopupadd) {\r\n // this.props.snackbarMessage(title + ' Saved Successfully', 'success');\r\n this.props.onClose();\r\n }\r\n else {\r\n const { afterSaveroutes } = options;\r\n const { connectingroute, connectingrouteid, routeparams, routeparams2, route, existparams } = afterSaveroutes;\r\n if (!routeparams2 === '2' && routeparams && connectingroute && connectingrouteid) {\r\n this.props.history.push(route + routeparams && results[routeparams] + routeparams2 && results[routeparams2] + connectingroute + results[connectingrouteid])\r\n }\r\n else if (routeparams2 === '2') {\r\n this.props.history.push(route + this.props.match.params['routeid'] + '/' + this.props.match.params['routeid1'] + connectingroute + results[connectingrouteid])\r\n }\r\n else if (connectingroute) {\r\n if (existparams) {\r\n this.props.history.push(route + this.props.match.params[existparams] + connectingroute)\r\n }\r\n else\r\n if (connectingrouteid) {\r\n this.props.history.push(route + results[routeparams] + connectingroute + results[connectingrouteid])\r\n } else {\r\n this.props.history.push(route + results[routeparams] + connectingroute)\r\n }\r\n }\r\n else this.props.history.push(afterSaveroutes.route + results[afterSaveroutes.routeparams])\r\n this.props.snackbarMessage(title + ' Saved Successfully', 'success')\r\n // this.progressBar.complete();\r\n }\r\n }\r\n }).catch(error => {\r\n error.then(err => {\r\n if (err && err.Subject) {\r\n this.setState({ subhelpertext: err.Subject[0] })\r\n }\r\n if (err && err.Body) {\r\n this.setState({ helpertextbody: err.Body[0] + \". \" })\r\n }\r\n })\r\n })\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n const { options, defaults, order, type, compmap, className, styles, accessPermissions, accessLevelPermissions, dataItem, onFullScreen, onExitFullScreen, fullscreen, exitfullscreen, onNextItemClick, onPrevItemClick, ...otherProps } = this.props;\r\n const { crud, title, headerProps, savebtn } = options ? options : {}\r\n const { savebutton, editbutton, backbutton, breadcrumbs, notdisableitem } = headerProps ? headerProps : {}\r\n const save = crud ? crud.update : null\r\n const { isedited, showsavebtn, InternalUsersDetails, AppContactsDetails, InternalUsers, AppContacts, showsend } = this.state\r\n let res = this.state.results != null ? this.state.results : {};\r\n let optns = { \"width\": 4 }\r\n let approvedflag = this.props.initialloadextrainfo && this.props.initialloadextrainfo.results && this.props.initialloadextrainfo.results[\"APPROVED_FLAG\"] ? this.props.initialloadextrainfo.results[\"APPROVED_FLAG\"] : 'N'\r\n let savebuttondisplay = true;\r\n let roleaccess = this.props.accessPermissions && this.props.accessPermissions.moduleDistrictAccess && this.props.accessPermissions.moduleDistrictAccess ? Object.values(this.props.accessPermissions.moduleDistrictAccess).includes('Add') ? 'CanAdd' : Object.values(this.props.accessPermissions.moduleDistrictAccess).includes('Update') ? 'CanEdit' : Object.values(this.props.accessPermissions.moduleDistrictAccess).includes('Read') ? 'CanRead' : 'CanAdd' : 'CanAdd'\r\n let portal = this.props.accessPermissions ? this.props.accessPermissions.portal : null\r\n let canAdd = (!roleaccess || !portal) ? true : portal == \"I\" && roleaccess == \"CanAdd\" ? true : (portal == \"E\") ? true : false\r\n let canEdit = (!roleaccess || !portal) ? true : portal == \"I\" && roleaccess == \"CanEdit\" ? true : (portal == \"E\") ? true : false\r\n let canRead = (!roleaccess || !portal) ? true : portal == \"I\" && roleaccess == \"CanRead\" ? true : (portal == \"E\") ? true : false\r\n return (\r\n <Fragment>\r\n <div>\r\n {headerProps && <FormHeader accessPermissions={accessPermissions} accessLevelPermissions={accessLevelPermissions} breadcrumbs={breadcrumbs} title={title} handleSave={this.handleSave} SaveTemplateInfo={this.sendEmail} sendtemplatebutton={showsend ? (canAdd || canEdit) ? savebuttondisplay : false : false} savebutton={(canAdd || canEdit) ? savebuttondisplay : false} backbutton={backbutton} isedited={isedited} handleBack={this.handleBack}\r\n onFullScreen={onFullScreen} onExitFullScreen={onExitFullScreen} fullscreen={fullscreen} exitfullscreen={exitfullscreen} onNextItemClick={onNextItemClick} onPrevItemClick={onPrevItemClick}\r\n dataItem={dataItem} navigateup={dataItem ? (dataItem.Id ? true : false) : false} navigatedown={dataItem ? (dataItem.Id ? true : false) : false} />}\r\n {/* <div> <ProgressBar ref={e => this.progressBar = e} /></div><br /> */}\r\n <div className=\"col-md-12\">\r\n <div className=\"mt-3\"><CFormTextBox value={res.Subject} name=\"Subject\" label=\"Subject\" options={optns} required={true} disabled={!notdisableitem ? (res.Subject != null ? true : false) : false} handleFieldChange={this.handleSubjectChanged} error={this.state.subhelpertext ? this.state.subhelpertext : ''} /></div>\r\n {this.state.subhelpertext && <FormHelperText style={{ color: \"#F44336\" }}>{this.state.subhelpertext}</FormHelperText>}<br />\r\n <CRichTextEditor ref={this.LayoutForm} form={true} handleFieldChange={this.handleCommentsChange} /><br />\r\n {this.state.helpertextbody && <FormHelperText style={{ color: \"#F44336\" }}>{this.state.helpertextbody}</FormHelperText>}<br />\r\n <CFormDiscussionPanel value={res.InverseParentDiscussion} name=\"\" />\r\n {res.Body && <Card> <CardContent>\r\n\r\n <Typography color=\"#9FA682\" >\r\n {res.CreatedByName ? res.CreatedByName : \"\"} commented on {moment(res.CreatedOn).format('MM/DD/YYYY')}\r\n </Typography>\r\n\r\n <Typography className=\"\" variant=\"body2\" component=\"p\" gutterBottom>\r\n\r\n {this.isHTML(atob(res.Body)) ?\r\n <div dangerouslySetInnerHTML={{ __html: atob(res.Body) }} /> : res.Body}\r\n <br />\r\n </Typography>\r\n\r\n </CardContent>\r\n </Card>}\r\n {this.props.accessPermissions.portal != 'E' && <Autocompletetags\r\n // required = {true}\r\n dropdownvalues={InternalUsersDetails}\r\n {...this.autcompletetagshelpusers}\r\n handleFieldChange={this.autcomcompletetagschange}\r\n defaultSelValue={res.InternalUsers}\r\n defaultSelected={true}\r\n />}\r\n {this.state.helpertextinternaluser && <FormHelperText style={{ color: \"#F44336\" }}>{this.state.helpertextinternaluser}</FormHelperText>}<br />\r\n <Autocompletetags\r\n //required = {this.props.accessPermissions.portal == 'E' ? true : false}\r\n dropdownvalues={AppContactsDetails}\r\n {...this.autcompletetagshelpcontacts}\r\n handleFieldChange={this.autcomcompletetagschange}\r\n defaultSelValue={res.AppContacts}\r\n />\r\n {this.state.helpertextcontact && <FormHelperText style={{ color: \"#F44336\" }}>{this.state.helpertextcontact}</FormHelperText>}<br />\r\n\r\n {/* navigatingnext={this.state.navigatingnext} navigatingprev={this.state.navigatingprev} nextItem={this.nextItem} prevItem={this.prevItem} */}\r\n {/* {this.state.openconfirmation && <Confirmation open={this.state.openconfirmation} handleBack={this.handleBack} />} */}\r\n </div>\r\n </div>\r\n </Fragment>\r\n );\r\n }\r\n\r\n}\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage }, dispatch);\r\n}\r\n\r\nDiscussionsForm = connect(null, mapActions)(DiscussionsForm)\r\nexport default withRouter(DiscussionsForm)\r\n","import React, { Fragment, Component } from \"react\";\r\nimport { DateTimePicker, KeyboardDatePicker, KeyboardDateTimePicker, MuiPickersUtilsProvider } from \"@material-ui/pickers\";\r\nimport MomentUtils from '@date-io/moment';\r\nimport moment from \"moment\";\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport DefaultSettings from \"../../controls/components/settings\";\r\nimport DatePicker from '../../controls/components/datepicker';\r\n\r\nclass KeyboardDatePickerExample extends Component {\r\n\r\n handleChange = (e) => {\r\n // const { handleFieldChange, value, name, id, edit, options, ...otherProps } = this.props\r\n // let convertMoment = e ? moment(e, 'MM/DD/YYYY').format('MM/DD/YYYY') : null\r\n // let events = { target: { value: convertMoment, name: name, checked: false } }\r\n this.props.handleFieldChange(e);\r\n }\r\n\r\n render() {\r\n const { type, tooltip, required, error, helperText, contexthelp, handleFieldChange, name, options, value, edit } = this.props\r\n const { label, disabled, FieldProps } = options;\r\n\r\n if (edit === false) {\r\n return <Fragment>\r\n {tooltip && <div > <Typography variant={'caption'} className=\"fw-bold\">{label} \r\n < Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em' }} onClick={(evt) => contexthelp ?\r\n DefaultSettings.showDrawer(contexthelp) : evt.preventDefault()} />\r\n </Tooltip> </Typography> <Typography variant={'body2'} color={'textPrimary'} className=\"text-secondary\">{(value !== '' && moment(value).format('MM/DD/YYYY')) || ''} </Typography>\r\n </div>}\r\n {!tooltip && <div > <Typography variant={'caption'} className=\"fw-bold\">{label} </Typography> <Typography variant={'body2'} color={'textPrimary'} className=\"text-secondary\">{(value !== '' && moment(value).format('MM/DD/YYYY')) || ''} </Typography>\r\n </div>}\r\n </Fragment >\r\n }\r\n\r\n else return (\r\n <Fragment>\r\n <div className='row col-12'>\r\n <DatePicker\r\n disabled={disabled || false}\r\n variant=\"filled\"\r\n ampm={false}\r\n value={value}\r\n handleFieldValue={this.handleChange}\r\n label={label}\r\n error={error}\r\n name={name}\r\n required={required}\r\n FieldProps={FieldProps && JSON.stringify(FieldProps) || null}\r\n helperText={helperText}\r\n contexthelp={contexthelp}\r\n />\r\n {/* <MuiPickersUtilsProvider utils={MomentUtils}>\r\n <KeyboardDatePicker\r\n clearable\r\n variant=\"filled\"\r\n disabled={disabled || false}\r\n ampm={false}\r\n value={((currentDate && val === '') ? new Date() : val) || null}\r\n disablePast={passDate}\r\n disableFuture={futureDate}\r\n onChange={this.handleChange}\r\n label={tlabel}\r\n error={error}\r\n name={name}\r\n required={required}\r\n helperText={helperText}\r\n format=\"MM/DD/YYYY\"\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </MuiPickersUtilsProvider>*/}\r\n </div>\r\n </Fragment>\r\n );\r\n }\r\n}\r\n\r\nexport default KeyboardDatePickerExample;","import React, { Fragment, Component } from \"react\";\r\nimport { DateTimePicker, KeyboardDateTimePicker, MuiPickersUtilsProvider } from \"@material-ui/pickers\";\r\nimport MomentUtils from '@date-io/moment';\r\nimport moment from \"moment\";\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport DefaultSettings from \"../../controls/components/settings\";\r\nimport DateTimeePicker from '../../controls/components/datetimepicker'\r\n\r\nclass InlineTimePickerDemo extends Component {\r\n\r\n handleChange = (e) => {\r\n //const { handleFieldChange, value, name, id, edit, options, ...otherProps } = this.props\r\n // let convertMoment = e ? moment(e, 'MM/DD/YYYY hh:mm:ss a').format('YYYY-MM-DDThh:mm') : null\r\n //let events = { target: { value: e, name: name, checked: false } }\r\n this.props.handleFieldChange(e);\r\n }\r\n\r\n render() {\r\n const { className, type, FieldProps, tooltip, helperText, required, error, handleFieldChange, name, options, value, edit, contexthelp } = this.props\r\n const { label, disabled } = options;\r\n if (edit === false) {\r\n return <Fragment>\r\n {(tooltip || contexthelp) && <div > <Typography variant={'caption'} className=\"text-secondary\">{label} \r\n < Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em' }} onClick={() => DefaultSettings.showDrawer(contexthelp)} />\r\n </Tooltip> </Typography> <Typography variant={'body2'} color={'textPrimary'} className=\"fw-bold\">{value && moment(value).format('MM/DD/YYYY hh:mm:ss a') || ''} </Typography>\r\n </div>}\r\n {!(tooltip || contexthelp) && <div > <Typography variant={'caption'} className=\"text-secondary\">{label} </Typography> <Typography variant={'body2'} color={'textPrimary'} className=\"fw-bold\">{value && moment(value).format('MM/DD/YYYY hh:mm:ss a') || ''} </Typography>\r\n </div>}\r\n </Fragment >\r\n }\r\n else return ( \r\n <DateTimeePicker\r\n variant=\"filled\"\r\n value={value}\r\n disabled={disabled || false} \r\n handleFieldValue={this.handleChange}\r\n label={label}\r\n name={name}\r\n FieldProps={FieldProps && JSON.stringify(FieldProps) || null}\r\n contexthelp ={contexthelp}\r\n required={required}\r\n error={error}\r\n helperText={helperText}\r\n />\r\n );\r\n }\r\n}\r\n\r\nexport default InlineTimePickerDemo;","import React, { Fragment, Component } from \"react\";\r\nimport { TimePicker, KeyboardTimePicker, MuiPickersUtilsProvider } from \"@material-ui/pickers\";\r\nimport MomentUtils from '@date-io/moment';\r\nimport moment from \"moment\";\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport DefaultSettings from \"../../controls/components/settings\";\r\nimport Timepicker from \"../../controls/components/timepicker\";\r\n\r\nclass BasicDateTimePicker extends Component {\r\n\r\n handleChange = (e) => {\r\n //const { handleFieldChange} = this.props\r\n //const { handleFieldChange, value, name, id, edit, options, ...otherProps } = this.props\r\n // let convertMoment = e ? moment(e).format('MM/DD/YYYY hh:mm a') : null\r\n // let events = { target: { value: convertMoment, name: name, checked: false } }\r\n this.props.handleFieldChange(e);\r\n }\r\n\r\n render() {\r\n const { name, options, tooltip, value, edit,required,error,helperText,contexthelp } = this.props\r\n const { label, disabled } = options;\r\n if (edit === false) {\r\n return <Fragment>\r\n {(tooltip || contexthelp) && <div > <Typography variant={'caption'} className=\"text-secondary\">{label} \r\n < Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em' }} onClick={() => DefaultSettings.showDrawer(contexthelp)}/>\r\n </Tooltip> </Typography> <Typography variant={'body2'} color={'textPrimary'} className=\"fw-bold\">{value && moment(value).format(' HH:mm a') || ''} </Typography>\r\n </div>}\r\n {!(tooltip || contexthelp) && <div > <Typography variant={'caption'} className=\"text-secondary\">{label} </Typography> <Typography variant={'body2'} color={'textPrimary'} className=\"fw-bold\">{value && moment(value).format(' HH:mm a') || ''} </Typography>\r\n </div>}\r\n </Fragment >\r\n }\r\n else return (\r\n <Fragment>\r\n <Timepicker\r\n variant=\"filled\"\r\n disabled={disabled || false}\r\n ampm={true}\r\n label={label}\r\n name={name}\r\n error={error}\r\n value={value}\r\n required={required}\r\n contexthelp ={contexthelp}\r\n helperText={helperText}\r\n handleFieldValue={this.handleChange}\r\n />\r\n {/* <MuiPickersUtilsProvider utils={MomentUtils}>\r\n <KeyboardTimePicker\r\n disabled={disabled || false}\r\n variant=\"filled\"\r\n ampm={true}\r\n value={val}\r\n handleFieldValue={this.handleChange}\r\n label={tlabel}\r\n name={name}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </MuiPickersUtilsProvider>*/}\r\n </Fragment>\r\n );\r\n }\r\n}\r\n\r\nexport default BasicDateTimePicker;","import React, { Fragment } from 'react';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport CheckBoxAutoComplete from '../../controls/components/checkautocomplete'\r\nimport DefaultSettings from '../../controls/components/settings';\r\n\r\n/**\r\n * multi dropdown returns values with string instead array\r\n * @param {} props\r\n */\r\n\r\nconst defaults = {\r\n transformProps: {\r\n label: 'label',\r\n value: 'value'\r\n },\r\n}\r\n\r\nexport default function CheckboxesTags(props) {\r\n const { handleFieldChange, dropdownvalues, contexthelp, edit, name, label, tooltip, disabled, error, required,\r\n defaultValue, htmlForLabel, helperText, id, transformProps, crud, styles, className, multiple, conditions, extratempProps, ...otherProps } = props;\r\n let propsVal = [];\r\n let initalpropval = props.value || ''\r\n if (typeof initalpropval === 'string' && initalpropval !== '') {\r\n propsVal = initalpropval.split(',')\r\n // propsVal.push(initalpropval)\r\n }\r\n else propsVal = initalpropval\r\n\r\n let autoOptions = []\r\n dropdownvalues && Array.isArray(dropdownvalues) && dropdownvalues.forEach((each, index) => {\r\n const { label, value } = transformProps\r\n const name = each[label]\r\n const key = each[value]\r\n autoOptions.push({ label: name, value: key })\r\n })\r\n let value = []\r\n propsVal && propsVal.length > 0 && propsVal.forEach(val => {\r\n autoOptions.forEach(auto => {\r\n if (auto['value'] == val)\r\n value.push(auto)\r\n })\r\n });\r\n\r\n const handleChange = (e) => {\r\n // propsVal = []\r\n // option.map(res => {\r\n // propsVal.push(res.value)\r\n // })\r\n // // value.push(option)\r\n handleFieldChange(e);\r\n }\r\n\r\n\r\n const options = autoOptions || []\r\n if (edit === false) {\r\n return <Fragment>\r\n {tooltip && <div class > <Typography variant={'caption'} className=\"fw-bold\" color={'textPrimary'}>{label} \r\n < Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em' }} onClick={() => DefaultSettings.showDrawer(contexthelp)} />\r\n </Tooltip> </Typography> <Typography variant={'body2'} color={'textPrimary'} className=\"text-secondary\" >{propsVal && propsVal.join() || ''} </Typography>\r\n </div>}\r\n {!tooltip && <div > <Typography variant={'caption'} className=\"fw-bold\" color={'textPrimary'}>{label} </Typography>\r\n <Typography variant={'body2'} color={'textPrimary'} className=\"text-secondary\" >{(propsVal && propsVal.join()) || ''} </Typography>\r\n </div>}\r\n </Fragment >\r\n }\r\n if (edit) {\r\n return (\r\n <CheckBoxAutoComplete\r\n ismulti={multiple || true}\r\n label={label}\r\n name={name}\r\n items={options}\r\n disabled={disabled || false}\r\n error={error}\r\n required={required}\r\n extraProps={extratempProps || defaults}\r\n value={props.value || ''}\r\n helperText={helperText}\r\n handleFieldValue={handleChange} />\r\n );\r\n }\r\n\r\n}\r\n\r\n// Top 100 films as rated by IMDb users. http://www.imdb.com/chart/top\r\n\r\n/* <Autocomplete\r\n multiple\r\n id=\"checkboxes-tags-demo\"\r\n options={options}\r\n value={value || []}\r\n filterSelectedOptions\r\n getOptionLabel={(option) => option.label}\r\n onChange={(event, option) => handleChange(event, option)}\r\n inputProps={{\r\n name: name,\r\n id: id || name\r\n }}\r\n InputLabelProps={{\r\n shrink: true,\r\n }\r\n }\r\n renderInput={(params) => (\r\n <TextField {...params} error={error}\r\n required={required} label={label} />\r\n )}\r\n /> */","import * as React from 'react';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport { GridColumn, Grid, GridColumnMenuFilter } from '@progress/kendo-react-grid';\r\nimport { CustomColumnMenu } from './customColumnMenu.jsx';\r\nimport { toDataSourceRequestString, translateDataSourceResultGroups } from '@progress/kendo-data-query';\r\nimport { withRouter } from 'react-router-dom';\r\nimport GridHeader from './cgridheader'\r\nimport ReactResizeDetector from 'react-resize-detector';\r\nimport { getToken } from '../header';\r\nimport moment from 'moment';\r\nimport Tabs from '@material-ui/core/Tabs';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport { ExcelExport } from '@progress/kendo-react-excel-export';\r\nimport { GetData } from '../../controls/helpers/requests.js';\r\nimport ClearIcon from '@material-ui/icons/Clear';\r\nimport { getEnvVariable } from '../../../modules/environmentalList';\r\nimport LeftSideBar from '../../../custommodules/newentrancepermit/applicationdrawer';\r\nimport { ExternalApplicationSidebar } from '../../../json/newapplication/externalapplicationsidebar';\r\nimport { NewApplicationSidebar } from '../../../json/newapplication/newapplicationsidebar';\r\nimport { handlecustomCondition } from '../../modules/form/conditions';\r\n\r\nclass FilteredNameHeader extends React.Component {\r\n render() {\r\n return (\r\n <a className=\"k-link\" onClick={this.props.onClick}>\r\n <span style={{ color: \"#1976d2\" }} className=\"k-icon k-i-filter\"></span>\r\n <span style={{ color: \"#1976d2\" }}>{this.props.title}</span>\r\n {this.props.children}\r\n </a>\r\n );\r\n }\r\n}\r\n\r\nclass NameHeader extends React.Component {\r\n render() {\r\n return (\r\n <a className=\"k-link\" onClick={this.props.onClick}>\r\n <span>{this.props.title}</span>\r\n {this.props.children}\r\n </a>\r\n );\r\n }\r\n}\r\n\r\nclass CInterchangableGrid extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.token = getToken();\r\n this.state = {\r\n dataState: { skip: 0, take: 20 },\r\n pageable: {\r\n buttonCount: 2,\r\n info: true,\r\n type: 'numeric',\r\n pageSizes: [10, 20, 30, 40, 50, 100],\r\n previousNext: true\r\n }, tabValue: 0, filteredfield: [], initialloadextrainfo: null\r\n };\r\n }\r\n\r\n gridWorkflowColumns = [\r\n {\r\n \"title\": \"Field Name\",\r\n \"field\": \"Field\",\r\n \"show\": true,\r\n width: 200\r\n },\r\n {\r\n \"title\": \"Old Value\",\r\n \"field\": \"OldValueDesc\",\r\n \"show\": true,\r\n width: 200\r\n },\r\n {\r\n \"title\": \"New Value\",\r\n \"field\": \"NewValueDesc\",\r\n \"show\": true,\r\n width: 200\r\n },\r\n {\r\n \"title\": \"Updated By\",\r\n \"field\": \"UpdatedBy\",\r\n \"show\": true,\r\n width: 200\r\n },\r\n {\r\n \"title\": \"Updated On\",\r\n \"field\": \"UpdatedOn\",\r\n \"show\": true,\r\n width: 200\r\n },\r\n // {\r\n // \"title\": \"Comments\",\r\n // \"field\": \"Comments\",\r\n // \"show\": true,\r\n // width: 200\r\n // }\r\n ]\r\n\r\n componentDidMount() {\r\n const { useComp, gridkey, options } = this.props;\r\n const { crud } = options || {}\r\n if (crud && crud.customcondition) {\r\n this.LoadExtraInfo();\r\n }\r\n this.fetchData(this.state.dataState);\r\n }\r\n\r\n async LoadExtraInfo() {\r\n let initialloadextrainfodata = await handlecustomCondition(this.props)\r\n this.setState({ initialloadextrainfo: initialloadextrainfodata })\r\n }\r\n\r\n handleRowClick = (gridRowClickEvent) => {\r\n console.log('gridrowclickevent', gridRowClickEvent)\r\n }\r\n\r\n handleDataStateChange = (changeEvent) => {\r\n this.setState({ dataState: changeEvent.dataState });\r\n this.fetchData(changeEvent.dataState);\r\n }\r\n\r\n columnProps(field) {\r\n if (!this.state.filteredfield.includes(field)) {\r\n if (this.isColumnActive(field, this.state.dataState)) {\r\n this.setState({ filteredfield: [...this.state.filteredfield, field] })\r\n }\r\n }\r\n }\r\n\r\n isColumnActive(field, dataState) {\r\n return GridColumnMenuFilter.active(field, dataState.filter)\r\n }\r\n\r\n handleStatusStyle = (name, transformProps) => (event) => {\r\n const val = name ? name.split(\".\").reduce((res, prop) => { return res && res[prop] }, event.dataItem) : null\r\n console.log('handleStatusStyle-----', val);\r\n if (event.dataItem.Status) {\r\n if (event.dataItem.Status == 'I') {\r\n return (\r\n <td>\r\n <span className=\"badge badge-pill badge-danger\">IN-ACTIVE</span>\r\n </td>\r\n );\r\n }\r\n else if (event.dataItem.Status == 'A') {\r\n return (\r\n <td>\r\n <span className=\"badge badge-pill badge-light\">ACTIVE</span>\r\n </td>\r\n );\r\n }\r\n else {\r\n return (\r\n <td>\r\n event.dataItem.Status\r\n </td>\r\n );\r\n }\r\n }\r\n else return <td>{transformProps[val]}</td>\r\n\r\n }\r\n\r\n handleGridForm = (name, transformProps) => (event) => {\r\n const val = name ? name.split(\".\").reduce((res, prop) => { return res && res[prop] }, event.dataItem) : null;\r\n return <td>{transformProps[val]}</td>\r\n }\r\n /**\r\n *********************************************************\r\n Description: Handle Back to navigate to custom and history screen\r\n Required props: back url\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\n handleBack = () => {\r\n const { options } = this.props\r\n const { back } = options;\r\n const { routes } = back;\r\n if (Array.isArray(routes)) {\r\n let path = ''\r\n routes.forEach(each => {\r\n const { route, routeParams, matchProps } = each\r\n if (routeParams) {\r\n path += route + \"/\" + this.props.match.params[routeParams]\r\n }\r\n else if (matchProps) {\r\n path += route + \"/\" + this.props.results[matchProps] //--- correct unsused\r\n }\r\n else {\r\n path += route\r\n }\r\n })\r\n this.props.history.push(path)\r\n }\r\n }\r\n\r\n\r\n fetchData(dataState, value, action) {\r\n const queryStr = `${toDataSourceRequestString(dataState)}`; // Serialize the state\r\n const hasGroups = dataState.group && dataState.group.length;\r\n\r\n const { options, components, defaults, order, type, compmap, rules, accessPermissions, accessLevelPermissions, ...otherProps } = this.props;\r\n const { gridcolumns } = options\r\n const { routes, crud } = options\r\n const { read, create, update } = crud\r\n const del = crud.delete\r\n const { get } = read\r\n const { routeProps, matchProps, noquery } = get ? get : {}\r\n let url = (this.state.tabValue == 2) ? get.gisurl : get.url;\r\n\r\n if (Array.isArray(routeProps)) {\r\n routeProps.forEach(each => {\r\n const { value } = each\r\n const id = routeProps ? this.props.match.params[value] : null\r\n url = `${url.replace(`{${value}}`, id)}`\r\n\r\n })\r\n }\r\n else if (routeProps) {\r\n const id = routeProps ? this.props.match.params[routeProps.value] : null\r\n url = `${get.url.replace(`{${routeProps.value}}`, id)}`;\r\n }\r\n const urlPath = options.crud.read.get.noquery && options.crud.read.get.noquery == true ? `${url}?submodulekey=${this.props.match.params.key}&${queryStr}` : `${url}?${queryStr}`;\r\n\r\n GetData(urlPath).then((data) => {\r\n if (data) {\r\n data.map(res => {\r\n if (res.UpdatedOn) {\r\n res.UpdatedOn = res.UpdatedOn !== null ? moment(res.UpdatedOn).format('MM/DD/YYYY') : \"\"\r\n }\r\n })\r\n };\r\n this.setState({\r\n data: data\r\n });\r\n });\r\n\r\n const urlPath2 = getEnvVariable('AdminConfig') + `/api/SitePermitTypeWorkflow/history/` + this.props.match.params['routeid'];\r\n if (this.props.match.params['routeid'] && urlPath2) {\r\n GetData(urlPath2).then((data) => {\r\n if (data && data.data) {\r\n data.data.map(res => {\r\n if (res.UpdatedOn) {\r\n res.UpdatedOn = res.UpdatedOn !== null ? moment(res.UpdatedOn).format('MM/DD/YYYY') : \"\"\r\n }\r\n })\r\n }\r\n this.setState({\r\n workflowdata: data\r\n });\r\n });\r\n }\r\n\r\n if (action === 'filterall') {\r\n let tempString = urlPath.split('?')\r\n GetData(tempString[0]).then(result => {\r\n result && Array.isArray(result) && result.map(res => {\r\n if (res.CreatedOn) {\r\n res.CreatedOn = res.CreatedOn !== null ? moment(res.CreatedOn).format('MM/DD/YYYY hh:mm:ss A ') : \"\"\r\n } if (res.UpdatedOn) {\r\n res.UpdatedOn = res.UpdatedOn !== null ? moment(res.UpdatedOn).format('MM/DD/YYYY hh:mm:ss A') : \"\"\r\n }\r\n if (res.LoginDate) {\r\n res.LoginDate = res.LoginDate !== null ? moment(res.LoginDate).format('MM/DD/YYYY hh:mm:ss A') : \"\"\r\n } if (res.NoticeDate) {\r\n res.NoticeDate = res.NoticeDate !== null ? moment(res.NoticeDate).format('MM/DD/YYYY') : \"\"\r\n }\r\n if (res.Body) {\r\n let bodyval = res.Body !== null ? atob(res.Body) : \"\"\r\n res.Body = bodyval.replace(/<\\/?[^>]+(>|$)/g, \"\")\r\n }\r\n })\r\n this._export.save(result, this.gridWorkflowColumns);\r\n })\r\n }\r\n else if (action === 'filtercurrent') {\r\n GetData(urlPath).then(result => {\r\n result && Array.isArray(result) && result.map(res => {\r\n if (res.CreatedOn) {\r\n res.CreatedOn = res.CreatedOn !== null ? moment(res.CreatedOn).format('MM/DD/YYYY hh:mm:ss A ') : \"\"\r\n } if (res.UpdatedOn) {\r\n res.UpdatedOn = res.UpdatedOn !== null ? moment(res.UpdatedOn).format('MM/DD/YYYY hh:mm:ss A') : \"\"\r\n }\r\n if (res.LoginDate) {\r\n res.LoginDate = res.LoginDate !== null ? moment(res.LoginDate).format('MM/DD/YYYY hh:mm:ss A') : \"\"\r\n } if (res.NoticeDate) {\r\n res.NoticeDate = res.NoticeDate !== null ? moment(res.NoticeDate).format('MM/DD/YYYY') : \"\"\r\n }\r\n if (res.Body) {\r\n let bodyval = res.Body !== null ? atob(res.Body) : \"\"\r\n res.Body = bodyval.replace(/<\\/?[^>]+(>|$)/g, \"\")\r\n }\r\n })\r\n this._export.save(result, this.gridWorkflowColumns);\r\n })\r\n }\r\n }\r\n\r\n handleTabChange = (event, value) => {\r\n let dataState = {\r\n skip: 0, take: 20\r\n }\r\n this.setState({ tabValue: value, filteredfield: [], dataState: dataState }, () => {\r\n this.fetchData(this.state.dataState);\r\n });\r\n }\r\n\r\n // columnProps(field) {\r\n // // field: field,\r\n // if (this.isColumnActive(field, this.state.dataState))\r\n // return 'border border-dark '\r\n // else return ''\r\n\r\n // }\r\n\r\n // isColumnActive(field, dataState) {\r\n // return GridColumnMenuFilter.active(field, dataState.filter)\r\n // }\r\n\r\n onColumnsSubmit = (columnsState) => {\r\n // this.setState({\r\n // columns: columnsState,\r\n // data: this.state.data\r\n // });\r\n }\r\n\r\n clearFilters = () => {\r\n let dataState = {\r\n skip: 0, take: 20\r\n }\r\n if (this.props.location.pathname)\r\n localStorage.removeItem(this.props.location.pathname);\r\n this.setState({ filteredfield: [], dataState: dataState })\r\n this.fetchData(dataState);\r\n }\r\n\r\n _export;\r\n _grid;\r\n export = (action) => {\r\n this.fetchData(this.state.dataState, null, action)\r\n }\r\n\r\n saveReport = (cols) => {\r\n console.log(\"save report is clicked\", cols);\r\n const { options } = this.props\r\n const { crud } = options\r\n const { read } = crud\r\n let gridoptions = {\r\n excel: {\r\n fileName: \"Excel.xlsx\",\r\n allPages: true,\r\n },\r\n dataSource: {\r\n type: \"webapi\",\r\n transport: {\r\n read: {\r\n url: read.get.url,\r\n headers: this.headers\r\n }\r\n },\r\n change: () => {\r\n },\r\n pageSize: 20,\r\n total: this.state.data.length,\r\n skip: 0,\r\n take: 20,\r\n serverPaging: true,\r\n serverSorting: true,\r\n serverFiltering: true,\r\n serverGrouping: true,\r\n serverAggregates: true,\r\n schema: {\r\n data: \"data\",\r\n total: \"total\",\r\n errors: \"errors\"\r\n }\r\n },\r\n change: () => this.onChange(),\r\n pageable: {\r\n refresh: true,\r\n buttonCount: 5,\r\n pageSizes: [10, 20, 30, 40, 50, 100],\r\n },\r\n dataBound: () => this.onLoad(),\r\n selectable: 'single row',\r\n columnMenu: true,\r\n sortable: true,\r\n resizable: true,\r\n scrollable: true,\r\n reorderable: true,\r\n columns: (this.state.columns || []).filter(each => {\r\n if (each.show)\r\n return { ...each, width: each.width || 200, filterable: each.filterable || { multi: true, search: true } }\r\n }),\r\n noRecords: {\r\n template: \"<p class='lead'>No data available.</p>\"\r\n },\r\n }\r\n console.log(\"settings\" + JSON.stringify(gridoptions))\r\n this.setState({ savereprt: true, gridoptions: JSON.stringify(gridoptions) })\r\n }\r\n\r\n\r\n render() {\r\n const { options, components, defaults, order, type, compmap, rules, accessPermissions, accessLevelPermissions, ...otherProps } = this.props;\r\n const { headerProps } = options || {}\r\n return (\r\n <React.Fragment>\r\n <ReactResizeDetector handleWidth handleHeight>\r\n {({ width, height }) =>\r\n <React.Fragment>\r\n <GridHeader initialloadextrainfo={this.state.initialloadextrainfo} headerProps={headerProps}\r\n export={(evt) => {\r\n this.export(evt)\r\n }}\r\n accessPermissions={accessPermissions} accessLevelPermissions={accessLevelPermissions}\r\n clearFilters={this.clearFilters} handleBack={this.handleBack} />\r\n <Tabs\r\n value={this.state.tabValue}\r\n onChange={this.handleTabChange}\r\n variant=\"fullWidth\"\r\n aria-label=\"icon label tabs example\"\r\n indicatorColor=\"primary\"\r\n textColor=\"primary\"\r\n >\r\n <Tab value={0} label=\"Permit History\" />\r\n {/* <Tab value={1} label=\"Workflow History\" />*/}\r\n <Tab value={2} label=\"GIS History\" />\r\n </Tabs>\r\n\r\n {this.state.tabValue === 0 &&\r\n <ExcelExport\r\n data={this.state.data}\r\n ref={exporter => this._export = exporter}\r\n >\r\n <Grid\r\n sortable={true}\r\n pageable={this.state.pageable}\r\n total={this.state.total}\r\n data={(this.state.data && this.state.data.length) ? this.state.data.slice(this.state.dataState.skip, this.state.dataState.take + this.state.dataState.skip) : []}\r\n {...this.state.dataState}\r\n onDataStateChange={this.handleDataStateChange}\r\n style={{ height: '550px' }}\r\n resizable\r\n >\r\n {this.gridWorkflowColumns && this.gridWorkflowColumns.map((each, index) => {\r\n const { name, transformProps } = each\r\n if (name) return <GridColumn {...each} key={index} cell={this.handleGridForm(name, transformProps)} />\r\n else {\r\n if (each.field == 'Status')\r\n return <GridColumn {...each} headerClassName={this.columnProps(each.field)} headerCell={this.state.filteredfield.length > 0 && this.state.filteredfield.includes(each.field) ? FilteredNameHeader : NameHeader} filter={each.filter} key={index} cell={this.handleStatusStyle(name)} columnMenu={\r\n props =>\r\n <CustomColumnMenu\r\n {...props}\r\n columns={this.gridWorkflowColumns}\r\n saveReport={this.saveReport}\r\n onColumnsSubmit={this.onColumnsSubmit}\r\n />\r\n } />\r\n else if (each.field == 'CreatedOn' || each.field == 'UpdatedOn')\r\n return <GridColumn {...each} headerClassName={this.columnProps(each.field)} headerCell={this.state.filteredfield.length > 0 && this.state.filteredfield.includes(each.field) ? FilteredNameHeader : NameHeader} key={index} filter={'date'} format=\"{0:d}\" columnMenu={\r\n props =>\r\n <CustomColumnMenu\r\n {...props}\r\n columns={this.gridWorkflowColumns}\r\n saveReport={this.saveReport}\r\n onColumnsSubmit={this.onColumnsSubmit}\r\n />\r\n } />\r\n else\r\n return <GridColumn {...each} headerClassName={this.columnProps(each.field)} headerCell={this.state.filteredfield.length > 0 && this.state.filteredfield.includes(each.field) ? FilteredNameHeader : NameHeader} filter={each.filter} key={index} columnMenu={\r\n props =>\r\n <CustomColumnMenu\r\n {...props}\r\n columns={this.gridWorkflowColumns}\r\n saveReport={this.saveReport}\r\n onColumnsSubmit={this.onColumnsSubmit}\r\n />\r\n } />\r\n }\r\n })}\r\n </Grid>\r\n </ExcelExport>}\r\n\r\n {this.state.tabValue === 1 &&\r\n <ExcelExport\r\n data={this.state.workflowdata}\r\n ref={exporter => this._export = exporter}\r\n >\r\n <Grid\r\n sortable={true}\r\n pageable={this.state.pageable}\r\n total={this.state.total}\r\n // data={(this.state.data && this.state.data.length )?this.state.workflowdata.slice(0, 20 + 0):[]}\r\n data={(this.state.workflowdata && this.state.workflowdata.length) ? this.state.workflowdata.slice(this.state.dataState.skip, this.state.dataState.take + this.state.dataState.skip) : []}\r\n\r\n {...this.state.dataState}\r\n //style={{ height: (isNaN(height) ? 500 : height) - 110 }}\r\n style={{ height: '550px' }}\r\n resizable\r\n >\r\n {this.gridWorkflowColumns && this.gridWorkflowColumns.map((each, index) => {\r\n const { name, transformProps } = each\r\n if (name) return <GridColumn {...each} key={index} cell={this.handleGridForm(name, transformProps)} />\r\n else {\r\n if (each.field == 'Status')\r\n return <GridColumn {...each} headerClassName={this.columnProps(each.field)} headerCell={this.state.filteredfield.length > 0 && this.state.filteredfield.includes(each.field) ? FilteredNameHeader : NameHeader} filter={each.filter} key={index} cell={this.handleStatusStyle(name)} columnMenu={\r\n props =>\r\n <CustomColumnMenu\r\n {...props}\r\n columns={this.gridWorkflowColumns}\r\n saveReport={this.saveReport}\r\n onColumnsSubmit={this.onColumnsSubmit}\r\n />\r\n } />\r\n else if (each.field == 'CreatedOn' || each.field == 'UpdatedOn')\r\n return <GridColumn {...each} headerClassName={this.columnProps(each.field)} headerCell={this.state.filteredfield.length > 0 && this.state.filteredfield.includes(each.field) ? FilteredNameHeader : NameHeader}key={index} filter={'date'} format=\"{0:d}\" columnMenu={\r\n props =>\r\n <CustomColumnMenu\r\n {...props}\r\n columns={this.gridWorkflowColumns}\r\n saveReport={this.saveReport}\r\n onColumnsSubmit={this.onColumnsSubmit}\r\n />\r\n } />\r\n else\r\n return <GridColumn {...each} headerClassName={this.columnProps(each.field)} headerCell={this.state.filteredfield.length > 0 && this.state.filteredfield.includes(each.field) ? FilteredNameHeader : NameHeader} filter={each.filter} key={index} columnMenu={\r\n props =>\r\n <CustomColumnMenu\r\n {...props}\r\n columns={this.gridWorkflowColumns}\r\n saveReport={this.saveReport}\r\n onColumnsSubmit={this.onColumnsSubmit}\r\n />\r\n } />\r\n }\r\n })}\r\n </Grid>\r\n </ExcelExport>\r\n }\r\n\r\n {this.state.tabValue === 2 &&\r\n <ExcelExport\r\n data={this.state.data}\r\n ref={exporter => this._export = exporter}\r\n >\r\n <Grid\r\n sortable={true}\r\n pageable={this.state.pageable}\r\n total={this.state.total}\r\n data={(this.state.data && this.state.data.length) ? this.state.data.slice(this.state.dataState.skip, this.state.dataState.take + this.state.dataState.skip) : []}\r\n {...this.state.dataState}\r\n {...this.state.dataState}\r\n onDataStateChange={this.handleDataStateChange}\r\n style={{ height: '550px' }}\r\n resizable\r\n >\r\n {this.gridWorkflowColumns && this.gridWorkflowColumns.map((each, index) => {\r\n const { name, transformProps } = each\r\n if (name) return <GridColumn {...each} key={index} cell={this.handleGridForm(name, transformProps)} />\r\n else {\r\n if (each.field == 'Status')\r\n return <GridColumn {...each} headerClassName={this.columnProps(each.field)} headerCell={this.state.filteredfield.length > 0 && this.state.filteredfield.includes(each.field) ? FilteredNameHeader : NameHeader} filter={each.filter} key={index} cell={this.handleStatusStyle(name)} columnMenu={\r\n props =>\r\n <CustomColumnMenu\r\n {...props}\r\n columns={this.gridWorkflowColumns}\r\n saveReport={this.saveReport}\r\n onColumnsSubmit={this.onColumnsSubmit}\r\n />\r\n } />\r\n else if (each.field == 'CreatedOn' || each.field == 'UpdatedOn')\r\n return <GridColumn {...each} headerClassName={this.columnProps(each.field)} headerCell={this.state.filteredfield.length > 0 && this.state.filteredfield.includes(each.field) ? FilteredNameHeader : NameHeader} key={index} filter={'date'} format=\"{0:d}\" columnMenu={\r\n props =>\r\n <CustomColumnMenu\r\n {...props}\r\n columns={this.gridWorkflowColumns}\r\n saveReport={this.saveReport}\r\n onColumnsSubmit={this.onColumnsSubmit}\r\n />\r\n } />\r\n else\r\n return <GridColumn {...each} headerClassName={this.columnProps(each.field)} headerCell={this.state.filteredfield.length > 0 && this.state.filteredfield.includes(each.field) ? FilteredNameHeader : NameHeader} filter={each.filter} key={index} columnMenu={\r\n props =>\r\n <CustomColumnMenu\r\n {...props}\r\n columns={this.gridWorkflowColumns}\r\n saveReport={this.saveReport}\r\n onColumnsSubmit={this.onColumnsSubmit}\r\n />\r\n } />\r\n }\r\n })}\r\n </Grid>\r\n </ExcelExport>}\r\n </React.Fragment>\r\n }\r\n </ReactResizeDetector>\r\n </React.Fragment>\r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(CInterchangableGrid);\r\n\r\n","/**\r\n *********************************************************\r\n Description: Handles grid component.\r\n Required props: type.\r\n limitations : just displays the grid data. on double click on the row changes the route.\r\n *********************************************************\r\n**/\r\nimport { toDataSourceRequestString } from '@progress/kendo-data-query';\r\nimport { Grid, GridColumn } from '@progress/kendo-react-grid';\r\nimport * as React from 'react';\r\nimport ReactResizeDetector from 'react-resize-detector';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { GetData } from '../../controls/helpers/requests';\r\nimport { getToken } from '../header';\r\nimport GridHeader from './cgridheader';\r\n//const StatefullGrid = withState(Grid);\r\n\r\n\r\nfunction CStatus(props) {\r\n return (\r\n <td>\r\n <span className=\"badge badge-pill badge-success\"> {this.props.dataItem[this.props.field]}</span>\r\n </td>\r\n )\r\n}\r\n\r\n\r\nclass CSimpleGrid extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.token = getToken()\r\n\r\n this.state = { dataState: { skip: 0, take: 20 } };\r\n }\r\n /**\r\n *********************************************************\r\n Description: Handles the double click on the grid row. Update prop on the json is used to generate the link and change the route\r\n Required props: grid needs to have data.\r\n limitations : only double click event is handled.\r\n *********************************************************\r\n**/\r\n\r\n rowRender = (trElement, dataItem) => {\r\n const { options } = this.props\r\n const { crud } = options\r\n const { create, update, read } = crud\r\n const del = crud.delete\r\n const trProps = {\r\n ...trElement.props,\r\n onDoubleClick: () => {\r\n console.log('Double click on ', dataItem)\r\n if (update) {\r\n let pushLink = ''\r\n const { link, matchProps, type } = update.link\r\n if (Array.isArray(update.link)) {\r\n update.link.forEach(each => {\r\n const { link, matchProps } = each\r\n pushLink += link + '/' + (this.props.match.params[matchProps.value] ?\r\n this.props.match.params[matchProps.value] : dataItem.dataItem[matchProps.value])\r\n\r\n })\r\n }\r\n else {\r\n if (matchProps) pushLink += link + '/' + dataItem.dataItem[matchProps.value]\r\n }\r\n this.props.history.push(`${pushLink}`)\r\n }\r\n\r\n }\r\n };\r\n return React.cloneElement(trElement, { ...trProps }, trElement.props.children);\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchData(this.state.dataState);\r\n }\r\n\r\n handleRowClick = (gridRowClickEvent) => {\r\n console.log('gridrowclickevent', gridRowClickEvent)\r\n }\r\n\r\n handleDataStateChange = (changeEvent) => {\r\n this.setState({ dataState: changeEvent.dataState });\r\n this.fetchData(changeEvent.dataState);\r\n }\r\n\r\n /**\r\n *********************************************************\r\n Description: Handles the coloring of the status column\r\n Required props: grid needs to have data.\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\n handleStatusStyle = (name, transformProps) => (event) => {\r\n const val = name ? name.split(\".\").reduce((res, prop) => { return res && res[prop] }, event.dataItem) : null\r\n // const value = transformProps ? (transformProps[val] ? transformProps[val] : val) : val\r\n console.log('handleStatusStyle-----', val);\r\n if (event.dataItem.Status) {\r\n if (event.dataItem.Status == 'I') {\r\n return (\r\n <td>\r\n <span className=\"badge badge-pill badge-danger\">IN-ACTIVE</span>\r\n </td>\r\n );\r\n }\r\n else if (event.dataItem.Status == 'A') {\r\n return (\r\n <td>\r\n <span className=\"badge badge-pill badge-light\">ACTIVE</span>\r\n </td>\r\n );\r\n }\r\n else {\r\n return (\r\n <td>\r\n event.dataItem.Status\r\n </td>\r\n );\r\n }\r\n }\r\n else return <td>{transformProps[val]}</td>\r\n\r\n }\r\n\r\n handleGridForm = (name, transformProps) => (event) => {\r\n const val = name ? name.split(\".\").reduce((res, prop) => { return res && res[prop] }, event.dataItem) : null;\r\n return <td>{transformProps[val]}</td>\r\n }\r\n\r\n /**\r\n *********************************************************\r\n Description: Handles the data for the grid. creates the url to fetch either with query or without query.\r\n Required props: options, components. Within options crud.read is needed to fetch data.\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\n\r\n fetchData(dataState, value) {\r\n\r\n const queryStr = `${toDataSourceRequestString(dataState)}`; // Serialize the state\r\n const hasGroups = dataState.group && dataState.group.length;\r\n\r\n const { options, components, defaults, order, type, compmap, rules, accessPermissions, accessLevelPermissions, ...otherProps } = this.props;\r\n const { gridcolumns } = options\r\n const { routes, crud } = options\r\n const { read, create, update } = crud\r\n const del = crud.delete\r\n const { get } = read\r\n const { routeProps, matchProps, noquery } = get ? get : {}\r\n let url = get.url;\r\n\r\n if (Array.isArray(routeProps)) {\r\n routeProps.forEach(each => {\r\n const { value } = each\r\n const id = routeProps ? this.props.match.params[value] : null\r\n url = `${url.replace(`{${value}}`, id)}`\r\n\r\n })\r\n }\r\n else if (routeProps) {\r\n const id = routeProps ? this.props.match.params[routeProps.value] : null\r\n url = `${get.url.replace(`{${routeProps.value}}`, id)}`;\r\n }\r\n const urlPath = `${url}?${queryStr}`;\r\n\r\n GetData(urlPath).then((data) => {\r\n\r\n this.setState({\r\n data: data\r\n });\r\n });\r\n }\r\n /**\r\n *********************************************************\r\n Description: renders the grid component.\r\n Required props: options, components. Within options gridcolumns are needed to create columns.\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n render() {\r\n const { options, components, defaults, order, type, compmap, rules, accessPermissions, accessLevelPermissions, ...otherProps } = this.props;\r\n const { gridcolumns, headerProps } = options\r\n return (\r\n <React.Fragment>\r\n <ReactResizeDetector handleWidth handleHeight>\r\n {({ width, height }) =>\r\n <React.Fragment>\r\n <GridHeader {...headerProps} accessPermissions={accessPermissions} accessLevelPermissions={accessLevelPermissions} />\r\n <Grid\r\n filterable={true}\r\n sortable={true}\r\n pageable={true}\r\n total={this.state.total}\r\n data={this.state.data}\r\n {...this.state.dataState}\r\n onDataStateChange={this.handleDataStateChange}\r\n onRowClick={this.handleRowClick}\r\n rowRender={this.rowRender}\r\n style={{ height: window.innerHeight - 110 }}\r\n resizable\r\n\r\n >\r\n {gridcolumns && gridcolumns.map((each, index) => {\r\n const { name, transformProps } = each\r\n if (name) return <GridColumn {...each} key={index} cell={this.handleGridForm(name, transformProps)} />\r\n else {\r\n if (each.field == 'Status')\r\n return <GridColumn {...each} key={index} cell={this.handleStatusStyle(name)} />\r\n else if (each.field == 'CreatedOn' || each.field == 'UpdatedOn')\r\n return <GridColumn {...each} key={index} filter={'date'} format=\"{0:d}\" />\r\n else\r\n return <GridColumn {...each} key={index} />\r\n }\r\n })}\r\n </Grid>\r\n </React.Fragment>\r\n }\r\n </ReactResizeDetector>\r\n </React.Fragment>\r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(CSimpleGrid);\r\n\r\n","export default __webpack_public_path__ + \"static/media/Secondary_transparent.c91a0611.png\";","export default __webpack_public_path__ + \"static/media/Delasoftlogo.546f181a.jpg\";","export default __webpack_public_path__ + \"static/media/odoticon.d4a3d98b.png\";","export default __webpack_public_path__ + \"static/media/wisdot.6dbbffad.png\";","export default __webpack_public_path__ + \"static/media/deldot.d8aa3cce.png\";","//import adotbackground from '../images/adotlogo.png';\r\nimport adotbackground from '../images/Secondary_transparent.png';\r\nimport delasoftlogo from '../images/Delasoftlogo.jpg';\r\nimport oregonlogo from '../images/odoticon.png';\r\nimport kytclogo from '../images/kytcicon.jpg';\r\nimport adotavatar from '../images/adotavatar.png';\r\nimport wisconsin from '../images/wisdot.png';\r\nimport wisdot from '../images/wisdot.png';\r\nimport DeldotLogo from '../images/deldot.png';\r\nimport { getEnvVariable } from '../../../../modules/environmentalList';\r\n\r\nexport const getLandingPagelogo = (open = true) => {\r\n let right = (localStorage.getItem('internaltoken') || localStorage.getItem('externaltoken')) ? RightDrawerAvatar() : false\r\n let key = getEnvVariable('ModuleKey')\r\n switch (key) {\r\n case 'KEPT':\r\n return kytclogo\r\n case 'AMES':\r\n return oregonlogo\r\n case 'MPS':\r\n return delasoftlogo\r\n case 'AEPS':\r\n return (right && open) ? adotbackground : !open ? adotavatar : adotbackground\r\n case 'WRS':\r\n return wisconsin\r\n case 'FORWARD':\r\n return wisdot\r\n case 'UPS':\r\n return DeldotLogo\r\n default: return adotbackground\r\n }\r\n}\r\n\r\n\r\nexport const RightDrawerAvatar = () => {\r\n let key = getEnvVariable('ModuleKey')\r\n switch (key) {\r\n case 'AEPS':\r\n case 'WRS':\r\n return true\r\n default: return false\r\n }\r\n}\r\n\r\n//Condition for Hiding Modules for External\r\nexport const hideForSubmodules = (key) => {\r\n switch (key) {\r\n case 'APPLICATIONS':\r\n return true\r\n case 'VIOLATIONS':\r\n return true\r\n default: return false\r\n }\r\n}","export default \"data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAAeAAD/4QOBaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjYtYzAxNCA3OS4xNTY3OTcsIDIwMTQvMDgvMjAtMDk6NTM6MDIgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6MmQ3M2QwMDItOTc5ZC00YTliLTgwMDUtMzM4MzIwMDNmNDE0IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjFGMDlBN0VDQzdDNTExRTRCQjBCOTE2NjIxQTYzRTU5IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjFGMDlBN0VCQzdDNTExRTRCQjBCOTE2NjIxQTYzRTU5IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE0IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MmQ3M2QwMDItOTc5ZC00YTliLTgwMDUtMzM4MzIwMDNmNDE0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJkNzNkMDAyLTk3OWQtNGE5Yi04MDA1LTMzODMyMDAzZjQxNCIvPiA8L3JkZjpEZXNjcmlwdGlv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\"","export default \"data:image/png;base64,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\"","import { getEnvVariable } from '../../../../src/modules/environmentalList';\r\nimport SelectedApplicants from './associatedapplicants';\r\n\r\nconst externaluserprofile = {\r\n \"type\": \"slidingbutton\",\r\n \"key\": \"externaluserprofileslidingbutton\",\r\n \"options\": {\r\n \"row\": 6,\r\n \"col\": 4,\r\n \"width\": 2,\r\n \"buttonprops\": {\r\n \"text\": \"My Profile\",\r\n \"size\": \"large\",\r\n \"color\": \"primary\",\r\n \"variant\": \"contained\"\r\n },\r\n excludefromresults: true,\r\n \"label\": \"My Profile\",\r\n \"name\": \"My Profile\",\r\n },\r\n open: true,\r\n components: [{\r\n \"type\": \"formcontainer\",\r\n \"key\": \"externaluserprofileform\",\r\n \"options\": {\r\n \"title\": \"My Profile\",\r\n headerProps: {\r\n \"editbutton\": false,\r\n \"savebutton\": false,\r\n \"backbutton\": true,\r\n \"closebutton\": false,\r\n \"navigateview\": true,\r\n \"breadcrumbs\": [\r\n { \"link\": \"My Profile\", \"materialicon\": \"person\", className: 'eps-breadcrumb-item', class: 'text-light' }\r\n ],\r\n },\r\n hidescroll: true,\r\n \"name\": \"externaluserprofileform\",\r\n \"back\": {\r\n \"popupback\": true\r\n }\r\n },\r\n \"sidepopupadd\": true,\r\n \"components\": [\r\n {\r\n \"type\": \"ctab\",\r\n \"key\": \"tab\",\r\n hidemargin: true,\r\n \"name\": \"externaluserstabform\",\r\n excludefromresults: true,\r\n \"options\": {\r\n tabinfo: [\r\n {\r\n tablabel: \"My Profile\",\r\n tabkey: 0\r\n },\r\n {\r\n tablabel: \"Applicant Information\",\r\n tabkey: 1\r\n },\r\n {\r\n tablabel: \"Update Password\",\r\n tabkey: 2\r\n },\r\n // {\r\n // tablabel: \"Associate Applicants\",\r\n // tabkey: 3,\r\n // },\r\n ],\r\n },\r\n \"components\": [\r\n {\r\n \"tabkey\": 0,\r\n \"type\": \"formcontainer\",\r\n \"key\": \"vieweditprofileform\",\r\n \"options\": {\r\n \"totalcolumns\": 2,\r\n \"totalrows\": 14,\r\n \"alignitem\": \"center\",\r\n \"title\": \" My Profile\",\r\n className: 'siteclass',\r\n styles: {\r\n //margin: 15\r\n },\r\n headerProps: {\r\n \"editbutton\": true,\r\n \"savebutton\": true,\r\n \"backbutton\": false,\r\n \"closebutton\": false,\r\n \"navigateview\": true,\r\n \"breadcrumbs\": [\r\n { \"link\": \"View/Edit Contractor\", \"materialicon\": \"edit\", className: 'eps-breadcrumb-item ', class: 'text-light' }\r\n\r\n ],\r\n },\r\n \"hideEditIcon\": false,\r\n //\"hidecondition\": [{accessPortal: \"E\"}],\r\n designprops: true,\r\n \"name\": \"vieweditprofileform\",\r\n \"crud\": {\r\n \"read\": {\r\n \"get\": {\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/ExternalUser/` + getEnvVariable('ModuleKey') + `/`,\r\n \"urlpath\": '{userId}',\r\n // \"routeProps\": {\r\n // \"value\": \"routeid1\"\r\n // }\r\n \"customProps\": [{\r\n \"custom\": \"userId\"\r\n }]\r\n }\r\n },\r\n \"update\": {\r\n \"put\": {\r\n \"isProfile\": true,\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/ExternalUser/` + getEnvVariable('ModuleKey') + `/`,\r\n \"urlpath\": 'Update/{userId}',\r\n // \"matchProps\": [{\r\n // \"value\": \"routeid1\"\r\n // }]\r\n \"customProps\": [{\r\n \"custom\": \"userId\"\r\n }]\r\n }\r\n }\r\n },\r\n \"validations\": [\r\n {\r\n get: {\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/ProjectMessages/RulesByName?name=master.users`\r\n },\r\n transformProps: {\r\n name: 'Key',\r\n subfieldname: 'MASTER.USERS_',\r\n addsubfieldname: 'USER.'\r\n }\r\n\r\n },\r\n {\r\n get: {\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/ProjectMessages/RulesByName?name=master.externalusers`\r\n },\r\n transformProps: {\r\n name: 'Key',\r\n subfieldname: 'MASTER.EXTERNALUSERS_'\r\n }\r\n\r\n },\r\n {\r\n get: {\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/ProjectMessages/RulesByName?name=master.contacts`\r\n },\r\n transformProps: {\r\n name: 'Key',\r\n subfieldname: 'MASTER.CONTACTS_',\r\n addsubfieldname: 'CONTACTS.'\r\n }\r\n\r\n }\r\n ],\r\n },\r\n \"components\": [\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"username\",\r\n \"options\": {\r\n \"row\": 1,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"label\": \"Username\",\r\n \"name\": \"User.UserName\",\r\n \"disabled\": true,\r\n conditions: {\r\n enable: true,\r\n }\r\n },\r\n\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"firstname\",\r\n \"options\": {\r\n \"row\": 2,\r\n \"col\": 0,\r\n \"width\": 6,\r\n \"label\": \"First Name\",\r\n \"name\": \"User.FirstName\"\r\n },\r\n\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"lastname\",\r\n \"options\": {\r\n \"row\": 2,\r\n \"col\": 0,\r\n \"width\": 6,\r\n \"label\": \"Last Name\",\r\n \"name\": \"User.LastName\"\r\n },\r\n\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"title\",\r\n \"options\": {\r\n \"row\": 3,\r\n \"col\": 0,\r\n \"width\": 6,\r\n \"label\": \"Title\",\r\n \"name\": \"Title\",\r\n\r\n },\r\n\r\n },\r\n // {\r\n // \"type\": \"formtextbox\",\r\n // \"key\": \"department\",\r\n // \"options\": {\r\n // \"row\": 3,\r\n // \"col\": 1,\r\n // \"width\": 6,\r\n // \"label\": \"Department\",\r\n // \"name\": \"DepartmentName\"\r\n // },\r\n\r\n // },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"email\",\r\n \"options\": {\r\n \"row\": 4,\r\n \"col\": 0,\r\n \"width\": 6,\r\n \"label\": \"Email\",\r\n \"name\": \"Email\",\r\n \"disabled\": true,\r\n conditions: {\r\n enable: true,\r\n }\r\n },\r\n\r\n },\r\n {\r\n \"type\": \"cformphonetext\",\r\n \"key\": \"Phone\",\r\n \"options\": {\r\n \"row\": 4,\r\n \"col\": 1,\r\n \"width\": 6,\r\n \"label\": \"Contact Number\",\r\n \"name\": \"Phone\"\r\n }\r\n },\r\n //commented by @vijaya- not required in external profile.\r\n // {\r\n // \"type\": \"cformphonetext\",\r\n // \"key\": \"SecondaryPhone\",\r\n // \"options\": {\r\n // \"row\": 5,\r\n // \"col\": 1,\r\n // \"width\": 6,\r\n // \"label\": \"Cell\",\r\n // \"name\": \"SecondaryPhone\"\r\n // }\r\n // },\r\n // {\r\n // \"type\": \"formswitch\",\r\n // \"key\": \"statusswitch\",\r\n // \"options\": {\r\n // \"row\": 6,\r\n // \"col\": 0,\r\n // \"width\": 6,\r\n // \"label\": \"Status\",\r\n // \"name\": \"User.Status\",\r\n // \"transformProps\": {\r\n // \"A\": true,\r\n // \"I\": false,\r\n // true: \"A\",\r\n // false: \"I\"\r\n // }\r\n // }\r\n // },\r\n {\r\n \"type\": \"formcheckbox\",\r\n \"key\": \"official\",\r\n \"options\": {\r\n \"row\": 6,\r\n \"col\": 1,\r\n \"width\": 3,\r\n \"label\": \"Admin\",\r\n \"name\": \"IsOfficial\",\r\n initialvalue: 'N',\r\n \"disabled\": true,\r\n conditions: {\r\n enable: true,\r\n },\r\n \"transformProps\": {\r\n \"Y\": true,\r\n \"N\": false,\r\n true: \"Y\",\r\n false: \"N\"\r\n }\r\n\r\n }\r\n },\r\n\r\n\r\n {\r\n \"type\": \"historydate\",\r\n \"key\": \"datecreated\",\r\n \"options\": {\r\n \"row\": 9,\r\n \"col\": 0,\r\n \"width\": 6,\r\n \"text\": \"Created On: \",\r\n \"name\": \"CreatedOn\"\r\n }\r\n },\r\n {\r\n \"type\": \"historyuser\",\r\n \"key\": \"createdby\",\r\n \"options\": {\r\n \"row\": 9,\r\n \"col\": 1,\r\n \"width\": 6,\r\n \"text\": \"Created By: \",\r\n \"name\": \"CreatedByName\"\r\n }\r\n },\r\n {\r\n \"type\": \"historydate\",\r\n \"key\": \"updatedon\",\r\n \"options\": {\r\n \"row\": 10,\r\n \"col\": 0,\r\n \"width\": 6,\r\n \"text\": \"Updated On: \",\r\n \"name\": \"UpdatedOn\"\r\n }\r\n },\r\n {\r\n \"type\": \"historyuser\",\r\n \"key\": \"updatedbyname\",\r\n \"options\": {\r\n \"row\": 10,\r\n \"col\": 1,\r\n \"width\": 6,\r\n \"text\": \"Updated By: \",\r\n \"name\": \"UpdatedByName\"\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n \"tabkey\": 1,\r\n \"type\": \"formcontainer\",\r\n \"key\": \"companyinternalform\",\r\n\r\n \"options\": {\r\n \"totalcolumns\": 2,\r\n \"totalrows\": 14,\r\n \"alignitem\": \"center\",\r\n \"title\": \" Applicant\",\r\n className: 'siteclass',\r\n styles: {\r\n //margin: 15\r\n },\r\n headerProps: {\r\n \"editbutton\": true,\r\n \"savebutton\": true,\r\n \"backbutton\": true,\r\n \"closebutton\": false,\r\n \"navigateview\": true,\r\n \"breadcrumbs\": [\r\n { \"link\": \"View/Edit Contractor\", \"materialicon\": \"edit\", className: 'eps-breadcrumb-item ', class: 'text-light' }\r\n\r\n ],\r\n },\r\n \"hideEditButton\": false,\r\n \"hideEditCheckName\": \"IsOfficial\",\r\n \"hideEditCheckValue\": \"N\",\r\n\r\n designprops: true,\r\n \"name\": \"companyinternalform\",\r\n \"crud\": {\r\n \"read\": {\r\n \"get\": {\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/CompanyInternal/` + getEnvVariable('ModuleKey') + `/`,\r\n \"urlpath\": '{CompanyId}',\r\n \"customProps\": [{\r\n \"custom\": \"CompanyId\"\r\n }]\r\n }\r\n },\r\n \"update\": {\r\n \"put\": {\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/CompanyInternal`,\r\n \"urlpath\": '/Update/{CompanyId}/' + getEnvVariable('ModuleKey'),\r\n \"customProps\": [{\r\n \"custom\": \"CompanyId\"\r\n }]\r\n }\r\n }\r\n },\r\n \"validations\": [\r\n {\r\n get: {\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/ProjectMessages/RulesByName?name=master.companies`\r\n },\r\n transformProps: {\r\n name: 'Key',\r\n subfieldname: 'MASTER.COMPANIES_'\r\n }\r\n\r\n },\r\n {\r\n get: {\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/ProjectMessages/RulesByName?name=master.contacts`\r\n },\r\n transformProps: {\r\n name: 'Key',\r\n subfieldname: 'MASTER.CONTACTS_',\r\n addsubfieldname: 'CONTACTS.PRIMARYCONTACTADDRESS.'\r\n }\r\n\r\n }\r\n ]\r\n },\r\n \"components\": [\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"name\",\r\n \"options\": {\r\n \"row\": 0,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"label\": \" Name\",\r\n \"name\": \"Name\"\r\n },\r\n\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"address1\",\r\n \"options\": {\r\n \"row\": 1,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"label\": \"Address Line 1\",\r\n \"name\": \"Contacts.PrimaryContactAddress.AddressLine1\"\r\n },\r\n\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"address2\",\r\n \"options\": {\r\n \"row\": 2,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"label\": \"Address Line 2\",\r\n \"name\": \"Contacts.PrimaryContactAddress.AddressLine2\"\r\n },\r\n\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"city\",\r\n \"options\": {\r\n \"row\": 3,\r\n \"col\": 0,\r\n \"width\": 6,\r\n \"label\": \"City\",\r\n \"name\": \"Contacts.PrimaryContactAddress.City\"\r\n },\r\n\r\n },\r\n {\r\n \"type\": \"formdropdown\",\r\n \"key\": \"state\",\r\n \"options\": {\r\n \"row\": 3,\r\n \"col\": 1,\r\n \"width\": 6,\r\n \"label\": \"State\",\r\n \"name\": \"Contacts.PrimaryContactAddress.State\",\r\n \"id\": \"stateformdropdown\",\r\n \"crud\": {\r\n \"read\": {\r\n \"get\": {\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/Domains/values?domainkey=US_STATES`\r\n }\r\n }\r\n },\r\n \"transformProps\": {\r\n \"value\": \"Value\",\r\n \"name\": \"Name\"\r\n }\r\n\r\n }\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"zip\",\r\n \"options\": {\r\n \"row\": 4,\r\n \"col\": 0,\r\n \"width\": 6,\r\n \"label\": \"Zip\",\r\n \"name\": \"Contacts.PrimaryContactAddress.Zip\"\r\n },\r\n\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"Country\",\r\n \"options\": {\r\n \"row\": 4,\r\n \"col\": 1,\r\n \"width\": 6,\r\n //\"xtype\": \"email\",\r\n \"label\": \"Country\",\r\n \"name\": \"Contacts.PrimaryContactAddress.Country\"\r\n },\r\n\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"ZipExtension \",\r\n \"options\": {\r\n \"row\": 5,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"label\": \"Zip Code Comments\",\r\n \"name\": \"Contacts.PrimaryContactAddress.ZipExtension\"\r\n },\r\n\r\n },\r\n {\r\n \"type\": \"cformphonetext\",\r\n \"key\": \"Phone\",\r\n \"options\": {\r\n \"row\": 5,\r\n \"col\": 0,\r\n \"width\": 6,\r\n \"label\": \"Office Phone\",\r\n \"name\": \"Contacts.PrimaryContactAddress.Phone\"\r\n }\r\n },\r\n {\r\n \"type\": \"cformphonetext\",\r\n \"key\": \"Phone\",\r\n \"options\": {\r\n \"row\": 5,\r\n \"col\": 1,\r\n \"width\": 6,\r\n \"label\": \"Mobile Phone\",\r\n \"name\": \"Contacts.PrimaryContactAddress.SecondaryPhone\"\r\n }\r\n },\r\n {\r\n \"type\": \"cformphonetext\",\r\n \"key\": \"Phone\",\r\n \"options\": {\r\n \"row\": 6,\r\n \"col\": 0,\r\n \"width\": 6,\r\n \"label\": \"Home Phone\",\r\n \"name\": \"Contacts.PrimaryContactAddress.HomePhone\"\r\n }\r\n },\r\n {\r\n \"type\": \"cformphonetext\",\r\n \"key\": \"Fax\",\r\n \"options\": {\r\n \"row\": 6,\r\n \"col\": 1,\r\n \"width\": 6,\r\n \"label\": \"Fax/Others\",\r\n \"name\": \"Contacts.PrimaryContactAddress.Fax\"\r\n }\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"MaxUsers\",\r\n \"options\": {\r\n \"row\": 7,\r\n \"col\": 0,\r\n \"width\": 6,\r\n \"label\": \"Max Users\",\r\n \"name\": \"MaxUsers\",\r\n \"xtype\": \"number\",\r\n \"inputProps\": { min: 1 },\r\n conditions: {\r\n hideall: true\r\n },\r\n }\r\n },\r\n {\r\n \"type\": \"formswitch\",\r\n \"key\": \"switch\",\r\n \"options\": {\r\n \"row\": 8,\r\n \"col\": 0,\r\n \"width\": 2,\r\n \"label\": \"Status\",\r\n \"name\": \"Status\",\r\n \"transformProps\": {\r\n \"A\": true,\r\n \"I\": false,\r\n true: \"A\",\r\n false: \"I\"\r\n },\r\n conditions: {\r\n hideall: true\r\n },\r\n }\r\n },\r\n // {\r\n // \"type\": \"submoduleselection\",\r\n // \"key\": \"SubModuleKey\",\r\n // \"options\": {\r\n // \"row\": 9,\r\n // \"col\": 0,\r\n // \"width\": 6,\r\n // \"label\": \"\",\r\n // \"text\": \"SubModuleKey\",\r\n // \"name\": \"CompaniesModules\",\r\n // \"islabel\": true,\r\n // \"labelinfo\": \"Request module access for\",\r\n // \"titleinfo\": \"Are you sure you want request module access?\",\r\n // \"urlinfo\": \"request\"\r\n // //\"hidelink\": true\r\n // // \"transformProps\": {\r\n // // \"Y\": true,\r\n // // \"N\": false,\r\n // // true: \"Y\",\r\n // // false: \"N\"\r\n // // }\r\n // }\r\n // },\r\n {\r\n \"type\": \"historydate\",\r\n \"key\": \"datecreated\",\r\n \"options\": {\r\n \"row\": 11,\r\n \"col\": 0,\r\n \"width\": 6,\r\n \"text\": \"Created On : \",\r\n \"name\": \"CreatedOn\"\r\n }\r\n },\r\n {\r\n \"type\": \"historyuser\",\r\n \"key\": \"createdby\",\r\n \"options\": {\r\n \"row\": 11,\r\n \"col\": 1,\r\n \"width\": 6,\r\n \"text\": \"Created By : \",\r\n \"name\": \"CreatedByName\"\r\n }\r\n },\r\n {\r\n \"type\": \"historydate\",\r\n \"key\": \"updatedon\",\r\n \"options\": {\r\n \"row\": 12,\r\n \"col\": 0,\r\n \"width\": 6,\r\n \"text\": \"Updated On : \",\r\n \"name\": \"UpdatedOn\"\r\n }\r\n },\r\n {\r\n \"type\": \"historyuser\",\r\n \"key\": \"updatedbyname\",\r\n \"options\": {\r\n \"row\": 12,\r\n \"col\": 1,\r\n \"width\": 6,\r\n \"text\": \"Updated By : \",\r\n \"name\": \"UpdatedByName\"\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"tabkey\": 2,\r\n \"type\": \"formcontainer\",\r\n \"key\": \"updatepassword\",\r\n \"options\": {\r\n \"totalcolumns\": 2,\r\n \"totalrows\": 13,\r\n \"alignitem\": \"center\",\r\n \"title\": \"Update password\",\r\n //\"savebtn\": true,\r\n headerProps: {\r\n\r\n \"savebutton\": true,\r\n \"closebutton\": true,\r\n \"navigateadd\": true,\r\n \"editbutton\": false,\r\n\r\n // \"editbutton\": true,\r\n // \"savebutton\": true,\r\n // \"backbutton\": true,\r\n // \"closebutton\": false,\r\n // \"navigateview\": true,\r\n \"breadcrumbs\": [\r\n { \"link\": \"View/Edit Contractor\", \"materialicon\": \"edit\", className: 'eps-breadcrumb-item ', class: 'text-light' }\r\n\r\n ],\r\n },\r\n \"hideEditButton\": true,\r\n \"hideEditCheckName\": \"IsOfficial\",\r\n \"hideEditCheckValue\": \"N\",\r\n\r\n designprops: true,\r\n \"tabadd\": true,\r\n \"crud\": {\r\n \"update\": {\r\n \"post\": {\r\n \"url\": getEnvVariable('Admin') + '/api/Users/UpdatePassword',\r\n \"customProps\": {\r\n \"custom\": \"userId\"\r\n }\r\n },\r\n message: 'Password updated successfully'\r\n }\r\n },\r\n \"validations\": [\r\n {\r\n get: {\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/ProjectMessages/RulesByName?name=master.users`\r\n },\r\n transformProps: {\r\n name: 'Key',\r\n subfieldname: 'MASTER.USERS_',\r\n }\r\n },\r\n ],\r\n },\r\n\r\n \"components\": [\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"newpassword\",\r\n \"options\": {\r\n \"row\": 1,\r\n \"col\": 0,\r\n \"width\": 8,\r\n \"label\": \"New Password\",\r\n \"name\": \"newpassword\",\r\n \"xtype\": \"password\",\r\n },\r\n\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"Password\",\r\n \"options\": {\r\n \"row\": 3,\r\n \"col\": 0,\r\n \"width\": 8,\r\n \"label\": \"Confirm Password\",\r\n \"name\": \"Password\",\r\n \"xtype\": \"password\",\r\n dependency: {\r\n equal: 'newpassword'\r\n },\r\n },\r\n\r\n },\r\n {\r\n \"type\": \"infotext\",\r\n \"key\": \"Infotext\",\r\n \"options\": {\r\n \"row\": 4,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"text\": \"Password Policy:\",\r\n\r\n }\r\n },\r\n {\r\n \"type\": \"infotext\",\r\n \"key\": \"Infotext\",\r\n \"options\": {\r\n \"row\": 5,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"text\": \"1. Password must contain at least 10 characters.\",\r\n\r\n }\r\n },\r\n {\r\n \"type\": \"infotext\",\r\n \"key\": \"Infotext\",\r\n \"options\": {\r\n \"row\": 6,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"text\": \"2. Password should includes 1 Uppercase Alphabet[A-Z], 1 Lowercase Alphabet[a-z], 1 number[0-9], 1 Special Character.\",\r\n\r\n }\r\n },\r\n {\r\n \"type\": \"formcheckbox\",\r\n \"key\": \"IsForcePasswordUpdate\",\r\n \"options\": {\r\n \"row\": 7,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"label\": \"Require this user to change the password when login\",\r\n \"name\": \"IsForcePasswordUpdate\",\r\n initialvalue: 'N',\r\n \"transformProps\": {\r\n \"Y\": true,\r\n \"N\": false,\r\n true: \"Y\",\r\n false: \"N\"\r\n }\r\n }\r\n },\r\n ]\r\n },\r\n\r\n {\r\n \"tabkey\": 3,\r\n ...SelectedApplicants\r\n },\r\n\r\n ]\r\n },\r\n ]\r\n }]\r\n}\r\n\r\nexport default externaluserprofile","export default \"data:image/jpeg;base64,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\"","import { Divider, Icon } from '@material-ui/core';\r\nimport Avatar from '@material-ui/core/Avatar';\r\nimport Button from '@material-ui/core/Button';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Popover from '@material-ui/core/Popover';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport React, { useEffect } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { bindActionCreators } from 'redux';\r\nimport UserProfileJSON from '../../../../json/agencyusers/userprofile';\r\nimport ExtUserProfileJSON from '../../../../json/companyInternal/Users/profilecompanyuser';\r\nimport { getEnvVariable } from '../../../../modules/environmentalList';\r\nimport { GetData } from '../../../controls/helpers/requests';\r\nimport defaultImage from '../../../resources/Default-UserImg.jpg';\r\nimport { logOut } from '../../../security/actions';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n typography: {\r\n padding: theme.spacing(2),\r\n },\r\n bottomstyle: {\r\n position: 'absolute',\r\n bottom: 0,\r\n backgroundColor: '#0000000a',\r\n width: '100%',\r\n height: '25%'\r\n },\r\n large: {\r\n width: theme.spacing(10),\r\n height: theme.spacing(10),\r\n },\r\n split: {\r\n height: '100%',\r\n width: '40%',\r\n position: 'fixed',\r\n },\r\n left: {\r\n left: 0,\r\n },\r\n right: {\r\n right: 0,\r\n }\r\n}));\r\n\r\nfunction SimplePopover(props) {\r\n const classes = useStyles();\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n const [user, setUser] = React.useState(props.userProfile);\r\n const [loading, setLoading] = React.useState(false);\r\n const [openSlide, setopenSlide] = React.useState(false);\r\n const [impersonate, setImpersonate] = React.useState(false);\r\n\r\n const handleClick = (event) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n useEffect(() => {\r\n\r\n if (props.accessPermissions) {\r\n if (getEnvVariable('ModuleKey') == \"WRS\") {\r\n let url = props.accessPermissions.portal === 'I' ? getEnvVariable('MasterAdmin') + `/api/${getEnvVariable('ModuleKey')}InternalUser/${getEnvVariable('ModuleKey')}UserById/` : getEnvVariable('MasterAdmin') + `/api/ExternalUser/` + getEnvVariable('ModuleKey') + `/`;\r\n if (props.accessPermissions.userId) {\r\n GetData(url + props.accessPermissions.userId).then(res => {\r\n setUser(res);\r\n setLoading(false);\r\n })\r\n }\r\n }\r\n else {\r\n let url = props.accessPermissions.portal === 'I' ? getEnvVariable('MasterAdmin') + `/api/${getEnvVariable('ModuleKey')}InternalUser/UserById/` : getEnvVariable('MasterAdmin') + `/api/ExternalUser/` + getEnvVariable('ModuleKey') + `/`;\r\n if (props.accessPermissions.userId) {\r\n GetData(url + props.accessPermissions.userId).then(res => {\r\n setUser(res);\r\n setLoading(false);\r\n })\r\n }\r\n }\r\n\r\n }\r\n else props.history.push('/');\r\n }, [anchorEl]);\r\n\r\n\r\n useEffect(() => {\r\n setUser(props.userProfile)\r\n }, [props.userProfile])\r\n\r\n const profile = () => {\r\n if (props.accessPermissions && props.accessPermissions.portal === 'I') {\r\n if (props.accessPermissions.userId) {\r\n setopenSlide(!openSlide)\r\n }\r\n else {\r\n props.history.push('/accessdenied');\r\n }\r\n }\r\n else if (props.accessPermissions && props.accessPermissions.portal === 'E') {\r\n if (user && props.accessPermissions.userId) {\r\n setopenSlide(!openSlide)\r\n }\r\n else if (props.accessPermissions.userId) {\r\n setopenSlide(!openSlide)\r\n setLoading(true)\r\n }\r\n else {\r\n props.history.push('/accessdenied');\r\n }\r\n }\r\n }\r\n\r\n const signout = () => {\r\n // props.history.push();\r\n localStorage.clear();\r\n // logOut();\r\n window.location.replace(getEnvVariable('AuthorizationScreen') + 'user/logout');\r\n }\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n\r\n const handleImpersonate = (value) => {\r\n localStorage.setItem('impersonate', value)\r\n window.location.reload()\r\n\r\n }\r\n\r\n const open = Boolean(anchorEl);\r\n const id = open ? 'simple-popover' : undefined;\r\n const EachComp = props.compmap[UserProfileJSON.type]\r\n return (\r\n <div >\r\n {!props.mobile && <IconButton title='Profile' color=\"inherit\" onClick={handleClick}> <Avatar alt=\"Profile\" src={(user && user.UserImageUI) || defaultImage} /> </IconButton>}\r\n {\r\n props.mobile && <MenuItem className=\" pl-4\" onClick={handleClick}>\r\n <Icon>account_box</Icon> Profile\r\n </MenuItem>\r\n }\r\n <Popover\r\n id={id}\r\n open={open}\r\n anchorEl={anchorEl}\r\n onClose={handleClose}\r\n anchorOrigin={{\r\n vertical: 'bottom',\r\n horizontal: 'center',\r\n }}\r\n transformOrigin={{\r\n vertical: 'top',\r\n horizontal: 'center',\r\n }}\r\n PaperProps={{\r\n style: {\r\n minHeight: 221,\r\n minWidth: 320,\r\n },\r\n }}\r\n >\r\n <div className='pb-2 m-2'></div>\r\n {/* <small className='pl-3' >{getEnvVariable('ModuleKey')}</small> */}\r\n <Button className='float-end mr-2' size=\"small\" color=\"secondary\" onClick={signout}>Log Out</Button>\r\n <Button size=\"small\" color=\"primary\" className='pl-3 mr-2' onClick={profile}>Profile</Button>\r\n <div className='row col-sm-12'>\r\n <span className=\"row col-sm-6 \">\r\n <Avatar alt=\"Profile\" className={classes.large} src={(user && user.UserImageUI) || defaultImage} />\r\n </span>\r\n <div className=\"row col-sm-6 \">\r\n <div className='m-2'><b>{props.accessPermissions && props.accessPermissions.name &&\r\n ((props.accessPermissions.name).length > 15 ? `${(props.accessPermissions.name).substring(0, 15)}...` : `${props.accessPermissions.name}`)}</b><br />\r\n {localStorage.getItem('impersonate') &&\r\n getEnvVariable('AccessPortal') === 'E' && <small>Impersonated : {(JSON.parse(localStorage.getItem('profile')).impersonateAccess.find(each => each.id === JSON.parse(localStorage.getItem('impersonate'))) || {}).name}</small>}\r\n\r\n </div>\r\n \r\n {getEnvVariable('AccessPortal') === 'E' && JSON.parse(localStorage.getItem('profile')).impersonateAccess && <Button size=\"small\" color=\"primary\" onClick={(event) => setImpersonate(event.currentTarget)}>Impersonate</Button>}\r\n <Popover\r\n open={Boolean(impersonate)}\r\n anchorEl={impersonate}\r\n onClose={() => setImpersonate(null)}\r\n anchorOrigin={{\r\n vertical: 'bottom',\r\n horizontal: 'center',\r\n }}\r\n transformOrigin={{\r\n vertical: 'top',\r\n horizontal: 'center',\r\n }}\r\n\r\n > {props.accessPermissions && props.accessPermissions.impersonateAccess && props.accessPermissions.impersonateAccess.map(each => {\r\n return <MenuItem onClick={() => handleImpersonate(each.id)} value={each.id} > {each.name} </MenuItem>\r\n })}\r\n\r\n </Popover>\r\n {loading && <div><Typography className='pl-3 pt-1 m-2' variant='caption'>Loading</Typography></div>}\r\n </div>\r\n </div>\r\n <div>\r\n </div>\r\n <div className={classes.bottomstyle}>\r\n <Divider />\r\n <small className='pl-5 m-2' >Last Login : {JSON.parse(localStorage.getItem('loginDate'))}</small>\r\n </div>\r\n </Popover>\r\n {\r\n openSlide && UserProfileJSON && props.accessPermissions.portal === 'I' &&\r\n <EachComp {...UserProfileJSON} key={UserProfileJSON.key} handleSlide={profile} accessPermissions={props.accessPermissions} compmap={props.compmap} dataItem={{ ...props.accessPermissions, CompanyId: user && user.CompanyId ? user.CompanyId : null, IsOfficial: user && user.IsOfficial ? user.IsOfficial : 'N' }} />\r\n }\r\n {\r\n !loading && openSlide && ExtUserProfileJSON && props.accessPermissions.portal === 'E' &&\r\n <EachComp {...ExtUserProfileJSON} key={ExtUserProfileJSON.key} handleSlide={profile} accessPermissions={props.accessPermissions} compmap={props.compmap} dataItem={{ ...props.accessPermissions, CompanyId: user && user.CompanyId ? user.CompanyId : null, IsOfficial: user && user.IsOfficial ? user.IsOfficial : 'N' }} />\r\n }\r\n </div>\r\n );\r\n}\r\n\r\nconst mapProps = (state) => {\r\n return { user: state.authentication.user }\r\n}\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ logOut }, dispatch);\r\n}\r\n\r\nSimplePopover = connect(mapProps, mapActions)(SimplePopover);\r\nexport default withRouter(SimplePopover);","/**\r\n *********************************************************\r\n Description: Layout for the header component. Needs to be modified a little\r\n Required props: options, components, compmap. Each component in components has a alignitem prop to layout the component.\r\n Another configuration is responsive can be added in the json to make the component responsive. When the screen size\r\n decreases all the header components that has isresponsive are show as a menu.\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n import AppBar from '@material-ui/core/AppBar';\r\n import Badge from '@material-ui/core/Badge';\r\n import Divider from '@material-ui/core/Divider';\r\n import IconButton from '@material-ui/core/IconButton';\r\n import Menu from '@material-ui/core/Menu';\r\n import MenuItem from '@material-ui/core/MenuItem';\r\n import { withStyles } from '@material-ui/core/styles';\r\n import Toolbar from '@material-ui/core/Toolbar';\r\n import Typography from '@material-ui/core/Typography';\r\n import UserIcon from '@material-ui/icons/AccountCircle';\r\n import SupportIcon from '@material-ui/icons/ContactSupport';\r\n import MoreIcon from '@material-ui/icons/MoreVert';\r\n import NotificationIcon from '@material-ui/icons/NotificationsActive';\r\n import moment from 'moment';\r\n import PropTypes from 'prop-types';\r\n import React, { Component, Fragment } from 'react';\r\n import { connect } from 'react-redux';\r\n import { withRouter } from 'react-router-dom';\r\n import { bindActionCreators } from 'redux';\r\n import { getProjectMessages, setNotifications } from '../../../actions';\r\n import { getEnvVariable } from '../../../../modules/environmentalList';\r\n import { getSignInToken } from '../../../modules/header';\r\n import { getLandingPagelogo } from './ImageLogos';\r\n import RightDrawer from './profilepopover';\r\n import HomeIcon from '@material-ui/icons/Home';\r\n import { GetData } from '../../../controls/helpers/requests';\r\n import { setProfile } from '../../../security/actions';\r\n \r\n const styles = theme => ({\r\n grow: {\r\n flexGrow: 1,\r\n },\r\n \r\n sectionDesktop: {\r\n display: 'none',\r\n [theme.breakpoints.up('md')]: {\r\n display: 'contents',\r\n },\r\n height: 'inherit',\r\n },\r\n sectionNonDesktop: {\r\n // display: 'none',\r\n [theme.breakpoints.up('md')]: {\r\n display: 'contents',\r\n },\r\n height: 'inherit',\r\n },\r\n sectionMobile: {\r\n display: 'flex',\r\n [theme.breakpoints.up('md')]: {\r\n display: 'none',\r\n },\r\n height: 'inherit',\r\n },\r\n });\r\n \r\n class MuiEdgeLayout extends Component {\r\n state = {\r\n anchorEl: null,\r\n mobileMoreAnchorEl: null,\r\n userProfile: {},\r\n landinglogo: ''\r\n };\r\n \r\n \r\n componentDidMount() {\r\n this.loadInitialGrid();\r\n }\r\n \r\n componentDidUpdate(prevProps, prevState) {\r\n if (this.props.profile) {\r\n let url = getEnvVariable('AccessPortal') === 'I' ? getEnvVariable('MasterAdmin') + `/api/${getEnvVariable('ModuleKey')}InternalUser/UserById/` : getEnvVariable('MasterAdmin') + `/api/ExternalUser/` + getEnvVariable('ModuleKey') + `/`;\r\n let user = localStorage.getItem('profile') && JSON.parse(localStorage.getItem('profile'))\r\n if (user.userId) {\r\n GetData(url + user.userId).then(res => {\r\n this.props.setProfile(false)\r\n this.setState({ userProfile: res })\r\n })\r\n }\r\n }\r\n }\r\n \r\n loadInitialGrid = () => {\r\n let logo = getLandingPagelogo();\r\n this.setState({ landinglogo: logo }, () => {\r\n let token = getSignInToken();\r\n if (token)\r\n this.props.setNotifications();\r\n })\r\n }\r\n \r\n handleNavigation = (url) => {\r\n this.props.history.push(url)\r\n }\r\n \r\n handleMenuClose = () => {\r\n this.setState({ anchorEl: null });\r\n this.handleMobileMenuClose();\r\n };\r\n \r\n handleMobileMenuOpen = event => {\r\n this.setState({ mobileMoreAnchorEl: event.currentTarget });\r\n };\r\n \r\n handleMobileMenuClose = () => {\r\n this.setState({ mobileMoreAnchorEl: null });\r\n };\r\n \r\n handleNotificationClick = () => {\r\n this.props.history.push('/notifications')\r\n }\r\n \r\n CSSBackgroundClasses = (style = '') => {\r\n let module = getEnvVariable('ModuleKey')\r\n switch (module) {\r\n case 'APS':\r\n return { background: 'linear-gradient(to right bottom, #ede7f6, rgba(0, 53, 95, 255))' }\r\n case 'WRS':\r\n return { background: 'linear-gradient(to right bottom, #074078, #074078)' }\r\n case 'FORWARD':\r\n return { background: 'linear-gradient(to right bottom, #074078, #074078)' }\r\n // case 'AMES':\r\n // return { background: 'linear-gradient(to right bottom, rgb(12, 15, 26), rgb(41,51,82))' }\r\n case 'UPS':\r\n return { background: 'linear-gradient(to right bottom, #004785, #337ab7)' }\r\n default:\r\n return { background: '#2b3a42' };\r\n }\r\n }\r\n \r\n CSSColorClasses = (style = '') => {\r\n let module = getEnvVariable('ModuleKey')\r\n switch (module) {\r\n case 'APS':\r\n return 'rgba(0, 53, 95, 255)'\r\n case 'AMES':\r\n return '#fff'\r\n default:\r\n return '';\r\n }\r\n }\r\n /**\r\n *********************************************************\r\n Description: Renders the header.\r\n Required props: options, components, compmap. Each component in components has a alignitem prop to layout the component.\r\n Alignitem has left, right, title for aligning. Isresponsive property puts the component inside the menu in the mobile screen.\r\n Alignitem drawer needs to be removed.\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n \r\n render() {\r\n const { options, components, defaults, order, key, type, compmap, handleDrawerOpen, notification, headerTitle } = this.props;\r\n const { mobileMoreAnchorEl, anchorEl } = this.state;\r\n const { classes, theme } = this.props;\r\n const isMobileMenuOpen = Boolean(mobileMoreAnchorEl);\r\n const { toolbaropt, menuopt, menuitemopt, iconbtnopt, ...otherOptions } = options\r\n let alignchildren = {\r\n left: [],\r\n right: [],\r\n title: [],\r\n drawer: [],\r\n isresponsive: [],\r\n isnotresponsive: [],\r\n inhead: []\r\n }\r\n components.forEach(each => {\r\n const { type, defaults, options } = each\r\n const { alignitem, isresponsive } = options\r\n const EachComp = compmap[each.type]\r\n const child = <EachComp {...each} key={each.key} compmap={compmap} />\r\n if (alignitem === 'left') {\r\n alignchildren.left.push(child)\r\n if (isresponsive === undefined) {\r\n alignchildren.isnotresponsive.push(child)\r\n }\r\n }\r\n if (alignitem === 'right') {\r\n alignchildren.right.push(child)\r\n if (isresponsive === undefined) {\r\n alignchildren.isresponsive.push(child)\r\n }\r\n }\r\n if (alignitem === 'title') {\r\n alignchildren.title.push(child)\r\n if (isresponsive === undefined) {\r\n alignchildren.inhead.push(child)\r\n }\r\n }\r\n if (alignitem === 'drawer') {\r\n alignchildren.drawer.push(child)\r\n if (isresponsive === undefined) {\r\n alignchildren.inhead.push(child)\r\n }\r\n }\r\n if (isresponsive) {\r\n alignchildren.isresponsive.push(child)\r\n }\r\n else {\r\n if (isresponsive === false) {\r\n alignchildren.isnotresponsive.push(child)\r\n }\r\n }\r\n })\r\n \r\n /**\r\n *********************************************************\r\n Description: Handles rendering the header for the mobiles.\r\n Required props: options, components, compmap. Each component in components has a alignitem prop to layout the component.\r\n Another configuration is responsive can be added in the json to make the component responsive. When the screen size\r\n decreases all the header components that has isresponsive are pushed into a menu on button.\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n const isMenuOpen = Boolean(anchorEl);\r\n \r\n \r\n \r\n const renderMobileMenu = (\r\n <Menu\r\n anchorEl={mobileMoreAnchorEl}\r\n anchorOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n open={isMobileMenuOpen}\r\n onClose={this.handleMenuClose}\r\n >\r\n <MenuItem disabled>\r\n <IconButton color=\"inherit\">\r\n <UserIcon />\r\n </IconButton>\r\n {(this.props.accessPermissions && this.props.accessPermissions.name)}\r\n </MenuItem>\r\n <Divider />\r\n <MenuItem onClick={() => window.open(getEnvVariable('HelpUI'))}>\r\n <IconButton color=\"inherit\">\r\n <SupportIcon />\r\n </IconButton>\r\n <p> Help</p>\r\n </MenuItem>\r\n <Divider />\r\n <MenuItem onClick={() => this.handleNavigation('/notifications')}>\r\n <IconButton color=\"inherit\">\r\n <Badge max=\"9999\" badgeContent={(notification && (notification === 0 ? '0' : notification)) || '0'} color=\"secondary\">\r\n <NotificationIcon />\r\n </Badge>\r\n </IconButton>\r\n <p> Notifications</p>\r\n </MenuItem>\r\n <Divider />\r\n <RightDrawer accessPermissions={this.props.accessPermissions} mobile={true} compmap={this.props.compmap} userProfile={this.state.userProfile || null} />\r\n </Menu>\r\n );\r\n \r\n return (\r\n <div className={classes.grow}>\r\n <AppBar position=\"static\" {...otherOptions} style={this.CSSBackgroundClasses()}>\r\n <Toolbar variant=\"dense\" {...toolbaropt}>\r\n <div className={this.props.accessPermissions && getEnvVariable('ModuleKey') !== 'WRS' ? classes.sectionDesktop : classes.sectionNonDesktop} >\r\n {headerTitle}\r\n {getEnvVariable('ModuleKey') === 'WRS'? !this.props.user && <Fragment height='80px'>\r\n \r\n </Fragment>:\r\n !this.props.user && <Fragment><img src={this.state.landinglogo || ''} className=\"d-inline-block\" width='auto' height='80px' style={{ padding: '2px' }} />\r\n <label className=\"pt-2 pl-3\" style={{ 'line-height' : '1',fontSize: '32px', color: this.CSSColorClasses() }}>{getEnvVariable('Title')}<br />\r\n <small style={{ fontSize: '20px', color: this.CSSColorClasses() }}>{getEnvVariable('SubTitle')}\r\n {/* | <a className=\"btn btn-dark btn-sm\" style={{ color: 'inherit' }} target={'_blank'} href={getEnvVariable('HelpUI')}>Help Center</a> */}\r\n </small></label> </Fragment>\r\n }\r\n {alignchildren.left}\r\n {/* {getEnvVariable('ModuleKey') === 'APS' && <label style={{ fontSize: '32px', color: 'rgba(0, 53, 95, 255)' }}>{alignchildren.left}</label>} */}\r\n <div style={this.props.user ? { flexGrow: 1 } : { flexGrow: 0.5 }} />\r\n \r\n <div />\r\n {alignchildren.right}\r\n {this.props.user && <Fragment>\r\n <IconButton color=\"inherit\" className=\"px-2 pb-2\" title=\"Home\" onClick={() => this.props.history.push('/')}>\r\n <HomeIcon />\r\n </IconButton>\r\n {'Welcome ' + (this.state.userProfile && this.state.userProfile.User && this.state.userProfile.User.FullName || (this.props.accessPermissions && this.props.accessPermissions.name)) + ' |'}\r\n {moment().format('LL')} {/* {moment().format('HH:mm:ss')*/} |\r\n <a title=\"DOT Support\" className=\"ps-1\" style={{ color:'inherit', textDecoration:'underline'}} target=\"_blank\" href={'mailto:DOTWildlifeReportingSystem@dot.wi.gov'} color=\"inherit\">DOT Support</a>\r\n <a title=\"IT Support\" className=\"ps-1\" style={{ color:'inherit', textDecoration:'underline'}} target=\"_blank\" href={'mailto:wrssupport@delasoft.com?cc=DOTWildlifeReportingSystem@dot.wi.gov'} color=\"inherit\">IT Support</a>\r\n <a title=\"Help\" className=\"ps-1\" style={{ color:'inherit', textDecoration:'underline'}} href={getEnvVariable('HelpUI')} target='_blank'color=\"inherit\">Help</a>\r\n\r\n <IconButton color=\"inherit\" title=\"Unread Notifications\" className=\"px-2\" onClick={e => this.handleNotificationClick(e)}>\r\n <Badge max=\"9999\" badgeContent={(notification && (notification === 0 ? '0' : notification)) || '0'} color=\"secondary\">\r\n <NotificationIcon />\r\n </Badge>\r\n </IconButton>\r\n {/* <IconButton title=\"Help\" className=\"px-3\" style={{ color: 'inherit' }} href={getEnvVariable('HelpUI')} target='_blank' color=\"inherit\">\r\n <SupportIcon />\r\n </IconButton> */}\r\n {/* <i className=\"\" onClick={() => this.props.history.goBack()}><IconButton color=\"inherit\" title=\"Back\">\r\n <BackIcon />\r\n </IconButton></i> */}\r\n <RightDrawer accessPermissions={this.props.accessPermissions} compmap={compmap} userProfile={this.state.userProfile || null} />\r\n </Fragment>\r\n }\r\n </div>\r\n {this.props.accessPermissions && <div className={classes.sectionMobile}>\r\n {alignchildren.inhead}\r\n <div />\r\n <Typography variant={'h6'} className=\"pt-2\">{getEnvVariable('TitleKey')}</Typography>\r\n <IconButton aria-haspopup=\"true\" onClick={this.handleMobileMenuOpen} color=\"inherit\" {...iconbtnopt}>\r\n <MoreIcon />\r\n </IconButton>\r\n \r\n </div>}\r\n </Toolbar>\r\n {this.props.accessPermissions && renderMobileMenu}\r\n </AppBar>\r\n </div>\r\n )\r\n \r\n }\r\n \r\n }\r\n \r\n MuiEdgeLayout.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n };\r\n MuiEdgeLayout = withStyles(styles)(MuiEdgeLayout);\r\n const mapProps = (state) => {\r\n return { user: state.authentication.user, profile: state.authentication.profile, notification: (state.header && state.header.notifications) || 0 }\r\n }\r\n const mapActions = dispatch => {\r\n return bindActionCreators({ setNotifications, getProjectMessages, setProfile }, dispatch);\r\n }\r\n \r\n MuiEdgeLayout = connect(mapProps, mapActions)(MuiEdgeLayout);\r\n export default withRouter(MuiEdgeLayout);\r\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 ","export default __webpack_public_path__ + \"static/media/WRSBanner.fa40771a.png\";","export default __webpack_public_path__ + \"static/media/wrslogo.a673650c.png\";"," /** \r\n *********************************************************\r\n Description: Header component.\r\n Required props: N/A \r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n import React, { Component, Fragment } from 'react';\r\n import MuiEdgeLayout from './layouts/muiedge';\r\n import { AppBar } from '@material-ui/core';\r\n import WRSHeader from '../header/images/WRSBanner.png'\r\n import WRsLogo from '../header/images/wrslogo.png'\r\n import { getEnvVariable } from '../../../modules/environmentalList';\r\n \r\n \r\n class HeaderView extends Component {\r\n \r\n render() {\r\n const { options, components, defaults, order, type, compmap, actionmessage, accessPermissions } = this.props;\r\n const { layout } = options\r\n if (actionmessage) {\r\n const { action, items } = actionmessage\r\n }\r\n \r\n return (\r\n getEnvVariable('ModuleKey') === 'WRS' && !accessPermissions ? \r\n <Fragment>\r\n <div>\r\n <img src={WRSHeader} alt='Logo' style={{ height: 220 ,width:'100%'}}/>\r\n </div>\r\n <MuiEdgeLayout {...this.props} />\r\n <div>\r\n <img src={WRsLogo} className=\"pt-5\" style={{ padding:'20px', height:'40%',width:'20%',margin:'0 auto',display:'block'}}/>\r\n </div>\r\n </Fragment> :\r\n <Fragment>\r\n <MuiEdgeLayout {...this.props} />\r\n </Fragment> \r\n )\r\n }\r\n \r\n }\r\n \r\n export default HeaderView;\r\n \r\n \r\n /**\r\n * type:'header',\r\n * key:'header',\r\n * options:{\r\n * },\r\n * defaults:{\r\n * layout:'border'\r\n * },\r\n * components:[{\r\n * type:'text',\r\n * order:1,\r\n * key:'title',\r\n * options:{\r\n * isresponsive: true\r\n * },\r\n *\r\n * components:[]\r\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 // import React, { Component, Fragment } from 'react';\r\n // import BootstrapNavLayout from './layouts/bootstrapnav'\r\n // import BorderLayout from './layouts/border'\r\n // import EqualLayout from './layouts/equal'\r\n // import MuiEdgeLayout from './layouts/muiedge'\r\n \r\n // class HeaderView extends Component {\r\n \r\n // render() {\r\n // const { options, components, defaults, order, key, type, children, actionmessage } = this.props;\r\n // if(actionmessage){\r\n // const {action, items} = actionmessage\r\n // }\r\n // const { theme, layout, ...otherDefaults } = defaults\r\n // let header\r\n // if (theme !== 'custom') {\r\n \r\n // // if (layout === 'bootstrapnav') {\r\n // // header = <BootstrapNavLayout {...newoptions} />\r\n // // }\r\n // // if (layout === 'border') {\r\n // // header = <BorderLayout {...newoptions} />\r\n // // }\r\n // // if (layout === 'equal') {\r\n // // header = <EqualLayout {...newoptions} />\r\n // // }\r\n // if (layout === 'muiedge') {\r\n // header = <MuiEdgeLayout {...this.props} />\r\n // }\r\n \r\n // }\r\n // else{\r\n // header = this.props.children\r\n // }\r\n \r\n // return (\r\n // <Fragment>\r\n // {header}\r\n // </Fragment>\r\n \r\n // )\r\n // }\r\n \r\n // }\r\n \r\n // export default HeaderView;\r\n \r\n \r\n // /**\r\n // * type:'header',\r\n // * key:'header',\r\n // * options:{\r\n // * },\r\n // * defaults:{\r\n // * layout:'border'\r\n // * },\r\n // * components:[{\r\n // * type:'text',\r\n // * order:1,\r\n // * key:'title',\r\n // * options:{\r\n // * isresponsive: true\r\n // * },\r\n // *\r\n // * components:[]\r\n // * }],\r\n // *\r\n // */","/**\r\n *********************************************************\r\n Description: Right sidebar.\r\n Required props: options,items. Items to generate icons and names.\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\nimport { Typography } from '@material-ui/core';\r\n//import MenuItem from '@material-ui/core/MenuItem';\r\n//Expansion Panels For Tree\r\nimport MuiAccordion from '@material-ui/core/Accordion';\r\nimport MuiAccordionDetails from '@material-ui/core/AccordionDetails';\r\nimport MuiAccordionSummary from '@material-ui/core/AccordionSummary';\r\nimport Avatar from '@material-ui/core/Avatar';\r\nimport { deepPurple } from '@material-ui/core/colors';\r\n// Menu Items and Grouping\r\nimport Divider from '@material-ui/core/Divider';\r\nimport Drawer from '@material-ui/core/Drawer';\r\nimport Icon from '@material-ui/core/Icon';\r\nimport IconButton from '@material-ui/core/IconButton';\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 Popover from '@material-ui/core/Popover';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport withWidth from '@material-ui/core/withWidth';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport ChevronLeftIcon from '@material-ui/icons/ChevronLeft';\r\nimport ChevronRightIcon from '@material-ui/icons/ChevronRight';\r\nimport classNames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport React, { Fragment } from 'react';\r\nimport { Link, withRouter } from \"react-router-dom\";\r\nimport { getEnvVariable } from '../../../modules/environmentalList';\r\nimport { getLandingPagelogo, hideForSubmodules } from '../../modules/header/layouts/ImageLogos';\r\n//import useUnsavedChangesWarning from '../form/useUnsavedChangesWarning';\r\n\r\n\r\nconst drawerWidth = 240;\r\n\r\nconst styles = theme => ({\r\n root: {\r\n display: 'flex',\r\n },\r\n appBar: {\r\n zIndex: theme.zIndex.drawer + 1,\r\n transition: theme.transitions.create(['width', 'margin'], {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n },\r\n appBarShift: {\r\n marginLeft: drawerWidth,\r\n width: `calc(100% - ${drawerWidth}px)`,\r\n transition: theme.transitions.create(['width', 'margin'], {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.enteringScreen,\r\n }),\r\n },\r\n menuButton: {\r\n marginLeft: 12,\r\n marginRight: 36,\r\n },\r\n purpleAvatar: {\r\n margin: 10,\r\n color: '#fff',\r\n backgroundColor: deepPurple[500],\r\n },\r\n hide: {\r\n display: 'none',\r\n },\r\n drawer: {\r\n width: drawerWidth,\r\n flexShrink: 0,\r\n whiteSpace: 'nowrap',\r\n },\r\n drawerOpen: {\r\n width: drawerWidth,\r\n transition: theme.transitions.create('width', {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.enteringScreen,\r\n }),\r\n },\r\n drawerClose: {\r\n transition: theme.transitions.create('width', {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n overflowX: 'hidden',\r\n width: theme.spacing(9.2) + 1,\r\n [theme.breakpoints.up('sm')]: {\r\n width: theme.spacing(9) + 1,\r\n },\r\n },\r\n toolbar: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'flex-end',\r\n padding: '0 8px 0 0',\r\n ...theme.mixins.toolbar,\r\n },\r\n content: {\r\n flexGrow: 1,\r\n padding: theme.spacing(1) * 3,\r\n },\r\n last: {\r\n display: 'flex',\r\n position: 'fixed',\r\n bottom: '0px',\r\n backgroundColor: '#212529 !important',\r\n margin: '0px'\r\n }\r\n});\r\n\r\nconst Accordion = withStyles({\r\n root: {\r\n //border: '1px solid rgba(0,0,0,.125)',\r\n boxShadow: 'none',\r\n '&:not(:last-child)': {\r\n borderBottom: 0,\r\n width: 'min-content'\r\n },\r\n '&:before': {\r\n display: 'none',\r\n },\r\n // margin: 'auto',\r\n marginTop: '1px',\r\n marginBottom: '0px',\r\n width: 'min-content'\r\n },\r\n expanded: {\r\n margin: '0px'\r\n // margin: 'auto',\r\n // marginTop: '1px',\r\n // marginBottom: '0px'\r\n },\r\n})(MuiAccordion);\r\n\r\nconst AccordionSummary = withStyles({\r\n root: {\r\n //backgroundColor: 'rgba(0,0,0,.03)',\r\n //borderBottom: '1px solid rgba(0,0,0,.125)',\r\n marginBottom: -1,\r\n minHeight: 56,\r\n '&$expanded': {\r\n minHeight: 56,\r\n },\r\n display: 'block'\r\n },\r\n content: {\r\n '&$expanded': {\r\n margin: '12px 0',\r\n },\r\n },\r\n expanded: {},\r\n})(props => <MuiAccordionSummary {...props} />);\r\n\r\nAccordionSummary.muiName = 'AccordionSummary';\r\n\r\nconst AccordionDetails = withStyles(theme => ({\r\n root: {\r\n paddingLeft: '5px',\r\n display: 'block'\r\n },\r\n}))(MuiAccordionDetails);\r\n\r\n\r\nconst SidebarView = withStyles(styles)((props) => {\r\n const { options, components, defaults, order, type, children, rules, drawerOpen, handleTitle, classes, theme, width, ...otherProps } = props;\r\n const { text, icon, items, anchor, ...otherOptions } = options\r\n let openSidebarDisplay = (props.width == \"sm\" || props.width == \"xs\" || props.width == \"md\") ? false : true\r\n const [open, setOpen] = React.useState(openSidebarDisplay);\r\n let Profile = localStorage.getItem('profile') && JSON.parse(localStorage.getItem('profile'))\r\n let typeAccess = Profile && Profile.configType == 'S' ? Profile.moduleSiteAccess : Profile.configType == 'R' ? Profile.moduleRegionAccess : Profile.moduleDistrictAccess\r\n let roleaccess = Profile && typeAccess ?\r\n Object.values(typeAccess).includes('Add') ? 'CanAdd' :\r\n Object.values(typeAccess).includes('Update') ? 'CanEdit' :\r\n Object.values(typeAccess).includes('Read') ? 'CanRead' : 'CanAdd' : 'CanAdd'\r\n let portal = props.accessPermissions ? props.accessPermissions.portal : null\r\n let canAdd = (!roleaccess || !portal) ? true : portal === \"I\" && roleaccess === \"CanAdd\" ? true : (portal === \"E\") ? true : false\r\n let canEdit = (!roleaccess || !portal) ? true : portal === \"I\" && roleaccess === \"CanEdit\" ? true : (portal === \"E\") ? true : false\r\n let canRead = (!roleaccess || !portal) ? true : portal === \"I\" && roleaccess === \"CanRead\" ? true : (portal === \"E\") ? true : false\r\n\r\n\r\n\r\n React.useEffect(() => {\r\n setOpen(openSidebarDisplay);\r\n }, [props.width]);\r\n\r\n function handleDrawerOpen() {\r\n setOpen(true);\r\n }\r\n\r\n function handleDrawerClose() {\r\n setOpen(false);\r\n }\r\n\r\n if (Profile)\r\n return (\r\n <Drawer open={open}\r\n variant=\"permanent\"\r\n anchor={anchor}\r\n className={classNames(classes.drawer, {\r\n [classes.drawerOpen]: open,\r\n [classes.drawerClose]: !open,\r\n })}\r\n classes={{\r\n paper: classNames({\r\n [classes.drawerOpen]: open,\r\n [classes.drawerClose]: !open,\r\n }),\r\n }}\r\n {...otherOptions}\r\n >\r\n <div className={classes.toolbar}>\r\n {(!open || getEnvVariable('ModuleKey') !== 'AEPS') && <Avatar style={{ margin: \"auto\" }} src={getLandingPagelogo(open)} />} \r\n {(open && getEnvVariable('ModuleKey') === 'AEPS') && <img src={getLandingPagelogo() || ''} className=\"d-inline-block\" width='auto' height='40px' />}\r\n {open && <Fragment>\r\n {getEnvVariable('ModuleKey') !== 'AEPS' && <Typography variant='h6'>{`${getEnvVariable('TitleKey')}`} </Typography>}\r\n <div /> <Popovers classes={classes} moduleRegionAccess={props.accessPermissions.moduleRegionAccess} canAdd={canAdd} /></Fragment>}\r\n {\r\n open && <IconButton title=\"Collapse\" onClick={handleDrawerClose} >\r\n {<ChevronLeftIcon />}\r\n </IconButton>\r\n }\r\n </div>\r\n {!open && <div className={classes.toolbar}>\r\n <Popovers classes={classes} moduleRegionAccess={props.accessPermissions.moduleRegionAccess} />\r\n <IconButton title=\"Expand\" onClick={handleDrawerOpen} >\r\n {<ChevronRightIcon />}\r\n </IconButton>\r\n </div>}\r\n <Wrapper items={items} classes={classes} Profile={Profile} />\r\n </Drawer>\r\n );\r\n\r\n else return <div></div>\r\n});\r\n\r\n\r\n\r\nconst Popovers = (props) => {\r\n\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n\r\n const handleClick = event => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const open = Boolean(anchorEl);\r\n const id = open ? 'simple-popover' : undefined;\r\n\r\n let submodules = JSON.parse(localStorage.getItem('submodule')) || []\r\n\r\n const CSSColorClasses = (style = '') => {\r\n let module = getEnvVariable('ModuleKey')\r\n switch (module) {\r\n case 'AEPS':\r\n return 'rgba(0, 53, 95, 255)'\r\n // case 'AMES':\r\n // return 'rgb(41,51,82) !important'\r\n case 'WRS':\r\n return '#0076A5'\r\n case 'FORWARD':\r\n return '#0076A5'\r\n default:\r\n return '';\r\n }\r\n }\r\n\r\n return (\r\n <div>\r\n {/* {props && props.moduleRegionAccess.find(element => element === 'Add') && <IconButton onClick={handleClick} title=\"Quick Links\"><AddIcon /></IconButton>} */}\r\n {props.canAdd && <IconButton onClick={handleClick} title=\"Quick Links\" style={{ color: CSSColorClasses() }}><AddIcon /></IconButton>}\r\n <Popover\r\n id={id}\r\n open={open}\r\n anchorEl={anchorEl}\r\n onClose={handleClose}\r\n anchorOrigin={{\r\n vertical: 'bottom',\r\n horizontal: 'center',\r\n }}\r\n transformOrigin={{\r\n vertical: 'top',\r\n horizontal: 'center',\r\n }}\r\n >\r\n {submodules && Array.isArray(submodules) && submodules.length > 0 && submodules.map(res => {\r\n if ((getEnvVariable('AccessPortal') == 'E' && res.key && (hideForSubmodules(res.key)))) {\r\n return null\r\n }\r\n else {\r\n return <Typography paragraph gutterBottom={true} className=\"m-3 \" onClick={handleClose}>\r\n <Link to={`${res.link}/NEW`}> {`Add ${res.title}`}</Link>\r\n </Typography>\r\n }\r\n })}\r\n <Divider />\r\n </Popover>\r\n </div>\r\n );\r\n}\r\n/**\r\n *********************************************************\r\n Description: Wrapper for generating the menu or grouping items or having the tree layout.\r\n Required props: items\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\nconst Wrapper = (props) => {\r\n const { items, handleTitle, classes, Profile } = props\r\n // setPristine();\r\n return items && items.length > 0 && items.map(each => {\r\n const { type, key, ...otherProps } = each\r\n if (type == 'menu')\r\n return <MenuItem {...otherProps} classes={classes} key={key} Profile={Profile} />\r\n if (type == 'group')\r\n return <GroupItem {...otherProps} classes={classes} key={key} />\r\n if (type == 'tree')\r\n return <TreeItem {...otherProps} classes={classes} key={key} />\r\n if (type == 'recordmenu')\r\n return <RecordMenuView {...otherProps} classes={classes} key={key} />\r\n })\r\n}\r\n\r\n/**\r\n *********************************************************\r\n Description: Generates list item.\r\n Required props: N/A\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\n\r\nconst MenuItem = withRouter(({ location, history, ...listitem }) => {\r\n const { link, handleTitle, classes, newtab, isProfile, Profile } = listitem;\r\n // const [Prompt, setDirty, setPristine] = useUnsavedChangesWarning();\r\n let tempColor = {\r\n \"style\": {\r\n 'color': listitem.color || ''\r\n }\r\n }\r\n React.useEffect(() => {\r\n let linkisval = isProfile ? link + (Profile && Profile.modulePermissions && Profile.modulePermissions[0] && Profile.modulePermissions[0].companyId) : link;\r\n if (linkisval === location.pathname) {\r\n // setPristine();\r\n }\r\n }, [location.pathname])\r\n if (link) {\r\n const linkis = isProfile ? link + (Profile && Profile.modulePermissions && Profile.modulePermissions[0] && Profile.modulePermissions[0].companyId) : link;\r\n return (\r\n <Fragment>\r\n {!newtab && <Tooltip title={listitem.title} placement=\"top-start\">\r\n <Link to={linkis}>\r\n <ListItem button selected={linkis === location.pathname} style={{ paddingRight: '0px', paddingTop: '4px', paddingBottom: '4px' }} >\r\n {<ListItemIcon><Icon style={listitem.style || tempColor.style}>{listitem.materialicon} </Icon></ListItemIcon>}\r\n <ListItemText\r\n key={listitem.materialicon}><Typography color={'secondary'} variant=\"body2\">{listitem.title}</Typography></ListItemText>\r\n </ListItem>\r\n </Link>\r\n </Tooltip >}\r\n\r\n {\r\n newtab && <Tooltip title={listitem.title}><a href={linkis} target={newtab ? \"_blank\" : \"\"} rel=\"noopener noreferrer\" placement=\"top-start\" >\r\n <ListItem button selected={linkis === location.pathname} style={{ paddingRight: '0px', paddingTop: '4px', paddingBottom: '4px' }} >\r\n {<ListItemIcon><Icon style={listitem.style || tempColor.style} >{listitem.materialicon} </Icon></ListItemIcon>}\r\n <ListItemText\r\n key={listitem.materialicon}><Typography color={'secondary'} variant=\"body2\">{listitem.title}</Typography></ListItemText>\r\n </ListItem>\r\n </a>\r\n </Tooltip>\r\n }\r\n </Fragment >\r\n )\r\n\r\n }//selected\r\n else {\r\n return (\r\n <ListItem>\r\n <ListItemText key={listitem.title}><Typography color={'secondary'} variant=\"body2\">{listitem.title}</Typography></ListItemText>\r\n </ListItem>\r\n )\r\n }\r\n\r\n})\r\n/**\r\n *********************************************************\r\n Description: Generates items.\r\n Required props: N/A\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\nconst GroupItem = (groupitems) => {\r\n return (\r\n <Fragment>\r\n <Divider />\r\n <List>\r\n <Wrapper {...groupitems.items} />\r\n </List>\r\n <Divider />\r\n </Fragment>\r\n )\r\n}\r\n/**\r\n *********************************************************\r\n Description: Generates items in the form of a tree with a expand collapse icon.\r\n Required props: N/A\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\n\r\nconst CSSColorClasses = (style = '') => {\r\n let module = getEnvVariable('ModuleKey')\r\n switch (module) {\r\n case 'WRS':\r\n return '#0076A5'\r\n // case 'AMES':\r\n // return 'rgb(41,51,82)'\r\n case 'UPS':\r\n return '#004785'\r\n default:\r\n return '#6200ea';\r\n }\r\n}\r\n\r\nconst TreeItem = (treeitems) => {\r\n const { title, items, materialicon, lskey } = treeitems;\r\n return (\r\n <Accordion defaultExpanded={title === 'Dashboard' ? true : false} >\r\n <AccordionSummary style={{ padding: 0 }} key='Accordionsummary' > {/*expandIcon={<ExpandMoreIcon />}*/}\r\n <Tooltip title={title} placement=\"top-start\">\r\n <ListItem button >\r\n <ListItemIcon> <Icon style={{ color: CSSColorClasses() }}>{materialicon} </Icon> </ListItemIcon>\r\n <ListItemText><Typography color={'secondary'} variant=\"body2\">{title}</Typography></ListItemText>\r\n </ListItem>\r\n </Tooltip>\r\n </AccordionSummary>\r\n <AccordionDetails key='Accordiondetails'>\r\n <Wrapper items={lskey ? JSON.parse(localStorage.getItem(lskey)) : items} />\r\n </AccordionDetails>\r\n </Accordion>\r\n )\r\n}\r\n\r\nconst RecordMenuView = (treeitems) => {\r\n const { title, items, materialicon, lskey } = treeitems;\r\n // const [Prompt, setDirty, setPristine] = useUnsavedChangesWarning();\r\n // setDirty(false);\r\n // setPristine();\r\n return (\r\n <Wrapper items={lskey ? JSON.parse(localStorage.getItem(lskey)) : items} />\r\n )\r\n}\r\n\r\nSidebarView.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n theme: PropTypes.object.isRequired,\r\n};\r\n\r\nexport default withWidth()(withRouter(SidebarView));\r\n\r\n","/**\r\n *********************************************************\r\n Description: Handles Pop up component.\r\n Required props: type\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\nimport React from 'react';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport Button from '@material-ui/core/Button';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport MuiDialogTitle from '@material-ui/core/DialogTitle';\r\nimport MuiDialogContent from '@material-ui/core/DialogContent';\r\nimport MuiDialogActions from '@material-ui/core/DialogActions';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport CloseIcon from '@material-ui/icons/Close';\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 { withRouter } from 'react-router-dom';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport ReorderIcon from '@material-ui/icons/Reorder';\r\nimport Fab from '@material-ui/core/Fab';\r\nimport PermDataSettingIcon from '@material-ui/icons/PermDataSetting';\r\nimport AttachMoneyIcon from '@material-ui/icons/AttachMoney';\r\nimport Icon from '@material-ui/core/Icon';\r\nimport { getEnvVariable } from '../../../modules/environmentalList';\r\nimport { GetData } from '../../controls/helpers/requests';\r\n\r\nconst fieldTypes = {\r\n permdatasettingicon: PermDataSettingIcon,\r\n dollaricon: AttachMoneyIcon\r\n}\r\n/**\r\n *********************************************************\r\n Description: Handles Pop up title and closing popup.\r\n Required props: N/A\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\nconst DialogTitle = withStyles(theme => ({\r\n root: {\r\n borderBottom: `1px solid ${theme.palette.divider}`,\r\n margin: 0,\r\n padding: theme.spacing(2),\r\n },\r\n closeButton: {\r\n position: 'absolute',\r\n right: theme.spacing(1),\r\n top: theme.spacing(1),\r\n color: theme.palette.grey[500],\r\n },\r\n}))(props => {\r\n const { children, classes, onClose } = props;\r\n return (\r\n <MuiDialogTitle disableTypography className={classes.root}>\r\n <Typography variant=\"h6\">{children}</Typography>\r\n {onClose ? (\r\n <IconButton aria-label=\"Close\" className={classes.closeButton} onClick={onClose}>\r\n <CloseIcon />\r\n </IconButton>\r\n ) : null}\r\n </MuiDialogTitle>\r\n );\r\n});\r\n\r\nconst DialogContent = withStyles(theme => ({\r\n root: {\r\n margin: 0,\r\n padding: theme.spacing(1) * 2,\r\n },\r\n}))(MuiDialogContent);\r\n\r\nconst DialogActions = withStyles(theme => ({\r\n root: {\r\n borderTop: `1px solid ${theme.palette.divider}`,\r\n margin: 0,\r\n padding: theme.spacing(1),\r\n },\r\n}))(MuiDialogActions);\r\n\r\nconst checkwidth = 960\r\nclass CPopUp extends React.Component {\r\n state = {\r\n // open: false,\r\n open: this.props.options.open || false,\r\n responsivefullscreen: (window.innerWidth < checkwidth) ? true : false\r\n };\r\n\r\n handleClickOpen = () => {\r\n this.setState({\r\n open: true,\r\n });\r\n };\r\n\r\n handleClose = () => {\r\n this.setState({ open: false });\r\n };\r\n\r\n handleNavigate = (path) => {\r\n this.props.history.push(path)\r\n }\r\n\r\n updateDimensions = () => {\r\n if (window.innerWidth < checkwidth) {\r\n this.setState({ responsivefullscreen: true });\r\n }\r\n else {\r\n this.setState({ responsivefullscreen: false });\r\n }\r\n };\r\n\r\n componentDidMount() {\r\n window.addEventListener('resize', this.updateDimensions);\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener('resize', this.updateDimensions);\r\n }\r\n\r\n\r\n handleButtonClick = () => { \r\n this.handleClickOpen()\r\n }\r\n\r\n\r\n /**\r\n *********************************************************\r\n Description: Handles rendering of the component.\r\n Required props: N/A\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n\r\n render() {\r\n const { options, type, actions, compmap, accessPermissions, accessLevelPermissions, components, parentProps, edit, onResultDisable, extraProps, eventOn, helperText } = this.props;\r\n const { id, name, dialogtitle, buttonprops, hideon, title, dialogprops, styles, contentstyles, routes, showFullScreen, disableBackdropClick, disableEscapeKeyDown, responsivescreen, ...otherOptions } = options ? options : {}\r\n const { text, icon, color, disabled, size, variant, buttonlink, sidepopupbuttonlink, routeval, fabicon, isConfig, customstyles, materialicon, ...otherButtonProps } = buttonprops ? buttonprops : {}\r\n //const { error } = this.props.currentValue\r\n let iconname, iconColor, iconFontSize, iconposition, otherIconProps\r\n let path = '';\r\n let issystemadmin = getEnvVariable('AccessPortal') === 'I' ? (accessPermissions && accessPermissions.isSystemAdmin === 'Y') ? true : false : false \r\n const EachComp = materialicon ? fieldTypes[materialicon] : null\r\n if (icon) {\r\n iconname = icon.iconname\r\n iconColor = icon.iconColor\r\n iconFontSize = icon.iconFontSize\r\n }\r\n let closefunc\r\n if (type !== 'confirmationpopupbutton') closefunc = { onClose: this.handleClose }\r\n let disable = disabled\r\n if (edit === false) {\r\n // disable = true\r\n }\r\n if (buttonlink) {\r\n path = this.props.location.pathname + buttonlink\r\n }\r\n if (sidepopupbuttonlink) {\r\n let pathval = this.props.location.pathname\r\n pathval = pathval.substring(0, pathval.lastIndexOf(\"/\"))\r\n let finalpath = pathval.includes(\"applicationtypes\")\r\n if (finalpath) {\r\n path = this.props.location.pathname + sidepopupbuttonlink\r\n }\r\n else {\r\n path = this.props.location.pathname + '/' + this.props.dataItem[routeval] + sidepopupbuttonlink\r\n }\r\n }\r\n let btncolor = helperText ? 'secondary' : color\r\n return (\r\n <div className={!disable ? \"\" : \"row\"}>\r\n\r\n {this.props.buttonprops && fabicon && isConfig && !this.props.options.button &&\r\n <i> <Fab size={size} className={customstyles ? customstyles : \"float-end\"} onClick={this.handleClickOpen} title={this.props.buttonprops.text ? this.props.buttonprops.text : ''} color={!disable ? btncolor : 'secondary'} {...otherButtonProps}> <EachComp />\r\n </Fab>\r\n </i>}\r\n {\r\n !this.props.options.button && !isConfig && !buttonlink && !sidepopupbuttonlink && <Button onClick={() => this.handleButtonClick()}\r\n color={!disable ? btncolor : 'secondary'}\r\n disabled={disable}\r\n size={size}\r\n variant={variant}\r\n {...otherButtonProps}\r\n >\r\n {text}\r\n {(iconposition === 'left') && <Icon\r\n color={iconColor || 'inherit'} fontSize={iconFontSize || 'default'} {...otherIconProps}>{iconname}\r\n </Icon>\r\n }\r\n {iconposition && !(iconposition === 'left') && <Icon\r\n color={iconColor || 'inherit'} fontSize={iconFontSize || 'default'} {...otherIconProps}>{iconname}\r\n </Icon>\r\n }\r\n\r\n </Button>\r\n }\r\n <div>\r\n {(helperText) && <FormHelperText error>{helperText}</FormHelperText>}\r\n </div>\r\n {/**\r\n *********************************************************\r\n Description: Buttons onclick navigate to new page\r\n Required props: buttonlink,route\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n }\r\n {\r\n !this.props.options.button && (buttonlink || sidepopupbuttonlink) && !fabicon && <Button onClick={() => this.handleNavigate(path)}\r\n color={!disable ? color : 'secondary'}\r\n disabled={disable}\r\n size={size}\r\n variant={variant}\r\n {...otherButtonProps}\r\n >\r\n\r\n {text}\r\n </Button>\r\n }\r\n {\r\n ((hideon && issystemadmin) || !hideon) && this.props.buttonprops && fabicon && !isConfig && !this.props.options.button && (buttonlink || sidepopupbuttonlink) &&\r\n <i> <Fab size={size} className={sidepopupbuttonlink ? \"float-end\" : \"\" } style={{ marginRight: '11px' }} onClick={() => this.handleNavigate(path)} title={this.props.buttonprops.text ? this.props.buttonprops.text : ''} color={!disable ? btncolor : 'secondary'} {...otherButtonProps}> <ReorderIcon />\r\n </Fab>\r\n </i>\r\n }\r\n\r\n\r\n {\r\n !isConfig && <Dialog\r\n style={styles}\r\n disableBackdropClick={disableBackdropClick ? true : false}\r\n disableEscapeKeyDown={disableEscapeKeyDown ? true : false}\r\n aria-labelledby={id || name}\r\n open={this.state.open}\r\n fullWidth\r\n {...dialogprops}\r\n {...closefunc}\r\n fullScreen={(responsivescreen && this.state.responsivefullscreen) || showFullScreen ? true : false}\r\n\r\n >\r\n {dialogtitle && <DialogTitle id={id} onClose={this.handleClose}>\r\n {dialogtitle}\r\n </DialogTitle>}\r\n {((responsivescreen && this.state.responsivefullscreen) || showFullScreen) &&\r\n <AppBar position=\"static\">\r\n <Toolbar variant=\"dense\">\r\n <div className=\"row col-sm-12\">\r\n <div className=\"col-sm-11\"> <Typography className=\"pt-2\" variant=\"h6\" > {title} </Typography></div>\r\n <div className=\"col-sm-1\">\r\n <IconButton className=\"float-end\" color=\"inherit\" onClick={this.handleClose} aria-label=\"close\">\r\n <CloseIcon />\r\n </IconButton>\r\n </div>\r\n </div>\r\n </Toolbar>\r\n </AppBar>\r\n }\r\n <DialogContent {...otherOptions} className=\"pt-6\" style={contentstyles}>\r\n {components && components.map(each => {\r\n const EachComp = compmap[each.type]\r\n return <EachComp {...each} key={each.key} compmap={compmap} handleSlide={this.handleSlide} accessPermissions={accessPermissions} accessLevelPermissions={accessLevelPermissions} extraProps={extraProps} eventOn={eventOn} onClose={this.handleClose} dataItem={this.props.dataItem} />\r\n })}\r\n </DialogContent>\r\n </Dialog>\r\n }\r\n {\r\n this.state.open && isConfig && components && components.map(each => {\r\n const EachComp = compmap[each.type]\r\n return <EachComp {...each} key={each.key} compmap={compmap} handleSlide={this.handleClose} accessPermissions={accessPermissions} accessLevelPermissions={accessLevelPermissions} extraProps={extraProps} eventOn={eventOn} onClose={this.handleClose} dataItem={this.props.dataItem} />\r\n })\r\n }\r\n </div >\r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(CPopUp);\r\n","import Axios from 'axios';\r\n\r\nconst URL = process.env.REACT_APP_API_URL\r\n\r\nexport default function Base(done, fail) {\r\n const instance = Axios.create({\r\n baseURL: URL,\r\n headers: { 'Access-Control-Allow-Origin':'*','Referrer-Policy': 'no-referrer' },\r\n // headers: {\r\n // 'Authorization': 'Bearer ' + authenticationService.getToken()\r\n // }\r\n })\r\n return instance;\r\n}","import Axios from './default';\r\n\r\nexport default function Request(url) {\r\n return {\r\n get: () => Axios().get(url),\r\n getById: (id) => Axios().get(url + '/' + id),\r\n add: (data) => Axios().post(url, data),\r\n update: (data) => Axios().put(url, data),\r\n delete: (id) => Axios().delete(url + '/' + id)\r\n }\r\n}\r\n","import { JsonForms } from '@jsonforms/react';\r\nimport {\r\n materialRenderers,\r\n materialCells,\r\n} from '@jsonforms/material-renderers';\r\nimport React, { forwardRef, useEffect, useImperativeHandle, useState } from 'react';\r\nimport Button from '@material-ui/core/Button';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Request from '../REST/groups';\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport { getEnvVariable } from '../../../src/modules/environmentalList';\r\n\r\nconst FIELD_URL = getEnvVariable('PaymentAPI') +'field'\r\nconst OPTION_URL = getEnvVariable('PaymentAPI') + 'fieldoption'\r\n\r\nfunction FieldSettings({ parentId }, ref) {\r\n const [fields, setFields] = useState([]);\r\n const [refs, setRefs] = useState([]);\r\n\r\n const addField = () => {\r\n setFields(fields.concat({}))\r\n }\r\n\r\n const deleteField = (idx) => {\r\n setFields(fields.filter((e, i) => i !== idx))\r\n }\r\n\r\n useEffect(() => {\r\n Request(FIELD_URL).getById(parentId).then(resp => {\r\n if (Array.isArray(resp.data))\r\n setFields(resp.data)\r\n })\r\n }, [parentId])\r\n\r\n useEffect(() => {\r\n setRefs(fields.map(e => React.createRef()));\r\n }, [fields])\r\n\r\n useImperativeHandle(ref, () => ({\r\n validate: () => {\r\n if (refs.every(e => e.current.validate())) {\r\n let fields = refs.map(e => e.current.validate());\r\n return fields;\r\n }\r\n return false;\r\n }\r\n }))\r\n\r\n //let refs = useRef([]);\r\n\r\n return <div className='row'>\r\n <div className='col-12'>\r\n <div className='w-100'>\r\n <div className='float-left'>\r\n <p className='lead'>Schema Fields</p>\r\n </div>\r\n <div className='float-right'>\r\n <Button onClick={addField} variant='outlined'>Add</Button>\r\n </div>\r\n <div className='clearfix' />\r\n </div>\r\n <div className='row'>\r\n {fields.map((e, i) => {\r\n return <div key={i} className='col-6'>\r\n <div className='col-12 jumbotron'>\r\n <IconButton className='float-right' onClick={() => deleteField(i)} variant='outlined'><DeleteIcon /></IconButton>\r\n <div className='clearfix' />\r\n <FieldViewRef ref={refs[i]} json={e} fieldId={e.id} />\r\n </div>\r\n </div>\r\n })}\r\n </div>\r\n {fields.length === 0 && <p>No Fields. Click on Add to add them</p>}\r\n </div>\r\n </div>\r\n\r\n}\r\n\r\nconst FieldSettingsRef = forwardRef(FieldSettings);\r\n\r\nexport default FieldSettingsRef;\r\n\r\nconst FieldViewRef = forwardRef(FieldView);\r\n\r\nfunction FieldView({ list = [], json = {}, fieldId }, ref) {\r\n const [data, setData] = useState(json);\r\n const [mode, setMode] = useState('ValidateAndHide');\r\n const [error, setError] = useState({})\r\n const [options, setOptions] = useState([]);\r\n const [refs, setRefs] = useState([]);\r\n const [isChanged, setIsChanged] = useState(false);\r\n\r\n useEffect(() => {\r\n setData(json)\r\n setIsChanged(false)\r\n }, [json])\r\n\r\n useEffect(() => {\r\n if (fieldId)\r\n Request(OPTION_URL).getById(fieldId).then(resp => {\r\n if (Array.isArray(resp.data))\r\n setOptions(resp.data)\r\n })\r\n }, [fieldId])\r\n\r\n useEffect(() => {\r\n setRefs(options.map(e => React.createRef()))\r\n }, [options])\r\n\r\n const schema = {\r\n properties: {\r\n name: {\r\n type: 'string'\r\n },\r\n fieldType: {\r\n type: 'number',\r\n oneOf: [\r\n { const: 1, title: 'String' },\r\n { const: 2, title: 'Number' },\r\n { const: 3, title: 'Object' },\r\n { const: 4, title: 'Date' },\r\n { const: 5, title: 'Boolean' },\r\n ]\r\n // enumNames: [{label}]\r\n },\r\n schemaId: {\r\n type: 'string',\r\n oneOf: list.map(e => {\r\n return { const: e.value, title: e.label }\r\n }).concat([{ const: '-1', title: 'None' }]),\r\n default: '-1'\r\n }\r\n },\r\n required: data && data.fieldType === 3 ? ['name', 'fieldType', 'schemaId'] : ['name', 'fieldType']\r\n }\r\n\r\n const uischema = {\r\n \"type\": \"VerticalLayout\",\r\n \"elements\": [\r\n {\r\n \"type\": \"Control\",\r\n \"scope\": \"#/properties/name\"\r\n },\r\n {\r\n \"type\": \"Control\",\r\n \"scope\": \"#/properties/fieldType\"\r\n },\r\n {\r\n \"type\": \"Control\",\r\n \"scope\": \"#/properties/schemaId\",\r\n \"rule\": {\r\n \"effect\": \"SHOW\",\r\n \"condition\": {\r\n \"scope\": \"#/properties/fieldType\",\r\n \"schema\": {\r\n oneOf: [\r\n { const: 3, title: 'Object' }\r\n ]\r\n }\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n\r\n useImperativeHandle(ref, () => ({\r\n validate: () => {\r\n setMode('ValidateAndShow')\r\n if (Object.keys(error).length === 0 || !isChanged) {\r\n //return data;\r\n console.log(data);\r\n if (data.schemaId === -1 || data.schemaId === '-1')\r\n data.schemaId = null\r\n if (refs.every(e => e.current.validate())) {\r\n let options = refs.map(e => e.current.validate())\r\n return { ...data, options };\r\n }\r\n }\r\n console.log(error, data)\r\n return false;\r\n }\r\n }))\r\n\r\n const addOption = () => {\r\n setOptions(options.concat([{}]))\r\n }\r\n\r\n const deleteOption = (idx) => {\r\n setOptions(options.filter((e, i) => i !== idx))\r\n }\r\n\r\n //let refs = useRef([]);\r\n\r\n return <div className='row'>\r\n <div className='col-12'>\r\n <JsonForms schema={schema} uischema={uischema} data={data} validationMode={mode} renderers={materialRenderers} cells={materialCells} onChange={({ data, errors }) => { setData(data); setError(errors); setIsChanged(true) }} />\r\n </div>\r\n <div className='col-12 pt-3'>\r\n <div className='w-100'>\r\n <div className='float-left'>\r\n <h6>Field Options</h6>\r\n </div>\r\n <div className='float-right'>\r\n <Button size='small' onClick={addOption} variant='outlined'>Add</Button>\r\n </div>\r\n <div className='clearfix' />\r\n </div>\r\n {options.map((e, i) => {\r\n return <div key={i} className='row'>\r\n <div className='col-8'>\r\n <OptionViewRef ref={refs[i]} json={e} />\r\n </div>\r\n <div className='col-4 py-3'>\r\n <Button size='small' onClick={() => deleteOption(i)} variant='outlined'>Delete</Button>\r\n </div>\r\n </div>\r\n })}\r\n {options.length === 0 && <p>No Options. Click on Add to add them</p>}\r\n </div>\r\n </div>\r\n}\r\n\r\nconst OptionViewRef = forwardRef(OptionView);\r\n\r\nfunction OptionView({ json = {} }, ref) {\r\n const [data, setData] = useState(json);\r\n const [mode, setMode] = useState('ValidateAndHide');\r\n const [error, setError] = useState({})\r\n const [isChanged, setIsChanged] = useState(false);\r\n\r\n useEffect(() => {\r\n setData(json)\r\n setIsChanged(false)\r\n }, [json])\r\n\r\n useImperativeHandle(ref, () => ({\r\n validate: () => {\r\n setMode('ValidateAndShow')\r\n if (Object.keys(error).length === 0 || !isChanged)\r\n return data;\r\n console.log(error)\r\n return false;\r\n }\r\n }))\r\n\r\n const schema = {\r\n properties: {\r\n name: {\r\n type: 'string'\r\n },\r\n value: {\r\n type: 'string'\r\n }\r\n },\r\n required: [\"name\", \"value\"]\r\n }\r\n\r\n const uischema = {\r\n \"type\": \"HorizontalLayout\",\r\n \"elements\": [\r\n {\r\n \"type\": \"Control\",\r\n \"scope\": \"#/properties/name\"\r\n },\r\n {\r\n \"type\": \"Control\",\r\n \"scope\": \"#/properties/value\"\r\n }\r\n ]\r\n }\r\n\r\n return <JsonForms schema={schema} uischema={uischema} data={data} validationMode={mode} renderers={materialRenderers} cells={materialCells} onChange={({ data, errors }) => { setData(data); setError(errors); setIsChanged(true) }} />\r\n\r\n}","import React, { Component, Fragment, useEffect, useState } from 'react';\r\nimport { Query, Builder, Utils as QbUtils } from 'react-awesome-query-builder';\r\nimport MaterialConfig from 'react-awesome-query-builder/lib/config/material';\r\nimport 'react-awesome-query-builder/lib/css/styles.css';\r\nimport 'react-awesome-query-builder/lib/css/compact_styles.css';\r\nimport capitalize from 'lodash/capitalize';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Button from '@material-ui/core/Button';\r\nimport Request from '../REST/groups';\r\n\r\nconst URL = 'parameter'\r\n\r\nconst InitialConfig = MaterialConfig;\r\n\r\n// You need to provide your own config. See below 'Config format'\r\n//const schema = person.schema;\r\n\r\n\r\nexport const getConfig = (json, result, type = '!group') => {\r\n if (json.type === 'object') {\r\n const { properties } = json;\r\n Object.keys(properties).forEach(e => {\r\n if (properties[e].type === 'object') {\r\n result[e] = { label: capitalize(e), type: type, subfields: getConfig(properties[e], {}) }\r\n }\r\n if (properties[e].type === 'string') {\r\n result[e] = { label: capitalize(e), type: Array.isArray(properties[e].enum) ? 'select' : 'text', valueSources: ['value'], fieldSettings: {} }\r\n if (Array.isArray(properties[e].enum)) {\r\n result[e]['fieldSettings']['listValues'] = properties[e].enum.map(e => {\r\n return { title: e, value: e }\r\n })\r\n }\r\n if (properties[e].format === 'date' || properties[e].format === 'datetime')\r\n result[e]['type'] = properties[e].format\r\n }\r\n if (properties[e].type === 'date')\r\n result[e] = { label: capitalize(e), type: 'date', valueSources: [\"value\"], fieldSettings: { dateFormat: properties[e].format } }\r\n if (properties[e].type === 'boolean') {\r\n result[e] = { label: capitalize(e), type: 'boolean', operators: ['equal'], valueSources: ['value'] }\r\n }\r\n if (properties[e].type === 'integer' || properties[e].type === 'number') {\r\n result[e] = { label: capitalize(e), type: 'number', valueSources: ['value'], preferWidgets: ['number'], fieldSettings: {} }\r\n if (properties[e]['maximum'] !== null || properties[e]['maximum'] !== undefined)\r\n result[e]['fieldSettings']['max'] = properties[e]['maximum']\r\n if (properties[e]['minimum'] !== null || properties[e]['minimum'] !== undefined)\r\n result[e]['fieldSettings']['min'] = properties[e]['minimum']\r\n }\r\n })\r\n }\r\n console.log(result)\r\n return result;\r\n}\r\n// const fields = getConfig(schema, {});\r\n// console.log(fields)\r\n// const config = {\r\n// ...InitialConfig,\r\n// fields: { ...fields }\r\n// };\r\n\r\nexport const getFieldConfig = (schema) => {\r\n return {\r\n ...InitialConfig, fields: { ...getConfig(schema, {}) }\r\n }\r\n}\r\n// You can load query value from your backend storage (for saving see `Query.onChange()`)\r\nconst queryValue = { \"id\": QbUtils.uuid(), \"type\": \"group\" };\r\n\r\n\r\nexport class QueryBuilder extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n let config = getFieldConfig(this.props.schema);\r\n this.state = {\r\n tree: QbUtils.checkTree(QbUtils.loadTree(queryValue), config),\r\n config: config\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n let config = getFieldConfig(this.props.schema);\r\n this.setState({ tree: QbUtils.checkTree(QbUtils.loadTree(this.props.query), config) }, () => {\r\n console.log(QbUtils.jsonLogicFormat(this.state.tree, config), this.state.tree)\r\n })\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const prev = JSON.stringify(prevProps.query);\r\n const curr = JSON.stringify(this.props.query);\r\n let config = getFieldConfig(this.props.schema);\r\n if (prev !== curr)\r\n this.setState({ tree: QbUtils.checkTree(QbUtils.loadTree(this.props.query), config) })\r\n }\r\n\r\n render = () => {\r\n let config = getFieldConfig(this.props.schema);\r\n return <Query\r\n {...config}\r\n value={this.state.tree}\r\n onChange={this.onChange}\r\n renderBuilder={this.renderBuilder}\r\n />\r\n }\r\n\r\n renderBuilder = (props) => (\r\n <div className=\"query-builder-container\" style={{ padding: '10px' }}>\r\n <div className=\"query-builder qb-lite\">\r\n <Builder {...props} />\r\n </div>\r\n\r\n </div>\r\n )\r\n\r\n renderResult = ({ tree: immutableTree, config }) => {\r\n console.log(immutableTree)\r\n return (\r\n <div className=\"query-builder-result\">\r\n <div>Query string: <pre>{JSON.stringify(QbUtils.queryString(immutableTree, config))}</pre></div>\r\n <div>MongoDb query: <pre>{JSON.stringify(QbUtils.mongodbFormat(immutableTree, config))}</pre></div>\r\n <div>SQL where: <pre>{JSON.stringify(QbUtils.sqlFormat(immutableTree, config))}</pre></div>\r\n <div>JsonLogic: <pre>{JSON.stringify(QbUtils.jsonLogicFormat(immutableTree, config))}</pre></div>\r\n </div>)\r\n }\r\n\r\n onChange = (immutableTree, config) => {\r\n // Tip: for better performance you can apply `throttle` - see `examples/demo`\r\n // this.setState({ tree: immutableTree, config: config });\r\n const jsonTree = QbUtils.getTree(immutableTree);\r\n console.log(jsonTree);\r\n this.props.onChange(jsonTree)\r\n // `jsonTree` can be saved to backend, and later loaded to `queryValue`\r\n }\r\n}\r\n\r\n\r\nexport default function QueryConfig({ schema, id, group }) {\r\n const [data, setData] = useState({ name: '', key: '', default: '', conditions: [] });\r\n\r\n useEffect(() => {\r\n if (id !== -1) {\r\n Request(URL + '/data').getById(id).then(resp => {\r\n if (resp.data)\r\n setData({ name: resp.data.description, key: resp.data.name, default: resp.data.value, conditions: JSON.parse(resp.data.conditions) })\r\n })\r\n }\r\n }, [id])\r\n\r\n const handleChage = (key, value) => {\r\n setData({ ...data, [key]: value })\r\n }\r\n\r\n const handleValue = (idx, value, query) => {\r\n const config = { ...data };\r\n config.conditions[idx] = { value, query }\r\n setData(config)\r\n }\r\n\r\n const addCondition = () => {\r\n const config = { ...data };\r\n config.conditions = config.conditions.concat([{ query: queryValue, value: '' }])\r\n setData(config)\r\n }\r\n\r\n const deleteCondition = (idx) => {\r\n const config = { ...data };\r\n config.conditions = config.conditions.filter((e, i) => i !== idx)\r\n setData(config)\r\n }\r\n\r\n const saveConfig = () => {\r\n const entity = {\r\n name: data.key,\r\n description: data.name,\r\n value: data.default,\r\n conditions: JSON.stringify(data.conditions),\r\n groupId: group\r\n }\r\n if (id && id !== -1 && id !== '-1')\r\n Request(URL).update({ ...entity, id }).then(resp => {\r\n\r\n })\r\n else\r\n Request(URL).add(entity).then(resp => {\r\n\r\n })\r\n }\r\n\r\n return <Fragment>\r\n <h4 className='lead'>{data.name || 'Create Parameters'}</h4>\r\n <div className='row'>\r\n <div className='col'>\r\n <TextField size='medium' onChange={(e) => handleChage('name', e.target.value)} value={data.name} label='Item Description' />\r\n </div>\r\n <div className='col'>\r\n <TextField onChange={(e) => handleChage('key', e.target.value)} value={data.key} label='Item Key' />\r\n </div>\r\n <div className='col'>\r\n <TextField onChange={(e) => handleChage('default', e.target.value)} value={data.default} label='Default Value' />\r\n </div>\r\n <div className='col pt-3'>\r\n <Button variant='outlined' onClick={addCondition}>Add Condition</Button>\r\n </div>\r\n {data.conditions.map((e, idx) => {\r\n return <div key={idx} className='col-12'>\r\n <QueryBuilder query={e.query} onChange={q => handleValue(idx, e.value, q)} schema={schema} />\r\n <div className='row'>\r\n <div className='col-8'>\r\n <TextField margin='normal' onChange={evt => handleValue(idx, evt.target.value, e.query)} value={e.value} label='Condition Value' />\r\n </div><div className='col-4 pt-3'>\r\n <Button onClick={() => deleteCondition(idx)} size='small' color='secondary' variant='outlined'>Delete</Button>\r\n </div>\r\n </div>\r\n </div>\r\n })}\r\n\r\n <div className='col-12 pt-3'>\r\n <Button variant='outlined' onClick={saveConfig}>Save Parameters</Button>\r\n </div>\r\n </div>\r\n </Fragment >\r\n}\r\n\r\n\r\n\r\n","import React, { useEffect, useState, Fragment } from 'react';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport Select from '@material-ui/core/Select';\r\nimport Request from '../REST/groups';\r\nimport CreateExpression from './create';\r\nimport Button from '@material-ui/core/Button';\r\nimport { getEnvVariable } from '../../../src/modules/environmentalList';\r\n\r\nconst SCHEMA_URL = getEnvVariable('PaymentAPI') + 'schema'\r\nconst EXPR_URL = getEnvVariable('PaymentAPI') +'expression'\r\nconst FIELD_URL = getEnvVariable('PaymentAPI') +'field'\r\nconst FIELD_OPTION_URL = getEnvVariable('PaymentAPI') +'fieldoption'\r\n\r\nexport default function ExpressionView({ group }) {\r\n\r\n const [selected, setSelected] = useState('')\r\n const [options, setOptions] = useState([]);\r\n const [schema, setSchema] = useState(null);\r\n\r\n useEffect(() => {\r\n Request(SCHEMA_URL).get().then(resp => {\r\n if (Array.isArray(resp.data))\r\n setOptions(resp.data.filter(e => e.groupId === group).map(e => { return { label: e.name, value: e.id, required: e.required } }))\r\n })\r\n }, [group])\r\n\r\n const handleChange = (evt) => {\r\n setSelected(evt.target.value)\r\n }\r\n\r\n useEffect(() => {\r\n if (selected !== '')\r\n getSchema(selected).then(resp => {\r\n setSchema(resp)\r\n })\r\n }, [selected])\r\n\r\n console.log(schema)\r\n\r\n return <div className='row'>\r\n <div className='col-12'>\r\n <FormControl fullWidth>\r\n <InputLabel>Select Schema</InputLabel>\r\n <Select value={selected} onChange={handleChange}>\r\n {options.map((e, i) => {\r\n return <MenuItem key={e.value} value={e.value}>{e.label}</MenuItem>\r\n })}\r\n </Select>\r\n </FormControl>\r\n </div>\r\n {selected !== '' && <div className='col-10 pt-3'>\r\n <ExpressionList schema={schema} id={selected} />\r\n </div>}\r\n </div>\r\n}\r\n\r\nfunction ExpressionList({ schema, id }) {\r\n\r\n const [list, setList] = useState([]);\r\n const [selected, setSelected] = useState(null);\r\n\r\n useEffect(() => {\r\n if (selected === null)\r\n Request(EXPR_URL).getById(id).then(resp => {\r\n if (Array.isArray(resp.data))\r\n setList(resp.data)\r\n })\r\n }, [id, selected])\r\n\r\n const handleSelect = (val) => {\r\n setSelected(val);\r\n }\r\n\r\n if (selected)\r\n return <Fragment>\r\n <CreateExpression group={id} schema={schema} json={list.find(e => e.id === selected)} />\r\n <Button onClick={() => setSelected(null)}>Cancel</Button>\r\n </Fragment>\r\n\r\n\r\n return <table className='table table-hover table-bordered'>\r\n <thead>\r\n <tr>\r\n <th>Name</th>\r\n <th>Description</th>\r\n <th>Key</th>\r\n <th><Button variant='outlined' size='small' color='secondary' onClick={() => handleSelect(-1)}>Create New</Button></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {list.map((e, idx) => {\r\n return <tr key={idx}>\r\n <td>{e.name}</td>\r\n <td>{e.description}</td>\r\n <td>{e.expressionKey}</td>\r\n <td><Button size='small' variant='outlined' onClick={() => handleSelect(e.id)}>View</Button></td>\r\n </tr>\r\n })}\r\n {list.length === 0 && <tr><td colSpan={4}>No Data</td></tr>}\r\n </tbody>\r\n </table>\r\n\r\n}\r\n\r\nexport const getSchema = (schemaId) => {\r\n\r\n const getType = (type) => {\r\n switch (type) {\r\n case 1:\r\n return 'string'\r\n case 2:\r\n return 'number'\r\n case 3:\r\n return 'object'\r\n case 4:\r\n return 'date'\r\n case 5:\r\n return 'boolean'\r\n default:\r\n return 'string'\r\n }\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n let counter = 0;\r\n Promise.all([Request(SCHEMA_URL).getById(schemaId), Request(FIELD_URL).getById(schemaId)]).then(([schema, resp]) => {\r\n if (Array.isArray(resp.data)) {\r\n const ids = resp.data.map(e => e.id)\r\n Promise.all(ids.map(e => Request(FIELD_OPTION_URL).getById(e))).then(result => {\r\n const temp = {};\r\n resp.data.forEach((e, i) => {\r\n temp[e.name] = { type: getType(e.fieldType) }\r\n if (e.fieldType === 'object') {\r\n counter++;\r\n getSchema(e.schemaId).then(res => {\r\n const { properties, required } = res;\r\n temp[e.name]['properties'] = properties\r\n temp[e.name]['required'] = required;\r\n counter--;\r\n if (counter === 0)\r\n resolve({ type: 'object', properties: temp, required: schema.data.required.split(',') });\r\n })\r\n }\r\n result[i].data.forEach(x => {\r\n if (x.name !== 'enum')\r\n temp[e.name][x.name] = x.value\r\n else\r\n temp[e.name][x.name] = x.value.split(',')\r\n })\r\n if (counter === 0)\r\n resolve({ type: 'object', properties: temp, required: schema.data.required.split(',') });\r\n })\r\n })\r\n }\r\n })\r\n })\r\n}","import React, { useEffect, useState } from 'react';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport Select from '@material-ui/core/Select';\r\nimport Request from '../REST/groups';\r\nimport CreateInvoice from './create';\r\nimport ItemView from './items';\r\nimport Button from '@material-ui/core/Button';\r\nimport { getSchema } from '../expressions';\r\nimport { getEnvVariable } from '../../../src/modules/environmentalList';\r\n\r\nconst SCHEMA_URL = getEnvVariable('PaymentAPI') +'schema'\r\nconst INVOICE_URL = getEnvVariable('PaymentAPI') + 'invoicetype'\r\n\r\nexport default function ExpressionView({ group }) {\r\n\r\n const [selected, setSelected] = useState('')\r\n const [options, setOptions] = useState([]);\r\n const [schema, setSchema] = useState(null);\r\n\r\n useEffect(() => {\r\n Request(SCHEMA_URL).get().then(resp => {\r\n if (Array.isArray(resp.data))\r\n setOptions(resp.data.filter(e => e.groupId === group).map(e => { return { label: e.name, value: e.id, required: e.required } }))\r\n })\r\n }, [group])\r\n\r\n const handleChange = (evt) => {\r\n setSelected(evt.target.value)\r\n }\r\n\r\n useEffect(() => {\r\n if (selected !== '')\r\n getSchema(selected).then(resp => {\r\n setSchema(resp)\r\n })\r\n }, [selected])\r\n\r\n console.log(schema)\r\n\r\n return <div className='row'>\r\n <div className='col-12'>\r\n <FormControl fullWidth>\r\n <InputLabel>Select Schema</InputLabel>\r\n <Select value={selected} onChange={handleChange}>\r\n {options.map((e, i) => {\r\n return <MenuItem key={e.value} value={e.value}>{e.label}</MenuItem>\r\n })}\r\n </Select>\r\n </FormControl>\r\n </div>\r\n {selected !== '' && <div className='col-10 pt-3'>\r\n <InvoiceList schema={schema} id={selected} />\r\n </div>}\r\n </div>\r\n}\r\n\r\nfunction InvoiceList({ schema, id }) {\r\n\r\n const [list, setList] = useState([]);\r\n const [selected, setSelected] = useState(null);\r\n const [item, setItem] = useState(null);\r\n\r\n useEffect(() => {\r\n if (selected === null)\r\n Request(INVOICE_URL).getById(id).then(resp => {\r\n if (Array.isArray(resp.data))\r\n setList(resp.data)\r\n })\r\n }, [id, selected])\r\n\r\n const handleSelect = (val) => {\r\n setSelected(val);\r\n }\r\n\r\n const handleItem = (val) => {\r\n setItem(val);\r\n }\r\n\r\n if (item)\r\n return <ItemView schema={schema} id={item} handleClose={() => setItem(null)} />\r\n\r\n if (selected)\r\n return <CreateInvoice group={id} schema={schema} json={list.find(e => e.id === selected)} handleClose={() => setSelected(null)} />\r\n\r\n\r\n return <table className='table table-hover table-bordered'>\r\n <thead>\r\n <tr>\r\n <th>Name</th>\r\n <th>Description</th>\r\n <th>Key</th>\r\n <th><Button variant='outlined' size='small' color='secondary' onClick={() => handleSelect(-1)}>Create New</Button></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {list.map((e, idx) => {\r\n return <tr key={idx}>\r\n <td>{e.name}</td>\r\n <td>{e.description}</td>\r\n <td><code>{e.id}</code></td>\r\n <td>\r\n <Button size='small' variant='outlined' onClick={() => handleSelect(e.id)}>Edit</Button>\r\n <Button size='small' variant='outlined' onClick={() => handleItem(e.id)}>View Expressions</Button>\r\n </td>\r\n </tr>\r\n })}\r\n {list.length === 0 && <tr><td colSpan={3}>No Data</td></tr>}\r\n </tbody>\r\n </table>\r\n\r\n}\r\n\r\n","import React, { useState } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport ListItem from '@material-ui/core/ListItem';\r\nimport List from '@material-ui/core/List';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport Slide from '@material-ui/core/Slide';\r\nimport { useParams } from 'react-router-dom';\r\nimport SchemaView from '../schema';\r\nimport InvoiceView from '../invoices';\r\nimport Request from '../REST/groups';\r\nimport { getSchema } from '../expressions';\r\nimport { getFieldConfig } from '../parameters/create';\r\nimport { Utils as QbUtils } from 'react-awesome-query-builder';\r\nimport jsonLogic from 'json-logic-js';\r\nimport moment from 'moment';\r\nimport { add, round } from 'mathjs';\r\nimport { getEnvVariable } from '../../../src/modules/environmentalList';\r\n\r\nexport default function ManagerView() {\r\n const { group } = useParams();\r\n if (group)\r\n return <PaymentManager group={group} />\r\n return <p></p>\r\n}\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n appBar: {\r\n position: 'relative',\r\n },\r\n title: {\r\n marginLeft: theme.spacing(2),\r\n flex: 1,\r\n },\r\n}));\r\n\r\nconst Transition = React.forwardRef(function Transition(props, ref) {\r\n return <Slide direction=\"up\" ref={ref} {...props} />;\r\n});\r\n\r\nexport function PaymentManager({ group }) {\r\n const classes = useStyles();\r\n const [open, setOpen] = React.useState(false);\r\n const [page, setPage] = useState(null)\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n const handleClick = (val) => {\r\n setPage(val)\r\n setOpen(true)\r\n }\r\n\r\n return (\r\n <div>\r\n <p className='lead'>Payment API Settings</p>\r\n <List>\r\n <ListItem button>\r\n <ListItemText onClick={() => handleClick('Schemas')} primary=\"Schema Editor\" secondary=\"Create or Edit Schemas\" />\r\n </ListItem>\r\n <Divider />\r\n <ListItem button>\r\n <ListItemText onClick={() => handleClick('Invoices')} primary=\"Invoice Types\" secondary=\"Create or Edit Invoice Types\" />\r\n </ListItem>\r\n </List>\r\n <Dialog fullScreen open={open} onClose={handleClose} TransitionComponent={Transition}>\r\n <AppBar className={classes.appBar}>\r\n <Toolbar>\r\n <IconButton edge=\"start\" color=\"inherit\" onClick={handleClose} aria-label=\"close\">\r\n <CloseIcon />\r\n </IconButton>\r\n <Typography variant=\"h6\" className={classes.title}>\r\n {page}\r\n </Typography>\r\n </Toolbar>\r\n </AppBar>\r\n <div className='container-fluid'>\r\n {page === 'Schemas' && <SchemaView group={group} />}\r\n {page === 'Invoices' && <InvoiceView group={group} />}\r\n </div>\r\n </Dialog>\r\n </div>\r\n );\r\n}\r\n\r\nconst SCHEMA_URL = getEnvVariable('PaymentAPI') +'schema'\r\nconst INVOICE_URL = getEnvVariable('PaymentAPI') +'invoicetype'\r\nconst INVOICE_ITEMS = getEnvVariable('PaymentAPI') +'invoiceitem'\r\nconst ITEM_TYPE = getEnvVariable('PaymentAPI') +'itemtype'\r\n\r\nexport const getCalculatedAmount = (invoices = [], data = []) => {\r\n const getInvoice = (asset, invoice) => {\r\n let result = { ...asset };\r\n let config = getFieldConfig(invoice.schema);\r\n return invoice.items.filter(e => e.recursive).map(item => {\r\n try {\r\n item.expressions.forEach(expr => {\r\n if (expr.itemType === 1) {\r\n let conditions = JSON.parse(expr.itemExpression);\r\n result[expr.itemKey] = expr.itemValue;\r\n conditions.forEach(a => {\r\n let tree = QbUtils.checkTree(QbUtils.loadTree(a.query), config);\r\n let json = QbUtils.jsonLogicFormat(tree, config);\r\n let value = jsonLogic.apply(json.logic, result);\r\n if (value)\r\n result[expr.itemKey] = a.value;\r\n })\r\n }\r\n else if (expr.itemType === 2) {\r\n result[expr.itemKey] = parse(getExpression(expr.itemExpression, result));\r\n }\r\n else if (expr.itemType === 3) {\r\n let temp = getDateFormat(result, invoice.schema, expr.itemUnit);\r\n result[expr.itemKey] = parse(getExpression(expr.itemExpression, temp));\r\n }\r\n else {\r\n result[expr.itemKey] = 0;\r\n }\r\n })\r\n let cnt = item.expressions.length;\r\n const amount = cnt > 0 ? result[item.expressions[cnt - 1].itemKey] : 0\r\n return { name: item.name, amount: round(amount, 5), description: item.description }\r\n }\r\n catch (ex) {\r\n console.log(ex);\r\n return { name: item.name, amount: 0, description: item.description }\r\n }\r\n })\r\n }\r\n\r\n const getTotal = (total, invoice) => {\r\n return invoice.items.filter(e => !e.recursive).map(item => {\r\n const amount = parse(getExpression(item.expression, { total }))\r\n return { name: item.name, amount: round(amount, 5), description: item.description }\r\n })\r\n }\r\n\r\n const getDateFormat = (result, schema, format) => {\r\n let data = { ...result };\r\n Object.keys(schema.properties).forEach(e => {\r\n if (schema.properties[e].type === 'date') {\r\n let temp = moment(data[e], schema.properties[e].format).valueOf();\r\n if (format === 1)\r\n data[e] = Math.floor(moment.duration(temp).asHours())\r\n if (format === 2)\r\n data[e] = Math.floor(moment.duration(temp).asDays())\r\n if (format === 3)\r\n data[e] = Math.floor(moment.duration(temp).asMonths())\r\n if (format === 4)\r\n data[e] = Math.floor(moment.duration(temp).asYears())\r\n }\r\n if (schema.properties[e].type === 'object') {\r\n data[e] = getDateFormat(data[e], schema.properties[e], format)\r\n }\r\n })\r\n return data;\r\n }\r\n\r\n const getExpression = (expression, data) => {\r\n Object.keys(data).forEach(e => {\r\n expression = expression.replace(`[${e}]`, data[e])\r\n })\r\n return expression;\r\n }\r\n\r\n const parse = (str) => {\r\n // eslint-disable-next-line\r\n return Function(`'use strict'; return (${str})`)()\r\n }\r\n\r\n return new Promise((res, rej) => {\r\n Promise.all(invoices.map(a => Request(INVOICE_URL + '/data').getById(a))).then(result => {\r\n const invoiceTypes = result.map(x => x.data);\r\n Promise.all(invoiceTypes.map(b => Request(SCHEMA_URL).getById(b.groupId))).then(resp => {\r\n const schemas = resp.map(x => x.data);\r\n Promise.all(invoices.map(e => Request(INVOICE_ITEMS).getById(e))).then(rslt => {\r\n const invoiceItems = rslt.map(e => e.data);\r\n const flat = invoiceItems.flat();\r\n Promise.all(flat.map(e => Request(ITEM_TYPE).getById(e.id))).then(results => {\r\n const itemTypes = results.map(e => e.data).flat();\r\n Promise.all(schemas.map(e => getSchema(e.id))).then(schemaData => {\r\n const list = invoiceTypes.map((e, idx) => {\r\n return {\r\n ...e, items: invoiceItems[idx].map(x => {\r\n return { ...x, expressions: itemTypes.filter(a => a.invoiceId === x.id) }\r\n }),\r\n schema: schemaData[idx]\r\n }\r\n });\r\n const finalData = data.map((assets, idx) => {\r\n let finalAssets = assets.map(e => {\r\n return { ...e, invoice: getInvoice(e, list[idx]) }\r\n })\r\n let total = finalAssets.reduce((acc, curr) => add(acc, curr.invoice.reduce((a, c) => add(a, c.amount), 0)), 0);\r\n let finalTotal = getTotal(total, list[idx]);\r\n return { lineitems: finalAssets, otheritems: finalTotal }\r\n })\r\n res(finalData)\r\n })\r\n })\r\n })\r\n })\r\n })\r\n })\r\n}\r\n\r\n\r\n\r\n\r\n//[[{ \"ID\": \"1\", \"OwnerID\": \"101\", \"PermitNumber\": \"10001\", \"Type\": \"A\", \"Status\": true, \"Permitteddate\": \"05/12/2021\", \"RenewalDate\": \"12/31/21\", \"Location\": \"P1-L1\" }, { \"ID\": \"2\", \"OwnerID\": \"101\", \"PermitNumber\": \"10002\", \"Type\": \"A\", \"Status\": true, \"Permitteddate\": \"05/12/2021\", \"RenewalDate\": \"12/31/21\", \"Location\": \"P2-L2\" }, { \"ID\": \"3\", \"OwnerID\": \"101\", \"PermitNumber\": \"10003\", \"Type\": \"C\", \"Status\": true, \"Permitteddate\": \"05/12/2021\", \"RenewalDate\": \"12/31/21\", \"Location\": \"P3-L3\" }, { \"ID\": \"4\", \"OwnerID\": \"102\", \"PermitNumber\": \"10004\", \"Type\": \"A\", \"Status\": true, \"Permitteddate\": \"05/12/2021\", \"RenewalDate\": \"12/31/21\", \"Location\": \"P4-L4\" }, { \"ID\": \"5\", \"OwnerID\": \"102\", \"PermitNumber\": \"10005\", \"Type\": \"A\", \"Status\": false, \"Permitteddate\": \"05/12/2021\", \"RenewalDate\": \"12/31/21\", \"Location\": \"P5-L5\" }, { \"ID\": \"6\", \"OwnerID\": \"102\", \"PermitNumber\": \"10006\", \"Type\": \"C\", \"Status\": true, \"Permitteddate\": \"05/12/2021\", \"RenewalDate\": \"12/31/21\", \"Location\": \"P6-L6\" }, { \"ID\": \"7\", \"OwnerID\": \"102\", \"PermitNumber\": \"10007\", \"Type\": \"C\", \"Status\": false, \"Permitteddate\": \"05/12/2021\", \"RenewalDate\": \"12/31/21\", \"Location\": \"P7-L7\" }]]","import { getCalculatedAmount } from '../../../src/payment/manager';\r\nimport { getEnvVariable } from '../../../src/modules/environmentalList';\r\nimport { requestApi } from '../../../src/core/modules/form/utilities';\r\nimport moment from 'moment';\r\n\r\nexport function GetRecordDataByKeys(sitepermittypeid, id, keys) {\r\n return new Promise((resolve, reject) => {\r\n let reqpath = `${getEnvVariable('Application')}/api/SitePermitSectionFieldsView/DataByKeys/${sitepermittypeid}/${id}`;\r\n requestApi({ post: { url: reqpath } }, null, keys, null, true)\r\n .then(res => {\r\n resolve(res)\r\n })\r\n }).catch(ex => {\r\n // resolve([])\r\n })\r\n}\r\n\r\nexport function GetDomainValues(key) {\r\n return new Promise((resolve, reject) => {\r\n let path = getEnvVariable('Admin') + `/api/Domains/values?domainkey=${key}`;\r\n requestApi({ get: { url: path } }, null, null)\r\n .then(res => {\r\n resolve(res)\r\n })\r\n }).catch(ex => {\r\n // resolve([])\r\n })\r\n}\r\n\r\nexport function GetStateDomainValues() {\r\n return new Promise((resolve, reject) => {\r\n let path = getEnvVariable('MasterAdmin') + `/api/Domains/values?domainkey=US_STATES`;\r\n requestApi({ get: { url: path } }, null, null)\r\n .then(res => {\r\n resolve(res)\r\n })\r\n }).catch(ex => {\r\n // resolve([])\r\n })\r\n}\r\n\r\nexport function GetSitePermitType(id) {\r\n return new Promise((resolve, reject) => {\r\n let sitepermittypepath = getEnvVariable('AdminConfig') + `/api/${getEnvVariable('ModuleKey')}SitePermitTypes/` + `${id}`;\r\n requestApi({ get: { url: sitepermittypepath } }, null, null)\r\n .then(res => {\r\n resolve(res)\r\n })\r\n }).catch(ex => {\r\n // resolve([])\r\n })\r\n}\r\n\r\nexport function GetInvoiceCycle(id) {\r\n return new Promise((resolve, reject) => {\r\n let url = getEnvVariable('Admin') + `/api/InvoiceCycle/${id}`;\r\n requestApi({ get: { url: url } }, null, null)\r\n .then(res => {\r\n resolve(res)\r\n })\r\n }).catch(ex => {\r\n // resolve([])\r\n })\r\n}\r\n\r\nexport function GetRenewalPermits(invoiceid, ownerid, invoicetype, submodulekey) {\r\n return new Promise((resolve, reject) => {\r\n //Records/{invoiceid}/{ownerid}/{invoicetype}\r\n let recordpath = getEnvVariable('Payment') + `/api/InvoiceCycle/Records/${submodulekey}/${invoiceid}/${ownerid}/${invoicetype}`;\r\n requestApi({ get: { url: recordpath } }, null, null)\r\n .then(res => {\r\n resolve(res)\r\n })\r\n }).catch(ex => {\r\n // resolve([])\r\n })\r\n}\r\n\r\nexport function GetRenewalPermitsOfType(invoiceid, ownerid, invoicetype, submodulekey, sitepermittype) {\r\n return new Promise((resolve, reject) => {\r\n //Records/{invoiceid}/{ownerid}/{invoicetype}\r\n let recordpath = getEnvVariable('Payment') + `/api/InvoiceCycle/Records/${submodulekey}/${invoiceid}/${ownerid}/${invoicetype}/${sitepermittype}`;\r\n requestApi({ get: { url: recordpath } }, null, null)\r\n .then(res => {\r\n resolve(res)\r\n })\r\n }).catch(ex => {\r\n // resolve([])\r\n })\r\n}\r\n\r\nexport function GetInvoiceCycleDetails(cycle, appdata) {\r\n let nextInvoiceCycleDate = '';\r\n let invoiceDueDate = '';\r\n let datePrintedOnInvoice = '';\r\n let returndetails = { NextInvoiceCycleDate: '', InvoiceDueDate: '', DatePrintedOnInvoice: '' };\r\n let authorizeddate = new Date();\r\n if (appdata['AUTHORIZED_DATE']) {\r\n authorizeddate = stringToDate(appdata['AUTHORIZED_DATE'], \"mm/dd/yyyy\", \"/\");\r\n }\r\n let authorizedyear = authorizeddate.getFullYear();\r\n\r\n if (cycle) {\r\n let datecal = '';\r\n let invoiceperiod = cycle.InvoicePeriod; // Number\r\n let partinvoicedate = cycle.GenerateInvoiceDate;\r\n let cycleinvoiceon = cycle.GenerateInvoiceOn; //P-Permitted, or specific date\r\n let invoicecyclespec = cycle.InvoiceType //M/Y/D\r\n //TBD for every\r\n if (cycle.IsInvoiced === 'Y') {\r\n if (cycleinvoiceon === 'D') {\r\n datecal = cycleinvoiceon + '/' + invoiceperiod\r\n }\r\n }\r\n\r\n // Invoice On\r\n let currentDate = new Date();\r\n let currentyear = new Date().getFullYear();\r\n let evenyear = isEven(currentyear) ? currentyear : currentyear + 1;\r\n let oddyear = isOdd(currentyear) ? currentyear : currentyear + 1;\r\n\r\n if (cycle.IsInvoiced === 'N') {\r\n\r\n if (cycle.InvoiceOn === 'E') {\r\n if (cycleinvoiceon === 'D')\r\n datecal = cycle.GenerateInvoiceDate + '/' + evenyear.toString();\r\n if (cycleinvoiceon === 'P') {\r\n // Check authrozied is even year and date is\r\n datecal = authorizeddate.setFullYear(evenyear).toString('mm/dd/yyyy');\r\n }\r\n }\r\n if (cycle.InvoiceOn === 'O') {\r\n if (cycleinvoiceon === 'D')\r\n datecal = cycle.GenerateInvoiceDate + '/' + oddyear.toString()\r\n if (cycleinvoiceon === 'P') {\r\n datecal = authorizeddate.setFullYear(oddyear).toString('mm/dd/yyyy');\r\n }\r\n }\r\n let caldate = stringToDate(datecal, \"mm/dd/yyyy\", \"/\");\r\n nextInvoiceCycleDate = caldate < currentDate ? AddYearToDate(caldate, 2) : caldate;\r\n returndetails.NextInvoiceCycleDate = nextInvoiceCycleDate;\r\n }\r\n\r\n //Date Printed On Invoice\r\n if (cycle.DateOnInvoice === 'D') {\r\n let datetoprintoninvoice = '';\r\n if (cycle.InvoiceOn === 'E')\r\n datetoprintoninvoice = cycle.DateToPrintOnInvoice + '/' + evenyear.toString();\r\n if (cycle.InvoiceOn === 'O')\r\n datetoprintoninvoice = cycle.DateToPrintOnInvoice + '/' + oddyear.toString();\r\n\r\n if (!datetoprintoninvoice || datetoprintoninvoice === '') {\r\n datetoprintoninvoice = cycle.DateToPrintOnInvoice + '/' + currentyear\r\n }\r\n let caldate = stringToDate(datetoprintoninvoice, \"mm/dd/yyyy\", \"/\");\r\n returndetails.DatePrintedOnInvoice = caldate < currentDate ? AddYearToDate(caldate, 1) : caldate;\r\n }\r\n if (cycle.DateOnInvoice === 'P') {\r\n returndetails.DatePrintedOnInvoice = currentDate;\r\n }\r\n\r\n //Payment Due On Invoice\r\n if (cycle.PaymentDueOnInvoice === 'P') {\r\n let invduedate = currentDate;\r\n invduedate.setDate(invduedate.getDate() + cycle.PaymentDueDays);\r\n returndetails.InvoiceDueDate = invduedate;\r\n }\r\n if (cycle.PaymentDueOnInvoice === 'D') {\r\n let invduedate = cycle.PaymentDueDate + '/' + currentyear;\r\n let caldate = stringToDate(invduedate, \"mm/dd/yyyy\", \"/\");\r\n returndetails.InvoiceDueDate = caldate < currentDate ? AddYearToDate(caldate, 1) : caldate;\r\n }\r\n\r\n }\r\n return returndetails;\r\n}\r\n\r\nexport function GetNextInvoiceCycleDate(cycle) {\r\n let nextInvoiceCycleDate = '';\r\n let invoiceDueDate = '';\r\n let datePrintedOnInvoice = '';\r\n let returndetails = { NextInvoiceCycleDate: '', InvoiceDueDate: '', DatePrintedOnInvoice: '' };\r\n\r\n if (cycle) {\r\n let datecal = '';\r\n let invoiceperiod = cycle.InvoicePeriod; // Number\r\n let partinvoicedate = cycle.GenerateInvoiceDate;\r\n let cycleinvoiceon = cycle.GenerateInvoiceOn; //P-Permitted, or specific date\r\n let invoicecyclespec = cycle.InvoiceType //M/Y/D\r\n //TBD for every\r\n if (cycle.IsInvoiced === 'Y') {\r\n if (cycleinvoiceon === 'D') {\r\n datecal = cycleinvoiceon + '/' + invoiceperiod\r\n }\r\n }\r\n\r\n // Invoice On\r\n if (cycle.IsInvoiced === 'N') {\r\n let currentyear = new Date().getFullYear();\r\n let evenyear = isEven(currentyear) ? currentyear : currentyear + 1;\r\n let oddyear = isOdd(currentyear) ? currentyear : currentyear + 1;\r\n if (cycle.InvoiceOn === 'E') {\r\n if (cycleinvoiceon === 'D')\r\n datecal = cycle.GenerateInvoiceDate + '/' + evenyear.toString();\r\n if (cycleinvoiceon === 'P')\r\n datecal = cycle.GenerateInvoiceDate + '/' + evenyear.toString();\r\n }\r\n if (cycle.InvoiceOn === 'O') {\r\n if (cycleinvoiceon === 'D')\r\n datecal = cycle.GenerateInvoiceDate + '/' + oddyear.toString()\r\n if (cycleinvoiceon === 'P')\r\n datecal = cycle.GenerateInvoiceDate + '/' + oddyear.toString()\r\n }\r\n let caldate = stringToDate(datecal, \"mm/dd/yyyy\", \"/\");\r\n nextInvoiceCycleDate = caldate < new Date() ? AddYearToDate(caldate, 2) : caldate;\r\n }\r\n }\r\n return nextInvoiceCycleDate;\r\n}\r\n\r\n\r\nfunction isEven(n) {\r\n return n % 2 === 0;\r\n}\r\n\r\nfunction isOdd(n) {\r\n return Math.abs(n % 2) === 1;\r\n}\r\n\r\nfunction IsPassedDate(datestring) {\r\n let date = stringToDate(datestring, \"mm/dd/yyyy\", \"/\");\r\n return date <= new Date()\r\n}\r\n\r\nfunction AddYearToDate(d, adder) {\r\n var year = d.getFullYear();\r\n var month = d.getMonth();\r\n var day = d.getDate();\r\n return new Date(year + adder, month, day);\r\n}\r\n\r\nfunction AddDaysToDate(date, days) {\r\n let mdate = moment(date).add(days, 'days');\r\n // var result = new Date(date);\r\n // result.setDate(result.getDate() + days);\r\n // return result;\r\n return mdate.format('MM/DD/YYYY');\r\n}\r\n\r\nfunction stringToDate(_date, _format, _delimiter) {\r\n if (_date) {\r\n var formatLowerCase = _format.toLowerCase();\r\n var formatItems = formatLowerCase.split(_delimiter);\r\n var dateItems = _date.split(_delimiter);\r\n var monthIndex = formatItems.indexOf(\"mm\");\r\n var dayIndex = formatItems.indexOf(\"dd\");\r\n var yearIndex = formatItems.indexOf(\"yyyy\");\r\n var month = parseInt(dateItems[monthIndex]);\r\n month -= 1;\r\n var formatedDate = new Date(dateItems[yearIndex], month, dateItems[dayIndex]);\r\n return formatedDate;\r\n } else { return new Date() }\r\n\r\n}\r\n\r\nfunction groupArrayOfObjects(list, key) {\r\n return list.reduce(function (rv, x) {\r\n (rv[x[key]] = rv[x[key]] || []).push(x);\r\n return rv;\r\n }, {});\r\n};\r\n\r\nexport function ReGenerateInvoice(RegenerateProps) {\r\n // let invoiceId, applicantid, type, recordid, isCancel, submodulekey\r\n return new Promise((resolve, reject) => {\r\n //Get any business rules available for the fee. If no, generate using static fee.\r\n\r\n GetRenewalPermitsOfType(RegenerateProps.InvoiceId, RegenerateProps.ApplicantId, RegenerateProps.InvoiceType, RegenerateProps.SubModuleKey, RegenerateProps.SitePermitTypeId).then(renewalres => {\r\n let renewalpermits = renewalres;\r\n if (renewalpermits && Array.isArray(renewalpermits) && renewalpermits.length > 0) {\r\n let groupbyowner = groupArrayOfObjects(renewalpermits, \"SitePermitTypeId\");\r\n if (groupbyowner) {\r\n let promises = [];\r\n renewalpermits.forEach(element => {\r\n promises.push(GetComputedFee(element['SitePermitTypeId'], 'SIGN_INFORMATION', { \"Id\": element[\"Id\"] }))\r\n });\r\n // for (const [key, value] of Object.entries(groupbyowner)) {\r\n // promises.push(GetComputedFee(key, 'SIGN_INFORMATION', { \"SITE_PERMIT_TYPE_ID\": key }))\r\n // }\r\n Promise.all(promises).then(allres => {\r\n console.log(allres);\r\n //If business rules exists modifing the fee details else processing from the static fee data.\r\n if (allres && Array.isArray(allres)) {\r\n var mergedRef = [].concat.apply([], allres);\r\n var merged = mergedRef.filter(value => Object.keys(value).length !== 0);\r\n if (merged && merged.length > 0) {\r\n renewalpermits.forEach(permit => {\r\n let BRFee = merged[0][permit.Id]\r\n if (BRFee) {\r\n let dynamicpermitfee = findPropFromObject(BRFee, 'DYNAMIC_PERMIT_FEE');\r\n permit.PermitRenewalFee = dynamicpermitfee[0]\r\n }\r\n })\r\n }\r\n }\r\n let wrapperProps = { ...RegenerateProps, RenewalPermits: renewalpermits }\r\n ReGenerateInvoiceWrapper(wrapperProps).then(invoiceres => {\r\n resolve(invoiceres)\r\n })\r\n })\r\n }\r\n } else {\r\n //reject['NORECORDS'] // correct: Expected an assignment or function call and instead saw an expression no-unused-expressions\r\n }\r\n })\r\n\r\n })\r\n}\r\n\r\nexport function ReGenerateInvoiceWrapper(props) {\r\n //let applicantid, recordid,invoiceId,isCancel, renewalpermits\r\n return new Promise((resolve, reject) => {\r\n const dataSet = []\r\n let dset = []\r\n props.RenewalPermits && props.RenewalPermits.forEach(permit => {\r\n let appdata = { \"Id\": permit.Id, \"AUTHORIZED_DATE\": permit.AuthorizedDate }\r\n let invoicecycleDetails = GetInvoiceCycleDetails(permit, appdata);\r\n console.log(permit.Id, invoicecycleDetails);\r\n let NextInvoiceCycleDate = props.InvoiceDate ? props.InvoiceDate : invoicecycleDetails.NextInvoiceCycleDate;\r\n let DatePrintedOnInvoice = props.InvoiceDate ? props.InvoiceDate : invoicecycleDetails.DatePrintedOnInvoice;\r\n let InvoiceDueDate = props.InvoiceDueDays ? AddDaysToDate(DatePrintedOnInvoice, props.InvoiceDueDays) : invoicecycleDetails.InvoiceDueDate;\r\n dset.push({\r\n \"RecordID\": permit.Id,\r\n \"ApplicantID\": permit.OwnerId,\r\n \"SitePermitTypeId\": permit.sitepermittypeid,\r\n \"PermitNumber\": permit.PermitNo,\r\n \"District\": permit.DistrictName,\r\n \"County\": permit.County || \"\",\r\n \"PermitFee\": permit.PermitRenewalFee,\r\n \"InvoiceType\": 'PermitRenewal',\r\n \"RegenerateId\": props.InvoiceId > 0 ? props.InvoiceId : null,\r\n \"CancelParent\": props.CancelParent || \"N\",\r\n \"InvoiceCyleDate\": NextInvoiceCycleDate,\r\n \"InvoiceCyleDueDate\": InvoiceDueDate,\r\n \"DatePrintedOnInvoice\": DatePrintedOnInvoice,\r\n })\r\n });\r\n dataSet.push(dset);\r\n if (dset.length > 0) {\r\n const invoicesRef = props.RenewalPermits[0].PermitInvoiceSchema //\"c6dccc56-3156-4efd-817d-b53ca554c957\";\r\n let propsrecordid = props.RecordId ? props.RecordId : 0\r\n GenerateInvoiceWrapper(props.ApplicantId, propsrecordid, dataSet, invoicesRef).then(res => {\r\n resolve(res);\r\n })\r\n }\r\n })\r\n}\r\n\r\nexport function GetComputedFee(sitepermittypeid, sectionkey, filters) {\r\n return new Promise((resolve, reject) => {\r\n let urlpath = `${getEnvVariable('Application')}/api/BusinessRules/SitePermitTypeCalculated/${sitepermittypeid}?sectionKey=${sectionkey}&OnDemand=Y`;\r\n requestApi({ post: { url: urlpath } }, null, filters, null, true)\r\n .then(res => {\r\n //let resdetials = findPropFromObject(res,feekey)\r\n resolve(res)\r\n }).catch(ex => { resolve({}) })\r\n })\r\n}\r\n\r\nexport function findPropFromObject(obj, prop) {\r\n var result = [];\r\n function recursivelyFindProp(o, keyToBeFound) {\r\n Object.keys(o).forEach(function (key) {\r\n if (typeof o[key] === 'object') {\r\n recursivelyFindProp(o[key], keyToBeFound);\r\n } else {\r\n if (key === keyToBeFound) result.push(o[key]);\r\n }\r\n });\r\n }\r\n recursivelyFindProp(obj, prop);\r\n return result;\r\n}\r\n\r\nexport function GenerateInvoice(appdata, type) {\r\n return new Promise((resolve, reject) => {\r\n GetSitePermitType(appdata[\"SITE_PERMIT_TYPE_ID\"]).then(sitepermittype => {\r\n if (sitepermittype && sitepermittype.Id > 0) {\r\n // Check for further settings\r\n if (sitepermittype.BillingOption === 'Y') {\r\n let sitepermittypedetails = sitepermittype;\r\n\r\n if ((type === 'APPLICATION' && sitepermittype.ApplicationFeeType === 'D') ||\r\n (type === 'PRORATE' && sitepermittype.ProrateFeeType === 'D') ||\r\n (type === 'PERMITRENEWAL' && sitepermittype.PermitRenewalFeeType === 'D')) {\r\n\r\n // Check if fee has any dynamic fee and generate fee\r\n GetComputedFee(appdata[\"SITE_PERMIT_TYPE_ID\"], 'SIGN_INFORMATION', { \"Id\": appdata[\"Id\"] }).then(computedfeeres => {\r\n console.log(computedfeeres);\r\n if (computedfeeres) {\r\n let dynamicappfee = findPropFromObject(computedfeeres, 'DYNAMIC_APPLICATION_FEE');\r\n let dynamicproratefee = findPropFromObject(computedfeeres, 'DYNAMIC_PRORATE_FEE');\r\n let dynamicpermitfee = findPropFromObject(computedfeeres, 'DYNAMIC_PERMIT_FEE');\r\n\r\n if (dynamicappfee.length > 0 && sitepermittype.ApplicationFeeType === 'D')\r\n sitepermittypedetails.ApplicationFee = dynamicappfee[0];\r\n if (dynamicproratefee.length > 0 && sitepermittype.ProrateFeeType === 'D')\r\n sitepermittypedetails.PermitRenewalFee = dynamicproratefee[0];\r\n if (dynamicpermitfee.length > 0 && sitepermittype.PermitRenewalFeeType === 'D')\r\n sitepermittypedetails.ProrateFee = dynamicpermitfee[0];\r\n }\r\n GenerateInvoiceController(type, appdata, sitepermittypedetails).then(invres => {\r\n resolve(invres)\r\n }).catch(ex => { reject(ex) })\r\n\r\n })\r\n } else {\r\n GenerateInvoiceController(type, appdata, sitepermittypedetails).then(invres => {\r\n resolve(invres)\r\n }).catch(ex => { reject(ex) })\r\n }\r\n\r\n } else {\r\n reject({ \"Error\": \"NOBILLING\" })\r\n }\r\n } else {\r\n reject({ \"Error\": \"NOSETTING\" })\r\n }\r\n })\r\n })\r\n}\r\n\r\nexport function GenerateInvoiceController(type, appdata, sitepermittypedetails) {\r\n return new Promise((resolve, reject) => {\r\n if (type === 'APPLICATION') {\r\n GenerateApplicationFeeInvoice(appdata, sitepermittypedetails).then(res => {\r\n resolve(res);\r\n }).catch(ex => { reject(ex) })\r\n }\r\n if (type === 'PRORATE') {\r\n GenerateProrateFeeInvoice(appdata, sitepermittypedetails).then(res => {\r\n resolve(res);\r\n }).catch(ex => { reject(ex) })\r\n }\r\n if (type === 'PERMITRENEWAL') {\r\n GeneratePermitFeeInvoice(appdata, sitepermittypedetails).then(res => {\r\n resolve(res);\r\n }).catch(ex => { reject(ex) })\r\n }\r\n })\r\n}\r\n\r\nexport function GenerateApplicationFeeInvoice(appdata, sitepermittype) {\r\n return new Promise((resolve, reject) => {\r\n if (sitepermittype.HasApplicationFee === 'Y' && sitepermittype.ApplicationFee\r\n && sitepermittype.ApplicationFee > 0 && sitepermittype.ApplicationInvoiceSchema) {\r\n const dataSet = [\r\n [\r\n {\r\n \"RecordID\": appdata[\"Id\"],\r\n \"ApplicantID\": appdata[\"COMPANY_ID\"],\r\n \"SitePermitTypeId\": appdata[\"SITE_PERMIT_TYPE_ID\"],\r\n \"PermitNumber\": appdata[\"PERMIT_NO\"],\r\n \"District\": appdata[\"DISTRICT_ID\"],\r\n \"County\": appdata[\"COUNTY\"],\r\n \"PermitFee\": sitepermittype.ApplicationFee,\r\n \"InvoiceType\": 'Application',\r\n \"RefType\": appdata[\"KEY\"]\r\n }\r\n ]\r\n ]\r\n const invoicesRef = sitepermittype.ApplicationInvoiceSchema //\"c6dccc56-3156-4efd-817d-b53ca554c957\";\r\n GenerateInvoiceWrapper(appdata[\"COMPANY_ID\"], appdata[\"Id\"], dataSet, invoicesRef).then(res => {\r\n resolve(res);\r\n })\r\n } else {\r\n reject({ \"Error\": \"NOAPPLICATIONFEE\" })\r\n }\r\n })\r\n}\r\n\r\nexport function GenerateProrateFeeInvoice(appdata, sitepermittype) {\r\n return new Promise((resolve, reject) => {\r\n if (sitepermittype.HasPorate === 'Y' && sitepermittype.ProrateFee && sitepermittype.ProrateFee > 0\r\n && sitepermittype.PorateInvoiceCycle && sitepermittype.ProrateInvoiceSchema) {\r\n GetInvoiceCycle(sitepermittype.PorateInvoiceCycle).then(invoicecycleres => {\r\n if (invoicecycleres) {\r\n //let nextInvoiceCycleDate = GetNextInvoiceCycleDate(invoicecycleres);\r\n let invoicecycleDetails = GetInvoiceCycleDetails(invoicecycleres, appdata);\r\n console.log(invoicecycleDetails);\r\n\r\n const dataSet = [\r\n [\r\n {\r\n \"RecordID\": appdata[\"Id\"],\r\n \"ApplicantID\": appdata[\"COMPANY_ID\"],\r\n \"SitePermitTypeId\": appdata[\"SITE_PERMIT_TYPE_ID\"],\r\n \"PermitNumber\": appdata[\"PERMIT_NO\"],\r\n \"District\": appdata[\"DISTRICT_ID\"],\r\n \"County\": appdata[\"COUNTY\"],\r\n \"PermitFee\": sitepermittype.ProrateFee,\r\n \"CurrentDate\": new Date(),\r\n \"InvoiceCyleDate\": invoicecycleDetails.NextInvoiceCycleDate,\r\n \"InvoiceCyleDueDate\": invoicecycleDetails.InvoiceDueDate,\r\n \"DatePrintedOnInvoice\": invoicecycleDetails.DatePrintedOnInvoice,\r\n \"InvoiceType\": 'Prorate',\r\n \"RefType\": appdata[\"KEY\"]\r\n }\r\n ]\r\n ]\r\n const invoicesRef = sitepermittype.ProrateInvoiceSchema //\"52eff645-5222-4517-ae78-cee95276539d\";\r\n\r\n GenerateInvoiceWrapper(appdata[\"COMPANY_ID\"], appdata[\"Id\"], dataSet, invoicesRef).then(res => {\r\n resolve(res);\r\n })\r\n }\r\n\r\n })\r\n } else {\r\n reject({ \"Error\": \"NOPRORATEFEE\" })\r\n }\r\n })\r\n}\r\n\r\nexport function GeneratePermitFeeInvoice(appdata, sitepermittype) {\r\n return new Promise((resolve, reject) => {\r\n\r\n if (sitepermittype.PermitRenewal === 'Y' && sitepermittype.PermitRenewalFee\r\n && sitepermittype.PermitRenewalFee > 0 && sitepermittype.PermitInvoiceSchema) {\r\n if (appdata.InvoiceDate) {\r\n const dataSet = [\r\n [\r\n {\r\n \"RecordID\": appdata[\"Id\"],\r\n \"ApplicantID\": appdata[\"COMPANY_ID\"],\r\n \"SitePermitTypeId\": appdata[\"SITE_PERMIT_TYPE_ID\"],\r\n \"PermitNumber\": appdata[\"PERMIT_NO\"],\r\n \"District\": appdata[\"DISTRICT_ID\"],\r\n \"County\": appdata[\"COUNTY\"],\r\n \"PermitFee\": sitepermittype.PermitRenewalFee,\r\n \"InvoiceType\": 'PermitRenewal',\r\n \"InvoiceCyleDate\": appdata[\"InvoiceDate\"],\r\n \"InvoiceCyleDueDate\": AddDaysToDate(new Date(), appdata[\"InvoiceDueDays\"]),\r\n \"DatePrintedOnInvoice\": appdata[\"InvoiceDate\"],\r\n \"RefType\": appdata[\"KEY\"]\r\n }\r\n ]\r\n ]\r\n const invoicesRef = sitepermittype.PermitInvoiceSchema //\"c6dccc56-3156-4efd-817d-b53ca554c957\";\r\n GenerateInvoiceWrapper(appdata[\"COMPANY_ID\"], appdata[\"Id\"], dataSet, invoicesRef).then(res => {\r\n resolve(res);\r\n })\r\n } else {\r\n GetInvoiceCycle(sitepermittype.PermitInvoiceCycle).then(invoicecycleres => {\r\n if (invoicecycleres) {\r\n //let nextInvoiceCycleDate = GetNextInvoiceCycleDate(invoicecycleres);\r\n let invoicecycleDetails = GetInvoiceCycleDetails(invoicecycleres, appdata);\r\n console.log(invoicecycleDetails);\r\n\r\n const dataSet = [\r\n [\r\n {\r\n \"RecordID\": appdata[\"Id\"],\r\n \"ApplicantID\": appdata[\"COMPANY_ID\"],\r\n \"SitePermitTypeId\": appdata[\"SITE_PERMIT_TYPE_ID\"],\r\n \"PermitNumber\": appdata[\"PERMIT_NO\"],\r\n \"District\": appdata[\"DISTRICT_ID\"],\r\n \"County\": appdata[\"COUNTY\"],\r\n \"PermitFee\": sitepermittype.PermitRenewalFee,\r\n \"InvoiceType\": 'PermitRenewal',\r\n \"InvoiceCyleDate\": invoicecycleDetails.NextInvoiceCycleDate,\r\n \"InvoiceCyleDueDate\": invoicecycleDetails.InvoiceDueDate,\r\n \"DatePrintedOnInvoice\": invoicecycleDetails.DatePrintedOnInvoice,\r\n }\r\n ]\r\n ]\r\n const invoicesRef = sitepermittype.PermitInvoiceSchema //\"c6dccc56-3156-4efd-817d-b53ca554c957\";\r\n GenerateInvoiceWrapper(appdata[\"COMPANY_ID\"], appdata[\"Id\"], dataSet, invoicesRef).then(res => {\r\n resolve(res);\r\n })\r\n }\r\n })\r\n }\r\n\r\n } else {\r\n reject({ \"Error\": \"NOPERMITRENEWALFEE\" })\r\n }\r\n })\r\n}\r\n\r\n\r\n\r\n\r\nexport function GenerateInvoiceWrapper(ownerid, refid, dataSetIN, invoicesIN) {\r\n return new Promise((resolve, reject) => {\r\n const dataSet = dataSetIN;\r\n const invoices = invoicesIN.split(\",\");\r\n getCalculatedAmount(invoices, dataSet).then(resp => {\r\n console.log(resp);\r\n InsertInvoice(ownerid, refid, invoicesIN, resp).then(invoiceres => {\r\n console.log('invoice resp ----------', invoiceres);\r\n resolve(invoiceres)\r\n })\r\n })\r\n }).catch(ex => {\r\n console.error('Error in processing the invoice', ex)\r\n })\r\n}\r\n\r\n//Inserting invoice data into the database.\r\nexport function InsertInvoice(ownerid, refid, invoicesIN, resultdata) {\r\n return new Promise((resolve, reject) => {\r\n let invoiceentity = GetInvoiceEntityResult(ownerid, refid, invoicesIN, resultdata)\r\n let InvoiceCreatePath = `${getEnvVariable('Payment')}/api/Invoice/Create/${refid}`;\r\n requestApi({ post: { url: InvoiceCreatePath } }, null, invoiceentity, null, true)\r\n .then(res => {\r\n resolve(res)\r\n })\r\n }).catch(ex => {\r\n // resolve([])\r\n })\r\n}\r\n\r\nexport function InsertInvoicePhysicalCheckPayment(invoiceid, paymentdetails) {\r\n return new Promise((resolve, reject) => {\r\n let InvoiceCreatePath = `${getEnvVariable('Payment')}/api/Invoice/PayChecks/${invoiceid}`;\r\n requestApi({ post: { url: InvoiceCreatePath } }, null, paymentdetails, null, true)\r\n .then(res => {\r\n resolve(res)\r\n })\r\n }).catch(ex => {\r\n // resolve([])\r\n })\r\n}\r\n\r\nexport function GetInvoiceById(invoiceid) {\r\n return new Promise((resolve, reject) => {\r\n let InvoiceGetPath = `${getEnvVariable('Payment')}/api/Invoice/${invoiceid}`;\r\n requestApi({ get: { url: InvoiceGetPath } }, null, null)\r\n .then(res => {\r\n resolve(res)\r\n })\r\n }).catch(ex => {\r\n // resolve([])\r\n })\r\n}\r\n\r\nexport function GetInvoicesList(invoiceidlist) {\r\n return new Promise((resolve, reject) => {\r\n let InvoiceGetPath = `${getEnvVariable('Payment')}/api/Invoice/GetList`;\r\n requestApi({ post: { url: InvoiceGetPath } }, null, invoiceidlist, null, true)\r\n .then(res => {\r\n resolve(res)\r\n })\r\n }).catch(ex => {\r\n // resolve([])\r\n })\r\n}\r\n\r\nexport function GetInvoiceViewById(invoiceid) {\r\n return new Promise((resolve, reject) => {\r\n let InvoiceGetPath = `${getEnvVariable('Payment')}/api/InvoiceView/${invoiceid}`;\r\n requestApi({ get: { url: InvoiceGetPath } }, null, null)\r\n .then(res => {\r\n resolve(res)\r\n })\r\n }).catch(ex => {\r\n // resolve([])\r\n })\r\n}\r\n\r\nexport function GetInvoice(refid) {\r\n return new Promise((resolve, reject) => {\r\n let InvoiceGetPath = `${getEnvVariable('Payment')}/api/Invoice/Record/${refid}`;\r\n requestApi({ get: { url: InvoiceGetPath } }, null, null)\r\n .then(res => {\r\n resolve(res)\r\n })\r\n }).catch(ex => {\r\n // resolve([])\r\n })\r\n}\r\n\r\nexport function GetRecordInvoiceByType(refid, type) {\r\n return new Promise((resolve, reject) => {\r\n let InvoiceGetPath = `${getEnvVariable('Payment')}/api/Invoice/Record/${refid}/${type}`;\r\n requestApi({ get: { url: InvoiceGetPath } }, null, null)\r\n .then(res => {\r\n resolve(res)\r\n })\r\n }).catch(ex => {\r\n // resolve([])\r\n })\r\n}\r\n\r\nexport function GetOwnerInvoice(refid, reftype) {\r\n return new Promise((resolve, reject) => {\r\n let InvoiceGetPath = `${getEnvVariable('Payment')}/api/Invoice/Owner/${refid}/${reftype}`+ `${localStorage.getItem('impersonate') ? '?impersonateFor=' + localStorage.getItem('impersonate') : ''}`;\r\n requestApi({ get: { url: InvoiceGetPath } }, null, null)\r\n .then(res => {\r\n resolve(res)\r\n })\r\n }).catch(ex => {\r\n // resolve([])\r\n })\r\n}\r\n\r\nexport function GetOwnerInvoiceView(refid, reftype, modules) {\r\n return new Promise((resolve, reject) => {\r\n let InvoiceGetPath = `${getEnvVariable('Payment')}/api/InvoiceView/Owner/${refid}/${reftype}` + `${localStorage.getItem('impersonate') ? '?impersonateFor=' + localStorage.getItem('impersonate') : ''}`;\r\n requestApi({ post: { url: InvoiceGetPath } }, null, modules, null, true)\r\n .then(res => {\r\n resolve(res)\r\n })\r\n }).catch(ex => {\r\n // resolve([])\r\n })\r\n}\r\n\r\nexport function GetPaymentInformation(refid) {\r\n return new Promise((resolve, reject) => {\r\n let InvoiceGetPath = `${getEnvVariable('Payment')}/api/Invoice/PaymentInformation/${refid}`;\r\n requestApi({ get: { url: InvoiceGetPath } }, null, null)\r\n .then(res => {\r\n resolve(res)\r\n })\r\n }).catch(ex => {\r\n // resolve([])\r\n })\r\n}\r\n\r\nexport function GetOwnerPaymentsInformation(refid) {\r\n return new Promise((resolve, reject) => {\r\n let InvoiceGetPath = `${getEnvVariable('Payment')}/api/Invoice/Owner/PaymentInformation/${refid}`+ `${localStorage.getItem('impersonate') ? '?impersonateFor=' + localStorage.getItem('impersonate') : ''}`;\r\n requestApi({ get: { url: InvoiceGetPath } }, null, null)\r\n .then(res => {\r\n resolve(res)\r\n })\r\n }).catch(ex => {\r\n // resolve([])\r\n })\r\n}\r\n\r\nexport function GetInvoicePaymentInformation(refid, invids) {\r\n return new Promise((resolve, reject) => {\r\n let InvoiceGetPath = `${getEnvVariable('Payment')}/api/Invoice/InvoicePaymentInformation/${refid}`;\r\n requestApi({ post: { url: InvoiceGetPath } }, null, invids, null, false)\r\n .then(res => {\r\n resolve(res)\r\n })\r\n }).catch(ex => {\r\n // resolve([])\r\n })\r\n}\r\n\r\nexport function GetBaseRecordDetail(refid) {\r\n return new Promise((resolve, reject) => {\r\n let InvoiceGetPath = `${getEnvVariable('Payment')}/api/InvoiceCycle/RecordDetail/${refid}`;\r\n requestApi({ get: { url: InvoiceGetPath } }, null, null)\r\n .then(res => {\r\n resolve(res)\r\n })\r\n }).catch(ex => {\r\n // resolve([])\r\n })\r\n}\r\n\r\nfunction DateTimeToZone(date) {\r\n return date.toLocaleString('en-US', { timeZone: 'America/New_York' });\r\n}\r\n\r\nexport function GetInvoiceEntityResult(ownerid, refid, invoicesIN, resultdata) {\r\n let currentDate = new Date();\r\n let dueDateCalc = new Date();\r\n let extendedDate = new Date(dueDateCalc.setMonth(dueDateCalc.getMonth() + 6)); //currentDate.setMonth(currentDate.getMonth() + 6)\r\n let invoicingfor = resultdata[0].lineitems[0].InvoiceType\r\n let regenerateid = resultdata[0].lineitems[0].RegenerateId || null\r\n let cancelParent = resultdata[0].lineitems[0].CancelParent || null\r\n let InvoiceCyleDueDate = resultdata[0].lineitems[0].InvoiceCyleDueDate || extendedDate\r\n let DatePrintedOnInvoice = resultdata[0].lineitems[0].DatePrintedOnInvoice || currentDate\r\n let submodule = resultdata[0].lineitems[0].RefType;\r\n let reftyp = submodule ? submodule.charAt(0) : 'A';\r\n\r\n let invoice = {\r\n invoiceTypeKey: invoicesIN,\r\n invoiceDate: DatePrintedOnInvoice ? DateTimeToZone(DatePrintedOnInvoice) : null,\r\n status: 'U',\r\n paymentReferenceId: '',\r\n dueDate: InvoiceCyleDueDate ? DateTimeToZone(InvoiceCyleDueDate) : null,\r\n invoiceType: invoicingfor,\r\n invoiceLineItems: [],\r\n invoiceDetails: [],\r\n regenerateId: regenerateid,\r\n cancelParent: cancelParent\r\n }\r\n if (resultdata && Array.isArray(resultdata)) {\r\n let invoiceLineItems = []\r\n let invoiceDetails = []\r\n resultdata.forEach(element => {\r\n let lineitems = element.lineitems;\r\n if (lineitems && Array.isArray(lineitems)) {\r\n lineitems.forEach(litem => {\r\n invoiceLineItems.push({ ...litem, refId: litem.RecordID, refType: reftyp, ownerId: ownerid, invoice: '' });\r\n let liteminvoicedetails = litem.invoice;\r\n if (liteminvoicedetails && Array.isArray(liteminvoicedetails)) {\r\n liteminvoicedetails.forEach(invoicedetail => {\r\n invoiceDetails.push(invoicedetail)\r\n });\r\n }\r\n });\r\n }\r\n });\r\n invoice.invoiceLineItems = invoiceLineItems;\r\n invoice.invoiceDetails = invoiceDetails;\r\n }\r\n return invoice;\r\n}\r\n\r\n\r\nexport function IsMandatoryAttachmentsUploaded(sitepermittype, refid) {\r\n return new Promise((resolve, reject) => {\r\n let InvoiceCreatePath = `${getEnvVariable('Application')}/api/Application/IsMandatoryAttachmentsUploaded/${sitepermittype}/${refid}`;\r\n requestApi({ post: { url: InvoiceCreatePath } }, null, null, null, true)\r\n .then(res => {\r\n resolve(res)\r\n })\r\n }).catch(ex => {\r\n // resolve(true)\r\n })\r\n}\r\n\r\nexport function GetTotalFee(invoice) {\r\n if (invoice && invoice.InvoiceDetails && Array.isArray(invoice.InvoiceDetails)) {\r\n let totalAmount = 0;\r\n invoice.InvoiceDetails.forEach(element => {\r\n totalAmount = totalAmount + element.Amount\r\n });\r\n return totalAmount\r\n }\r\n return 0;\r\n}\r\n\r\nexport function GetTotalDue(invoice) {\r\n if (invoice && invoice.InvoiceDetails && Array.isArray(invoice.InvoiceDetails)) {\r\n let totalAmount = 0;\r\n invoice.InvoiceDetails.forEach(element => {\r\n totalAmount = totalAmount + element.Amount\r\n });\r\n let paidAmount = 0;\r\n invoice.BillingPayments && invoice.BillingPayments.forEach(payment => {\r\n paidAmount = paidAmount + payment.BillingPaymentDetails.SubTotal;\r\n })\r\n return (totalAmount - paidAmount)\r\n }\r\n return 0;\r\n}\r\n\r\nexport function GetTotalDueMultiPayments(invoices) {\r\n if (invoices && Array.isArray(invoices)) {\r\n let invdetailsmerged = [];\r\n let invlineitemsmerged = [];\r\n let invbillingpaymentsmerged = [];\r\n let invbillingpaymentdetailsmerged = [];\r\n invoices.forEach(inv => {\r\n invdetailsmerged.push(...inv.InvoiceDetails)\r\n invlineitemsmerged.push(...inv.InvoiceLineItems)\r\n //if(invbillingpaymentsmerged.some(e => e.BillingPaymentDetailId === 'Magenic'))\r\n invbillingpaymentsmerged.push(...inv.BillingPayments);\r\n inv.BillingPayments.forEach(blg => {\r\n invbillingpaymentdetailsmerged.push(blg.BillingPaymentDetails)\r\n });\r\n });\r\n invbillingpaymentdetailsmerged = invbillingpaymentdetailsmerged.filter((tag, index, array) => array.findIndex(t => t.Id === tag.Id && t.Type === tag.Type) === index);\r\n let totalAmount = 0;\r\n invdetailsmerged.forEach(element => {\r\n totalAmount = totalAmount + element.Amount\r\n });\r\n let paidAmount = 0;\r\n invbillingpaymentdetailsmerged.forEach(payment => {\r\n paidAmount = paidAmount + payment.SubTotal;\r\n })\r\n return (totalAmount - paidAmount)\r\n }\r\n return 0;\r\n}\r\n\r\nexport function GetInvoicePermitDetails(invoiceid) {\r\n return new Promise((resolve, reject) => {\r\n let InvoiceGetPath = `${getEnvVariable('Payment')}/api/Invoice/Permits/${invoiceid}`;\r\n requestApi({ get: { url: InvoiceGetPath } }, null, null)\r\n .then(res => {\r\n resolve(res)\r\n })\r\n }).catch(ex => {\r\n // resolve([])\r\n })\r\n}\r\n\r\nexport function GetInvoicePermitDetailsList(invoiceidlist) {\r\n return new Promise((resolve, reject) => {\r\n let InvoiceGetPath = `${getEnvVariable('Payment')}/api/Invoice/PermitsList`;\r\n requestApi({ post: { url: InvoiceGetPath } }, null, invoiceidlist, null, true)\r\n .then(res => {\r\n resolve(res)\r\n })\r\n }).catch(ex => {\r\n // resolve([])\r\n })\r\n}\r\n\r\n\r\nexport function UpdateInvoiceStatus(invoiceid, status) {\r\n return new Promise((resolve, reject) => {\r\n let invoiceupdateurl = `${getEnvVariable('Payment')}/api/Invoice/Status/${invoiceid}/${status}`;\r\n requestApi({ get: { url: invoiceupdateurl } }, null, null)\r\n .then(res => {\r\n resolve(res)\r\n })\r\n }).catch(ex => {\r\n // resolve([])\r\n })\r\n}\r\n\r\nexport const testInvoiceResult = [\r\n {\r\n \"lineitems\": [\r\n {\r\n \"RecordID\": \"23789\",\r\n \"ApplicantID\": \"101\",\r\n \"PermitNumber\": \"23789-A1\",\r\n \"SubType\": \"Private\",\r\n \"District\": \"District8\",\r\n \"County\": \"Lexington\",\r\n \"Route\": \"CLSR\",\r\n \"PermitFee\": \"50\",\r\n \"invoice\": [\r\n {\r\n \"name\": \"PermitFee\",\r\n \"amount\": 50,\r\n \"description\": \"PermitFee\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"otheritems\": []\r\n }\r\n]","import { ReGenerateInvoiceWrapper,GetComputedFee } from './billingservice';\r\nimport { getEnvVariable } from '../../../src/modules/environmentalList';\r\nimport { requestApi } from '../../../src/core/modules/form/utilities';\r\n\r\nfunction groupArrayOfObjects(list, key) {\r\n return list.reduce(function(rv, x) {\r\n (rv[x[key]] = rv[x[key]] || []).push(x);\r\n return rv;\r\n }, {});\r\n};\r\n\r\nexport function GetAllRenewalPermits(submodule){\r\n return new Promise((resolve, reject) => {\r\n let recordpath = getEnvVariable('Payment') + `/api/InvoiceCycle/RenewalPermits/${submodule}`;\r\n requestApi({ get: { url: recordpath } }, null, null)\r\n .then(res => {\r\n resolve(res)\r\n })\r\n }).catch(ex =>{\r\n console.error(ex);\r\n })\r\n}\r\n\r\nfunction groupByMultiple( array , f )\r\n{\r\n var groups = {};\r\n array.forEach( function( o )\r\n {\r\n var group = JSON.stringify( f(o) );\r\n groups[group] = groups[group] || [];\r\n groups[group].push( o );\r\n });\r\n return Object.keys(groups).map( function( group )\r\n {\r\n return groups[group];\r\n })\r\n}\r\n\r\nexport function RunInvoiceCycle(submodule){\r\n return new Promise((resolve, reject) => {\r\n GetAllRenewalPermits(submodule).then(renewalres => {\r\n console.log(renewalres);\r\n let renewalpermits = renewalres;\r\n let RegenerateProps = {};\r\n\r\n if(renewalpermits && Array.isArray(renewalpermits) && renewalpermits.length > 0){\r\n let groupbysitepermit = groupArrayOfObjects(renewalpermits, \"SitePermitTypeId\");\r\n if(groupbysitepermit){\r\n let promises = [];\r\n // for (const [key, value] of Object.entries(groupbysitepermit)) {\r\n // promises.push(GetComputedFee(key, 'SIGN_INFORMATION', { \"SITE_PERMIT_TYPE_ID\": key }))\r\n // }\r\n renewalpermits.forEach(element => {\r\n promises.push(GetComputedFee(element['SitePermitTypeId'], 'SIGN_INFORMATION', { \"Id\": element[\"Id\"] }))\r\n });\r\n Promise.all(promises).then(allres =>{\r\n console.log(allres);\r\n //If business rules exists modifing the fee details else processing from the static fee data.\r\n if(allres && Array.isArray(allres)){\r\n var mergedRef = [].concat.apply([], allres);\r\n var merged = mergedRef.filter(value => Object.keys(value).length !== 0);\r\n if(merged && merged.length > 0){\r\n renewalpermits.forEach(permit => {\r\n let BRFee = merged[0][permit.Id]\r\n if(BRFee){\r\n let dynamicpermitfee = [];// findPropFromObject(BRFee,'DYNAMIC_PERMIT_FEE'); :code correction: findPropFromObject missing function\r\n permit.PermitRenewalFee = dynamicpermitfee[0]\r\n }\r\n })\r\n }\r\n }\r\n\r\n var ownersitepermittypegroup = groupByMultiple(renewalpermits, function(item){\r\n return [item.SitePermitTypeId, item.OwnerId];\r\n });\r\n let resultPemrits = [];\r\n if(Array.isArray(ownersitepermittypegroup)){\r\n ownersitepermittypegroup.forEach(renpermits => {\r\n let wrapperProps = { ApplicantId : renpermits[0].OwnerId, ...RegenerateProps, RenewalPermits: renpermits}\r\n console.log(wrapperProps)\r\n ReGenerateInvoiceWrapper(wrapperProps).then(invoiceres =>{\r\n resultPemrits.push(invoiceres);\r\n })\r\n });\r\n }\r\n resolve(resultPemrits);\r\n })\r\n }\r\n }else{\r\n // reject['NORECORDS'] //Expected an assignment or function call and instead saw an expression\r\n }\r\n })\r\n })\r\n\r\n\r\n}","import React, { useReducer, useEffect, useRef, useState, Fragment, Component } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { snackbarMessage } from '../../core/actions';\r\nimport { bindActionCreators } from 'redux';\r\nimport { connect } from 'react-redux';\r\nimport Button from '@material-ui/core/Button';\r\nimport { RunInvoiceCycle } from '../billing/invoicecycleservice';\r\nimport { requestApi } from '../../../src/core/modules/form/utilities';\r\nimport { getEnvVariable } from '../../../src/modules/environmentalList';\r\n\r\nfunction InvoiceSettings(props) {\r\n const [subModules, setSubModules] = useState([])\r\n\r\n useEffect(() => { \r\n requestApi({ get: { url: getEnvVariable('MasterAdmin') + `/api/module/` + getEnvVariable('ModuleKey') + `/submodule/All/Active/IsConfigurable` } }, null, null).then(results => {\r\n setSubModules(results);\r\n }) \r\n }, [])\r\n\r\n const handleButton1Click = (submodule) => {\r\n props.snackbarMessage(`This will take a while to complete`, 'info'); \r\n RunInvoiceCycle(submodule).then(res => {\r\n props.snackbarMessage(`Invoice run completed for module ${submodule}`, 'success'); \r\n })\r\n } \r\n\r\n return (\r\n <div className=\"col-sm-12 col-xs-12 pt-2\"> \r\n <Fragment className = \"pl-2 pt-2\" >\r\n {subModules.map(function(module, index){\r\n return (<Button color={'primary'} size={'medium'} variant={'contained'} name={'button1'} onClick={() => handleButton1Click(module.Key)}>\r\n {module.DisplayName}\r\n </Button>)\r\n })}\r\n \r\n </Fragment>\r\n </div>\r\n )\r\n}\r\n\r\nconst mapProps = (state) => {\r\n return state\r\n}\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage }, dispatch);\r\n}\r\n\r\nInvoiceSettings = connect(mapProps, mapActions)(InvoiceSettings)\r\nexport default withRouter(InvoiceSettings)\r\n","export default __webpack_public_path__ + \"static/media/imageplaceholder.8398370f.jpg\";","import React, { Component, Fragment } from 'react';\r\nimport Button from '@material-ui/core/Button';\r\nimport Fab from '@material-ui/core/Fab';\r\nimport CloudUploadIcon from '@material-ui/icons/CloudUpload';\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport defaultImage from '../../core/resources/Default-UserImg.jpg'\r\nimport defaultSigImage from '../../core/resources/imageplaceholder.jpg'\r\nimport GridList from '@material-ui/core/GridList';\r\nimport GridListTile from '@material-ui/core/GridListTile';\r\nimport GridListTileBar from '@material-ui/core/GridListTileBar';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport StarBorderIcon from '@material-ui/icons/StarBorder';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport { bindActionCreators } from 'redux'\r\nimport { connect } from 'react-redux';\r\nimport { snackbarMessage } from '../../core/actions';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport DropDownIcon from '@material-ui/icons/VerticalAlignBottom';\r\nimport ConfirmationDialog from \"../../core/controls/components/confirmationPopup\";\r\nimport { getEnvVariable } from '../..//modules/environmentalList';\r\n\r\nconst styles = theme => ({\r\n root: {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n justifyContent: 'space-around',\r\n overflow: 'hidden',\r\n backgroundColor: theme.palette.background.paper,\r\n },\r\n gridList: {\r\n flexWrap: 'nowrap',\r\n // Promote the list into his own layer on Chrome. This cost memory but helps keeping high FPS.\r\n transform: 'translateZ(0)',\r\n\r\n },\r\n title: {\r\n color: '#f44336',\r\n },\r\n subtitle: {\r\n lineHeight: 1,\r\n },\r\n titleBar: {\r\n background:\r\n 'linear-gradient(to top, rgba(0,0,0,0.7) 0%, rgba(0,0,0,0.3) 70%, rgba(0,0,0,0) 100%)',\r\n },\r\n});\r\n\r\n\r\nclass FileUpload extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n openConfirmation: false,\r\n imagename: \"\",\r\n imageFormats: getEnvVariable(\"ImageFormats\").split(\",\")\r\n\r\n };\r\n }\r\n\r\n handleFileUpload = (event) => {\r\n const name = event.target.name;\r\n const filename = event.target.files[0].name\r\n this.toBase64(event)\r\n .then(result => {\r\n var extension = filename.split(\".\")\r\n if (this.state.imageFormats.includes(extension[1].toLowerCase())) { //while spliting filename with '.' we get only 2 names(substrings) i.e., arr[0]:name & arr[1]:extension\r\n var e = {\r\n target: {\r\n name: name,\r\n value: result\r\n }\r\n }\r\n this.props.handleFieldChange(e)\r\n }\r\n else {\r\n this.props.snackbarMessage('Please upload files with correct extension, supported file extensions are JPEG, PNG, JPG and IMG.', 'error')\r\n }\r\n })\r\n .catch(ex => console.log(ex));\r\n }\r\n\r\n handleImageUpload = (event) => {\r\n const name = event.target.name;\r\n const filename = event.target.files[0].name\r\n this.toBase64(event)\r\n .then(result => {\r\n var extension = filename.split(\".\")\r\n if (this.state.imageFormats.includes(extension[1].toLowerCase())) { //while spliting filename with '.' we get only 2 names(substrings) i.e., arr[0]:name & arr[1]:extension\r\n var e = {\r\n target: {\r\n name: name,\r\n value: filename + ';//' + result\r\n }\r\n }\r\n this.props.handleFieldChange(e)\r\n\r\n }\r\n else {\r\n this.props.snackbarMessage('Please upload files with correct extension, supported file extensions are JPEG, PNG, JPG and IMG.', 'error')\r\n }\r\n })\r\n .catch(ex => console.log(ex));\r\n }\r\n toBase64 = (event) => {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(event.target.files[0]);\r\n reader.onload = () => resolve(reader.result);\r\n reader.onerror = error => reject(error);\r\n })\r\n };\r\n\r\n RemoveImage = (event) => {\r\n this.setState({ openConfirmation: true, imagename: event.target.name })\r\n }\r\n\r\n DownloadImage = (event) => {\r\n let image = this.props.value ? this.props.value.split(';//') : [];\r\n if (image.length > 0) {\r\n let Name = image[0]\r\n let ContentStr = image[1];\r\n\r\n const linkSource = ContentStr;\r\n const downloadLink = document.createElement(\"a\");\r\n const fileName = Name;\r\n downloadLink.href = linkSource;\r\n downloadLink.download = fileName;\r\n downloadLink.click();\r\n }\r\n }\r\n\r\n ConfirmDelete = () => {\r\n this.setState({ openConfirmation: false })\r\n var e = {\r\n target: {\r\n name: this.state.imagename,\r\n value: \"\"\r\n }\r\n }\r\n this.props.handleFieldChange(e)\r\n }\r\n\r\n handleCancelDelete = () => {\r\n this.setState({ openConfirmation: false })\r\n }\r\n\r\n render() {\r\n const { classes, error, required, helpertext } = this.props;\r\n let image = this.props.value ? this.props.value.split(';//') : [];\r\n return (\r\n <Fragment>\r\n <InputLabel shrink={true} required={required} error={error}>Upload Image</InputLabel>\r\n <GridList className={classes.gridList} >\r\n <GridListTile style={{\r\n // height: '100%',\r\n width: '100%'\r\n }}>\r\n <img style={{ display: 'block',}} src={image && image.length > 0 ? (image[1]) : this.props.profile ? defaultImage : defaultSigImage} alt=\"Image\" />\r\n {this.props.value && <GridListTileBar\r\n title={image && image.length > 0 ? (image[0]) : ('')}\r\n titlePosition=\"top\"\r\n classes={{\r\n root: classes.titleBar,\r\n title: classes.title,\r\n }}\r\n />\r\n }\r\n {this.props.value && <GridListTileBar\r\n classes={{\r\n root: classes.titleBar,\r\n title: classes.title,\r\n }}\r\n actionIcon={\r\n this.props.edit && <span><Fab size=\"small\" component=\"label\" style={{ color: '#0091ea' }} >\r\n <DropDownIcon /> <input type=\"button\" onClick={this.DownloadImage} name={this.props.name} hidden />\r\n </Fab>\r\n <Fab size=\"small\" component=\"label\" style={{ color: '#0091ea' }} >\r\n <DeleteIcon /> <input type=\"button\" onClick={this.RemoveImage} name={this.props.name} hidden />\r\n </Fab></span>\r\n\r\n }\r\n />\r\n }\r\n {!this.props.value && <GridListTileBar\r\n title={this.props.text}\r\n classes={{\r\n root: classes.titleBar,\r\n title: classes.title,\r\n }}\r\n actionIcon={\r\n this.props.edit && <Fab size=\"small\" component=\"label\" style={{ color: '#0091ea' }}>\r\n <CloudUploadIcon /> <input type=\"file\" name={this.props.name} onChange={this.props.imagesupload ? this.handleImageUpload : this.handleFileUpload} hidden />\r\n </Fab>\r\n }\r\n />\r\n }\r\n </GridListTile>\r\n </GridList>\r\n {this.props.helperText && <FormHelperText error={error} >{this.props.helperText}</FormHelperText>}\r\n {!this.props.imagesupload && this.props.edit && <span className=\"row col text-secondary\">Supported file type extensions are png and jpeg.</span>}\r\n {this.state.openConfirmation && <ConfirmationDialog value={this.state.openConfirmation} title=\"Are you sure you want to delete?\" onSubmit={this.ConfirmDelete} onClose={this.handleCancelDelete} />}\r\n </Fragment>\r\n )\r\n }\r\n}\r\n\r\nconst mapProps = (state) => {\r\n return state\r\n}\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage }, dispatch);\r\n}\r\n\r\nFileUpload = connect(null, mapActions)(FileUpload)\r\n\r\nexport default withStyles(styles)(FileUpload);\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { bindActionCreators } from 'redux';\r\nimport { GetData, PostData, PutData } from \"../../core/controls/helpers/requests\";\r\nimport { snackbarMessage } from '../../core/actions';\r\nimport FormHeader from '../../core/modules/form/cformheader';\r\nimport TemplateForm from '../../core/modules/template/template';\r\n\r\nclass TermsandConditions extends Component {\r\n\r\n constructor(props) {\r\n super(props); this.state = { editorState: null, result: {} };\r\n this.TemplateForm = React.createRef()\r\n }\r\n\r\n\r\n componentDidMount() {\r\n const { options } = this.props;\r\n const { editorState } = this.state;\r\n const { crud } = options;\r\n const { read, update } = crud;\r\n let url = read.get.url + this.props.dataItem['Id'];\r\n GetData(url).then(result => {\r\n if (result && result.Id) {\r\n this.setState({ resultExists: true, editorState: parseInt(atob(result.TermsAndConditionsStr)), result: result })\r\n }\r\n else this.setState({ editorState: null, resultExists: false })\r\n }).catch(error => {\r\n \r\n })\r\n }\r\n\r\n handleEditorTemplateId = (editorVal) => {\r\n this.handleSave(editorVal.id);\r\n }\r\n\r\n callTemplateSave = () => {\r\n this.TemplateForm.current.saveTemplate();\r\n }\r\n\r\n handleSave = (editorVal) => {\r\n const { options } = this.props;\r\n\r\n const { resultExists, result } = this.state;\r\n const { crud } = options;\r\n const { read, update } = crud;\r\n \r\n result.TermsAndConditionsStr = btoa(editorVal.toString());\r\n let url = ''\r\n if (!resultExists) {\r\n // \r\n if (this.props.options.tabprops) {\r\n url = update.put.url + this.props.dataItem['Id'] + '/Add';\r\n }\r\n else {\r\n url = update.put.url + this.props.match.params.routeid + '/Add';\r\n }\r\n PostData(url, result).then(res => {\r\n this.setState({ resultExists: false }) \r\n \r\n if (!this.props.options.tabprops) {\r\n this.props.onClose();\r\n }\r\n\r\n }).catch(error => {\r\n \r\n \r\n })\r\n }\r\n else {\r\n // \r\n if (this.props.options.tabprops) {\r\n url = update.put.url + this.props.dataItem['Id'] + '/Update';\r\n }\r\n else {\r\n url = update.put.url + this.props.match.params.routeid + '/Update';\r\n }\r\n PutData(url, result).then(res => {\r\n this.setState({ resultExists: false })\r\n \r\n \r\n if (!this.props.options.tabprops) {\r\n this.props.onClose();\r\n }\r\n\r\n }).catch(error => {\r\n \r\n \r\n })\r\n }\r\n\r\n }\r\n\r\n\r\n render() {\r\n const { options } = this.props;\r\n const { headerProps, title } = options;\r\n const { editorState, result } = this.state\r\n return (\r\n <div>\r\n <div className =\"\" Style= \"position: relative ; bottom: 12px\">\r\n <FormHeader title={title} handleSave={() => this.callTemplateSave()} savebutton={headerProps.savebutton} closebutton={headerProps.closebutton} handleClose={() => this.props.onClose()} designprops={options.designprops} />\r\n </div>\r\n <div>\r\n <TemplateForm templateId={editorState} isEnabled={true} mentions={null} entryData={null} showComments={false}\r\n hasSubject={false} ref={this.TemplateForm} handleTemplateId={(editorVal) => { this.handleEditorTemplateId(editorVal) }} isadmin={true} />\r\n </div>\r\n </div>\r\n )\r\n }\r\n}\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage }, dispatch);\r\n}\r\n\r\nTermsandConditions = connect(null, mapActions, null, { forwardRef: true })(TermsandConditions)\r\nexport default withRouter(TermsandConditions)","import { getEnvVariable } from \"../../../modules/environmentalList\"\r\n\r\nconst components = {\r\n \"components\": [{\r\n \"type\": \"formcontainer\",\r\n \"key\": \"attachform\",\r\n \"options\": {\r\n \"totalcolumns\": 2,\r\n \"totalrows\": 3,\r\n \"validations\": [\r\n {\r\n get: {\r\n \"url\": getEnvVariable('Sidebar')+`/api/ProjectMessages/RulesByName?name=modulemaster.attachments`\r\n },\r\n transformProps: {\r\n name: 'Key',\r\n subfieldname:getEnvVariable('ModuleKey')+`MODULEMASTER.ATTACHMENTS_`\r\n }\r\n }\r\n ],\r\n designprops :true,\r\n hidescroll :true\r\n },\r\n \"components\": [{\r\n \"type\": \"formdropdown\",\r\n \"key\": \"AttachmentTypeId\",\r\n \"options\": {\r\n \"label\": \"Attachment Type\",\r\n \"name\": \"AttachmentTypeId\",\r\n \"id\": \"attachmenttype\",\r\n \"width\": 12,\r\n \"crud\": {\r\n \"read\": {\r\n \"get\": {\r\n // \"url\": getEnvVariable('Admin')+`/api/AttachmentType/All/Active`\r\n \"url\": getEnvVariable('AdminConfig')+`/api/SitePermitTypeAttachments/SitePermitTypeAttachmentsTypes`,\r\n \"routeProps\": {\r\n \"value\": \"routeid\"\r\n }\r\n }\r\n }\r\n },\r\n \"transformProps\": {\r\n \"value\": \"Id\",\r\n \"name\": \"Name\"\r\n }\r\n\r\n }\r\n },\r\n {\r\n\r\n \"type\": \"formtextbox\",\r\n \"key\": \"note\",\r\n \"options\": {\r\n \"width\": 12,\r\n \"label\": \"Notes\",\r\n \"name\": \"Notes\"\r\n },\r\n \"inputProps\": {\r\n \"maxLength\": 4000\r\n }\r\n\r\n },\r\n ]\r\n },\r\n {\r\n \"type\": \"upload\",\r\n \"key\": \"attachmentupload\",\r\n \"options\": {\r\n \"label\": \"Upload\",\r\n \"name\": \"Upload\",\r\n \"width\": 12,\r\n\r\n }\r\n }\r\n ]\r\n}\r\nexport default components","import React, { Fragment, useEffect } from 'react';\r\n//import '@progress/kendo-theme-material/dist/all.css';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport ListItem from '@material-ui/core/ListItem';\r\nimport ListItemSecondaryAction from '@material-ui/core/ListItemSecondaryAction';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport DropDownIcon from '@material-ui/icons/VerticalAlignBottom';\r\nimport { ExternalDropZone, Upload, UploadFileStatus } from '@progress/kendo-react-upload';\r\nimport { OldPostMutiFormData } from '../../core/controls/helpers/requests';\r\nimport { requestApi } from '../../core/modules/form/utilities';\r\nimport { getEnvVariable } from '../environmentalList';\r\n\r\n\r\nexport default function S3Upload(props) {\r\n const { value, handleFieldValue, handleButtonClick, handleButtonSave, extraProps, changefieldto, shareProps, filetype, ...otherProps } = props\r\n const [files, setFiles] = React.useState([]);\r\n const [events, setEvents] = React.useState([]);\r\n const [filePreviews, setFilePreviews] = React.useState({});\r\n const [affectedFiles, setAffectedFiles] = React.useState([]);\r\n\r\n const uploadRef = React.createRef();\r\n\r\n\r\n const fileStatuses = [\r\n \"UploadFailed\",\r\n \"Initial\",\r\n \"Selected\",\r\n \"Uploading\",\r\n \"Uploaded\",\r\n \"RemoveFailed\",\r\n \"Removing\",\r\n ];\r\n\r\n const handleClick = (e) => {\r\n\r\n }\r\n\r\n const onAdd = (event) => {\r\n setFiles(event.newState);\r\n console.log(\"fiels here\", files)\r\n setEvents([...events, `File selected: ${event.affectedFiles[0].name}`]);\r\n setAffectedFiles(event.affectedFiles);\r\n if (props.onAddCallBack) {\r\n props.onAddCallBack(event.newState)\r\n }\r\n };\r\n\r\n const onCancel = (e) => {\r\n\r\n }\r\n\r\n const onProgress = (event) => {\r\n setFiles(event.newState);\r\n setEvents([...events, `On Progress: ${event.affectedFiles[0].progress} %`]);\r\n };\r\n\r\n\r\n const onRemove = (event) => {\r\n let newFilePreviews = { ...filePreviews };\r\n event.affectedFiles.forEach((file) => {\r\n delete newFilePreviews[file.uid];\r\n });\r\n setFiles(event.newState);\r\n setEvents([...events, `File removed: ${event.affectedFiles[0].name}`]);\r\n setFilePreviews(newFilePreviews);\r\n };\r\n\r\n const onStatusChange = (event) => {\r\n const file = event.affectedFiles[0];\r\n setFiles(event.newState);\r\n setEvents([\r\n ...events,\r\n `File '${file.name}' status changed to: ${fileStatuses[file.status]}`,\r\n ]);\r\n };\r\n\r\n const onRemoveRequest = (e) => {\r\n\r\n }\r\n const onSaveRequest = (e) => {\r\n\r\n }\r\n\r\n const onSuccess = (e) => {\r\n\r\n }\r\n\r\n React.useEffect(() => {\r\n affectedFiles\r\n .filter((file) => !file.validationErrors)\r\n .forEach((file) => {\r\n const reader = new FileReader();\r\n\r\n reader.onloadend = (ev) => {\r\n setFilePreviews({ ...filePreviews, [file.uid]: ev.target.result });\r\n };\r\n\r\n if (file && file.getRawFile) {\r\n reader.readAsDataURL(file.getRawFile());\r\n }\r\n });\r\n }, [affectedFiles, filePreviews]);\r\n\r\n useEffect(() => {\r\n if (props.canSave && files.length > 0) {\r\n console.log('AWS saving -------------')\r\n handleUploadClick();\r\n }\r\n }, [props.canSave])\r\n\r\n useEffect(() => {\r\n console.log('multiplefiles xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', props.passresults)\r\n }, [props.passresults])\r\n\r\n const handleUploadClick = (e) => {\r\n let realFiles = [];\r\n var formData = new FormData();\r\n //formData.set('files', files.map(file => file.getRawFile()));\r\n files.forEach(file => {\r\n realFiles.push(file.getRawFile())\r\n formData.append('files', file.getRawFile(), file.name);\r\n }) //remove 2\r\n OldPostMutiFormData({ post: { url: getEnvVariable('Sidebar') + `/api/FileSystem/2/Upload` } }, null, null, formData, true, \"Documents uploaded. Continue on save.\")\r\n .then(res => {\r\n console.log(res);\r\n if (props.attachmentDetailsCallBack) {\r\n props.attachmentDetailsCallBack(res);\r\n setFiles([])\r\n }\r\n //alert('document uploaded.')\r\n })\r\n }\r\n\r\n const downloadAttachments = (file) => {\r\n console.log('downloading the file', file);\r\n let fileModle = { FileName: '2_' + file.FileReference + file.FileType, Folder: 'Attachments' }\r\n requestApi({ post: { url: getEnvVariable('Sidebar') + `/api/FileSystem/2/Download` } }, null, fileModle, null, true, \"Document downloaded.\")\r\n .then(res => {\r\n console.log(res);\r\n\r\n })\r\n }\r\n\r\n const fileDescriptions = () => {\r\n let returnfiles = [];\r\n if (files) {\r\n returnfiles = [...returnfiles, ...files];\r\n }\r\n if (props.passresults && Array.isArray(props.passresults.AttachmentDetails)) {\r\n props.passresults.AttachmentDetails.map((file, i) => {\r\n returnfiles.push({\r\n name: file.FileName,\r\n extension: file.ContentType,\r\n size: file.Size,\r\n progress: 0,\r\n status: UploadFileStatus.Initial,\r\n uid: file.FileReference,\r\n })\r\n })\r\n }\r\n return returnfiles;\r\n }\r\n\r\n\r\n const saveUrl = getEnvVariable('Sidebar') + `/api/FileSystem/2/Upload`;\r\n const removeUrl = getEnvVariable('Sidebar') + `/api/FileSystem/2/Remove`;\r\n const attachFileExtensions = getEnvVariable('AttachmentExtensions') ? getEnvVariable('AttachmentExtensions').split(\",\") : [];\r\n const imageFileExtensions = getEnvVariable('ImageExtensions') ? getEnvVariable('ImageExtensions').split(\",\") : [];\r\n const allowedExtensions = props.filetype == \"Attachments\" ? attachFileExtensions : props.filetype == \"Images\" ? imageFileExtensions : [];\r\n let defaultFiles = fileDescriptions();\r\n return (\r\n <div >\r\n <ExternalDropZone uploadRef={uploadRef}\r\n customHint={<small className='text-secondary'>Drag and drop files here to upload .</small>}\r\n customNote={(Array.isArray(allowedExtensions) && allowedExtensions.length > 0) ?\r\n (<small className='text-secondary'> Only {allowedExtensions.join(\"| \")} formats are allowed. </small>) :\r\n (<small className='text-secondary'> No specific file extension restrictions added. Any formats are allowed. </small>)}\r\n />\r\n <Upload ref={uploadRef}\r\n batch={false}\r\n showActionButtons={false}\r\n withCredentials={false}\r\n saveUrl={saveUrl}\r\n removeUrl={removeUrl}\r\n autoUpload={false}\r\n restrictions={{\r\n allowedExtensions: allowedExtensions,\r\n }}\r\n onAdd={onAdd}\r\n onRemove={onRemove}\r\n onProgress={onProgress}\r\n onStatusChange={onStatusChange}\r\n defaultFiles={[]}\r\n files={files}\r\n\r\n />\r\n {props.passresults && Array.isArray(props.passresults.AttachmentDetails) && props.passresults.AttachmentDetails.map((file, i) => {\r\n return <Fragment>\r\n <ListItem key={i} dense >\r\n <ListItemText alignItems=\"flex-start\">{file.FileName || file.Id || 'Document ' + (i + 1)} </ListItemText>\r\n <ListItemSecondaryAction>\r\n <IconButton edge=\"end\" color=\"primary\" onClick={() => downloadAttachments(file)}>\r\n <DropDownIcon />\r\n </IconButton>\r\n {/* {this.props.edit && <IconButton edge=\"end\" color=\"secondary\" onClick={() => this.OpenConfirmationMessage(i)}>\r\n <RemoveIcon />\r\n </IconButton>} */}\r\n </ListItemSecondaryAction>\r\n </ListItem>\r\n </Fragment>\r\n })}\r\n {/* <button className=\"k-button\" onClick={handleUploadClick}>\r\n My custom upload button\r\n </button> */}\r\n {/* <div\r\n className={\"example-config\"}\r\n style={{\r\n marginTop: 20,\r\n }}\r\n >\r\n <ul className={\"event-log\"}>\r\n {events.map((event, index) => (\r\n <li key={index}>{event}</li>\r\n ))}\r\n </ul>\r\n </div> */}\r\n {props.filetype == \"Images\" && files.length ? (\r\n <div className={\"img-preview example-config\"}>\r\n <div>Preview selected images</div>\r\n {Object.keys(filePreviews).map((fileKey, index) => (\r\n <img\r\n src={filePreviews[fileKey]}\r\n alt={\"image preview\"}\r\n style={{\r\n width: 200,\r\n margin: 10,\r\n }}\r\n key={index}\r\n />\r\n ))}\r\n </div>\r\n ) : undefined}\r\n </div >\r\n );\r\n\r\n\r\n\r\n\r\n // const UploadWrapper = () => <Upload\r\n // batch={false}\r\n // multiple={true}\r\n // defaultFiles={[]}\r\n // withCredentials={false}\r\n // saveUrl={'https://demos.telerik.com/kendo-ui/service-v4/upload/save'}\r\n // removeUrl={'https://demos.telerik.com/kendo-ui/service-v4/upload/remove'}\r\n // />\r\n\r\n // const UploadWrapperProps = () => {\r\n // return <Upload\r\n // batch={false}\r\n // multiple={true}\r\n // defaultFiles={[]}\r\n // withCredentials={false}\r\n // //saveUrl={'https://demos.telerik.com/kendo-ui/service-v4/upload/save'}\r\n // //removeUrl={'https://demos.telerik.com/kendo-ui/service-v4/upload/remove'}\r\n // autoUpload={true}\r\n // onAdd={onAdd}\r\n // onCancel={onCancel}\r\n // onProgress={onProgress}\r\n // onRemove={onRemove}\r\n // onStatusChange={onStatusChange}\r\n // removeUrl={onRemoveRequest}\r\n // saveUrl={onSaveRequest}\r\n // />\r\n\r\n // }\r\n}","import { withStyles } from \"@material-ui/core/styles\";\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport { snackbarMessage } from '../../core/actions';\r\nimport { requestApi } from '../../core/modules/form/utilities';\r\nimport { getEnvVariable } from '../environmentalList';\r\nimport S3Upload from './S3Upload';\r\nconst _ = require('lodash');\r\n\r\nconst styles = theme => ({\r\n root: {\r\n display: \"flex\",\r\n flexWrap: \"wrap\",\r\n overflow: \"auto\",\r\n \"& > *\": {\r\n margin: theme.spacing(1),\r\n width: theme.spacing(120),\r\n height: theme.spacing(60)\r\n }\r\n }\r\n});\r\nclass MultipleFileUpload extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n this.handleFileUpload = this.handleFileUpload.bind(this);\r\n this.fileInput = React.createRef();\r\n this.state = {\r\n FileName: null,\r\n ContentStr: null,\r\n ContentType: null,\r\n multiplefiles: [],\r\n open: false,\r\n files: [],\r\n openconfirmation: false,\r\n deleteattachmentindex: null\r\n\r\n }\r\n\r\n }\r\n\r\n componentDidMount() {\r\n const { multiplefiles } = this.props\r\n if (multiplefiles && multiplefiles.length > 0) {\r\n this.setState({ multiplefiles: this.props.multiplefiles })\r\n }\r\n }\r\n\r\n componentDidUpdate(prevState, prevProps) {\r\n const { multiplefiles } = this.props\r\n if ((prevProps.multiplefiles !== this.props.multiplefiles)) {\r\n this.setState({ multiplefiles: this.props.multiplefiles })\r\n }\r\n }\r\n\r\n handleFileUpload = (event) => {\r\n let file = []\r\n event.preventDefault();\r\n const name = this.fileInput.current.files[0].name;\r\n const size = this.fileInput.current.files[0].size;\r\n this.toBase64(event)\r\n .then(result => {\r\n var e = {\r\n target: {\r\n name: name,\r\n value: result\r\n }\r\n }\r\n let attach = result.split(',')\r\n if (attach.length === 2)\r\n file.push({ ContentType: attach[0], ContentStr: attach[1], FileName: name, Size: size });\r\n let multiplefiles = [...this.state.multiplefiles, ...file];\r\n\r\n //500MB\r\n if (size > 500000000) {\r\n this.props.snackbarMessage('Uploading size exceeded 500MB', 'error')\r\n } else {\r\n this.setState({ multiplefiles: multiplefiles }, () => {\r\n this.props.handleAttachmentSet({ ContentType: attach[0], ContentStr: attach[1], FileName: name })\r\n })\r\n }\r\n\r\n }).catch(ex => console.log(ex));\r\n }\r\n\r\n toBase64 = (event) => {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(event.target.files[0]);\r\n reader.onload = () => resolve(reader.result);\r\n reader.onerror = error => reject(error);\r\n })\r\n };\r\n\r\n getUploadResult = () => {\r\n let res = this.state.multiplefiles;\r\n return res\r\n }\r\n\r\n handleDownload = (dFile, fileName) => {\r\n const downloadLink = document.createElement(\"a\");\r\n downloadLink.href = dFile;\r\n downloadLink.download = fileName;\r\n downloadLink.click();\r\n }\r\n\r\n OpenConfirmationMessage = (index) => {\r\n this.setState({ openconfirmation: true, deleteattachmentindex: index })\r\n }\r\n\r\n handleDelete = (e) => {\r\n const { multiplefiles, deleteattachmentindex } = this.state;\r\n\r\n let deletefile = multiplefiles.filter((m, i) => { return i == deleteattachmentindex })\r\n var deletefilearr = _.map(deletefile, function (a) {\r\n return { ...deletefile[0], Status: \"I\" };\r\n });\r\n let remFiles = multiplefiles.filter((m, i) => { return i !== deleteattachmentindex })\r\n var finalarr = _.concat(remFiles, deletefilearr);\r\n this.setState({ openconfirmation: false, deleteattachmentindex: null })\r\n this.props.handleDelete(remFiles, finalarr);\r\n }\r\n\r\n CloseConfirmationMessage = () => {\r\n this.setState({ openconfirmation: false, deleteattachmentindex: null })\r\n };\r\n\r\n CancelDelete = (e) => {\r\n this.setState({ openconfirmation: false, deleteattachmentindex: null })\r\n }\r\n\r\n download = (filename, result) => {\r\n let data = result.split(',')\r\n var element = document.createElement('a');\r\n element.setAttribute('href', result); //data:text/plain;base64,\r\n element.setAttribute('download', filename);\r\n element.style.display = 'none';\r\n document.body.appendChild(element);\r\n element.click();\r\n document.body.removeChild(element);\r\n }\r\n\r\n DownloadAttachment = (Name, ContentStr) => {\r\n const linkSource = ContentStr;\r\n const downloadLink = document.createElement(\"a\");\r\n const fileName = Name;\r\n downloadLink.href = linkSource;\r\n downloadLink.download = fileName;\r\n downloadLink.click();\r\n }\r\n zipAttachDownload = () => {\r\n const { archiveParentId, downloadAttachId } = this.props;\r\n requestApi({ get: { url: getEnvVariable('Application') + `/api/Attachments/${this.props.archiveParentId}/attachmentarchive/${this.props.downloadAttachId}` } })\r\n .then((results) => {\r\n this.download(results.result.FileName, results.result.ContentStr)\r\n })\r\n }\r\n\r\n viewAttachments = (Id, dFile, fileName) => {\r\n if (Id >= 0) {\r\n requestApi({ get: { url: getEnvVariable('Application') + `/api/Attachments/DownloadFile/${Id}` } })\r\n .then((results) => {\r\n this.DownloadAttachment(results.FileName, results.ContentStr)\r\n })\r\n }\r\n else {\r\n this.handleDownload(dFile, fileName);\r\n }\r\n }\r\n\r\n downloadAttachments = (Id, dFile, fileName) => {\r\n if (Id >= 0) {\r\n requestApi({ get: { url: getEnvVariable('Application') + `/api/Attachments/Download/${Id}` } })\r\n .then((result) => {\r\n if (result && result.FileId) {\r\n let downloadurl = getEnvVariable('Application') + `/api/Attachments/Downloadcontent/${result.FileId}`\r\n window.open(downloadurl, '_blank').focus();\r\n }\r\n })\r\n }\r\n else {\r\n this.handleDownload(dFile, fileName);\r\n }\r\n }\r\n\r\n\r\n render() {\r\n const { classes, ismultiple, zipDownload } = this.props;\r\n const { multiplefiles } = this.state\r\n return (\r\n <div className={classes.root}>\r\n <S3Upload {...this.props} filetype={\"Attachments\"} />\r\n {/* <S3NativeUpload {...this.props} filetype={\"Attachments\"}/> */}\r\n </div >\r\n );\r\n }\r\n}\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage }, dispatch);\r\n}\r\n\r\nMultipleFileUpload = connect(null, mapActions)(MultipleFileUpload)\r\n\r\nexport default withStyles(styles)(MultipleFileUpload);","import { getEnvVariable } from '../../../modules/environmentalList';\r\nimport newsavedreportstypes from '../../reports/savedreports';\r\nconst attachmenthistorygrid = {\r\n \"type\": \"grid\",\r\n \"key\": \"attachmentshistorygrid\",\r\n \"gridkey\": 'attachmentshistorygrid',\r\n \"order\": 1,\r\n \"options\": {\r\n sidepopupgridheight:true,\r\n \"stopRowClick\": true,\r\n \"routes\": [\r\n {\r\n \"route\": \"/Administration/applicationreview\",\r\n \"routeParams\": \":routeid\",\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \":routeid1\"\r\n },\r\n {\r\n \"route\": \"/attachments\",\r\n \"routeParams\": \":routeid2\"\r\n },\r\n {\r\n \"route\": \"/history\"\r\n }\r\n ],\r\n \"crud\": {\r\n \"update\": {\r\n \"link\": {\r\n // \"link\": \"/Administration/notes\",\r\n // \"matchProps\": {\r\n // \"value\": \"Id\"\r\n // }\r\n }\r\n },\r\n \"read\": {\r\n \"get\": {\r\n \"url\": getEnvVariable('Application')+`/api/${getEnvVariable('ModuleKey')}Attachment/history/{Id}`,\r\n \"customProps\": [{\r\n \"custom\": \"Id\"\r\n }]\r\n }\r\n }\r\n },\r\n \"back\": {\r\n\r\n \"routes\": [\r\n {\r\n \"route\": \"/Administration/applicationreview\",\r\n \"routeParams\": \"routeid\",\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid1\"\r\n },\r\n {\r\n \"route\": \"/attachments/view\",\r\n \"routeParams\": \"routeid2\"\r\n },\r\n ],\r\n },\r\n \"headerProps\": {\r\n designprops:true,\r\n \"title\": \"attachment\",\r\n \"breadcrumbs\": [\r\n { \"link\": \"Attachment History\", \"materialicon\": \"history\", className: 'eps-breadcrumb-item ', className: 'breadcrumb-item text-dark', class: 'text-dark' }\r\n ]\r\n },\r\n savedreports: {\r\n ...newsavedreportstypes\r\n },\r\n \"gridcolumns\": [\r\n {\r\n \"title\": \"Field Name\",\r\n \"field\": \"FieldLabel\",\r\n \"show\": true,\r\n width:185\r\n },\r\n {\r\n \"title\": \"Old Value\",\r\n \"field\": \"OldValue\",\r\n \"show\": true,\r\n width:185\r\n },\r\n {\r\n \"title\": \"New Value\",\r\n \"field\": \"NewValue\",\r\n \"show\": true,\r\n width:185\r\n },\r\n {\r\n \"title\": \"Updated By\",\r\n \"field\": \"CreatedByName\",\r\n \"show\": true,\r\n width:185\r\n },\r\n {\r\n \"title\": \"Updated On\",\r\n \"field\": \"CreatedOn\",\r\n \"show\": true,\r\n width:185\r\n },\r\n ]\r\n }\r\n}\r\nexport default attachmenthistorygrid","import React, { Fragment } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport InputLabel from '@material-ui/core/InputLabel'\r\nimport Radio from '@material-ui/core/Radio';\r\nimport RadioGroup from '@material-ui/core/RadioGroup';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport FormLabel from '@material-ui/core/FormLabel';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport MultipleFileUpload from '../Uploads/MultipleFileUpload.js';\r\nimport moment from 'moment';\r\nimport { requestApi } from '../../core/modules/form/utilities'\r\nimport Select from '@material-ui/core/Select';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport PropTypes from 'prop-types';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Tabs from '@material-ui/core/Tabs';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Box from '@material-ui/core/Box';\r\nimport historygrid from '../../json/common/attachments/attachmenthistory'\r\nimport Grid from '../../core/modules/Grid/cgrid'\r\nimport FormHeader from '../../core/modules/form/cformheader'\r\nimport { getEnvVariable } from '../environmentalList';\r\n\r\nfunction TabPanel(props) {\r\n const { children, value, index, ...other } = props;\r\n\r\n return (\r\n <Typography\r\n component=\"div\"\r\n role=\"tabpanel\"\r\n hidden={value !== index}\r\n id={`scrollable-force-tabpanel-${index}`}\r\n aria-labelledby={`scrollable-force-tab-${index}`}\r\n {...other}\r\n >\r\n {value === index && <Box p={3}>{children}</Box>}\r\n </Typography>\r\n );\r\n}\r\n\r\nTabPanel.propTypes = {\r\n children: PropTypes.node,\r\n index: PropTypes.any.isRequired,\r\n value: PropTypes.any.isRequired,\r\n};\r\n\r\nfunction a11yProps(index) {\r\n return {\r\n id: `scrollable-force-tab-${index}`,\r\n 'aria-controls': `scrollable-force-tabpanel-${index}`,\r\n };\r\n}\r\n\r\n\r\nclass ExtendFileAttachments extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n this.state = {\r\n getallattachementtypes: [], AttachmentTypeId: '', notes: '', AttachmentType: 'U', externallink: '', downloadContent: null, downloadName: null,\r\n ContentStr: null, ContentType: null, FileName: null, attachedfiles: [], firstIterate: true, tabvalue: 0,\r\n recordid: null, includeremovedfiles: []\r\n\r\n }\r\n if (this.props.updateAttachment) {\r\n this.attachmentComponentsArray = { ...historygrid };\r\n this.historygridjson = this.attachmentComponentsArray.options\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n const getallattachements = {\r\n get: {\r\n url: getEnvVariable('AdminConfig') + `` + `/api/SitePermitTypeAttachments/SitePermitTypeAttachmentsTypes/${this.props.match.params.routeid}`\r\n }\r\n }\r\n //const getallattachements = getEnvVariable('Admin')+`/api/SitePermitTypeAttachments/SitePermitTypeAttachmentsTypes/276`\r\n requestApi(getallattachements).then(results => {\r\n this.setState({\r\n getallattachementtypes: results,\r\n })\r\n })\r\n }\r\n\r\n componentDidUpdate(prevState, prevProps) {\r\n const { attachedfiles, firstIterate, recordid } = this.state\r\n if (prevProps.dataItem != this.props.dataItem) {\r\n if ((this.props.passresults) && (recordid != this.props.passresults.Id)) {\r\n this.setState({\r\n recordid: this.props.dataItem.Id,\r\n attachedfiles: this.props.passresults.AttachmentDetails,\r\n includeremovedfiles: this.props.passresults.AttachmentDetails,\r\n AttachmentType: this.props.passresults.AttachmentType,\r\n notes: this.props.passresults.Notes,\r\n AttachmentTypeId: this.props.passresults.AttachmentTypeId,\r\n }, () => this.getResult())\r\n }\r\n }\r\n }\r\n\r\n\r\n getResult = () => {\r\n let files = []\r\n if (this.state.AttachmentType === 'U') {\r\n let attachment = {}\r\n attachment.AttachmentTypeIdVal = this.state.AttachmentTypeId;\r\n attachment.notesVal = this.state.notes;\r\n this.props.getallresultsInfo(attachment)\r\n }\r\n else if (this.state.AttachmentType === 'P') {\r\n let attachment = {}\r\n attachment.AttachmentTypeIdVal = this.state.AttachmentTypeId;\r\n attachment.notesVal = this.state.notes;\r\n this.props.getallresultsInfo(files, attachment)\r\n }\r\n\r\n }\r\n\r\n\r\n // RemoveImage = (event) => {\r\n // var e = {\r\n // target: {\r\n // name: event.target.name,\r\n // value: \"\"\r\n // }\r\n // }\r\n // this.props.handleFieldChange(e)\r\n // }\r\n\r\n // handleAttachmentSet = (uploadResults) => {\r\n // const { AttachmentType, externallink, attachedfiles, includeremovedfiles } = this.state\r\n // let newattachedfile = [];\r\n // let newfile = [];\r\n // newattachedfile.push(attachedfiles);\r\n // newfile.push(includeremovedfiles);\r\n // let res = { AttachmentType: AttachmentType, externallink: externallink, ...uploadResults }\r\n // newfile.push(res);\r\n // let finalincluderemovedfiles = _.flattenDeep(newfile);\r\n // newattachedfile.push(res);\r\n // let finalattachedfiles = _.flattenDeep(newattachedfile);\r\n // this.setState({ attachedfiles: finalattachedfiles, includeremovedfiles: finalincluderemovedfiles }, () => this.getResult())\r\n // }\r\n\r\n handleDelete = (newattachedfile, allfile) => {\r\n this.setState({ attachedfiles: newattachedfile, includeremovedfiles: allfile }, () => this.getResult())\r\n }\r\n\r\n handleFieldChange = name => event => {\r\n this.setState({ [name]: event.target.value }, () => this.getResult());\r\n }\r\n\r\n handleChange = (event, newValue) => {\r\n this.setState({ tabvalue: newValue })\r\n }\r\n\r\n render() {\r\n const { passresults, updateAttachment, editformat, classes, archiveParentId, docmissing, urlmissing, urlhelpertext, typemissing, dataItem } = this.props\r\n const { AttachmentType, externallink, attachedfiles, AttachmentTypeId, notes, getallattachementtypes, tabvalue } = this.state;\r\n return (\r\n <div>\r\n {this.props.updateAttachment && <AppBar position=\"static\" color=\"white\">\r\n <Tabs\r\n value={tabvalue}\r\n onChange={this.handleChange}\r\n indicatorColor=\"primary\"\r\n textColor=\"primary\"\r\n variant=\"scrollable\"\r\n scrollButtons=\"on\"\r\n aria-label=\"scrollable auto tabs example\"\r\n >\r\n <Tab label=\"View/Edit Attachment\" {...a11yProps(0)} />\r\n <Tab label=\"Attachment History\" {...a11yProps(1)} />\r\n\r\n </Tabs>\r\n </AppBar>}\r\n\r\n <TabPanel value={tabvalue} index={0}>\r\n <div className=\"col \" style={{ marginLeft: \"18px\" }}>\r\n {this.props.updateAttachment && <FormHeader className=\"row\" savebutton={true} editbutton={false} handleEdit={this.props.handleEdit} handleSave={this.props.handleSave} designprops={true} />}\r\n <FormControl component=\"fieldset\" className=\"col pl-1\">\r\n <InputLabel shrink required={true}>Attachment Type</InputLabel>\r\n <Select\r\n value={!passresults ? AttachmentTypeId : passresults.AttachmentTypeId}\r\n //value={AttachmentTypeId || passresults.AttachmentTypeId}\r\n onChange={this.handleFieldChange('AttachmentTypeId')}\r\n className=\"float-md-right col-sm-6\"\r\n disabled={this.props.updateAttachment ? true : false}\r\n >\r\n <MenuItem value=\"\"> None </MenuItem>\r\n {getallattachementtypes && getallattachementtypes.map(menu => {\r\n return <MenuItem value={menu.Id}> {menu.Name} </MenuItem>\r\n })}\r\n </Select>\r\n {typemissing && <div style={{ color: \"#F44336\" }}>\r\n <Typography variant=\"caption\" display=\"block\" gutterBottom>\r\n Please Select Attachment Type\r\n </Typography>\r\n </div>}\r\n <TextField\r\n label=\"Notes\"\r\n className={'col-sm-6'}\r\n // helperText=\"Please enter valid Url\"\r\n value={notes}\r\n\r\n // value={notes || passresults.Notes}\r\n onChange={this.handleFieldChange('notes')}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n <FormLabel className=\"pt-3\"><small >Select Document Type</small> {<small className=\"text-warning\"> (Changing the document type will remove the added information)</small>}</FormLabel>\r\n <RadioGroup value={AttachmentType || 'U'} onChange={this.handleFieldChange('AttachmentType')} >\r\n <div>\r\n <FormControlLabel className=\"row col-12 \" value=\"U\" control={<Radio />} label={<Box component=\"div\" fontSize={12}>\r\n Upload Digital Document\r\n </Box>} disabled={this.props.updateAttachment ? true : false} />\r\n <FormControlLabel className=\"row col-12 \" value=\"L\" control={<Radio />} label={<Box component=\"div\" fontSize={12}>\r\n External Link\r\n </Box>} disabled={this.props.updateAttachment ? true : false} />\r\n <FormControlLabel className=\"row col-12 \" value=\"P\" control={<Radio />} label={<Box component=\"div\" fontSize={12}>\r\n Physical Paper Document\r\n </Box>} disabled={this.props.updateAttachment ? true : false} />\r\n </div>\r\n </RadioGroup>\r\n </FormControl>\r\n {(this.state.AttachmentType === \"U\") && <div className={\"row col-sm-12\"}>\r\n {docmissing && <div style={{ color: \"#F44336\" }}>\r\n <Typography variant=\"caption\" display=\"block\" gutterBottom>\r\n Please upload atleast one document\r\n </Typography>\r\n\r\n </div>}\r\n {!passresults && <InputLabel shrink required={true}>Upload Documents</InputLabel> && <MultipleFileUpload updateAttachment={updateAttachment} stateprops={this.state}\r\n multiplefiles={attachedfiles} handleDelete={this.handleDelete} handleAttachmentSet={this.handleAttachmentSet} />}\r\n {passresults && <InputLabel shrink required={true}>Upload Documents</InputLabel> && <MultipleFileUpload updateAttachment={updateAttachment} stateprops={this.state}\r\n multiplefiles={attachedfiles} handleDelete={this.handleDelete} handleAttachmentSet={this.handleAttachmentSet} zipDownload={true}\r\n archiveParentId={this.props.archiveParentId} downloadAttachId={this.props.passresults.Id} />}\r\n </div>}\r\n {this.state.AttachmentType === \"L\" &&\r\n <div>\r\n <TextField\r\n label=\"URL\"\r\n required={true}\r\n className={'col-sm-6'}\r\n // helperText=\"Please enter valid Url\"\r\n value={externallink}\r\n onChange={this.handleFieldChange('externallink')}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n {urlmissing && <div style={{ color: \"#F44336\" }}>\r\n <Typography variant=\"caption\" display=\"block\" gutterBottom>Please enter URL</Typography>\r\n </div>}\r\n {urlhelpertext && <div style={{ color: \"#F44336\" }}>\r\n <Typography variant=\"caption\" display=\"block\" gutterBottom>{urlhelpertext}</Typography>\r\n </div>}\r\n </div>\r\n }\r\n\r\n\r\n {passresults && <div className=\"row pt-3\">\r\n <div className=\"col-12\"> <div className=\"col-sm-6 float-md-right\" style={{ color: '#6C757D', fontSize: '12px' }}><span style={{ color: '#6C757D', fontSize: '12px' }}>Created By : </span> {passresults.CreatedByName}</div>\r\n <div className=\"col-sm-6 \" style={{ color: '#6C757D', fontSize: '12px' }}><span style={{ color: '#6C757D', fontSize: '12px' }}>Created On : </span> {moment(passresults.CreatedOn).format('MM/DD/YYYY hh:mm:ss A')}</div>\r\n </div>\r\n <div className=\"col-12\">\r\n {passresults.UpdatedBy === null ? ('') : (<div className=\"col-sm-6 float-md-right\" style={{ color: '#6C757D', fontSize: '12px' }}><span style={{ color: '#6C757D', fontSize: '12px' }}>Updated By : </span> {passresults.UpdatedByName}</div>)}\r\n {passresults.UpdatedOn === null ? ('') : (<div className=\"col-sm-6\" style={{ color: '#6C757D', fontSize: '12px' }}><span style={{ color: '#6C757D', fontSize: '12px' }}>Updated On : </span> {moment(passresults.UpdatedOn).format('MM/DD/YYYY hh:mm:ss A')}</div>)}\r\n </div>\r\n </div>}\r\n </div>\r\n </TabPanel>\r\n <TabPanel value={tabvalue} index={1}>\r\n <Grid options={this.historygridjson} dataItem={dataItem} />\r\n </TabPanel>\r\n </div>\r\n )\r\n }\r\n}\r\nexport default withRouter(ExtendFileAttachments)","import React, { Component, Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { bindActionCreators } from 'redux';\r\nimport { GetData, PostData, PutData } from '../../core/controls/helpers/requests';\r\nimport { snackbarMessage } from '../../core/actions';\r\nimport { getEnvVariable } from '../environmentalList';\r\nimport FormHeader from '../../core/modules/form/cformheader';\r\nimport { requestApi } from '../../core/modules/form/utilities';\r\nimport atComponents from '../../json/common/attachments/attachmentComponents';\r\nimport ExtendedAttachment from './attachmentextend';\r\n\r\nexport const fetchData = (requestType, url, queryParam, body) => {\r\n const queryStr = queryParam != null ? `${url}?${queryParam}` : `${url}`\r\n if (requestType == \"GET\") {\r\n return GetData(queryStr);\r\n }\r\n else if (requestType == \"POST\") {\r\n return PostData(queryStr, body);\r\n }\r\n else if (requestType == \"PUT\")\r\n return PutData(queryStr, body);\r\n}\r\n\r\nconst addbreadcrumbs = [\r\n { \"link\": \"Add Attachments\", \"materialicon\": \"attach_file\", className: 'eps-breadcrumb-item', class: 'text-light' }\r\n]\r\n\r\nconst editbreadcrumbs = [\r\n { \"link\": \"Edit Attachments\", \"materialicon\": \"attach_file\", className: 'eps-breadcrumb-item', class: 'text-light' }\r\n]\r\n\r\n\r\nclass FileAttachments extends Component {\r\n constructor(props) {\r\n super(props)\r\n const { read, update } = props.options.crud\r\n let saveUrl = '', removeUrl = '';\r\n console.log(\"here\")\r\n if (update) {\r\n const { post } = update\r\n const { url, routeProps, matchProps } = post\r\n saveUrl = url\r\n removeUrl = url;\r\n routeProps.forEach(each => {\r\n const { value } = each\r\n saveUrl.replace(`{${value}}`, this.props.match.params[value])\r\n });\r\n matchProps.forEach(each => {\r\n const { value } = each\r\n saveUrl.replace(`{${value}}`, this.props[value])\r\n });\r\n }\r\n this.state = {\r\n AttachmentTypeId: this.props.AttachmentTypeId || 0,\r\n Id: 0,\r\n attachmentTypedd: [],\r\n saveUrl: saveUrl || '',\r\n removeUrl: removeUrl || '',\r\n parentId: this.props.parentId || this.props.match.params.routeid1 || this.props.customprops,\r\n uploadedAttachments: [],\r\n updateAttachment: this.props.options.updateAttachment || false,\r\n selecttype: '',\r\n snackbarmessage: '',\r\n passresults: null,\r\n editformat: false,\r\n noteWizard: '',\r\n attachmentTypeWizard: '',\r\n wizardView: false,\r\n docmissing: false,\r\n typemissing: false,\r\n urlmissing: false,\r\n Attachemntresults: null,\r\n urlhelpertext: null\r\n\r\n\r\n }\r\n this.componentsArray = { ...atComponents };\r\n this.url1 = getEnvVariable('Application') + `/api/Attachments/${this.props.match.params.routeid1}/attachment/${this.props.match.params.routeid2}`;\r\n this.url2 = getEnvVariable('Admin') + `/api/AttachmentType/All/Active`;\r\n this.LayoutForm = React.createRef()\r\n }\r\n\r\n componentDidMount() {\r\n this.didmountinitialload();\r\n }\r\n\r\n didmountinitialload() {\r\n const { options, components, extraProps, dataItem } = this.props\r\n const { crud, validations } = options ? options : {}\r\n const { read } = crud ? crud : {}\r\n const { get } = read ? read : {}\r\n const { routeProps, hidepath } = get ? get : {}\r\n // if (this.props.match.path === '/Administration/applicationreview/:routeid/:routeid1/attachments/view/:routeid2' || this.props.options.ViewWizardAttachment) {\r\n // requestApi({ get: { url: getEnvVariable('Application')+`/api/Attachments/${this.props.match.params.routeid1 || this.state.parentId || this.props.customprops}/attachment/${this.props.match.params.routeid2 || dataItem.Id}` } }, this.props.match.params.routeid2, null).then(results => {\r\n // this.setState({\r\n // passresults: results, wizardView: true,\r\n // })\r\n // })\r\n // }\r\n\r\n if (this.props.options.updateAttachment) {\r\n requestApi({ get: { url: getEnvVariable('Application') + `/api/Attachments/${this.props.match.params.routeid1 || this.state.parentId || this.props.customprops}/attachment/${this.props.match.params.routeid2 || this.props.dataItem.Id}` } }, this.props.dataItem.Id, null).then(results => {\r\n this.setState({\r\n passresults: results, wizardView: true\r\n })\r\n })\r\n }\r\n\r\n }\r\n\r\n handleEdit = () => {\r\n this.setState({ editformat: true });\r\n }\r\n handleBack = () => {\r\n this.props.onClose();\r\n }\r\n\r\n\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevProps.dataItem != this.props.dataItem) {\r\n this.didmountinitialload();\r\n }\r\n }\r\n\r\n handleSave = () => {\r\n const { options, customprops, formgridadd, WizardAttachment } = this.props;\r\n const { crud } = options;\r\n const { read, update } = crud;\r\n const { passresults } = this.state\r\n let editorValResults = this.state.Attachemntresults\r\n\r\n if (editorValResults == null) {\r\n this.setState({ typemissing: true })\r\n }\r\n else if (editorValResults && editorValResults.AttachmentDetails && editorValResults.AttachmentDetails.length > 0 && editorValResults.AttachmentDetails[0].AttachmentType && editorValResults.AttachmentDetails[0].AttachmentType === 'L' && (editorValResults.AttachmentDetails[0].externallink === null || editorValResults.AttachmentDetails[0].externallink === undefined || editorValResults.AttachmentDetails[0].externallink === \"\")) {\r\n this.setState({ urlmissing: true, docmissing: false })\r\n }\r\n else if (editorValResults && editorValResults.AttachmentDetails && editorValResults.AttachmentDetails.length == 0) {\r\n this.setState({ docmissing: true, urlmissing: false, urlhelpertext: null })\r\n }\r\n else if (editorValResults && editorValResults.AttachmentDetails && editorValResults.AttachmentDetails.length > 0 && editorValResults.AttachmentDetails[0].AttachmentType && editorValResults.AttachmentDetails[0].AttachmentType === 'U') {\r\n let attach = editorValResults.AttachmentDetails;\r\n let attachcount = editorValResults.AttachmentDetails.length\r\n let inactivecount = attach.filter((obj) => obj.Status === \"I\").length;\r\n if (attachcount == inactivecount) {\r\n this.setState({ docmissing: true, urlmissing: false, urlhelpertext: null })\r\n }\r\n else {\r\n this.handlefinalSave();\r\n }\r\n }\r\n else {\r\n this.handlefinalSave();\r\n }\r\n }\r\n\r\n handlefinalSave = () => {\r\n const { options, customprops, formgridadd, WizardAttachment } = this.props;\r\n const { crud } = options;\r\n const { read, update } = crud;\r\n const { passresults } = this.state\r\n let editorValResults = this.state.Attachemntresults\r\n\r\n if (editorValResults && editorValResults.AttachmentTypeId && !this.state.urlhelpertext && !this.state.docmissing && !this.state.urlmissing) {\r\n //editorValResults.AttachmentDetails = editorValResults\r\n if (editorValResults && this.props.options.updateAttachment) {\r\n let dfinalresults = { ...passresults, ...editorValResults }\r\n requestApi({ post: { url: getEnvVariable('Application') + `/api/Attachments/${this.state.parentId}/UploadFiles` } }, null, dfinalresults)\r\n .then(res => {\r\n this.setState({ AttachmentTypeId: dfinalresults.AttachmentTypeId })\r\n })\r\n }\r\n else if (editorValResults) {\r\n requestApi({ post: { url: getEnvVariable('Application') + `/api/Attachments/${this.state.parentId}/UploadFiles` } }, null, editorValResults)\r\n .then(res => {\r\n this.setState({ AttachmentTypeId: editorValResults.AttachmentTypeId }, () => {\r\n this.props.onClose();\r\n })\r\n })\r\n }\r\n }\r\n // else this.setState({ customSave: true })\r\n\r\n }\r\n\r\n getState = (state) => { // this will trigger always\r\n let formresults = { Notes: state.results.Notes, AttachmentTypeId: (state.results.AttachmentTypeId) || null, Id: (state.results.Id) }\r\n this.setState({ finalresults: formresults })\r\n }\r\n\r\n\r\n handleCustomSave = () => {\r\n this.setState({ customSave: false })\r\n }\r\n\r\n getallresultsInfo = (files, attachment) => {\r\n //console.log(state);\r\n\r\n\r\n const Notes = attachment.notesVal\r\n let AttachmentDetails = files\r\n if (files && files[0].attachedfiles) {\r\n AttachmentDetails = files[0].attachedfiles\r\n }\r\n // if (AttachmentDetails && AttachmentDetails[0] && AttachmentDetails[0].AttachmentType && AttachmentDetails[0].AttachmentType == 'U' && AttachmentDetails[0].ContentStr) {\r\n // let urlValue = AttachmentDetails[0].externallink\r\n // let exp = new RegExp(\"^(http[s]?:\\\\/\\\\/(www\\\\.)?|ftp:\\\\/\\\\/(www\\\\.)?|(www\\\\.)?){1}([0-9A-Za-z-\\\\.@:%_\\+~#=]+)+((\\\\.[a-zA-Z]{2,3})+)(/(.)*)?(\\\\?(.)*)?\");\r\n // if (!exp.test(urlValue)) {\r\n // this.setState({ urlhelpertext: 'URL is not valid', urlmissing: false })\r\n // }\r\n // else {\r\n // this.setState({ urlhelpertext: null, urlmissing: false })\r\n // }\r\n\r\n // }\r\n const AttachmentTypeId = attachment.AttachmentTypeIdVal\r\n if (AttachmentTypeId != \"\") {\r\n this.setState({ typemissing: false })\r\n }\r\n if (AttachmentDetails && AttachmentDetails[0] && AttachmentDetails[0].externallink && AttachmentDetails[0].externallink != '') {\r\n let urlValue = AttachmentDetails[0].externallink\r\n let exp = new RegExp(\"^(http[s]?:\\\\/\\\\/(www\\\\.)?|ftp:\\\\/\\\\/(www\\\\.)?|(www\\\\.)?){1}([0-9A-Za-z-\\\\.@:%_\\+~#=]+)+((\\\\.[a-zA-Z]{2,3})+)(/(.)*)?(\\\\?(.)*)?\");\r\n if (!exp.test(urlValue)) {\r\n this.setState({ urlhelpertext: 'URL is not valid', urlmissing: false })\r\n }\r\n else {\r\n this.setState({ urlhelpertext: null, urlmissing: false })\r\n }\r\n\r\n }\r\n else {\r\n this.setState({ urlhelpertext: null, urlmissing: false, docmissing: false })\r\n }\r\n const Dataresult = { AttachmentDetails, Notes, AttachmentTypeId }\r\n this.setState({ Attachemntresults: Dataresult })\r\n }\r\n\r\n render() {\r\n const { options, compmap, dataItem, WizardAttachment, onFullScreen, onExitFullScreen, fullscreen, exitfullscreen, onNextItemClick, onPrevItemClick } = this.props;\r\n const { validations, updateAttachment } = options;\r\n const { customSave } = this.state\r\n return (\r\n <Fragment>\r\n {!this.props.hideheader && !this.props.WizardAttachment && <FormHeader className=\"row\" savebutton={this.props.options.updateAttachment ? false : true} backbutton={true}\r\n handleSave={this.handleSave} breadcrumbs={this.props.options.updateAttachment ? editbreadcrumbs : addbreadcrumbs} handleEdit={this.handleEdit} handleBack={this.handleBack}\r\n onFullScreen={onFullScreen} onExitFullScreen={onExitFullScreen} fullscreen={fullscreen} exitfullscreen={exitfullscreen} dataItem={dataItem} navigateup={this.props.options.updateAttachment ? true : false} navigatedown={this.props.options.updateAttachment ? true : false}\r\n onNextItemClick={onNextItemClick} onPrevItemClick={onPrevItemClick} />}\r\n {/* <div className={dataItem || WizardAttachment ? \"col-sm-12\" : \"col-sm-6\"}>\r\n <CForm {...this.props} customId={this.props.customId} compmap={compmap} components={!this.props.options.updateAttachment ? this.componentsArray.components[0].components : viewapplicationattachments.components[0].components} getState={this.getState} validations={validations}\r\n options={options} results={this.state.passresults} customSave={customSave} handleCustomSave={this.handleCustomSave} />\r\n </div> */}\r\n <ExtendedAttachment ref={this.LayoutForm} getallresultsInfo={this.getallresultsInfo} classes={dataItem || WizardAttachment ? true : false} AttachmentTypeId={this.state.AttachmentTypeId} atUploadOptions={this.atUploadOptions} passresults={this.state.passresults} updateAttachment={this.props.options.updateAttachment} editformat={this.state.editformat} archiveParentId={this.props.match.params.routeid1} docmissing={this.state.docmissing} urlmissing={this.state.urlmissing} urlhelpertext={this.state.urlhelpertext} typemissing={this.state.typemissing} handleSave={this.handleSave} handleEdit={this.handleEdit} dataItem={this.props.dataItem} />\r\n </Fragment>\r\n )\r\n }\r\n}\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage }, dispatch);\r\n}\r\n\r\nFileAttachments = connect(null, mapActions)(FileAttachments)\r\nexport default withRouter(FileAttachments)","import { getEnvVariable } from \"../../../modules/environmentalList\"\r\n\r\nconst components = {\r\n \"components\":[{\r\n \"type\": \"formdropdown\",\r\n \"key\": \"imageType\",\r\n \"options\": {\r\n \"label\": \"image Type\",\r\n \"name\": \"imagetype\",\r\n \"id\": \"imagetype\",\r\n \"width\": 6,\r\n \"crud\": {\r\n \"read\": {\r\n \"get\": {\r\n \"url\": getEnvVariable('Admin')+`/api/imageType/All/Active`\r\n }\r\n }\r\n },\r\n \"transformProps\": {\r\n \"value\": \"Id\",\r\n \"name\": \"Name\"\r\n }\r\n\r\n }\r\n },\r\n {\r\n \"type\": \"upload\",\r\n \"key\": \"imageupload\",\r\n \"options\": {\r\n \"label\": \"Upload\",\r\n \"name\": \"Upload\",\r\n \"width\": 10,\r\n }\r\n }]\r\n}\r\nexport default components","import IconButton from '@material-ui/core/IconButton';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport List from '@material-ui/core/List';\r\nimport ListItem from '@material-ui/core/ListItem';\r\nimport ListItemSecondaryAction from '@material-ui/core/ListItemSecondaryAction';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport DownloadIcon from '@material-ui/icons/CloudDownload';\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport React, { Fragment } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { GetData, PostData, PutData } from '../../core/controls/helpers/requests';\r\nimport { getEnvVariable } from '../environmentalList';\r\nimport CFormDropDown from '../../core/modules/form/cformdropdown';\r\nimport CUpload from '../../core/modules/form/cupload';\r\nimport atComponents from '../../json/common/Images/ImagesComponents';\r\n\r\nexport const fetchData = (requestType, url, queryParam, body) => {\r\n\r\n const queryStr = queryParam != null ? `${url}?${queryParam}` : `${url}`\r\n\r\n if (requestType === \"GET\") {\r\n return GetData(queryStr);\r\n }\r\n else if (requestType === \"POST\") {\r\n return PostData(queryStr, body);\r\n }\r\n else if (requestType === \"PUT\")\r\n return PutData(queryStr, body);\r\n}\r\n\r\n\r\nclass FileImages extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n const { read, update } = props.options.crud\r\n\r\n let saveUrl = '', removeUrl = '';\r\n console.log(\"here\")\r\n if (update) {\r\n const { post } = update\r\n const { url, routeProps, matchProps } = post\r\n saveUrl = url\r\n removeUrl = url;\r\n routeProps.forEach(each => {\r\n const { value } = each\r\n saveUrl.replace(`{${value}}`, this.props.match.params[value])\r\n });\r\n matchProps.forEach(each => {\r\n const { value } = each\r\n saveUrl.replace(`{${value}}`, this.props[value])\r\n });\r\n }\r\n\r\n this.state = {\r\n imageTypeId: this.props.imageTypeId || 0,\r\n imageId: 0,\r\n imageTypedd: [],\r\n saveUrl: saveUrl || '',\r\n removeUrl: removeUrl || '',\r\n parentId: this.props.ParentId || this.props.match.params.routeid1,\r\n uploadedimages: [],\r\n updateimage: this.props.options.updateimage || false\r\n }\r\n this.componentsArray = { ...atComponents };\r\n this.atTypeOptions = this.componentsArray.components.find(x => x.key === \"imageType\").options;\r\n this.atUploadOptions = this.componentsArray.components.find(x => x.key === \"imageupload\").options;\r\n this.url1 = getEnvVariable('Application')+`/api/Images/${this.props.match.params.routeid1}/image/${this.props.match.params.routeid2}`;\r\n this.url2 = getEnvVariable('Admin')+`/api/ImageType/All/Active`;\r\n }\r\n handleFieldChange = (e) => {\r\n console.log(e)\r\n let sUrl = getEnvVariable('Application')+`/api/Images/${this.props.match.params.routeid1}/UploadFiles?imageId=0&imageTypeId=${e.target.value}`;\r\n this.setState({ imageTypeId: e.target.value, saveUrl: sUrl })\r\n }\r\n componentDidMount() {\r\n\r\n fetchData('GET', this.url2, null, null)\r\n\r\n .then(data => this.setState({\r\n imageTypedd: data,\r\n },() => {\r\n //Fetching data for\r\n if (this.state.updateimage) {\r\n fetchData('GET', this.url1, null, null)\r\n\r\n .then(data1 => this.setState({\r\n imageTypeId: data1.imageTypeId,\r\n uploadedimages: data1.imageDetails,\r\n saveUrl: getEnvVariable('Application')+`/api/${this.props.match.params.routeid1}/UploadFiles?imageid=${this.props.match.params.routeid2}&imagetypeid=${data.imageTypeId}`\r\n }))\r\n }\r\n }))\r\n }\r\n onStatusChange = (e) => {\r\n console.log(e)\r\n }\r\n render() {\r\n return (\r\n <Fragment>\r\n <div className=\"col-12\">\r\n <CFormDropDown value={this.state.imageTypeId} {...this.atTypeOptions}\r\n handleFieldChange={this.handleFieldChange} dropdownvalues={this.state.imageTypedd} />\r\n\r\n {this.state.imageTypeId > 0 &&\r\n <Fragment>\r\n\r\n <List>\r\n {this.state.updateimage ? this.state.uploadedimages.map(each => {\r\n const { FileName, Id, imageId, } = each\r\n console.log(each)\r\n return <ListItem>\r\n <ListItemText\r\n primary={FileName}\r\n />\r\n <img src={`data:${each.ContentType};base64,${each.ContentStr}`} height ={200} width={200} />\r\n <ListItemSecondaryAction>\r\n <IconButton aria-label=\"Download\">\r\n <DownloadIcon />\r\n </IconButton>\r\n <IconButton aria-label=\"Delete\">\r\n <DeleteIcon />\r\n </IconButton>\r\n </ListItemSecondaryAction>\r\n </ListItem>\r\n }) : <div></div>}\r\n\r\n\r\n </List>\r\n\r\n <InputLabel htmlFor=\"my-input\" className=\"mt-5\">Upload Files</InputLabel>\r\n <CUpload saveUrl={this.state.saveUrl} removeUrl={this.state.removeUrl}\r\n imageTypeId={this.state.imageTypeId} {...this.atUploadOptions}\r\n onStatusChange={this.onStatusChange} batch={false} multiple={false} />\r\n </Fragment>\r\n }\r\n\r\n </div>\r\n\r\n </Fragment>\r\n )\r\n }\r\n}\r\nexport default withRouter(FileImages);","import React from 'react';\r\nimport Button from '@material-ui/core/Button';\r\nimport { withRouter } from \"react-router-dom\";\r\nimport Icon from '@material-ui/core/Icon';\r\n\r\nclass GridButton extends React.Component {\r\n handleClickOpen = () => {\r\n const { link } = this.props.options;\r\n let path = '';\r\n link.forEach(each => {\r\n const { route, routeParams, customParams } = each\r\n if (routeParams || customParams) {\r\n const id = routeParams ? this.props.match.params[routeParams] : this.props.dataItem.Id;\r\n path += route + \"/\" + id\r\n }\r\n else {\r\n path += route\r\n }\r\n\r\n })\r\n this.props.history.push(`${path}`)\r\n };\r\n\r\n render() {\r\n const { options, type, actions, compmap, components, edit, parentProps } = this.props;\r\n const { id, name, dialogtitle, buttonprops, dialogprops, ...otherOptions } = options ? options : {}\r\n const { text, icon, color, disabled, size, variant, ...otherButtonProps } = buttonprops ? buttonprops : {}\r\n let iconname, iconColor, iconFontSize, iconposition, otherIconProps\r\n if (icon) {\r\n iconname = icon.iconname\r\n iconColor = icon.iconColor\r\n iconFontSize = icon.iconFontSize\r\n }\r\n let disable = disabled\r\n if (edit === false) {\r\n disable = true\r\n }\r\n return (\r\n <div>\r\n <Button onClick={this.handleClickOpen}\r\n color={!disable ? color : 'secondary'}\r\n disabled={disable}\r\n size={size}\r\n variant={variant}\r\n {...otherButtonProps}\r\n >\r\n {text}\r\n {(iconposition === 'left') && <Icon\r\n color={iconColor || 'inherit'} fontSize={iconFontSize || 'default'} {...otherIconProps}>{iconname}\r\n </Icon>\r\n }\r\n {iconposition && !(iconposition === 'left') && <Icon\r\n color={iconColor || 'inherit'} fontSize={iconFontSize || 'default'} {...otherIconProps}>{iconname}\r\n </Icon>\r\n }\r\n </Button>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(GridButton);\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { bindActionCreators } from 'redux';\r\nimport { GetData, PostData, PutData } from \"../../core/controls/helpers/requests\";\r\nimport { snackbarMessage } from '../../core/actions';\r\nimport FormHeader from '../../core/modules/form/cformheader';\r\nimport CFormTextBox from '../../core/modules/form/cformtextbox';\r\nimport TemplateForm from '../../core/modules/template/template';\r\nimport CFormDropDown from '../../core/modules/form/cformdropdown';\r\n\r\nclass CTemplateLoader extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n editorState: null,\r\n result: {},\r\n Subject: '',\r\n dropdowndata: [],\r\n dropdowndefaultvalue: '',\r\n templateid: '',\r\n fieldvaluedata: [],\r\n routeProps: [],\r\n templateFormats: false,\r\n passresults: false,\r\n notificationSettingId: null,\r\n routinghelpertext : null,\r\n routingerror : false\r\n };\r\n this.TemplateForm = React.createRef()\r\n }\r\n\r\n\r\n componentDidMount() {\r\n const { options } = this.props;\r\n const { editorState } = this.state;\r\n const { crud } = options;\r\n const { read, update } = crud;\r\n const { get } = read ? read : {}\r\n let dropdownurl = get.url;\r\n const { routeProps, customProps, allnotesurl, allroutingurl } = get ? get : {}\r\n let ids = []\r\n if (Array.isArray(routeProps)) {\r\n routeProps.forEach(each => {\r\n const { value } = each\r\n ids.push({ key: value, value: this.props.match.params[value] })\r\n })\r\n }\r\n ids && ids.forEach(each => {\r\n const { key, value } = each\r\n if (dropdownurl) dropdownurl = `${dropdownurl.replace(`{${key}}`, value)}`;\r\n });\r\n GetData(dropdownurl).then(result => {\r\n if (result && Array.isArray(result)) {\r\n let ddldata = result.map(el => ({ value: el.Id, key: el.Id, name: el.Name }));\r\n console.log(ddldata);\r\n this.setState({ dropdowndata: ddldata, routeProps: ids })\r\n }\r\n }).catch(error => {\r\n console.log(error);\r\n })\r\n\r\n // let url = this.props && this.props.dataItem && this.props.dataItem.Id ? read.get.url + this.props.match.params.Id + '/' + this.props.dataItem['Id'] : read.get.url;\r\n // GetData(url).then(result => {\r\n // if (result && result.Id) {\r\n // this.setState({ resultExists: true, editorState: parseInt(atob(result.BodyStr)), result: result, Subject: result.Subject, Rank: result.Rank })\r\n // }\r\n // else this.setState({ editorState: null, resultExists: false })\r\n // }).catch(error => {\r\n\r\n // })\r\n }\r\n\r\n handleEditorTemplateId = (editorVal) => {\r\n console.log(editorVal);\r\n let editorValOrg = editorVal;\r\n editorValOrg.Subject = editorVal.subject;\r\n editorValOrg.Body = editorVal.fileContentHTML;\r\n editorValOrg.NotificationSettingId = this.state.dropdowndefaultvalue;\r\n if (this.state.passresults) {\r\n this.setState({ passresults: false }, () => this.props.customnoticesave(editorValOrg, null, 'finalsave'))\r\n }\r\n }\r\n\r\n callTemplateSave = () => {\r\n if(!this.TemplateForm.current) {\r\n this.setState({routinghelpertext : 'Field is Required', routingerror : true})\r\n }\r\n else {\r\n this.TemplateForm.current.saveTemplate();\r\n }\r\n\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevProps.callbacksave != this.props.callbacksave) {\r\n this.setState({ passresults: true }, () => this.callTemplateSave())\r\n\r\n }\r\n }\r\n\r\n handleSave = (editorVal) => {\r\n const { options } = this.props;\r\n\r\n const { resultExists, result } = this.state;\r\n const { crud } = options;\r\n const { read, update } = crud;\r\n\r\n result.BodyStr = btoa(editorVal.toString());\r\n let url = ''\r\n if (!resultExists) {\r\n //\r\n if (this.props.options.tabprops) {\r\n url = update.put.url + this.props.match.params['Id'] + '/Add';\r\n }\r\n else {\r\n url = update.put.url + this.props.match.params.routeid + '/Add';\r\n }\r\n let finalresult = { ...result }\r\n PostData(url, finalresult).then(res => {\r\n this.setState({ resultExists: false })\r\n\r\n if (!this.props.options.tabprops) {\r\n this.props.onClose();\r\n }\r\n\r\n }).catch(error => {\r\n\r\n\r\n })\r\n }\r\n else {\r\n //\r\n if (this.props.options.tabprops) {\r\n url = update.put.url + this.props.match.params['Id'] + '/Update';\r\n }\r\n else {\r\n url = update.put.url + this.props.match.params.routeid + '/Update';\r\n }\r\n let finalresult = { ...result, Rank: this.state.Rank }\r\n PutData(url, finalresult).then(res => {\r\n this.setState({ resultExists: false })\r\n\r\n\r\n if (!this.props.options.tabprops) {\r\n this.props.onClose();\r\n }\r\n\r\n }).catch(error => {\r\n\r\n\r\n })\r\n }\r\n\r\n }\r\n\r\n handleFieldChange = (event) => {\r\n if(event.target.value) {\r\n this.props.handleFieldChange({target : {name : 'RoutingNotification' , value :event.target.value }});\r\n this.setState({\r\n routinghelpertext : null,\r\n routingerror : false,\r\n [event.target.name]: event.target.value,\r\n result: {\r\n ...this.state.result,\r\n [event.target.name]: event.target.value,\r\n NotificationSettingId: event.target.value,\r\n\r\n }\r\n }, () => this.getTemplateDetails(event.target.value))\r\n }\r\n }\r\n\r\n getTemplateDetails = (settingid) => {\r\n const { options } = this.props;\r\n const { editorState, routeProps } = this.state;\r\n const { crud } = options;\r\n const { read, update } = crud;\r\n let templateurl = read.get.templateurl + settingid;\r\n\r\n GetData(templateurl).then(result => {\r\n if (result && Array.isArray(result)) {\r\n let templateid = result[0].TemplateId\r\n //this.setState({ templateid : templateid })\r\n // Get applicaiton field record details and send it to template\r\n let sitePermitTypeId = routeProps.filter(a => a.key == 'routeid')[0].value;//383;\r\n let recordId = routeProps.filter(a => a.key == 'routeid1')[0].value;//23627;\r\n let reqbody = {\r\n 'sitePermitTypeId': sitePermitTypeId,\r\n 'masterTableId': recordId,\r\n 'SideBarDataItems': {},\r\n 'sideBarItems': []\r\n }\r\n let datarequrl = read.get.recorddataurl;\r\n // let applicationdataurl = {\r\n // url: getEnvVariable('Application') + `/api/Application/FieldValues`,\r\n // type: 'post',\r\n // alert: true\r\n // }\r\n PostData(datarequrl, reqbody, true).then(res => {\r\n this.setState({ fieldvaluedata: res, templateid: templateid }, () => {\r\n this.setState({ templateFormats: true });\r\n });\r\n }).catch(error => {\r\n error.then(err => {\r\n if (err) { //correct: unused tempResult, need to define\r\n // tempResult.query = JSON.parse(tempResult.JsonQueryStr)\r\n // setResult(tempResult)\r\n // onError(err);\r\n }\r\n })\r\n })\r\n }\r\n }).catch(error => {\r\n console.log(error);\r\n })\r\n }\r\n\r\n handleBack = () => {\r\n const { match } = this.props\r\n if (this.props.options.tabprops) {\r\n this.props.onClose();\r\n this.props.handleCustomBack();\r\n }\r\n else {\r\n let url = match.url\r\n let final = url\r\n final = url.substring(0, url.lastIndexOf(\"/\"))\r\n this.props.history.push(final)\r\n }\r\n }\r\n\r\n templateFormatsCallBack = (templatedata) => {\r\n console.log(templatedata);\r\n }\r\n\r\n render() {\r\n const { options, hidesub } = this.props;\r\n const { headerProps, title, fullheight, designprops } = options;\r\n const { savebutton, editbutton, backbutton, closebutton, breadcrumbs, sendbutton, nonstickyposition, navigateup, navigatedown, duplicatebutton } = headerProps ? headerProps : {}\r\n const { editorState, result, dropdowndefaultvalue } = this.state\r\n return (\r\n <div>\r\n <div className=\"pl-4 col-sm-12\">\r\n <CFormDropDown value={this.state.dropdowndefaultvalue}\r\n error = {this.state.routinghelpertext}\r\n name=\"dropdowndefaultvalue\"\r\n label=\"Select Routing Notification\"\r\n required={this.props.required}\r\n handleFieldChange={this.handleFieldChange} helperText={this.state.routinghelpertext} edit={true} dropdownvalues={this.state.dropdowndata} />\r\n </div>\r\n {dropdowndefaultvalue !== '' && <div className=\"col-sm-12\">\r\n <TemplateForm parentid={this.state.templateid} hasSubject={true} disabled={true}\r\n isEnabled={false} mentions={null} entryData={this.state.fieldvaluedata} showComments={false}\r\n ref={this.TemplateForm}\r\n handleTemplateId={(editorVal) => { this.handleEditorTemplateId(editorVal) }}\r\n isadmin={false} fullheight={fullheight}\r\n />\r\n </div>}\r\n\r\n </div>\r\n )\r\n }\r\n}\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage }, dispatch);\r\n}\r\n\r\nCTemplateLoader = connect(null, mapActions, null, { forwardRef: true })(CTemplateLoader)\r\nexport default withRouter(CTemplateLoader)","import { Button, Typography } from '@material-ui/core';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport ChevronRightIcon from '@material-ui/icons/ChevronRight';\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\r\nimport DropDownIcon from '@material-ui/icons/VerticalAlignBottom';\r\nimport TreeItem from '@material-ui/lab/TreeItem';\r\nimport TreeView from '@material-ui/lab/TreeView';\r\nimport '@progress/kendo-react-animation';\r\nimport { handleTreeViewCheckChange, processTreeViewItems } from '@progress/kendo-react-treeview';\r\nimport React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { bindActionCreators } from 'redux';\r\nimport { getEnvVariable } from '../..//modules/environmentalList';\r\nimport { passtabData, snackbarMessage } from '../../core/actions';\r\nimport FormHeader from '../../core/modules/form/cformheader';\r\nimport { requestApi } from '../../core/modules/form/utilities';\r\nimport ProgressBar from '../../core/modules/progress-bar';\r\nimport { getData, postRecordData } from '../../core/modules/rest';\r\n\r\n//for styling\r\nconst styles = theme => ({\r\n root: {\r\n background: 'white',\r\n // position: '-webkit-sticky',\r\n position: 'static',\r\n top: 20,\r\n bottom: 20,\r\n paddingTop: '40px',\r\n paddingBottom: '40px',\r\n zIndex: 5,\r\n }\r\n})\r\n\r\nclass CRoutingTreeView extends React.Component {\r\n state = {\r\n items: null, singleMode: false, checkChildren: false, checkParents: false,\r\n check: { ids: [], applyCheckIndeterminate: true }, expanded: [], selected:[],\r\n itemsselected:[], defaultExpanded:[], initialload : true , notescount : false,\r\n showvalidation : false\r\n\r\n };\r\n expandedvalue = []\r\n componentDidMount() {\r\n const { options, components, extraProps, match, dataItem } = this.props\r\n const { crud, validations, iscurrentuser } = options ? options : {}\r\n const { read } = crud ? crud : {}\r\n const { get } = read ? read : {}\r\n const { routeProps, initialloadextrainfoProps, customProps, allnotesurl, allroutingurl, allnotescounturl } = get ? get : {}\r\n const { addURL } = match;\r\n let notesurl = allnotesurl;\r\n let routingurl = allroutingurl\r\n let notescounturl = allnotescounturl\r\n let ids = [], id\r\n let treeURL = get.url;\r\n this.progressbar.start();\r\n if (Array.isArray(initialloadextrainfoProps) && this.props.initialloadextrainfo && this.props.initialloadextrainfo.results) {\r\n initialloadextrainfoProps.forEach(each => {\r\n const { value } = each\r\n ids.push({ key: value, value: this.props.initialloadextrainfo.results[value] })\r\n })\r\n }\r\n if (Array.isArray(routeProps)) {\r\n routeProps.forEach(each => {\r\n const { value } = each\r\n ids.push({ key: value, value: this.props.match.params[value] })\r\n })\r\n }\r\n\r\n else if (routeProps) {\r\n id = routeProps ? this.props.match.params[routeProps.value] : null\r\n }\r\n else if (customProps) {\r\n id = customProps ? (dataItem.Id || dataItem.userId) : null\r\n }\r\n if (iscurrentuser && this.props.accessPermissions) {\r\n id = this.props.accessPermissions.userId;\r\n }\r\n if (addURL == \"?isadmin=Y\") {\r\n treeURL = get.url + id + addURL;\r\n }\r\n else {\r\n if(id) {\r\n treeURL = get.url + id;\r\n }\r\n else if(ids && ids.length>0) {\r\n ids.forEach(each => {\r\n const { key, value } = each;\r\n notesurl = `${notesurl.replace(`{${key}}`, value)}`;\r\n routingurl = `${routingurl.replace(`{${key}}`, value)}`;\r\n treeURL = `${treeURL.replace(`{${key}}`, value)}`;\r\n notescounturl = `${notescounturl.replace(`{${key}}`, value)}`;\r\n })\r\n }\r\n else{\r\n treeURL = get.url\r\n }\r\n }\r\n\r\n //let getRecordNotesDetails = getEnvVariable('Application')+`/api/Notes/23445/All`\r\n\r\n let allRequests = [this.getDataPromise(treeURL), this.getDataPromise(notesurl), this.getDataPromise(routingurl), this.getDataPromise(notescounturl)];\r\n Promise.all(allRequests).then((res) => {\r\n this.setState({notescount : res[3]})\r\n this.dataWrapper(res[0],res[1], res[2])\r\n })\r\n\r\n // getData(treeURL).then(treeURLData => {\r\n // getData(allnotesurl).then(allnotesurlData => {\r\n // getData(allroutingurl).then(allroutingData => {\r\n // this.dataWrapper(treeURLData,allnotesurlData, allroutingData)\r\n // })\r\n // })\r\n // }).catch(err => {\r\n // this.progressbar.complete();\r\n // });\r\n }\r\n\r\n dataWrapper = (treeData, allnotesData, allroutingData) => {\r\n let result = this.treeStructureLatestUpdates(treeData, allnotesData, allroutingData, 0)\r\n console.log(result)\r\n this.setState({ items: result })\r\n this.progressbar.complete();\r\n }\r\n\r\n getDataPromise = (url) =>{\r\n return new Promise((resolve, reject) => {\r\n getData(url).then(data => {\r\n resolve(data)\r\n }).catch(err => {\r\n resolve([])\r\n });\r\n })\r\n }\r\n\r\n treeStructureLatestUpdates = (res, allnotes, allrouting, superparentid) => {\r\n const { options, match } = this.props;\r\n const { addURL } = match;\r\n const { tree } = this.state\r\n const { headerProps, title, viewMode } = options;\r\n let isViewMode = viewMode\r\n if (addURL == \"?isadmin=Y\") {\r\n isViewMode = true;\r\n }\r\n return res.map(each => {\r\n each.expanded = true;\r\n each.disabled = isViewMode;\r\n each.lastcommenteddate = this.getLastDataNotes(allnotes, each.id) ;\r\n each.userid = this.getLastDataCreated(allnotes, each.id) ;\r\n each.lastsentdate = this.getLastDataRouting(allrouting, each.id) ;\r\n each.superparentid = superparentid;\r\n this.expandedvalue.push(each.id+'node'+superparentid)\r\n if (each.items) {\r\n each.items = this.treeStructureLatestUpdates(each.items, allnotes, allrouting, each.parentID);\r\n }\r\n return each\r\n })\r\n }\r\n\r\n getLastDataCreated = (records, id) =>{\r\n if(records && Array.isArray(records)){\r\n let filterrecords = records.filter(a => a.CreatedBy == id);\r\n if(filterrecords.length > 0){\r\n filterrecords = filterrecords.sort((a,b) => b.Id - a.Id);\r\n console.log('filtered data *******', filterrecords)\r\n return filterrecords[0].CreatedBy\r\n }\r\n }\r\n return \"\";\r\n }\r\n\r\n getLastDataNotes = (records, id) =>{\r\n if(records && Array.isArray(records)){\r\n let filterrecords = records.filter(a => a.CreatedBy == id);\r\n if(filterrecords.length > 0){\r\n filterrecords = filterrecords.sort((a,b) => b.Id - a.Id);\r\n console.log('filtered data *******', filterrecords)\r\n return this.getDateFormat(filterrecords[0].CreatedOn)\r\n }\r\n }\r\n return \"\";\r\n }\r\n getLastDataRouting = (records, id) =>{\r\n if(records && Array.isArray(records)){\r\n let filterrecords = records.filter(a => a.UserId == id);\r\n if(filterrecords.length > 0){\r\n filterrecords = filterrecords.sort((a,b) => b.Id - a.Id);\r\n console.log('filtered data *******', filterrecords)\r\n return this.getDateFormat(filterrecords[0].CreatedOn)\r\n }\r\n }\r\n return \"\";\r\n }\r\n\r\n handleSave = () => {\r\n const { options, components, extraProps, dataItem,onClose } = this.props\r\n const { crud, validations, title } = options ? options : {}\r\n const { update } = crud ? crud : {}\r\n const { put } = update ? update : {}\r\n const { routeProps, customProps } = put ? put : {}\r\n let ids = [], id\r\n if (Array.isArray(routeProps)) {\r\n routeProps.forEach(each => {\r\n const { value } = each\r\n ids.push({ key: value, value: this.props.match.params[value] })\r\n })\r\n }\r\n else if (routeProps) {\r\n id = routeProps ? this.props.match.params[routeProps.value] : null\r\n }\r\n else if (customProps) {\r\n id = customProps ? this.props.dataItem[customProps.custom] : null\r\n }\r\n postRecordData(put.url + id, processTreeViewItems(this.state.items, { check: this.state.check })).then(res => {\r\n this.props.snackbarMessage(title + ' Saved Successfully', 'success');\r\n this.props.onClose()\r\n }).catch(error => {\r\n this.props.snackbarMessage(JSON.stringify(error), 'error');\r\n })\r\n }\r\n\r\n getAllSelectedItems(allitems){\r\n let returnitems = []\r\n allitems.forEach(element => {\r\n if(element.checked){\r\n returnitems.push(element.id)\r\n if(element.items && Array.isArray(element.items)){\r\n\r\n }\r\n }\r\n });\r\n\r\n\r\n }\r\n\r\n getAllSelectedItems = (allitems, result, superparentid = 0, nonresponders) => {\r\n allitems.map(element => {\r\n if(element.parentType == \"R\" && element.checked){\r\n result.push({id: element.id, name: element.text, description: element.description, refId: 0, groupId: superparentid, roleId: element.parentID} )\r\n }\r\n if(element.parentType == \"R\" && element.lastsentdate && element.lastcommenteddate == ''){\r\n nonresponders.push({id: element.id, name: element.text, description: element.description, refId: 0, groupId: superparentid, roleId: element.parentID} )\r\n }\r\n if(element.items && Array.isArray(element.items)){\r\n this.getAllSelectedItems(element.items, result, element.parentID, nonresponders);\r\n }\r\n })\r\n }\r\n handleNoteUrl = () =>{\r\n this.props.history.push('/' + this.props.match.params.key + '/' + this.props.match.params.routeid + '/' + this.props.match.params.routeid1 + '/' + 'notes')\r\n }\r\n\r\n handleDoneOutline = (e, isbool) => {\r\n let selectedrecords = [];\r\n let nonresponders = []\r\n this.getAllSelectedItems(this.state.items, selectedrecords, 0, nonresponders);\r\n let passDbData = isbool ? { 'UsersList' : nonresponders } : { 'UsersList' : selectedrecords }\r\n this.props.passtabData(passDbData);\r\n if(passDbData && passDbData.UsersList && passDbData.UsersList.length<=0) {\r\n this.setState({showvalidation : true})\r\n }\r\n else {\r\n this.props.handleTabChange(e, this.props.options.tabindex)\r\n }\r\n }\r\n\r\n checkForNestedItems(allitems, element, isChecked, superparentid){\r\n let isitemfound = false;\r\n allitems.map(a => {\r\n if(a.parentName == element.parentName && a.parentID == element.parentID && a.id == element.id && a.superparentid == superparentid){\r\n a.checked = isChecked;\r\n isitemfound = true;\r\n }\r\n if(!isitemfound && a.items && Array.isArray(a.items)){\r\n this.checkForNestedItems(a.items, element, isChecked, superparentid);\r\n }\r\n if(isitemfound && a.items && Array.isArray(a.items)){\r\n // Check all nested child elements\r\n this.checkAllChildItems(a.items, isChecked)\r\n }\r\n })\r\n return allitems;\r\n }\r\n\r\n DownloadNote = (e) =>{\r\n requestApi({ get: { url: getEnvVariable('Application')+`/api/`+getEnvVariable('ModuleKey')+`Notes/PDF/${this.props.match.params.routeid1}/${e.userid}`, } })\r\n .then((data) => {\r\n console.log(data)\r\n this.progressbar.complete();\r\n if(data && data.base64PDFFileContent){\r\n this.downloadBase64File(data.base64PDFFileContent, data.fileName);\r\n }\r\n }).catch(err => {\r\n\r\n });\r\n }\r\n\r\n checkAllChildItems(allitems, isChecked){\r\n allitems.forEach(childrecord => {\r\n childrecord.checked = isChecked;\r\n if(childrecord.items && Array.isArray(childrecord.items)){\r\n // Check all nested child elements\r\n this.checkAllChildItems(childrecord.items, isChecked)\r\n }\r\n })\r\n }\r\n\r\n getDateFormat(stringdate){\r\n return new Date(stringdate).toLocaleDateString();\r\n }\r\n\r\n handleCheckBoxChange = (event, element, superparentid) => {\r\n let name = event.target.name;\r\n let isChecked = event.target.checked ;\r\n let moditems = this.checkForNestedItems(this.state.items, element, isChecked, superparentid)\r\n this.setState({showvalidation:false, items : moditems},()=>{\r\n console.log(this.state)\r\n console.log('state item----------')\r\n });\r\n // let isChecked = [event.target.name]: event.target.checked\r\n }\r\n\r\n\r\n\r\n\r\n getRoutingControl = (e, superparentid) => {\r\n let nestedchecks = []\r\n let lableVal = e.title ? e.text +' (~'+ e.title+')' : e.text;\r\n let el = e;\r\n el.superparentid = superparentid;\r\n return (\r\n <div>\r\n <TreeItem nodeId={e.id+'node'+superparentid} label={\r\n <div className=\"row col-12\">\r\n <div className=\"col-5\">\r\n <FormControlLabel key={e.id} control={\r\n <Checkbox\r\n checked={e.checked}\r\n onChange={(evt) => this.handleCheckBoxChange(evt, el, superparentid)}\r\n name=\"checkedB\"\r\n color=\"primary\"\r\n />\r\n }\r\n label={<span style={{ fontSize: '14px' }}>{lableVal}</span>}>\r\n </FormControlLabel>\r\n </div>\r\n\r\n <div className=\"col-3 pl-2\">\r\n <Typography className=\"\" variant=\"caption\" align=\"right\" color=\"inherit\">\r\n {e.lastsentdate}\r\n </Typography>\r\n </div>\r\n <div className=\"col-3 pl-2\">\r\n <Typography className=\"\" variant=\"caption\" align=\"right\" color=\"inherit\">\r\n {e.lastcommenteddate}\r\n </Typography>\r\n </div>\r\n {e.lastcommenteddate!=\"\" &&\r\n <div >\r\n <i className=\"\" onClick={() => this.DownloadNote(e)}><IconButton title=\"Print\" color=\"inherit\">\r\n <DropDownIcon fontSize=\"small\" />\r\n </IconButton></i>\r\n\r\n </div>}\r\n </div>}>\r\n {e.items && Array.isArray(e.items) && e.items.map((nest) => {\r\n //console.log(nest)\r\n //nestedchecks.push(this.getRoutingControl(nest))\r\n return this.getRoutingControl(nest,e.parentID)\r\n\r\n })}\r\n </TreeItem>\r\n <Divider />\r\n </div>\r\n\r\n )\r\n }\r\n\r\n handleToggle = (event, nodeIds) => {\r\n this.setState({expanded : nodeIds, initialload: false})\r\n };\r\n\r\n handleSelect = (event, nodeIds) => {\r\n this.setState({selected : nodeIds})\r\n };\r\n\r\n handlePrint = () =>{\r\n this.progressbar.start();\r\n const { options, components, extraProps, match, dataItem } = this.props\r\n const { crud, validations, iscurrentuser } = options ? options : {}\r\n const { read } = crud ? crud : {}\r\n const { get } = read ? read : {}\r\n const { routeProps, customProps, allnotesurl, allroutingurl, printurl } = get ? get : {}\r\n let ids = []\r\n let printurlval = printurl\r\n if (Array.isArray(routeProps)) {\r\n routeProps.forEach(each => {\r\n const { value } = each\r\n ids.push({ key: value, value: this.props.match.params[value] })\r\n })\r\n }\r\n ids.forEach(each => {\r\n const { key, value } = each;\r\n printurlval = `${printurlval.replace(`{${key}}`, value)}`;\r\n })\r\n console.log(printurlval)\r\n getData(printurlval).then(data => {\r\n console.log(data)\r\n this.progressbar.complete();\r\n if(data && data.base64PDFFileContent){\r\n this.downloadBase64File(data.base64PDFFileContent, data.fileName);\r\n }\r\n else {\r\n this.props.snackbarMessage('There are no notes to download', 'info');\r\n }\r\n }).catch(err => {\r\n\r\n });\r\n\r\n }\r\n\r\n downloadBase64File = (contentBase64, fileName) => {\r\n const downloadLink = document.createElement('a');\r\n document.body.appendChild(downloadLink);\r\n downloadLink.href = contentBase64;\r\n downloadLink.target = '_self';\r\n downloadLink.download = fileName;\r\n downloadLink.click();\r\n }\r\n\r\n render() {\r\n const { options, match, classes } = this.props;\r\n const { addURL } = match;\r\n const { tree, items } = this.state\r\n const { headerProps, title, viewMode, designprops } = options;\r\n let isViewMode = viewMode;\r\n if (addURL == \"?isadmin=Y\") { isViewMode = true; }\r\n return (\r\n <Fragment>\r\n <div className=\" example-config\">\r\n <FormHeader className=\"position-fixed\" title={title}\r\n handleSave={this.handleSave}\r\n handleContact = {this.handleDoneOutline}\r\n handleNotes={this.handleNoteUrl}\r\n doneoutline= {headerProps.doneoutline}\r\n handleDoneOutline= {this.handleDoneOutline}\r\n sendbutton={headerProps.sendbutton}\r\n contactbutton = {headerProps.contactbutton}\r\n notesbutton ={headerProps.notesbutton}\r\n savebutton={headerProps.savebutton && !isViewMode}\r\n closebutton={headerProps.closebutton}\r\n handleClose={() => this.props.onClose()}\r\n designprops={designprops}\r\n printbutton={this.state.notescount ? headerProps.printbutton : false}\r\n handlePrint = {this.handlePrint}\r\n hasclearfix={true}\r\n />\r\n </div>\r\n {this.state.showvalidation && <FormHelperText error={true}><b>Please select atleast one user to send notification</b></FormHelperText>}\r\n <div> <ProgressBar ref={e => this.progressbar = e} /></div>\r\n { !isViewMode && <div className={classes.root}><div className={!designprops ? 'row float-right p-2' : 'row col-12'}>\r\n <div className=\"col-4\">\r\n <Button variant=\"contained\" color=\"primary\" onClick={this.checkAll} >Check all</Button>\r\n <span> </span>\r\n <Button variant=\"contained\" color=\"primary\" onClick={this.uncheckAll}>Uncheck all</Button>\r\n </div>\r\n <div className=\"col-3\">\r\n <Typography variant=\"caption\" align=\"right\" color=\"inherit\">\r\n Last Sent Date\r\n </Typography>\r\n </div>\r\n <div className=\"col-3\">\r\n <Typography variant=\"caption\" align=\"right\" color=\"inherit\">\r\n Last Commented Date\r\n </Typography>\r\n </div>\r\n <div className=\"col-2\">\r\n <Typography variant=\"caption\" align=\"right\" color=\"inherit\">\r\n Download Note\r\n </Typography>\r\n </div>\r\n\r\n\r\n </div></div>}\r\n <div className={!designprops ? \"row col-sm-12 eps-treestyles pt-2\" : \"\"}>\r\n <TreeView\r\n defaultCollapseIcon={<ExpandMoreIcon />}\r\n defaultExpandIcon={<ChevronRightIcon />}\r\n selected={this.state.selected}\r\n onNodeToggle={this.handleToggle}\r\n onNodeSelect={this.handleSelect}\r\n expanded={this.state.initialload ? this.expandedvalue : this.state.expanded}\r\n defaultExpanded={this.state.defaultExpanded}\r\n\r\n >\r\n\r\n {items && Array.isArray(items) && items.map((e) => {\r\n return this.getRoutingControl(e, e.parentID)\r\n })}\r\n\r\n </TreeView>\r\n {/* <FormControlLabel key={e.id} control={\r\n <Checkbox\r\n checked={true}\r\n onChange={this.handleCheckBoxChange}\r\n name=\"checkedB\"\r\n color=\"primary\"\r\n />\r\n }\r\n label={e.text}\r\n /> */}\r\n\r\n {/* <TreeView expandIcons={true} onExpandChange={this.onExpandChange}\r\n // data={this.state.items}\r\n data={processTreeViewItems(this.state.items, { check: this.state.check })}\r\n checkboxes={true} onCheckChange={this.onCheckChange}\r\n\r\n /> */}\r\n\r\n\r\n\r\n </div>\r\n\r\n </Fragment>\r\n );\r\n }\r\n\r\n\r\n\r\n // onCheckChange = (event) => {\r\n // event.item.checked = !event.item.checked;\r\n // event.item.isChecked = event.item.checked\r\n // this.setState({ ...this.state.items, ...event })\r\n // }\r\n\r\n\r\n onCheckChange = (event) => {\r\n const settings = { checkChildren: true, checkParents: true };\r\n event.item.checked = !event.item.checked;\r\n // if(event.item.parentID){\r\n // this.searchSpecifiedTreeItem(event.item.parentID, event.item.parentName, this.state.items);\r\n // }\r\n // if(event.item.items){\r\n // this.makeChecked(event.item.items, event.item.checked);\r\n // }\r\n this.setState({ check: handleTreeViewCheckChange(event, this.state.check, this.state.items, settings) });\r\n }\r\n\r\n searchSpecifiedTreeItem(id, name, treeItems) {\r\n for (let index = 0; index < treeItems.length; index++) {\r\n const element = treeItems[index];\r\n if (element.id == id && element.text == name) {\r\n if (element && element.items.some(s => s.checked == false)) {\r\n element.checkIndeterminate = true;\r\n }\r\n else {\r\n element.checkIndeterminate = false;\r\n element.checked = true;\r\n }\r\n break;\r\n }\r\n if (element.items) {\r\n this.searchSpecifiedTreeItem(id, name, element.items);\r\n }\r\n }\r\n }\r\n\r\n makeChecked(items, isChecked) {\r\n items.forEach(e => { e.checked = isChecked });\r\n }\r\n\r\n onExpandChange = (event) => {\r\n // const settings = { checkChildren: true, checkParents: true };\r\n event.item.expanded = !event.item.expanded;\r\n event.item.checked = event.item.checked;\r\n this.setState({ check: handleTreeViewCheckChange(event, this.state.check, this.state.items, null) });\r\n\r\n }\r\n\r\n\r\n checkStatusChange = (items, status) => {\r\n return items.map(each => {\r\n each.checked = status\r\n if (each.items) {\r\n each.items = this.checkStatusChange(each.items, status);\r\n }\r\n return each\r\n })\r\n }\r\n\r\n checkAll = () => {\r\n const settings = { checkChildren: true, checkParents: true };\r\n let items = this.checkStatusChange(this.state.items, true);\r\n this.setState({ showvalidation:false,check: handleTreeViewCheckChange(this.state.check, items, settings) });\r\n }\r\n\r\n uncheckAll = () => {\r\n const settings = { checkChildren: true, checkParents: true };\r\n let items = this.checkStatusChange(this.state.items, false);\r\n this.setState({ showvalidation:false, check: handleTreeViewCheckChange(this.state.check, items, settings) });\r\n this.forceUpdate();\r\n }\r\n\r\n onSingleModeChange = ({ target: { checked } }) => {\r\n let { checkChildren, checkParents } = this.state;\r\n if (checked) {\r\n checkChildren = checkParents = false;\r\n }\r\n this.setState({ singleMode: checked, checkChildren, checkParents });\r\n }\r\n onCheckChildrenChange = ({ target: { checked } }) => {\r\n let { singleMode } = this.state;\r\n if (checked) {\r\n singleMode = false;\r\n }\r\n this.setState({ singleMode, checkChildren: checked });\r\n }\r\n onCheckParentsChange = ({ target: { checked } }) => {\r\n let { singleMode } = this.state;\r\n if (checked) {\r\n singleMode = false;\r\n }\r\n this.setState({ singleMode, checkParents: checked });\r\n }\r\n}\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage, passtabData }, dispatch);\r\n}\r\n\r\nCRoutingTreeView = connect(null, mapActions)(CRoutingTreeView)\r\nCRoutingTreeView= withStyles(styles)(CRoutingTreeView);\r\nexport default withRouter(CRoutingTreeView)\r\n\r\n\r\n///api/InternalAccessControlView/SetUserAccessControl/{userid}","export default __webpack_public_path__ + \"static/media/ProfilePic.70d35166.jpg\";","export default __webpack_public_path__ + \"static/media/pencil.3000c0f3.png\";","import Fab from '@material-ui/core/Fab';\r\nimport GridList from '@material-ui/core/GridList';\r\nimport GridListTile from '@material-ui/core/GridListTile';\r\nimport GridListTileBar from '@material-ui/core/GridListTileBar';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport CloudUploadIcon from '@material-ui/icons/CloudUpload';\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport ConfirmationDialog from \"../../core/controls/components/confirmationPopup\";\r\nimport { snackbarMessage } from '../../core/actions';\r\nimport defaultImage from '../../core/resources/ProfilePic.jpg';\r\nimport defaultSigImage from '../../core/resources/pencil.png';\r\n\r\nconst styles = theme => ({\r\n root: {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n justifyContent: 'space-around',\r\n overflow: 'hidden',\r\n backgroundColor: theme.palette.background.paper,\r\n },\r\n gridList: {\r\n flexWrap: 'nowrap',\r\n // Promote the list into his own layer on Chrome. This cost memory but helps keeping high FPS.\r\n transform: 'translateZ(0)',\r\n\r\n },\r\n title: {\r\n color: 'rgba(0, 0, 0, 0.87)',\r\n fontWeight: 'bold'\r\n },\r\n subtitle: {\r\n lineHeight: 1,\r\n },\r\n titleBar: {\r\n background:\r\n 'linear-gradient(to top, rgba(0,0,0,0.7) 0%, rgba(0,0,0,0.3) 70%, rgba(0,0,0,0) 100%)',\r\n },\r\n});\r\n\r\n\r\nclass FileUpload extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n openConfirmation: false,\r\n imagename: \"\",\r\n };\r\n }\r\n\r\n handleFileUpload = (event) => {\r\n const name = event.target.name;\r\n this.toBase64(event)\r\n .then(result => {\r\n const answer_array = result.split(';');\r\n if (answer_array[0] === \"data:image/png\" || answer_array[0] === \"data:image/jpeg\") {\r\n var e = {\r\n target: {\r\n name: name,\r\n value: result\r\n }\r\n }\r\n this.props.handleFieldChange(e)\r\n }\r\n else {\r\n this.props.snackbarMessage('Please upload files with correct extension, supported file extensions are JPEG and PNG.', 'error')\r\n }\r\n })\r\n .catch(ex => console.log(ex));\r\n }\r\n\r\n handleImageUpload = (event) => {\r\n const name = event.target.name;\r\n this.toBase64(event)\r\n .then(result => {\r\n\r\n var e = {\r\n target: {\r\n name: name,\r\n value: result\r\n }\r\n }\r\n this.props.handleFieldChange(e)\r\n\r\n })\r\n .catch(ex => console.log(ex));\r\n }\r\n toBase64 = (event) => {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(event.target.files[0]);\r\n reader.onload = () => resolve(reader.result);\r\n reader.onerror = error => reject(error);\r\n })\r\n };\r\n\r\n RemoveImage = (event) => {\r\n this.setState({ openConfirmation: true, imagename: event.target.name })\r\n }\r\n\r\n ConfirmDelete = () => {\r\n this.setState({ openConfirmation: false })\r\n var e = {\r\n target: {\r\n name: this.state.imagename,\r\n value: \"\"\r\n }\r\n }\r\n this.props.handleFieldChange(e)\r\n }\r\n\r\n handleCancelDelete = () => {\r\n this.setState({ openConfirmation: false })\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n return (\r\n <Fragment>\r\n <small className='fw-bold' style={{ fontSize: '12px' }}>{this.props.text}</small>\r\n <GridList className={classes.gridList} >\r\n <GridListTile style={{\r\n // height: '150px',\r\n width: '60%'\r\n }}>\r\n <img style={{ display: 'block' }} src={this.props.value && this.props.value != '' ? (this.props.value) : this.props.profile ? defaultImage : defaultSigImage} alt=\"Image\" />\r\n {this.props.value && <GridListTileBar\r\n // title={<small>{this.props.text}</small>}\r\n classes={{\r\n root: classes.titleBar,\r\n title: classes.title,\r\n }}\r\n // subtitle={<span>png,jpeg</span>}\r\n actionIcon={\r\n this.props.edit && <Fab size=\"small\" component=\"label\" color='secondary' >\r\n <DeleteIcon /> <input type=\"button\" onClick={this.RemoveImage} name={this.props.name} hidden />\r\n </Fab>\r\n\r\n }\r\n />\r\n }\r\n {!this.props.value && <GridListTileBar\r\n // title={this.props.text}\r\n classes={{\r\n root: classes.titleBar,\r\n title: classes.title,\r\n }}\r\n actionIcon={\r\n this.props.edit && <Fab size=\"small\" component=\"label\" color='secondary' >\r\n <CloudUploadIcon /> <input type=\"file\" name={this.props.name} onChange={this.props.imagesupload ? this.handleImageUpload : this.handleFileUpload} hidden />\r\n </Fab>\r\n }\r\n />\r\n }\r\n </GridListTile>\r\n </GridList>\r\n {this.state.openConfirmation && <ConfirmationDialog value={this.state.openConfirmation} title=\"Are you sure you want to delete?\" onSubmit={this.ConfirmDelete} onClose={this.handleCancelDelete} />}\r\n {!this.props.imagesupload && this.props.edit && <span style={{ fontSize: '10px' }} className=\"row col text-secondary\">Supported file type extensions are png and jpeg.</span>}\r\n </Fragment>\r\n )\r\n }\r\n}\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage }, dispatch);\r\n}\r\n\r\nFileUpload = connect(null, mapActions)(FileUpload)\r\n\r\nexport default withStyles(styles)(FileUpload);\r\n","import React from 'react';\r\nimport Backdrop from '@material-ui/core/Backdrop';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Button from '@material-ui/core/Button';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n backdrop: {\r\n zIndex: theme.zIndex.drawer + 1,\r\n color: '#fff',\r\n },\r\n}));\r\n\r\nexport default function SimpleBackdrop() {\r\n const classes = useStyles();\r\n const [open, setOpen] = React.useState(false);\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n const handleToggle = () => {\r\n setOpen(!open);\r\n };\r\n\r\n return (\r\n <div>\r\n <Backdrop className={classes.backdrop} open={true} >\r\n <CircularProgress color=\"inherit\" /><br />\r\n </Backdrop>\r\n </div>\r\n );\r\n}\r\n","export default __webpack_public_path__ + \"static/media/bannerA.aeec426b.jpg\";","/** \r\n *********************************************************\r\n Deprecated\r\n *********************************************************\r\n**/\r\nimport React, { Component, Fragment } from 'react';\r\nimport EntranceImg from '../../resources/bannerA.jpg'\r\n\r\nclass Banner extends Component {\r\n \r\n render() {\r\n return (\r\n <div></div>\r\n )\r\n }\r\n\r\n}\r\n\r\nexport default Banner;","export default function AMESRouteControls() {\r\n\r\n return <></>\r\n}","export default function APSRouteControls() {\r\n\r\n return <></>\r\n}","export default function APSRouteControls() {\r\n\r\n return <></>\r\n}","export default function APSRouteControls() {\r\n\r\n return <></>\r\n}","export default function APSRouteControls() {\r\n\r\n return <></>\r\n}","export default function APSRouteControls() {\r\n\r\n return <></>\r\n}","// const AdminConfig = 'http://development.delasoft.com:8443/UPA-adminconfig'\r\n// const Admin = 'http://development.delasoft.com:8443/UPA-admin'\r\n\r\nimport { getEnvVariable } from \"../../../modules/environmentalList\"\r\n\r\nconst HolidayAdd = {\r\n \"type\": \"popup\",\r\n \"key\": \"HolidayAdd\",\r\n \"name\": \"HolidayAdd\",\r\n anchor: 'right',\r\n open: false,\r\n aliases: {\r\n open: 'addOpen'\r\n },\r\n sharedValues: ['open'],\r\n container: {\r\n values: { save: false, back: false, fullscreen: false, },\r\n mapValues: {\r\n header: [\r\n { key: 'exitfullscreen', name: 'exitfullscreen' },\r\n { key: 'fullscreen', name: 'fullscreen' },\r\n ],\r\n Holidays: [{ key: 'save', name: 'save' },\r\n { key: 'exitfullscreen', name: 'exitfullscreen' },\r\n { key: 'fullscreen', name: 'fullscreen' },]\r\n },\r\n // sharedValues: ['save', 'edit'],\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [{\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'header',\r\n type: 'div',\r\n className: 'col-12 ',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12',\r\n }\r\n }],\r\n\r\n },\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'Holidays',\r\n type: 'div',\r\n className: 'col-12 pl-4 m-3',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12 pl-4 m-3',\r\n }\r\n }],\r\n\r\n },\r\n ]\r\n },\r\n\r\n components: {\r\n header: {\r\n name: \"header\",\r\n type: 'header',\r\n title: 'Holidays',\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": \"Holidays\", \"materialicon\": \"today\", className: 'eps-breadcrumb-item ', class: 'text-light' },\r\n ]\r\n }\r\n ],\r\n layout: {},\r\n actions: [\r\n {\r\n type: 'icon',\r\n icon: 'back',\r\n name: 'back',\r\n hideon: 'back',\r\n hidevalue: false,\r\n title: 'Back'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'save',\r\n name: 'save',\r\n hideon: 'save',\r\n hidevalue: false,\r\n title: 'Save Holiday',\r\n color:\"#008000\"\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'fullscreen',\r\n name: 'fullscreen',\r\n hidevalue: false,\r\n title: 'FullScreen'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'exitfullscreen',\r\n name: 'exitfullscreen',\r\n hideon: 'fullscreen',\r\n hidevalue: false,\r\n title: 'Exit FullScreen'\r\n }\r\n ],\r\n\r\n\r\n },\r\n Holidays: {\r\n \"type\": \"form\",\r\n \"key\": \"Holidays\",\r\n \"name\": \"Holidays\",\r\n aliases: {\r\n save: 'save',\r\n },\r\n \"routeParams\": { replace: 'holidays', param: 'Id', routeName: 'id' },\r\n sharedValues: ['save', 'back', 'exitfullscreen', 'fullscreen'],\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'HolidayDay',\r\n type: 'div',\r\n className: 'col-10 m-2',\r\n sub: {\r\n type: 'div',\r\n className: 'col-10 m-2',\r\n }\r\n },\r\n\r\n ]\r\n },\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [\r\n {\r\n name: 'HolidayDate',\r\n type: 'div',\r\n className: 'col-6 m-2',\r\n sub: {\r\n type: 'div',\r\n className: 'col-6 m-2',\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 2,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'Status',\r\n type: 'div',\r\n className: 'col-6 m-2',\r\n sub: {\r\n type: 'div',\r\n className: 'col-6 m-2',\r\n }\r\n },\r\n ]\r\n },\r\n // {\r\n // order: 6,\r\n // type: 'div',\r\n // className: 'row',\r\n // components: [{\r\n // name: 'CreatedOn',\r\n // type: 'div',\r\n // className: 'col-6',\r\n // sub: {\r\n // type: 'div',\r\n // className: 'col-6'\r\n // }\r\n // },\r\n // {\r\n // name: 'CreatedByName',\r\n // type: 'div',\r\n // className: 'col-6',\r\n // sub: {\r\n // type: 'div',\r\n // className: 'col-6'\r\n // }\r\n // },\r\n // ]\r\n // },\r\n // {\r\n // order: 7,\r\n // type: 'div',\r\n // className: 'row',\r\n // components: [\r\n // {\r\n // name: 'UpdatedOn',\r\n // type: 'div',\r\n // className: 'col-6',\r\n // sub: {\r\n // type: 'div',\r\n // className: 'col-6'\r\n // }\r\n // },\r\n // {\r\n // name: 'UpdatedByName',\r\n // type: 'div',\r\n // className: 'col-6',\r\n // sub: {\r\n // type: 'div',\r\n // className: 'col-6'\r\n // }\r\n // },]\r\n // },\r\n ]\r\n\r\n },\r\n \r\n values: {\r\n HolidayDay: '',\r\n HolidayDate: '',\r\n Status:'I',\r\n // UpdatedByName: '',\r\n // CreatedByName: '',\r\n // UpdatedOn: '',\r\n // CreatedOn: '',\r\n // UpdatedBy: '',\r\n // CreatedBy: '',\r\n Id: 0,\r\n editInfo: null,\r\n allgriddata: null,\r\n navigation: null,\r\n },\r\n\r\n \"components\": {\r\n HolidayDay: {\r\n \"type\": \"textfield\",\r\n \"key\": \"HolidayDay\",\r\n \"label\": \"Day\",\r\n \"name\": \"HolidayDay\",\r\n },\r\n HolidayDate: {\r\n \"type\": \"datemonth\",\r\n \"key\": \"HolidayDate\",\r\n \"label\": \"Date\",\r\n \"name\":\"HolidayDate\"\r\n },\r\n Status: {\r\n \"type\": \"toggle\",\r\n \"key\": \"Status\",\r\n \"label\": \"Status\",\r\n \"name\": \"Status\",\r\n disabled :true,\r\n extraProps: {\r\n \"transformProps\": {\r\n \"A\": true,\r\n \"I\": false,\r\n \"true\": \"A\",\r\n \"false\": \"I\"\r\n }\r\n }\r\n },\r\n // CreatedOn: {\r\n // \"type\": \"label\",\r\n // \"key\": \"CreatedOn\",\r\n // \"label\": \"Created On\",\r\n // name: \"CreatedOn\",\r\n // changefieldto: \"label\",\r\n // },\r\n // CreatedByName: {\r\n // \"type\": \"label\",\r\n // \"key\": \"CreatedByName\",\r\n // \"label\": \"Created By\",\r\n // name: \"CreatedByName\",\r\n // changefieldto: \"label\",\r\n // },\r\n // UpdatedOn: {\r\n // \"type\": \"label\",\r\n // \"key\": \"UpdatedOn\",\r\n // \"label\": \"Updated On\",\r\n // name: \"UpdatedOn\",\r\n // changefieldto: \"label\",\r\n // },\r\n // UpdatedByName: {\r\n // \"type\": \"label\",\r\n // \"key\": \"UpdatedByName\",\r\n // \"label\": \"Updated By\",\r\n // name: \"UpdatedByName\",\r\n // changefieldto: \"label\",\r\n // },\r\n },\r\n mapActionsToEffects: {\r\n 'onLoad': {\r\n init: {\r\n rules: [{\r\n run:\r\n {\r\n valid: [ \r\n {\r\n type: 'validations', //http://development.delasoft.com:8443/AMES-application/api/ProposedLandUse/5864/Add\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Application') + `/api/ProjectMessages/RulesByName?name=WRSADMIN.Holidays`,\r\n type: 'get'\r\n }\r\n ],\r\n transformProps: {\r\n removesubfieldname: 'WRSADMIN.HOLIDAYS_'\r\n }\r\n },\r\n {\r\n type: 'businessrules',\r\n \"read\": [\r\n {\r\n //url: getEnvVariable('Application') + `/api/BusinessRules/Grid/modulemaster.notes`,\r\n url:getEnvVariable('Application')+`/api/BusinessRules/Grid/WRSADMIN.Holidays`,\r\n type: 'get',\r\n }\r\n ],\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n 'exitfullscreen': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'exitfullscreen',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'fullscreen': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'fullscreen',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n },\r\n 'afterSave': {\r\n 'save': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'save',// http://development.delasoft.com:8443/AMES-application/api/Property/23123/Add\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin') + `/api/Holidays/Add`,\r\n //\"url\":\"http://localhost:6004/api/Holidays/Add\",\r\n type: 'post',\r\n \"matchProps\": [{\r\n name: \"routeid1\",\r\n key: \"routeid1\",\r\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 HolidayAdd\r\n","import { getEnvVariable } from \"../../../modules/environmentalList\"\r\nimport HolidayAdd from \"./newholidays\"\r\n//import notehistory from './notehistorygrid';\r\nconst EditHoliday = {\r\n \"type\": \"popup\",\r\n \"key\": \"EditHoliday\",\r\n \"name\": \"EditHoliday\",\r\n anchor: 'right',\r\n open: false,\r\n aliases: {\r\n open: 'editOpen'\r\n },\r\n sharedValues: ['open'],\r\n container: {\r\n closepopup: true,\r\n closepopupval: 'holidays',\r\n \"addRoute\": true,\r\n \"routeParams\": { replace: 'holidays', param: 'Id', routeName: 'id' },\r\n 'removelayout': 'EditHoliday',\r\n values: { editInfo: null, edit: false, createduplicate: false, fullscreen: false, back: false, allgriddata: null, navigation: null },\r\n mapValues: {\r\n header: [\r\n { key: 'edit', name: 'edit' },\r\n { key: 'exitfullscreen', name: 'exitfullscreen' },\r\n { key: 'fullscreen', name: 'fullscreen' },\r\n { key: 'createduplicate', name: 'createduplicate' },\r\n { key: 'allgriddata', name: 'allgriddata' },\r\n ],\r\n ViewHoliday: [\r\n { key: 'editInfo', name: 'editInfo' },\r\n { key: 'allgriddata', name: 'allgriddata' },\r\n { key: 'save', name: 'save' },\r\n // { key: 'saveduplicate', name: 'saveduplicate' },\r\n { key: 'edit', name: 'edit' },\r\n { key: 'exitfullscreen', name: 'exitfullscreen' },\r\n { key: 'fullscreen', name: 'fullscreen' },\r\n { key: 'createduplicate', name: 'createduplicate' },\r\n { key: 'back', name: 'back' },\r\n { key: 'navigation', name: 'navigation' },]\r\n },\r\n // sharedValues: ['save', 'edit'],\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [{\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'header',\r\n type: 'div',\r\n className: 'col-12 ',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12',\r\n }\r\n }],\r\n\r\n },\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'ViewHoliday',\r\n type: 'div',\r\n className: 'col-12 pl-4 m-4',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12 pl-4 m-4',\r\n }\r\n }],\r\n\r\n },\r\n ]\r\n },\r\n\r\n components: {\r\n header: {\r\n name: \"header\",\r\n type: 'header',\r\n title: 'Holidays',\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": \"View/Edit Holiday\", \"materialicon\": \"today\", className: 'eps-breadcrumb-item ', class: 'text-light' },\r\n ]\r\n }\r\n ],\r\n layout: {},\r\n actions: [\r\n {\r\n type: 'icon',\r\n icon: 'back',\r\n name: 'back',\r\n hideon: 'back',\r\n hidevalue: false,\r\n title: 'Back'\r\n },\r\n\r\n {\r\n type: 'icon',\r\n icon: 'edit',\r\n name: 'edit',\r\n hideon: 'createduplicate',\r\n hideanother: 'edit',\r\n hidevalue: true,\r\n title: 'Edit Holiday'\r\n },\r\n // {\r\n // type: 'icon',\r\n // icon: 'duplicate',\r\n // name: 'createduplicate',\r\n // hideon: 'edit',\r\n // hideanother: 'createduplicate',\r\n // hidevalue: true,\r\n // title: 'Clone'\r\n // },\r\n {\r\n type: 'icon',\r\n icon: 'save',\r\n name: 'save',\r\n hideon: 'edit',\r\n hidevalue: false,\r\n title: 'Save Holiday',\r\n color:\"#008000\"\r\n },\r\n // {\r\n // type: 'icon',\r\n // icon: 'save',\r\n // name: 'saveduplicate',\r\n // hideon: 'createduplicate',\r\n // hidevalue: false,\r\n // title: 'Save'\r\n // },\r\n {\r\n type: 'icon',\r\n icon: 'previtem',\r\n name: 'previtem',\r\n hideon: 'previtem',\r\n hidevalue: false,\r\n title: 'Previous Item'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'nextitem',\r\n name: 'nextitem',\r\n hideon: 'nextitem',\r\n hidevalue: false,\r\n title: 'Next Item'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'fullscreen',\r\n name: 'fullscreen',\r\n hidevalue: false,\r\n title: 'Full Screen'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'exitfullscreen',\r\n name: 'exitfullscreen',\r\n hideon: 'fullscreen',\r\n hidevalue: false,\r\n title: 'Exit FullScreen'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'history',\r\n name: 'history',\r\n title: 'History',\r\n hideon: 'history',\r\n hidevalue: false,\r\n historyurl: {\r\n title : 'Holiday History',\r\n url: getEnvVariable('Admin') + `/api/Holidays/history/{Id}?`,\r\n //\"url\":\"http://localhost:6004/api/Holidays/{Id}?\",\r\n \"routeProps\": [{ name: \"id\", key: \"Id\", },],\r\n type: 'get',\r\n saveAs: { key: 'data' }\r\n }\r\n },\r\n ],\r\n },\r\n ViewHoliday: {\r\n \"type\": \"form\",\r\n initRun: true,\r\n \"key\": \"ViewHoliday\",\r\n \"name\": \"ViewHoliday\",\r\n aliases: {\r\n 'editInfo': 'editInfo',\r\n 'allgriddata': 'allgriddata',\r\n 'navigateItem': 'navigateItem',\r\n 'edit': 'edit'\r\n },\r\n sharedValues: ['editInfo', 'allgriddata', 'navigateItem', 'navigation', 'edit', 'save', 'createduplicate', 'exitfullscreen', 'fullscreen', 'back'],\r\n validationMapKeys: [],\r\n layout: {\r\n group: [\r\n // {\r\n // order: 0,\r\n // type: 'div',\r\n // className: 'row',\r\n // components: [{\r\n // name: 'header',\r\n // type: 'div',\r\n // className: 'col-12 ',\r\n // sub: {\r\n // type: 'div',\r\n // className: 'col-12',\r\n // }\r\n // }],\r\n \r\n // }, \r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'HolidayDay',\r\n type: 'div',\r\n className: 'col-10 m-1',\r\n sub: {\r\n type: 'div',\r\n className: 'col-10 m-1'\r\n }\r\n },\r\n\r\n ]\r\n },\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [\r\n {\r\n name: 'HolidayDate',\r\n type: 'div',\r\n className: 'col-6 m-1',\r\n sub: {\r\n type: 'div',\r\n className: 'col-6 m-1'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 2,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'Status',\r\n type: 'div',\r\n className: 'col-10 m-1',\r\n sub: {\r\n type: 'div',\r\n className: 'col-10 m-1'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 3,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'CreatedOn',\r\n type: 'div',\r\n className: 'col-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-6'\r\n }\r\n },\r\n {\r\n name: 'CreatedByName',\r\n type: 'div',\r\n className: 'col-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-6'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 4,\r\n type: 'div',\r\n className: 'row',\r\n components: [\r\n {\r\n name: 'UpdatedOn',\r\n type: 'div',\r\n className: 'col-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-6'\r\n }\r\n },\r\n {\r\n name: 'UpdatedByName',\r\n type: 'div',\r\n className: 'col-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-6'\r\n }\r\n },]\r\n },\r\n ]\r\n\r\n },\r\n values: {\r\n HolidayDay: '',\r\n HolidayDate: '',\r\n Status: '',\r\n UpdatedByName: '',\r\n CreatedByName: '',\r\n UpdatedOn: '',\r\n CreatedOn: '',\r\n UpdatedBy: '',\r\n CreatedBy: '',\r\n Id: '',\r\n editInfo: null,\r\n allgriddata: null,\r\n navigation: null\r\n },\r\n \"components\": {\r\n // Id: {\r\n // \"type\": \"textfield\",\r\n // \"key\": \"Id\",\r\n // \"label\": \"Id\",\r\n // \"name\": \"Id\",\r\n // // changefieldto: \"textfield\",\r\n // },\r\n HolidayDay: {\r\n \"type\": \"label\",\r\n \"key\": \"HolidayDay\",\r\n \"label\": \"Day\",\r\n \"name\": \"HolidayDay\",\r\n changefieldto: \"textfield\",\r\n },\r\n HolidayDate: {\r\n \"type\": \"label\",\r\n \"key\": \"HolidayDate\",\r\n \"label\": \"Date\",\r\n \"name\": \"HolidayDate\",\r\n changefieldto: \"datemonth\",\r\n },\r\n Status: {\r\n \"type\": \"label\",\r\n \"key\": \"Status\",\r\n \"label\": \"Status\",\r\n \"name\": \"Status\",\r\n changefieldto: \"toggle\",\r\n extraProps: {\r\n \"transformProps\": {\r\n \"A\": true,\r\n \"I\": false,\r\n \"true\": \"A\",\r\n \"false\": \"I\"\r\n }\r\n },\r\n LabeltransformProps: {\r\n I: 'In-Active',\r\n A: 'Active',\r\n true: 'Active',\r\n false: 'In-Active',\r\n },\r\n \r\n },\r\n CreatedOn: {\r\n \"type\": \"label\",\r\n \"key\": \"CreatedOn\",\r\n \"label\": \"Created On\",\r\n name: \"CreatedOn\",\r\n changefieldto: \"label\",\r\n },\r\n CreatedByName: {\r\n \"type\": \"label\",\r\n \"key\": \"CreatedByName\",\r\n \"label\": \"Created By\",\r\n name: \"CreatedByName\",\r\n changefieldto: \"label\",\r\n },\r\n UpdatedOn: {\r\n \"type\": \"label\",\r\n \"key\": \"UpdatedOn\",\r\n \"label\": \"Updated On\",\r\n name: \"UpdatedOn\",\r\n changefieldto: \"label\",\r\n },\r\n UpdatedByName: {\r\n \"type\": \"label\",\r\n \"key\": \"UpdatedByName\",\r\n \"label\": \"Updated By\",\r\n name: \"UpdatedByName\",\r\n changefieldto: \"label\",\r\n },\r\n },\r\n mapActionsToEffects: {\r\n 'onLoad': {\r\n 'init': {\r\n rules: [{\r\n run:\r\n {\r\n valid: [\r\n {\r\n type: 'validations', //http://development.delasoft.com:8443/AMES-application/api/ProposedLandUse/5864/Add\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Application') + `/api/ProjectMessages/RulesByName?name=WRSadmin.holidays`,\r\n //\"url\":\"http://localhost:6004/api/ProjectMessages/RulesByName?name=AMESADMIN.GroupEmails\",\r\n type: 'get'\r\n }\r\n ],\r\n transformProps: {\r\n removesubfieldname: 'WRSADMIN.HOLIDAYS_'\r\n }\r\n },\r\n {\r\n type: 'businessrules',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Application') + `/api/BusinessRules/Grid/WRSADMIN.Holidays`,\r\n //url:\"http://localhost:6004/api/BusinessRules/Grid/AMESADMIN.GroupEmails\",\r\n type: 'get',\r\n }\r\n ],\r\n },\r\n ]\r\n }\r\n }]\r\n }\r\n },\r\n 'onChange': {\r\n 'navigation': {\r\n rules: [{\r\n run:\r\n {\r\n valid: [\r\n {\r\n type: 'initial', //http://development.delasoft.com:8443/AMES-application/api/ProposedLandUse/5864/Add\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin') + `/api/Holidays/{Id}`,\r\n //\"url\":\"http://localhost:6004/api/ZEmailGroups/{Id}\",\r\n key: 'save',\r\n \"matchProps\": [\r\n {\r\n name: \"routeid1\",\r\n key: \"routeid1\",\r\n },\r\n {\r\n name: \"navigation.Id\",\r\n key: \"Id\",\r\n }\r\n ],\r\n type: 'get',\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n 'edit': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'edit',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'exitfullscreen': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'exitfullscreen',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'fullscreen': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'fullscreen',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'createduplicate': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'createduplicate',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n },\r\n 'afterSave': {\r\n 'saveduplicate': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'save',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin') + `/api/Holidays/Add`,\r\n //\"url\":\"http://localhost:6004/api/Holidays/Add\",\r\n type: 'post',\r\n \"matchProps\": [{\r\n name: \"routeid1\",\r\n key: \"routeid1\",\r\n }]\r\n }\r\n ],\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n\r\n 'save': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'save',// http://development.delasoft.com:8443/${getEnvVariable('ModuleKey')}-application/api/Property/23123/Add\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin') + `/api/Holidays/Update`,\r\n //\"url\":\"http://localhost:6004/api/Holidays/Update\",\r\n type: 'put',\r\n \"matchProps\": [{\r\n name: \"routeid1\",\r\n key: \"routeid1\",\r\n },\r\n {\r\n name: \"Id\",\r\n key: \"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\n }\r\n },\r\n\r\n }\r\n}\r\n\r\nexport default EditHoliday\r\n","import HolidayAdd from './newholidays';\r\nimport EditHoliday from './editholidays'\r\nimport { getEnvVariable } from '../../../modules/environmentalList';\r\nconst HolidaysGrid = {\r\n \"title\": \"Holidays\",\r\n \"type\": \"grid\",\r\n \"key\": \"HolidaysGrid\",\r\n \"gridkey\": 'HolidaysGrid',\r\n \"name\": \"HolidaysGrid\",\r\n \"hasreport\": true,\r\n \"addRoute\": true,\r\n \"routeParams\": { replace: 'holidays', param: 'Id', routeName: 'id' },\r\n values: {\r\n addOpen: false,\r\n editOpen: false,\r\n editInfo: null,\r\n load: false,\r\n allgriddata:null,\r\n navigateItem: null,\r\n navigation :null,\r\n reportOpen: false,\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null,\r\n },\r\n sharedValues: ['addOpen', 'editOpen', 'editInfo', 'allgriddata', 'navigateItem', 'navigation', 'loadreportfilter', 'ReportJsonQueryStr', 'reportOpen'],\r\n aliases: {\r\n addOpen: 'addOpen',\r\n editOpen: 'editOpen',\r\n editInfo: 'editInfo',\r\n allgriddata: 'allgriddata',\r\n navigateItem: 'navigateItem',\r\n navigation: 'navigation',\r\n reportOpen: 'reportOpen',\r\n loadreportfilter: 'loadreportfilter',\r\n ReportJsonQueryStr: 'ReportJsonQueryStr'\r\n },\r\n headerProps: {\r\n title: \"Holidays\",\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": \"Administration\", \"tab\": 1, \"materialicon\": \"spellcheck\", href: getEnvVariable('InternalBasepath'), className: 'breadcrumb-item text-dark', class: 'text-dark' },\r\n { \"link\": \"Holidays\", \"materialicon\": \"today\", className: 'breadcrumb-item ', class: '', color:'#074078' }\r\n\r\n ],\r\n }\r\n ],\r\n actions: [\r\n {\r\n type: 'fab',\r\n icon: 'clear',\r\n name: 'clear',\r\n color: 'primary',\r\n title: 'Clear Filters',\r\n menucolor: '#22a9b3',\r\n hideon: 'clear',\r\n hidevalue: false\r\n },\r\n\r\n {\r\n type: 'menu',\r\n icon: 'excel',\r\n name: 'excel',\r\n color: 'primary',\r\n title: 'Export to Excel',\r\n menucolor: '#c90685',\r\n hideon: 'excel',\r\n hidevalue: false,\r\n items: [{\r\n name: 'Export Current Page',\r\n action: 'filtercurrent'\r\n },\r\n {\r\n name: 'Export All Pages',\r\n action: 'filterall'\r\n }\r\n ]\r\n },\r\n // {\r\n // type: 'fab',\r\n // icon: 'reports',\r\n // name: 'reports',\r\n // color: 'primary',\r\n // title: 'Save Report',\r\n // menucolor: '#C85A54',\r\n // hideon: 'reports',\r\n // hidevalue: false\r\n // },\r\n {\r\n type: 'fab',\r\n icon: 'add',\r\n name: 'add',\r\n color: 'primary',\r\n hideon: 'addButton',\r\n hidevalue: true,\r\n title: 'Add Holiday',\r\n menucolor: '#36088a'\r\n },\r\n ]\r\n },\r\n \"columns\": [\r\n {\r\n \"title\": \"Day\",\r\n \"field\": \"HolidayDay\", \r\n \"show\": true,\r\n \"width\": 120,\r\n },\r\n {\r\n \"title\": \"Date\",\r\n \"field\": \"HolidayDate\",\r\n \"show\": true,\r\n \"width\": 60,\r\n filter: \"date\",\r\n format: \"{0:d}\",\r\n convert: \"MM/DD\"\r\n },\r\n {\r\n \"title\": \"Status\",\r\n \"field\": \"StatusDesc\",\r\n \"show\": true,\r\n \"width\": 60,\r\n },\r\n {\r\n \"title\": \"Created By\",\r\n \"field\": \"CreatedByName\",\r\n \"show\": true,\r\n \"width\": 100\r\n },\r\n {\r\n \"title\": \"Created On\",\r\n \"field\": \"CreatedOn\",\r\n \"show\": true,\r\n \"width\": 100,\r\n filter: \"date\",\r\n format: \"{0:d}\",\r\n convert: \"MM/DD/YYYY hh:mm:ss A\"\r\n },\r\n {\r\n \"title\": \"Updated By\",\r\n \"field\": \"UpdatedByName\",\r\n \"show\": true,\r\n \"width\": 100\r\n },\r\n {\r\n \"title\": \"Updated On\",\r\n \"field\": \"UpdatedOn\",\r\n \"show\": true,\r\n \"width\": 100,\r\n filter: \"date\",\r\n format: \"{0:d}\",\r\n convert: \"MM/DD/YYYY hh:mm:ss A\"\r\n },\r\n\r\n ],\r\n displayName: 'editInfo',\r\n allgriddata: 'allgriddata',\r\n navigateItem: 'navigateItem',\r\n navigation: 'navigation',\r\n loadreportfilter: 'loadreportfilter',\r\n ReportJsonQueryStr: 'ReportJsonQueryStr',\r\n mapActionsToEffects: {\r\n load: {\r\n rules: [{\r\n run: {\r\n valid: [{\r\n type: 'grid',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin')+`/api/Holidays/Grid?`,\r\n //\"url\":\"http://localhost:6004/api/Holidays/Grid?\",\r\n \"matchProps\": [{\r\n name: \"routeid1\",\r\n key: \"routeid1\",\r\n }],\r\n type: 'get',\r\n saveAs: {\r\n key: 'data'\r\n }\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]// 1 intital load\r\n },\r\n addOpen:{\r\n rules: [{\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"addOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n run: {\r\n valid: [{\r\n type: 'grid',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin')+`/api/Holidays/Grid?`,\r\n //\"url\":\"http://localhost:6004/api/Holidays/Grid?\",\r\n \"matchProps\": [{\r\n name: \"routeid1\",\r\n key: \"routeid1\",\r\n }],\r\n type: 'get',\r\n saveAs: {\r\n key: 'data'\r\n }\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n editOpen:{\r\n rules: [{\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"editOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n run: {\r\n valid: [{\r\n type: 'grid',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin')+`/api/Holidays/Grid?`,\r\n //\"url\":\"http://localhost:6004/api/Holidays/Grid?\",\r\n \"matchProps\": [{\r\n name: \"routeid1\",\r\n key: \"routeid1\",\r\n }],\r\n type: 'get',\r\n saveAs: {\r\n key: 'data'\r\n }\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n 'add': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'value',\r\n key: 'addOpen',\r\n result: true\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'display': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'value',\r\n key: 'editOpen',\r\n result: true\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'editInfo',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'allgriddata',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'navigateItem',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'navigation',\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'report': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'value',\r\n key: 'reportOpen',\r\n result: true\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'loadreportfilter',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'ReportJsonQueryStr',\r\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 HolidaysReport = {\r\n type: 'popup',\r\n key: 'HolidaysReport',\r\n name: 'HolidaysReport',\r\n\r\n anchor: 'right',\r\n open: false,\r\n aliases: {\r\n open: 'reportOpen'\r\n },\r\n sharedValues: ['open', 'loadreportfilter', 'ReportJsonQueryStr'],\r\n container: {\r\n values: {\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null\r\n },\r\n mapValues: {\r\n Report: [\r\n {\r\n key: 'ReportJsonQueryStr',\r\n name: 'ReportJsonQueryStr'\r\n },\r\n {\r\n key: 'loadreportfilter',\r\n name: 'loadreportfilter'\r\n },\r\n ],\r\n },\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: '',\r\n components: [\r\n {\r\n name: 'Report'\r\n },\r\n ]\r\n }\r\n ]\r\n\r\n },\r\n components: {\r\n Report: {\r\n \"type\": \"form\",\r\n \"key\": \"Report\",\r\n \"name\": \"Report\",\r\n aliases: {\r\n\r\n },\r\n sharedValues: ['ReportJsonQueryStr', 'loadreportfilter'],\r\n values: {\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null\r\n },\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: '',\r\n components: [{\r\n name: 'ReportJsonQueryStr',\r\n type: 'div',\r\n\r\n },\r\n {\r\n name: 'loadreportfilter',\r\n type: 'div',\r\n\r\n }],\r\n\r\n },\r\n ],\r\n },\r\n \"components\": {\r\n \"ReportJsonQueryStr\": {\r\n \"type\": \"gridreport\",\r\n \"gridkey\": 'HolidaysGrid',\r\n },\r\n },\r\n }\r\n }\r\n }\r\n}\r\n\r\nconst HolidaysContainer = {\r\n type: 'container',\r\n key: 'HolidaysContainer',\r\n values: {\r\n addOpen: false,\r\n editOpen: false,\r\n editInfo: null,\r\n allgriddata: null,\r\n navigateItem: null,\r\n navigation :null,\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null,\r\n reportOpen : false,\r\n },\r\n mapValues: {\r\n HolidayAdd: [\r\n {\r\n key: 'addOpen',\r\n name: 'open'\r\n }\r\n ],\r\n EditHoliday: [\r\n {\r\n key: 'editOpen',\r\n name: 'open'\r\n },\r\n {\r\n key: 'editInfo',\r\n name: 'editInfo'\r\n },\r\n {\r\n key: 'allgriddata',\r\n name: 'allgriddata'\r\n },\r\n {\r\n key: 'navigateItem',\r\n name: 'navigateItem'\r\n },\r\n {\r\n key: 'navigation',\r\n name: 'navigation'\r\n },\r\n ],\r\n HolidaysGrid: [\r\n {\r\n key: 'editOpen',\r\n name: 'editOpen'\r\n },\r\n {\r\n key: 'addOpen',\r\n name: 'addOpen'\r\n },\r\n {\r\n key: 'reportOpen',\r\n name: 'reportOpen'\r\n },\r\n {\r\n key: 'ReportJsonQueryStr',\r\n name: 'ReportJsonQueryStr'\r\n },\r\n {\r\n key: 'loadreportfilter',\r\n name: 'loadreportfilter'\r\n },\r\n ],\r\n HolidaysReport: [\r\n {\r\n key: 'reportOpen',\r\n name: 'open'\r\n },\r\n {\r\n key: 'loadreportfilter',\r\n name: 'loadreportfilter'\r\n },\r\n {\r\n key: 'ReportJsonQueryStr',\r\n name: 'ReportJsonQueryStr'\r\n },\r\n\r\n ]\r\n\r\n },\r\n mapActionsToEffects: {\r\n 'addOpen': {\r\n rules: [\r\n {\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"addOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n uncheck:true,\r\n run: {\r\n valid: [\r\n {\r\n type: 'removelayout',\r\n name: 'HolidayAdd',\r\n }\r\n\r\n ],\r\n inValid:[\r\n {\r\n type: 'addlayout',\r\n name: 'HolidayAdd',\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'editOpen': {\r\n rules: [\r\n {\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"editOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n uncheck:true,\r\n run: {\r\n valid: [\r\n {\r\n type: 'removelayout',\r\n name: 'EditHoliday',\r\n }\r\n\r\n ],\r\n inValid:[\r\n {\r\n type: 'addlayout',\r\n name: 'EditHoliday',\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'reportOpen': {\r\n rules: [\r\n {\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"reportOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n uncheck: true,\r\n run: {\r\n valid: [\r\n {\r\n type: 'removelayout',\r\n name: 'HolidaysReport',\r\n }\r\n\r\n ],\r\n inValid: [\r\n {\r\n type: 'addlayout',\r\n name: 'HolidaysReport',\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n },\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [\r\n {\r\n name: 'HolidaysGrid'\r\n },\r\n // {\r\n // name: 'NoteAdd'\r\n // },\r\n // {\r\n // name: 'NoteEdit'\r\n // },\r\n ]\r\n }\r\n ]\r\n\r\n },\r\n components: {\r\n HolidaysGrid: HolidaysGrid,\r\n HolidayAdd: HolidayAdd,\r\n EditHoliday: EditHoliday,\r\n HolidaysReport:HolidaysReport\r\n }\r\n}\r\n\r\n\r\nexport default HolidaysContainer\r\n\r\n","\r\nimport React, { Fragment, useEffect, useRef } from \"react\"\r\nimport Container from '../../../core/controls/components/container'\r\nimport HolidayGrid from '../../jsons/holidays/holidaysgrid'\r\n\r\n\r\n//wrappers folder\r\n\r\n//xttype\r\nconst HolidayContainer = (props) => {\r\n\r\n return (\r\n <Fragment>\r\n <Container {...HolidayGrid} {...props} />\r\n </Fragment>\r\n )\r\n}\r\n\r\nexport default HolidayContainer\r\n\r\n\r\n\r\n","\r\nimport { getEnvVariable } from \"../../../modules/environmentalList\"\r\n\r\nconst AddNotice = {\r\n \"type\": \"popup\",\r\n \"key\": \"AddNotice\",\r\n \"name\": \"AddNotice\",\r\n anchor: 'right',\r\n open: false,\r\n aliases: {\r\n open: 'addOpen'\r\n },\r\n sharedValues: ['open'],\r\n container: {\r\n values: { save: false, back: false, fullscreen: false, },\r\n mapValues: {\r\n header: [\r\n { key: 'exitfullscreen', name: 'exitfullscreen' },\r\n { key: 'fullscreen', name: 'fullscreen' },\r\n ],\r\n Notice: [{ key: 'save', name: 'save' },\r\n { key: 'exitfullscreen', name: 'exitfullscreen' },\r\n { key: 'fullscreen', name: 'fullscreen' },]\r\n },\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [{\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'header',\r\n type: 'div',\r\n className: 'col-12 ',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12',\r\n }\r\n }],\r\n\r\n },\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'Notice',\r\n type: 'div',\r\n className: 'col-12 pl-4 m-4',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12 pl-4 m-4',\r\n }\r\n }],\r\n\r\n },\r\n ]\r\n },\r\n\r\n components: {\r\n header: {\r\n name: \"header\",\r\n type: 'header',\r\n title: 'Notice',\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": \"Add Master Template\", \"materialicon\": \"document_scanner\", className: 'eps-breadcrumb-item ', class: 'text-light' },\r\n ]\r\n }\r\n ],\r\n layout: {},\r\n actions: [\r\n {\r\n type: 'icon',\r\n icon: 'back',\r\n name: 'back',\r\n hideon: 'back',\r\n hidevalue: false,\r\n title: 'Back'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'save',\r\n name: 'save',\r\n hideon: 'save',\r\n hidevalue: false,\r\n title: 'Save Master Template '\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'fullscreen',\r\n name: 'fullscreen',\r\n hidevalue: false,\r\n title: 'FullScreen'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'exitfullscreen',\r\n name: 'exitfullscreen',\r\n hideon: 'fullscreen',\r\n hidevalue: false,\r\n title: 'Exit FullScreen'\r\n }\r\n ],\r\n },\r\n Notice: {\r\n \"type\": \"form\",\r\n \"key\": \"Notice\",\r\n \"name\": \"Notice\",\r\n aliases: {\r\n save: 'save',\r\n },\r\n \"routeParams\": { replace: 'masternotices', param: 'Id', routeName: 'id' },\r\n sharedValues: ['save', 'back', 'exitfullscreen', 'fullscreen'],\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [\r\n {\r\n name: 'Name',\r\n type: 'div',\r\n className: 'col-10',\r\n sub: {\r\n type: 'div',\r\n className: 'col-10',\r\n }\r\n },\r\n ],\r\n },\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [\r\n {\r\n name: 'Description',\r\n type: 'div',\r\n className: 'col-10',\r\n sub: {\r\n type: 'div',\r\n className: 'col-10'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 2,\r\n type: 'div',\r\n className: 'row',\r\n components: [\r\n {\r\n name: 'SubModuleKey',\r\n type: 'div',\r\n className: 'col-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-6'\r\n }\r\n },\r\n {\r\n name: 'SitePermitTypeId',\r\n type: 'div',\r\n className: 'col-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-6'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 3,\r\n type: 'div',\r\n className: 'row',\r\n components: [\r\n {\r\n name: 'Status',\r\n type: 'div',\r\n className: 'col-10',\r\n sub: {\r\n type: 'div',\r\n className: 'col-10'\r\n }\r\n },\r\n ]\r\n },\r\n\r\n\r\n ],\r\n },\r\n values: {\r\n Name: '',\r\n Description: '',\r\n SubModuleKey: '',\r\n Status: 'I',\r\n SitePermitTypeId: '',\r\n },\r\n\r\n \"components\": {\r\n Name: {\r\n \"type\": \"textfield\",\r\n \"key\": \"Name\",\r\n \"label\": \"Master Template Name\",\r\n \"name\": \"Name\",\r\n },\r\n Description: {\r\n \"type\": \"textfield\",\r\n \"key\": \"Description\",\r\n \"label\": \"Description\",\r\n \"name\": \"Description\",\r\n multiline: true,\r\n },\r\n SubModuleKey: {\r\n \"type\": \"dropdown\",\r\n \"key\": \"SubModuleKey\",\r\n \"label\": \"Sub Module\",\r\n \"name\": \"SubModuleKey\",\r\n extraProps: {\r\n transformProps: {\r\n label: 'SubModuleName',\r\n value: 'Key'\r\n },\r\n },\r\n },\r\n SitePermitTypeId: {\r\n \"type\": \"dropdown\",\r\n \"key\": \"SitePermitTypeId\",\r\n \"label\": \"Permit Type\",\r\n \"name\": \"SitePermitTypeId\",\r\n extraProps: {\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Id'\r\n },\r\n },\r\n },\r\n Status: {\r\n \"type\": \"toggle\",\r\n \"key\": \"Status\",\r\n \"label\": \"Status\",\r\n \"name\": \"Status\",\r\n disabled: true,\r\n conditions: {\r\n enable: true,\r\n },\r\n extraProps: {\r\n transformProps: {\r\n I: false,\r\n A: true,\r\n 'true': 'A',\r\n 'false': 'I'\r\n },\r\n }\r\n },\r\n\r\n },\r\n mapActionsToEffects: {\r\n 'onLoad': {\r\n init: {\r\n rules: [{\r\n run:\r\n {\r\n valid: [\r\n {\r\n type: 'load',\r\n name: 'SubModuleKey',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('MasterAdmin') + `/api/module/${getEnvVariable('ModuleKey')}/submodule/All/Active/IsConfigurable`,\r\n type: 'get',\r\n saveAs: {\r\n key: 'items'\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n type: 'validations',\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('Application') + `/api/ProjectMessages/RulesByName?name=admin.MasterTemplates`,\r\n type: 'get',\r\n }\r\n ],\r\n transformProps: {\r\n removesubfieldname: getEnvVariable('ModuleKey') + 'ADMIN.MASTERTEMPLATES_'\r\n }\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n 'exitfullscreen': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'exitfullscreen',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'fullscreen': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'fullscreen',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n },\r\n 'onChange': {\r\n SubModuleKey: {\r\n rules: [\r\n {\r\n canOverwrite: true,\r\n check: [{\r\n condition: \"AND\",\r\n rules: [\r\n { name: \"SubModuleKey\", type: \"!=\", value: \"\", rules: [] }]\r\n }],\r\n fields: [\"SubModuleKey\"],\r\n run: {\r\n type: \"check\",\r\n valid: [\r\n {\r\n type: 'load',\r\n name: 'SitePermitTypeId',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('AdminConfig') + `/api/SitePermitTypes/SubModuleKey/Active/{SubModuleKey}`,\r\n type: 'get',\r\n \"matchProps\": [{\r\n name: \"SubModuleKey\",\r\n key: \"SubModuleKey\",\r\n }],\r\n saveAs: {\r\n key: 'items'\r\n }\r\n }\r\n ]\r\n },\r\n ],\r\n invalid: []\r\n },\r\n uncheck: false\r\n }\r\n ],\r\n fields: [\r\n 'SubModuleKey'\r\n ]\r\n },\r\n },\r\n 'afterSave': {\r\n 'save': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'save',\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('TemplateAPI') + `/api/MasterTemplates/Add`,\r\n type: 'post',\r\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 AddNotice\r\n\r\n\r\n\r\n","import { getEnvVariable } from \"../../../modules/environmentalList\"\r\n\r\nconst ViewNotice = {\r\n \"type\": \"popup\",\r\n \"key\": \"ViewNotice\",\r\n \"name\": \"ViewNotice\",\r\n anchor: 'right',\r\n open: false,\r\n aliases: {\r\n open: 'editOpen',\r\n },\r\n sharedValues: ['open', 'back'],\r\n container: {\r\n \"addRoute\": true,\r\n 'removelayout': 'ViewNotice',\r\n values: { editInfo: null, edit: false, createduplicate: false, fullscreen: false, back: false, allgriddata: null, navigation: null },\r\n mapValues: {\r\n header: [\r\n { key: 'edit', name: 'edit' },\r\n { key: 'exitfullscreen', name: 'exitfullscreen' },\r\n { key: 'fullscreen', name: 'fullscreen' },\r\n { key: 'createduplicate', name: 'createduplicate' },\r\n ],\r\n sectionscomp: [\r\n { key: 'editInfo', name: 'editInfo' },\r\n { key: 'allgriddata', name: 'allgriddata' },\r\n { key: 'save', name: 'save' },\r\n { key: 'saveduplicate', name: 'saveduplicate' },\r\n { key: 'edit', name: 'edit' },\r\n { key: 'exitfullscreen', name: 'exitfullscreen' },\r\n { key: 'fullscreen', name: 'fullscreen' },\r\n { key: 'createduplicate', name: 'createduplicate' },\r\n { key: 'back', name: 'back' },\r\n { key: 'navigation', name: 'navigation' },]\r\n },\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [{\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'header',\r\n type: 'div',\r\n className: 'col-12 ',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12',\r\n }\r\n }],\r\n\r\n },\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'sectionscomp',\r\n type: 'div',\r\n className: 'col-12 m-4',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12 m-4',\r\n }\r\n }],\r\n\r\n },\r\n ]\r\n },\r\n\r\n components: {\r\n header: {\r\n name: \"header\",\r\n type: 'header',\r\n title: 'Details',\r\n\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": \"View/Edit Master Template\", \"materialicon\": \"document_scanner\", className: 'eps-breadcrumb-item ', class: 'text-light' },\r\n ]\r\n }\r\n ],\r\n layout: {},\r\n actions: [\r\n {\r\n type: 'icon',\r\n icon: 'back',\r\n name: 'back',\r\n hideon: 'back',\r\n hidevalue: false,\r\n title: 'Back'\r\n },\r\n\r\n {\r\n type: 'icon',\r\n icon: 'edit',\r\n name: 'edit',\r\n hideon: 'createduplicate',\r\n hideanother: 'edit',\r\n hidevalue: true,\r\n title: 'Edit Master Template'\r\n },\r\n // {\r\n // type: 'icon',\r\n // icon: 'duplicate',\r\n // name: 'createduplicate',\r\n // hideon: 'edit',\r\n // hideanother: 'createduplicate',\r\n // hidevalue: true,\r\n // title: 'Clone Master Template'\r\n // },\r\n {\r\n type: 'icon',\r\n icon: 'save',\r\n name: 'save',\r\n hideon: 'edit',\r\n hidevalue: false,\r\n title: 'Save Master Template'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'save',\r\n name: 'saveduplicate',\r\n hideon: 'createduplicate',\r\n hidevalue: false,\r\n title: 'Save Master Template'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'previtem',\r\n name: 'previtem',\r\n hideon: 'previtem',\r\n hidevalue: false,\r\n title: 'Previous Item'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'nextitem',\r\n name: 'nextitem',\r\n hideon: 'nextitem',\r\n hidevalue: false,\r\n title: 'Next Item'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'fullscreen',\r\n name: 'fullscreen',\r\n title: 'Full Screen',\r\n hidevalue: false,\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'exitfullscreen',\r\n name: 'exitfullscreen',\r\n title: 'Exit Full Screen',\r\n hideon: 'fullscreen',\r\n hidevalue: false\r\n }\r\n ],\r\n },\r\n sectionscomp: {\r\n type: \"sections\",\r\n name: \"sectionscomp\",\r\n key: \"sectionscomp\",\r\n initRun: true,\r\n layout: {\r\n 'Details': {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row col',\r\n components: [\r\n {\r\n name: 'Name',\r\n type: 'div',\r\n className: 'col-8',\r\n sub: {\r\n type: 'div',\r\n className: 'col-8',\r\n }\r\n },\r\n ],\r\n },\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row col',\r\n components: [\r\n {\r\n name: 'Description',\r\n type: 'div',\r\n className: 'col-10',\r\n sub: {\r\n type: 'div',\r\n className: 'col-10'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 2,\r\n type: 'div',\r\n className: 'row col',\r\n components: [\r\n {\r\n name: 'SubModuleKey',\r\n type: 'div',\r\n className: 'col-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-6'\r\n }\r\n },\r\n {\r\n name: 'SitePermitTypeId',\r\n type: 'div',\r\n className: 'col-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-6'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 3,\r\n type: 'div',\r\n className: 'row col',\r\n components: [\r\n {\r\n name: 'Status',\r\n type: 'div',\r\n className: 'col-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-6'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 4,\r\n type: 'div',\r\n className: 'row col',\r\n components: [{\r\n name: 'CreatedOn',\r\n type: 'div',\r\n className: 'col-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-6'\r\n }\r\n },\r\n {\r\n name: 'CreatedByName',\r\n type: 'div',\r\n className: 'col-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-6'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 5,\r\n type: 'div',\r\n className: 'row col',\r\n components: [\r\n {\r\n name: 'UpdatedOn',\r\n type: 'div',\r\n className: 'col-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-6'\r\n }\r\n },\r\n {\r\n name: 'UpdatedByName',\r\n type: 'div',\r\n className: 'col-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-6'\r\n }\r\n },]\r\n },\r\n ],\r\n },\r\n 'Template': {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [\r\n {\r\n name: 'SideBarTables',\r\n type: 'div',\r\n className: 'col-10',\r\n sub: {\r\n type: 'div',\r\n className: 'col-10',\r\n }\r\n },\r\n ],\r\n },\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [\r\n {\r\n name: 'TemplateId',\r\n type: 'div',\r\n className: 'col-10',\r\n sub: {\r\n type: 'div',\r\n className: 'col-10',\r\n }\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n // 'History': {\r\n // group: [\r\n // {\r\n // order: 0,\r\n // type: 'div',\r\n // className: 'row',\r\n // components: [{\r\n // name: 'History',\r\n // type: 'div',\r\n // className: 'col-12',\r\n // sub: {\r\n // type: 'div',\r\n // className: 'col-12'\r\n // }\r\n // },]\r\n // },\r\n // ],\r\n // }\r\n },\r\n aliases: {\r\n 'editInfo': 'editInfo',\r\n 'allgriddata': 'allgriddata',\r\n 'navigateItem': 'navigateItem'\r\n },\r\n sharedValues: ['editInfo', 'allgriddata', 'navigateItem', 'navigation', 'edit', 'save', 'createduplicate', 'exitfullscreen', 'fullscreen', 'back'],\r\n validationMapKeys: [],\r\n values: {\r\n Id: '',\r\n Name: '',\r\n Description: '',\r\n SubModuleKey: '',\r\n Status: 'I',\r\n SitePermitTypeId: '',\r\n UpdatedByName: '',\r\n CreatedByName: '',\r\n UpdatedOn: '',\r\n CreatedOn: '',\r\n UpdatedBy: '',\r\n CreatedBy: '',\r\n TemplateId: '',\r\n SideBarTables: '',\r\n // History:''\r\n },\r\n fieldsinSectionNames: {\r\n Name: 'Details',\r\n Description: 'Details',\r\n SubModuleKey: 'Details',\r\n Status: 'Details',\r\n SitePermitTypeId: 'Details',\r\n UpdatedByName: 'Details',\r\n CreatedByName: 'Details',\r\n UpdatedOn: 'Details',\r\n CreatedOn: 'Details',\r\n UpdatedBy: 'Details',\r\n CreatedBy: 'Details',\r\n TemplateId: 'Template',\r\n SideBarTables: 'Template',\r\n },\r\n\r\n sections: {\r\n type: 'tab',\r\n sectionNames: ['Details', 'Template'],\r\n steps: ['Details', 'Template' ],\r\n },\r\n components: {\r\n Name: {\r\n \"changefieldto\": \"textfield\",\r\n \"type\": \"label\",\r\n custom: true,\r\n \"key\": \"Name\",\r\n \"label\": \"Master Template Name\",\r\n \"name\": \"Name\",\r\n },\r\n Description: {\r\n \"changefieldto\": \"textfield\",\r\n \"type\": \"label\",\r\n custom: true,\r\n \"key\": \"Description\",\r\n \"label\": \"Description\",\r\n \"name\": \"Description\",\r\n multiline: true,\r\n },\r\n SubModuleKey: {\r\n \"changefieldto\": \"label\",\r\n \"type\": \"label\",\r\n custom: true,\r\n \"key\": \"SubModuleKey\",\r\n \"label\": \"Sub Module\",\r\n \"name\": \"SubModuleKey\",\r\n extraProps: {\r\n transformProps: {\r\n label: 'SubModuleName',\r\n value: 'Key'\r\n },\r\n },\r\n },//checkauto\r\n SitePermitTypeId: {\r\n \"changefieldto\": \"label\",\r\n \"type\": \"label\",\r\n custom: true,\r\n \"key\": \"SitePermitTypeId\",\r\n \"label\": \"Permit Type\",\r\n \"name\": \"SitePermitTypeId\",\r\n extraProps: {\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Id'\r\n },\r\n },\r\n },\r\n Status: {\r\n \"changefieldto\": \"toggle\",\r\n \"type\": \"label\",\r\n custom: true,\r\n \"key\": \"Status\",\r\n \"label\": \"Status\",\r\n \"name\": \"Status\",\r\n extraProps: {\r\n transformProps: {\r\n I: false,\r\n A: true,\r\n 'true': 'A',\r\n 'false': 'I'\r\n },\r\n }\r\n },\r\n CreatedOn: {\r\n \"type\": \"label\",\r\n \"key\": \"CreatedOn\",\r\n custom: true,\r\n \"label\": \"Created On\",\r\n name: \"CreatedOn\",\r\n changefieldto: \"label\",\r\n },\r\n CreatedByName: {\r\n \"type\": \"label\",\r\n custom: true,\r\n \"key\": \"CreatedByName\",\r\n \"label\": \"Created By\",\r\n name: \"CreatedByName\",\r\n changefieldto: \"label\",\r\n },\r\n UpdatedOn: {\r\n \"type\": \"label\",\r\n custom: true,\r\n \"key\": \"UpdatedOn\",\r\n \"label\": \"Updated On\",\r\n name: \"UpdatedOn\",\r\n changefieldto: \"label\",\r\n },\r\n UpdatedByName: {\r\n \"type\": \"label\",\r\n custom: true,\r\n \"key\": \"UpdatedByName\",\r\n \"label\": \"Updated By\",\r\n name: \"UpdatedByName\",\r\n changefieldto: \"label\",\r\n },\r\n SideBarTables: {\r\n \"changefieldto\": \"checkauto\",\r\n \"type\": \"label\",\r\n custom: true,\r\n \"key\": \"SideBarTables\",\r\n \"label\": \"Record Sidebar List(s)\",\r\n \"name\": \"SideBarTables\",\r\n ismulti: true,\r\n limitTags: 5,\r\n extraProps: {\r\n transformProps: {\r\n label: 'TableName',\r\n value: 'TableName'\r\n },\r\n },\r\n },\r\n TemplateId: {\r\n \"type\": \"template\",\r\n custom: true,\r\n \"key\": \"template\",\r\n \"label\": \"Notice Template\",\r\n name: \"TemplateId\",\r\n changefieldto: \"template\",\r\n customField: true,\r\n edit: false,\r\n extraProps: {\r\n transformProps: {\r\n label: 'label',\r\n value: 'name'\r\n },\r\n },\r\n },\r\n // NoticeHistory: {\r\n // \"changefieldto\": \"grid\",\r\n // \"key\": \"NoticeHistory\",\r\n // \"label\": \"Details History\",\r\n // \"name\": \"NoticeHistory\",\r\n // \"type\": \"grid\",\r\n // customField: true,\r\n // custom: true,\r\n // values: [],\r\n // headerProps: {\r\n // title: \"History\",\r\n // components: [\r\n\r\n // ],\r\n // actions: [\r\n // {\r\n // type: 'fab',\r\n // icon: 'clear',\r\n // name: 'clear',\r\n // color: 'primary',\r\n // title: 'Clear Filters',\r\n // menucolor: '#22a9b3',\r\n // hideon: 'clear',\r\n // hidevalue: false\r\n // },\r\n\r\n // {\r\n // type: 'fab',\r\n // icon: 'excel',\r\n // name: 'excel',\r\n // color: 'primary',\r\n // title: 'Export to Excel',\r\n // menucolor: '#c90685',\r\n // hideon: 'excel',\r\n // hidevalue: false\r\n // },\r\n // ]\r\n // },\r\n // \"columns\": [\r\n // {\r\n // \"title\": \"Field Name\",\r\n // \"field\": \"FieldLabel\",\r\n // \"show\": true,\r\n // \"width\": 150,\r\n // },\r\n // {\r\n // \"title\": \"Old Value\",\r\n // \"field\": \"OldValue\",\r\n // \"show\": true,\r\n // \"width\": 150,\r\n // },\r\n // {\r\n // \"title\": \"New Value\",\r\n // \"field\": \"NewValue\",\r\n // \"show\": true,\r\n // \"width\": 150,\r\n\r\n // },\r\n // {\r\n // \"title\": \"Updated By\",\r\n // \"field\": \"CreatedByName\",\r\n // \"show\": true,\r\n // \"width\": 150,\r\n\r\n // },\r\n // {\r\n // \"title\": \"Updated On\",\r\n // \"field\": \"CreatedOn\",\r\n // \"show\": true,\r\n // \"width\": 150,\r\n // filter: \"date\",\r\n // format: \"{0:d}\",\r\n // convert: \"MM/DD/YYYY hh:mm:ss A\"\r\n // },\r\n // ],\r\n // mapActionsToEffects: {\r\n // load: {\r\n // rules: [{\r\n // run: {\r\n // valid: [{\r\n // type: 'grid',\r\n // \"read\": [\r\n // {\r\n // url: getEnvVariable('Application') + `/api/MasterTemplates/History/{Id}?`,\r\n // \"matchProps\": [{\r\n // name: \"routeid1\",\r\n // key: \"routeid1\",\r\n // },\r\n // {\r\n // name: \"navigation.Id\",\r\n // key: \"Id\",\r\n // },\r\n // ],\r\n // type: 'get',\r\n // saveAs: {\r\n // key: 'data'\r\n // }\r\n // }\r\n // ]\r\n // },\r\n // ]\r\n // }\r\n // }]\r\n // },\r\n // }\r\n // },\r\n },\r\n mapActionsToEffects: {\r\n 'onLoad': {\r\n 'init': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'load',\r\n name: 'SubModuleKey',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('MasterAdmin') + `/api/module/${getEnvVariable('ModuleKey')}/submodule/All/Active/IsConfigurable`,\r\n type: 'get',\r\n saveAs: {\r\n key: 'items'\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n type: 'load',\r\n name: 'SideBarTables',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Application') + `/api/SubModuleSideBar/All/{SubModuleKey}`,\r\n type: 'get',\r\n \"matchProps\": [{\r\n name: \"navigation.SubModuleKey\",\r\n key: \"SubModuleKey\",\r\n }],\r\n saveAs: {\r\n key: 'items'\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n type: 'load',\r\n name: 'TemplateId',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Application') + `/api/BusinessRules/Builder/Template?SitePermitTypeId={SitePermitTypeId}`,\r\n type: 'get',\r\n \"matchProps\": [{\r\n name: \"navigation.SitePermitTypeId\",\r\n key: \"SitePermitTypeId\",\r\n }],\r\n saveAs: {\r\n key: 'items'\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n type: 'load',\r\n name: 'SitePermitTypeId',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('AdminConfig') + `/api/SitePermitTypes/SubModuleKey/Active/{SubModuleKey}`,\r\n type: 'get',\r\n \"matchProps\": [{\r\n name: \"navigation.SubModuleKey\",\r\n key: \"SubModuleKey\",\r\n }],\r\n saveAs: {\r\n key: 'items'\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n type: 'validations',\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('Application') + `/api/ProjectMessages/RulesByName?name=admin.MasterTemplates`,\r\n type: 'get',\r\n }\r\n ],\r\n transformProps: {\r\n removesubfieldname: getEnvVariable('ModuleKey') + 'ADMIN.MASTERTEMPLATES_'\r\n }\r\n },\r\n {\r\n type: 'businessrules',\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('Application') + `/api/BusinessRules/Grid/modulemaster.NoticeS`,\r\n type: 'get',\r\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 'onChange': {\r\n SubModuleKey: {\r\n rules: [\r\n {\r\n canOverwrite: true,\r\n check: [{\r\n condition: \"AND\",\r\n rules: [\r\n { name: \"SubModuleKey\", type: \"!=\", value: \"\", rules: [] }]\r\n }],\r\n fields: [\"SubModuleKey\"],\r\n run: {\r\n type: \"check\",\r\n valid: [\r\n {\r\n type: 'load',\r\n name: 'SitePermitTypeId',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('AdminConfig') + `/api/SitePermitTypes/SubModuleKey/Active/{SubModuleKey}`,\r\n type: 'get',\r\n \"matchProps\": [{\r\n name: \"navigation.SubModuleKey\",\r\n key: \"SubModuleKey\",\r\n }],\r\n saveAs: {\r\n key: 'items'\r\n }\r\n }\r\n ]\r\n },\r\n ],\r\n invalid: []\r\n },\r\n uncheck: false\r\n }\r\n ],\r\n fields: [\r\n 'SubModuleKey'\r\n ]\r\n },\r\n 'navigation': {\r\n rules: [{\r\n run:\r\n {\r\n valid: [\r\n {\r\n type: 'initial',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('TemplateAPI') + `/api/MasterTemplates/{Id}`,\r\n key: 'save',\r\n \"matchProps\": [\r\n {\r\n name: \"navigation.Id\",\r\n key: \"Id\",\r\n },\r\n ],\r\n type: 'get',\r\n }\r\n ]\r\n },\r\n\r\n ]\r\n }\r\n }]\r\n },\r\n 'edit': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'edit',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'exitfullscreen': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'exitfullscreen',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'fullscreen': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'fullscreen',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'createduplicate': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'createduplicate',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n },\r\n 'afterSave': {\r\n 'saveduplicate': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'save',\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('TemplateAPI') + `/api/MasterTemplates/Add`,\r\n type: 'post',\r\n\r\n }\r\n ],\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'save': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'save',\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('TemplateAPI') + `/api/MasterTemplates/Update`,\r\n type: 'put',\r\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 ViewNotice\r\n\r\n\r\n\r\n","import { getEnvVariable } from '../../../modules/environmentalList';\r\nimport AddNotice from './add';\r\nimport ViewNotice from './edit';\r\n\r\nconst NoticeGrid = {\r\n \"type\": \"grid\",\r\n \"key\": \"NoticeGrid\",\r\n \"gridkey\": 'NoticeGrid',\r\n \"name\": \"NoticeGrid\",\r\n \"hasreport\": true,\r\n \"addRoute\": true,\r\n title: \"Master Templates\",\r\n \"routeParams\": { replace: 'masternotices', param: 'Id', routeName: 'id' },\r\n values: {\r\n addOpen: false,\r\n editOpen: false,\r\n editInfo: null,\r\n allgriddata: null,\r\n reportOpen: false,\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null,\r\n load: false,\r\n navigateItem: null,\r\n navigation: null,\r\n },\r\n sharedValues: ['addOpen', 'editOpen', 'editInfo', 'allgriddata', 'navigateItem', 'navigation', 'loadreportfilter', 'ReportJsonQueryStr', 'reportOpen'],\r\n aliases: {\r\n addOpen: 'addOpen',\r\n editOpen: 'editOpen',\r\n editInfo: 'editInfo',\r\n navigateItem: 'navigateItem',\r\n allgriddata: 'allgriddata',\r\n navigation: 'navigation',\r\n reportOpen: 'reportOpen',\r\n loadreportfilter: 'loadreportfilter',\r\n ReportJsonQueryStr: 'ReportJsonQueryStr'\r\n },\r\n headerProps: {\r\n title: \"Notice\",\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": getEnvVariable('TitleKey') + ` Settings`, \"tab\": 2, \"materialicon\": \"settings_applications\", href: getEnvVariable('InternalBasepath'), className: 'breadcrumb-item text-dark', class: 'text-dark' },\r\n { \"link\": \"Master Templates\", href: \"#/Administration/masternotices\", \"materialicon\": \"document_scanner\", className: 'breadcrumb-item ', class: '' }\r\n\r\n ],\r\n }\r\n ],\r\n actions: [\r\n {\r\n type: 'fab',\r\n icon: 'clear',\r\n name: 'clear',\r\n color: 'primary',\r\n title: 'Clear Filters',\r\n menucolor: '#22a9b3',\r\n hideon: 'clear',\r\n hidevalue: false\r\n },\r\n\r\n {\r\n type: 'menu',\r\n icon: 'excel',\r\n name: 'excel',\r\n color: 'primary',\r\n title: 'Export to Excel',\r\n menucolor: '#c90685',\r\n hideon: 'excel',\r\n hidevalue: false,\r\n items: [{\r\n name: 'Export Current Page',\r\n action: 'filtercurrent'\r\n },\r\n {\r\n name: 'Export All Pages',\r\n action: 'filterall'\r\n }\r\n ]\r\n },\r\n {\r\n type: 'fab',\r\n icon: 'reports',\r\n name: 'reports',\r\n color: 'primary',\r\n title: 'Save Report',\r\n menucolor: '#C85A54',\r\n hideon: 'reports',\r\n hidevalue: false\r\n },\r\n {\r\n type: 'fab',\r\n icon: 'add',\r\n name: 'add',\r\n color: 'primary',\r\n hideon: 'addButton',\r\n hidevalue: true,\r\n title: 'Add Master Template',\r\n menucolor: '#36088a'\r\n },\r\n\r\n ]\r\n },\r\n \"columns\": [\r\n {\r\n \"title\": \"Master Template Name\",\r\n \"field\": \"Name\",\r\n \"show\": true,\r\n \"width\": 200\r\n },\r\n {\r\n \"title\": \"Sub Module\",\r\n \"field\": \"SubModuleKeyDesc\",\r\n \"show\": true,\r\n \"width\": 220,\r\n },\r\n {\r\n \"title\": \"Status\",\r\n \"field\": \"StatusDesc\",\r\n \"show\": true,\r\n \"width\": 200\r\n },\r\n {\r\n \"title\": \"Created By\",\r\n \"field\": \"CreatedByName\",\r\n \"show\": true,\r\n \"width\": 185\r\n },\r\n {\r\n \"title\": \"Created On\",\r\n \"field\": \"CreatedOn\",\r\n \"show\": true,\r\n \"width\": 185,\r\n filter: \"date\",\r\n format: \"{0:d}\",\r\n convert: \"MM/DD/YYYY hh:mm:ss A\"\r\n },\r\n {\r\n \"title\": \"Updated By\",\r\n \"field\": \"UpdatedByName\",\r\n \"show\": true,\r\n \"width\": 185\r\n },\r\n {\r\n \"title\": \"Updated On\",\r\n \"field\": \"UpdatedOn\",\r\n \"show\": true,\r\n \"width\": 185,\r\n filter: \"date\",\r\n format: \"{0:d}\",\r\n convert: \"MM/DD/YYYY hh:mm:ss A\"\r\n },\r\n\r\n ],\r\n displayName: 'editInfo',\r\n allgriddata: 'allgriddata',\r\n navigateItem: 'navigateItem',\r\n navigation: 'navigation',\r\n loadreportfilter: 'loadreportfilter',\r\n ReportJsonQueryStr: 'ReportJsonQueryStr',\r\n navigateItem: 'navigateItem',\r\n mapActionsToEffects: {\r\n load: {\r\n rules: [{\r\n run: {\r\n valid: [{\r\n type: 'grid',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('TemplateAPI') + `/api/MasterTemplates/Grid?`,\r\n \"matchProps\": [{\r\n name: \"routeid1\",\r\n key: \"routeid1\",\r\n }],\r\n type: 'get',\r\n saveAs: {\r\n key: 'data'\r\n }\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n // addOpen: {\r\n // rules: [{\r\n // check: [\r\n // {\r\n // condition: 'AND',\r\n // rules: [\r\n // {\r\n // \"name\": \"addOpen\",\r\n // \"type\": \"!=\",\r\n // \"value\": true,\r\n // \"rules\": []\r\n // }\r\n // ]\r\n // }\r\n // ],\r\n // run: {\r\n // valid: [{\r\n // type: 'grid',\r\n // \"read\": [\r\n // {\r\n // url: getEnvVariable('Application') + `/api/MasterTemplates/Grid?`,\r\n // \"matchProps\": [{\r\n // name: \"routeid1\",\r\n // key: \"routeid1\",\r\n // }],\r\n // type: 'get',\r\n // saveAs: {\r\n // key: 'data'\r\n // }\r\n // }\r\n // ]\r\n // },\r\n // ]\r\n // }\r\n // }]\r\n // },\r\n editOpen: {\r\n rules: [{\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"editOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n run: {\r\n valid: [{\r\n type: 'grid',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('TemplateAPI') + `/api/MasterTemplates/Grid?`,\r\n \"matchProps\": [{\r\n name: \"routeid1\",\r\n key: \"routeid1\",\r\n }],\r\n type: 'get',\r\n saveAs: {\r\n key: 'data'\r\n }\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n 'add': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'value',\r\n key: 'addOpen',\r\n result: true\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n\r\n 'display': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'value',\r\n key: 'editOpen',\r\n result: true\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'editInfo',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'allgriddata',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'navigateItem',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'navigation',\r\n },\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'report': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'value',\r\n key: 'reportOpen',\r\n result: true\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'loadreportfilter',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'ReportJsonQueryStr',\r\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 NoticeReport = {\r\n type: 'popup',\r\n key: 'NoticeReport',\r\n name: 'NoticeReport',\r\n\r\n anchor: 'right',\r\n open: false,\r\n aliases: {\r\n open: 'reportOpen'\r\n },\r\n sharedValues: ['open', 'loadreportfilter', 'ReportJsonQueryStr'],\r\n container: {\r\n values: {\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null\r\n },\r\n mapValues: {\r\n Report: [\r\n {\r\n key: 'ReportJsonQueryStr',\r\n name: 'ReportJsonQueryStr'\r\n },\r\n {\r\n key: 'loadreportfilter',\r\n name: 'loadreportfilter'\r\n },\r\n ],\r\n },\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: '',\r\n components: [\r\n {\r\n name: 'Report'\r\n },\r\n ]\r\n }\r\n ]\r\n\r\n },\r\n components: {\r\n Report: {\r\n \"type\": \"form\",\r\n \"key\": \"Report\",\r\n \"name\": \"Report\",\r\n aliases: {\r\n\r\n },\r\n sharedValues: ['ReportJsonQueryStr', 'loadreportfilter'],\r\n values: {\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null\r\n },\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: '',\r\n components: [{\r\n name: 'ReportJsonQueryStr',\r\n type: 'div',\r\n\r\n },\r\n {\r\n name: 'loadreportfilter',\r\n type: 'div',\r\n\r\n }],\r\n\r\n },\r\n ],\r\n },\r\n \"components\": {\r\n \"ReportJsonQueryStr\": {\r\n \"type\": \"gridreport\",\r\n \"gridkey\": 'NoticeGrid',\r\n },\r\n },\r\n }\r\n }\r\n }\r\n}\r\n\r\nconst NoticeContainer = {\r\n type: 'container',\r\n key: 'Noticecontainer',\r\n values: {\r\n addOpen: false,\r\n editOpen: false,\r\n editInfo: null,\r\n allgriddata: null,\r\n navigateItem: null,\r\n navigation: null,\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null,\r\n reportOpen: false,\r\n },\r\n mapValues: {\r\n AddNotice: [\r\n {\r\n key: 'addOpen',\r\n name: 'open'\r\n }\r\n ],\r\n ViewNotice: [\r\n {\r\n key: 'editOpen',\r\n name: 'open'\r\n },\r\n {\r\n key: 'editInfo',\r\n name: 'editInfo'\r\n },\r\n {\r\n key: 'navigateItem',\r\n name: 'navigateItem'\r\n },\r\n {\r\n key: 'allgriddata',\r\n name: 'allgriddata'\r\n },\r\n {\r\n key: 'navigation',\r\n name: 'navigation'\r\n },\r\n ],\r\n NoticeGrid: [\r\n {\r\n key: 'editOpen',\r\n name: 'editOpen'\r\n },\r\n {\r\n key: 'addOpen',\r\n name: 'addOpen'\r\n },\r\n {\r\n key: 'reportOpen',\r\n name: 'reportOpen'\r\n },\r\n {\r\n key: 'ReportJsonQueryStr',\r\n name: 'ReportJsonQueryStr'\r\n },\r\n {\r\n key: 'loadreportfilter',\r\n name: 'loadreportfilter'\r\n },\r\n ],\r\n NoticeReport: [\r\n {\r\n key: 'reportOpen',\r\n name: 'open'\r\n },\r\n {\r\n key: 'loadreportfilter',\r\n name: 'loadreportfilter'\r\n },\r\n {\r\n key: 'ReportJsonQueryStr',\r\n name: 'ReportJsonQueryStr'\r\n },\r\n\r\n ]\r\n\r\n },\r\n mapActionsToEffects: {\r\n 'addOpen': {\r\n rules: [\r\n {\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"addOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n uncheck: true,\r\n run: {\r\n valid: [\r\n {\r\n type: 'removelayout',\r\n name: 'AddNotice',\r\n }\r\n ],\r\n inValid: [\r\n {\r\n type: 'addlayout',\r\n name: 'AddNotice',\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'editOpen': {\r\n rules: [\r\n {\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"editOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n uncheck: true,\r\n run: {\r\n valid: [\r\n {\r\n type: 'removelayout',\r\n name: 'ViewNotice',\r\n }\r\n\r\n ],\r\n inValid: [\r\n {\r\n type: 'addlayout',\r\n name: 'ViewNotice',\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'reportOpen': {\r\n rules: [\r\n {\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"reportOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n uncheck: true,\r\n run: {\r\n valid: [\r\n // {\r\n // type: 'removelayout',\r\n // name: 'NoticeReport',\r\n // }\r\n\r\n ],\r\n inValid: [\r\n {\r\n type: 'addlayout',\r\n name: 'NoticeReport',\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n },\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row col-12',\r\n components: [\r\n {\r\n name: 'NoticeGrid'\r\n },\r\n\r\n ]\r\n }\r\n ]\r\n\r\n },\r\n components: {\r\n NoticeGrid: NoticeGrid,\r\n NoticeReport: NoticeReport,\r\n AddNotice: AddNotice,\r\n ViewNotice: ViewNotice\r\n }\r\n}\r\n\r\nexport default NoticeContainer","import { Fragment } from \"react\"\r\nimport Container from '../../../core/controls/components/container'\r\nimport MasterTemplate from '../../jsons/mastertemplate'\r\n\r\n\r\nconst MasterTemplateContainer = (props) => {\r\n\r\n return (\r\n <Fragment>\r\n <Container {...MasterTemplate} {...props} />\r\n </Fragment>\r\n )\r\n}\r\nexport default MasterTemplateContainer","\r\nimport { getEnvVariable } from \"../../../modules/environmentalList\"\r\n\r\nconst AddNotice = {\r\n \"type\": \"popup\",\r\n \"key\": \"AddNotice\",\r\n \"name\": \"AddNotice\",\r\n anchor: 'right',\r\n open: false,\r\n aliases: {\r\n open: 'addOpen'\r\n },\r\n sharedValues: ['open'],\r\n container: {\r\n values: { save: false, back: false, fullscreen: false, },\r\n mapValues: {\r\n header: [\r\n { key: 'exitfullscreen', name: 'exitfullscreen' },\r\n { key: 'fullscreen', name: 'fullscreen' },\r\n ],\r\n Notice: [{ key: 'save', name: 'save' },\r\n { key: 'exitfullscreen', name: 'exitfullscreen' },\r\n { key: 'fullscreen', name: 'fullscreen' },]\r\n },\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [{\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'header',\r\n type: 'div',\r\n className: 'col-12 ',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12',\r\n }\r\n }],\r\n\r\n },\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'Notice',\r\n type: 'div',\r\n className: 'col-12 mx-4 pt-1 m-4',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12 mx-4 pt-1 m-4',\r\n }\r\n }],\r\n\r\n },\r\n ]\r\n },\r\n\r\n components: {\r\n header: {\r\n name: \"header\",\r\n type: 'header',\r\n title: 'Notice',\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": \"Add Notice Type\", \"materialicon\": \"article\", className: 'eps-breadcrumb-item ', class: 'text-light' },\r\n ]\r\n }\r\n ],\r\n layout: {},\r\n actions: [\r\n {\r\n type: 'icon',\r\n icon: 'back',\r\n name: 'back',\r\n hideon: 'back',\r\n hidevalue: false,\r\n title: 'Back'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'save',\r\n name: 'save',\r\n hideon: 'save',\r\n hidevalue: false,\r\n title: 'Save Notice'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'fullscreen',\r\n name: 'fullscreen',\r\n hidevalue: false,\r\n title: 'FullScreen'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'exitfullscreen',\r\n name: 'exitfullscreen',\r\n hideon: 'fullscreen',\r\n hidevalue: false,\r\n title: 'Exit FullScreen'\r\n }\r\n ],\r\n },\r\n Notice: {\r\n \"type\": \"form\",\r\n \"key\": \"Notice\",\r\n \"name\": \"Notice\",\r\n aliases: {\r\n save: 'save',\r\n },\r\n \"routeParams\": { replace: 'noticestypes', param: 'Id', routeName: 'mid' },\r\n sharedValues: ['save', 'back', 'exitfullscreen', 'fullscreen'],\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [\r\n {\r\n name: 'Name',\r\n type: 'div',\r\n className: 'col-10',\r\n sub: {\r\n type: 'div',\r\n className: 'col-10',\r\n }\r\n },\r\n ],\r\n },\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [\r\n {\r\n name: 'Description',\r\n type: 'div',\r\n className: 'col-10',\r\n sub: {\r\n type: 'div',\r\n className: 'col-10'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 2,\r\n type: 'div',\r\n className: 'row',\r\n components: [\r\n {\r\n name: 'SubModuleKey',\r\n type: 'div',\r\n className: 'col-4',\r\n sub: {\r\n type: 'div',\r\n className: 'col-4'\r\n }\r\n },\r\n {\r\n name: 'SitePermitType',\r\n type: 'div',\r\n className: 'col-4',\r\n sub: {\r\n type: 'div',\r\n className: 'col-4'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 3,\r\n type: 'div',\r\n className: 'row',\r\n components: [\r\n {\r\n name: 'CanEditNoticeDate',\r\n type: 'div',\r\n className: 'col-10',\r\n sub: {\r\n type: 'div',\r\n className: 'col-10'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 4,\r\n type: 'div',\r\n className: 'row',\r\n components: [\r\n {\r\n name: 'CanEditPastNoticeDate',\r\n type: 'div',\r\n className: 'col-3',\r\n sub: {\r\n type: 'div',\r\n className: 'col-3'\r\n }\r\n },\r\n {\r\n name: 'CanEditCurrentNoticeDate',\r\n type: 'div',\r\n className: 'col-3',\r\n sub: {\r\n type: 'div',\r\n className: 'col-3'\r\n }\r\n },\r\n {\r\n name: 'CanEditFutureNoticeDate',\r\n type: 'div',\r\n className: 'col-3',\r\n sub: {\r\n type: 'div',\r\n className: 'col-3'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 5,\r\n type: 'div',\r\n className: 'row',\r\n components: [\r\n {\r\n name: 'Status',\r\n type: 'div',\r\n className: 'col-10',\r\n sub: {\r\n type: 'div',\r\n className: 'col-10'\r\n }\r\n },\r\n ]\r\n },\r\n ],\r\n },\r\n values: {\r\n Name: '',\r\n Description: '',\r\n SubModuleKey: '',\r\n Status: 'I',\r\n SitePermitType: '',\r\n CanEditCurrentNoticeDate: 'N',\r\n CanEditFutureNoticeDate: 'N',\r\n CanEditNoticeDate: 'N',\r\n CanEditPastNoticeDate: 'N',\r\n TemplateId: 0,\r\n \r\n },\r\n\r\n \"components\": {\r\n Name: {\r\n \"type\": \"textfield\",\r\n \"key\": \"Name\",\r\n \"label\": \"Name\",\r\n \"name\": \"Name\",\r\n },\r\n Description: {\r\n \"type\": \"textfield\",\r\n \"key\": \"Description\",\r\n \"label\": \"Description\",\r\n \"name\": \"Description\",\r\n },\r\n SubModuleKey: {\r\n \"type\": \"dropdown\",\r\n \"key\": \"SubModuleKey\",\r\n \"label\": \"Sub Module\",\r\n \"name\": \"SubModuleKey\",\r\n extraProps: {\r\n transformProps: {\r\n label: 'SubModuleName',\r\n value: 'Key'\r\n },\r\n },\r\n },\r\n SitePermitType: {\r\n \"type\": \"dropdown\",\r\n \"key\": \"SitePermitType\",\r\n \"label\": \"Permit Type\",\r\n \"name\": \"SitePermitType\",\r\n extraProps: {\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Id'\r\n },\r\n },\r\n },\r\n Status: {\r\n \"type\": \"toggle\",\r\n \"key\": \"Status\",\r\n \"label\": \"Status\",\r\n \"name\": \"Status\",\r\n disabled: true,\r\n extraProps: {\r\n transformProps: {\r\n I: false,\r\n A: true,\r\n 'true': 'A',\r\n 'false': 'I'\r\n },\r\n }\r\n },\r\n CanEditCurrentNoticeDate: {\r\n \"type\": \"checkbox\",\r\n \"key\": \"CanEditCurrentNoticeDate\",\r\n \"label\": \"Current\",\r\n \"name\": \"CanEditCurrentNoticeDate\",\r\n extraProps: {\r\n transformProps: {\r\n N: false,\r\n Y: true,\r\n 'true': 'Y',\r\n 'false': 'N'\r\n },\r\n }\r\n },\r\n CanEditFutureNoticeDate: {\r\n \"type\": \"checkbox\",\r\n \"key\": \"CanEditFutureNoticeDate\",\r\n \"label\": \"Future\",\r\n \"name\": \"CanEditFutureNoticeDate\",\r\n extraProps: {\r\n transformProps: {\r\n N: false,\r\n Y: true,\r\n 'true': 'Y',\r\n 'false': 'N'\r\n },\r\n }\r\n },\r\n CanEditNoticeDate: {\r\n \"type\": \"checkbox\",\r\n \"key\": \"CanEditNoticeDate\",\r\n \"label\": \"Can Edit Notice Date?\",\r\n \"name\": \"CanEditNoticeDate\",\r\n extraProps: {\r\n transformProps: {\r\n N: false,\r\n Y: true,\r\n 'true': 'Y',\r\n 'false': 'N'\r\n },\r\n }\r\n },\r\n CanEditPastNoticeDate: {\r\n \"type\": \"checkbox\",\r\n \"key\": \"CanEditPastNoticeDate\",\r\n \"label\": \"Past\",\r\n \"name\": \"CanEditPastNoticeDate\",\r\n extraProps: {\r\n transformProps: {\r\n N: false,\r\n Y: true,\r\n 'true': 'Y',\r\n 'false': 'N'\r\n },\r\n }\r\n }, \r\n },\r\n mapActionsToEffects: {\r\n 'onLoad': {\r\n init: {\r\n rules: [{\r\n run:\r\n {\r\n valid: [\r\n {\r\n type: 'businessrules',\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('Application') + `/api/BusinessRules/Grid/Admin.NoticeTypes`,\r\n type: 'get',\r\n }\r\n ],\r\n },\r\n {\r\n type: 'load',\r\n name: 'SubModuleKey',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('MasterAdmin') + `/api/module/${getEnvVariable('ModuleKey')}/submodule/All/Active/IsConfigurable`,\r\n type: 'get',\r\n saveAs: {\r\n key: 'items'\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n type: 'validations',\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('Application') + `/api/ProjectMessages/RulesByName?name=${getEnvVariable('ModuleKey')}admin.Noticetypes`,\r\n type: 'get'\r\n }\r\n ],\r\n transformProps: {\r\n removesubfieldname: `${getEnvVariable('ModuleKey')}ADMIN.Noticetypes_`\r\n }\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n 'exitfullscreen': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'exitfullscreen',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'fullscreen': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'fullscreen',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n },\r\n 'onChange': {\r\n SubModuleKey: {\r\n rules: [\r\n {\r\n canOverwrite: true,\r\n check: [{\r\n condition: \"AND\",\r\n rules: [\r\n { name: \"SubModuleKey\", type: \"!=\", value: \"\", rules: [] }]\r\n }],\r\n fields: [\"SubModuleKey\"],\r\n run: {\r\n type: \"check\",\r\n valid: [\r\n {\r\n type: 'load',\r\n name: 'SitePermitType',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('AdminConfig') + `/api/SitePermitTypes/SubModuleKey/Active/{SubModuleKey}`,\r\n type: 'get',\r\n \"matchProps\": [{\r\n name: \"SubModuleKey\",\r\n key: \"SubModuleKey\",\r\n }],\r\n saveAs: {\r\n key: 'items'\r\n }\r\n }\r\n ]\r\n },\r\n ],\r\n invalid: []\r\n },\r\n uncheck: false\r\n }\r\n ],\r\n fields: [\r\n 'SubModuleKey'\r\n ]\r\n },\r\n },\r\n 'afterSave': {\r\n 'save': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'save',\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('Admin') + `/api/NoticeTypes/Add`,\r\n type: 'post',\r\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 AddNotice\r\n\r\n\r\n\r\n","import { getEnvVariable } from \"../../../../modules/environmentalList\"\r\n\r\nconst AttachmentAdd = {\r\n \"type\": \"popup\",\r\n \"key\": \"AttachmentAdd\",\r\n \"name\": \"AttachmentAdd\",\r\n anchor: 'right',\r\n open: false,\r\n aliases: {\r\n open: 'addOpen'\r\n },\r\n sharedValues: ['open'],\r\n container: {\r\n values: { save: false, back: false, fullscreen: false, },\r\n mapValues: {\r\n header: [\r\n { key: 'exitfullscreen', name: 'exitfullscreen' },\r\n { key: 'fullscreen', name: 'fullscreen' },\r\n ],\r\n Attachment: [{ key: 'save', name: 'save' },\r\n { key: 'exitfullscreen', name: 'exitfullscreen' },\r\n { key: 'fullscreen', name: 'fullscreen' },]\r\n },\r\n // sharedValues: ['save', 'edit'],\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [{\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'header',\r\n type: 'div',\r\n className: 'col-12 ',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12',\r\n }\r\n }],\r\n\r\n },\r\n\r\n\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'Attachment',\r\n type: 'div',\r\n className: 'col-12 pl-4 m-3',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12 pl-4 m-3',\r\n }\r\n }],\r\n\r\n },\r\n ]\r\n },\r\n\r\n components: {\r\n header: {\r\n name: \"header\",\r\n type: 'header',\r\n title: 'Attachment',\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": \"Add Attachment\", \"materialicon\": \"attach_file\", className: 'eps-breadcrumb-item ', class: 'text-light' },\r\n ]\r\n }\r\n ],\r\n layout: {},\r\n actions: [\r\n {\r\n type: 'icon',\r\n icon: 'back',\r\n name: 'back',\r\n hideon: 'back',\r\n hidevalue: false,\r\n title: 'Back'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'save',\r\n name: 'save',\r\n hideon: 'save',\r\n hidevalue: false,\r\n title: 'Save',\r\n color:\"#008000\"\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'fullscreen',\r\n name: 'fullscreen',\r\n hidevalue: false,\r\n title: 'FullScreen'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'exitfullscreen',\r\n name: 'exitfullscreen',\r\n hideon: 'fullscreen',\r\n hidevalue: false,\r\n title: 'Exit FullScreen'\r\n }\r\n ],\r\n\r\n\r\n },\r\n Attachment: {\r\n \"type\": \"form\",\r\n \"key\": \"Attachment\",\r\n \"name\": \"Attachment\",\r\n aliases: {\r\n save: 'save',\r\n },\r\n sharedValues: ['save', 'back', 'exitfullscreen', 'fullscreen'],\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'FileName',\r\n type: 'div',\r\n className: 'col-10 ml-3 mt-2',\r\n sub: {\r\n type: 'div',\r\n className: 'col-10 ml-3 mt-2',\r\n }\r\n }],\r\n\r\n },\r\n\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'Notes',\r\n type: 'div',\r\n className: 'col-10 ml-3 mt-2',\r\n sub: {\r\n type: 'div',\r\n className: 'col-10 ml-3 mt-2'\r\n }\r\n },]\r\n },\r\n ],\r\n },\r\n values: {\r\n FileName: '',\r\n Notes: '',\r\n\r\n },\r\n \"components\": {\r\n FileName: {\r\n \"type\": \"textfield\",\r\n \"key\": \"FileName\",\r\n \"label\": \"File Name\",\r\n \"name\": \"FileName\",\r\n },\r\n Notes: {\r\n \"type\": \"textfield\",\r\n \"key\": \"Notes\",\r\n \"label\": \"Notes\",\r\n \"name\": \"Notes\",\r\n \"multiline\": true,\r\n rowsMax: \"5\",\r\n \"rows\": 6,\r\n },\r\n },\r\n mapActionsToEffects: {\r\n 'onLoad': {\r\n init: {\r\n rules: [{\r\n run:\r\n {\r\n valid: [\r\n {\r\n type: 'validations', //http://development.delasoft.com:8443/AMES-application/api/ProposedLandUse/5864/Add\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('Sidebar') + `/api/ProjectMessages/RulesByName?name=modulemaster.Attachments`,\r\n type: 'get'\r\n }\r\n ],\r\n transformProps: {\r\n removesubfieldname: 'AMESMODULEMASTER.AttachmentS_'\r\n }\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n 'exitfullscreen': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'exitfullscreen',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'fullscreen': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'fullscreen',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n },\r\n 'afterSave': {\r\n 'save': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'save',// http://development.delasoft.com:8443/AMES-application/api/Property/23103/Add\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('Admin') + `/api/Files/{mid}/NoticeFileUploadFiles`,\r\n type: 'post',\r\n \"matchProps\": [{\r\n name: \"mid\",\r\n key: \"mid\",\r\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 AttachmentAdd\r\n","import { getEnvVariable } from \"../../../../modules/environmentalList\"\r\n//import Attachmenthistory from './Attachmenthistorygrid';\r\nconst AttachmentEdit = {\r\n \"type\": \"popup\",\r\n \"key\": \"AttachmentEdit\",\r\n \"name\": \"AttachmentEdit\",\r\n anchor: 'right',\r\n open: false,\r\n aliases: {\r\n open: 'editOpen'\r\n },\r\n sharedValues: ['open'],\r\n container: {\r\n values: { editInfo: null, edit: false, createduplicate: false, fullscreen: false, back: false, allgriddata: null, navigation: null },\r\n mapValues: {\r\n header: [\r\n { key: 'edit', name: 'edit' },\r\n { key: 'exitfullscreen', name: 'exitfullscreen' },\r\n { key: 'fullscreen', name: 'fullscreen' },\r\n { key: 'createduplicate', name: 'createduplicate' },\r\n { key: 'allgriddata', name: 'allgriddata' },\r\n ],\r\n ViewAttachment: [\r\n { key: 'editInfo', name: 'editInfo' },\r\n { key: 'allgriddata', name: 'allgriddata' },\r\n { key: 'save', name: 'save' },\r\n { key: 'saveduplicate', name: 'saveduplicate' },\r\n { key: 'edit', name: 'edit' },\r\n { key: 'exitfullscreen', name: 'exitfullscreen' },\r\n { key: 'fullscreen', name: 'fullscreen' },\r\n { key: 'createduplicate', name: 'createduplicate' },\r\n { key: 'back', name: 'back' },\r\n { key: 'navigation', name: 'navigation' },]\r\n },\r\n // sharedValues: ['save', 'edit'],\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [{\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'header',\r\n type: 'div',\r\n className: 'col-12 ',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12',\r\n }\r\n }],\r\n\r\n },\r\n\r\n\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'mx-4',\r\n components: [{\r\n name: 'ViewAttachment',\r\n type: 'div',\r\n className: 'col-12 pl-4 m-1',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12 pl-4 m-1',\r\n }\r\n }],\r\n\r\n },\r\n ]\r\n },\r\n\r\n components: {\r\n header: {\r\n name: \"header\",\r\n type: 'header',\r\n title: 'Attachment',\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": \"View/Edit Attachment\", \"materialicon\": \"attach_file\", className: 'eps-breadcrumb-item ', class: 'text-light' },\r\n ]\r\n }\r\n ],\r\n layout: {},\r\n actions: [\r\n {\r\n type: 'icon',\r\n icon: 'back',\r\n name: 'back',\r\n hideon: 'back',\r\n hidevalue: false,\r\n title: 'Back'\r\n },\r\n\r\n {\r\n type: 'icon',\r\n icon: 'edit',\r\n name: 'edit',\r\n hideon: 'createduplicate',\r\n hideanother: 'edit',\r\n hidevalue: true,\r\n title: 'Edit Attachment'\r\n },\r\n // {\r\n // type: 'icon',\r\n // icon: 'duplicate',\r\n // name: 'createduplicate',\r\n // hideon: 'edit',\r\n // hideanother: 'createduplicate',\r\n // hidevalue: true,\r\n // title: 'Clone Attachment'\r\n // },\r\n {\r\n type: 'icon',\r\n icon: 'save',\r\n name: 'save',\r\n hideon: 'edit',\r\n hidevalue: false,\r\n title: 'Save Attachment',\r\n color:\"#008000\"\r\n\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'save',\r\n name: 'saveduplicate',\r\n hideon: 'createduplicate',\r\n hidevalue: false,\r\n title: 'Save Attachment'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'previtem',\r\n name: 'previtem',\r\n hideon: 'previtem',\r\n hidevalue: false,\r\n title: 'Previous Item'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'nextitem',\r\n name: 'nextitem',\r\n hideon: 'nextitem',\r\n hidevalue: false,\r\n title: 'Next Item'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'fullscreen',\r\n name: 'fullscreen',\r\n hidevalue: false,\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'exitfullscreen',\r\n name: 'exitfullscreen',\r\n hideon: 'fullscreen',\r\n hidevalue: false\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'history',\r\n name: 'history',\r\n title: 'History',\r\n hideon: 'history',\r\n hidevalue: false,\r\n historyurl: {\r\n url: getEnvVariable('Application') + `/api/Files/history/{Id}?`,\r\n \"matchProps\": [{ name: \"editInfo.Id\", key: \"Id\", },],\r\n type: 'get',\r\n saveAs: { key: 'data' }\r\n }\r\n },\r\n ],\r\n },\r\n ViewAttachment: {\r\n \"type\": \"form\",\r\n initRun: true,\r\n \"key\": \"ViewAttachment\",\r\n \"name\": \"ViewAttachment\",\r\n aliases: {\r\n 'editInfo': 'editInfo',\r\n 'allgriddata': 'allgriddata',\r\n 'navigateItem': 'navigateItem',\r\n 'edit': 'edit'\r\n },\r\n sharedValues: ['editInfo', 'allgriddata', 'navigateItem', 'navigation', 'edit', 'save', 'createduplicate', 'exitfullscreen', 'fullscreen', 'back'],\r\n validationMapKeys: [],\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'FileName',\r\n type: 'div',\r\n className: 'col-10 m-1',\r\n sub: {\r\n type: 'div',\r\n className: 'col-10 m-1'\r\n }\r\n },\r\n\r\n ]\r\n },\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [\r\n {\r\n name: 'Notes',\r\n type: 'div',\r\n className: 'col-10 m-1',\r\n sub: {\r\n type: 'div',\r\n className: 'col-10 m-1'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 2,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'FileDetails',\r\n type: 'div',\r\n className: 'col-10 m-1',\r\n sub: {\r\n type: 'div',\r\n className: 'col-10 m-1'\r\n }\r\n },\r\n ]\r\n },\r\n // {\r\n // order: 3,\r\n // type: 'div',\r\n // className: 'row',\r\n // components: [{\r\n // name: 'Status',\r\n // type: 'div',\r\n // className: 'col-6',\r\n // sub: {\r\n // type: 'div',\r\n // className: 'col-6'\r\n // }\r\n // }\r\n // ]\r\n // },\r\n {\r\n order: 4,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'CreatedOn',\r\n type: 'div',\r\n className: 'col-4 m-1',\r\n sub: {\r\n type: 'div',\r\n className: 'col-4 m-1'\r\n }\r\n },\r\n {\r\n name: 'CreatedByName',\r\n type: 'div',\r\n className: 'col-4 m-1',\r\n sub: {\r\n type: 'div',\r\n className: 'col-4 m-1'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 5,\r\n type: 'div',\r\n className: 'row',\r\n components: [\r\n {\r\n name: 'UpdatedOn',\r\n type: 'div',\r\n className: 'col-4 m-1',\r\n sub: {\r\n type: 'div',\r\n className: 'col-4 m-1'\r\n }\r\n },\r\n {\r\n name: 'UpdatedByName',\r\n type: 'div',\r\n className: 'col-4 m-1',\r\n sub: {\r\n type: 'div',\r\n className: 'col-4 m-1'\r\n }\r\n },]\r\n },\r\n ]\r\n\r\n },\r\n values: {\r\n FileName: '',\r\n Notes: '',\r\n FileDetails: [],\r\n UpdatedByName: '',\r\n CreatedByName: '',\r\n UpdatedOn: '',\r\n CreatedOn: '',\r\n UpdatedBy: '',\r\n CreatedBy: '',\r\n Id: '',\r\n Status: '',\r\n editInfo: null,\r\n allgriddata: null,\r\n navigation: null\r\n },\r\n \"components\": {\r\n FileName: {\r\n \"type\": \"label\",\r\n \"key\": \"FileName\",\r\n \"label\": \"File Name\",\r\n \"name\": \"FileName\",\r\n changefieldto: \"textfield\",\r\n },\r\n Notes: {\r\n \"type\": \"label\",\r\n \"key\": \"Notes\",\r\n \"label\": \"Notes\",\r\n \"name\": \"Notes\",\r\n \"multiline\": true,\r\n rowsMax: \"5\",\r\n \"rows\": 6,\r\n changefieldto: \"textfield\",\r\n },\r\n FileDetails: {\r\n \"type\": \"upload\",\r\n \"key\": \"FileDetails\",\r\n \"label\": \"Uploads\",\r\n \"name\": \"FileDetails\",\r\n changefieldto: \"upload\",\r\n customField: true\r\n\r\n },\r\n CreatedOn: {\r\n \"type\": \"label\",\r\n \"key\": \"CreatedOn\",\r\n \"label\": \"Created On\",\r\n name: \"CreatedOn\",\r\n changefieldto: \"label\",\r\n },\r\n CreatedByName: {\r\n \"type\": \"label\",\r\n \"key\": \"CreatedByName\",\r\n \"label\": \"Created By\",\r\n name: \"CreatedByName\",\r\n changefieldto: \"label\",\r\n },\r\n UpdatedOn: {\r\n \"type\": \"label\",\r\n \"key\": \"UpdatedOn\",\r\n \"label\": \"Updated On\",\r\n name: \"UpdatedOn\",\r\n changefieldto: \"label\",\r\n },\r\n UpdatedByName: {\r\n \"type\": \"label\",\r\n \"key\": \"UpdatedByName\",\r\n \"label\": \"Updated By\",\r\n name: \"UpdatedByName\",\r\n changefieldto: \"label\",\r\n },\r\n Status: {\r\n \"type\": \"label\",\r\n \"key\": \"Status\",\r\n \"label\": \"Status\",\r\n \"name\": \"Status\",\r\n changefieldto: \"toggle\",\r\n extraProps: {\r\n \"transformProps\": {\r\n \"A\": true,\r\n \"I\": false,\r\n \"true\": \"A\",\r\n \"false\": \"I\"\r\n }\r\n }\r\n },\r\n },\r\n mapActionsToEffects: {\r\n 'onLoad': {\r\n 'init': {\r\n rules: [{\r\n run:\r\n {\r\n valid: [\r\n {\r\n type: 'validations', //http://development.delasoft.com:8443/AMES-application/api/ProposedLandUse/5864/Add\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('Sidebar') + `/api/ProjectMessages/RulesByName?name=modulemaster.Attachments`,\r\n type: 'get'\r\n }\r\n ],\r\n transformProps: {\r\n removesubfieldname: getEnvVariable('ModuleKey') + 'MODULEMASTER.AttachmentS_'\r\n }\r\n },\r\n ]\r\n }\r\n }]\r\n }\r\n },\r\n 'onChange': {\r\n 'navigation': {\r\n rules: [{\r\n run:\r\n {\r\n valid: [\r\n {\r\n type: 'initial', //http://development.delasoft.com:8443/AMES-application/api/ProposedLandUse/5864/Add\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin') + `/api/Files/{mid}/file/{Id}`,\r\n key: 'save',\r\n \"matchProps\": [\r\n {\r\n name: \"mid\",\r\n key: \"mid\",\r\n },\r\n {\r\n name: \"navigation.Id\",\r\n key: \"Id\",\r\n }\r\n ],\r\n type: 'get',\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n 'edit': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'edit',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'exitfullscreen': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'exitfullscreen',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'fullscreen': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'fullscreen',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'createduplicate': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'createduplicate',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n },\r\n 'afterSave': {\r\n 'save': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'save',// http://development.delasoft.com:8443/AMES-application/api/Property/23103/Add\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('Admin') + `/api/Files/{mid}/NoticeFileUploadFiles`,\r\n type: 'post',\r\n message: 'Updated Sucessfully',\r\n \"matchProps\": [{\r\n name: \"mid\",\r\n key: \"mid\",\r\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 AttachmentEdit\r\n","import AttachmentAdd from './new';\r\nimport AttachmentEdit from './edit'\r\nimport { getEnvVariable } from '../../../../modules/environmentalList';\r\nconst AttachmentGrid = {\r\n \"title\": \"Attachments\",\r\n \"type\": \"grid\",\r\n \"key\": \"AttachmentGrid\",\r\n \"gridkey\": 'AttachmentGrid',\r\n \"name\": \"AttachmentGrid\",\r\n \"hasreport\": true,\r\n values: {\r\n addOpen: false,\r\n editOpen: false,\r\n editInfo: null,\r\n load: false,\r\n allgriddata: null,\r\n navigateItem: null,\r\n navigation: null,\r\n reportOpen: false,\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null,\r\n },\r\n sharedValues: ['addOpen', 'editOpen', 'editInfo', 'allgriddata', 'navigateItem', 'navigation', 'loadreportfilter', 'ReportJsonQueryStr', 'reportOpen'],\r\n aliases: {\r\n addOpen: 'addOpen',\r\n editOpen: 'editOpen',\r\n editInfo: 'editInfo',\r\n allgriddata: 'allgriddata',\r\n navigateItem: 'navigateItem',\r\n navigation: 'navigation',\r\n reportOpen: 'reportOpen',\r\n loadreportfilter: 'loadreportfilter',\r\n ReportJsonQueryStr: 'ReportJsonQueryStr'\r\n },\r\n headerProps: {\r\n title: \"Attachments\",\r\n components: [\r\n // {\r\n // type: 'breadcrumbs',\r\n // items: [\r\n // { \"link\": \"Attachments\", \"materialicon\": \"beenhereoutlined\", className: 'breadcrumb-item ', class: '' }\r\n\r\n // ],\r\n // }\r\n ],\r\n actions: [\r\n // {\r\n // type: 'fab',\r\n // icon: 'back',\r\n // name: 'back',\r\n // color: 'primary',\r\n // title: 'Back',\r\n // menucolor: '#924fe3',\r\n // hideon: 'back',\r\n // hidevalue: false\r\n\r\n // },\r\n {\r\n type: 'fab',\r\n icon: 'clear',\r\n name: 'clear',\r\n color: 'primary',\r\n title: 'Clear Filters',\r\n menucolor: '#22a9b3',\r\n hideon: 'clear',\r\n hidevalue: false\r\n },\r\n\r\n {\r\n type: 'menu',\r\n icon: 'excel',\r\n name: 'excel',\r\n color: 'primary',\r\n title: 'Export to Excel',\r\n menucolor: '#c90685',\r\n hideon: 'excel',\r\n hidevalue: false,\r\n items: [{\r\n name: 'Export Current Page',\r\n action: 'filtercurrent'\r\n },\r\n {\r\n name: 'Export All Pages',\r\n action: 'filterall'\r\n }\r\n ]\r\n },\r\n {\r\n type: 'fab',\r\n icon: 'add',\r\n name: 'add',\r\n color: 'primary',\r\n hideon: 'addButton',\r\n hidevalue: true,\r\n title: 'Add Attachment',\r\n menucolor: '#36088a'\r\n },\r\n ]\r\n },\r\n \"columns\": [\r\n {\r\n \"title\": \"File Name\",\r\n \"field\": \"FileName\",\r\n \"show\": true,\r\n \"width\": 185,\r\n },\r\n {\r\n \"title\": \"Notes\",\r\n \"field\": \"Notes\",\r\n \"show\": true,\r\n \"width\": 300,\r\n filterable: true\r\n },\r\n {\r\n \"title\": \"Total Files Uploaded\",\r\n \"field\": \"filesCount\",\r\n \"show\": true,\r\n \"width\": 300,\r\n filterable: true\r\n },\r\n {\r\n \"title\": \"Created By\",\r\n \"field\": \"CreatedByName\",\r\n \"show\": true,\r\n \"width\": 185\r\n },\r\n {\r\n \"title\": \"Created On\",\r\n \"field\": \"CreatedOn\",\r\n \"show\": true,\r\n \"width\": 185,\r\n filter: \"date\",\r\n format: \"{0:d}\",\r\n convert: \"MM/DD/YYYY hh:mm:ss A\"\r\n },\r\n {\r\n \"title\": \"Updated By\",\r\n \"field\": \"UpdatedByName\",\r\n \"show\": true,\r\n \"width\": 185\r\n },\r\n {\r\n \"title\": \"Updated On\",\r\n \"field\": \"UpdatedOn\",\r\n \"show\": true,\r\n \"width\": 185,\r\n filter: \"date\",\r\n format: \"{0:d}\",\r\n convert: \"MM/DD/YYYY hh:mm:ss A\"\r\n },\r\n\r\n ],\r\n displayName: 'editInfo',\r\n allgriddata: 'allgriddata',\r\n navigateItem: 'navigateItem',\r\n navigation: 'navigation',\r\n loadreportfilter: 'loadreportfilter',\r\n ReportJsonQueryStr: 'ReportJsonQueryStr',\r\n mapActionsToEffects: {\r\n load: {\r\n rules: [{\r\n run: {\r\n valid: [{\r\n type: 'grid',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin') + `/api/Files/{mid}/NoticeFileGrid?`,\r\n \"matchProps\": [{\r\n name: \"mid\",\r\n key: \"mid\",\r\n }],\r\n type: 'get',\r\n saveAs: {\r\n key: 'data'\r\n }\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]// 1 intital load\r\n },\r\n addOpen: {\r\n rules: [{\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"addOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n run: {\r\n valid: [{\r\n type: 'grid',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin') + `/api/Files/{mid}/NoticeFileGrid?`,\r\n \"matchProps\": [{\r\n name: \"mid\",\r\n key: \"mid\",\r\n }],\r\n type: 'get',\r\n saveAs: {\r\n key: 'data'\r\n }\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n editOpen: {\r\n rules: [{\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"editOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n run: {\r\n valid: [{\r\n type: 'grid',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin') + `/api/Files/{mid}/NoticeFileGrid?`,\r\n \"matchProps\": [{\r\n name: \"mid\",\r\n key: \"mid\",\r\n }],\r\n type: 'get',\r\n saveAs: {\r\n key: 'data'\r\n }\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n 'add': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'value',\r\n key: 'addOpen',\r\n result: true\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'display': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'value',\r\n key: 'editOpen',\r\n result: true\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'editInfo',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'allgriddata',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'navigateItem',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'navigation',\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'report': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'value',\r\n key: 'reportOpen',\r\n result: true\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'loadreportfilter',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'ReportJsonQueryStr',\r\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 AttachmentReport = {\r\n type: 'popup',\r\n key: 'AttachmentReport',\r\n name: 'AttachmentReport',\r\n\r\n anchor: 'right',\r\n open: false,\r\n aliases: {\r\n open: 'reportOpen'\r\n },\r\n sharedValues: ['open', 'loadreportfilter', 'ReportJsonQueryStr'],\r\n container: {\r\n values: {\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null\r\n },\r\n mapValues: {\r\n Report: [\r\n {\r\n key: 'ReportJsonQueryStr',\r\n name: 'ReportJsonQueryStr'\r\n },\r\n {\r\n key: 'loadreportfilter',\r\n name: 'loadreportfilter'\r\n },\r\n ],\r\n },\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: '',\r\n components: [\r\n {\r\n name: 'Report'\r\n },\r\n ]\r\n }\r\n ]\r\n\r\n },\r\n components: {\r\n Report: {\r\n \"type\": \"form\",\r\n \"key\": \"Report\",\r\n \"name\": \"Report\",\r\n aliases: {\r\n\r\n },\r\n sharedValues: ['ReportJsonQueryStr', 'loadreportfilter'],\r\n values: {\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null\r\n },\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: '',\r\n components: [{\r\n name: 'ReportJsonQueryStr',\r\n type: 'div',\r\n\r\n },\r\n {\r\n name: 'loadreportfilter',\r\n type: 'div',\r\n\r\n }],\r\n\r\n },\r\n ],\r\n },\r\n \"components\": {\r\n \"ReportJsonQueryStr\": {\r\n \"type\": \"gridreport\",\r\n \"gridkey\": 'AttachmentGrid',\r\n },\r\n },\r\n }\r\n }\r\n }\r\n}\r\n\r\nconst AttachmentContainer = {\r\n type: 'container',\r\n changefieldto: 'container',\r\n name: 'AttachmentGrid',\r\n custom: true,\r\n edit: true,\r\n key: 'AttachmentContainer',\r\n values: {\r\n addOpen: false,\r\n editOpen: false,\r\n editInfo: null,\r\n allgriddata: null,\r\n navigateItem: null,\r\n navigation: null,\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null,\r\n reportOpen: false,\r\n },\r\n mapValues: {\r\n AttachmentAdd: [\r\n {\r\n key: 'addOpen',\r\n name: 'open'\r\n }\r\n ],\r\n AttachmentEdit: [\r\n {\r\n key: 'editOpen',\r\n name: 'open'\r\n },\r\n {\r\n key: 'editInfo',\r\n name: 'editInfo'\r\n },\r\n {\r\n key: 'allgriddata',\r\n name: 'allgriddata'\r\n },\r\n {\r\n key: 'navigateItem',\r\n name: 'navigateItem'\r\n },\r\n {\r\n key: 'navigation',\r\n name: 'navigation'\r\n },\r\n ],\r\n AttachmentGrid: [\r\n {\r\n key: 'editOpen',\r\n name: 'editOpen'\r\n },\r\n {\r\n key: 'addOpen',\r\n name: 'addOpen'\r\n },\r\n {\r\n key: 'reportOpen',\r\n name: 'reportOpen'\r\n },\r\n {\r\n key: 'ReportJsonQueryStr',\r\n name: 'ReportJsonQueryStr'\r\n },\r\n {\r\n key: 'loadreportfilter',\r\n name: 'loadreportfilter'\r\n },\r\n ],\r\n AttachmentReport: [\r\n {\r\n key: 'reportOpen',\r\n name: 'open'\r\n },\r\n {\r\n key: 'loadreportfilter',\r\n name: 'loadreportfilter'\r\n },\r\n {\r\n key: 'ReportJsonQueryStr',\r\n name: 'ReportJsonQueryStr'\r\n },\r\n\r\n ]\r\n\r\n },\r\n mapActionsToEffects: {\r\n 'addOpen': {\r\n rules: [\r\n {\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"addOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n uncheck: true,\r\n run: {\r\n valid: [\r\n {\r\n type: 'removelayout',\r\n name: 'AttachmentAdd',\r\n }\r\n\r\n ],\r\n inValid: [\r\n {\r\n type: 'addlayout',\r\n name: 'AttachmentAdd',\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'editOpen': {\r\n rules: [\r\n {\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"editOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n uncheck: true,\r\n run: {\r\n valid: [\r\n {\r\n type: 'removelayout',\r\n name: 'AttachmentEdit',\r\n }\r\n\r\n ],\r\n inValid: [\r\n {\r\n type: 'addlayout',\r\n name: 'AttachmentEdit',\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'reportOpen': {\r\n rules: [\r\n {\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"reportOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n uncheck: true,\r\n run: {\r\n valid: [\r\n {\r\n type: 'removelayout',\r\n name: 'AttachmentReport',\r\n }\r\n\r\n ],\r\n inValid: [\r\n {\r\n type: 'addlayout',\r\n name: 'AttachmentReport',\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n },\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [\r\n {\r\n name: 'AttachmentGrid'\r\n },\r\n // {\r\n // name: 'AttachmentAdd'\r\n // },\r\n // {\r\n // name: 'AttachmentEdit'\r\n // },\r\n ]\r\n }\r\n ]\r\n\r\n },\r\n components: {\r\n AttachmentGrid: AttachmentGrid,\r\n AttachmentAdd: AttachmentAdd,\r\n AttachmentEdit: AttachmentEdit,\r\n AttachmentReport: AttachmentReport\r\n }\r\n}\r\n\r\n\r\nexport default AttachmentContainer\r\n\r\n","import { getEnvVariable } from \"../../../modules/environmentalList\"\r\nimport AttachmentGrid from './attachments'\r\nconst ViewNotice = {\r\n \"type\": \"popup\",\r\n \"key\": \"ViewNotice\",\r\n \"name\": \"ViewNotice\",\r\n anchor: 'right',\r\n open: false,\r\n aliases: {\r\n open: 'editOpen',\r\n },\r\n sharedValues: ['open', 'back'],\r\n container: {\r\n closepopup: true,\r\n closepopupval: 'noticestypes',\r\n \"addRoute\": true,\r\n 'removelayout': 'ViewNotice',\r\n values: { editInfo: null, edit: false, createduplicate: false, fullscreen: false, back: false, allgriddata: null, navigation: null },\r\n mapValues: {\r\n header: [\r\n { key: 'edit', name: 'edit' },\r\n { key: 'exitfullscreen', name: 'exitfullscreen' },\r\n { key: 'fullscreen', name: 'fullscreen' },\r\n //{ key: 'createduplicate', name: 'createduplicate' },\r\n ],\r\n sectionscomp: [\r\n { key: 'editInfo', name: 'editInfo' },\r\n { key: 'allgriddata', name: 'allgriddata' },\r\n { key: 'save', name: 'save' },\r\n { key: 'saveduplicate', name: 'saveduplicate' },\r\n { key: 'edit', name: 'edit' },\r\n { key: 'exitfullscreen', name: 'exitfullscreen' },\r\n { key: 'fullscreen', name: 'fullscreen' },\r\n // { key: 'createduplicate', name: 'createduplicate' },\r\n { key: 'back', name: 'back' },\r\n { key: 'navigation', name: 'navigation' },]\r\n },\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [{\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'header',\r\n type: 'div',\r\n className: 'col-12 ',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12',\r\n }\r\n }],\r\n\r\n },\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row col',\r\n components: [{\r\n name: 'sectionscomp',\r\n type: 'div',\r\n className: 'col-12 m-3',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12 m-3',\r\n }\r\n }],\r\n\r\n },\r\n ]\r\n },\r\n\r\n components: {\r\n header: {\r\n name: \"header\",\r\n type: 'header',\r\n title: 'Notice',\r\n\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": \"View/Edit Notice Type\", \"materialicon\": \"article\", className: 'eps-breadcrumb-item ', class: 'text-light' },\r\n ]\r\n }\r\n ],\r\n layout: {},\r\n actions: [\r\n {\r\n type: 'icon',\r\n icon: 'back',\r\n name: 'back',\r\n hideon: 'back',\r\n hidevalue: false,\r\n title: 'Back'\r\n },\r\n\r\n // {\r\n // type: 'icon',\r\n // icon: 'edit',\r\n // name: 'edit',\r\n // hideon: 'createduplicate',\r\n // hideanother: 'edit',\r\n // hidevalue: true,\r\n // title: 'Edit Notice'\r\n // },\r\n // {\r\n // type: 'icon',\r\n // icon: 'duplicate',\r\n // name: 'createduplicate',\r\n // hideon: 'edit',\r\n // hideanother: 'createduplicate',\r\n // hidevalue: true,\r\n // title: 'Clone Notice'\r\n // },\r\n // {\r\n // type: 'icon',\r\n // icon: 'save',\r\n // name: 'save',\r\n // hideon: 'edit',\r\n // hidevalue: false,\r\n // title: 'Save Notice'\r\n // },\r\n // {\r\n // type: 'icon',\r\n // icon: 'save',\r\n // name: 'saveduplicate',\r\n // hideon: 'createduplicate',\r\n // hidevalue: false,\r\n // title: 'Save Notice'\r\n // },\r\n {\r\n type: 'icon',\r\n icon: 'previtem',\r\n name: 'previtem',\r\n hideon: 'previtem',\r\n hidevalue: false,\r\n title: 'Previous Item'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'nextitem',\r\n name: 'nextitem',\r\n hideon: 'nextitem',\r\n hidevalue: false,\r\n title: 'Next Item'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'fullscreen',\r\n name: 'fullscreen',\r\n hidevalue: false,\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'exitfullscreen',\r\n name: 'exitfullscreen',\r\n hideon: 'fullscreen',\r\n hidevalue: false\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'history',\r\n name: 'history',\r\n title: 'History',\r\n hideon: 'history',\r\n hidevalue: false,\r\n historyurl: {\r\n url: getEnvVariable('Admin') + `/api/NoticeTypes/History/{Id}?`,\r\n \"routeProps\": [{ name: \"mid\", key: \"Id\", },],\r\n type: 'get',\r\n saveAs: { key: 'data' }\r\n }\r\n },\r\n ],\r\n },\r\n sectionscomp: {\r\n type: \"sections\",\r\n name: \"sectionscomp\",\r\n key: \"sectionscomp\",\r\n initRun: true,\r\n layout: {\r\n 'Details': {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row col d-flex flex-row-reverse',\r\n components: [\r\n {\r\n name: 'save',\r\n type: 'div',\r\n className: 'col-2',\r\n sub: {\r\n type: 'div',\r\n className: 'col-2',\r\n }\r\n },\r\n {\r\n name: 'Edit',\r\n type: 'div',\r\n className: 'col-1',\r\n sub: {\r\n type: 'div',\r\n className: 'col-1',\r\n }\r\n },\r\n // {\r\n // name: 'createduplicate',\r\n // type: 'div',\r\n // className: 'col-2',\r\n // sub: {\r\n // type: 'div',\r\n // className: 'col-2',\r\n // }\r\n // },\r\n {\r\n name: 'saveduplicate',\r\n type: 'div',\r\n className: 'col-1',\r\n sub: {\r\n type: 'div',\r\n className: 'col-1',\r\n }\r\n },\r\n ],\r\n },\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row col',\r\n components: [\r\n {\r\n name: 'Name',\r\n type: 'div',\r\n className: 'col-10',\r\n sub: {\r\n type: 'div',\r\n className: 'col-10',\r\n }\r\n },\r\n ],\r\n },\r\n {\r\n order: 2,\r\n type: 'div',\r\n className: 'row col',\r\n components: [\r\n {\r\n name: 'Description',\r\n type: 'div',\r\n className: 'col-10',\r\n sub: {\r\n type: 'div',\r\n className: 'col-10'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 3,\r\n type: 'div',\r\n className: 'row col',\r\n components: [\r\n {\r\n name: 'SubModuleKey',\r\n type: 'div',\r\n className: 'col-4',\r\n sub: {\r\n type: 'div',\r\n className: 'col-4'\r\n }\r\n },\r\n {\r\n name: 'SitePermitType',\r\n type: 'div',\r\n className: 'col-4',\r\n sub: {\r\n type: 'div',\r\n className: 'col-4'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 4,\r\n type: 'div',\r\n className: 'row col',\r\n components: [\r\n {\r\n name: 'CanEditNoticeDate',\r\n type: 'div',\r\n className: 'col-5',\r\n sub: {\r\n type: 'div',\r\n className: 'col-5'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 5,\r\n type: 'div',\r\n className: 'row col',\r\n components: [\r\n {\r\n name: 'CanEditPastNoticeDate',\r\n type: 'div',\r\n className: 'col-3',\r\n sub: {\r\n type: 'div',\r\n className: 'col-3'\r\n }\r\n },\r\n {\r\n name: 'CanEditCurrentNoticeDate',\r\n type: 'div',\r\n className: 'col-3',\r\n sub: {\r\n type: 'div',\r\n className: 'col-3'\r\n }\r\n },\r\n {\r\n name: 'CanEditFutureNoticeDate',\r\n type: 'div',\r\n className: 'col-3',\r\n sub: {\r\n type: 'div',\r\n className: 'col-3'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 6,\r\n type: 'div',\r\n className: 'row col',\r\n components: [\r\n {\r\n name: 'Status',\r\n type: 'div',\r\n className: 'col-10',\r\n sub: {\r\n type: 'div',\r\n className: 'col-10'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 7,\r\n type: 'div',\r\n className: 'row col',\r\n components: [{\r\n name: 'CreatedOn',\r\n type: 'div',\r\n className: 'col-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-6'\r\n }\r\n },\r\n {\r\n name: 'CreatedByName',\r\n type: 'div',\r\n className: 'col-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-6'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 8,\r\n type: 'div',\r\n className: 'row col',\r\n components: [\r\n {\r\n name: 'UpdatedOn',\r\n type: 'div',\r\n className: 'col-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-6'\r\n }\r\n },\r\n {\r\n name: 'UpdatedByName',\r\n type: 'div',\r\n className: 'col-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-6'\r\n }\r\n },]\r\n },\r\n ],\r\n },\r\n 'Attachments for Inserts': {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row col',\r\n components: [\r\n {\r\n name: 'Attachment',\r\n type: 'div',\r\n className: 'col-12',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12',\r\n }\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n 'Build Notice': {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row col',\r\n components: [\r\n {\r\n name: 'TemplateBr',\r\n type: 'div',\r\n className: 'col-12',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12',\r\n }\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n },\r\n aliases: {\r\n 'editInfo': 'editInfo',\r\n 'allgriddata': 'allgriddata',\r\n 'navigateItem': 'navigateItem'\r\n },\r\n sharedValues: ['editInfo', 'allgriddata', 'navigateItem', 'navigation', 'edit', 'save', 'createduplicate', 'exitfullscreen', 'fullscreen', 'back'],\r\n validationMapKeys: [],\r\n values: {\r\n Id: '',\r\n Name: '',\r\n Description: '',\r\n SubModuleKey: '',\r\n Status: 'A',\r\n SitePermitType: '',\r\n UpdatedByName: '',\r\n CreatedByName: '',\r\n UpdatedOn: '',\r\n CreatedOn: '',\r\n UpdatedBy: '',\r\n CreatedBy: '',\r\n TemplateBr: '',\r\n Attachment: '',\r\n CanEditCurrentNoticeDate: '',\r\n CanEditFutureNoticeDate: '',\r\n CanEditNoticeDate: 'N',\r\n CanEditPastNoticeDate: '',\r\n save: false,\r\n edit: false,\r\n createduplicate: false,\r\n saveduplicate: false\r\n },\r\n fieldsinSectionNames: {\r\n Name: 'Details',\r\n Description: 'Details',\r\n SubModuleKey: 'Details',\r\n Status: 'Details',\r\n SitePermitType: 'Details',\r\n UpdatedByName: 'Details',\r\n CreatedByName: 'Details',\r\n UpdatedOn: 'Details',\r\n CreatedOn: 'Details',\r\n UpdatedBy: 'Details',\r\n CreatedBy: 'Details',\r\n TemplateBr: 'Build Details',\r\n CanEditCurrentNoticeDate: 'Details',\r\n CanEditFutureNoticeDate: 'Details',\r\n CanEditNoticeDate: 'Details',\r\n CanEditPastNoticeDate: 'Details',\r\n Attachment: 'Attachments for Inserts',\r\n },\r\n\r\n sections: {\r\n type: 'tab',\r\n sectionNames: ['Details', 'Attachments for Inserts', 'Build Notice'],\r\n steps: ['Details', 'Attachments for Inserts', 'Build Notice'],//\r\n },\r\n components: {\r\n save: {\r\n \"changefieldto\": \"button\",\r\n \"type\": \"button\",\r\n isIcon: true,\r\n custom: true,\r\n \"key\": \"save\",\r\n \"label\": \"save\",\r\n \"name\": \"save\",\r\n icon: 'save',\r\n size: 'small',\r\n extraProps: {\r\n color: 'primary',\r\n variant: \"outlined\",\r\n }\r\n },\r\n Edit: {\r\n \"changefieldto\": \"button\",\r\n \"type\": \"button\",\r\n isIcon: true,\r\n custom: true,\r\n \"key\": \"Edit\",\r\n \"label\": \"Edit\",\r\n \"name\": \"Edit\",\r\n icon: 'edit',\r\n size: 'small',\r\n extraProps: {\r\n color: 'primary',\r\n variant: \"outlined\",\r\n }\r\n\r\n },\r\n saveduplicate: {\r\n \"changefieldto\": \"button\",\r\n \"type\": \"button\",\r\n isIcon: true,\r\n custom: true,\r\n \"key\": \"saveduplicate\",\r\n \"label\": \"Save Notice\",\r\n \"name\": \"saveduplicate\",\r\n icon: 'save',\r\n size: 'small',\r\n extraProps: {\r\n color: 'primary',\r\n variant: \"outlined\",\r\n }\r\n },\r\n // createduplicate: {\r\n // \"changefieldto\": \"button\",\r\n // \"type\": \"button\",\r\n // isIcon: true,\r\n // custom: true,\r\n // \"key\": \"CreateDuplicate\",\r\n // \"label\": 'Clone Notice',\r\n // \"name\": \"createduplicate\",\r\n // icon: 'file_copy',\r\n // size: 'small',\r\n // extraProps: {\r\n // color: 'primary',\r\n // variant: \"outlined\",\r\n // }\r\n\r\n // },\r\n Name: {\r\n \"changefieldto\": \"textfield\",\r\n \"type\": \"label\",\r\n custom: true,\r\n \"key\": \"Name\",\r\n \"label\": \"Name\",\r\n \"name\": \"Name\",\r\n },\r\n\r\n Description: {\r\n \"changefieldto\": \"textfield\",\r\n \"type\": \"label\",\r\n custom: true,\r\n \"key\": \"Description\",\r\n \"label\": \"Description\",\r\n \"name\": \"Description\",\r\n },\r\n SubModuleKey: {\r\n \"changefieldto\": \"label\",\r\n \"type\": \"label\",\r\n custom: true,\r\n \"key\": \"SubModuleKey\",\r\n \"label\": \"Sub Module\",\r\n \"name\": \"SubModuleKey\",\r\n extraProps: {\r\n transformProps: {\r\n label: 'SubModuleName',\r\n value: 'Key'\r\n },\r\n },\r\n },\r\n\r\n SitePermitType: {\r\n \"changefieldto\": \"label\",\r\n \"type\": \"label\",\r\n custom: true,\r\n \"key\": \"SitePermitType\",\r\n \"label\": \"Permit Type\",\r\n \"name\": \"SitePermitType\",\r\n extraProps: {\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Id'\r\n },\r\n },\r\n },\r\n Status: {\r\n \"changefieldto\": \"toggle\",\r\n \"type\": \"label\",\r\n custom: true,\r\n \"key\": \"Status\",\r\n \"label\": \"Status\",\r\n \"name\": \"Status\",\r\n extraProps: {\r\n transformProps: {\r\n I: false,\r\n A: true,\r\n 'true': 'A',\r\n 'false': 'I'\r\n },\r\n },\r\n LabeltransformProps: {\r\n I: 'In-Active',\r\n A: 'Active',\r\n true: 'Active',\r\n false: 'In-Active',\r\n },\r\n },\r\n CreatedOn: {\r\n \"type\": \"label\",\r\n \"key\": \"CreatedOn\",\r\n custom: true,\r\n \"label\": \"Created On\",\r\n name: \"CreatedOn\",\r\n changefieldto: \"label\",\r\n },\r\n CreatedByName: {\r\n \"type\": \"label\",\r\n custom: true,\r\n \"key\": \"CreatedByName\",\r\n \"label\": \"Created By\",\r\n name: \"CreatedByName\",\r\n changefieldto: \"label\",\r\n },\r\n UpdatedOn: {\r\n \"type\": \"label\",\r\n custom: true,\r\n \"key\": \"UpdatedOn\",\r\n \"label\": \"Updated On\",\r\n name: \"UpdatedOn\",\r\n changefieldto: \"label\",\r\n },\r\n UpdatedByName: {\r\n \"type\": \"label\",\r\n custom: true,\r\n \"key\": \"UpdatedByName\",\r\n \"label\": \"Updated By\",\r\n name: \"UpdatedByName\",\r\n changefieldto: \"label\",\r\n },\r\n TemplateBr: {\r\n \"type\": \"templatebusiness\",\r\n edit: true,\r\n custom: true,\r\n \"key\": \"TemplateBr\",\r\n \"label\": \"Notice Template\",\r\n name: \"TemplateBr\",\r\n changefieldto: \"templatebusiness\",\r\n },\r\n Attachment: AttachmentGrid,\r\n CanEditCurrentNoticeDate: {\r\n changefieldto: 'checkbox',\r\n \"type\": \"label\",\r\n custom: true,\r\n \"key\": \"CanEditCurrentNoticeDate\",\r\n \"label\": \"Current\",\r\n \"name\": \"CanEditCurrentNoticeDate\",\r\n extraProps: {\r\n transformProps: {\r\n N: false,\r\n Y: true,\r\n 'true': 'Y',\r\n 'false': 'N'\r\n },\r\n }\r\n },\r\n CanEditFutureNoticeDate: {\r\n changefieldto: 'checkbox',\r\n \"type\": \"label\",\r\n custom: true,\r\n \"key\": \"CanEditFutureNoticeDate\",\r\n \"label\": \"Future\",\r\n \"name\": \"CanEditFutureNoticeDate\",\r\n extraProps: {\r\n transformProps: {\r\n N: false,\r\n Y: true,\r\n 'true': 'Y',\r\n 'false': 'N'\r\n },\r\n }\r\n },\r\n CanEditNoticeDate: {\r\n changefieldto: 'checkbox',\r\n \"type\": \"label\",\r\n custom: true,\r\n \"key\": \"CanEditNoticeDate\",\r\n \"label\": \"Can Edit Notice Date\",\r\n \"name\": \"CanEditNoticeDate\",\r\n extraProps: {\r\n transformProps: {\r\n N: false,\r\n Y: true,\r\n 'true': 'Y',\r\n 'false': 'N'\r\n },\r\n }\r\n },\r\n CanEditPastNoticeDate: {\r\n changefieldto: 'checkbox',\r\n \"type\": \"label\",\r\n custom: true,\r\n \"key\": \"CanEditPastNoticeDate\",\r\n \"label\": \"Past\",\r\n \"name\": \"CanEditPastNoticeDate\",\r\n extraProps: {\r\n transformProps: {\r\n N: false,\r\n Y: true,\r\n 'true': 'Y',\r\n 'false': 'N'\r\n },\r\n }\r\n },\r\n },\r\n mapActionsToEffects: {\r\n 'onLoad': {\r\n 'init': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n { type: \"prop\", name: \"save\", isVisible: false },\r\n { type: \"prop\", name: \"saveduplicate\", isVisible: false },\r\n {\r\n type: 'load',\r\n name: 'SubModuleKey',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('MasterAdmin') + `/api/module/${getEnvVariable('ModuleKey')}/submodule/All/Active/IsConfigurable`,\r\n type: 'get',\r\n saveAs: {\r\n key: 'items'\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n type: 'load',\r\n name: 'SitePermitType',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('AdminConfig') + `/api/SitePermitTypes/SubModuleKey/Active/{SubModuleKey}`,\r\n type: 'get',\r\n \"matchProps\": [{\r\n name: \"SubModuleKey\",\r\n key: \"SubModuleKey\",\r\n }],\r\n saveAs: {\r\n key: 'items'\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n type: 'validations',\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('Application') + `/api/ProjectMessages/RulesByName?name=amesadmin.Noticetypes`,\r\n type: 'get'\r\n }\r\n ],\r\n transformProps: {\r\n removesubfieldname: `${getEnvVariable('ModuleKey')}ADMIN.Noticetypes_`\r\n }\r\n },\r\n {\r\n type: 'businessrules',\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('Application') + `/api/BusinessRules/Grid/Admin.NoticeTypes`,\r\n type: 'get',\r\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 'onChange': {\r\n SubModuleKey: {\r\n rules: [\r\n {\r\n canOverwrite: true,\r\n check: [{\r\n condition: \"AND\",\r\n rules: [\r\n { name: \"SubModuleKey\", type: \"!=\", value: \"\", rules: [] }]\r\n }],\r\n fields: [\"SubModuleKey\"],\r\n run: {\r\n type: \"check\",\r\n valid: [\r\n {\r\n type: 'load',\r\n name: 'SitePermitType',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('AdminConfig') + `/api/SitePermitTypes/SubModuleKey/Active/{SubModuleKey}`,\r\n type: 'get',\r\n \"matchProps\": [{\r\n name: \"navigation.SubModuleKey\",\r\n key: \"SubModuleKey\",\r\n }],\r\n saveAs: {\r\n key: 'items'\r\n }\r\n }\r\n ]\r\n },\r\n ],\r\n invalid: []\r\n },\r\n uncheck: false\r\n }\r\n ],\r\n fields: [\r\n 'SubModuleKey'\r\n ]\r\n },\r\n 'navigation': {\r\n rules: [{\r\n run:\r\n {\r\n valid: [\r\n {\r\n type: 'initial',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin') + `/api/NoticeTypes/{Id}`,\r\n key: 'save',\r\n \"matchProps\": [\r\n {\r\n name: \"navigation.Id\",\r\n key: \"Id\",\r\n },\r\n ],\r\n type: 'get',\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n // 'edit': {\r\n // rules: [\r\n // {\r\n // run: {\r\n // valid: [\r\n // {\r\n // type: 'edit',\r\n\r\n // },\r\n\r\n // ]\r\n // }\r\n // }\r\n // ]\r\n // },\r\n 'exitfullscreen': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'exitfullscreen',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'fullscreen': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'fullscreen',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n // 'createduplicate': {\r\n // rules: [\r\n // {\r\n // run: {\r\n // valid: [\r\n // {\r\n // type: 'createduplicate',\r\n\r\n // },\r\n\r\n // ]\r\n // }\r\n // }\r\n // ]\r\n // },\r\n 'Edit': {\r\n rules: [\r\n {\r\n fields: [\r\n 'Edit'\r\n ],\r\n run: {\r\n valid: [\r\n {\r\n type: 'edit',\r\n\r\n },\r\n { type: \"prop\", name: \"save\", isVisible: true },\r\n { type: \"prop\", name: \"Edit\", isVisible: false },\r\n { type: \"prop\", name: \"saveduplicate\", isVisible: false },\r\n { type: \"prop\", name: \"createduplicate\", isVisible: true },\r\n\r\n ]\r\n }\r\n }\r\n ],\r\n fields: [\r\n 'Edit'\r\n ]\r\n },\r\n // 'createduplicate': {\r\n // rules: [\r\n // {\r\n // fields: [\r\n // 'createduplicate'\r\n // ],\r\n // run: {\r\n // valid: [\r\n // {\r\n // type: 'edit',\r\n\r\n // },\r\n // { type: \"prop\", name: \"saveduplicate\", isVisible: true },\r\n // { type: \"prop\", name: \"createduplicate\", isVisible: true },\r\n // { type: \"prop\", name: \"Edit\", isVisible: false },\r\n\r\n // ]\r\n // }\r\n // }\r\n // ],\r\n // fields: [\r\n // 'createduplicate'\r\n // ]\r\n // },\r\n 'save': {\r\n rules: [\r\n {\r\n fields: [\r\n 'save'\r\n ],\r\n run: {\r\n valid: [\r\n {\r\n type: 'save',\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('Admin') + `/api/NoticeTypes/Update`,\r\n type: 'put',\r\n }\r\n ],\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ],\r\n fields: [\r\n 'save'\r\n ],\r\n },\r\n 'saveduplicate': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'save',\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('Admin') + `/api/NoticeTypes/Add`,\r\n type: 'post',\r\n\r\n }\r\n ],\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n },\r\n // 'afterSave': {\r\n // 'saveduplicate': {\r\n // rules: [\r\n // {\r\n // run: {\r\n // valid: [\r\n // {\r\n // type: 'save',\r\n // \"read\": [\r\n // {\r\n // \"url\": getEnvVariable('Admin') + `/api/NoticeTypes/Add`,\r\n // type: 'post',\r\n\r\n // }\r\n // ],\r\n // },\r\n\r\n // ]\r\n // }\r\n // }\r\n // ]\r\n // },\r\n // // 'save': {\r\n // // rules: [\r\n // // {\r\n // // run: {\r\n // // valid: [\r\n // // {\r\n // // type: 'save',\r\n // // \"read\": [\r\n // // {\r\n // // \"url\": getEnvVariable('Admin') + `/api/NoticeTypes/Update`,\r\n // // type: 'put',\r\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 ViewNotice\r\n\r\n\r\n\r\n","import { getEnvVariable } from '../../../modules/environmentalList';\r\nimport AddNotice from './add';\r\nimport ViewNotice from './edit';\r\n\r\nconst NoticeGrid = {\r\n \"title\":\"Notices\",\r\n \"type\": \"grid\",\r\n \"key\": \"NoticeGrid\",\r\n \"gridkey\": 'NoticeGrid',\r\n \"name\": \"NoticeGrid\",\r\n \"hasreport\": true,\r\n \"addRoute\": true,\r\n \"routeParams\": { replace: 'noticestypes', param: 'Id', routeName: 'mid' },\r\n values: {\r\n addOpen: false,\r\n editOpen: false,\r\n editInfo: null,\r\n allgriddata: null,\r\n reportOpen: false,\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null,\r\n load: false,\r\n navigateItem: null,\r\n navigation: null,\r\n },\r\n sharedValues: ['addOpen', 'editOpen', 'editInfo', 'allgriddata', 'navigateItem', 'navigation', 'loadreportfilter', 'ReportJsonQueryStr', 'reportOpen'],\r\n aliases: {\r\n addOpen: 'addOpen',\r\n editOpen: 'editOpen',\r\n editInfo: 'editInfo',\r\n navigateItem: 'navigateItem',\r\n allgriddata: 'allgriddata',\r\n navigation: 'navigation',\r\n reportOpen: 'reportOpen',\r\n loadreportfilter: 'loadreportfilter',\r\n ReportJsonQueryStr: 'ReportJsonQueryStr'\r\n },\r\n headerProps: {\r\n title: \"Notice\",\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": getEnvVariable('TitleKey') + ` Settings`, \"tab\": 2, \"materialicon\": \"settings_applications\", href: getEnvVariable('InternalBasepath'), className: 'breadcrumb-item text-dark', class: 'text-dark' },\r\n { \"link\": \"Notice Types\", href: \"#/Administration/noticestypes\", \"materialicon\": \"article\", className: 'breadcrumb-item', class: 'text-light' }\r\n\r\n ],\r\n }\r\n ],\r\n actions: [\r\n {\r\n type: 'fab',\r\n icon: 'clear',\r\n name: 'clear',\r\n color: 'primary',\r\n title: 'Clear Filters',\r\n menucolor: '#22a9b3',\r\n hideon: 'clear',\r\n hidevalue: false\r\n },\r\n\r\n {\r\n type: 'menu',\r\n icon: 'excel',\r\n name: 'excel',\r\n color: 'primary',\r\n title: 'Export to Excel',\r\n menucolor: '#c90685',\r\n hideon: 'excel',\r\n hidevalue: false,\r\n items: [{\r\n name: 'Export Current Page',\r\n action: 'filtercurrent'\r\n },\r\n {\r\n name: 'Export All Pages',\r\n action: 'filterall'\r\n }\r\n ]\r\n },\r\n {\r\n type: 'fab',\r\n icon: 'reports',\r\n name: 'reports',\r\n color: 'primary',\r\n title: 'Save Report',\r\n menucolor: '#C85A54',\r\n hideon: 'reports',\r\n hidevalue: false\r\n },\r\n {\r\n type: 'fab',\r\n icon: 'add',\r\n name: 'add',\r\n color: 'primary',\r\n hideon: 'addButton',\r\n hidevalue: true,\r\n title: 'Add Notice Type',\r\n menucolor: '#36088a'\r\n },\r\n\r\n ]\r\n },\r\n \"columns\": [\r\n {\r\n \"title\": \"Notice Name\",\r\n \"field\": \"Name\",\r\n \"show\": true,\r\n \"width\": 400\r\n },\r\n {\r\n \"title\": \"Sub Module\",\r\n \"field\": \"SubModuleKeyDesc\",\r\n \"show\": true,\r\n \"width\": 220,\r\n },\r\n {\r\n \"title\": \"Status\",\r\n \"field\": \"StatusDesc\",\r\n \"show\": true,\r\n \"width\": 200\r\n },\r\n {\r\n \"title\": \"Created By\",\r\n \"field\": \"CreatedByName\",\r\n \"show\": true,\r\n \"width\": 185\r\n },\r\n {\r\n \"title\": \"Created On\",\r\n \"field\": \"CreatedOn\",\r\n \"show\": true,\r\n \"width\": 185,\r\n filter: \"date\",\r\n format: \"{0:d}\",\r\n convert: \"MM/DD/YYYY hh:mm:ss A\"\r\n },\r\n {\r\n \"title\": \"Updated By\",\r\n \"field\": \"UpdatedByName\",\r\n \"show\": true,\r\n \"width\": 185\r\n },\r\n {\r\n \"title\": \"Updated On\",\r\n \"field\": \"UpdatedOn\",\r\n \"show\": true,\r\n \"width\": 185,\r\n filter: \"date\",\r\n format: \"{0:d}\",\r\n convert: \"MM/DD/YYYY hh:mm:ss A\"\r\n },\r\n\r\n ],\r\n displayName: 'editInfo',\r\n allgriddata: 'allgriddata',\r\n navigateItem: 'navigateItem',\r\n navigation: 'navigation',\r\n loadreportfilter: 'loadreportfilter',\r\n ReportJsonQueryStr: 'ReportJsonQueryStr',\r\n navigateItem: 'navigateItem',\r\n mapActionsToEffects: {\r\n load: {\r\n rules: [{\r\n run: {\r\n valid: [{\r\n type: 'grid',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin') + `/api/NoticeTypes/Grid?`,\r\n \"matchProps\": [{\r\n name: \"routeid1\",\r\n key: \"routeid1\",\r\n }],\r\n type: 'get',\r\n saveAs: {\r\n key: 'data'\r\n }\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n // addOpen: {\r\n // rules: [{\r\n // check: [\r\n // {\r\n // condition: 'AND',\r\n // rules: [\r\n // {\r\n // \"name\": \"addOpen\",\r\n // \"type\": \"!=\",\r\n // \"value\": true,\r\n // \"rules\": []\r\n // }\r\n // ]\r\n // }\r\n // ],\r\n // run: {\r\n // valid: [{\r\n // type: 'grid',\r\n // \"read\": [\r\n // {\r\n // url: getEnvVariable('Application') + `/api/MasterTemplates/Grid?`,\r\n // \"matchProps\": [{\r\n // name: \"routeid1\",\r\n // key: \"routeid1\",\r\n // }],\r\n // type: 'get',\r\n // saveAs: {\r\n // key: 'data'\r\n // }\r\n // }\r\n // ]\r\n // },\r\n // ]\r\n // }\r\n // }]\r\n // },\r\n editOpen: {\r\n rules: [{\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"editOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n run: {\r\n valid: [{\r\n type: 'grid',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin') + `/api/NoticeTypes/Grid?`,\r\n \"matchProps\": [{\r\n name: \"routeid1\",\r\n key: \"routeid1\",\r\n }],\r\n type: 'get',\r\n saveAs: {\r\n key: 'data'\r\n }\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n 'add': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'value',\r\n key: 'addOpen',\r\n result: true\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n\r\n 'display': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'value',\r\n key: 'editOpen',\r\n result: true\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'editInfo',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'allgriddata',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'navigateItem',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'navigation',\r\n },\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'report': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'value',\r\n key: 'reportOpen',\r\n result: true\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'loadreportfilter',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'ReportJsonQueryStr',\r\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 NoticeReport = {\r\n type: 'popup',\r\n key: 'NoticeReport',\r\n name: 'NoticeReport',\r\n\r\n anchor: 'right',\r\n open: false,\r\n aliases: {\r\n open: 'reportOpen'\r\n },\r\n sharedValues: ['open', 'loadreportfilter', 'ReportJsonQueryStr'],\r\n container: {\r\n values: {\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null\r\n },\r\n mapValues: {\r\n Report: [\r\n {\r\n key: 'ReportJsonQueryStr',\r\n name: 'ReportJsonQueryStr'\r\n },\r\n {\r\n key: 'loadreportfilter',\r\n name: 'loadreportfilter'\r\n },\r\n ],\r\n },\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: '',\r\n components: [\r\n {\r\n name: 'Report'\r\n },\r\n ]\r\n }\r\n ]\r\n\r\n },\r\n components: {\r\n Report: {\r\n \"type\": \"form\",\r\n \"key\": \"Report\",\r\n \"name\": \"Report\",\r\n aliases: {\r\n\r\n },\r\n sharedValues: ['ReportJsonQueryStr', 'loadreportfilter'],\r\n values: {\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null\r\n },\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: '',\r\n components: [{\r\n name: 'ReportJsonQueryStr',\r\n type: 'div',\r\n\r\n },\r\n {\r\n name: 'loadreportfilter',\r\n type: 'div',\r\n\r\n }],\r\n\r\n },\r\n ],\r\n },\r\n \"components\": {\r\n \"ReportJsonQueryStr\": {\r\n \"type\": \"gridreport\",\r\n \"gridkey\": 'NoticeGrid',\r\n },\r\n },\r\n }\r\n }\r\n }\r\n}\r\n\r\nconst NoticeContainer = {\r\n type: 'container',\r\n key: 'Noticecontainer',\r\n values: {\r\n addOpen: false,\r\n editOpen: false,\r\n editInfo: null,\r\n allgriddata: null,\r\n navigateItem: null,\r\n navigation: null,\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null,\r\n reportOpen: false,\r\n },\r\n mapValues: {\r\n AddNotice: [\r\n {\r\n key: 'addOpen',\r\n name: 'open'\r\n }\r\n ],\r\n ViewNotice: [\r\n {\r\n key: 'editOpen',\r\n name: 'open'\r\n },\r\n {\r\n key: 'editInfo',\r\n name: 'editInfo'\r\n },\r\n {\r\n key: 'navigateItem',\r\n name: 'navigateItem'\r\n },\r\n {\r\n key: 'allgriddata',\r\n name: 'allgriddata'\r\n },\r\n {\r\n key: 'navigation',\r\n name: 'navigation'\r\n },\r\n ],\r\n NoticeGrid: [\r\n {\r\n key: 'editOpen',\r\n name: 'editOpen'\r\n },\r\n {\r\n key: 'addOpen',\r\n name: 'addOpen'\r\n },\r\n {\r\n key: 'reportOpen',\r\n name: 'reportOpen'\r\n },\r\n {\r\n key: 'ReportJsonQueryStr',\r\n name: 'ReportJsonQueryStr'\r\n },\r\n {\r\n key: 'loadreportfilter',\r\n name: 'loadreportfilter'\r\n },\r\n ],\r\n NoticeReport: [\r\n {\r\n key: 'reportOpen',\r\n name: 'open'\r\n },\r\n {\r\n key: 'loadreportfilter',\r\n name: 'loadreportfilter'\r\n },\r\n {\r\n key: 'ReportJsonQueryStr',\r\n name: 'ReportJsonQueryStr'\r\n },\r\n\r\n ]\r\n\r\n },\r\n mapActionsToEffects: {\r\n 'addOpen': {\r\n rules: [\r\n {\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"addOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n uncheck: true,\r\n run: {\r\n valid: [\r\n {\r\n type: 'removelayout',\r\n name: 'AddNotice',\r\n }\r\n ],\r\n inValid: [\r\n {\r\n type: 'addlayout',\r\n name: 'AddNotice',\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'editOpen': {\r\n rules: [\r\n {\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"editOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n uncheck: true,\r\n run: {\r\n valid: [\r\n {\r\n type: 'removelayout',\r\n name: 'ViewNotice',\r\n }\r\n\r\n ],\r\n inValid: [\r\n {\r\n type: 'addlayout',\r\n name: 'ViewNotice',\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'reportOpen': {\r\n rules: [\r\n {\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"reportOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n uncheck: true,\r\n run: {\r\n valid: [\r\n // {\r\n // type: 'removelayout',\r\n // name: 'NoticeReport',\r\n // }\r\n\r\n ],\r\n inValid: [\r\n {\r\n type: 'addlayout',\r\n name: 'NoticeReport',\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n },\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row col-12',\r\n components: [\r\n {\r\n name: 'NoticeGrid'\r\n },\r\n\r\n ]\r\n }\r\n ]\r\n\r\n },\r\n components: {\r\n NoticeGrid: NoticeGrid,\r\n NoticeReport: NoticeReport,\r\n AddNotice: AddNotice,\r\n ViewNotice: ViewNotice\r\n }\r\n}\r\n\r\nexport default NoticeContainer","import { Fragment } from \"react\"\r\nimport Container from '../../../core/controls/components/container'\r\nimport Notice from '../../jsons/notice'\r\n\r\n\r\nconst NoticeContainer = (props) => {\r\n\r\n return (\r\n <Fragment>\r\n <Container {...Notice} {...props} />\r\n </Fragment>\r\n )\r\n}\r\nexport default NoticeContainer","import { getEnvVariable } from \"../../../../modules/environmentalList\"\r\n\r\nconst GeneralsettingsAdd = {\r\n \"type\": \"popup\",\r\n \"key\": \"GeneralsettingsAdd\",\r\n \"name\": \"GeneralsettingsAdd\",\r\n anchor: 'right',\r\n open: false,\r\n aliases: {\r\n open: 'addOpen'\r\n },\r\n sharedValues: ['open'],\r\n container: {\r\n values: { save: false, back: false, fullscreen: false, },\r\n mapValues: {\r\n header: [\r\n { key: 'exitfullscreen', name: 'exitfullscreen' },\r\n { key: 'fullscreen', name: 'fullscreen' },\r\n ],\r\n AddGeneralsettings: [{ key: 'save', name: 'save' },\r\n { key: 'exitfullscreen', name: 'exitfullscreen' },\r\n { key: 'fullscreen', name: 'fullscreen' },]\r\n },\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [{\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'header',\r\n type: 'div',\r\n className: 'col-12 ',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12',\r\n }\r\n }],\r\n\r\n },\r\n\r\n\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'AddGeneralsettings',\r\n type: 'div',\r\n className: 'col-12 pl-5 pt-1',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12 pl-5 pt-1',\r\n }\r\n }],\r\n\r\n },\r\n ]\r\n },\r\n\r\n components: {\r\n header: {\r\n name: \"header\",\r\n type: 'header',\r\n title: 'settings',\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": \"Add Settings\", \"materialicon\": \"settings\", className: 'eps-breadcrumb-item ', class: 'text-light' },\r\n ]\r\n }\r\n ],\r\n layout: {},\r\n actions: [\r\n {\r\n type: 'icon',\r\n icon: 'back',\r\n name: 'back',\r\n hideon: 'back',\r\n hidevalue: false,\r\n title: 'Back'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'save',\r\n name: 'save',\r\n hideon: 'save',\r\n hidevalue: false,\r\n title: 'Save Settings'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'fullscreen',\r\n name: 'fullscreen',\r\n hidevalue: false,\r\n title: 'FullScreen'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'exitfullscreen',\r\n name: 'exitfullscreen',\r\n hideon: 'fullscreen',\r\n hidevalue: false,\r\n title: 'Exit FullScreen'\r\n }\r\n ],\r\n\r\n\r\n },\r\n AddGeneralsettings: {\r\n \"type\": \"form\",\r\n \"key\": \"AddGeneralsettings\",\r\n \"name\": \"AddGeneralsettings\",\r\n \"routeParams\": { replace: 'settings', param: 'Id', routeName: 'TableName' },\r\n aliases: {\r\n save: 'save',\r\n },\r\n sharedValues: ['save', 'exitfullscreen', 'fullscreen'],\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'Name',\r\n type: 'div',\r\n className: 'col-md-10 col-12',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-12',\r\n }\r\n }],\r\n\r\n },\r\n\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'Description',\r\n type: 'div',\r\n className: 'col-md-10 col-12',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-12',\r\n }\r\n },\r\n \r\n ]\r\n },\r\n {\r\n order: 2,\r\n type: 'div',\r\n className: 'row',\r\n components: [\r\n {\r\n name: 'Type',\r\n type: 'div',\r\n className: 'col-md-10 col-12',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-12',\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 3,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'Value',\r\n type: 'div',\r\n className: 'col-md-10 col-12',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-12'\r\n }\r\n },\r\n ]\r\n },\r\n // {\r\n // order: 4,\r\n // type: 'div',\r\n // className: 'row',\r\n // components: [{\r\n // name: 'Status',\r\n // type: 'div',\r\n // className: 'col-md-10 col-12',\r\n // sub: {\r\n // type: 'div',\r\n // className: 'col-md-4 col-lg-3'\r\n // }\r\n // },\r\n // ]\r\n // },\r\n ],\r\n },\r\n values: {\r\n Name: '',\r\n Description: '',\r\n Type: '', \r\n Value: '',\r\n Status: 'I'\r\n },\r\n\r\n \"components\": {\r\n Name: {\r\n \"type\": \"textfield\",\r\n \"key\": \"Name\",\r\n \"label\": \"Name\",\r\n \"name\": \"Name\", \r\n },\r\n Description: {\r\n \"type\": \"textfield\",\r\n \"key\": \"Description\",\r\n \"label\": \"Description\",\r\n \"name\": \"Description\",\r\n multiline : true\r\n },\r\n Type: {\r\n \"type\": \"dropdown\",\r\n \"key\": \"Type\",\r\n \"label\": \"Type\",\r\n \"name\": \"Type\",\r\n extraProps: {\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Value'\r\n },\r\n }\r\n },\r\n Value: {\r\n \"type\": \"textfield\",\r\n \"key\": \"Value\",\r\n \"label\": \"Value\",\r\n \"name\": \"Value\",\r\n },\r\n // Status: {\r\n // \"type\": \"textfield\",\r\n // \"key\": \"Section\",\r\n // \"label\": \"Section\",\r\n // \"name\": \"Section\",\r\n // },\r\n },\r\n mapActionsToEffects: {\r\n 'onLoad': {\r\n init: {\r\n rules: [{\r\n run:\r\n {\r\n valid: [{\r\n type: 'load',\r\n name: 'Type',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin')+`/api/Domains/values?domainkey=SETTING_TYPE`,\r\n type: 'get',\r\n saveAs: {\r\n key: 'items'\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n type: 'validations', //http://development.delasoft.com:8443/AMES-application/api/ProposedLandUse/5864/Add\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('MasterAdmin')+`/api/ProjectMessages/RulesByName?name=master.appsettings`,\r\n type: 'get'\r\n }\r\n ],\r\n transformProps: {\r\n removesubfieldname: 'MASTER.APPSETTINGS_'\r\n }\r\n },\r\n ]\r\n }\r\n }]\r\n }\r\n },\r\n 'onChange': {\r\n 'exitfullscreen': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'exitfullscreen',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'fullscreen': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'fullscreen',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n \r\n },\r\n 'afterSave': {'save': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'save',\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('Admin')+`/api/AppSettings/Add`,\r\n type: 'post',\r\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 GeneralsettingsAdd","import { getEnvVariable } from \"../../../../modules/environmentalList\"\r\n\r\nconst GeneralsettingsEdit = {\r\n \"type\": \"popup\",\r\n \"key\": \"GeneralsettingsEdit\",\r\n \"name\": \"GeneralsettingsEdit\",\r\n anchor: 'right',\r\n open: false,\r\n aliases: {\r\n open: 'editOpen'\r\n },\r\n sharedValues: ['open'],\r\n container: {\r\n \"addRoute\": true,\r\n closepopup: true,\r\n closepopupval: 'settings',\r\n values: { editInfo: null, edit: false, createduplicate: false, fullscreen: false, back: false, allgriddata: null, navigation: null },\r\n mapValues: {\r\n header: [\r\n { key: 'edit', name: 'edit' },\r\n { key: 'exitfullscreen', name: 'exitfullscreen' },\r\n { key: 'fullscreen', name: 'fullscreen' },\r\n { key: 'createduplicate', name: 'createduplicate' },\r\n ],\r\n EditGeneralsettings: [\r\n { key: 'editInfo', name: 'editInfo' },\r\n { key: 'allgriddata', name: 'allgriddata' },\r\n { key: 'save', name: 'save' },\r\n { key: 'saveduplicate', name: 'saveduplicate' },\r\n { key: 'edit', name: 'edit' },\r\n { key: 'exitfullscreen', name: 'exitfullscreen' },\r\n { key: 'fullscreen', name: 'fullscreen' },\r\n { key: 'createduplicate', name: 'createduplicate' },\r\n { key: 'back', name: 'back' },\r\n { key: 'navigation', name: 'navigation' },]\r\n },\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [{\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'header',\r\n type: 'div',\r\n className: 'col-12 ',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12',\r\n }\r\n }],\r\n\r\n },\r\n\r\n\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'EditGeneralsettings',\r\n type: 'div',\r\n className: 'col-12 pl-5 pt-1',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12 pl-5 pt-1',\r\n }\r\n }],\r\n\r\n },\r\n ]\r\n },\r\n\r\n components: {\r\n header: {\r\n name: \"header\",\r\n type: 'header',\r\n title: 'Settings',\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": \"View/Edit Settings\", \"appendval\": \"Name\", \"materialicon\": \"settings\", className: 'eps-breadcrumb-item ', class: 'text-light' },\r\n ]\r\n }\r\n ],\r\n layout: {},\r\n actions: [\r\n {\r\n type: 'icon',\r\n icon: 'back',\r\n name: 'back',\r\n hideon: 'back',\r\n hidevalue: false,\r\n title: 'Back'\r\n },\r\n\r\n {\r\n type: 'icon',\r\n icon: 'edit',\r\n name: 'edit',\r\n hideon: 'createduplicate',\r\n hideanother: 'edit',\r\n hidevalue: true,\r\n title: 'Edit Settings'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'duplicate',\r\n name: 'createduplicate',\r\n hideon: 'edit',\r\n hideanother: 'createduplicate',\r\n hidevalue: true,\r\n title: 'Clone Settings'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'save',\r\n name: 'save',\r\n hideon: 'edit',\r\n hidevalue: false,\r\n title: 'Save Settings'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'save',\r\n name: 'saveduplicate',\r\n hideon: 'createduplicate',\r\n hidevalue: false,\r\n title: 'Save Settings'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'previtem',\r\n name: 'previtem',\r\n hideon: 'previtem',\r\n hidevalue: false,\r\n title: 'Previous Item'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'nextitem',\r\n name: 'nextitem',\r\n hideon: 'nextitem',\r\n hidevalue: false,\r\n title: 'Next Item'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'fullscreen',\r\n name: 'fullscreen',\r\n hidevalue: false,\r\n title: 'FullScreen'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'exitfullscreen',\r\n name: 'exitfullscreen',\r\n hideon: 'fullscreen',\r\n hidevalue: false,\r\n title: 'Exit FullScreen'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'history',\r\n name: 'history',\r\n title: 'History',\r\n hideon: 'history',\r\n hidevalue: false,\r\n historyurl: {\r\n url: getEnvVariable('Admin') + `/api/AppSettings/history/{Id}?`,\r\n \"routeProps\": [{ name: \"TableName\", key: \"Id\", },],\r\n type: 'get',\r\n saveAs: { key: 'data' }\r\n }\r\n },\r\n ],\r\n\r\n\r\n },\r\n EditGeneralsettings: {\r\n \"type\": \"form\",\r\n \"key\": \"EditGeneralsettings\",\r\n \"name\": \"EditGeneralsettings\",\r\n aliases: {\r\n 'editInfo': 'editInfo',\r\n 'allgriddata': 'allgriddata', // \r\n 'navigation': 'navigation'\r\n },\r\n sharedValues: ['editInfo', 'allgriddata', 'navigation', 'edit', 'createduplicate', 'exitfullscreen', 'fullscreen'],\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'Name',\r\n type: 'div',\r\n className: 'col-md-10 col-12',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-12',\r\n }\r\n }],\r\n\r\n },\r\n\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'Description',\r\n type: 'div',\r\n className: 'col-md-10 col-12',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-12',\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 2,\r\n type: 'div',\r\n className: 'row',\r\n components: [\r\n {\r\n name: 'Type',\r\n type: 'div',\r\n className: 'col-md-10 col-12',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-12',\r\n }\r\n },]\r\n },\r\n {\r\n order: 3,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'Value',\r\n type: 'div',\r\n className: 'col-md-10 col-12',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-12',\r\n }\r\n },]\r\n },\r\n {\r\n order: 4,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'Status',\r\n type: 'div',\r\n className: 'col-md-10 col-12',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-12',\r\n }\r\n },]\r\n },\r\n {\r\n order: 5,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'CreatedOn',\r\n type: 'div',\r\n className: 'col-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-6'\r\n }\r\n },\r\n {\r\n name: 'CreatedByName',\r\n type: 'div',\r\n className: 'col-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-6'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 6,\r\n type: 'div',\r\n className: 'row',\r\n components: [\r\n {\r\n name: 'UpdatedOn',\r\n type: 'div',\r\n className: 'col-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-6'\r\n }\r\n },\r\n {\r\n name: 'UpdatedByName',\r\n type: 'div',\r\n className: 'col-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-6'\r\n }\r\n },]\r\n },\r\n ],\r\n },\r\n values: {\r\n Name: '',\r\n Description: '',\r\n Type: '',\r\n Value: '',\r\n UpdatedByName: '',\r\n CreatedByName: '',\r\n UpdatedOn: '',\r\n CreatedOn: '',\r\n UpdatedBy: '',\r\n CreatedBy: '',\r\n Id: '',\r\n editInfo: null,\r\n allgriddata: null,\r\n navigation: null,\r\n CanEdit: '',\r\n Key: '',\r\n Status: ''\r\n },\r\n\r\n \"components\": {\r\n Name: {\r\n \"type\": \"label\",\r\n \"key\": \"Name\",\r\n \"label\": \"Name\",\r\n \"name\": \"Name\",\r\n changefieldto: \"textfield\",\r\n },\r\n Description: {\r\n \"type\": \"label\",\r\n \"key\": \"Description\",\r\n \"label\": \"Description\",\r\n \"name\": \"Description\",\r\n changefieldto: \"textfield\",\r\n multiline: true\r\n },\r\n Type: {\r\n \"type\": \"label\",\r\n \"key\": \"Type\",\r\n \"label\": \"Type\",\r\n \"name\": \"Type\",\r\n changefieldto: \"dropdown\",\r\n extraProps: {\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Value'\r\n },\r\n }\r\n },\r\n Value: {\r\n \"type\": \"label\",\r\n \"key\": \"Value\",\r\n \"label\": \"Value\",\r\n \"name\": \"Value\",\r\n changefieldto: \"textfield\",\r\n },\r\n Status: {\r\n \"type\": \"label\",\r\n \"key\": \"Status\",\r\n \"label\": \"Status\",\r\n \"name\": \"Status\",\r\n changefieldto: \"toggle\",\r\n extraProps: {\r\n \"transformProps\": {\r\n \"A\": true,\r\n \"I\": false,\r\n \"true\": \"A\",\r\n \"false\": \"I\"\r\n }\r\n }\r\n },\r\n CreatedOn: {\r\n \"type\": \"label\",\r\n \"key\": \"CreatedOn\",\r\n \"label\": \"Created On\",\r\n name: \"CreatedOn\",\r\n changefieldto: \"label\",\r\n },\r\n CreatedByName: {\r\n \"type\": \"label\",\r\n \"key\": \"CreatedByName\",\r\n \"label\": \"Created By\",\r\n name: \"CreatedByName\",\r\n changefieldto: \"label\",\r\n },\r\n UpdatedOn: {\r\n \"type\": \"label\",\r\n \"key\": \"UpdatedOn\",\r\n \"label\": \"Updated On\",\r\n name: \"UpdatedOn\",\r\n changefieldto: \"label\",\r\n },\r\n UpdatedByName: {\r\n \"type\": \"label\",\r\n \"key\": \"UpdatedByName\",\r\n \"label\": \"Updated By\",\r\n name: \"UpdatedByName\",\r\n changefieldto: \"label\",\r\n },\r\n },\r\n mapActionsToEffects: {\r\n 'onLoad': {\r\n 'init': {\r\n rules: [{\r\n run:\r\n {\r\n valid: [{\r\n type: 'load',\r\n name: 'Type',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin') + `/api/Domains/values?domainkey=SETTING_TYPE`,\r\n type: 'get',\r\n saveAs: {\r\n key: 'items'\r\n }\r\n }\r\n ]\r\n },\r\n\r\n {\r\n type: 'validations',\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/ProjectMessages/RulesByName?name=master.appsettings`,\r\n type: 'get'\r\n }\r\n ],\r\n transformProps: {\r\n removesubfieldname: 'MASTER.APPSETTINGS_'\r\n }\r\n },\r\n ]\r\n }\r\n }]\r\n }\r\n },\r\n 'onChange': {\r\n 'exitfullscreen': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'exitfullscreen',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'fullscreen': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'fullscreen',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'createduplicate': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'createduplicate',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'navigation': {\r\n rules: [{\r\n run:\r\n {\r\n valid: [\r\n {\r\n type: 'initial',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin') + `/api/AppSettings/{Id}`,\r\n key: 'save',\r\n \"matchProps\": [\r\n {\r\n name: \"routeid1\",\r\n key: \"routeid1\",\r\n },\r\n {\r\n name: \"navigation.Id\",\r\n key: \"Id\",\r\n }\r\n ],\r\n type: 'get',\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n 'edit': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'edit',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n 'afterSave': {\r\n 'saveduplicate': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'save',\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('Admin') + `/api/AppSettings/Add`,\r\n type: 'post',\r\n }\r\n ],\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'save': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'save',\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('Admin') + `/api/AppSettings/Update`,\r\n type: 'put',\r\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 GeneralsettingsEdit","import { getEnvVariable } from \"../../../../modules/environmentalList\"\r\n\r\nconst ProjectMessagesTableAdd = {\r\n \"type\": \"popup\",\r\n \"key\": \"ProjectMessagesTableAdd\",\r\n \"name\": \"ProjectMessagesTableAdd\",\r\n anchor: 'right',\r\n open: false,\r\n aliases: {\r\n open: 'addOpen'\r\n },\r\n sharedValues: ['open'],\r\n container: {\r\n values: { save: false, back: false, editInfo: null },\r\n mapValues: {\r\n AddProjectMessagesTable: [{ key: 'save', name: 'save' },\r\n { key: \"editInfo\", name: \"editInfo\" }]\r\n },\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [{\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'header',\r\n type: 'div',\r\n className: 'col-12 ',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12',\r\n }\r\n }],\r\n\r\n },\r\n\r\n\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'AddProjectMessagesTable',\r\n type: 'div',\r\n className: 'col-12 pl-4 m-2',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12 pl-4 m-2',\r\n }\r\n }],\r\n\r\n },\r\n ]\r\n },\r\n\r\n components: {\r\n header: {\r\n name: \"header\",\r\n type: 'header',\r\n title: 'Project Messages',\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": \"Project Messages\", \"materialicon\": \"message\", className: 'eps-breadcrumb-item ', class: 'text-light' },\r\n ]\r\n }\r\n ],\r\n layout: {},\r\n actions: [\r\n {\r\n type: 'icon',\r\n icon: 'back',\r\n name: 'back',\r\n hideon: 'back',\r\n hidevalue: false\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'save',\r\n name: 'save',\r\n hideon: 'save',\r\n hidevalue: false\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'fullscreen',\r\n name: 'fullscreen',\r\n hideon: 'exitfullscreen',\r\n hidevalue: false\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'exitfullscreen',\r\n name: 'exitfullscreen',\r\n hideon: 'fullscreen',\r\n hidevalue: false\r\n }\r\n ],\r\n\r\n\r\n },\r\n AddProjectMessagesTable: {\r\n \"type\": \"form\",\r\n \"key\": \"AddProjectMessagesTable\",\r\n \"name\": \"AddProjectMessagesTable\",\r\n noParams: true,\r\n aliases: {\r\n save: 'save',\r\n 'editInfo': 'editInfo',\r\n },\r\n sharedValues: ['save', 'editInfo', 'back'],\r\n layout: {\r\n group: [\r\n\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'Key',\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8 pt-2',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8 pt-2',\r\n }\r\n }],\r\n\r\n },\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'Type',\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8'\r\n }\r\n },\r\n ]\r\n },\r\n\r\n\r\n\r\n {\r\n order: 2,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'Message',\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n }\r\n },\r\n\r\n ]\r\n },\r\n // {\r\n // order: 3,\r\n // type: 'div',\r\n // className: 'row',\r\n // components: [{\r\n // name: 'Type',\r\n // type: 'div',\r\n // className: 'col-md-10 col-lg-8',\r\n // sub: {\r\n // type: 'div',\r\n // className: 'col-md-10 col-lg-8',\r\n // }\r\n // },\r\n\r\n // ]\r\n // },\r\n // {\r\n // order: 4,\r\n // type: 'div',\r\n // className: 'row',\r\n // components: [\r\n // {\r\n // name: 'Minlen',\r\n // type: 'div',\r\n // className: 'col-md-5 col-lg-4',\r\n // sub: {\r\n // type: 'div',\r\n // className: 'col-md-5 col-lg-4',\r\n // }\r\n // },\r\n // {\r\n // name: 'Maxlen',\r\n // type: 'div',\r\n // className: 'col-md-5 col-lg-4',\r\n // sub: {\r\n // type: 'div',\r\n // className: 'col-md-5 col-lg-4',\r\n // }\r\n // },\r\n // ]\r\n // },\r\n // {\r\n // order: 5,\r\n // type: 'div',\r\n // className: 'row',\r\n // components: [{\r\n // name: 'Mask',\r\n // type: 'div',\r\n // className: 'col-md-10 col-lg-8',\r\n // sub: {\r\n // type: 'div',\r\n // className: 'col-md-10 col-lg-8'\r\n // }\r\n // },\r\n // ]\r\n // },\r\n // {\r\n // order: 6,\r\n // type: 'div',\r\n // className: 'row',\r\n // components: [{\r\n // name: 'Regex',\r\n // type: 'div',\r\n // className: 'col-md-10 col-lg-8',\r\n // sub: {\r\n // type: 'div',\r\n // className: 'col-md-10 col-lg-8'\r\n // }\r\n // },\r\n // ]\r\n // },\r\n ],\r\n },\r\n values: {\r\n Key: '',\r\n Message: '',\r\n Type: '',\r\n TableName: '',\r\n // Minlen: '',\r\n // Maxlen: '',\r\n // Mask: '',\r\n // Regex: '',\r\n Status: 'A',\r\n editInfo: null,\r\n\r\n },\r\n\r\n \"components\": {\r\n Type: {\r\n \"type\": \"dropdown\",\r\n \"key\": \"Type\",\r\n \"label\": \"Message Type\",\r\n \"name\": \"Type\",\r\n extraProps: {\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Value'\r\n },\r\n }\r\n },\r\n Key: {\r\n \"type\": \"dropdown\",\r\n \"key\": \"Key\",\r\n \"label\": \"Column Name\",\r\n \"name\": \"Key\",\r\n subname: \"TableName\",\r\n extraProps: {\r\n transformProps: {\r\n label: 'name',\r\n value: 'value'\r\n },\r\n }\r\n },\r\n Message: {\r\n \"type\": \"textfield\",\r\n \"key\": \"Message\",\r\n \"label\": \"Message\",\r\n \"name\": \"Message\",\r\n },\r\n // Type: {\r\n // \"type\": \"textfield\",\r\n // \"key\": \"Type\",\r\n // \"label\": \"Type\",\r\n // \"name\": \"Type\",\r\n // },\r\n\r\n // Minlen: {\r\n // \"type\": \"textfield\",\r\n // \"key\": \"Minlen\",\r\n // \"label\": \"Min\",\r\n // \"name\": \"Minlen\",\r\n // \"extraProps\": {\r\n // \"type\": \"number\"\r\n // }\r\n // },\r\n // Maxlen: {\r\n // \"type\": \"textfield\",\r\n // \"key\": \"Maxlen\",\r\n // \"label\": \"Max\",\r\n // \"name\": \"Maxlen\",\r\n // \"extraProps\": {\r\n // \"type\": \"number\"\r\n // }\r\n // },\r\n // Mask: {\r\n // \"type\": \"textfield\",\r\n // \"key\": \"Mask\",\r\n // \"label\": \"Mask\",\r\n // \"name\": \"Mask\",\r\n // },\r\n // Regex: {\r\n // \"type\": \"textfield\",\r\n // \"key\": \"Regex\",\r\n // \"label\": \"Regex\",\r\n // \"name\": \"Regex\",\r\n // },\r\n },\r\n mapActionsToEffects: {\r\n 'onLoad': {\r\n init: {\r\n rules: [\r\n {\r\n run:\r\n {\r\n valid: [{\r\n type: 'load',\r\n name: 'Key',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin') + `/api/DomainsMapper/GridByParams/modulemaster.ProjectMessages?autoComplete=false`,\r\n type: 'post',\r\n alternateUrl: getEnvVariable('MasterAdmin') + `/api/DomainsMapper/GridByParams/master.ProjectMessages?autoComplete=false`,\r\n condition: [\r\n { value: 'Master', name: 'editInfo.Path' }\r\n ],\r\n alert: true,\r\n saveAs: {\r\n key: 'items'\r\n },\r\n \"matchProps\": [\r\n {\r\n name: \"editInfo.Value\",\r\n key: \"name\",\r\n }\r\n ],\r\n sublist: 'TableName',\r\n body: {\r\n \"TABLENAME\": \"editInfo.Value\"\r\n },\r\n replaceBody: true,\r\n word: \"TABLENAME\"\r\n }\r\n ]\r\n },\r\n {\r\n type: 'load',\r\n name: 'Type',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin') + `/api/Domains/values?domainkey=PROJECT_MESSAGE_TYPE`,\r\n type: 'get',\r\n saveAs: {\r\n key: 'items'\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n type: 'getValue',\r\n name: 'TableName',\r\n getdatafrom: 'editInfo',\r\n getValue:'Value'\r\n },\r\n {\r\n type: 'validations', //http://development.delasoft.com:8443/AMES-application/api/ProposedLandUse/5864/Add\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/ProjectMessages/RulesByName?name=master.projectmessages`,\r\n type: 'get'\r\n }\r\n ],\r\n transformProps: {\r\n removesubfieldname: 'MASTER.PROJECTMESSAGES_'\r\n }\r\n },\r\n {\r\n canOverwrite: true,\r\n check: [{\r\n condition: \"AND\",\r\n rules: [{\r\n name: \"Type\", type: \"=\", value: 'I', rules: []\r\n },\r\n ]\r\n }],\r\n uncheck: true,\r\n run: {\r\n valid: [\r\n {\r\n type: 'prop',\r\n name: 'Minlen',\r\n isVisible: false\r\n }\r\n ],\r\n inValid: [\r\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 'afterSave': {\r\n 'save': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'save',\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('Admin') + `/api/ProjectMessages/Add/{name}`,\r\n alternateUrl: getEnvVariable('MasterAdmin') + `/api/ProjectMessages/Add/{name}`,\r\n condition: [\r\n { value: 'Master', name: 'editInfo.Path' }\r\n ],\r\n type: 'post',\r\n key: 'save',\r\n \"matchProps\": [\r\n {\r\n name: \"editInfo.Value\",\r\n key: \"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 },\r\n\r\n }\r\n }\r\n }\r\n },\r\n\r\n }\r\n}\r\nexport default ProjectMessagesTableAdd","import { getEnvVariable } from '../../../../modules/environmentalList';\r\nimport GeneralsettingsAdd from '../generalsettings/generalsettingsadd';\r\nimport GeneralsettingsEdit from '../generalsettings/generalsettingsview'\r\nconst GeneralsettingsGrid = {\r\n \"title\": \"Settings\",\r\n \"type\": \"grid\",\r\n \"key\": \"GeneralsettingsGrid\",\r\n \"gridkey\": 'GeneralsettingsGrid',\r\n \"name\": \"GeneralsettingsGrid\",\r\n \"addRoute\": true,\r\n \"routeParams\": { replace: 'settings', param: 'Id', routeName: 'TableName' },\r\n customizedheight: 250,\r\n \"hasreport\": true,\r\n values: {\r\n addOpen: false,\r\n editOpen: false,\r\n editInfo: null,\r\n load: false,\r\n allgriddata: null,\r\n navigateItem: null,\r\n navigation :null,\r\n reportOpen: false,\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null,\r\n },\r\n sharedValues: ['addOpen', 'editOpen', 'editInfo', 'allgriddata', 'navigateItem', 'navigation', 'loadreportfilter', 'ReportJsonQueryStr', 'reportOpen'],\r\n aliases: {\r\n addOpen: 'addOpen',\r\n editOpen: 'editOpen',\r\n editInfo: 'editInfo',\r\n allgriddata: 'allgriddata',\r\n navigateItem: 'navigateItem',\r\n navigation: 'navigation',\r\n reportOpen: 'reportOpen',\r\n loadreportfilter: 'loadreportfilter',\r\n ReportJsonQueryStr: 'ReportJsonQueryStr'\r\n },\r\n headerProps: {\r\n title: \"Generalsettings\",\r\n\r\n actions: [\r\n\r\n {\r\n type: 'fab',\r\n icon: 'clear',\r\n name: 'clear',\r\n color: 'primary',\r\n title: 'Clear Filters',\r\n menucolor: '#22a9b3',\r\n hideon: 'clear',\r\n hidevalue: false\r\n },\r\n\r\n {\r\n type: 'menu',\r\n icon: 'excel',\r\n name: 'excel',\r\n color: 'primary',\r\n title: 'Export to Excel',\r\n menucolor: '#c90685',\r\n hideon: 'excel',\r\n hidevalue: false,\r\n items: [{\r\n name: 'Export Current Page',\r\n action: 'filtercurrent'\r\n },\r\n {\r\n name: 'Export All Pages',\r\n action: 'filterall'\r\n }\r\n ]\r\n },\r\n {\r\n type: 'fab',\r\n icon: 'reports',\r\n name: 'reports',\r\n color: 'primary',\r\n title: 'Save Report',\r\n menucolor: '#C85A54',\r\n hideon: 'reports',\r\n hidevalue: false\r\n },\r\n {\r\n type: 'fab',\r\n icon: 'add',\r\n name: 'add',\r\n color: 'primary',\r\n hideon: 'addButton',\r\n hidevalue: true,\r\n title: 'Add Settings',\r\n menucolor: '#36088a'\r\n },\r\n ]\r\n },\r\n \"columns\": [\r\n {\r\n \"title\": \"Name\",\r\n \"field\": \"Name\",\r\n \"show\": true,\r\n \"width\": 250\r\n },\r\n {\r\n \"title\": \"Value\",\r\n \"field\": \"Value\",\r\n \"show\": true,\r\n \"width\": 200\r\n },\r\n {\r\n \"title\": \"Type\",\r\n \"field\": \"TypeDesc\",\r\n \"show\": true,\r\n \"width\": 150\r\n },\r\n {\r\n \"title\": \"Status\",\r\n \"field\": \"StatusDesc\",\r\n \"show\": true,\r\n \"width\": 150\r\n },\r\n {\r\n \"title\": \"Created By\",\r\n \"field\": \"CreatedByName\",\r\n \"show\": true,\r\n \"width\": 185\r\n },\r\n {\r\n \"title\": \"Created On\",\r\n \"field\": \"CreatedOn\",\r\n \"show\": true,\r\n \"width\": 185,\r\n filter: \"date\",\r\n format: \"{0:d}\",\r\n convert: \"MM/DD/YYYY hh:mm:ss A\"\r\n },\r\n {\r\n \"title\": \"Updated By\",\r\n \"field\": \"UpdatedByName\",\r\n \"show\": true,\r\n \"width\": 185\r\n },\r\n {\r\n \"title\": \"Updated On\",\r\n \"field\": \"UpdatedOn\",\r\n \"show\": true,\r\n \"width\": 185,\r\n filter: \"date\",\r\n format: \"{0:d}\",\r\n convert: \"MM/DD/YYYY hh:mm:ss A\"\r\n },\r\n\r\n ],\r\n displayName: 'editInfo',\r\n allgriddata: 'allgriddata',\r\n navigateItem: 'navigateItem',\r\n navigation: 'navigation',\r\n loadreportfilter: 'loadreportfilter',\r\n ReportJsonQueryStr: 'ReportJsonQueryStr',\r\n mapActionsToEffects: {\r\n load: {\r\n rules: [{\r\n run: {\r\n valid: [{\r\n type: 'grid',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin')+`/api/AppSettings/Grid?`,\r\n type: 'get',\r\n saveAs: {\r\n key: 'data'\r\n }\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n addOpen: {\r\n rules: [{\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"addOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n run: {\r\n valid: [{\r\n type: 'grid',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin')+`/api/AppSettings/Grid?`,\r\n \"matchProps\": [{\r\n name: \"routeid1\",\r\n key: \"routeid1\",\r\n }],\r\n type: 'get',\r\n saveAs: {\r\n key: 'data'\r\n }\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n editOpen: {\r\n rules: [{\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"editOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n run: {\r\n valid: [{\r\n type: 'grid',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin')+`/api/AppSettings/Grid?`,\r\n type: 'get',\r\n saveAs: {\r\n key: 'data'\r\n }\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n 'add': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'value',\r\n key: 'addOpen',\r\n result: true\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'display': {\r\n rules: [\r\n {\r\n uncheck: true,\r\n run: {\r\n valid: [\r\n {\r\n type: 'value',\r\n key: 'editOpen',\r\n result: true\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'editInfo',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'allgriddata',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'navigateItem',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'navigation',\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'report': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'value',\r\n key: 'reportOpen',\r\n result: true\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'loadreportfilter',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'ReportJsonQueryStr',\r\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 GeneralsettingsReport = {\r\n type: 'popup',\r\n key: 'GeneralsettingsReport',\r\n name: 'GeneralsettingsReport',\r\n\r\n anchor: 'right',\r\n open: false,\r\n aliases: {\r\n open: 'reportOpen'\r\n },\r\n sharedValues: ['open', 'loadreportfilter', 'ReportJsonQueryStr'],\r\n container: {\r\n values: {\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null\r\n },\r\n mapValues: {\r\n Report: [\r\n {\r\n key: 'ReportJsonQueryStr',\r\n name: 'ReportJsonQueryStr'\r\n },\r\n {\r\n key: 'loadreportfilter',\r\n name: 'loadreportfilter'\r\n },\r\n ],\r\n },\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: '',\r\n components: [\r\n {\r\n name: 'Report'\r\n },\r\n ]\r\n }\r\n ]\r\n\r\n },\r\n components: {\r\n Report: {\r\n \"type\": \"form\",\r\n \"key\": \"Report\",\r\n \"name\": \"Report\",\r\n aliases: {\r\n\r\n },\r\n sharedValues: ['ReportJsonQueryStr', 'loadreportfilter'],\r\n values: {\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null\r\n },\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: '',\r\n components: [{\r\n name: 'ReportJsonQueryStr',\r\n type: 'div',\r\n\r\n },\r\n {\r\n name: 'loadreportfilter',\r\n type: 'div',\r\n\r\n }],\r\n\r\n },\r\n ],\r\n },\r\n \"components\": {\r\n \"ReportJsonQueryStr\": {\r\n \"type\": \"gridreport\",\r\n \"gridkey\": 'GeneralsettingsGrid',\r\n },\r\n },\r\n }\r\n }\r\n }\r\n}\r\nconst GeneralsettingsContainer = {\r\n type: 'container',\r\n custom: true,\r\n key: 'GeneralsettingsContainer',\r\n values: {\r\n addOpen: false,\r\n editOpen: false,\r\n editInfo: null,\r\n allgriddata: null,\r\n navigateItem: null,\r\n navigation :null,\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null,\r\n reportOpen : false,\r\n },\r\n mapValues: {\r\n GeneralsettingsAdd: [\r\n {\r\n key: 'addOpen',\r\n name: 'open'\r\n }\r\n ],\r\n GeneralsettingsEdit: [\r\n {\r\n key: 'editOpen',\r\n name: 'open'\r\n },\r\n {\r\n key: 'editInfo',\r\n name: 'editInfo'\r\n },\r\n {\r\n key: 'allgriddata',\r\n name: 'allgriddata'\r\n },\r\n {\r\n key: 'navigateItem',\r\n name: 'navigateItem'\r\n },\r\n {\r\n key: 'navigation',\r\n name: 'navigation'\r\n },\r\n ],\r\n GeneralsettingsGrid: [\r\n {\r\n key: 'editOpen',\r\n name: 'editOpen'\r\n },\r\n {\r\n key: 'addOpen',\r\n name: 'addOpen'\r\n },\r\n {\r\n key: 'reportOpen',\r\n name: 'reportOpen'\r\n },\r\n {\r\n key: 'ReportJsonQueryStr',\r\n name: 'ReportJsonQueryStr'\r\n },\r\n {\r\n key: 'loadreportfilter',\r\n name: 'loadreportfilter'\r\n },\r\n ],\r\n GeneralsettingsReport: [\r\n {\r\n key: 'reportOpen',\r\n name: 'open'\r\n },\r\n {\r\n key: 'loadreportfilter',\r\n name: 'loadreportfilter'\r\n },\r\n {\r\n key: 'ReportJsonQueryStr',\r\n name: 'ReportJsonQueryStr'\r\n },\r\n\r\n ]\r\n\r\n },\r\n mapActionsToEffects: {\r\n 'addOpen': {\r\n rules: [\r\n {\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"addOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n uncheck: true,\r\n run: {\r\n valid: [\r\n {\r\n type: 'removelayout',\r\n name: 'GeneralsettingsAdd',\r\n }\r\n\r\n ],\r\n inValid: [\r\n {\r\n type: 'addlayout',\r\n name: 'GeneralsettingsAdd',\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'editOpen': {\r\n rules: [\r\n {\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"editOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n uncheck: true,\r\n run: {\r\n valid: [\r\n {\r\n type: 'removelayout',\r\n name: 'GeneralsettingsEdit',\r\n }\r\n\r\n ],\r\n inValid: [\r\n {\r\n type: 'addlayout',\r\n name: 'GeneralsettingsEdit',\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'reportOpen': {\r\n rules: [\r\n {\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"reportOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n uncheck: true,\r\n run: {\r\n valid: [\r\n {\r\n type: 'removelayout',\r\n name: 'GeneralsettingsReport',\r\n }\r\n\r\n ],\r\n inValid: [\r\n {\r\n type: 'addlayout',\r\n name: 'GeneralsettingsReport',\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n },\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [\r\n {\r\n name: 'GeneralsettingsGrid'\r\n },\r\n ]\r\n }\r\n ]\r\n\r\n },\r\n components: {\r\n GeneralsettingsGrid: GeneralsettingsGrid,\r\n GeneralsettingsAdd: GeneralsettingsAdd,\r\n GeneralsettingsEdit: GeneralsettingsEdit,\r\n GeneralsettingsReport:GeneralsettingsReport\r\n }\r\n}\r\n\r\n\r\nexport default GeneralsettingsContainer\r\n\r\n","import { getEnvVariable } from \"../../../../modules/environmentalList\"\r\n\r\nconst ProjectMessagesTableEdit = {\r\n \"type\": \"popup\",\r\n \"key\": \"ProjectMessagesTableEdit\",\r\n \"name\": \"ProjectMessagesTableEdit\",\r\n anchor: 'right',\r\n open: false,\r\n aliases: {\r\n open: 'editOpen'\r\n },\r\n sharedValues: ['open'],\r\n container: {\r\n values: { editProjectInfo: null, editInfo: null, edit: false, back: false, allgriddata: null, navigation: null, subnavigation: null, fullscreen: false },\r\n mapValues: {\r\n header: [\r\n { key: 'exitfullscreen', name: 'exitfullscreen' },\r\n { key: 'fullscreen', name: 'fullscreen' },\r\n { key: 'edit', name: 'edit' },\r\n ],\r\n EditProjectMessagesTable: [\r\n\r\n { key: 'editInfo', name: 'editInfo' },\r\n { key: 'allgriddata', name: 'allgriddata' },\r\n { key: 'editProjectInfo', name: 'editProjectInfo' },\r\n { key: 'save', name: 'save' },\r\n { key: 'edit', name: 'edit' },\r\n { key: 'back', name: 'back' },\r\n { key: 'navigation', name: 'navigation' },\r\n { key: 'subnavigation', name: 'subnavigation' },]\r\n },\r\n // sharedValues: ['save', 'edit'],\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [{\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'header',\r\n type: 'div',\r\n className: 'col-12 ',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12',\r\n }\r\n }],\r\n\r\n },\r\n\r\n\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'EditProjectMessagesTable',\r\n type: 'div',\r\n className: 'col-12 pl-4 pt-3 m-2',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12 pl-4 pt-3 m-2',\r\n }\r\n }],\r\n\r\n },\r\n ]\r\n },\r\n\r\n components: {\r\n header: {\r\n name: \"header\",\r\n type: 'header',\r\n title: 'Property Messages',\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": \"Project Messages\", \"appendval\": \"Name\", \"materialicon\": \"message\", className: 'eps-breadcrumb-item ', class: 'text-light' },\r\n ]\r\n }\r\n ],\r\n layout: {},\r\n actions: [\r\n {\r\n type: 'icon',\r\n icon: 'back',\r\n name: 'back',\r\n hideon: 'back',\r\n hidevalue: false,\r\n title: 'Back'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'previtem',\r\n name: 'previtem',\r\n hideon: 'previtem',\r\n hidevalue: false,\r\n title: 'Previous Item'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'nextitem',\r\n name: 'nextitem',\r\n hideon: 'nextitem',\r\n hidevalue: false,\r\n title: 'Next Item'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'edit',\r\n name: 'edit',\r\n hideon: 'edit',\r\n hidevalue: true,\r\n title: 'Edit'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'save',\r\n name: 'save',\r\n hideon: 'edit',\r\n hidevalue: false,\r\n title: 'Save'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'fullscreen',\r\n name: 'fullscreen',\r\n hideon: 'exitfullscreen',\r\n hidevalue: false\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'exitfullscreen',\r\n name: 'exitfullscreen',\r\n hideon: 'fullscreen',\r\n hidevalue: false\r\n }\r\n ],\r\n\r\n\r\n },\r\n EditProjectMessagesTable: {\r\n \"type\": \"form\",\r\n \"key\": \"EditProjectMessagesTable\",\r\n \"name\": \"EditProjectMessagesTable\",\r\n noParams : true,\r\n aliases: {\r\n 'editInfo': 'editInfo',\r\n 'allgriddata': 'allgriddata',\r\n 'navigation': 'navigation', //\r\n 'subnavigation': 'subnavigation'\r\n },\r\n sharedValues: ['editInfo', 'allgriddata', 'editProjectInfo', 'back', 'navigation', 'edit', 'save', 'subnavigation'],\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'Key',\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8 pt-2',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8 pt-2',\r\n }\r\n }],\r\n\r\n },\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'Type',\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n }\r\n },\r\n\r\n ]\r\n },\r\n\r\n {\r\n order: 2,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'Message',\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n }\r\n },\r\n\r\n ]\r\n },\r\n\r\n // {\r\n // order: 3,\r\n // type: 'div',\r\n // className: 'row',\r\n // components: [\r\n // {\r\n // name: 'Minlen',\r\n // type: 'div',\r\n // className: 'col-md-5 col-lg-4',\r\n // sub: {\r\n // type: 'div',\r\n // className: 'col-md-5 col-lg-4',\r\n // }\r\n // },\r\n // {\r\n // name: 'Maxlen',\r\n // type: 'div',\r\n // className: 'col-md-5 col-lg-4',\r\n // sub: {\r\n // type: 'div',\r\n // className: 'col-md-5 col-lg-4',\r\n // }\r\n // },\r\n // ]\r\n // },\r\n // {\r\n // order: 4,\r\n // type: 'div',\r\n // className: 'row',\r\n // components: [{\r\n // name: 'Mask',\r\n // type: 'div',\r\n // className: 'col-md-10 col-lg-8',\r\n // sub: {\r\n // type: 'div',\r\n // className: 'col-md-10 col-lg-8'\r\n // }\r\n // },\r\n // ]\r\n // },\r\n // {\r\n // order: 5,\r\n // type: 'div',\r\n // className: 'row',\r\n // components: [{\r\n // name: 'Regex',\r\n // type: 'div',\r\n // className: 'col-md-10 col-lg-8',\r\n // sub: {\r\n // type: 'div',\r\n // className: 'col-md-10 col-lg-8'\r\n // }\r\n // },\r\n // ]\r\n // },\r\n {\r\n order: 7,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'Status',\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 8,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'CreatedOn',\r\n type: 'div',\r\n className: 'col-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-6'\r\n }\r\n },\r\n {\r\n name: 'CreatedByName',\r\n type: 'div',\r\n className: 'col-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-6'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 9,\r\n type: 'div',\r\n className: 'row',\r\n components: [\r\n {\r\n name: 'UpdatedOn',\r\n type: 'div',\r\n className: 'col-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-6'\r\n }\r\n },\r\n {\r\n name: 'UpdatedByName',\r\n type: 'div',\r\n className: 'col-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-6'\r\n }\r\n },]\r\n },\r\n ],\r\n },\r\n values: {\r\n // ColumnName: '',\r\n Message: '',\r\n Type: '',\r\n // Minlen: '',\r\n // Maxlen: '',\r\n TableName: '',\r\n // Mask: '',\r\n // Regex: '',\r\n UpdatedByName: '',\r\n CreatedByName: '',\r\n UpdatedOn: '',\r\n CreatedOn: '',\r\n UpdatedBy: '',\r\n CreatedBy: '',\r\n Id: '',\r\n Order: 1,\r\n Key: '',\r\n Status: 'I',\r\n editInfo: null,\r\n allgriddata: null,\r\n editProjectInfo: null,\r\n navigation: null,\r\n subnavigation: null\r\n },\r\n \"components\": {\r\n Key: {\r\n \"type\": \"label\",\r\n \"key\": \"Key\",\r\n \"label\": \"Key\",\r\n \"name\": \"Key\",\r\n changefieldto: \"label\",\r\n },\r\n Type: {\r\n \"type\": \"label\",\r\n \"key\": \"Type\",\r\n \"label\": \"Message Type\",\r\n \"name\": \"Type\",\r\n changefieldto: \"dropdown\",\r\n extraProps: {\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Value'\r\n },\r\n }\r\n },\r\n Key: {\r\n \"type\": \"label\",\r\n \"key\": \"Key\",\r\n \"label\": \"Column Name\",\r\n \"name\": \"Key\",\r\n changefieldto: \"label\",\r\n subname: 'TableName',\r\n extraProps: {\r\n transformProps: {\r\n label: 'name',\r\n value: 'value'\r\n },\r\n }\r\n },\r\n Message: {\r\n \"type\": \"label\",\r\n \"key\": \"Message\",\r\n \"label\": \"Message\",\r\n \"name\": \"Message\",\r\n changefieldto: \"textfield\",\r\n },\r\n\r\n // Minlen: {\r\n // \"type\": \"label\",\r\n // \"key\": \"Minlen\",\r\n // \"label\": \"Min\",\r\n // \"name\": \"Minlen\",\r\n // \"xtype\": \"number\",\r\n // changefieldto: \"textfield\",\r\n // },\r\n // Maxlen: {\r\n // \"type\": \"label\",\r\n // \"key\": \"Maxlen\",\r\n // \"label\": \"Max\",\r\n // \"name\": \"Maxlen\",\r\n // \"xtype\": \"number\",\r\n // changefieldto: \"textfield\",\r\n // },\r\n // Mask: {\r\n // \"type\": \"label\",\r\n // \"key\": \"Mask\",\r\n // \"label\": \"Mask\",\r\n // \"name\": \"Mask\",\r\n // changefieldto: \"textfield\",\r\n // },\r\n // Regex: {\r\n // \"type\": \"label\",\r\n // \"key\": \"Regex\",\r\n // \"label\": \"Regex\",\r\n // \"name\": \"Regex\",\r\n // changefieldto: \"textfield\",\r\n // },\r\n Status: {\r\n \"type\": \"label\",\r\n \"key\": \"Status\",\r\n \"label\": \"Status\",\r\n \"name\": \"Status\",\r\n changefieldto: \"toggle\",\r\n extraProps: {\r\n \"transformProps\": {\r\n \"A\": true,\r\n \"I\": false,\r\n \"true\": \"A\",\r\n \"false\": \"I\"\r\n }\r\n }\r\n\r\n },\r\n CreatedOn: {\r\n \"type\": \"label\",\r\n \"key\": \"CreatedOn\",\r\n \"label\": \"Created On\",\r\n name: \"CreatedOn\",\r\n changefieldto: \"label\",\r\n },\r\n CreatedByName: {\r\n \"type\": \"label\",\r\n \"key\": \"CreatedByName\",\r\n \"label\": \"Created By\",\r\n name: \"CreatedByName\",\r\n changefieldto: \"label\",\r\n },\r\n UpdatedOn: {\r\n \"type\": \"label\",\r\n \"key\": \"UpdatedOn\",\r\n \"label\": \"Updated On\",\r\n name: \"UpdatedOn\",\r\n changefieldto: \"label\",\r\n },\r\n UpdatedByName: {\r\n \"type\": \"label\",\r\n \"key\": \"UpdatedByName\",\r\n \"label\": \"Updated By\",\r\n name: \"UpdatedByName\",\r\n changefieldto: \"label\",\r\n },\r\n },\r\n mapActionsToEffects: {\r\n 'onLoad': {\r\n 'init': {\r\n rules: [{\r\n run:\r\n {\r\n valid: [\r\n {\r\n type: 'load',\r\n name: 'Key',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin') + `/api/DomainsMapper/GridByParams/modulemaster.ProjectMessages?autoComplete=false`,\r\n alternateUrl: getEnvVariable('MasterAdmin') + `/api/DomainsMapper/GridByParams/master.ProjectMessages?autoComplete=false`,\r\n condition: [\r\n { value: 'Master', name: 'editInfo.Path' }\r\n ], type: 'post',\r\n alert: true,\r\n saveAs: {\r\n key: 'items'\r\n },\r\n \"matchProps\": [\r\n {\r\n name: \"editInfo.Value\",\r\n key: \"name\",\r\n }\r\n ],\r\n sublist: 'TableName',\r\n body: {\r\n \"TABLENAME\": \"editInfo.Value\"\r\n },\r\n replaceBody: true,\r\n word: \"TABLENAME\"\r\n }\r\n ]\r\n },\r\n {\r\n type: 'getValue',\r\n name: 'TableName',\r\n getdatafrom: 'editInfo',\r\n getValue: 'Value'\r\n },\r\n // {\r\n // type: 'grid',\r\n // name: 'Key',\r\n // \"read\": [\r\n // {\r\n // url: getEnvVariable('Admin') + `/api/DomainsMapper/GridByParams/modulemaster.ProjectMessages?autoComplete=false`,\r\n // alternateUrl: getEnvVariable('MasterAdmin') + `/api/DomainsMapper/GridByParams/master.ProjectMessages?autoComplete=false`,\r\n // condition: [\r\n // { value: 'Master', name: 'editInfo.Path' }\r\n // ],\r\n // type: 'post',\r\n // alert: true,\r\n // saveAs: {\r\n // key: 'items'\r\n // },\r\n // \"matchProps\": [\r\n // {\r\n // name: \"editInfo.Value\",\r\n // key: \"name\",\r\n // }\r\n // ],\r\n // sublist: 'TableName',\r\n // body: {\r\n // \"TABLENAME\": \"editInfo.Value\"\r\n // },\r\n // replaceBody: true,\r\n // word: \"TABLENAME\"\r\n // }\r\n // ]\r\n // },\r\n {\r\n type: 'load',\r\n name: 'Type',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin') + `/api/Domains/values?domainkey=PROJECT_MESSAGE_TYPE`,\r\n type: 'get',\r\n saveAs: {\r\n key: 'items'\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n type: 'validations',\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/ProjectMessages/RulesByName?name=modulemaster.projectmessages`,\r\n type: 'get'\r\n }\r\n ],\r\n transformProps: {\r\n removesubfieldname: 'MODULEMASTER.PROJECTMESSAGES_'\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n // {\r\n // canOverwrite: true,\r\n // check: [{\r\n // condition: \"AND\",\r\n // rules: [{\r\n // name: \"Type\", type: \"=\", value: 'I', rules: []\r\n // },\r\n // ]\r\n // }],\r\n // uncheck: true,\r\n // run: {\r\n // valid: [\r\n // {\r\n // type: 'prop',\r\n // name: 'Minlen',\r\n // isVisible: false\r\n // },\r\n // {\r\n // type: 'prop',\r\n // name: 'Maxlen',\r\n // isVisible: false\r\n // },\r\n // {\r\n // type: 'prop',\r\n // name: 'Mask',\r\n // isVisible: false\r\n // },\r\n // {\r\n // type: 'prop',\r\n // name: 'Regex',\r\n // isVisible: false\r\n // },\r\n // ],\r\n // inValid: [\r\n // {\r\n // type: 'prop',\r\n // name: 'Minlen',\r\n // isVisible: true\r\n // },\r\n // {\r\n // type: 'prop',\r\n // name: 'Maxlen',\r\n // isVisible: true\r\n // },\r\n // {\r\n // type: 'prop',\r\n // name: 'Mask',\r\n // isVisible: true\r\n // },\r\n // {\r\n // type: 'prop',\r\n // name: 'Regex',\r\n // isVisible: true\r\n // },\r\n\r\n // ]\r\n // }\r\n // },\r\n ]\r\n },\r\n // Type: {\r\n // rules: [{\r\n // canOverwrite: true,\r\n // check: [{\r\n // condition: \"AND\",\r\n // rules: [{\r\n // name: \"Type\", type: \"=\", value: 'I', rules: []\r\n // },\r\n // ]\r\n // }],\r\n // uncheck: true,\r\n // run: {\r\n // valid: [\r\n // {\r\n // type: 'prop',\r\n // name: 'Minlen',\r\n // isVisible: false\r\n // },\r\n // {\r\n // type: 'prop',\r\n // name: 'Maxlen',\r\n // isVisible: false\r\n // },\r\n // {\r\n // type: 'prop',\r\n // name: 'Mask',\r\n // isVisible: false\r\n // },\r\n // {\r\n // type: 'prop',\r\n // name: 'Regex',\r\n // isVisible: false\r\n // },\r\n // ],\r\n // inValid: [\r\n // {\r\n // type: 'prop',\r\n // name: 'Minlen',\r\n // isVisible: true\r\n // },\r\n // {\r\n // type: 'prop',\r\n // name: 'Maxlen',\r\n // isVisible: true\r\n // },\r\n // {\r\n // type: 'prop',\r\n // name: 'Mask',\r\n // isVisible: true\r\n // },\r\n // {\r\n // type: 'prop',\r\n // name: 'Regex',\r\n // isVisible: true\r\n // },\r\n\r\n // ]\r\n // }\r\n // },]// 1 intital load\r\n // },\r\n 'subnavigation': {\r\n rules: [{\r\n run:\r\n {\r\n valid: [\r\n {\r\n type: 'initial',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin') + `/api/ProjectMessages/Id?id={name}`,\r\n alternateUrl: getEnvVariable('MasterAdmin') + `/api/ProjectMessages/Id?id={name}`,\r\n condition: [\r\n { value: 'Master', name: 'subnavigation.Path' }\r\n ],\r\n key: 'save',\r\n \"matchProps\": [\r\n {\r\n name: \"routeid1\",\r\n key: \"routeid1\",\r\n },\r\n {\r\n name: \"subnavigation.Id\",\r\n key: \"name\",\r\n }\r\n ],\r\n type: 'get',\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n },\r\n 'onChange': {\r\n 'edit': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'edit',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n // Type: {\r\n // rules: [{\r\n // canOverwrite: true,\r\n // check: [{\r\n // condition: \"AND\",\r\n // rules: [{\r\n // name: \"Type\", type: \"=\", value: 'I', rules: []\r\n // },\r\n // ]\r\n // }],\r\n // uncheck: true,\r\n // run: {\r\n // valid: [\r\n // {\r\n // type: 'prop',\r\n // name: 'Minlen',\r\n // isVisible: false\r\n // },\r\n // {\r\n // type: 'prop',\r\n // name: 'Maxlen',\r\n // isVisible: false\r\n // },\r\n // {\r\n // type: 'prop',\r\n // name: 'Mask',\r\n // isVisible: false\r\n // },\r\n // {\r\n // type: 'prop',\r\n // name: 'Regex',\r\n // isVisible: false\r\n // },\r\n // ],\r\n // inValid: [\r\n // {\r\n // type: 'prop',\r\n // name: 'Minlen',\r\n // isVisible: true\r\n // },\r\n // {\r\n // type: 'prop',\r\n // name: 'Maxlen',\r\n // isVisible: true\r\n // },\r\n // {\r\n // type: 'prop',\r\n // name: 'Mask',\r\n // isVisible: true\r\n // },\r\n // {\r\n // type: 'prop',\r\n // name: 'Regex',\r\n // isVisible: true\r\n // },\r\n\r\n // ]\r\n // }\r\n // },]// 1 intital load\r\n // },\r\n 'subnavigation': {\r\n rules: [{\r\n run:\r\n {\r\n valid: [\r\n {\r\n type: 'initial',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin') + `/api/ProjectMessages/Id?id={name}`,\r\n alternateUrl: getEnvVariable('MasterAdmin') + `/api/ProjectMessages/Id?id={name}`,\r\n condition: [\r\n { value: 'Master', name: 'subnavigation.Path' }\r\n ],\r\n key: 'save',\r\n \"matchProps\": [\r\n {\r\n name: \"routeid1\",\r\n key: \"routeid1\",\r\n },\r\n {\r\n name: \"subnavigation.Id\",\r\n key: \"name\",\r\n }\r\n ],\r\n type: 'get',\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n },\r\n afterSave: {\r\n 'save': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'save',\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('Admin') + `/api/ProjectMessages/Update`,\r\n alternateUrl: getEnvVariable('MasterAdmin') + `/api/ProjectMessages/Update`,\r\n condition: [\r\n { value: 'Master', name: 'subnavigation.Path' }\r\n ],\r\n type: 'put',\r\n \"matchProps\": [\r\n {\r\n name: \"TableName\",\r\n key: \"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 },\r\n }\r\n\r\n }\r\n }\r\n },\r\n\r\n }\r\n}\r\n\r\nexport default ProjectMessagesTableEdit","import ProjectMessagesTableAdd from '../projectmessages/projectmessagestableadd';\r\nimport ProjectMessagesTableEdit from '../projectmessages/projectmessagestableview'\r\nimport ProjectMessagesTable from '../projectmessages/projectmessagestable';\r\n\r\n\r\nconst ProjectmessagesEdit = {\r\n \"type\": \"popup\",\r\n \"key\": \"ProjectmessagesEdit\",\r\n \"name\": \"ProjectmessagesEdit\",\r\n anchor: 'right',\r\n open: false,\r\n aliases: {\r\n open: 'editOpen'\r\n },\r\n sharedValues: ['open'],\r\n container: {\r\n // addRoute: true,\r\n values: {\r\n editProjectInfo: null,\r\n editInfo: null, edit: false,\r\n allgriddata: null, addOpen: false,\r\n editOpen: false,\r\n navigation: null,\r\n subnavigation: null,\r\n fullscreen: false\r\n },\r\n mapValues: {\r\n header: [\r\n { key: 'exitfullscreen', name: 'exitfullscreen' },\r\n { key: 'fullscreen', name: 'fullscreen' },\r\n { key: 'edit', name: 'edit' },\r\n { key: 'allgriddata', name: 'allgriddata' },\r\n ],\r\n ProjectMessagesTable: [\r\n { key: 'editInfo', name: 'editInfo' },\r\n {\r\n key: 'addOpen',\r\n name: 'addOpen'\r\n },\r\n {\r\n key: 'editOpen',\r\n name: 'editOpen'\r\n },\r\n { key: 'navigation', name: 'navigation' }\r\n ],\r\n ProjectMessagesTableAdd: [\r\n { key: 'editInfo', name: 'editInfo' },\r\n { key: 'editProjectInfo', name: 'editProjectInfo' },\r\n { key: 'addOpen', name: 'open' },\r\n { key: 'subnavigation', name: 'subnavigation' },\r\n ],\r\n ProjectMessagesTableEdit: [\r\n { key: 'editInfo', name: 'editInfo' },\r\n { key: 'editOpen', name: 'open' },\r\n { key: 'editProjectInfo', name: 'editProjectInfo' },\r\n { key: 'allgriddata', name: 'allgriddata' },\r\n { key: 'subnavigation', name: 'subnavigation' },\r\n ]\r\n },\r\n // sharedValues: ['save', 'edit'],\r\n mapActionsToEffects: {\r\n 'addOpen': {\r\n rules: [\r\n {\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"addOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n uncheck: true,\r\n run: {\r\n valid: [\r\n {\r\n type: 'removelayout',\r\n name: 'ProjectMessagesTableAdd',\r\n }\r\n\r\n ],\r\n inValid: [\r\n {\r\n type: 'addlayout',\r\n name: 'ProjectMessagesTableAdd',\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n editOpen: {\r\n rules: [{\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"editOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n uncheck: true,\r\n run: {\r\n valid: [\r\n {\r\n type: 'removelayout',\r\n name: 'ProjectMessagesTableEdit',\r\n }\r\n ],\r\n inValid: [\r\n\r\n {\r\n type: 'addlayout',\r\n name: 'ProjectMessagesTableEdit',\r\n }\r\n ]\r\n }\r\n }]\r\n },\r\n\r\n },\r\n layout: {\r\n group: [{\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'header',\r\n type: 'div',\r\n className: 'col-12 ',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12',\r\n }\r\n }],\r\n\r\n },\r\n\r\n\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'ProjectMessagesTable',\r\n type: 'div',\r\n className: 'col-12',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12',\r\n }\r\n }],\r\n\r\n },\r\n\r\n ]\r\n },\r\n\r\n components: {\r\n header: {\r\n name: \"header\",\r\n type: 'header',\r\n title: 'Project Messages',\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": \"Project Messages\", \"appendval\": \"Name\", \"materialicon\": \"message\", className: 'eps-breadcrumb-item ', class: 'text-light' },\r\n ]\r\n }\r\n ],\r\n layout: {},\r\n actions: [\r\n {\r\n type: 'icon',\r\n icon: 'back',\r\n name: 'back',\r\n hideon: 'back',\r\n hidevalue: false,\r\n title: 'Back'\r\n },\r\n // {\r\n // type: 'icon',\r\n // icon: 'previtem',\r\n // name: 'previtem',\r\n // hideon: 'previtem',\r\n // hidevalue: false,\r\n // title: 'Previous Item'\r\n // },\r\n // {\r\n // type: 'icon',\r\n // icon: 'nextitem',\r\n // name: 'nextitem',\r\n // hideon: 'nextitem',\r\n // hidevalue: false,\r\n // title: 'Next Item'\r\n // },\r\n {\r\n type: 'icon',\r\n icon: 'fullscreen',\r\n name: 'fullscreen',\r\n hideon: 'exitfullscreen',\r\n hidevalue: false\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'exitfullscreen',\r\n name: 'exitfullscreen',\r\n hideon: 'fullscreen',\r\n hidevalue: false\r\n }\r\n ],\r\n\r\n\r\n },\r\n ProjectMessagesTable: ProjectMessagesTable,\r\n ProjectMessagesTableAdd: ProjectMessagesTableAdd,\r\n ProjectMessagesTableEdit: ProjectMessagesTableEdit\r\n },\r\n\r\n }\r\n}\r\n\r\nexport default ProjectmessagesEdit","import { getEnvVariable } from '../../../../modules/environmentalList';\r\nimport ProjectMessagesTableAdd from '../projectmessages/projectmessagestableadd';\r\nimport ProjectMessagesTableEdit from '../projectmessages/projectmessagestableview'\r\nconst ProjectMessagesTable = {\r\n \"type\": \"grid\",\r\n \"key\": \"ProjectMessagesTable\",\r\n \"gridkey\": 'ProjectMessagesTable',\r\n \"name\": \"ProjectMessagesTable\",\r\n // \"addRoute\": true,\r\n \"routeParams\": { replace: 'settings', param: 'Value' },\r\n \"subgrid\": true,\r\n customsubgrid : true,\r\n values: {\r\n addOpen: false,\r\n editOpen: false,\r\n editInfo: null,\r\n load: false,\r\n allgriddata: null,\r\n navigateItem: null,\r\n editProjectInfo: null,\r\n navigation: null,\r\n subnavigation: null\r\n },\r\n sharedValues: ['addOpen', 'editOpen', 'editInfo', 'editProjectInfo', 'navigation', 'subnavigation', 'allgriddata'],\r\n aliases: {\r\n addOpen: 'addOpen',\r\n editOpen: 'editOpen',\r\n editInfo: 'editInfo',\r\n editProjectInfo: 'editProjectInfo',\r\n allgriddata: 'allgriddata',\r\n navigateItem: 'navigateItem',\r\n navigation: 'navigation',\r\n subnavigation: 'subnavigation'\r\n },\r\n headerProps: {\r\n title: \"Project Messages\",\r\n\r\n actions: [\r\n {\r\n type: 'fab',\r\n icon: 'clear',\r\n name: 'clear',\r\n color: 'primary',\r\n title: 'Clear Filters',\r\n menucolor: '#22a9b3',\r\n hideon: 'clear',\r\n hidevalue: false\r\n },\r\n\r\n {\r\n type: 'menu',\r\n icon: 'excel',\r\n name: 'excel',\r\n color: 'primary',\r\n title: 'Export to Excel',\r\n menucolor: '#c90685',\r\n hideon: 'excel',\r\n hidevalue: false,\r\n items: [{\r\n name: 'Export Current Page',\r\n action: 'filtercurrent'\r\n },\r\n {\r\n name: 'Export All Pages',\r\n action: 'filterall'\r\n }\r\n ]\r\n },\r\n {\r\n type: 'fab',\r\n icon: 'add',\r\n name: 'add',\r\n color: 'primary',\r\n hideon: 'addButton',\r\n hidevalue: true,\r\n title: 'Add Project Messages',\r\n menucolor: '#36088a'\r\n },\r\n ]\r\n },\r\n \"columns\": [\r\n {\r\n \"title\": \"Message\",\r\n \"field\": \"Message\",\r\n \"show\": true,\r\n \"width\": 300\r\n },\r\n {\r\n \"title\": \"Type\",\r\n \"field\": \"Type\",\r\n \"show\": true,\r\n \"width\": 200\r\n },\r\n // {\r\n // \"title\": \"Min\",\r\n // \"field\": \"Minlen\",\r\n // \"show\": true,\r\n // \"width\": 150\r\n // },\r\n // {\r\n // \"title\": \"Max\",\r\n // \"field\": \"Maxlen\",\r\n // \"show\": true,\r\n // \"width\": 150\r\n // },\r\n // {\r\n // \"title\": \"Mask/Regex\",\r\n // \"field\": \"Mask\",\r\n // \"show\": true,\r\n // \"width\": 150\r\n // },\r\n // {\r\n // \"title\": \"Is Required\",\r\n // \"field\": \"IsRequired\",\r\n // \"show\": true,\r\n // \"width\": 150\r\n // },\r\n {\r\n \"title\": \"Created By\",\r\n \"field\": \"CreatedByName\",\r\n \"show\": true,\r\n \"width\": 185\r\n },\r\n {\r\n \"title\": \"Created On\",\r\n \"field\": \"CreatedOn\",\r\n \"show\": true,\r\n \"width\": 185,\r\n filter: \"date\",\r\n format: \"{0:d}\",\r\n convert: \"MM/DD/YYYY hh:mm:ss A\"\r\n },\r\n {\r\n \"title\": \"Updated By\",\r\n \"field\": \"UpdatedByName\",\r\n \"show\": true,\r\n \"width\": 185\r\n },\r\n {\r\n \"title\": \"Updated On\",\r\n \"field\": \"UpdatedOn\",\r\n \"show\": true,\r\n \"width\": 185,\r\n filter: \"date\",\r\n format: \"{0:d}\",\r\n convert: \"MM/DD/YYYY hh:mm:ss A\"\r\n },\r\n\r\n ],\r\n displayName: 'editProjectInfo',\r\n allgriddata: 'allgriddata',\r\n navigateItem: 'navigateItem',\r\n navigation: 'navigation',\r\n subnavigation: 'subnavigation',\r\n mapActionsToEffects: {\r\n load: {\r\n rules: [{\r\n run: {\r\n valid: [{\r\n type: 'grid',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin') + `/api/ProjectMessages/{name}/Grid?`,\r\n key: 'save',\r\n \"matchProps\": [\r\n {\r\n name: \"navigation.Value\",\r\n key: \"name\",\r\n }\r\n ],\r\n type: 'get',\r\n saveAs: {\r\n key: 'data'\r\n },\r\n alternateUrl: getEnvVariable('MasterAdmin') + `/api/ProjectMessages/{name}/Grid?`,\r\n condition: [\r\n { value: 'Master', name: 'navigation.Path' }\r\n ],\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n addOpen: {\r\n rules: [{\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"addOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n run: {\r\n valid: [{\r\n type: 'grid',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin') + `/api/ProjectMessages/{name}/Grid?`,\r\n key: 'save',\r\n \"matchProps\": [\r\n {\r\n name: \"editInfo.Value\",\r\n key: \"name\",\r\n }\r\n ],\r\n type: 'get',\r\n saveAs: {\r\n key: 'data'\r\n },\r\n alternateUrl: getEnvVariable('MasterAdmin') + `/api/ProjectMessages/{name}/Grid?`,\r\n condition: [\r\n { value: 'Master', name: 'Path' }\r\n ],\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n editOpen: {\r\n rules: [{\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"editOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n run: {\r\n valid: [{\r\n type: 'grid',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin') + `/api/ProjectMessages/{name}/Grid?`,\r\n alternateUrl: getEnvVariable('MasterAdmin') + `/api/ProjectMessages/{name}/Grid?`,\r\n condition: [\r\n { value: 'Master', name: 'Path' }\r\n ],\r\n key: 'save',\r\n \"matchProps\": [\r\n {\r\n name: \"editInfo.Value\",\r\n key: \"name\",\r\n }\r\n ],\r\n type: 'get',\r\n saveAs: {\r\n key: 'data'\r\n }\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n 'add': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'value',\r\n key: 'addOpen',\r\n result: true\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'display': {\r\n rules: [\r\n {\r\n uncheck: true,\r\n run: {\r\n valid: [\r\n {\r\n type: 'value',\r\n key: 'editOpen',\r\n result: true\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'editProjectInfo',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'subnavigation',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'allgriddata',\r\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 ProjectMessagesTable\r\n","import { getEnvVariable } from \"../../../../modules/environmentalList\"\r\n\r\nconst ProjectMessagesAdd = {\r\n \"type\": \"popup\",\r\n \"key\": \"ProjectMessagesAdd\",\r\n \"name\": \"ProjectMessagesAdd\",\r\n anchor: 'right',\r\n open: false,\r\n aliases: {\r\n open: 'addOpen'\r\n },\r\n sharedValues: ['open'],\r\n container: {\r\n values: { save: false, back: false },\r\n mapValues: {\r\n AddProjectMessages: [{ key: 'save', name: 'save' },]\r\n },\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [{\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'header',\r\n type: 'div',\r\n className: 'col-12 ',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12',\r\n }\r\n }],\r\n\r\n },\r\n\r\n\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'AddProjectMessages',\r\n type: 'div',\r\n className: 'col-12 pl-4',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12 pl-4',\r\n }\r\n }],\r\n\r\n },\r\n ]\r\n },\r\n\r\n components: {\r\n header: {\r\n name: \"header\",\r\n type: 'header',\r\n title: 'Project Messages',\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": \"Add Project Messages\", \"materialicon\": \"messages\", className: 'eps-breadcrumb-item ', class: 'text-light' },\r\n ]\r\n }\r\n ],\r\n layout: {},\r\n actions: [\r\n {\r\n type: 'icon',\r\n icon: 'back',\r\n name: 'back',\r\n hideon: 'back',\r\n hidevalue: false\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'save',\r\n name: 'save',\r\n hideon: 'save',\r\n title: 'Save Project Messages',\r\n hidevalue: false.valueOf\r\n \r\n },\r\n {\r\n type: 'icon',\r\n icon: 'fullscreen',\r\n name: 'fullscreen',\r\n hideon: 'exitfullscreen',\r\n hidevalue: false\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'exitfullscreen',\r\n name: 'exitfullscreen',\r\n hideon: 'fullscreen',\r\n hidevalue: false\r\n }\r\n ],\r\n\r\n\r\n },\r\n AddProjectMessages: {\r\n \"type\": \"form\",\r\n \"key\": \"AddProjectMessages\",\r\n \"name\": \"AddProjectMessages\",\r\n aliases: {\r\n save: 'save',\r\n },\r\n sharedValues: ['save'],\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'Name',\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n }\r\n }],\r\n\r\n },\r\n ],\r\n },\r\n values: {\r\n Name: '',\r\n },\r\n\r\n \"components\": {\r\n Name: {\r\n \"type\": \"textfield\",\r\n \"key\": \"Name\",\r\n \"label\": \"Table Name\",\r\n \"name\": \"Name\",\r\n },\r\n },\r\n mapActionsToEffects: {\r\n init: {\r\n rules: [{\r\n run:\r\n {\r\n valid: [{\r\n type: 'load',\r\n name: 'Type',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin')+`/api/Domains/values?domainkey=PROJECT_MESSAGE_TYPE`,\r\n type: 'get',\r\n saveAs: {\r\n key: 'items'\r\n }\r\n }\r\n ]\r\n },\r\n\r\n {\r\n type: 'validations', //http://development.delasoft.com:8443/AMES-application/api/ProposedLandUse/5864/Add\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('MasterAdmin')+`/api/ProjectMessages/RulesByName?name=master.appsettings`,\r\n type: 'get'\r\n }\r\n ],\r\n transformProps: {\r\n removesubfieldname: 'MASTER.APPSETTINGS_'\r\n }\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n 'save': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'save',\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('Admin')+`/api/ProjectMessages/Add`,\r\n type: 'post',\r\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 ProjectMessagesAdd","import { getEnvVariable } from \"../../../../../modules/environmentalList\"\r\n\r\nconst BusiessRulesAdd = {\r\n \"type\": \"popup\",\r\n \"key\": \"BusiessRulesAdd\",\r\n \"name\": \"BusiessRulesAdd\",\r\n anchor: 'right',\r\n open: false,\r\n aliases: {\r\n open: 'addOpen'\r\n },\r\n sharedValues: ['open'],\r\n container: {\r\n values: { save: false, back: false, fullscreen: false, },\r\n mapValues: {\r\n header: [\r\n { key: 'exitfullscreen', name: 'exitfullscreen' },\r\n { key: 'fullscreen', name: 'fullscreen' },\r\n ],\r\n AddBusiessRules: [{ key: 'save', name: 'save' },\r\n { key: 'exitfullscreen', name: 'exitfullscreen' },\r\n { key: 'fullscreen', name: 'fullscreen' },]\r\n },\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [{\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'header',\r\n type: 'div',\r\n className: 'col-12 ',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12',\r\n }\r\n }],\r\n\r\n },\r\n\r\n\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'AddBusiessRules',\r\n type: 'div',\r\n className: 'col-12 pl-4 m-4',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12 pl-4 m-4',\r\n }\r\n }],\r\n\r\n },\r\n ]\r\n },\r\n\r\n components: {\r\n header: {\r\n name: \"header\",\r\n type: 'header',\r\n title: 'Business Rule Settings',\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": \"Add Business Rules Message\", \"materialicon\": \"settings\", className: 'eps-breadcrumb-item ', class: 'text-light' },\r\n ]\r\n }\r\n ],\r\n layout: {},\r\n actions: [\r\n {\r\n type: 'icon',\r\n icon: 'back',\r\n name: 'back',\r\n hideon: 'back',\r\n hidevalue: false,\r\n title: 'Back'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'save',\r\n name: 'save',\r\n hideon: 'save',\r\n hidevalue: false,\r\n title: 'Save Business Rules Message'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'fullscreen',\r\n name: 'fullscreen',\r\n hidevalue: false,\r\n title: 'FullScreen'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'exitfullscreen',\r\n name: 'exitfullscreen',\r\n hideon: 'fullscreen',\r\n hidevalue: false,\r\n title: 'Exit FullScreen'\r\n }\r\n ],\r\n\r\n\r\n },\r\n AddBusiessRules: {\r\n \"type\": \"form\",\r\n \"key\": \"AddBusiessRules\",\r\n \"name\": \"AddBusiessRules\",\r\n noParams: true,\r\n // \"routeParams\": { replace: 'settings', param: 'Id', routeName: 'TableName' },\r\n aliases: {\r\n save: 'save',\r\n },\r\n sharedValues: ['save', 'exitfullscreen', 'fullscreen'],\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'Type',\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'Message',\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 2,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'TableName',\r\n type: 'div',\r\n className: 'col-md-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-6',\r\n }\r\n },\r\n {\r\n name: 'Status',\r\n type: 'div',\r\n className: 'col-md-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-6',\r\n }\r\n },\r\n ]\r\n },\r\n ],\r\n },\r\n values: {\r\n Type: '',\r\n Message: '',\r\n Key: getEnvVariable('ModuleKey') + 'Module.BUSINESS_RULES_ALERTS',\r\n TableName: getEnvVariable('ModuleKey') + 'Module.BUSINESS_RULES_ALERTS',\r\n Status: 'A'\r\n },\r\n\r\n \"components\": {\r\n Type: {\r\n \"type\": \"dropdown\",\r\n \"key\": \"Type\",\r\n \"label\": \"Message Type\",\r\n \"name\": \"Type\",\r\n extraProps: {\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Value'\r\n },\r\n }\r\n },\r\n Message: {\r\n \"type\": \"textfield\",\r\n \"key\": \"Message\",\r\n \"label\": \"Message\",\r\n \"name\": \"Message\",\r\n },\r\n Status: {\r\n \"type\": \"label\",\r\n \"key\": \"Status\",\r\n \"label\": \"Status\",\r\n \"name\": \"Status\",\r\n },\r\n TableName: {\r\n \"type\": \"label\",\r\n \"key\": \"TableName\",\r\n \"label\": \"TableName\",\r\n \"name\": \"TableName\",\r\n },\r\n },\r\n mapActionsToEffects: {\r\n 'onLoad': {\r\n init: {\r\n rules: [{\r\n run:\r\n {\r\n valid: [\r\n {\r\n type: 'load',\r\n name: 'Type',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin') + `/api/Domains/values?domainkey=PROJECT_MESSAGE_TYPE`,\r\n type: 'get',\r\n saveAs: {\r\n key: 'items'\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n type: 'validations',\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/ProjectMessages/RulesByName?name=master.projectmessages`,\r\n type: 'get'\r\n }\r\n ],\r\n transformProps: {\r\n removesubfieldname: 'MASTER.PROJECTMESSAGES_'\r\n }\r\n },\r\n { type: 'prop', name: 'TableName', isVisible: false },\r\n { type: 'prop', name: 'Status', isVisible: false },\r\n ]\r\n }\r\n }]\r\n }\r\n },\r\n 'onChange': {\r\n 'exitfullscreen': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'exitfullscreen',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'fullscreen': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'fullscreen',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n\r\n },\r\n 'afterSave': {\r\n 'save': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'save',\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('Admin') + `/api/ProjectMessages/Add/{name}`,\r\n type: 'post',\r\n key: 'save',\r\n \"matchProps\": [\r\n {\r\n name: \"TableName\",\r\n key: \"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\r\n }\r\n }\r\n }\r\n },\r\n\r\n }\r\n}\r\n\r\nexport default BusiessRulesAdd","import { getEnvVariable } from \"../../../../../modules/environmentalList\"\r\n\r\nconst BusiessRulesEdit = {\r\n \"type\": \"popup\",\r\n \"key\": \"BusiessRulesEdit\",\r\n \"name\": \"BusiessRulesEdit\",\r\n anchor: 'right',\r\n open: false,\r\n aliases: {\r\n open: 'editOpen'\r\n },\r\n sharedValues: ['open'],\r\n container: {\r\n //\"addRoute\": true,\r\n closepopup: true,\r\n closepopupval: 'settings',\r\n values: { editInfo: null, edit: false, createduplicate: false, fullscreen: false, back: false, allgriddata: null, navigation: null },\r\n mapValues: {\r\n header: [\r\n { key: 'edit', name: 'edit' },\r\n { key: 'exitfullscreen', name: 'exitfullscreen' },\r\n { key: 'fullscreen', name: 'fullscreen' },\r\n { key: 'createduplicate', name: 'createduplicate' },\r\n ],\r\n EditBusiessRules: [\r\n { key: 'editInfo', name: 'editInfo' },\r\n { key: 'allgriddata', name: 'allgriddata' },\r\n { key: 'save', name: 'save' },\r\n { key: 'saveduplicate', name: 'saveduplicate' },\r\n { key: 'edit', name: 'edit' },\r\n { key: 'exitfullscreen', name: 'exitfullscreen' },\r\n { key: 'fullscreen', name: 'fullscreen' },\r\n { key: 'createduplicate', name: 'createduplicate' },\r\n { key: 'back', name: 'back' },\r\n { key: 'navigation', name: 'navigation' },]\r\n },\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [{\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'header',\r\n type: 'div',\r\n className: 'col-12 ',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12',\r\n }\r\n }],\r\n\r\n },\r\n\r\n\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'EditBusiessRules',\r\n type: 'div',\r\n className: 'col-12 pl-4 pt-3 m-4',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12 pl-4 pt-3 m-4',\r\n }\r\n }],\r\n\r\n },\r\n ]\r\n },\r\n\r\n components: {\r\n header: {\r\n name: \"header\",\r\n type: 'header',\r\n title: 'Settings',\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": \"View/Edit Business Rules Message\", \"materialicon\": \"settings\", className: 'eps-breadcrumb-item ', class: 'text-light' },\r\n ]\r\n }\r\n ],\r\n layout: {},\r\n actions: [\r\n {\r\n type: 'icon',\r\n icon: 'back',\r\n name: 'back',\r\n hideon: 'back',\r\n hidevalue: false,\r\n title: 'Back'\r\n },\r\n\r\n {\r\n type: 'icon',\r\n icon: 'edit',\r\n name: 'edit',\r\n hideon: 'createduplicate',\r\n hideanother: 'edit',\r\n hidevalue: true,\r\n title: 'Edit Business Rules Message'\r\n },\r\n // {\r\n // type: 'icon',\r\n // icon: 'duplicate',\r\n // name: 'createduplicate',\r\n // hideon: 'edit',\r\n // hideanother: 'createduplicate',\r\n // hidevalue: true,\r\n // title: 'Clone Business Rules Message'\r\n // },\r\n {\r\n type: 'icon',\r\n icon: 'save',\r\n name: 'save',\r\n hideon: 'edit',\r\n hidevalue: false,\r\n title: 'Save Business Rules Message'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'save',\r\n name: 'saveduplicate',\r\n hideon: 'createduplicate',\r\n hidevalue: false,\r\n title: 'Save Business Rules Message'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'previtem',\r\n name: 'previtem',\r\n hideon: 'previtem',\r\n hidevalue: false,\r\n title: 'Previous Item'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'nextitem',\r\n name: 'nextitem',\r\n hideon: 'nextitem',\r\n hidevalue: false,\r\n title: 'Next Item'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'fullscreen',\r\n name: 'fullscreen',\r\n hidevalue: false,\r\n title: 'FullScreen'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'exitfullscreen',\r\n name: 'exitfullscreen',\r\n hideon: 'fullscreen',\r\n hidevalue: false,\r\n title: 'Exit FullScreen'\r\n }\r\n ],\r\n\r\n\r\n },\r\n EditBusiessRules: {\r\n \"type\": \"form\",\r\n \"key\": \"EditBusiessRules\",\r\n \"name\": \"EditBusiessRules\",\r\n noParams: true,\r\n aliases: {\r\n 'editInfo': 'editInfo',\r\n 'allgriddata': 'allgriddata', //\r\n 'navigation': 'navigation'\r\n },\r\n sharedValues: ['editInfo', 'allgriddata', 'navigation', 'edit', 'createduplicate', 'exitfullscreen', 'fullscreen'],\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'Type',\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'Message',\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 2,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'TableName',\r\n type: 'div',\r\n className: 'col-md-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-6',\r\n }\r\n },\r\n {\r\n name: 'Status',\r\n type: 'div',\r\n className: 'col-md-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-6',\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 3,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'CreatedOn',\r\n type: 'div',\r\n className: 'col-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-6'\r\n }\r\n },\r\n {\r\n name: 'CreatedByName',\r\n type: 'div',\r\n className: 'col-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-6'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 4,\r\n type: 'div',\r\n className: 'row',\r\n components: [\r\n {\r\n name: 'UpdatedOn',\r\n type: 'div',\r\n className: 'col-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-6'\r\n }\r\n },\r\n {\r\n name: 'UpdatedByName',\r\n type: 'div',\r\n className: 'col-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-6'\r\n }\r\n },]\r\n },\r\n ],\r\n },\r\n values: {\r\n Type: '',\r\n Message: '',\r\n Key: getEnvVariable('ModuleKey')+'Module.BUSINESS_RULES_ALERTS',\r\n TableName: getEnvVariable('ModuleKey')+'Module.BUSINESS_RULES_ALERTS',\r\n Status: '',\r\n UpdatedByName: '',\r\n CreatedByName: '',\r\n UpdatedOn: '',\r\n CreatedOn: '',\r\n UpdatedBy: '',\r\n CreatedBy: '',\r\n Id: '',\r\n editInfo: null,\r\n allgriddata: null,\r\n navigation: null,\r\n\r\n },\r\n\r\n \"components\": {\r\n Key: {\r\n \"type\": \"label\",\r\n \"key\": \"Key\",\r\n \"label\": \"Key\",\r\n \"name\": \"Key\",\r\n changefieldto: \"label\",\r\n },\r\n Type: {\r\n \"type\": \"label\",\r\n \"key\": \"Type\",\r\n \"label\": \"Type\",\r\n \"name\": \"Type\",\r\n changefieldto: \"dropdown\",\r\n extraProps: {\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Value'\r\n },\r\n }\r\n },\r\n Message: {\r\n \"type\": \"label\",\r\n \"key\": \"Message\",\r\n \"label\": \"Name\",\r\n \"name\": \"Message\",\r\n changefieldto: \"textfield\",\r\n },\r\n TableName: {\r\n \"type\": \"label\",\r\n \"key\": \"TableName\",\r\n \"label\": \"TableName\",\r\n \"name\": \"TableName\",\r\n changefieldto: \"label\",\r\n },\r\n Status: {\r\n \"type\": \"label\",\r\n \"key\": \"Status\",\r\n \"label\": \"Status\",\r\n \"name\": \"Status\",\r\n changefieldto: \"toggle\",\r\n extraProps: {\r\n \"transformProps\": {\r\n \"A\": true,\r\n \"I\": false,\r\n \"true\": \"A\",\r\n \"false\": \"I\"\r\n }\r\n },\r\n LabeltransformProps: {\r\n I: 'In-Active',\r\n A: 'Active',\r\n true: 'Active',\r\n false: 'In-Active',\r\n },\r\n },\r\n CreatedOn: {\r\n \"type\": \"label\",\r\n \"key\": \"CreatedOn\",\r\n \"label\": \"Created On\",\r\n name: \"CreatedOn\",\r\n changefieldto: \"label\",\r\n },\r\n CreatedByName: {\r\n \"type\": \"label\",\r\n \"key\": \"CreatedByName\",\r\n \"label\": \"Created By\",\r\n name: \"CreatedByName\",\r\n changefieldto: \"label\",\r\n },\r\n UpdatedOn: {\r\n \"type\": \"label\",\r\n \"key\": \"UpdatedOn\",\r\n \"label\": \"Updated On\",\r\n name: \"UpdatedOn\",\r\n changefieldto: \"label\",\r\n },\r\n UpdatedByName: {\r\n \"type\": \"label\",\r\n \"key\": \"UpdatedByName\",\r\n \"label\": \"Updated By\",\r\n name: \"UpdatedByName\",\r\n changefieldto: \"label\",\r\n },\r\n },\r\n mapActionsToEffects: {\r\n 'onLoad': {\r\n 'init': {\r\n rules: [{\r\n run:\r\n {\r\n valid: [\r\n {\r\n type: 'load',\r\n name: 'Type',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin') + `/api/Domains/values?domainkey=PROJECT_MESSAGE_TYPE`,\r\n type: 'get',\r\n saveAs: {\r\n key: 'items'\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n type: 'validations',\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/ProjectMessages/RulesByName?name=master.projectmessages`,\r\n type: 'get'\r\n }\r\n ],\r\n transformProps: {\r\n removesubfieldname: 'MASTER.PROJECTMESSAGES_'\r\n }\r\n },\r\n { type: 'prop', name: 'TableName', isVisible: false },\r\n ]\r\n }\r\n }]\r\n }\r\n },\r\n 'onChange': {\r\n 'exitfullscreen': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'exitfullscreen',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'fullscreen': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'fullscreen',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'createduplicate': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'createduplicate',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'navigation': {\r\n rules: [{\r\n run:\r\n {\r\n valid: [\r\n {\r\n type: 'initial',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin')+`/api/ProjectMessages/Id?id={name}`,\r\n key: 'save',\r\n \"matchProps\": [\r\n {\r\n name: \"routeid1\",\r\n key: \"routeid1\",\r\n },\r\n {\r\n name: \"navigation.Id\",\r\n key: \"name\",\r\n }\r\n ],\r\n type: 'get',\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n 'edit': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'edit',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n 'afterSave': {\r\n 'saveduplicate': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'save',\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('Admin') + `/api/ProjectMessages/Add/{name}`,\r\n type: 'post',\r\n key: 'save',\r\n \"matchProps\": [\r\n {\r\n name: \"TableName\",\r\n key: \"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 'save': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'save',\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('Admin') + `/api/ProjectMessages/Update`,\r\n type: 'put',\r\n key: 'save',\r\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 BusiessRulesEdit","import ProjectmessagesEdit from '../projectmessages/projectmessagesview'\r\nimport ProjectMessagesAdd from '../projectmessages/projectmessagesadd';\r\nimport { getEnvVariable } from '../../../../modules/environmentalList';\r\nimport BusiessRulesAdd from './businessrules/businessrulesadd';\r\nimport BusiessRulesEdit from './businessrules/businessrulesedit';\r\n\r\nconst SelectProjectMgs = {\r\n \"type\": \"form\",\r\n \"key\": \"SelectProjectMgs\",\r\n \"name\": \"SelectProjectMgs\",\r\n aliases: {\r\n save: 'save',\r\n GROUP_NAME: 'GROUP_NAME'\r\n },\r\n sharedValues: ['save', 'GROUP_NAME'],\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'GROUP_NAME',\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n }\r\n }],\r\n\r\n },\r\n ],\r\n },\r\n values: {\r\n GROUP_NAME: 'Module',\r\n },\r\n\r\n \"components\": {\r\n GROUP_NAME: {\r\n \"type\": \"dropdown\",\r\n \"key\": \"GROUP_NAME\",\r\n \"label\": \"Select Group Type\",\r\n \"name\": \"GROUP_NAME\",\r\n extraProps: {\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Value'\r\n },\r\n }\r\n },\r\n },\r\n mapActionsToEffects: {\r\n onLoad: {\r\n init: {\r\n rules: [{\r\n run:\r\n {\r\n valid: [{\r\n type: 'load',\r\n name: 'GROUP_NAME',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin') + `/api/Domains/values?domainkey=TABLE_NAMES`,\r\n type: 'get',\r\n saveAs: {\r\n key: 'items'\r\n }\r\n }\r\n ]\r\n },\r\n\r\n // {\r\n // type: 'validations', //http://development.delasoft.com:8443/AMES-application/api/ProposedLandUse/5864/Add\r\n // \"read\": [\r\n // {\r\n // \"url\": getEnvVariable('MasterAdmin') + `/api/ProjectMessages/RulesByName?name=master.appsettings`,\r\n // type: 'get'\r\n // }\r\n // ],\r\n // transformProps: {\r\n // removesubfieldname: 'MASTER.APPSETTINGS_'\r\n // }\r\n // },\r\n ]\r\n }\r\n }]\r\n },\r\n }\r\n }\r\n}\r\n\r\nconst ProjectmessagesGrid = {\r\n \"type\": \"grid\",\r\n title: \"Project Messages\",\r\n \"key\": \"ProjectmessagesGrid\",\r\n \"gridkey\": 'ProjectmessagesGrid',\r\n \"name\": \"ProjectmessagesGrid\",\r\n customizedheight: 450,\r\n //\"addRoute\": true,\r\n \"nosubgridrouting\": true,\r\n //\"routeParams\": { replace: 'settings', param: 'Value' },\r\n values: {\r\n addOpen: false,\r\n editOpen: false,\r\n editInfo: null,\r\n load: false,\r\n allgriddata: null,\r\n navigateItem: null,\r\n navigation: null,\r\n reportOpen: false,\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null,\r\n },\r\n sharedValues: ['addOpen', 'editOpen', 'editInfo', 'allgriddata', 'navigateItem', 'navigation', 'loadreportfilter', 'ReportJsonQueryStr', 'reportOpen'],\r\n aliases: {\r\n addOpen: 'addOpen',\r\n editOpen: 'editOpen',\r\n editInfo: 'editInfo',\r\n allgriddata: 'allgriddata',\r\n navigateItem: 'navigateItem',\r\n navigation: 'navigation',\r\n reportOpen: 'reportOpen',\r\n loadreportfilter: 'loadreportfilter',\r\n ReportJsonQueryStr: 'ReportJsonQueryStr',\r\n },\r\n headerProps: {\r\n title: \"Project Messages\",\r\n\r\n actions: [\r\n\r\n {\r\n type: 'fab',\r\n icon: 'clear',\r\n name: 'clear',\r\n color: 'primary',\r\n title: 'Clear Filters',\r\n menucolor: '#22a9b3',\r\n hideon: 'clear',\r\n hidevalue: false\r\n },\r\n\r\n {\r\n type: 'menu',\r\n icon: 'excel',\r\n name: 'excel',\r\n color: 'primary',\r\n title: 'Export to Excel',\r\n menucolor: '#c90685',\r\n hideon: 'excel',\r\n hidevalue: false,\r\n items: [{\r\n name: 'Export Current Page',\r\n action: 'filtercurrent'\r\n },\r\n {\r\n name: 'Export All Pages',\r\n action: 'filterall'\r\n }\r\n ]\r\n },\r\n {\r\n type: 'fab',\r\n icon: 'reports',\r\n name: 'reports',\r\n color: 'primary',\r\n title: 'Save Report',\r\n menucolor: '#C85A54',\r\n hideon: 'reports',\r\n hidevalue: false\r\n },\r\n ]\r\n },\r\n \"columns\": [\r\n {\r\n \"title\": \"Name\",\r\n \"field\": \"Name\",\r\n \"show\": true,\r\n },\r\n ],\r\n displayName: 'editInfo',\r\n allgriddata: 'allgriddata',\r\n navigateItem: 'navigateItem',\r\n navigateItem: 'navigateItem',\r\n navigation: 'navigation',\r\n loadreportfilter: 'loadreportfilter',\r\n ReportJsonQueryStr: 'ReportJsonQueryStr',\r\n mapActionsToEffects: {\r\n load: {\r\n rules: [{\r\n run: {\r\n valid: [{\r\n type: 'grid',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Report') + `/api/ReportQuery/QueryLoad?masterkey=APPLICATION_UTIL_QUERIES&kendoGrid=K&reportkey=ALL_Tables_ProjectMessagesGroupName&`,\r\n type: 'post',\r\n alert: true,\r\n key: 'save',\r\n body: {\r\n \"GROUP_NAME\": \"Module\"\r\n },\r\n verify: 'GROUP_NAME',\r\n saveAs: {\r\n key: 'data'\r\n }\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n GROUP_NAME: {\r\n rules: [{\r\n run: {\r\n valid: [{\r\n type: 'grid',\r\n \"read\": [\r\n {//ALL_Tables_ProjectMessagesGroupName\r\n url: getEnvVariable('Report') + `/api/ReportQuery/QueryLoad?masterkey=APPLICATION_UTIL_QUERIES&kendoGrid=K&reportkey=ALL_Tables_ProjectMessagesGroupName&`,\r\n type: 'post',\r\n alert: true,\r\n key: 'save',\r\n removeObjParams: ['allgriddata', 'editInfo', 'navigation', 'TableName'],\r\n saveAs: {\r\n key: 'data'\r\n }\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n addOpen: {\r\n rules: [{\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"addOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n run: {\r\n valid: [{\r\n type: 'grid',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Report') + `/api/ReportQuery/QueryLoad?masterkey=APPLICATION_UTIL_QUERIES&kendoGrid=K&reportkey=ALL_Tables_ProjectMessagesGroupName&`,\r\n type: 'post',\r\n alert: true,\r\n key: 'save',\r\n saveAs: {\r\n key: 'data'\r\n }\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n editOpen: {\r\n rules: [{\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"editOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n run: {\r\n valid: [{\r\n type: 'grid', //loadtemp\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Report') + `/api/ReportQuery/QueryLoad?masterkey=APPLICATION_UTIL_QUERIES&kendoGrid=K&reportkey=ALL_Tables_ProjectMessagesGroupName&`,\r\n type: 'post',\r\n alert: true,\r\n key: 'save',\r\n saveAs: {\r\n key: 'data'\r\n },\r\n removeObjParams: ['allgriddata', 'editInfo', 'navigation', 'TableName'],\r\n \"matchProps\": [\r\n {\r\n name: \"editInfo.GroupName\",\r\n key: \"name\",\r\n }\r\n ],\r\n sublist: 'GROUP_NAME',\r\n body: {\r\n \"GROUP_NAME\": \"editInfo.GroupName\"\r\n },\r\n replaceBody: true,\r\n word: \"GROUP_NAME\"\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n 'add': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'value',\r\n key: 'addOpen',\r\n result: true\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'display': {\r\n rules: [\r\n\r\n {\r\n uncheck: true,\r\n run: {\r\n valid: [\r\n {\r\n type: 'value',\r\n key: 'editOpen',\r\n result: true\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'editInfo',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'allgriddata',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'navigateItem',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'navigation',\r\n },\r\n\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'report': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'value',\r\n key: 'reportOpen',\r\n result: true\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'loadreportfilter',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'ReportJsonQueryStr',\r\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 ProjectMessagesReport = {\r\n type: 'popup',\r\n key: 'ProjectMessagesReport',\r\n name: 'ProjectMessagesReport',\r\n\r\n anchor: 'right',\r\n open: false,\r\n aliases: {\r\n open: 'reportOpen'\r\n },\r\n sharedValues: ['open', 'loadreportfilter', 'ReportJsonQueryStr'],\r\n container: {\r\n values: {\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null\r\n },\r\n mapValues: {\r\n Report: [\r\n {\r\n key: 'ReportJsonQueryStr',\r\n name: 'ReportJsonQueryStr'\r\n },\r\n {\r\n key: 'loadreportfilter',\r\n name: 'loadreportfilter'\r\n },\r\n ],\r\n },\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: '',\r\n components: [\r\n {\r\n name: 'Report'\r\n },\r\n ]\r\n }\r\n ]\r\n\r\n },\r\n components: {\r\n Report: {\r\n \"type\": \"form\",\r\n \"key\": \"Report\",\r\n \"name\": \"Report\",\r\n aliases: {\r\n\r\n },\r\n sharedValues: ['ReportJsonQueryStr', 'loadreportfilter'],\r\n values: {\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null\r\n },\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: '',\r\n components: [{\r\n name: 'ReportJsonQueryStr',\r\n type: 'div',\r\n\r\n },\r\n {\r\n name: 'loadreportfilter',\r\n type: 'div',\r\n\r\n }],\r\n\r\n },\r\n ],\r\n },\r\n \"components\": {\r\n \"ReportJsonQueryStr\": {\r\n \"type\": \"gridreport\",\r\n \"gridkey\": 'ProjectmessagesGrid',\r\n },\r\n },\r\n }\r\n }\r\n }\r\n}\r\nconst ProjectMessagesContainer = {\r\n type: 'container',\r\n custom: true,\r\n key: 'ProjectMessagesContainer',\r\n values: {\r\n addOpen: false,\r\n editOpen: false,\r\n editInfo: null,\r\n allgriddata: null,\r\n navigateItem: null,\r\n navigation: null,\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null,\r\n reportOpen: false,\r\n },\r\n mapValues: {\r\n ProjectMessagesAdd: [\r\n {\r\n key: 'addOpen',\r\n name: 'open'\r\n }\r\n ],\r\n ProjectmessagesEdit: [\r\n {\r\n key: 'editOpen',\r\n name: 'open'\r\n },\r\n {\r\n key: 'editInfo',\r\n name: 'editInfo'\r\n },\r\n {\r\n key: 'allgriddata',\r\n name: 'allgriddata'\r\n },\r\n {\r\n key: 'navigateItem',\r\n name: 'navigateItem'\r\n },\r\n {\r\n key: 'navigation',\r\n name: 'navigation'\r\n },\r\n ],\r\n ProjectmessagesGrid: [\r\n {\r\n key: 'editOpen',\r\n name: 'editOpen'\r\n },\r\n {\r\n key: 'addOpen',\r\n name: 'addOpen'\r\n },\r\n {\r\n key: 'reportOpen',\r\n name: 'reportOpen'\r\n },\r\n {\r\n key: 'ReportJsonQueryStr',\r\n name: 'ReportJsonQueryStr'\r\n },\r\n {\r\n key: 'loadreportfilter',\r\n name: 'loadreportfilter'\r\n },\r\n {\r\n key: 'GROUP_NAME',\r\n name: 'GROUP_NAME'\r\n },\r\n ],\r\n ProjectMessagesReport: [\r\n {\r\n key: 'reportOpen',\r\n name: 'open'\r\n },\r\n {\r\n key: 'loadreportfilter',\r\n name: 'loadreportfilter'\r\n },\r\n {\r\n key: 'ReportJsonQueryStr',\r\n name: 'ReportJsonQueryStr'\r\n },\r\n\r\n ],\r\n SelectProjectMgs: [\r\n {\r\n key: 'GROUP_NAME',\r\n name: 'GROUP_NAME'\r\n }\r\n ],\r\n\r\n },\r\n mapActionsToEffects: {\r\n 'addOpen': {\r\n rules: [\r\n {\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"addOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n uncheck: true,\r\n run: {\r\n valid: [\r\n {\r\n type: 'removelayout',\r\n name: 'ProjectMessagesAdd',\r\n }\r\n\r\n ],\r\n inValid: [\r\n {\r\n type: 'addlayout',\r\n name: 'ProjectMessagesAdd',\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'editOpen': {\r\n rules: [\r\n {\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"editOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n uncheck: true,\r\n run: {\r\n valid: [\r\n {\r\n type: 'removelayout',\r\n name: 'ProjectmessagesEdit',\r\n }\r\n\r\n ],\r\n inValid: [\r\n {\r\n type: 'addlayout',\r\n name: 'ProjectmessagesEdit',\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'reportOpen': {\r\n rules: [\r\n {\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"reportOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n uncheck: true,\r\n run: {\r\n valid: [\r\n {\r\n type: 'removelayout',\r\n name: 'ProjectMessagesReport',\r\n }\r\n\r\n ],\r\n inValid: [\r\n {\r\n type: 'addlayout',\r\n name: 'ProjectMessagesReport',\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n },\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [\r\n {\r\n name: 'SelectProjectMgs',\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [\r\n {\r\n name: 'ProjectmessagesGrid'\r\n },\r\n ]\r\n }\r\n ]\r\n\r\n },\r\n components: {\r\n SelectProjectMgs: SelectProjectMgs,\r\n ProjectmessagesGrid: ProjectmessagesGrid,\r\n ProjectMessagesAdd: ProjectMessagesAdd,\r\n ProjectmessagesEdit: ProjectmessagesEdit,\r\n ProjectMessagesReport: ProjectMessagesReport\r\n }\r\n}\r\n\r\nconst BusiessRulesGrid = {\r\n \"type\": \"grid\",\r\n title: \"Project Messages\",\r\n \"key\": \"BusiessRulesGrid\",\r\n \"gridkey\": 'BusiessRulesGrid',\r\n \"name\": \"BusiessRulesGrid\",\r\n customizedheight: 350,\r\n //\"addRoute\": true,\r\n \"nosubgridrouting\": true,\r\n //\"routeParams\": { replace: 'settings', param: 'Value' },\r\n values: {\r\n addOpen: false,\r\n editOpen: false,\r\n editInfo: null,\r\n load: false,\r\n allgriddata: null,\r\n navigateItem: null,\r\n navigation: null,\r\n reportOpen: false,\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null,\r\n },\r\n sharedValues: ['addOpen', 'editOpen', 'editInfo', 'allgriddata', 'navigateItem', 'navigation', 'loadreportfilter', 'ReportJsonQueryStr', 'reportOpen'],\r\n aliases: {\r\n addOpen: 'addOpen',\r\n editOpen: 'editOpen',\r\n editInfo: 'editInfo',\r\n allgriddata: 'allgriddata',\r\n navigateItem: 'navigateItem',\r\n navigation: 'navigation',\r\n reportOpen: 'reportOpen',\r\n loadreportfilter: 'loadreportfilter',\r\n ReportJsonQueryStr: 'ReportJsonQueryStr'\r\n },\r\n headerProps: {\r\n title: \"Business Rules\",\r\n actions: [\r\n {\r\n type: 'fab',\r\n icon: 'clear',\r\n name: 'clear',\r\n color: 'primary',\r\n title: 'Clear Filters',\r\n menucolor: '#22a9b3',\r\n hideon: 'clear',\r\n hidevalue: false\r\n },\r\n\r\n {\r\n type: 'menu',\r\n icon: 'excel',\r\n name: 'excel',\r\n color: 'primary',\r\n title: 'Export to Excel',\r\n menucolor: '#c90685',\r\n hideon: 'excel',\r\n hidevalue: false,\r\n items: [{\r\n name: 'Export Current Page',\r\n action: 'filtercurrent'\r\n },\r\n {\r\n name: 'Export All Pages',\r\n action: 'filterall'\r\n }\r\n ]\r\n },\r\n {\r\n type: 'fab',\r\n icon: 'reports',\r\n name: 'reports',\r\n color: 'primary',\r\n title: 'Save Report',\r\n menucolor: '#C85A54',\r\n hideon: 'reports',\r\n hidevalue: false\r\n },\r\n {\r\n type: 'fab',\r\n icon: 'add',\r\n name: 'add',\r\n color: 'primary',\r\n hideon: 'addButton',\r\n hidevalue: true,\r\n title: 'Add Business Rule',\r\n menucolor: '#36088a'\r\n },\r\n ]\r\n },\r\n \"columns\": [\r\n {\r\n \"title\": \"Message\",\r\n \"field\": \"Message\",\r\n \"show\": true,\r\n \"width\": 300\r\n },\r\n {\r\n \"title\": \"Type\",\r\n \"field\": \"TypeDesc\",\r\n \"show\": true,\r\n },\r\n {\r\n \"title\": \"Created By\",\r\n \"field\": \"CreatedByName\",\r\n \"show\": true,\r\n },\r\n {\r\n \"title\": \"Created On\",\r\n \"field\": \"CreatedOn\",\r\n \"show\": true,\r\n filter: \"date\",\r\n format: \"{0:d}\",\r\n convert: \"MM/DD/YYYY hh:mm:ss A\"\r\n },\r\n {\r\n \"title\": \"Updated By\",\r\n \"field\": \"UpdatedByName\",\r\n \"show\": true,\r\n },\r\n {\r\n \"title\": \"Updated On\",\r\n \"field\": \"UpdatedOn\",\r\n \"show\": true,\r\n filter: \"date\",\r\n format: \"{0:d}\",\r\n convert: \"MM/DD/YYYY hh:mm:ss A\"\r\n },\r\n ],\r\n displayName: 'editInfo',\r\n allgriddata: 'allgriddata',\r\n navigateItem: 'navigateItem',\r\n navigateItem: 'navigateItem',\r\n navigation: 'navigation',\r\n loadreportfilter: 'loadreportfilter',\r\n ReportJsonQueryStr: 'ReportJsonQueryStr',\r\n mapActionsToEffects: {\r\n load: {\r\n rules: [{\r\n run: {\r\n valid: [{\r\n type: 'grid',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin') + `/api/ProjectMessages/${getEnvVariable('ModuleKey')}Module.BUSINESS_RULES_ALERTS/Grid?`,\r\n type: 'get',\r\n key: 'save',\r\n saveAs: {\r\n key: 'data'\r\n }\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n addOpen: {\r\n rules: [{\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"addOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n run: {\r\n valid: [{\r\n type: 'grid',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin') + `/api/ProjectMessages/${getEnvVariable('ModuleKey')}Module.BUSINESS_RULES_ALERTS/Grid?`,\r\n type: 'get',\r\n key: 'save',\r\n saveAs: {\r\n key: 'data'\r\n }\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n editOpen: {\r\n rules: [{\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"editOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n run: {\r\n valid: [{\r\n type: 'loadtemp', //loadtemp\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin') + `/api/ProjectMessages/${getEnvVariable('ModuleKey')}Module.BUSINESS_RULES_ALERTS/Grid?`,\r\n type: 'get',\r\n key: 'save',\r\n saveAs: {\r\n key: 'data'\r\n }\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n 'add': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'value',\r\n key: 'addOpen',\r\n result: true\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'display': {\r\n rules: [\r\n\r\n {\r\n uncheck: true,\r\n run: {\r\n valid: [\r\n {\r\n type: 'value',\r\n key: 'editOpen',\r\n result: true\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'editInfo',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'allgriddata',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'navigateItem',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'navigation',\r\n },\r\n\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'report': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'value',\r\n key: 'reportOpen',\r\n result: true\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'loadreportfilter',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'ReportJsonQueryStr',\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n }\r\n}\r\n\r\n\r\nconst BusiessRulesContainer = {\r\n type: 'container',\r\n custom: true,\r\n key: 'BusiessRulesContainer',\r\n values: {\r\n addOpen: false,\r\n editOpen: false,\r\n editInfo: null,\r\n allgriddata: null,\r\n navigateItem: null,\r\n navigation: null,\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null,\r\n reportOpen: false,\r\n },\r\n mapValues: {\r\n BusiessRulesAdd: [\r\n {\r\n key: 'addOpen',\r\n name: 'open'\r\n }\r\n ],\r\n BusiessRulesEdit: [\r\n {\r\n key: 'editOpen',\r\n name: 'open'\r\n },\r\n {\r\n key: 'editInfo',\r\n name: 'editInfo'\r\n },\r\n {\r\n key: 'allgriddata',\r\n name: 'allgriddata'\r\n },\r\n {\r\n key: 'navigateItem',\r\n name: 'navigateItem'\r\n },\r\n {\r\n key: 'navigation',\r\n name: 'navigation'\r\n },\r\n ],\r\n BusiessRulesGrid: [\r\n {\r\n key: 'editOpen',\r\n name: 'editOpen'\r\n },\r\n {\r\n key: 'addOpen',\r\n name: 'addOpen'\r\n },\r\n {\r\n key: 'reportOpen',\r\n name: 'reportOpen'\r\n },\r\n {\r\n key: 'ReportJsonQueryStr',\r\n name: 'ReportJsonQueryStr'\r\n },\r\n {\r\n key: 'loadreportfilter',\r\n name: 'loadreportfilter'\r\n },\r\n ],\r\n ProjectMessagesReport: [\r\n {\r\n key: 'reportOpen',\r\n name: 'open'\r\n },\r\n {\r\n key: 'loadreportfilter',\r\n name: 'loadreportfilter'\r\n },\r\n {\r\n key: 'ReportJsonQueryStr',\r\n name: 'ReportJsonQueryStr'\r\n },\r\n\r\n ]\r\n\r\n },\r\n mapActionsToEffects: {\r\n 'addOpen': {\r\n rules: [\r\n {\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"addOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n uncheck: true,\r\n run: {\r\n valid: [\r\n {\r\n type: 'removelayout',\r\n name: 'BusiessRulesAdd',\r\n }\r\n\r\n ],\r\n inValid: [\r\n {\r\n type: 'addlayout',\r\n name: 'BusiessRulesAdd',\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'editOpen': {\r\n rules: [\r\n {\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"editOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n uncheck: true,\r\n run: {\r\n valid: [\r\n {\r\n type: 'removelayout',\r\n name: 'BusiessRulesEdit',\r\n }\r\n\r\n ],\r\n inValid: [\r\n {\r\n type: 'addlayout',\r\n name: 'BusiessRulesEdit',\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'reportOpen': {\r\n rules: [\r\n {\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"reportOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n uncheck: true,\r\n run: {\r\n valid: [\r\n {\r\n type: 'removelayout',\r\n name: 'ProjectMessagesReport',\r\n }\r\n\r\n ],\r\n inValid: [\r\n {\r\n type: 'addlayout',\r\n name: 'ProjectMessagesReport',\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n },\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [\r\n {\r\n name: 'BusiessRulesGrid'\r\n },\r\n ]\r\n }\r\n ]\r\n\r\n },\r\n components: {\r\n BusiessRulesGrid: BusiessRulesGrid,\r\n BusiessRulesAdd: BusiessRulesAdd,\r\n BusiessRulesEdit: BusiessRulesEdit,\r\n ProjectMessagesReport: ProjectMessagesReport\r\n }\r\n}\r\n\r\nconst ProjectMessagesSectionTab = {\r\n type: \"sections\",\r\n \"key\": \"ProjectMessagesSectionTab\",\r\n name: \"ProjectMessagesSectionTab\",\r\n aliases: {\r\n },\r\n initRun: true,\r\n sharedValues: [],\r\n validationMapKeys: [],\r\n layout: {\r\n 'Business Rule Messages': {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'BusinessRulesContainer',\r\n type: 'div',\r\n className: 'col-12',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12'\r\n }\r\n },]\r\n },\r\n ],\r\n },\r\n 'Tables': {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'ProjectMessagesContainer',\r\n type: 'div',\r\n className: 'col-12',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12'\r\n }\r\n },]\r\n },\r\n ],\r\n },\r\n },\r\n values: {\r\n ProjectMessagesContainer: '',\r\n ProjectMessagesGrid: '',\r\n },\r\n\r\n sections: {\r\n type: 'tab',\r\n sectionNames: ['Business Rule Messages', 'Tables',],\r\n steps: ['Business Rule Messages', 'Tables'],\r\n },\r\n components: {\r\n BusinessRulesContainer: BusiessRulesContainer,\r\n ProjectMessagesContainer: ProjectMessagesContainer\r\n },\r\n mapActionsToEffects: {\r\n\r\n\r\n }\r\n\r\n}\r\n\r\n\r\nconst ProjectMessagesTabs = {\r\n type: 'container',\r\n custom: true,\r\n key: 'ProjectMessagesTabs',\r\n values: {\r\n\r\n },\r\n mapValues: {\r\n\r\n },\r\n mapActionsToEffects: {\r\n\r\n },\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row col',\r\n components: [\r\n {\r\n name: 'ProjectMessagesSectionTab'\r\n },\r\n ]\r\n }\r\n ]\r\n\r\n },\r\n components: {\r\n ProjectMessagesSectionTab: ProjectMessagesSectionTab,\r\n }\r\n}\r\n\r\nexport default ProjectMessagesTabs\r\n\r\n","import { getEnvVariable } from \"../../../../modules/environmentalList\"\r\n\r\nconst PolicysettingsAdd = {\r\n \"type\": \"popup\",\r\n \"key\": \"PolicysettingsAdd\",\r\n \"name\": \"PolicysettingsAdd\",\r\n anchor: 'right',\r\n open: false,\r\n aliases: {\r\n open: 'addOpen'\r\n },\r\n sharedValues: ['open'],\r\n container: {\r\n values: { save: false, back: false, fullscreen: false, },\r\n mapValues: {\r\n header: [\r\n { key: 'exitfullscreen', name: 'exitfullscreen' },\r\n { key: 'fullscreen', name: 'fullscreen' },\r\n ],\r\n AddPolicysettings: [{ key: 'save', name: 'save' },\r\n { key: 'exitfullscreen', name: 'exitfullscreen' },\r\n { key: 'fullscreen', name: 'fullscreen' },]\r\n },\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [{\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'header',\r\n type: 'div',\r\n className: 'col-12 ',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12',\r\n }\r\n }],\r\n\r\n },\r\n\r\n\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'AddPolicysettings',\r\n type: 'div',\r\n className: 'col-12 pl-4 m-2',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12 pl-4 m-2',\r\n }\r\n }],\r\n\r\n },\r\n ]\r\n },\r\n\r\n components: {\r\n header: {\r\n name: \"header\",\r\n type: 'header',\r\n title: 'settings',\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": \"Add System Templates\", \"materialicon\": \"settings\", className: 'eps-breadcrumb-item ', class: 'text-light' },\r\n ]\r\n }\r\n ],\r\n layout: {},\r\n actions: [\r\n {\r\n type: 'icon',\r\n icon: 'back',\r\n name: 'back',\r\n hideon: 'back',\r\n hidevalue: false,\r\n title: 'Back'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'save',\r\n name: 'save',\r\n hideon: 'save',\r\n hidevalue: false,\r\n title: 'Save System Templates'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'fullscreen',\r\n name: 'fullscreen',\r\n hidevalue: false,\r\n title: 'FullScreen'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'exitfullscreen',\r\n name: 'exitfullscreen',\r\n hideon: 'fullscreen',\r\n hidevalue: false,\r\n title: 'Exit FullScreen'\r\n }\r\n ],\r\n\r\n\r\n },\r\n AddPolicysettings: {\r\n \"type\": \"form\",\r\n \"key\": \"AddPolicysettings\",\r\n \"name\": \"AddPolicysettings\",\r\n //\"routeParams\": { replace: 'settings', param: 'Id', routeName: 'TableName' },\r\n aliases: {\r\n save: 'save',\r\n },\r\n sharedValues: ['save', 'exitfullscreen', 'fullscreen'],\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'subject',\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n }\r\n }],\r\n\r\n },\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'body',\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n }\r\n }],\r\n\r\n },\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'ShowOnUI',\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n }\r\n }],\r\n\r\n },\r\n ],\r\n },\r\n values: {\r\n subject: '',\r\n body:'',\r\n Key:'',\r\n showOnUI:''\r\n },\r\n\r\n \"components\": {\r\n subject: {\r\n \"type\": \"textfield\",\r\n \"key\": \"subject\",\r\n \"label\": \"Name\",\r\n \"name\": \"subject\",\r\n },\r\n body: {\r\n \"type\": \"editor\",\r\n \"key\": \"body\",\r\n \"label\": \"Body\",\r\n \"name\": \"body\",\r\n },\r\n ShowOnUI: {\r\n \"type\": \"checkbox\",\r\n \"key\": \"ShowOnUI\",\r\n name: \"ShowOnUI\",\r\n \"label\": \"Show On UI\",\r\n extraProps: {\r\n transformProps: {\r\n \"Y\": true,\r\n \"N\": false,\r\n true: \"Y\",\r\n false: \"N\"\r\n }\r\n },\r\n },\r\n },\r\n mapActionsToEffects: {\r\n 'onLoad': {\r\n init: {\r\n rules: [{\r\n run:\r\n {\r\n valid: [\r\n {\r\n type: 'validations', //http://development.delasoft.com:8443/AMES-application/api/ProposedLandUse/5864/Add\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/ProjectMessages/RulesByName?name=master.emailconfigurations`,\r\n type: 'get'\r\n }\r\n ],\r\n transformProps: {\r\n removesubfieldname: 'MASTER.EMAILCONFIGURATIONS_'\r\n }\r\n },\r\n\r\n\r\n\r\n ]\r\n }\r\n }]\r\n }\r\n },\r\n 'onChange': {\r\n 'exitfullscreen': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'exitfullscreen',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'fullscreen': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'fullscreen',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n\r\n },\r\n 'afterSave': {'save': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'save',\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('Application')+`/api/EmailConfiguration/Add`,\r\n type: 'post',\r\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 PolicysettingsAdd","import { getEnvVariable } from \"../../../../modules/environmentalList\"\r\n\r\nconst PolicysettingsEdit = {\r\n \"type\": \"popup\",\r\n \"key\": \"PolicysettingsEdit\",\r\n \"name\": \"PolicysettingsEdit\",\r\n anchor: 'right',\r\n open: false,\r\n aliases: {\r\n open: 'editOpen'\r\n },\r\n sharedValues: ['open'],\r\n container: {\r\n //\"addRoute\": true,\r\n closepopup: true,\r\n closepopupval: 'settings',\r\n values: { editInfo: null, edit: false, createduplicate: false, fullscreen: false, back: false, allgriddata: null, navigation: null },\r\n mapValues: {\r\n header: [\r\n { key: 'edit', name: 'edit' },\r\n { key: 'exitfullscreen', name: 'exitfullscreen' },\r\n { key: 'fullscreen', name: 'fullscreen' },\r\n { key: 'createduplicate', name: 'createduplicate' },\r\n ],\r\n EditPolicysettings: [\r\n { key: 'editInfo', name: 'editInfo' },\r\n { key: 'allgriddata', name: 'allgriddata' },\r\n { key: 'save', name: 'save' },\r\n { key: 'saveduplicate', name: 'saveduplicate' },\r\n { key: 'edit', name: 'edit' },\r\n { key: 'exitfullscreen', name: 'exitfullscreen' },\r\n { key: 'fullscreen', name: 'fullscreen' },\r\n { key: 'createduplicate', name: 'createduplicate' },\r\n { key: 'back', name: 'back' },\r\n { key: 'navigation', name: 'navigation' },]\r\n },\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [{\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'header',\r\n type: 'div',\r\n className: 'col-12 ',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12',\r\n }\r\n }],\r\n\r\n },\r\n\r\n\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'EditPolicysettings',\r\n type: 'div',\r\n className: 'col-12 pl-4 pt-3 m-2',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12 pl-4 pt-3 m-2',\r\n }\r\n }],\r\n\r\n },\r\n ]\r\n },\r\n\r\n components: {\r\n header: {\r\n name: \"header\",\r\n type: 'header',\r\n title: 'Settings',\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": \"View/Edit System Templates\", \"appendval\": \"Subject\", \"materialicon\": \"settings\", className: 'eps-breadcrumb-item ', class: 'text-light' },\r\n ]\r\n }\r\n ],\r\n layout: {},\r\n actions: [\r\n {\r\n type: 'icon',\r\n icon: 'back',\r\n name: 'back',\r\n hideon: 'back',\r\n hidevalue: false,\r\n title: 'Back'\r\n },\r\n\r\n {\r\n type: 'icon',\r\n icon: 'edit',\r\n name: 'edit',\r\n hideon: 'createduplicate',\r\n hideanother: 'edit',\r\n hidevalue: true,\r\n title: 'Edit System Templates'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'duplicate',\r\n name: 'createduplicate',\r\n hideon: 'edit',\r\n hideanother: 'createduplicate',\r\n hidevalue: true,\r\n title: 'Clone System Templates'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'save',\r\n name: 'save',\r\n hideon: 'edit',\r\n hidevalue: false,\r\n title: 'Save System Templates'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'save',\r\n name: 'saveduplicate',\r\n hideon: 'createduplicate',\r\n hidevalue: false,\r\n title: 'Save System Templates'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'previtem',\r\n name: 'previtem',\r\n hideon: 'previtem',\r\n hidevalue: false,\r\n title: 'Previous Item'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'nextitem',\r\n name: 'nextitem',\r\n hideon: 'nextitem',\r\n hidevalue: false,\r\n title: 'Next Item'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'fullscreen',\r\n name: 'fullscreen',\r\n hidevalue: false,\r\n title: 'FullScreen'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'exitfullscreen',\r\n name: 'exitfullscreen',\r\n hideon: 'fullscreen',\r\n hidevalue: false,\r\n title: 'Exit FullScreen'\r\n }\r\n ],\r\n\r\n\r\n },\r\n EditPolicysettings: {\r\n \"type\": \"form\",\r\n \"key\": \"EditPolicysettings\",\r\n \"name\": \"EditPolicysettings\",\r\n aliases: {\r\n 'editInfo': 'editInfo',\r\n 'allgriddata': 'allgriddata', //\r\n 'navigation': 'navigation'\r\n },\r\n sharedValues: ['editInfo', 'allgriddata', 'navigation', 'edit', 'createduplicate', 'exitfullscreen', 'fullscreen'],\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'Key',\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n }\r\n }],\r\n\r\n },\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'Subject',\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n }\r\n }],\r\n\r\n },\r\n {\r\n order: 2,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'Body',\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n }\r\n }],\r\n\r\n },\r\n {\r\n order: 3,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'ShowOnUI',\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n }\r\n }],\r\n\r\n },\r\n // {\r\n // order: 4,\r\n // type: 'div',\r\n // className: 'row',\r\n // components: [{\r\n // name: 'CreatedOn',\r\n // type: 'div',\r\n // className: 'col-6',\r\n // sub: {\r\n // type: 'div',\r\n // className: 'col-6'\r\n // }\r\n // },\r\n // {\r\n // name: 'CreatedByName',\r\n // type: 'div',\r\n // className: 'col-6',\r\n // sub: {\r\n // type: 'div',\r\n // className: 'col-6'\r\n // }\r\n // },\r\n // ]\r\n // },\r\n // {\r\n // order: 5,\r\n // type: 'div',\r\n // className: 'row',\r\n // components: [\r\n // {\r\n // name: 'UpdatedOn',\r\n // type: 'div',\r\n // className: 'col-6',\r\n // sub: {\r\n // type: 'div',\r\n // className: 'col-6'\r\n // }\r\n // },\r\n // {\r\n // name: 'UpdatedByName',\r\n // type: 'div',\r\n // className: 'col-6',\r\n // sub: {\r\n // type: 'div',\r\n // className: 'col-6'\r\n // }\r\n // },]\r\n // },\r\n ],\r\n },\r\n values: {\r\n Subject: '',\r\n Body: '',\r\n UpdatedByName: '',\r\n CreatedByName: '',\r\n UpdatedOn: '',\r\n CreatedOn: '',\r\n UpdatedBy: '',\r\n CreatedBy: '',\r\n Id: '',\r\n editInfo: null,\r\n allgriddata: null,\r\n navigation: null,\r\n Key:'',\r\n ShowOnUI: ''\r\n },\r\n\r\n \"components\": {\r\n Key: {\r\n \"type\": \"label\",\r\n \"key\": \"Key\",\r\n \"label\": \"Key\",\r\n \"name\": \"Key\",\r\n changefieldto: \"label\",\r\n },\r\n Subject: {\r\n \"type\": \"label\",\r\n \"key\": \"Subject\",\r\n \"label\": \"Name\",\r\n \"name\": \"Subject\",\r\n changefieldto: \"label\",\r\n },\r\n Body: {\r\n \"type\": \"label\",\r\n \"key\": \"Body\",\r\n \"label\": \"Body\",\r\n \"name\": \"Body\",\r\n changefieldto: \"editor\",\r\n },\r\n ShowOnUI: {\r\n \"changefieldto\": \"checkbox\",\r\n \"type\": \"label\",\r\n \"key\": \"ShowOnUI\",\r\n name: \"ShowOnUI\",\r\n \"label\": \"Show On UI\",\r\n extraProps: {\r\n transformProps: {\r\n \"Y\": true,\r\n \"N\": false,\r\n true: \"Y\",\r\n false: \"N\"\r\n }\r\n },\r\n },\r\n CreatedOn: {\r\n \"type\": \"label\",\r\n \"key\": \"CreatedOn\",\r\n \"label\": \"Created On\",\r\n name: \"CreatedOn\",\r\n changefieldto: \"label\",\r\n },\r\n CreatedByName: {\r\n \"type\": \"label\",\r\n \"key\": \"CreatedByName\",\r\n \"label\": \"Created By\",\r\n name: \"CreatedByName\",\r\n changefieldto: \"label\",\r\n },\r\n UpdatedOn: {\r\n \"type\": \"label\",\r\n \"key\": \"UpdatedOn\",\r\n \"label\": \"Updated On\",\r\n name: \"UpdatedOn\",\r\n changefieldto: \"label\",\r\n },\r\n UpdatedByName: {\r\n \"type\": \"label\",\r\n \"key\": \"UpdatedByName\",\r\n \"label\": \"Updated By\",\r\n name: \"UpdatedByName\",\r\n changefieldto: \"label\",\r\n },\r\n },\r\n mapActionsToEffects: {\r\n 'onLoad': {\r\n 'init': {\r\n rules: [{\r\n run:\r\n {\r\n valid: [\r\n {\r\n type: 'validations', //http://development.delasoft.com:8443/AMES-application/api/ProposedLandUse/5864/Add\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/ProjectMessages/RulesByName?name=master.emailconfigurations`,\r\n type: 'get'\r\n }\r\n ],\r\n transformProps: {\r\n removesubfieldname: 'MASTER.EMAILCONFIGURATIONS_'\r\n }\r\n },\r\n ]\r\n }\r\n }]\r\n }\r\n },\r\n 'onChange': {\r\n 'exitfullscreen': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'exitfullscreen',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'fullscreen': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'fullscreen',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'createduplicate': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'createduplicate',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'navigation': {\r\n rules: [{\r\n run:\r\n {\r\n valid: [\r\n {\r\n type: 'initial',\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('Application')+`/api/EmailConfiguration/Id?id={Id}`,\r\n key: 'save',\r\n \"matchProps\": [\r\n {\r\n name: \"navigation.Id\",\r\n key: \"Id\",\r\n }\r\n ],\r\n type: 'get',\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n 'edit': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'edit',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n 'afterSave': {\r\n 'saveduplicate': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'save',\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('Application')+`/api/EmailConfiguration/Add`,\r\n type: 'post',\r\n }\r\n ],\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'save': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'save',\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('Application')+`/api/EmailConfiguration/Update`,\r\n type: 'post',\r\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 PolicysettingsEdit","import GeneralsettingsContainer from '../settings/generalsettings/generalsettingsgrid'\r\nimport ProjectMessagesGrid from '../settings/projectmessages/projectmessagesgrid'\r\nimport PolicysettingsContainer from '../settings/policysettings/policysettingsgrid'\r\nconst SettingstabView = {\r\n type: \"sections\",\r\n \"key\": \"SettingstabView\",\r\n name: \"SettingstabView\",\r\n aliases: {\r\n },\r\n initRun: true,\r\n sharedValues: [],\r\n validationMapKeys: [],\r\n layout: {\r\n // 'Settings': {\r\n // group: [\r\n // {\r\n // order: 0,\r\n // type: 'div',\r\n // className: 'row',\r\n // components: [{\r\n // name: 'GeneralsettingsContainer',\r\n // type: 'div',\r\n // className: 'col-12',\r\n // sub: {\r\n // type: 'div',\r\n // className: 'col-12'\r\n // }\r\n // },]\r\n // },\r\n // ],\r\n // },\r\n 'Project Messages': {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'ProjectMessagesGrid',\r\n type: 'div',\r\n className: 'col-12',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12'\r\n }\r\n },]\r\n },\r\n ],\r\n },\r\n 'System Templates': {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'PolicysettingsContainer',\r\n type: 'div',\r\n className: 'col-12',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12'\r\n }\r\n },]\r\n },\r\n ],\r\n },\r\n },\r\n values: {\r\n // GeneralsettingsContainer: '',\r\n ProjectMessagesGrid: '',\r\n PolicysettingsContainer: ''\r\n },\r\n\r\n sections: {\r\n type: 'tab',\r\n sectionNames: [ 'Project Messages', 'System Templates'],\r\n steps: [ 'Project Messages', 'System Templates'],\r\n },\r\n components: {\r\n // GeneralsettingsContainer: GeneralsettingsContainer,\r\n ProjectMessagesGrid: ProjectMessagesGrid,\r\n PolicysettingsContainer: PolicysettingsContainer\r\n },\r\n mapActionsToEffects: {\r\n\r\n \r\n }\r\n\r\n}\r\n\r\nexport default SettingstabView","import { getEnvVariable } from '../../../../modules/environmentalList';\r\nimport PolicysettingsAdd from '../policysettings/policysettingsadd';\r\nimport PolicysettingsEdit from '../policysettings/policysettingsview'\r\nconst PolicysettingsGrid = {\r\n \"title\": \"System Templates\",\r\n \"type\": \"grid\",\r\n \"key\": \"PolicysettingsGrid\",\r\n \"gridkey\": 'PolicysettingsGrid',\r\n \"name\": \"PolicysettingsGrid\",\r\n // \"addRoute\": true,\r\n // \"routeParams\": { replace: 'settings', param: 'Id', routeName: 'TableName' },\r\n customizedheight: 270,\r\n \"hasreport\": true,\r\n values: {\r\n addOpen: false,\r\n editOpen: false,\r\n editInfo: null,\r\n load: false,\r\n allgriddata: null,\r\n navigateItem: null,\r\n navigation :null,\r\n reportOpen: false,\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null,\r\n },\r\n sharedValues: ['addOpen', 'editOpen', 'editInfo', 'allgriddata', 'navigateItem', 'navigation', 'loadreportfilter', 'ReportJsonQueryStr', 'reportOpen'],\r\n aliases: {\r\n addOpen: 'addOpen',\r\n editOpen: 'editOpen',\r\n editInfo: 'editInfo',\r\n allgriddata: 'allgriddata',\r\n navigateItem: 'navigateItem',\r\n navigation: 'navigation',\r\n reportOpen: 'reportOpen',\r\n loadreportfilter: 'loadreportfilter',\r\n ReportJsonQueryStr: 'ReportJsonQueryStr'\r\n },\r\n headerProps: {\r\n title: \"Policysettings\",\r\n\r\n actions: [\r\n\r\n {\r\n type: 'fab',\r\n icon: 'clear',\r\n name: 'clear',\r\n color: 'primary',\r\n title: 'Clear Filters',\r\n menucolor: '#22a9b3',\r\n hideon: 'clear',\r\n hidevalue: false\r\n },\r\n\r\n {\r\n type: 'menu',\r\n icon: 'excel',\r\n name: 'excel',\r\n color: 'primary',\r\n title: 'Export to Excel',\r\n menucolor: '#c90685',\r\n hideon: 'excel',\r\n hidevalue: false,\r\n items: [{\r\n name: 'Export Current Page',\r\n action: 'filtercurrent'\r\n },\r\n {\r\n name: 'Export All Pages',\r\n action: 'filterall'\r\n }\r\n ]\r\n },\r\n {\r\n type: 'fab',\r\n icon: 'reports',\r\n name: 'reports',\r\n color: 'primary',\r\n title: 'Save Report',\r\n menucolor: '#C85A54',\r\n hideon: 'reports',\r\n hidevalue: false\r\n },\r\n {\r\n type: 'fab',\r\n icon: 'add',\r\n name: 'add',\r\n color: 'primary',\r\n hideon: 'addButton',\r\n hidevalue: true,\r\n title: 'Add System Templates',\r\n menucolor: '#36088a'\r\n },\r\n ]\r\n },\r\n \"columns\": [\r\n {\r\n \"title\": \"Subject\",\r\n \"field\": \"Subject\",\r\n \"show\": true,\r\n \"width\": 250\r\n }\r\n ],\r\n displayName: 'editInfo',\r\n allgriddata: 'allgriddata',\r\n navigateItem: 'navigateItem',\r\n navigation: 'navigation',\r\n loadreportfilter: 'loadreportfilter',\r\n ReportJsonQueryStr: 'ReportJsonQueryStr',\r\n mapActionsToEffects: {\r\n load: {\r\n rules: [{\r\n run: {\r\n valid: [{\r\n type: 'grid',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Application')+`/api/EmailConfiguration/Grid?`,\r\n type: 'get',\r\n saveAs: {\r\n key: 'data'\r\n }\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n addOpen: {\r\n rules: [{\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"addOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n run: {\r\n valid: [{\r\n type: 'grid',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Application')+`/api/EmailConfiguration/Grid?`,\r\n \"matchProps\": [{\r\n name: \"routeid1\",\r\n key: \"routeid1\",\r\n }],\r\n type: 'get',\r\n saveAs: {\r\n key: 'data'\r\n }\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n editOpen: {\r\n rules: [{\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"editOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n run: {\r\n valid: [{\r\n type: 'grid',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Application')+`/api/EmailConfiguration/Grid?`,\r\n type: 'get',\r\n saveAs: {\r\n key: 'data'\r\n }\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n 'add': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'value',\r\n key: 'addOpen',\r\n result: true\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'display': {\r\n rules: [\r\n {\r\n uncheck: true,\r\n run: {\r\n valid: [\r\n {\r\n type: 'value',\r\n key: 'editOpen',\r\n result: true\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'editInfo',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'allgriddata',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'navigateItem',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'navigation',\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'report': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'value',\r\n key: 'reportOpen',\r\n result: true\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'loadreportfilter',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'ReportJsonQueryStr',\r\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 PolicysettingsReport = {\r\n type: 'popup',\r\n key: 'PolicysettingsReport',\r\n name: 'PolicysettingsReport',\r\n\r\n anchor: 'right',\r\n open: false,\r\n aliases: {\r\n open: 'reportOpen'\r\n },\r\n sharedValues: ['open', 'loadreportfilter', 'ReportJsonQueryStr'],\r\n container: {\r\n values: {\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null\r\n },\r\n mapValues: {\r\n Report: [\r\n {\r\n key: 'ReportJsonQueryStr',\r\n name: 'ReportJsonQueryStr'\r\n },\r\n {\r\n key: 'loadreportfilter',\r\n name: 'loadreportfilter'\r\n },\r\n ],\r\n },\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: '',\r\n components: [\r\n {\r\n name: 'Report'\r\n },\r\n ]\r\n }\r\n ]\r\n\r\n },\r\n components: {\r\n Report: {\r\n \"type\": \"form\",\r\n \"key\": \"Report\",\r\n \"name\": \"Report\",\r\n aliases: {\r\n\r\n },\r\n sharedValues: ['ReportJsonQueryStr', 'loadreportfilter'],\r\n values: {\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null\r\n },\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: '',\r\n components: [{\r\n name: 'ReportJsonQueryStr',\r\n type: 'div',\r\n\r\n },\r\n {\r\n name: 'loadreportfilter',\r\n type: 'div',\r\n\r\n }],\r\n\r\n },\r\n ],\r\n },\r\n \"components\": {\r\n \"ReportJsonQueryStr\": {\r\n \"type\": \"gridreport\",\r\n \"gridkey\": 'PolicysettingsGrid',\r\n },\r\n },\r\n }\r\n }\r\n }\r\n}\r\nconst PolicysettingsContainer = {\r\n type: 'container',\r\n custom: true,\r\n key: 'PolicysettingsContainer',\r\n values: {\r\n addOpen: false,\r\n editOpen: false,\r\n editInfo: null,\r\n allgriddata: null,\r\n navigateItem: null,\r\n navigation :null,\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null,\r\n reportOpen : false,\r\n },\r\n mapValues: {\r\n PolicysettingsAdd: [\r\n {\r\n key: 'addOpen',\r\n name: 'open'\r\n }\r\n ],\r\n PolicysettingsEdit: [\r\n {\r\n key: 'editOpen',\r\n name: 'open'\r\n },\r\n {\r\n key: 'editInfo',\r\n name: 'editInfo'\r\n },\r\n {\r\n key: 'allgriddata',\r\n name: 'allgriddata'\r\n },\r\n {\r\n key: 'navigateItem',\r\n name: 'navigateItem'\r\n },\r\n {\r\n key: 'navigation',\r\n name: 'navigation'\r\n },\r\n ],\r\n PolicysettingsGrid: [\r\n {\r\n key: 'editOpen',\r\n name: 'editOpen'\r\n },\r\n {\r\n key: 'addOpen',\r\n name: 'addOpen'\r\n },\r\n {\r\n key: 'reportOpen',\r\n name: 'reportOpen'\r\n },\r\n {\r\n key: 'ReportJsonQueryStr',\r\n name: 'ReportJsonQueryStr'\r\n },\r\n {\r\n key: 'loadreportfilter',\r\n name: 'loadreportfilter'\r\n },\r\n ],\r\n PolicysettingsReport: [\r\n {\r\n key: 'reportOpen',\r\n name: 'open'\r\n },\r\n {\r\n key: 'loadreportfilter',\r\n name: 'loadreportfilter'\r\n },\r\n {\r\n key: 'ReportJsonQueryStr',\r\n name: 'ReportJsonQueryStr'\r\n },\r\n\r\n ]\r\n\r\n },\r\n mapActionsToEffects: {\r\n 'addOpen': {\r\n rules: [\r\n {\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"addOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n uncheck: true,\r\n run: {\r\n valid: [\r\n {\r\n type: 'removelayout',\r\n name: 'PolicysettingsAdd',\r\n }\r\n\r\n ],\r\n inValid: [\r\n {\r\n type: 'addlayout',\r\n name: 'PolicysettingsAdd',\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'editOpen': {\r\n rules: [\r\n {\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"editOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n uncheck: true,\r\n run: {\r\n valid: [\r\n {\r\n type: 'removelayout',\r\n name: 'PolicysettingsEdit',\r\n }\r\n\r\n ],\r\n inValid: [\r\n {\r\n type: 'addlayout',\r\n name: 'PolicysettingsEdit',\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'reportOpen': {\r\n rules: [\r\n {\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"reportOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n uncheck: true,\r\n run: {\r\n valid: [\r\n {\r\n type: 'removelayout',\r\n name: 'PolicysettingsReport',\r\n }\r\n\r\n ],\r\n inValid: [\r\n {\r\n type: 'addlayout',\r\n name: 'PolicysettingsReport',\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n },\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [\r\n {\r\n name: 'PolicysettingsGrid'\r\n },\r\n ]\r\n }\r\n ]\r\n\r\n },\r\n components: {\r\n PolicysettingsGrid: PolicysettingsGrid,\r\n PolicysettingsAdd: PolicysettingsAdd,\r\n PolicysettingsEdit: PolicysettingsEdit,\r\n PolicysettingsReport:PolicysettingsReport\r\n }\r\n}\r\n\r\n\r\nexport default PolicysettingsContainer\r\n\r\n","import SettingstabView from '../settings/settingstabview'\r\nimport { getEnvVariable } from '../../../modules/environmentalList';\r\n const Settingstab = {\r\n type: 'container',\r\n key: 'Settingstab',\r\n name: 'Settingstab',\r\n values: {\r\n },\r\n mapValues: {\r\n },\r\n mapActionsToEffects: {\r\n\r\n },\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row w-100',\r\n components: [\r\n {\r\n name: 'SettingsHeader',\r\n type: 'div',\r\n className: 'col-12 ',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12 ',\r\n }\r\n },\r\n {\r\n name: 'SettingstabView',\r\n type: 'div',\r\n className: 'col-12 mx-3',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12 mx-3',\r\n }\r\n },\r\n ]\r\n }\r\n ]\r\n\r\n },\r\n components: {\r\n SettingsHeader: {\r\n name: \"SettingsHeader\",\r\n type: 'kendoheader',\r\n title: \"Settings\",\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": `Site Settings`, \"tab\": 3, \"materialicon\": \"engineering\", href: getEnvVariable('InternalBasepath'), className: 'breadcrumb-item text-dark', class: 'text-dark' },\r\n { \"link\": \"Configurations\", href: \"#/Administration/settings\", \"materialicon\": \"settings_suggest\", className: 'breadcrumb-item ', class: '' }\r\n ],\r\n }\r\n ],\r\n layout: {},\r\n actions: [\r\n ],\r\n },\r\n\r\n SettingstabView: SettingstabView\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\nexport default Settingstab","import React, { Fragment, useEffect, useRef } from \"react\"\r\nimport settingsgrid from '../../jsons/settings/settingsgrid';\r\nimport Container from '../../../core/controls/components/container'\r\n\r\n\r\nconst SettingsContainer = () => {\r\n\r\n return (\r\n <Fragment>\r\n <Container {...settingsgrid} />\r\n </Fragment>\r\n )\r\n}\r\nexport default SettingsContainer","/**\r\n *********************************************************\r\n Description:Simple grid to display columns from individual components without json format\r\n Required props: type.\r\n limitations : just displays the grid data.\r\n *********************************************************\r\n**/\r\n\r\nimport { process } from '@progress/kendo-data-query';\r\nimport { Grid, GridColumn } from '@progress/kendo-react-grid';\r\nimport * as React from 'react';\r\nimport ReactResizeDetector from 'react-resize-detector';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { CustomColumnMenu } from '../Grid/customColumnMenu.jsx';\r\nimport { getData } from '../rest';\r\n\r\nclass SimpleGrid extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n dataState: { skip: 0, take: 20 },\r\n data: [],\r\n columns: this.props.gridFields || []\r\n };\r\n }\r\n\r\n\r\n componentDidMount() {\r\n if (this.props.rules)\r\n this.setState({ data: this.props.data })\r\n else this.getResults();\r\n }\r\n\r\n getResults = () => {\r\n getData(this.props.url).then(res => {\r\n this.setState({ data: res })\r\n }).catch(ex => {\r\n console.log(ex)\r\n })\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (!this.props.rules && (prevProps.url !== this.props.url)) {\r\n this.getResults();\r\n }\r\n }\r\n\r\n handleDataStateChange = (changeEvent) => {\r\n this.setState({\r\n dataState: changeEvent.dataState,\r\n data: process(this.props.data, changeEvent.dataState),\r\n });\r\n }\r\n\r\n onColumnsSubmit = (columnsState) => {\r\n this.setState({\r\n columns: columnsState,\r\n data: this.state.data\r\n });\r\n }\r\n /**\r\n *********************************************************\r\n Description: renders the grid component.\r\n Required props: options, components. Within options gridcolumns are needed to create columns.\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n render() {\r\n const { data, columns } = this.state;\r\n return (\r\n <div className=\"p-1\">\r\n <h6 className=\"font-weight-light text-primary\">{this.props.title}</h6>\r\n <ReactResizeDetector handleWidth handleHeight>\r\n {({ width, height }) =>\r\n <Grid\r\n sortable={true}\r\n pageable={true}\r\n total={this.state.total}\r\n data={data || []}\r\n {...this.state.dataState}\r\n onDataStateChange={this.handleDataStateChange}\r\n resizable\r\n style={{ height: this.props.rules ? window.innerHeight - 110 : '350px', width: 'w-90' }}\r\n >\r\n {columns && columns.length > 0 && columns.map((each, index) => {\r\n return <GridColumn field={each.field} title={each.field} columnMenu={\r\n props =>\r\n <CustomColumnMenu\r\n {...props}\r\n columns={columns}\r\n onColumnsSubmit={this.onColumnsSubmit}\r\n />\r\n } />\r\n })}\r\n {\r\n !data || data.length === 0 && <div>No records found</div>\r\n }\r\n </Grid>}\r\n </ReactResizeDetector>\r\n </div>\r\n\r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(SimpleGrid);\r\n\r\n","import React, { useState, useEffect } from 'react'\r\nimport Button from '@material-ui/core/Button';\r\nimport { PostMutiFormData } from '../../../../controls/helpers/requests';\r\nimport KendoGrid from '../../../simplegrid'\r\nimport Drawer from '@material-ui/core/Drawer';\r\nimport Header from '../../../../controls/components/header';\r\nimport ViewComfy from '@material-ui/icons/ViewComfy';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Chip from '@material-ui/core/Chip';\r\nimport { getEnvVariable } from '../../../../../modules/environmentalList';\r\n\r\nconst header = {\r\n name: \"header\",\r\n type: 'header',\r\n title: 'Excel Data',\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": \"Excel Data\", \"materialicon\": \"excel\", className: 'eps-breadcrumb-item ', class: 'text-light' },\r\n ]\r\n }\r\n ],\r\n actions: [\r\n {\r\n type: 'icon',\r\n icon: 'back',\r\n name: 'back',\r\n hideon: 'back',\r\n hidevalue: false\r\n },\r\n ],\r\n}\r\n\r\nexport default function DynamicFilter({ result, handleDynamicResult }) {\r\n const [open, setOpen] = useState(false)\r\n const [columns, setColumns] = useState([])\r\n\r\n const handleExcelSave = () => {\r\n let url = getEnvVariable('AdminConfig')+`/api/BusinessRules/UploadFile?businessRuleId=` + (result.Id || 0)\r\n let file = document.getElementById('myFile');\r\n let formData = new FormData()\r\n formData.append(`File`, file.files[0]);\r\n PostMutiFormData(url, formData, true, true,'').then(res => {\r\n handleDynamicResult(res)\r\n // handleColumns(res)\r\n }).catch(ex => console.log(ex));\r\n }\r\n\r\n const handleBack = () => {\r\n setOpen(false)\r\n }\r\n\r\n useEffect(() => {\r\n if ((result && result.CustomDataClxn && result.CustomDataClxn.length > 0)) {\r\n let gColumns = []\r\n let colObj = result && result.CustomDataClxn.length > 0 ? result.CustomDataClxn : null;\r\n if (colObj) {\r\n (Object.getOwnPropertyNames(colObj[0])).map(res => {\r\n gColumns.push({ field: res, show: true, title: res })\r\n })\r\n setColumns(gColumns)\r\n }\r\n }\r\n }, [open])\r\n\r\n const addOnsByName = { addOnsByName: { back: { onClick: handleBack } } }\r\n\r\n return <div className=\"col-sm-12 row \">\r\n <div className=\"row col-sm-12 pb-2\">\r\n <Button variant=\"contained\" color=\"primary\" component=\"label\" >Upload Excel File<input type=\"file\" id=\"myFile\" accept=\".xlsx, .xls, .csv\" style={{ display: \"none\" }} onChange={handleExcelSave} /> </Button>\r\n {(result && result.CustomDataClxn && result.CustomDataClxn.length > 0) &&\r\n <div>\r\n <Chip color=\"primary\" size=\"small\" label={'Uploaded'} /> \r\n <IconButton color=\"primary\" onClick={() => { setOpen(true) }} size=\"small\" title={'View Imported Details'}> <ViewComfy /> </IconButton>\r\n {open && columns.length > 0 &&\r\n <Drawer anchor={'right'}\r\n disableEnforceFocus={true}\r\n disableAutoFocus={true}\r\n open={open} onClose={() => setOpen(false)}\r\n PaperProps={{ style: { width: (window.innerWidth / 2) } }}>\r\n <Header {...header} {...addOnsByName} />\r\n {(result && result.CustomDataClxn && result.CustomDataClxn.length > 0) &&\r\n <KendoGrid data={result.CustomDataClxn} gridFields={columns} rules={true} />}\r\n </Drawer>\r\n }\r\n </div>\r\n } </div>\r\n </div >\r\n}","import React, { useState, useEffect, Fragment } from 'react';\r\nimport Switch from '../../../../controls/components/switch';\r\nimport Dropdown from '../../../../controls/components/dropdown';\r\nimport { createRequest, requestApi } from '../../../../controls/helpers/rest';\r\nimport { useParams } from 'react-router-dom';\r\nimport MultiCheckAutoComplete from '../../../../controls/components/checkautocomplete';\r\nimport { getEnvVariable } from '../../../../../modules/environmentalList'\r\nimport RadioButtonsGroup from '../../../../controls/components/radiogroup';\r\nimport Scheduler from '../../../form/cscheduler';\r\n\r\nconst transformProps = {\r\n \"Y\": true,\r\n \"N\": false,\r\n true: \"Y\",\r\n false: \"N\"\r\n}\r\n\r\n\r\nconst extraProps = {\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Value'\r\n },\r\n}\r\n\r\n\r\n\r\nexport default function ExtraProperties({ result, section, handleFieldValue, isSidebar = false }) {\r\n const [notifications, setNotifications] = useState([]);\r\n const [notices, setNotices] = useState([]);\r\n const [alerts, setAlerts] = useState([]);\r\n const [rules, setRules] = useState([]);\r\n const [eventsList, setEvents] = useState([])\r\n const [message_types, setMessagetype] = useState([])\r\n const params = useParams()\r\n const [reports, setReports] = useState([])\r\n\r\n useEffect(() => {\r\n const read = [\r\n { //\r\n url: getEnvVariable('AdminConfig') + `/api/ProjectMessages/RulesByName?name=Module.BUSINESS_RULES_ALERTS`,\r\n type: 'get'\r\n },\r\n {\r\n url: getEnvVariable('Admin') + `/api/NoticeTypes/All${params.routeid ? '/' + params.routeid : ''}/Active`,\r\n type: 'get'\r\n },\r\n {\r\n url: params.routeid ? getEnvVariable('Notification') + `/api/NotificationSettings/AllByType/${params.routeid}/BUSINESS_RULES_NOTIFICATION` :\r\n getEnvVariable('Notification') + `/api/NotificationSettings/All/Active`,\r\n type: 'get'\r\n },\r\n {\r\n url: getEnvVariable('AdminConfig') + `/api/Domains/values?domainkey=APPLICATION_TYPES_EVENTS&domainid=0`,\r\n type: 'get'\r\n },\r\n {\r\n url: getEnvVariable('AdminConfig') + `/api/Domains/values?domainkey=PROJECT_MESSAGE_TYPE&domainid=0`,\r\n type: 'get'\r\n },\r\n {\r\n url: getEnvVariable('Report') + `/api/Reports/All`,\r\n type: 'get'\r\n },\r\n ];\r\n if (isSidebar === false) {\r\n read.push({\r\n url: section && section.Id ? getEnvVariable('AdminConfig') + `/api/BusinessRules/${params.routeid}/All?sitePermitTypeSectionId=${section.Id}` :\r\n getEnvVariable('AdminConfig') + `/api/BusinessRules/${params.routeid}/All`,\r\n type: 'get'\r\n })\r\n }\r\n else read.push({\r\n url: getEnvVariable('Admin') + `/api/SystemSystemBusinessRules/All?tableName=${result.TableName}`,\r\n type: 'get'\r\n })\r\n Promise.all(read.map(each => requestApi(createRequest(each, {})).catch(error => { return error; }))).then(response => {\r\n let [alerts, notices, notifications, eventlist, messagetypes, reportlist, rules = []] = response;\r\n let noneItem = { \"Message\": \"None\", \"Id\": 0, 'ID': 0, Name: 'None', ProjectMessageId: 0, }\r\n alerts.unshift(noneItem)\r\n notices.unshift(noneItem)\r\n Array.isArray(notifications) && notifications.unshift(noneItem)\r\n rules.unshift(noneItem)\r\n setNotifications(notifications || [])\r\n setNotices(notices)\r\n setAlerts(alerts)\r\n setRules(rules)\r\n setEvents(eventlist)\r\n setMessagetype(messagetypes)\r\n setReports(reportlist)\r\n }).catch(ex => {\r\n console.error(ex)\r\n })\r\n }, [])\r\n\r\n\r\n const handleChange = (event) => {\r\n const { name, value } = event.target;\r\n let val = value\r\n if ((name === 'CanOverwriteGlobalRule') || (name === 'IsTriggerAnotherRuleOnFailure')) {\r\n val = (event.target.checked) ? 'Y' : 'N'\r\n }\r\n handleFieldValue({ target: { value: val, name: name, checked: false }, currentTarget: { dataset: null } })\r\n }\r\n\r\n\r\n return (\r\n <div>\r\n {!isSidebar && <RadioButtonsGroup handleFieldValue={handleChange} name={'EventType'} extraProps={extraProps} value={result.EventType || 'E'}\r\n items={[{ Name: 'On Event', Value: 'E' },\r\n { Name: 'On Schedule', Value: 'S' }]} />}\r\n {((result && result.EventType === 'E') || isSidebar) && <Fragment>\r\n <MultiCheckAutoComplete label={'Trigger On'} name={'EventOn'} ismulti={true} value={result.EventOn} extraProps={{\r\n transformProps: { label: 'Name', value: 'Value' },\r\n }} items={eventsList || []} handleFieldValue={handleChange} />\r\n <Switch label='Override Global Rule?' name=\"CanOverwriteGlobalRule\" value={(result && result.CanOverwriteGlobalRule) || 'N'} handleFieldValue={handleChange}\r\n extraProps={{\r\n transformProps: transformProps\r\n }} />\r\n {result && result.RuleType === 'S' && <div className=\"row\" >\r\n <div className=\"col-sm-6\" > <Switch name='IsTriggerAnotherRuleOnFailure' label=\"Trigger Another Rule On Failure?\"\r\n value={(result && result.IsTriggerAnotherRuleOnFailure) || null} handleFieldValue={handleChange} extraProps={{\r\n transformProps: transformProps\r\n }} />\r\n </div>\r\n {result && result['IsTriggerAnotherRuleOnFailure'] === 'Y' && <div className=\"col-sm-6\" > <Dropdown name=\"TriggerAnotherRuleOnFailure\"\r\n value={(result && result.TriggerAnotherRuleOnFailure) || 'N'} items={rules}\r\n handleFieldValue={handleChange} extraProps={{\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Id'\r\n }\r\n }} /></div>\r\n }\r\n {result && result['EventOn'].includes('E') && <div className='row col-12'>\r\n <div className=\"col-sm-4\" >\r\n <RadioButtonsGroup handleFieldValue={handleChange} label={'Pre Condition Valid/InValid'} name={'PreConditionCheck'}\r\n extraProps={extraProps} value={result.PreConditionCheck || 'V'}\r\n items={[{ Name: 'Valid', Value: 'V' },\r\n { Name: 'In-Valid', Value: 'I' }]} />\r\n </div>\r\n <div className=\"col-sm-8\" > <Dropdown name=\"PreConditionRuleId\"\r\n value={result && result.PreConditionRuleId} items={rules}\r\n label={'Pre Condition'}\r\n handleFieldValue={handleChange} extraProps={{\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Id'\r\n }\r\n }} />\r\n </div>\r\n </div>}\r\n </div>}\r\n </Fragment>}\r\n {result && result.EventType === 'S' && <Fragment>\r\n <Scheduler value={result && result.ScheduleAt || ''} name='ScheduleAt' handleFieldValue={handleChange} />\r\n </Fragment>}\r\n <div className=\"row\">\r\n <div className=\"col-sm-9\">\r\n <Dropdown label='Message' name=\"ProjectMessagesId\" value={result && result.ProjectMessagesId || \"\"} items={alerts}\r\n handleFieldValue={handleChange} extraProps={{\r\n transformProps: {\r\n label: 'Message',\r\n value: 'ProjectMessageId'\r\n }\r\n }} /> </div>\r\n <br />\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-sm-9\">\r\n <Dropdown label='Notification' name=\"NotificationSettingsId\" value={result && result.NotificationSettingsId || ''} items={notifications}\r\n handleFieldValue={handleChange} extraProps={{\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Id'\r\n }\r\n }} /> </div> <Switch label='Is Auto' name=\"NotificationSettingsIsAuto\" value={result && result.NotificationSettingsIsAuto || null} handleFieldValue={handleChange} extraProps={{\r\n transformProps: transformProps\r\n }} /><br />\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-sm-9\">\r\n <Dropdown label='Notice' name=\"NoticesId\" value={(result && result.NoticesId) || ''} items={notices}\r\n handleFieldValue={handleChange} extraProps={{\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Id'\r\n }\r\n }} /> </div> <Switch label='Is Auto' name=\"NoticesIsAuto\" value={result && result.NoticesIsAuto || ''} handleFieldValue={handleChange} extraProps={{\r\n transformProps: transformProps\r\n }} /><br />\r\n </div>\r\n {/* <div className=\"row\">\r\n <div className=\"col-sm-9\">\r\n <Dropdown label='Reports' name=\"ReportId \" value={result && result.ReportId || ''} items={reports}\r\n handleFieldValue={handleChange} extraProps={{\r\n transformProps: {\r\n label: 'Description',\r\n value: 'Id'\r\n }\r\n }} /> </div> <Switch label='Is Auto' name=\"ReportIsAuto \" value={result && result.ReportIsAuto || null} handleFieldValue={handleChange} extraProps={{\r\n transformProps: transformProps\r\n }} /><br />\r\n </div> */}\r\n {/* {result && result.EventType === 'S' && <div className=\"row\">\r\n <div className=\"col-sm-9\">\r\n <Dropdown label='Reports' name=\"ReportId\" value={result && result.ReportId || null} items={reports}\r\n handleFieldValue={handleChange} extraProps={{\r\n transformProps: {\r\n label: 'Description',\r\n value: 'Id'\r\n }\r\n }} /> </div>\r\n\r\n <br />\r\n </div>} */}\r\n </div>\r\n );\r\n}\r\n\r\n\r\n//.filter(each =>!(each.EventTriggerOn.includes('OC') || each.EventTriggerOn.includes('OL') || each.EventTriggerOn.includes('AS')))","import React, { useState, useCallback } from 'react'\r\nimport Drawer from '@material-ui/core/Drawer';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormGroup from '@material-ui/core/FormGroup';\r\nimport RadioGroup from '@material-ui/core/RadioGroup';\r\nimport Radio from '@material-ui/core/Radio';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Switch from '@material-ui/core/Switch';\r\nimport Header from '../../../../controls/components/header';\r\nimport Select from '@material-ui/core/Select';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Editor from './editor';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport MultiCheckAutoComplete from '../../../../controls/components/checkautocomplete';\r\nimport withWidth from '@material-ui/core/withWidth';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { MuiPickersUtilsProvider, KeyboardDatePicker } from '@material-ui/pickers';\r\nimport MomentUtils from '@date-io/moment';\r\nimport moment from \"moment\";\r\nimport Dropdown from '../../../../controls/components/dropdown';\r\nimport RadioButtonsGroup from '../../../../controls/components/radiogroup';\r\n\r\nconst defaultDrawerWidth = 900;\r\nconst minDrawerWidth = 700;\r\nconst maxDrawerWidth = window.innerWidth - 220;\r\nconst fullscreenwidth = window.innerWidth\r\nconst checkwidth = 960\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n drawer: {\r\n flexShrink: 0\r\n },\r\n dragger: {\r\n width: \"7px\",\r\n cursor: \"ew-resize\",\r\n padding: \"4px 0 0\",\r\n borderTop: \"1px solid #ddd\",\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n bottom: 0,\r\n zIndex: 100,\r\n // backgroundColor: \"#f4f7f9\"\r\n }\r\n}));\r\n\r\nconst extraProps = {\r\n transformProps: {\r\n label: 'name',\r\n value: 'value'\r\n },\r\n}\r\n\r\nconst header = {\r\n name: \"header\",\r\n type: 'header',\r\n title: 'Field Settings',\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": \"Field Settings\", \"materialicon\": \"dns\", className: 'eps-breadcrumb-item ', class: 'text-light' },\r\n ]\r\n }\r\n ],\r\n actions: [\r\n {\r\n type: 'icon',\r\n icon: 'back',\r\n name: 'back',\r\n hideon: 'back',\r\n hidevalue: false\r\n },\r\n ],\r\n}\r\n\r\n\r\n\r\nconst FieldSettings = (props) => {\r\n let screensize = (props.width === \"sm\" || props.width === \"xs\" || props.width === \"md\") ? false : true\r\n const [drawerWidth, setDrawerWidth] = useState((props.width === \"sm\" || props.width === \"xs\" || props.width === \"md\") ? fullscreenwidth : defaultDrawerWidth);\r\n const [fullscreen, setFullScreen] = useState(false)\r\n const [fullwidth, setFullWidth] = useState(fullscreenwidth)\r\n\r\n React.useEffect(() => {\r\n window.addEventListener(\"resize\", updateWidth);\r\n return () => window.removeEventListener(\"resize\", updateWidth);\r\n });\r\n\r\n\r\n const updateWidth = () => {\r\n if (window.innerWidth < checkwidth) {\r\n setDrawerWidth(window.innerWidth);\r\n }\r\n else {\r\n setDrawerWidth(defaultDrawerWidth)\r\n }\r\n };\r\n\r\n React.useEffect(() => {\r\n if (!screensize) {\r\n let width = window.innerWidth\r\n setDrawerWidth(width);\r\n setFullWidth(width)\r\n }\r\n else {\r\n setDrawerWidth(defaultDrawerWidth);\r\n // setFullWidth(defaultDrawerWidth)\r\n }\r\n }, [props.width]);\r\n\r\n\r\n const handleMouseDown = e => {\r\n document.addEventListener(\"mouseup\", handleMouseUp, true);\r\n document.addEventListener(\"mousemove\", handleMouseMove, true);\r\n };\r\n\r\n const handleMouseUp = () => {\r\n document.removeEventListener(\"mouseup\", handleMouseUp, true);\r\n document.removeEventListener(\"mousemove\", handleMouseMove, true);\r\n };\r\n\r\n const handleMouseMove = useCallback(e => {\r\n let newWidth =\r\n document.body.offsetWidth - (e.clientX - document.body.offsetLeft);\r\n // const newWidth = e.clientX - document.body.offsetLeft;\r\n if (newWidth > minDrawerWidth && newWidth < maxDrawerWidth) {\r\n setDrawerWidth(newWidth);\r\n }\r\n }, []);\r\n\r\n const handleBack = () => {\r\n props.closeFieldSettings()\r\n }\r\n\r\n const addOnsByName = { addOnsByName: { back: { onClick: handleBack } } }\r\n const handleCheckChange = (name, event) => {\r\n const { validresultset, fields } = props\r\n props.fieldSettingsValue({ target: { value: event.target.checked ? 'Y' : 'N', name: name, checked: false }, currentTarget: { dataset: null } })\r\n };\r\n\r\n const handleCheckGroupChange = (name, event, value) => {\r\n props.fieldSettingsValue({ target: { value: value, name: name, checked: false }, currentTarget: { dataset: null } })\r\n };\r\n\r\n const handleDateChange = (date) => {\r\n const { validresultset, fields } = props\r\n props.fieldSettingsValue({ target: { value: moment(date).format('MM/DD/YYYY'), name: 'Value', checked: false }, currentTarget: { dataset: null } })\r\n }\r\n\r\n const handleCurrentDateChange = (e) => {\r\n const { value, name, checked } = e.target\r\n props.fieldSettingsValue({ target: { value: checked === true ? JSON.stringify({ 'CurrentDefaultDate': 'Y' }) : null, name: 'AllowedValues', checked: false }, currentTarget: { dataset: null } })\r\n }\r\n\r\n const classes = useStyles();\r\n return (\r\n <Drawer anchor={'right'} open={props.fieldopen} onClose={() => props.closeFieldSettings()}\r\n PaperProps={{ style: { width: fullscreen ? fullwidth : drawerWidth } }}\r\n >\r\n <div onMouseDown={e => handleMouseDown(e)} className={classes.dragger} />\r\n <Header {...header} {...addOnsByName} />\r\n <div className=\"row m-2\">\r\n {(props.type === 'select' || props.type === 'radio' || props.type === 'checkboxgroup') && <FormControl fullWidth={true}>\r\n <MultiCheckAutoComplete extraProps={extraProps} ismulti={true} className=\"col-sm-12\" label={'Filter Lookup'} name=\"\"\r\n value={(props && props['AllowedValues']) || ''} items={props.values || []}\r\n handleFieldValue={(evt) => props.fieldSettingsValue({ target: { value: evt.target.value, name: 'AllowedValues', checked: false }, currentTarget: { dataset: null } })} />\r\n </FormControl>}\r\n <FormControl fullWidth={true}>\r\n <RadioButtonsGroup label=\"\" value={props.ValueType || 'D'} name=\"ValueType\" items={[\r\n { Name: 'Calculated', Value: 'C' },\r\n { Name: 'Default', Value: 'D' },\r\n { Name: 'Reset', Value: 'R' },\r\n { Name: 'None', Value: 'Z' }\r\n ]} extraProps={{\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Value'\r\n }\r\n }} handleFieldValue={props.fieldSettingsValue} />\r\n {/* // <FormGroup row> */}\r\n {/* <FormControlLabel\r\n control={<Switch checked={props.ValueType === 'D'} name=\"ValueType\" />}\r\n label=\"Default Value\"\r\n onChange={(event) => props.fieldSettingsValue({\r\n target: { value: event.target.checked ? 'D' : 'N', name: 'ValueType', checked: false },\r\n currentTarget: { dataset: null }\r\n })}\r\n /> */}\r\n {/* <FormControlLabel\r\n control={<Switch checked={props.ValueType === 'C'} name=\"ValueType\" />}\r\n label=\"Calculated Value\"\r\n onChange={(event) => props.fieldSettingsValue({\r\n target: { value: event.target.checked ? 'C' : 'N', name: 'ValueType', checked: false },\r\n currentTarget: { dataset: null }\r\n })}\r\n /> */}\r\n {/* <FormControlLabel\r\n control={<Switch checked={props.ValueType === 'R'} name=\"ValueType\" />}\r\n label=\"Reset Value\"\r\n onChange={(event) => props.fieldSettingsValue({\r\n target: { value: event.target.checked ? 'C' : 'N', name: 'ValueType', checked: false },\r\n currentTarget: { dataset: null }\r\n })}\r\n /> */}\r\n {/* </FormGroup> */}\r\n </FormControl>\r\n {props.ValueType === 'D' && <CustomComponents defaultValue={props.Value} handleChange={(e) => { props.fieldSettingsValue({ target: { value: e.target.value, name: 'Value', checked: false }, currentTarget: { dataset: null } }) }}\r\n handleCheckChange={(e) => handleCheckChange('Value', e)} AllowedValues={props['AllowedValues']}\r\n handleCheckGroupChange={(e, value) => handleCheckGroupChange('Value', e, value)} handleDateChange={handleDateChange}\r\n handleCurrentDateChange={handleCurrentDateChange} type={props.type} values={props.values} />\r\n }\r\n {props.ValueType === 'C' && <Editor items={[7, 8, 9, '+', '>', 4, 5, 6, '-', '<', 1, 2, 3, '/', '=', 0, '.', '[', ']', '*', '(', ')', '%', 'del', 'Insert']}\r\n rows={6} options={props.allfields.filter(fld => fld.type === 'number' || fld.name === 'PREVIOUS_STATUS')} Value={props.Value} changeValue={(value) => { props.fieldSettingsValue({ target: { value: value, name: 'Value', checked: false }, currentTarget: { dataset: null } }) }} />}\r\n </div>\r\n </Drawer>\r\n )\r\n}\r\n\r\nexport default withWidth()(FieldSettings)\r\n\r\n\r\nconst CustomComponents = (props) => {\r\n const { defaultValue, AllowedValues, type, values, handleChange, handleCheckChange, handleCheckGroupChange, handleDateChange, handleCurrentDateChange } = props\r\n switch (type) {\r\n case 'text':\r\n return <TextField className=\"col-sm-12\" type={type} value={defaultValue} onChange={(e) => props.handleChange(e)} />\r\n case 'radio':\r\n return <div className=\"col-sm-12\">\r\n {values && values.length > 0 && values.map(vals => {\r\n return <RadioGroup className=\"col-sm-12\" value={defaultValue} onChange={props.handleChange} >\r\n <FormControlLabel className=\"col-sm-6\" value={vals.value} control={<Radio />} label={vals.name} />\r\n </RadioGroup>\r\n })}\r\n {values && values.length === 0 && <RadioGroup className=\"col-sm-12\" value={defaultValue} onChange={(e) => handleChange(e)} >\r\n <FormControlLabel labelPlacement=\"end\" value={'Y'} control={<Radio />} className=\"col-sm-6\" label={'Yes'} />\r\n <FormControlLabel labelPlacement=\"end\" value={'N'} control={<Radio />} className=\"col-sm-6\" label={'No'} />\r\n </RadioGroup>\r\n }\r\n </div>\r\n case 'select':\r\n return <div className=\"col-sm-12\">\r\n <Select className=\"col-sm-12\" value={defaultValue} onChange={(e) => handleChange(e)} >\r\n <MenuItem value={\"\"}>{''}</MenuItem>\r\n {values && values.length > 0 && values.map(vals => {\r\n return <MenuItem value={vals.value}>{vals.name}</MenuItem>\r\n })}\r\n\r\n </Select>\r\n </div>\r\n case 'checkbox':\r\n return <div className=\"col-sm-12\">\r\n <FormControlLabel\r\n control={\r\n <Checkbox\r\n checked={(defaultValue === 'Y' || defaultValue === true) ? true : false}\r\n onChange={(e) => handleCheckChange(e)}\r\n color=\"primary\"\r\n className=\"col-sm-12\"\r\n\r\n />\r\n }\r\n />\r\n </div>\r\n case 'checkboxgroup':\r\n return <div className=\"col-sm-12\">\r\n <FormGroup>\r\n {values && values.length > 0 && values.map(vals => {\r\n return <FormControlLabel\r\n control={<Checkbox checked={vals.value === defaultValue} onChange={(e) => handleCheckGroupChange(e, vals.value)} name={vals.name} />}\r\n label={vals.name}\r\n />\r\n })}\r\n </FormGroup>\r\n </div>\r\n case 'date':\r\n return <div className=\"col-sm-12\">\r\n <MuiPickersUtilsProvider utils={MomentUtils}>\r\n <KeyboardDatePicker\r\n disableToolbar\r\n\r\n variant=\"inline\"\r\n format=\"MM/DD/YYYY\"\r\n margin=\"normal\"\r\n value={defaultValue === '' ? null : defaultValue}\r\n onChange={handleDateChange}\r\n KeyboardButtonProps={{\r\n 'aria-label': 'change date',\r\n }}\r\n />\r\n </MuiPickersUtilsProvider>\r\n <br />\r\n <FormControlLabel\r\n control={\r\n <Checkbox\r\n name={'AllowedValues'}\r\n checked={AllowedValues ? true : false}\r\n onChange={(e) => handleCurrentDateChange(e)}\r\n color=\"primary\"\r\n />\r\n }\r\n label={'Set Current Date'}\r\n />\r\n </div>\r\n default:\r\n return <TextField className=\"col-sm-12\" type={type || 'text'} value={defaultValue} onChange={(e) => props.handleChange(e)} />\r\n }\r\n}","import React, { useState, Fragment } from 'react'\r\nimport CheckBox from '../../../../controls/components/checkbox';\r\nimport Dropdown from '../../../../controls/components/dropdown';\r\nimport FieldSettings from './fieldsettings';\r\nimport DNSIcon from '@material-ui/icons/Dns'\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport ConfirmationDialog from \"../../../../controls/components/confirmationPopup\";\r\n\r\nconst transformProps = {\r\n transformProps: {\r\n \"Y\": true,\r\n \"N\": false,\r\n true: \"Y\",\r\n false: \"N\"\r\n }\r\n}\r\n\r\nexport default function ViewFields({ values, type, viewResults, handleDelete, fields, handleFieldValue, isLabel, isSidebar = false }) {\r\n const [open, setOpen] = useState(false)\r\n const [confirmation, setConfirmation] = useState(false)\r\n const EachResultChange = (event) => {\r\n let newSet = viewResults\r\n const { name, value } = event.target;\r\n if (name === 'IsVisible') {\r\n newSet['IsRequired'] = !event.target.checked ? 'N' : newSet['IsRequired']\r\n newSet['IsEnabled'] = !event.target.checked ? 'N' : newSet['IsEnabled']\r\n }\r\n if (name === 'IsEnabled') {\r\n newSet['IsRequired'] = !event.target.checked ? 'N' : newSet['IsRequired']\r\n }\r\n let each = null\r\n if (viewResults && viewResults.MasterFieldId)\r\n each = fields.find(each => each.id === viewResults.MasterFieldId)\r\n if (each && each.isVirtual) {\r\n newSet['IsVirtual'] = true;\r\n newSet['ColumnName'] = each.name;\r\n newSet['MasterFieldId']= null\r\n newSet['MasterFieldName']= each.name\r\n }\r\n else newSet['SystemBusinessRuleFieldId'] = null;\r\n newSet[name] = event.target.checked ? 'Y' : 'N'\r\n handleFieldValue(newSet)\r\n }\r\n\r\n const handleFieldSettings = (event) => {\r\n let newSet = viewResults\r\n const { name, value } = event.target;\r\n newSet[name] = value\r\n handleFieldValue(newSet)\r\n }\r\n\r\n const ConfirmDelete = () => {\r\n handleDelete(viewResults)\r\n setConfirmation(false);\r\n }\r\n\r\n const handleCancelDelete = () => {\r\n setConfirmation(false);\r\n }\r\n const Delete = () => {\r\n setConfirmation(true);\r\n }\r\n\r\n let selectValues = (fields && fields.length > 0) && (fields.find(f => viewResults.SystemBusinessRuleId ?\r\n f.name === viewResults.FieldName : f.id === parseInt(viewResults.MasterFieldId)));\r\n\r\n let viewFieldType = 'text'\r\n if (viewResults) {\r\n if (viewResults.SystemBusinessRuleId)\r\n viewFieldType = fields && fields.length > 0 && (fields.find(f => (f.id === viewResults.FieldName)) || {}).editorType\r\n else viewFieldType = fields && fields.length > 0 && (fields.find(f => (f.id === viewResults.MasterFieldId)) || {}).editorType\r\n }\r\n return (<div className=\"col-sm-12\">\r\n <div className=\"row col-sm-12\">\r\n <div className=\"col-sm-5 text-secondary\">\r\n {isLabel ? 'Name' : null} {isLabel && <br />}\r\n {viewResults.MasterFieldId ?\r\n <small> {fields && fields.length > 0 && fields.map(menu => { if (viewResults.isVirtual ? (viewResults.MasterFieldName) : (parseInt(viewResults.MasterFieldId)) === (viewResults.isVirtual ? menu.ColumnName : menu.id)) return menu.label })}</small>\r\n : <small>{viewResults.FieldName}</small>}\r\n </div>\r\n <small className=\"col-sm-2\" >\r\n <CheckBox labelPlacement=\"top\" name=\"IsVisible\" label={isLabel ? 'Show' : null} handleFieldValue={EachResultChange} value={viewResults && viewResults.IsVisible} extraProps={transformProps} />\r\n </small>\r\n <div className=\"col-sm-3 row\">\r\n <div className=\"row\"><small className=\"col-sm-7\">\r\n <CheckBox labelPlacement=\"top\" label={isLabel ? 'Enabled' : null} name=\"IsEnabled\" disabled={viewResults.IsVisible && viewResults.IsVisible == 'Y' ? false : true} handleFieldValue={EachResultChange} value={viewResults && viewResults.IsEnabled} extraProps={transformProps} /></small>\r\n <small className=\"col-sm-4\">\r\n <CheckBox labelPlacement=\"top\" handleFieldValue={EachResultChange} disabled={viewResults.IsVisible && viewResults.IsVisible === 'Y' ? (viewResults.IsEnabled && viewResults.IsEnabled == 'Y' ? false : true) : true} label={isLabel ? 'Required' : null}\r\n name=\"IsRequired\" extraProps={transformProps} value={viewResults && viewResults.IsRequired} />\r\n </small>\r\n </div>\r\n </div>\r\n {((viewResults && (viewResults.MasterFieldId || viewResults.SystemBusinessRuleId)) || open) && <FieldSettings\r\n values={(selectValues && selectValues.values) ? selectValues.values : []}\r\n type={viewFieldType || 'text'}\r\n {...viewResults} fieldopen={open} allfields={fields}\r\n closeFieldSettings={() => { setOpen(false) }} fieldSettingsValue={handleFieldSettings} />\r\n }\r\n <label htmlFor=\"icon-button-file\" className={isLabel ? \"col-sm-2 pt-4 text-center\" : \"col-sm-2 text-center\"}>\r\n <IconButton color=\"primary\" component=\"span\" onClick={() => { setOpen(true) }} > <DNSIcon /></IconButton>\r\n {!isSidebar && <IconButton color=\"primary\" aria-label=\"upload picture\" component=\"span\" onClick={() => Delete()}><DeleteIcon /> </IconButton>}\r\n {confirmation && <ConfirmationDialog value={confirmation} title=\"Are you sure you want to delete?\" onSubmit={ConfirmDelete} onClose={handleCancelDelete} />}\r\n </label>\r\n </div>\r\n </div >)\r\n}","import React, { useState, Fragment } from 'react'\r\nimport CheckBox from '../../../../controls/components/checkbox';\r\nimport Dropdown from '../../../../controls/components/dropdown';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport SaveIcon from '@material-ui/icons/Save';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport FieldSettings from './fieldsettings';\r\nimport DNSIcon from '@material-ui/icons/Dns'\r\nimport MultiCheckAutoComplete from '../../../../controls/components/checkautocomplete';\r\n\r\nconst transformProps = {\r\n transformProps: {\r\n \"Y\": true,\r\n \"N\": false,\r\n true: \"Y\",\r\n false: \"N\"\r\n }\r\n}\r\n\r\nexport default function ViewFields({ fields, handleFieldValue, ruleType, handleClose }) {\r\n\r\n const [selected, setSelected] = useState({ AllowedValues: null, ValueType: 'N', Value: null, IsEnabled: 'Y', IsVisible: 'Y', RuleType: ruleType, Status: 'A', IsRequired: 'Y', MasterFieldId: null, MasterFieldName: null, IsVirtual: false, MasterFieldName: null })\r\n const [reload, setReload] = useState(false)\r\n const [open, setOpen] = useState(false)\r\n\r\n\r\n const EachResultChange = (event) => {\r\n let newSet = selected\r\n const { name, value } = event.target;\r\n if (name === 'IsVisible') {\r\n newSet['IsRequired'] = !event.target.checked ? 'N' : newSet['IsRequired']\r\n newSet['IsEnabled'] = !event.target.checked ? 'N' : newSet['IsEnabled']\r\n }\r\n if (name === 'IsEnabled') {\r\n newSet['IsRequired'] = !event.target.checked ? 'N' : newSet['IsRequired']\r\n }\r\n let each = fields.find(each => each.id === selected.MasterFieldId)\r\n if (each && each.isVirtual) {\r\n newSet['IsVirtual'] = true;\r\n newSet['ColumnName'] = each.name;\r\n newSet['MasterFieldId']= null\r\n newSet['MasterFieldName']= each.name\r\n }\r\n else newSet['SystemBusinessRuleFieldId'] = null;\r\n newSet[name] = event.target.checked ? 'Y' : 'N'\r\n setSelected(newSet)\r\n setReload(!reload)\r\n }\r\n\r\n const EachDropResultChange = (event) => {\r\n let newSet = selected\r\n const { name, value } = event.target;\r\n newSet[name] = value;\r\n let each = fields.find(each => each.id === value)\r\n if(each && each.name){\r\n newSet['FieldName'] = each.name;\r\n }\r\n if (each && each.isVirtual) {\r\n newSet['IsVirtual'] = true;\r\n newSet['ColumnName'] = each.name;\r\n newSet['MasterFieldId']= null\r\n newSet['MasterFieldName']= each.name\r\n }\r\n else newSet['SystemBusinessRuleFieldId'] = null;\r\n setSelected(newSet)\r\n setReload(!reload)\r\n }\r\n\r\n return (<div className=\"col-sm-12\">\r\n {reload}\r\n <div className=\"row col-sm-12\">\r\n {<small className=\"col-sm-5 text-secondary\">\r\n <MultiCheckAutoComplete label={'Name'} ismulti={false} name={'MasterFieldId'} value={selected && (selected.MasterFieldId || selected.MasterFieldName) || null} items={fields || []} extraProps={{\r\n transformProps: selected.MasterFieldName ? {\r\n label: 'label',\r\n value: 'name'\r\n } : {\r\n label: 'label',\r\n value: 'id'\r\n }\r\n }}\r\n handleFieldValue={EachDropResultChange} />\r\n </small>}\r\n <small className=\"col-sm-2\" >\r\n <CheckBox name=\"IsVisible\" label={'Show'} labelPlacement=\"top\" handleFieldValue={EachResultChange} value={selected && selected.IsVisible} extraProps={transformProps} />\r\n </small>\r\n <small className=\"col-sm-3\">\r\n <div className=\"row col-sm-12\"> <div className=\"col-sm-6\"> <CheckBox disabled={selected.IsVisible && selected.IsVisible == 'Y' ? false : true} label={'Enabled'} name=\"IsEnabled\" labelPlacement=\"top\" handleFieldValue={EachResultChange} value={selected && selected.IsEnabled} extraProps={transformProps} /></div>\r\n <div className=\"col-sm-4\"> <CheckBox disabled={(selected.IsVisible && selected.IsVisible == 'Y') ? (selected.IsEnabled && selected.IsEnabled == 'Y' ? false : true) : true} handleFieldValue={EachResultChange} label={'Required'} labelPlacement=\"top\" name=\"IsRequired\" extraProps={transformProps} value={selected && selected.IsRequired} />\r\n </div></div> </small>\r\n {selected && (selected.MasterFieldId) && <FieldSettings values={fields && fields.length > 0 && fields.find(f => f.id === parseInt(selected.MasterFieldId)).values || []} type={fields && fields.length > 0 && fields.find(f => f.id === parseInt(selected.MasterFieldId)).type || 'text'} {...selected} fieldopen={open} allfields={fields} closeFieldSettings={() => { setOpen(false) }} fieldSettingsValue={EachDropResultChange} />}\r\n <div className=\"col-sm-2\">\r\n <IconButton color=\"primary\" aria-label=\"upload picture\" component=\"span\" onClick={() => { handleClose(ruleType); handleFieldValue(selected) }}><SaveIcon /></IconButton>\r\n <IconButton color=\"primary\" aria-label=\"upload picture\" component=\"span\" onClick={() => handleClose(ruleType)}><CloseIcon /></IconButton>\r\n </div>\r\n </div>\r\n </div >)\r\n}","import React, { useState, useEffect } from 'react'\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\r\nimport Accordion from '@material-ui/core/Accordion';\r\nimport AccordionDetails from '@material-ui/core/AccordionDetails';\r\nimport AccordionSummary from '@material-ui/core/AccordionSummary';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport ViewFields from './viewfields';\r\nimport ResultsCard from './addfield';\r\nimport { DeleteRecord } from '../../../../controls/helpers/requests';\r\nimport { getEnvVariable } from '../../../../../modules/environmentalList';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n // padding: 345,\r\n },\r\n heading: {\r\n fontSize: theme.typography.pxToRem(15),\r\n flexBasis: '33.33%',\r\n flexShrink: 0,\r\n },\r\n expand: {\r\n transform: 'rotate(0deg)',\r\n marginLeft: 'auto',\r\n transition: theme.transitions.create('transform', {\r\n duration: theme.transitions.duration.shortest,\r\n }),\r\n },\r\n expandOpen: {\r\n transform: 'rotate(180deg)',\r\n },\r\n}));\r\n\r\nexport default function Fields({ fields, result, handleFieldValue, isSidebar = false }) {\r\n const classes = useStyles();\r\n const [expandedvalid, setExpandedValid] = useState(true);\r\n const [expandedInvalid, setExpandedInValid] = useState(true);\r\n const [validFields, setvalidFields] = useState(fields);\r\n const [invalidFields, setinvalidFields] = useState(fields);\r\n const [validadd, setValid] = useState(false);\r\n const [invalidadd, setInvalid] = useState(false);\r\n\r\n useEffect(() => {\r\n changeBusinessFields()\r\n }, [fields])\r\n\r\n const changeBusinessFields = () => {\r\n let vbusinessrules = {}\r\n let ibusinessrules = {}\r\n result && result.BusinessRuleFields && result.BusinessRuleFields.length > 0 && result.BusinessRuleFields.map(rb => {\r\n if (rb.RuleType === 'V')\r\n vbusinessrules[rb.MasterFieldId] = rb.MasterFieldId\r\n else if (rb.RuleType === 'I')\r\n ibusinessrules[rb.MasterFieldId] = rb.MasterFieldId\r\n })\r\n\r\n if (Object.keys(vbusinessrules).length !== 0) {\r\n let valids = []\r\n fields.filter(cf => {\r\n if (!vbusinessrules[cf.id])\r\n valids.push(cf)\r\n })\r\n setvalidFields(valids)\r\n }\r\n else {\r\n setvalidFields(fields)\r\n }\r\n if (Object.keys(ibusinessrules).length !== 0) {\r\n let invalids = []\r\n fields.filter(cf => {\r\n if (!ibusinessrules[cf.id])\r\n invalids.push(cf)\r\n })\r\n setinvalidFields(invalids)\r\n }\r\n else {\r\n setinvalidFields(fields)\r\n }\r\n }\r\n\r\n const handleChange = (panel) => (event, isExpanded, type) => {\r\n if (type == 'valid')\r\n setExpandedValid(isExpanded ? panel : false);\r\n if (type == 'invalid')\r\n setExpandedInValid(isExpanded ? panel : false);\r\n };\r\n\r\n const addNewRule = (resultset) => {\r\n let temp = result\r\n if (temp && temp.BusinessRuleFields)\r\n temp.BusinessRuleFields.push(resultset)\r\n else {\r\n let business = [];\r\n business.push(resultset)\r\n temp['BusinessRuleFields'] = business\r\n }\r\n changeBusinessFields()\r\n handleFieldValue({ target: { value: temp.BusinessRuleFields, name: 'BusinessRuleFields', checked: false }, currentTarget: { dataset: null } })\r\n }\r\n\r\n const editRule = (resultset) => {\r\n let temp = result\r\n temp.BusinessRuleFields.map(t => {\r\n if (t.MasterFieldId === resultset.MasterFieldId) {\r\n t = resultset\r\n }\r\n })\r\n handleFieldValue({ target: { value: temp.BusinessRuleFields, name: 'BusinessRuleFields', checked: false }, currentTarget: { dataset: null } })\r\n }\r\n\r\n\r\n const handleClose = (ruleType) => {\r\n if (ruleType === 'V')\r\n setValid(false)\r\n else setInvalid(false)\r\n }\r\n\r\n const getMasterInputType = (field) => {\r\n let returntype = fields && fields.length > 0 && fields.filter(a => a.id === field)\r\n if (returntype && returntype.length > 0 && returntype[0].editorType)\r\n return returntype[0].editorType\r\n else return 'text'\r\n };\r\n\r\n const getMasterIdValues = (field) => {\r\n let returntype = fields && fields.length > 0 && fields.filter(a => a.id === field)\r\n if (returntype && returntype.length > 0 && returntype[0].editorType && returntype[0].values && returntype[0].values.length > 0)\r\n return returntype[0].values\r\n else return []\r\n };\r\n\r\n const handleDelete = (selected) => {\r\n if (!isSidebar) {\r\n let bussinessrule = result && result.BusinessRuleFields.filter(rule => {\r\n if (rule.MasterFieldId === selected.MasterFieldId) {\r\n if (selected.RuleType !== rule.RuleType) {\r\n return rule\r\n }\r\n }\r\n else if ((rule.MasterFieldId !== selected.MasterFieldId))\r\n return rule\r\n })\r\n result.BusinessRuleFields = bussinessrule;\r\n if (selected.Id) {\r\n\r\n let url = getEnvVariable('AdminConfig') + `/api/BusinessRuleFields/${selected.Id}`\r\n DeleteRecord(url, '').then(res => {\r\n changeBusinessFields()\r\n handleFieldValue({ target: { value: result.BusinessRuleFields, name: 'BusinessRuleFields', checked: false }, currentTarget: { dataset: null } })\r\n })\r\n }\r\n else {\r\n changeBusinessFields()\r\n handleFieldValue({ target: { value: result.BusinessRuleFields, name: 'BusinessRuleFields', checked: false }, currentTarget: { dataset: null } })\r\n }\r\n }\r\n }\r\n\r\n return (<div style={{ overflow: 'auto', width: '800px' }}>\r\n <Accordion expanded={expandedvalid} onChange={handleChange('panel1', 'valid')} >\r\n <AccordionSummary expandIcon={<ExpandMoreIcon />} >\r\n <Typography className={classes.heading} color='primary'>Valid <IconButton size=\"small\" onClick={() => setValid(true)} ><AddIcon /> </IconButton></Typography>\r\n </AccordionSummary>\r\n {validadd && <AccordionDetails>\r\n <ResultsCard result={result} handleFieldValue={addNewRule} ruleType={'V'} fields={validFields.filter(field => { if (field.isSectionField) return field })} handleClose={handleClose} />\r\n </AccordionDetails>}\r\n <AccordionDetails>\r\n <div className=\"row col-sm-12\" style={{ maxHeight: '250px', overflow: 'auto' }}>\r\n {result && result.hasOwnProperty('BusinessRuleFields') && result.BusinessRuleFields && result.BusinessRuleFields.length > 0 &&\r\n result.BusinessRuleFields.map((val, i) => {\r\n if (val.RuleType === 'V') {\r\n let type = getMasterInputType(val.MasterFieldId)\r\n let values = getMasterIdValues(val.MasterFieldId)\r\n return <ViewFields isLabel={i == 0 ? true : false} viewResults={val} result={result} handleFieldValue={editRule} fields={fields} type={type} values={values} isSidebar={isSidebar}\r\n handleDelete={handleDelete} />\r\n }\r\n })}\r\n </div>\r\n </AccordionDetails>\r\n </Accordion>\r\n {result.IsTriggerAnotherRuleOnFailure !== 'Y' && <Accordion expanded={expandedInvalid} onChange={handleChange('panel2', 'invalid')} >\r\n <AccordionSummary expandIcon={<ExpandMoreIcon />} >\r\n <Typography className={classes.heading} color='primary'>Invalid <IconButton size=\"small\" onClick={() => setInvalid(true)} ><AddIcon /> </IconButton></Typography>\r\n </AccordionSummary>\r\n {invalidadd && <AccordionDetails>\r\n <ResultsCard result={result} handleFieldValue={addNewRule} ruleType={'I'} fields={invalidFields.filter(field => { if (field.isSectionField) return field })} handleClose={handleClose} />\r\n </AccordionDetails>}\r\n <AccordionDetails>\r\n <div className=\"row col-sm-12\" style={{ maxHeight: '250px', overflow: 'auto' }}>\r\n {result && result.hasOwnProperty('BusinessRuleFields') && result.BusinessRuleFields && result.BusinessRuleFields.length > 0 && result.BusinessRuleFields.map((val, i) => {\r\n if (val.RuleType === 'I') {\r\n let type = getMasterInputType(val.MasterFieldId)\r\n let values = getMasterIdValues(val.MasterFieldId)\r\n return <ViewFields viewResults={val} isLabel={i == 0 ? true : false} result={result} handleFieldValue={editRule}\r\n isSidebar={isSidebar} fields={fields} type={type} values={values} handleDelete={handleDelete} />\r\n }\r\n })}\r\n </div>\r\n </AccordionDetails>\r\n </Accordion>}\r\n </div>)\r\n}\r\n\r\n","import FormHelperText from '@material-ui/core/FormHelperText';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Step from \"@material-ui/core/Step\";\r\nimport StepContent from \"@material-ui/core/StepContent\";\r\nimport StepLabel from \"@material-ui/core/StepLabel\";\r\nimport Stepper from \"@material-ui/core/Stepper\";\r\nimport CodeIcon from '@material-ui/icons/Code';\r\nimport FiberManualRecordIcon from '@material-ui/icons/FiberManualRecord';\r\nimport EventIcon from '@material-ui/icons/OfflineBolt';\r\nimport React, { useEffect, useState } from 'react';\r\nimport CalcualtedQueryBuilder from './mainquerybuilder';\r\nimport Uploaded from './uploaded';\r\nimport QueryBuilder from 'react-querybuilder';\r\nimport { getEnvVariable } from '../../../../../modules/environmentalList';\r\nimport MultiCheckAutoComplete from '../../../../controls/components/checkautocomplete';\r\nimport { createRequest, requestApi } from '../../../../controls/helpers/rest';\r\nimport Events from './events';\r\nimport Fields from './fields';\r\nimport Switch from '../../../../controls/components/switch';\r\n\r\nconst extraProps = {\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Value'\r\n },\r\n}\r\n\r\nexport default function StaticFilter({ handleFieldValue, result, handleDynamicResult, fields, section = null, isSidebar = false, helperText }) {\r\n const [internalroles, setInternalRoles] = useState([])\r\n const [externalroles, setExternalroles] = useState([])\r\n\r\n useEffect(() => {\r\n const read = [\r\n {\r\n url: getEnvVariable('Admin') + `/api/Roles/All`,\r\n type: 'get'\r\n },\r\n {\r\n url: getEnvVariable('Admin') + `/api/Domains/values?domainkey=EXTERNAL_ROLES&domainid=0`,\r\n type: 'get'\r\n },\r\n\r\n ]\r\n\r\n Promise.all(read.map(each => requestApi(createRequest(each, {})))).then(response => {\r\n const [internalroleset, externalroleset] = response;\r\n setExternalroles(externalroleset)\r\n setInternalRoles(internalroleset)\r\n })\r\n }, [])\r\n\r\n return (<div className=\"mt-1 mb-1\">\r\n <Stepper orientation=\"vertical\">\r\n <Step key={\"Roles\"} active={true}>\r\n <StepLabel StepIconComponent={CodeIcon}>{\"Roles\"}</StepLabel>\r\n <StepContent>\r\n <MultiCheckAutoComplete className=\"col-sm-12\" label={'Internal'} name={'InternalRoles'} ismulti={true} value={result.InternalRoles} items={internalroles || []} handleFieldValue={(evt) => handleFieldValue(evt)} />\r\n <MultiCheckAutoComplete className=\"col-sm-12\" label={'External'} name={'ExernalRoles'} ismulti={true} value={result.ExernalRoles} extraProps={extraProps}\r\n items={externalroles || []} handleFieldValue={(evt) => handleFieldValue(evt)} />\r\n </StepContent>\r\n </Step>\r\n <Step key={\"Query\"} active={true}>\r\n <StepLabel StepIconComponent={CodeIcon}>{\"Query\"}</StepLabel>\r\n <StepContent>\r\n <Switch name='isCalcualtedQuery' label=\"is Calculated Query?\" value={(result && result.isCalcualtedQuery) || 'Y'}\r\n handleFieldValue={handleFieldValue} extraProps={{\r\n transformProps: {\r\n \"Y\": true,\r\n \"N\": false,\r\n true: \"Y\",\r\n false: \"N\"\r\n }\r\n }} /><br />\r\n {!isSidebar && <div className=\"p-1\" ><Uploaded result={result} handleDynamicResult={handleDynamicResult} /></div>}\r\n {result && result.isCalcualtedQuery === 'N' && <small className='col-12'>\r\n <QueryBuilder fields={fields} query={result && result.query || null} onQueryChange={(query) =>\r\n handleFieldValue({ target: { value: query, name: 'query', checked: false }, currentTarget: { dataset: null } })}\r\n showNotToggle showCloneButtons showLockButtons enableDragAndDrop />\r\n {helperText && <FormHelperText>{helperText || ''}</FormHelperText>}\r\n </small>}\r\n {result && result.isCalcualtedQuery === 'Y' && <small className='col-12'>\r\n <CalcualtedQueryBuilder className=\"col-12\" fields={fields || []} name='query'\r\n query={result && result.query || null}\r\n onQueryChange={(query) => handleFieldValue({\r\n target: { value: query, name: 'query', checked: false },\r\n currentTarget: { dataset: null }\r\n })} />\r\n </small>}\r\n </StepContent>\r\n </Step>\r\n <Step key={\"Events\"} active={true}>\r\n <StepLabel StepIconComponent={EventIcon}>{\"Events\"}</StepLabel>\r\n <StepContent>\r\n <Events result={result} section={section} handleFieldValue={handleFieldValue} isSidebar={isSidebar} />\r\n </StepContent>\r\n </Step>\r\n <Step key={\"Results(Valid / Invalid)\"} active={true}>\r\n <StepLabel StepIconComponent={FiberManualRecordIcon}>{\"Results(Valid / Invalid)\"}</StepLabel>\r\n <StepContent>\r\n <Paper elevation={3} >\r\n <Fields result={result} fields={fields} handleFieldValue={handleFieldValue} isSidebar={isSidebar} />\r\n </Paper>\r\n </StepContent>\r\n </Step>\r\n </Stepper>\r\n </div>)\r\n}//.filter(each => { if (each.isVirtual === false) return true; else return false })","import Drawer from '@material-ui/core/Drawer';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { toDataSourceRequestString } from '@progress/kendo-data-query';\r\nimport React, { useEffect, useState, useCallback } from 'react';\r\nimport { formatQuery as Formatter } from 'react-querybuilder';\r\nimport { useParams } from 'react-router-dom';\r\nimport Dropdown from '../../core/controls/components/dropdown';\r\nimport Header from '../../core/controls/components/header';\r\nimport Kendoheader from '../../core/controls/components/kendoheader';\r\nimport Switch from '../../core/controls/components/switch';\r\nimport Textbox from '../../core/controls/components/textbox';\r\nimport { DeleteRecord, GetData, PostData, PutData } from '../../core/controls/helpers/requests';\r\nimport { createRequest, requestApi } from '../../core/controls/helpers/rest';\r\nimport StaticFilter from '../../core/modules/dnd/widgets/validationrules/static';\r\nimport Simplegrid from '../../core/modules/Grid/cgrid';\r\nimport { getEnvVariable } from '../../modules/environmentalList';\r\n\r\nconst defaultDrawerWidth = 900;\r\nconst minDrawerWidth = 700;\r\nconst maxDrawerWidth = window.innerWidth - 220;\r\nconst fullscreenwidth = window.innerWidth\r\nconst checkwidth = 960\r\n\r\n\r\nconst transformProps = {\r\n \"A\": true,\r\n \"I\": false,\r\n true: \"A\",\r\n false: \"I\"\r\n}\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n drawer: {\r\n flexShrink: 0\r\n },\r\n dragger: {\r\n width: \"7px\",\r\n cursor: \"ew-resize\",\r\n padding: \"4px 0 0\",\r\n borderTop: \"1px solid #ddd\",\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n bottom: 0,\r\n zIndex: 100,\r\n // backgroundColor: \"#f4f7f9\"\r\n }\r\n}));\r\n\r\n\r\n\r\nconst headerProps = {\r\n title: \"Sidebar Rules\",\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": `Site Settings`, \"tab\": 3, \"materialicon\": \"engineering\", href: getEnvVariable('InternalBasepath'), className: 'breadcrumb-item text-dark', class: 'text-dark' },\r\n { \"link\": \"Sidebar Rules\", href: \"#/Administration/sidebarbr\", \"materialicon\": \"ballot\", className: 'breadcrumb-item ', class: '', fontSize: '25px' }\r\n\r\n ],\r\n }\r\n ],\r\n actions: [\r\n\r\n {\r\n type: 'fab',\r\n icon: 'add',\r\n name: 'add',\r\n color: 'primary',\r\n title: 'Add Sidebar Rules',\r\n menucolor: '#36088a'\r\n },\r\n\r\n ]\r\n}\r\n\r\nconst header = {\r\n name: \"header\",\r\n type: 'header',\r\n title: 'Business Rules',\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": \"Add Sidebar Rules\", \"materialicon\": \"ballot\", className: 'eps-breadcrumb-item ', class: 'text-light' },\r\n ]\r\n }\r\n ],\r\n actions: [\r\n {\r\n type: 'icon',\r\n icon: 'save',\r\n name: 'save',\r\n hideon: 'save',\r\n hidevalue: false,\r\n title: 'Save Sidebar Business Rules'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'back',\r\n name: 'back',\r\n hideon: 'back',\r\n hidevalue: false\r\n },\r\n ],\r\n}\r\n\r\nfunction ValidationSideRules(props) {\r\n const [items, setItems] = useState([])\r\n const [columns, setColumns] = useState([])\r\n const [item, setItem] = useState({})\r\n const [reload, setReload] = useState(false)\r\n const [tablenames, setTableNames] = useState([])\r\n const [sidePop, setSidePop] = useState(false)\r\n const [total, setTotal] = useState(0)\r\n const { eachsection, section, open } = props;\r\n\r\n let screensize = (props.width === \"sm\" || props.width === \"xs\" || props.width === \"md\") ? false : true\r\n const [drawerWidth, setDrawerWidth] = useState((props.width === \"sm\" || props.width === \"xs\" || props.width === \"md\") ? fullscreenwidth : defaultDrawerWidth);\r\n const [fullscreen, setFullScreen] = useState(false)\r\n const [fullwidth, setFullWidth] = useState(fullscreenwidth)\r\n\r\n React.useEffect(() => {\r\n window.addEventListener(\"resize\", updateWidth);\r\n return () => window.removeEventListener(\"resize\", updateWidth);\r\n });\r\n\r\n\r\n const updateWidth = () => {\r\n if (window.innerWidth < checkwidth) {\r\n setDrawerWidth(window.innerWidth);\r\n }\r\n else {\r\n setDrawerWidth(defaultDrawerWidth)\r\n }\r\n };\r\n\r\n React.useEffect(() => {\r\n if (!screensize) {\r\n let width = window.innerWidth\r\n setDrawerWidth(width);\r\n setFullWidth(width)\r\n }\r\n else {\r\n setDrawerWidth(defaultDrawerWidth);\r\n // setFullWidth(defaultDrawerWidth)\r\n }\r\n }, [props.width]);\r\n\r\n\r\n const handleMouseDown = e => {\r\n document.addEventListener(\"mouseup\", handleMouseUp, true);\r\n document.addEventListener(\"mousemove\", handleMouseMove, true);\r\n };\r\n\r\n const handleMouseUp = () => {\r\n document.removeEventListener(\"mouseup\", handleMouseUp, true);\r\n document.removeEventListener(\"mousemove\", handleMouseMove, true);\r\n };\r\n\r\n const handleMouseMove = useCallback(e => {\r\n let newWidth =\r\n document.body.offsetWidth - (e.clientX - document.body.offsetLeft);\r\n // const newWidth = e.clientX - document.body.offsetLeft;\r\n if (newWidth > minDrawerWidth && newWidth < maxDrawerWidth) {\r\n setDrawerWidth(newWidth);\r\n }\r\n }, []);\r\n\r\n\r\n useEffect(() => {\r\n const read = [\r\n {\r\n url: getEnvVariable('Report') + `/api/ReportQuery/reporttables`,\r\n type: 'get'\r\n },\r\n ]\r\n Promise.all(read.map(each => requestApi(createRequest(each, {})))).then(response => {\r\n const [tablename = []] = response;\r\n setTableNames(tablename.map(each => { return { Name: each, Value: each } }))\r\n })\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (item && item.TableName) {\r\n getData()\r\n }\r\n }, [item && item.TableName])\r\n\r\n const getData = () => {\r\n let gColumns = []\r\n const queryStr = `${toDataSourceRequestString({\r\n skip: 0, take: 424\r\n })}`;\r\n let url = getEnvVariable('Admin') + `/api/SystemSystemBusinessRules/Grid?${queryStr}&tablename=${(item && item.TableName) || ''}`\r\n GetData(url).then(response => {\r\n if (response.data.length > 0) {\r\n response.data.map(item => {\r\n item.Status = item.Status === 'A' ? 'Active' : 'Inactive'\r\n item.RuleType = item.RuleType === 'S' ? 'Data' : 'Role'\r\n item.isCalcualtedQuery = 'Y'\r\n item.BusinessRuleFields = item.SystemBusinessRulesDependencyFields || []\r\n })\r\n\r\n if (response && response.data.length > 0) {\r\n (Object.getOwnPropertyNames(response.data[0])).map(col => {\r\n if (col === 'Name' || col === 'RuleOrder' || col === 'Status' || col === 'Id'|| col === 'SqlQuery')\r\n gColumns.push({ field: col, title: col === 'RuleOrder' ? 'Order' : col, show: true, filtericon: true, width: 150, })\r\n })\r\n gColumns.push({ field: 'Custom', title: 'Custom', show: true, width: 150, })\r\n setItems(response.data);\r\n setColumns(gColumns)\r\n setReload(!reload);\r\n setTotal(response.total)\r\n }\r\n\r\n }\r\n })\r\n }\r\n\r\n const handleFieldValue = (evt) => {\r\n const { value, name } = evt.target;\r\n setItem({ ...item, [name]: value })\r\n }\r\n\r\n\r\n const handleAdd = () => {\r\n let newItem = item;\r\n newItem['RuleType'] = 'S'\r\n newItem['Status'] = 'I'\r\n newItem['EventOn'] = 'OC'\r\n newItem['EventType'] = 'E'\r\n newItem['isCalcualtedQuery'] = 'Y';\r\n setSidePop(true)\r\n setItem(newItem)\r\n }\r\n\r\n const addOnsByName = { addOnsByName: { add: { onClick: handleAdd } } }\r\n\r\n const handleEdit = (dataItem) => {\r\n let url = getEnvVariable('Admin') + `/api/SystemSystemBusinessRules/ById/${dataItem.Id}`\r\n GetData(url, '').then(res => {\r\n res.query = res.JsonQueryStr !== '' ? JSON.parse(res.JsonQueryStr) : '';\r\n res.RuleType = res.RuleType ? res.RuleType : 'S';\r\n res.isCalcualtedQuery = 'Y'\r\n res.BusinessRuleFields = res.SystemBusinessRulesDependencyFields || []\r\n setItem(res)\r\n setSidePop(true)\r\n setReload(!reload)\r\n })\r\n }\r\n\r\n const onUp = (dataItem) => {\r\n PutData(getEnvVariable('Admin') + `/api/SystemSystemBusinessRules/${dataItem.Id}/UP`, dataItem).then(res => {\r\n getData()\r\n })\r\n }\r\n\r\n const onDown = (dataItem) => {\r\n PutData(getEnvVariable('Admin') + `/api/SystemSystemBusinessRules/${dataItem.Id}/DOWN`, dataItem).then(res => {\r\n getData()\r\n })\r\n }\r\n\r\n const onDelete = (dataItem) => {\r\n DeleteRecord(getEnvVariable('Admin') + `/api/SystemSystemBusinessRules/${dataItem.Id}`, '').then(res => {\r\n getData()\r\n })\r\n\r\n }\r\n\r\n const handleBackSlider = () => {\r\n setItem({ ['TableName']: item.TableName })\r\n setSidePop(false)\r\n getData()\r\n }\r\n\r\n const classes = useStyles();\r\n return (\r\n <div className='col-12' style={{ height: window.innerHeight - 100 }}>\r\n {reload}\r\n <div onMouseDown={e => handleMouseDown(e)} className={classes.dragger} />\r\n <Kendoheader {...headerProps} {...addOnsByName} />\r\n <div className='col-12 pl-1'>\r\n <Dropdown label={'Table Name'} name={'TableName'}\r\n value={(item && item.TableName) || ''} items={tablenames || []} handleFieldValue={(evt) => handleFieldValue(evt)} extraProps={{\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Value'\r\n }\r\n }} />\r\n <br />\r\n {columns && columns.length > 0 && <Simplegrid total={total}\r\n onUp={onUp} handleEdit={handleEdit}\r\n onDown={onDown} onDelete={onDelete}\r\n data={items || []} columns={columns} useComp={true} options={{ gridcolumns: columns }} gridFields={columns} rules={true} enablerender={true} />\r\n }\r\n <Drawer anchor=\"right\" open={sidePop}\r\n disableEnforceFocus={true}\r\n disableAutoFocus={true}\r\n PaperProps={{ style: { width: fullscreen ? fullwidth : drawerWidth } }}\r\n >\r\n {item && Object.keys(item).length > 0 && <Rule businessrules={items} item={item} handleClose={handleBackSlider}\r\n tablenames={tablenames} />}\r\n </Drawer>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default ValidationSideRules\r\n\r\nfunction Rule(props) {\r\n const [result, setResult] = useState(props.item || { isCalcualtedQuery: 'Y' })\r\n const [fields, setFields] = useState([])\r\n const [uploaded, setUploaded] = useState(false)\r\n const [reload, setReload] = useState(false)\r\n const [queryError, setqueryError] = useState({ error: false, helperText: '' })\r\n const [nameError, setnameError] = useState({ error: false, helperText: '' })\r\n const [descError, setDescError] = useState({ error: false, helperText: '' })\r\n const [columnnames, setColumnNames] = useState([])\r\n const params = useParams();\r\n\r\n\r\n useEffect(() => {\r\n if (props.item && props.item.TableName) {\r\n const url = getEnvVariable('Application') + `/api/SystemBusinessRulesData/Builder?tableName=${result.TableName.replace(getEnvVariable('ModuleKey'), \"\")}`\r\n GetData(url).then(fieldset => {\r\n let tempColumns = [];\r\n fieldset.filter(each => {\r\n // if (each.isVirtual === false)\r\n tempColumns.push({ Name: each.name, Value: each.name })\r\n })\r\n tempColumns.push({ Name: 'Global', Value: 'GLOBAL' })\r\n setColumnNames(tempColumns)\r\n setFields(fieldset)\r\n setReload(!reload)\r\n }).catch(ex => {\r\n console.log(ex)\r\n })\r\n }\r\n }, [props.item.TableName])\r\n\r\n const handleFieldValue = (event) => {\r\n const { name, value } = event.target;\r\n if (name === 'Status')\r\n result[name] = event.target.checked ? 'A' : 'I'\r\n else if (name === 'EventType') {\r\n if (value === 'S') {\r\n result['NoticesIsAuto'] = 'Y'\r\n result['ReportIsAuto'] = 'Y'\r\n result['NotificationSettingsIsAuto'] = 'Y'\r\n result[name] = value\r\n }\r\n else {\r\n result['NoticesIsAuto'] = 'N'\r\n result['ReportIsAuto'] = 'N'\r\n result['NotificationSettingsIsAuto'] = 'N'\r\n result[name] = value\r\n }\r\n }\r\n else result[name] = value\r\n setResult(result)\r\n setReload(!reload)\r\n }\r\n\r\n const handleDynamicResult = (dynResponse) => {\r\n let tempResult = result;\r\n if (dynResponse) {\r\n if (dynResponse.CvsDateItems && dynResponse.CvsDateItems.length > 0)\r\n tempResult['CustomDataClxn'] = dynResponse.CvsDateItems;\r\n if (dynResponse.HashKey) {\r\n tempResult['HashKey'] = dynResponse.HashKey\r\n }\r\n setResult(tempResult)\r\n setUploaded(!uploaded)\r\n }\r\n }\r\n\r\n const onError = (errors) => {\r\n let errorstate = false, errorval = ''\r\n if (errors[\"Name\"]) {\r\n if (Array.isArray(errors['Name'])) {\r\n errorstate = true\r\n errorval = errors['Name'][0]\r\n }\r\n else {\r\n errorstate = errors['Name'].error\r\n errorval = errors['Name'].errortext\r\n }\r\n setnameError({ error: errorstate, helperText: errorval })\r\n }\r\n if (errors[\"SqlQuery\"]) {\r\n if (Array.isArray(errors['SqlQuery'])) {\r\n errorstate = true\r\n errorval = errors['SqlQuery'][0]\r\n }\r\n else {\r\n errorstate = errors['SqlQuery'].error\r\n errorval = errors['SqlQuery'].errortext\r\n }\r\n setqueryError({ error: errorstate, helperText: errorval })\r\n }\r\n if (errors[\"JsonQueryStr\"]) {\r\n if (Array.isArray(errors['JsonQueryStr'])) {\r\n errorstate = true\r\n errorval = errors['JsonQueryStr'][0]\r\n }\r\n else {\r\n errorstate = errors['JsonQueryStr'].error\r\n errorval = errors['JsonQueryStr'].errortext\r\n }\r\n setqueryError({ error: errorstate, helperText: errorval })\r\n }\r\n if (errors[\"Description\"]) {\r\n if (Array.isArray(errors['Description'])) {\r\n errorstate = true\r\n errorval = errors['Description'][0]\r\n }\r\n else {\r\n errorstate = errors['Description'].error\r\n errorval = errors['Description'].errortext\r\n }\r\n setDescError({ error: errorstate, helperText: errorval })\r\n }\r\n }\r\n\r\n const handleSave = () => {\r\n let tempResult = result\r\n if (tempResult && tempResult.Name) {\r\n tempResult.JsonQueryStr = JSON.stringify(result.query) //tempResult.RuleType === 'S' ? : ''\r\n tempResult.SqlQuery = Formatter(result.query, 'sql') // tempResult.RuleType === 'S' ?: ''\r\n tempResult.IsTriggerAnotherRuleOnFailure = tempResult.IsTriggerAnotherRuleOnFailure === 'Y' ? 'Y' : 'N';\r\n tempResult.NoticesEventOn = 'N';\r\n tempResult.NoticesOnLoad = 'N';\r\n tempResult.NotificationSettingsEventOn = 'N';\r\n tempResult.NotificationSettingsOnLoad = 'N';\r\n tempResult.ProjectMessagesEventOn = 'N';\r\n tempResult.ProjectMessagesOnLoad = 'N';\r\n tempResult.NotificationSettingsIsAuto = tempResult.NotificationSettingsIsAuto ? tempResult.NotificationSettingsIsAuto : 'N';\r\n tempResult.NoticesIsAuto = tempResult.NoticesIsAuto ? tempResult.NoticesIsAuto : 'N';\r\n tempResult.ReportIsAuto = tempResult.ReportIsAuto ? tempResult.ReportIsAuto : 'N';\r\n tempResult.SystemBusinessRulesDependencyFields = tempResult.BusinessRuleFields || []\r\n delete tempResult.BusinessRuleFields\r\n if (!tempResult.Id) {\r\n tempResult.Status = 'A';\r\n let url = getEnvVariable('Admin') + `/api/SystemSystemBusinessRules/Add?tableName=${result.TableName}`\r\n PostData(url, tempResult).then(res => {\r\n props.handleClose(false)\r\n }).catch(error => {\r\n error.then(err => {\r\n if (err) {\r\n tempResult.query = JSON.parse(tempResult.JsonQueryStr)\r\n setResult(tempResult)\r\n onError(err);\r\n }\r\n })\r\n })\r\n }\r\n else {\r\n let url = getEnvVariable('Admin') + `/api/SystemSystemBusinessRules/${tempResult.Id}/Update`\r\n PutData(url, tempResult).then(res => {\r\n props.handleClose(false)\r\n }).catch(error => {\r\n error.then(err => {\r\n if (err) {\r\n tempResult.query = JSON.parse(tempResult.JsonQueryStr)\r\n setResult(tempResult)\r\n onError(err)\r\n }\r\n })\r\n })\r\n }\r\n }\r\n else {\r\n if (!result.Name) {\r\n setnameError({ error: false, helperText: null })\r\n setqueryError({ error: true, helperText: 'Field is required' })\r\n }\r\n if (!result.query) {\r\n if (!result.InternalRoles || !result.ExernalRoles) {\r\n setqueryError({ error: true, helperText: 'Field is required' })\r\n setnameError({ error: false, helperText: null })\r\n }\r\n }\r\n }\r\n }\r\n\r\n const addOnsByName = { addOnsByName: { save: { onClick: handleSave }, back: { onClick: props.handleClose } } }\r\n return (\r\n <div className='h-100' style={{ overflow: 'auto' }}>\r\n <Header {...header} {...addOnsByName} />\r\n <div className='col-12 pt-3'>\r\n <Dropdown label={'Table Name'} name={'TableName'}\r\n value={result.TableName} items={props.tablenames || []} handleFieldValue={(evt) => handleFieldValue(evt)} extraProps={{\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Value'\r\n }\r\n }} />\r\n {result && result.TableName && <Dropdown label={'Column Name'} name={'ColumnName'}\r\n value={result.ColumnName} items={columnnames || []} handleFieldValue={(evt) => handleFieldValue(evt)} extraProps={{\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Value'\r\n }\r\n }} />}\r\n </div>\r\n {result && result.TableName && result.ColumnName && <div className=\"col-sm-12\">\r\n {reload}\r\n <Textbox label='Name' name='Name' value={(result && result.Name) || null} handleFieldValue={handleFieldValue} error={nameError.error} helperText={nameError.helperText} required={true} />\r\n <Textbox label='Description' name='Description' value={(result && result.Description) || null} handleFieldValue={handleFieldValue} error={descError.error} helperText={descError.helperText} />\r\n <Switch label='Status' name=\"Status\" value={(result && result.Status) || null} handleFieldValue={handleFieldValue} extraProps={{\r\n transformProps: transformProps\r\n }} /><br />\r\n <StaticFilter result={result || {}}\r\n handleFieldValue={handleFieldValue} handleDynamicResult={handleDynamicResult} fields={fields}\r\n error={queryError.error} helperText={queryError.helperText} isSidebar={true} />\r\n </div>}\r\n </div>\r\n )\r\n}\r\n\r\n","import React from \"react\"\r\nimport SidebarBR from '../../../custommodules/sidebarbr'\r\n\r\n\r\nconst SidebarBusinessRules = () => {\r\n\r\n return (\r\n <div style={{ height: '100%', overflow: 'auto' }}>\r\n <SidebarBR />\r\n </div>\r\n )\r\n}\r\nexport default SidebarBusinessRules","import React, { forwardRef, useImperativeHandle, useRef, useState, Fragment } from 'react';\r\nimport { SnackbarProvider, useSnackbar } from 'notistack';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Backdrop from '@material-ui/core/Backdrop';\r\nimport ReactDOM from \"react-dom\";\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n root: {\r\n zIndex: 1500,\r\n maxWidth: 350,\r\n '& > * + *': {\r\n marginTop: theme.spacing(2),\r\n },\r\n width: 350,\r\n '& > * + *': {\r\n marginTop: theme.spacing(2),\r\n },\r\n },\r\n backdrop: {\r\n zIndex: theme.zIndex.drawer + 1,\r\n color: '#fff',\r\n },\r\n // success: { backgroundColor: 'rgb(237, 247, 237)' },\r\n //error: { backgroundColor: 'rgb(253, 236, 234)' },\r\n warning: { color: '#b71c1c', backgroundColor: '#ffb74d' },\r\n info: { backgroundColor: '#64b5f6' },\r\n}))\r\n\r\nfunction Alert(props, ref) {\r\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\r\n\r\n useImperativeHandle(ref, () => ({\r\n showAlert: (message, variant) => {\r\n if (typeof message === 'string') {\r\n if (variant) {\r\n enqueueSnackbar(message, { persist: variant === 'success' ? false : true, variant, key: Math.floor((Math.random() * 100) + 1) + '_' + variant })\r\n }\r\n else\r\n enqueueSnackbar(message, { persist: true, });\r\n }\r\n },\r\n closeAlert: (key) => {\r\n closeSnackbar(key)\r\n }\r\n }))\r\n\r\n return (\r\n <div />\r\n );\r\n}\r\n\r\nconst AlertView = forwardRef(Alert)\r\n\r\nfunction IntegrationNotistack(count = 3, ref) {\r\n const [open, setOpen] = useState(false);\r\n const alertView = useRef(null);\r\n const classes = useStyles();\r\n\r\n useImperativeHandle(ref, () => (\r\n {\r\n show: (message, variant) => {\r\n if (alertView && alertView.current) {\r\n alertView.current.showAlert(message, variant)\r\n if (variant !== 'success') {\r\n Counter.addCount();\r\n setOpen(true);\r\n }\r\n }\r\n }\r\n }\r\n ))\r\n\r\n const onClickDismiss = key => () => {\r\n alertView.current.closeAlert(key);\r\n if (!(key || '').includes('success'))\r\n Counter.reduceCount();\r\n if (Counter.getCount() === 0)\r\n setOpen(false)\r\n }\r\n\r\n return ReactDOM.createPortal(\r\n <Fragment>\r\n <Backdrop className={classes.backdrop} open={open} />\r\n <SnackbarProvider maxSnack={4} anchorOrigin={{ vertical: 'bottom', horizontal: 'left' }} action={(key) => (\r\n <IconButton aria-label=\"delete\" onClick={onClickDismiss(key)} size=\"small\">\r\n <CloseIcon fontSize=\"inherit\" />\r\n </IconButton>\r\n )}\r\n className={classes.root}\r\n classes={{\r\n variantSuccess: classes.success,\r\n variantError: classes.error,\r\n variantWarning: classes.warning,\r\n variantInfo: classes.info,\r\n }}\r\n >\r\n <AlertView ref={alertView} />\r\n </SnackbarProvider>\r\n </Fragment>,\r\n document.getElementById('ames-backdrop')\r\n );\r\n}\r\n\r\nclass Counter {\r\n static count = 0;\r\n\r\n static getCount() {\r\n return this.count;\r\n }\r\n\r\n static addCount() {\r\n this.count = this.count + 1;\r\n }\r\n\r\n static reduceCount() {\r\n if (this.count > 0)\r\n this.count = this.count - 1;\r\n }\r\n}\r\n\r\nexport default forwardRef(IntegrationNotistack);","import Drawer from '@material-ui/core/Drawer';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport React, { forwardRef, useImperativeHandle, useState } from 'react';\r\n\r\nconst drawerWidth = 840;\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n display: 'flex',\r\n },\r\n drawer: {\r\n [theme.breakpoints.up('sm')]: {\r\n width: drawerWidth,\r\n flexShrink: 0,\r\n },\r\n },\r\n // necessary for content to be below app bar\r\n toolbar: theme.mixins.toolbar,\r\n drawerPaper: {\r\n width: drawerWidth,\r\n },\r\n content: {\r\n flexGrow: 1,\r\n padding: theme.spacing(3),\r\n },\r\n}));\r\n\r\nfunction HelpSideBar(props, ref) {\r\n const [url, setUrl] = useState(null);\r\n const classes = useStyles();\r\n useImperativeHandle(ref, () => ({\r\n opendrawer: (url) => {\r\n if (url)\r\n setUrl(url);\r\n }\r\n }))\r\n\r\n\r\n const toggleDrawer = () => {\r\n setUrl(null);\r\n };\r\n\r\n return (\r\n <Drawer anchor={'right'} open={url !== null} onClose={() => toggleDrawer()} classes={{ paper: classes.drawerPaper }}>\r\n <iframe title='iFrameName' width={classes.drawerPaper} height={window.innerHeight - 90} src={url} name=\"iFrameName\" ></iframe>\r\n </Drawer>\r\n );\r\n\r\n\r\n}\r\n\r\nexport default forwardRef(HelpSideBar);\r\n","import React, { useState, forwardRef, useImperativeHandle } from 'react';\r\nimport Backdrop from '@material-ui/core/Backdrop';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nconst useStyles = makeStyles((theme) => ({\r\n backdrop: {\r\n zIndex: theme.zIndex.modal + 1,\r\n color: '#fff',\r\n },\r\n}));\r\n\r\nfunction SimpleBackdrop(props, ref) {\r\n const classes = useStyles();\r\n const [open, setOpen] = useState(false);\r\n\r\n const handleClose = () => {\r\n setOpen(false)\r\n };\r\n\r\n useImperativeHandle(ref, () => ({\r\n add: (loaderMessage) => {\r\n Counter.addCount();\r\n setOpen(true);\r\n },\r\n remove: () => {\r\n Counter.reduceCount();\r\n if (Counter.getCount() === 0)\r\n setOpen(false)\r\n }\r\n }))\r\n\r\n return (\r\n <Backdrop className={classes.backdrop} open={open || props.open} onClick={handleClose}>\r\n <CircularProgress color=\"inherit\" /> \r\n </Backdrop>\r\n )\r\n}\r\n//Please wait while we load information\r\nclass Counter {\r\n static count = 0;\r\n\r\n static getCount() {\r\n return this.count;\r\n }\r\n\r\n static addCount() {\r\n this.count = this.count + 1;\r\n }\r\n\r\n static reduceCount() {\r\n if (this.count > 0)\r\n this.count = this.count - 1;\r\n }\r\n}\r\n\r\nexport default forwardRef(SimpleBackdrop);","import { makeStyles } from '@material-ui/core/styles';\r\nimport React, { forwardRef, useEffect, useImperativeHandle, useState } from 'react';\r\nimport { useParams } from \"react-router-dom\";\r\nimport { getEnvVariable } from '../../../modules/environmentalList';\r\nimport NoticeEditors from '../../../modules/notices/noticeeditor';\r\nimport { GetData } from '../helpers/requests';\r\nimport NotificationEditior from './custom/notificationeditor';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { onEventStatusUpdate,onEventshowError } from '../../actions';\r\nconst drawerWidth = 840;\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n display: 'flex',\r\n },\r\n drawer: {\r\n [theme.breakpoints.up('sm')]: {\r\n width: drawerWidth,\r\n flexShrink: 0,\r\n },\r\n },\r\n // necessary for content to be below app bar\r\n toolbar: theme.mixins.toolbar,\r\n drawerPaper: {\r\n width: drawerWidth,\r\n },\r\n content: {\r\n flexGrow: 1,\r\n padding: theme.spacing(3),\r\n },\r\n}));\r\n\r\nfunction NoticeEditor(props, ref) {\r\n const [id, setId] = useState(null);\r\n const [notify, setNotify] = useState(null);\r\n const [notifyAuto, setAutoNotify] = useState(null);\r\n const [noticeAuto, setAutoNotice] = useState(null);\r\n const [parentTableName, setParentTableName] = useState(null);\r\n const [values, setValues] = useState({});\r\n const classes = useStyles();\r\n const dispatch = useDispatch()\r\n const parentRecordVals = useSelector(state => state.sidebar && state.sidebar.modules);\r\n\r\n let params = useParams();\r\n useImperativeHandle(ref, () => ({\r\n openNotice: (id, isAuto, values, info) => {\r\n setId(id);\r\n setValues(values)\r\n setAutoNotice(isAuto)\r\n setParentTableName(info)\r\n },\r\n openNotification: (notify, isAuto, values, info) => {\r\n setNotify(notify)\r\n setValues(values)\r\n setAutoNotify(isAuto)\r\n setParentTableName(info)\r\n }\r\n }))\r\n\r\n useEffect(() => {\r\n if (notifyAuto && notify) {\r\n let url = getEnvVariable('Application') + `/api/Application/AutoNotification/${values['key']}/${values['SITE_PERMIT_TYPE_ID']}/${values['RECORD_ID']}/${notify}`\r\n GetData(url).then(resp=>{\r\n if(resp)\r\n setNotify(null)\r\n })\r\n //setAutoNotify(false)\r\n }\r\n }, [notifyAuto,notify])\r\n\r\n useEffect(() => {\r\n if (noticeAuto) {\r\n let url = getEnvVariable('Application') + `/api/Notices/${values['RECORD_ID']}/${id}`\r\n GetData(url, 'Notice Sent Successfully')\r\n }\r\n }, [noticeAuto])\r\n\r\n\r\n const toggleDrawer = () => {\r\n setId(null);\r\n };\r\n\r\n const toggleNotifyDrawer = () => {\r\n setNotify(null);\r\n };\r\n\r\n const onEventTransition = () => {\r\n dispatch(onEventStatusUpdate(true))\r\n }\r\n\r\n\r\n const showError = (errors) => {\r\n dispatch(onEventshowError(errors))\r\n }\r\n\r\n\r\n return (\r\n <>\r\n {id && !noticeAuto && (values['SITE_PERMIT_TYPE_ID'] || values['routeid']) &&\r\n <NoticeEditors open={id ? true : false} noticetypeid={id} onClose={toggleDrawer} onEventStatus={'Record'}\r\n showError={showError}\r\n sitepermittypeid={values['SITE_PERMIT_TYPE_ID'] || values['routeid'] || params.routeid}\r\n companyid={parentRecordVals && parentRecordVals['COMPANY_ID'] ? parentRecordVals['COMPANY_ID'] : values['COMPANY_ID']}\r\n recordid={values['RECORD_ID'] || values['routeid1']}\r\n childTable={values} sideBarItems={values['sideBarItems']} refType='NT' ParentValues={values}\r\n ParentTableName={{ ...parentTableName, ['RouteParms']: { 'RefId': values['routeid1'], 'Id': values[\"Id\"] } }}\r\n onEventStatusUpdate={onEventTransition}\r\n />}\r\n {notify && !notifyAuto && (values['SITE_PERMIT_TYPE_ID'] || values['routeid']) && <NotificationEditior openNotificationSlide={notify ? true : false}\r\n id={notify} handleNotificationClose={toggleNotifyDrawer}\r\n sitePermitTypeId={values['SITE_PERMIT_TYPE_ID'] || values['routeid'] || params.routeid} recordid={values['RECORD_ID'] || values['routeid1']} childTable={values}\r\n sideBarItems={values['sideBarItems']} ParentValues={values} refType='NT'\r\n ParentTableName={{ ...parentTableName, ['RouteParms']: { 'RefId': values['routeid1'], 'Id': values[\"Id\"] } }} />}\r\n </>\r\n );\r\n\r\n\r\n}\r\n\r\nexport default forwardRef(NoticeEditor);\r\n","const AssociatedApplicants = {\r\n \"type\": \"associatedapplicants\",\r\n \"key\": \"associatedapplicants\",\r\n \"order\": 0,\r\n \"options\": {\r\n \"alignitem\": \"center\",\r\n },\r\n \"components\": [\r\n\r\n ]\r\n}\r\n\r\nexport default AssociatedApplicants","import { getEnvVariable } from '../../../modules/environmentalList';\r\nimport newsavedreportstypes from '../../reports/savedreports';\r\nconst externaluserloginhistory = {\r\n \"type\": \"grid\",\r\n \"key\": \"externalusersloginhistorygrid\",\r\n \"gridkey\": 'externalusersloginhistorygrid',\r\n \"order\": 1,\r\n \"options\": {\r\n receiveValues: [{ paramname: 'UserId', valuefromparent: 'UserId' }],\r\n sidepopupgridheight: true,\r\n \"crud\": {\r\n \"read\": {\r\n \"get\": {\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/ExternalUser/LoginHistory/Grid/` + getEnvVariable('ModuleKey')+`/{UserId}`,\r\n \"customProps\": {\r\n \"value\": \"UserId\"\r\n }\r\n }\r\n }\r\n },\r\n \"back\": {\r\n \"routes\": [\r\n {\r\n \"route\": \"/companies\",\r\n \"routeParams\": \"routeid\",\r\n },\r\n ],\r\n },\r\n \"childGrid\": true,\r\n headerProps: {\r\n title: \"User(s) Login History\",\r\n actions: [\r\n {\r\n type: 'fab',\r\n icon: 'clear',\r\n name: 'clear',\r\n color: 'primary',\r\n title: 'Clear Filters',\r\n menucolor: '#22a9b3'\r\n },\r\n\r\n {\r\n type: 'menu',\r\n icon: 'excel',\r\n name: 'excel',\r\n color: 'primary',\r\n title: 'Export to Excel',\r\n menucolor: '#c90685',\r\n items: [{\r\n name: 'Export Current Page',\r\n action: 'filtercurrent'\r\n },\r\n {\r\n name: 'Export All Pages',\r\n action: 'filterall'\r\n }\r\n ]\r\n },\r\n\r\n ]\r\n },\r\n savedreports: {\r\n ...newsavedreportstypes\r\n },\r\n \"gridcolumns\": [\r\n {\r\n \"title\": \"IP Address\",\r\n \"field\": \"Ip\",\r\n \"show\": true,\r\n // width: 80,\r\n },\r\n {\r\n \"title\": \"Is Success\",\r\n \"field\": \"IsSuccessDesc\",\r\n \"show\": true,\r\n // width: 60,\r\n },\r\n {\r\n \"title\": \"Login Date\",\r\n \"field\": \"LoginDate\",\r\n \"show\": true,\r\n //width: 100,\r\n }\r\n ]\r\n }\r\n}\r\nexport default externaluserloginhistory","\r\nimport newsavedreportstypes from '../../json/reports/savedreports';\r\nimport { getEnvVariable } from '../../modules/environmentalList';\r\nconst externaluserloginhistory = {\r\n \"type\": \"grid\",\r\n \"key\": \"externalusersloginhistorygrid\",\r\n \"gridkey\": 'externalusersloginhistorygrid',\r\n \"order\": 1,\r\n \"options\": {\r\n receiveValues: [{ paramname: 'UserId', valuefromparent: 'UserId' }],\r\n sidepopupgridheight: true,\r\n \"crud\": {\r\n \"read\": {\r\n \"get\": {\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/ExternalUser/LoginHistory/Grid/` + getEnvVariable('ModuleKey') + '/' + `{UserId}`,\r\n \"customProps\": {\r\n \"value\": \"UserId\"\r\n }\r\n }\r\n }\r\n },\r\n \"back\": {\r\n \"routes\": [\r\n {\r\n \"route\": \"/companies\",\r\n \"routeParams\": \"routeid\",\r\n },\r\n ],\r\n },\r\n \"childGrid\": true,\r\n headerProps: {\r\n title: \"User(s) Login History\",\r\n actions: [\r\n {\r\n type: 'fab',\r\n icon: 'clear',\r\n name: 'clear',\r\n color: 'primary',\r\n title: 'Clear Filters',\r\n menucolor: '#22a9b3'\r\n },\r\n\r\n {\r\n type: 'menu',\r\n icon: 'excel',\r\n name: 'excel',\r\n color: 'primary',\r\n title: 'Export to Excel',\r\n menucolor: '#c90685',\r\n items: [{\r\n name: 'Export Current Page',\r\n action: 'filtercurrent'\r\n },\r\n {\r\n name: 'Export All Pages',\r\n action: 'filterall'\r\n }\r\n ]\r\n },\r\n\r\n ]\r\n },\r\n savedreports: {\r\n ...newsavedreportstypes\r\n },\r\n \"gridcolumns\": [\r\n {\r\n \"title\": \"IP Address\",\r\n \"field\": \"Ip\",\r\n \"show\": true,\r\n //width: 80,\r\n },\r\n {\r\n \"title\": \"Is Success\",\r\n \"field\": \"IsSuccessDesc\",\r\n \"show\": true,\r\n //width: 60,\r\n },\r\n {\r\n \"title\": \"Login Date\",\r\n \"field\": \"LoginDate\",\r\n \"show\": true,\r\n // width: 100,\r\n }\r\n ]\r\n }\r\n}\r\nexport default externaluserloginhistory","import { getEnvVariable } from '../../../modules/environmentalList';\r\nimport externaluserloginhistory from './history';\r\n\r\nconst companyinternal = {\r\n \"type\": \"slidingbutton\",\r\n \"key\": \"companyinternaluserslidingbutton\",\r\n \"options\": {\r\n \"row\": 6,\r\n \"col\": 4,\r\n \"width\": 2,\r\n \"buttonprops\": {\r\n \"text\": \"User\",\r\n \"size\": \"large\",\r\n \"color\": \"primary\",\r\n \"variant\": \"contained\"\r\n },\r\n excludefromresults: true,\r\n \"label\": \"User\",\r\n \"name\": \"User\",\r\n receiveValues: [{ paramname: 'Id', valuefromparent: 'Id' }],\r\n },\r\n open: true,\r\n components: [{\r\n \"type\": \"formcontainer\",\r\n \"key\": \"companyinternaluserform\",\r\n \"options\": {\r\n \"title\": \"Groups\",\r\n headerProps: {\r\n \"navigateup\": true,\r\n \"navigatedown\": true,\r\n \"editbutton\": false,\r\n \"savebutton\": false,\r\n \"backbutton\": true,\r\n \"closebutton\": false,\r\n \"navigateview\": true,\r\n \"breadcrumbs\": [\r\n { \"link\": \"View/Edit Consultant User\", \"materialicon\": \"person\", className: 'eps-breadcrumb-item', class: 'text-light' }\r\n ],\r\n },\r\n\r\n hidescroll: true,\r\n \"name\": \"companyinternaluserform\",\r\n \"back\": {\r\n \"popupback\": true,\r\n \"issubgrid\": true\r\n },\r\n },\r\n \"sidepopupadd\": true,\r\n \"components\": [\r\n {\r\n \"type\": \"ctab\",\r\n \"key\": \"tab\",\r\n hidemargin: true,\r\n \"name\": \"companyinternalusertabform\",\r\n excludefromresults: true,\r\n \"options\": {\r\n tabinfo: [\r\n {\r\n tablabel: \"View/Edit Consultant User\",\r\n tabkey: 0\r\n },\r\n\r\n {\r\n tablabel: \"Update Password\",\r\n tabkey: 1,\r\n 'hidetab': true,\r\n 'onhidetabcondition': true,\r\n \"hidetabval\": \"I\",\r\n 'nested': 'User',\r\n alttabkey: 2,\r\n hidename: 'Status'\r\n },\r\n {\r\n tablabel: \"Login History\",\r\n tabkey: 2,\r\n },\r\n\r\n ],\r\n },\r\n components: [\r\n {\r\n \"tabkey\": 0,\r\n \"type\": \"formcontainer\",\r\n \"key\": \"companyuserform\",\r\n \"options\": {\r\n \"totalcolumns\": 2,\r\n \"totalrows\": 13,\r\n \"title\": \"User \",\r\n \"alignitem\": \"center\",\r\n \"routes\": [\r\n {\r\n \"route\": \"/companies\",\r\n \"routeParams\": \":routeid\",\r\n },\r\n {\r\n \"route\": \"/users/view\",\r\n \"routeParams\": \":routeid1\"\r\n },\r\n ],\r\n styles: {\r\n margin: 15\r\n }, headerProps: {\r\n \"editbutton\": true,\r\n \"savebutton\": true,\r\n \"backbutton\": true,\r\n \"closebutton\": false,\r\n \"navigateview\": true,\r\n \"breadcrumbs\": [\r\n // { \"link\": \"View/Edit Applicant\", href: \"#/companies\", popupclose: true, \"materialicon\": \"edit\", className: 'eps-breadcrumb-item ', class: 'text-light' },\r\n { \"link\": \"View/Edit User\", \"materialicon\": \"person\", className: 'eps-breadcrumb-item', class: 'text-light' }\r\n ],\r\n },\r\n designprops: true,\r\n \"name\": \"companyaddressform\",\r\n \"back\": {\r\n \"routes\": [\r\n {\r\n \"route\": \"/companies\",\r\n \"routeParams\": \"routeid\",\r\n },\r\n {\r\n \"route\": \"/users\",\r\n exactRoute: true\r\n },\r\n ],\r\n \"popupback\": true\r\n },\r\n \"crud\": {\r\n \"read\": {\r\n \"get\": {\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/ExternalUser/` + getEnvVariable('ModuleKey') + `/`,\r\n \"urlpath\": '{UserId}',\r\n // \"routeProps\": {\r\n // \"value\": \"routeid1\"\r\n // }\r\n \"customProps\": [{\r\n \"custom\": \"UserId\"\r\n }]\r\n }\r\n },\r\n \"update\": {\r\n \"put\": {\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/ExternalUser/` + getEnvVariable('ModuleKey') + `/`,\r\n \"urlpath\": 'Update/{UserId}',\r\n // \"matchProps\": [{\r\n // \"value\": \"routeid1\"\r\n // }]\r\n \"customProps\": [{\r\n \"custom\": \"UserId\"\r\n }]\r\n }\r\n }\r\n },\r\n \"validations\": [\r\n {\r\n get: {\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/ProjectMessages/RulesByName?name=master.users`\r\n },\r\n transformProps: {\r\n name: 'Key',\r\n subfieldname: 'MASTER.USERS_',\r\n addsubfieldname: 'USER.'\r\n }\r\n\r\n },\r\n {\r\n get: {\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/ProjectMessages/RulesByName?name=master.externalusers`\r\n },\r\n transformProps: {\r\n name: 'Key',\r\n subfieldname: 'MASTER.EXTERNALUSERS_'\r\n }\r\n\r\n },\r\n {\r\n get: {\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/ProjectMessages/RulesByName?name=master.contacts`\r\n },\r\n transformProps: {\r\n name: 'Key',\r\n subfieldname: 'MASTER.CONTACTS_',\r\n addsubfieldname: 'CONTACTS.'\r\n }\r\n\r\n }\r\n ],\r\n },\r\n \"components\": [\r\n {\r\n \"type\": \"simplelink\",\r\n //\"order\": 6,\r\n \"key\": \"signinpincoderesendpincode\",\r\n \"options\": {\r\n \"row\": 0,\r\n \"col\": 2,\r\n \"width\": 12,\r\n \"format\": \"icon\",\r\n \"name\": \"pincoderesendlink\",\r\n \"text\": \"Resend Activation Link\",\r\n \"crud\": {\r\n \"update\": {\r\n \"post\": {\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/InternalUser/ResendActivationLink/` + getEnvVariable('ModuleKey'),\r\n \"urlpath\": '/{UserId}',\r\n \"customProps\": {\r\n \"custom\": \"UserId\"\r\n }\r\n }\r\n }\r\n },\r\n conditions: {\r\n hide: [{ 'Email': '' }, { 'Email': null }, { nestedhide: { nestedkey: 'Status', value: 'A', isnested: 'User' } }]\r\n },\r\n }\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"username\",\r\n \"options\": {\r\n \"row\": 1,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"label\": \"Username\",\r\n \"name\": \"User.UserName\",\r\n \"disabled\": true,\r\n conditions: {\r\n enable: true,\r\n }\r\n },\r\n\r\n },\r\n {\r\n \"type\": \"infotext\",\r\n \"key\": \"Infotext\",\r\n \"options\": {\r\n \"row\": 2,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"text\": \"Username Policy:\",\r\n\r\n }\r\n },\r\n {\r\n \"type\": \"infotext\",\r\n \"key\": \"Infotext\",\r\n \"options\": {\r\n \"row\": 2,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"text\": \"1. Username can contain letters (a-z), numbers (0-9), underscore (_) and periods (.).\",\r\n\r\n }\r\n },\r\n {\r\n \"type\": \"infotext\",\r\n \"key\": \"Infotext\",\r\n \"options\": {\r\n \"row\": 2,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"text\": \"2. Username cannot contain an ampersand (&), equals sign (=), apostrophe ('), dash (-), plus sign (+), comma (,), brackets (<,>)\"\r\n\r\n }\r\n },\r\n {\r\n \"type\": \"infotext\",\r\n \"key\": \"Infotext\",\r\n \"options\": {\r\n \"row\": 2,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"text\": \"3. The first character of your username must be ascii letter (a-z) or number (0-9).\"\r\n\r\n }\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"firstname\",\r\n \"options\": {\r\n \"row\": 3,\r\n \"col\": 0,\r\n \"width\": 6,\r\n \"label\": \"First Name\",\r\n \"name\": \"User.FirstName\"\r\n },\r\n\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"lastname\",\r\n \"options\": {\r\n \"row\": 3,\r\n \"col\": 0,\r\n \"width\": 6,\r\n \"label\": \"Last Name\",\r\n \"name\": \"User.LastName\"\r\n },\r\n\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"title\",\r\n \"options\": {\r\n \"row\": 4,\r\n \"col\": 0,\r\n \"width\": 6,\r\n \"label\": \"Title\",\r\n \"name\": \"Title\"\r\n },\r\n\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"email\",\r\n \"options\": {\r\n \"row\": 5,\r\n \"col\": 0,\r\n \"width\": 6,\r\n \"label\": \"Email\",\r\n \"name\": \"Email\"\r\n },\r\n\r\n },\r\n {\r\n \"type\": \"cformphonetext\",\r\n \"key\": \"Phone\",\r\n \"options\": {\r\n \"row\": 5,\r\n \"col\": 1,\r\n \"width\": 6,\r\n \"label\": \"Contact Number\",\r\n \"name\": \"Phone\"\r\n }\r\n },\r\n {\r\n \"type\": \"formswitch\",\r\n \"key\": \"statusswitch\",\r\n \"options\": {\r\n \"row\": 6,\r\n \"col\": 0,\r\n \"width\": 6,\r\n \"label\": \"Status\",\r\n \"name\": \"User.Status\",\r\n confirmation: true,\r\n \"transformProps\": {\r\n \"A\": true,\r\n \"I\": false,\r\n true: \"A\",\r\n false: \"I\"\r\n }\r\n }\r\n },\r\n\r\n {\r\n \"type\": \"formcheckbox\",\r\n \"key\": \"official\",\r\n \"options\": {\r\n \"row\": 6,\r\n \"col\": 1,\r\n \"width\": 3,\r\n \"label\": \"Admin\",\r\n \"name\": \"IsOfficial\",\r\n // onlyLabel: true,\r\n initialvalue: 'N',\r\n // hidecond: getEnvVariable('IsSubModuleSelection'),\r\n // hideval: \"Y\",\r\n \"transformProps\": {\r\n \"Y\": true,\r\n \"N\": false,\r\n true: \"Y\",\r\n false: \"N\"\r\n }\r\n\r\n }\r\n },\r\n // {\r\n // \"type\": \"formcheckbox\",\r\n // \"key\": \"IsConsultant\",\r\n // \"options\": {\r\n // \"row\": 6,\r\n // \"col\": 2,\r\n // \"width\": 3,\r\n // \"label\": \"Consultant\",\r\n // \"name\": \"IsConsultant\",\r\n // // onlyLabel: true,\r\n // initialvalue: 'N',\r\n // \"transformProps\": {\r\n // \"Y\": true,\r\n // \"N\": false,\r\n // true: \"Y\",\r\n // false: \"N\"\r\n // }\r\n\r\n // }\r\n // },\r\n // {\r\n // \"type\": \"simplelink\",\r\n // \"order\": 6,\r\n // \"key\": \"signinpincoderesendpincode\",\r\n // \"options\": {\r\n // \"name\": \"pincoderesendlink\",\r\n // \"text\": \"Resend Activation Link\",\r\n // \"crud\": {\r\n // \"update\": {\r\n // \"post\": {\r\n // \"url\": getEnvVariable('MasterAdmin') + `/api/InternalUser/ResendActivationLink/` + getEnvVariable('ModuleKey'),\r\n // \"urlpath\": '/{UserId}',\r\n // \"customProps\": {\r\n // \"custom\": \"UserId\"\r\n // }\r\n // }\r\n // }\r\n // }\r\n // }\r\n // },\r\n {\r\n \"type\": \"historydate\",\r\n \"key\": \"datecreated\",\r\n \"options\": {\r\n \"row\": 8,\r\n \"col\": 0,\r\n \"width\": 6,\r\n \"text\": \"Created On : \",\r\n \"name\": \"CreatedOn\"\r\n }\r\n },\r\n {\r\n \"type\": \"historyuser\",\r\n \"key\": \"createdby\",\r\n \"options\": {\r\n \"row\": 8,\r\n \"col\": 1,\r\n \"width\": 6,\r\n \"text\": \"Created By : \",\r\n \"name\": \"CreatedByName\"\r\n }\r\n },\r\n {\r\n \"type\": \"historydate\",\r\n \"key\": \"updatedon\",\r\n \"options\": {\r\n \"row\": 9,\r\n \"col\": 0,\r\n \"width\": 6,\r\n \"text\": \"Updated On : \",\r\n \"name\": \"UpdatedOn\"\r\n }\r\n },\r\n {\r\n \"type\": \"historyuser\",\r\n \"key\": \"updatedbyname\",\r\n \"options\": {\r\n \"row\": 9,\r\n \"col\": 1,\r\n \"width\": 6,\r\n \"text\": \"Updated By : \",\r\n \"name\": \"UpdatedByName\"\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"tabkey\": 1,\r\n \"type\": \"formcontainer\",\r\n \"key\": \"updatepassword\",\r\n \"options\": {\r\n \"totalcolumns\": 2,\r\n \"totalrows\": 13,\r\n \"alignitem\": \"center\",\r\n \"title\": \"Update password\",\r\n // \"savebtn\": true,\r\n headerProps: {\r\n \"savebutton\": true,\r\n \"closebutton\": true,\r\n \"editbutton\": true,\r\n // \"navigateadd\": true,\r\n \"navigateview\": true,\r\n },\r\n designprops: true,\r\n \"tabadd\": true,\r\n \"formdata\": true,\r\n \"crud\": {\r\n \"update\": {\r\n \"post\": {\r\n \"url\": getEnvVariable('Admin') + '/api/Users/UpdatePassword',\r\n \"customProps\": {\r\n \"custom\": \"UserId\"\r\n }\r\n },\r\n\r\n }\r\n },\r\n \"validations\": [\r\n {\r\n get: {\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/ProjectMessages/RulesByName?name=master.users`\r\n },\r\n transformProps: {\r\n name: 'Key',\r\n subfieldname: 'MASTER.USERS_',\r\n }\r\n },\r\n ],\r\n },\r\n \"components\": [\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"newpassword\",\r\n \"options\": {\r\n \"row\": 1,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"label\": \"New Password\",\r\n \"name\": \"newpassword\",\r\n \"xtype\": \"password\"\r\n },\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"Password\",\r\n \"options\": {\r\n \"row\": 2,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"label\": \"Confirm Password\",\r\n \"name\": \"Password\",\r\n \"xtype\": \"password\",\r\n dependency: {\r\n equal: 'newpassword'\r\n },\r\n },\r\n },\r\n {\r\n \"type\": \"infotext\",\r\n \"key\": \"Infotext\",\r\n \"options\": {\r\n \"row\": 2,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"text\": \"Password Policy:\",\r\n\r\n }\r\n },\r\n {\r\n \"type\": \"infotext\",\r\n \"key\": \"Infotext\",\r\n \"options\": {\r\n \"row\": 2,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"text\": \"1. Password must contain at least 10 characters.\",\r\n\r\n }\r\n },\r\n {\r\n \"type\": \"infotext\",\r\n \"key\": \"Infotext\",\r\n \"options\": {\r\n \"row\": 2,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"text\": \"2. Password should includes 1 Uppercase Alphabet[A-Z], 1 Lowercase Alphabet[a-z], 1 number[0-9], 1 Special Character.\",\r\n\r\n }\r\n },\r\n {\r\n \"type\": \"formcheckbox\",\r\n \"key\": \"IsForcePasswordUpdate\",\r\n \"options\": {\r\n \"row\": 8,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"label\": \"Require this user to change the password when login\",\r\n \"name\": \"IsForcePasswordUpdate\",\r\n initialvalue: 'N',\r\n \"transformProps\": {\r\n \"Y\": true,\r\n \"N\": false,\r\n true: \"Y\",\r\n false: \"N\"\r\n }\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n \"tabkey\": 2,\r\n ...externaluserloginhistory\r\n },\r\n\r\n ]\r\n }]\r\n }]\r\n}\r\n\r\nexport default companyinternal","import { getEnvVariable } from \"../../../modules/environmentalList\";\r\n\r\nconst newcompanyuser = {\r\n \"type\": \"slidingbutton\",\r\n \"key\": \"newcompanyuserslidingbutton\",\r\n \"options\": {\r\n \"row\": 8,\r\n \"col\": 2,\r\n \"width\": 2,\r\n \"buttonprops\": {\r\n \"text\": \"Add User\",\r\n \"size\": \"large\",\r\n \"color\": \"primary\",\r\n \"variant\": \"contained\"\r\n },\r\n excludefromresults: true,\r\n \"label\": \"User\",\r\n \"name\": \"User\",\r\n },\r\n open: true,\r\n \"components\": [\r\n {\r\n \"type\": \"formcontainer\",\r\n \"key\": \"newcompanyuserform\",\r\n \"options\": {\r\n \"totalcolumns\": 2,\r\n \"totalrows\": 13,\r\n \"title\": \"Users \",\r\n \"alignitem\": \"center\",\r\n \"reducername\": \"adminform\",\r\n \"routes\": [\r\n {\r\n \"route\": \"/companies\",\r\n \"routeParams\": \":routeid\",\r\n },\r\n {\r\n \"route\": \"/users/add\"\r\n },\r\n ],\r\n headerProps: {\r\n \"editbutton\": false,\r\n \"savebutton\": true,\r\n \"backbutton\": true,\r\n \"closebutton\": false,\r\n \"navigateadd\": true,\r\n \"breadcrumbs\": [\r\n // { \"link\": \"View/Edit Applicant\", href: \"#/companies\", popupclose: true, \"materialicon\": \"edit\", className: 'eps-breadcrumb-item ', class: 'text-light' },\r\n { \"link\": \"Add User\", \"materialicon\": \"person\", className: 'eps-breadcrumb-item', class: 'text-light' }\r\n ],\r\n },\r\n \"afterSaveroutes\": {\r\n \"route\": \"/companies/\",\r\n \"routeparams\": 'CompanyId',\r\n \"connectingroute\": '/users/view/',\r\n \"connectingrouteid\": 'UserId'\r\n },\r\n \"back\": {\r\n \"routes\": [\r\n {\r\n \"route\": \"/companies\",\r\n \"routeParams\": \"routeid\",\r\n },\r\n {\r\n \"route\": \"/users\",\r\n exactRoute: true\r\n },\r\n ],\r\n \"popupback\": true,\r\n \"issubgrid\": true\r\n },\r\n \"name\": \"newcompanyuserform\",\r\n \"crud\": {\r\n \"update\": {\r\n \"post\": {\r\n \"url\": getEnvVariable('MasterAdmin')+`/api/ExternalUser`,\r\n \"urlpath\": `/{Id}/`+getEnvVariable('ModuleKey')+`/Add`,\r\n \"routeProps\": [{\r\n \"custom\": \"Id\"\r\n }]\r\n }\r\n }\r\n },\r\n \"validations\": [\r\n {\r\n get: {\r\n \"url\": getEnvVariable('MasterAdmin')+`/api/ProjectMessages/RulesByName?name=master.users`\r\n },\r\n transformProps: {\r\n name: 'Key',\r\n subfieldname: 'MASTER.USERS_',\r\n addsubfieldname: 'USER.'\r\n }\r\n\r\n },\r\n // {\r\n // get: {\r\n // \"url\": getEnvVariable('MasterAdmin')+`/api/ProjectMessages/RulesByName?name=master.internalusers`\r\n // },\r\n // transformProps: {\r\n // name: 'Key',\r\n // subfieldname: 'MASTER.INTERNALUSERS_'\r\n // }\r\n\r\n // },\r\n {\r\n get: {\r\n \"url\": getEnvVariable('MasterAdmin')+`/api/ProjectMessages/RulesByName?name=master.contacts`\r\n },\r\n transformProps: {\r\n name: 'Key',\r\n subfieldname: 'MASTER.CONTACTS_',\r\n addsubfieldname: 'CONTACTS.'\r\n }\r\n\r\n }\r\n ]\r\n },\r\n \"formgridadd\": true,\r\n \"components\": [\r\n\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"username\",\r\n \"options\": {\r\n \"row\": 1,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"label\": \"Username\",\r\n \"name\": \"User.UserName\"\r\n },\r\n\r\n },\r\n {\r\n \"type\": \"infotext\",\r\n \"key\": \"Infotext\",\r\n \"options\": {\r\n \"row\": 2,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"text\": \"Username Policy:\",\r\n\r\n }\r\n },\r\n {\r\n \"type\": \"infotext\",\r\n \"key\": \"Infotext\",\r\n \"options\": {\r\n \"row\": 2,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"text\": \"1. Username can contain letters (a-z), numbers (0-9), underscore (_) and periods (.).\",\r\n }\r\n },\r\n {\r\n \"type\": \"infotext\",\r\n \"key\": \"Infotext\",\r\n \"options\": {\r\n \"row\": 2,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"text\": \"2. Username cannot contain an ampersand (&), equals sign (=), apostrophe ('), dash (-), plus sign (+), comma (,), brackets (<,>)\"\r\n\r\n }\r\n },\r\n {\r\n \"type\": \"infotext\",\r\n \"key\": \"Infotext\",\r\n \"options\": {\r\n \"row\": 2,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"text\": \"3. The first character of your username must be ascii letter (a-z) or number (0-9).\"\r\n\r\n }\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"firstname\",\r\n \"options\": {\r\n \"row\": 3,\r\n \"col\": 0,\r\n \"width\": 6,\r\n \"label\": \"First Name\",\r\n \"name\": \"User.FirstName\"\r\n },\r\n\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"lastname\",\r\n \"options\": {\r\n \"row\": 3,\r\n \"col\": 1,\r\n \"width\": 6,\r\n \"label\": \"Last Name\",\r\n \"name\": \"User.LastName\"\r\n },\r\n\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"title\",\r\n \"options\": {\r\n \"row\": 4,\r\n \"col\": 0,\r\n \"width\": 6,\r\n \"label\": \"Title\",\r\n \"name\": \"Title\"\r\n },\r\n\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"email\",\r\n \"options\": {\r\n \"row\": 5,\r\n \"col\": 0,\r\n \"width\": 6,\r\n \"label\": \"Email\",\r\n \"name\": \"Email\",\r\n removeotherfield : [\r\n {removefield : 'sendactivationlink', changedvalue: 'N'}\r\n ]\r\n },\r\n\r\n },\r\n {\r\n \"type\": \"cformphonetext\",\r\n \"key\": \"Phone\",\r\n \"options\": {\r\n \"row\": 5,\r\n \"col\": 1,\r\n \"width\": 6,\r\n \"label\": \"Contact Number\",\r\n \"name\": \"Phone\"\r\n }\r\n },\r\n {\r\n \"type\": \"formswitch\",\r\n \"key\": \"statusswitch\",\r\n \"options\": {\r\n \"row\": 6,\r\n \"col\": 0,\r\n \"width\": 2,\r\n \"label\": \"Status\",\r\n \"name\": \"User.Status\",\r\n confirmation: true,\r\n initialvalue: 'I',\r\n disabled: true,\r\n conditions: {\r\n enable: true,\r\n },\r\n \"transformProps\": {\r\n \"A\": true,\r\n \"I\": false,\r\n true: \"A\",\r\n false: \"I\"\r\n }\r\n }\r\n },\r\n {\r\n \"type\": \"formcheckbox\",\r\n \"key\": \"official\",\r\n \"options\": {\r\n \"row\": 6,\r\n \"col\": 1,\r\n \"width\": 2,\r\n \"label\": \"Admin\",\r\n \"name\": \"IsOfficial\",\r\n initialvalue: 'N',\r\n // onlyLabel: true,\r\n // hidecond: getEnvVariable('IsSubModuleSelection'),\r\n // hideval: \"Y\",\r\n \"transformProps\": {\r\n \"Y\": true,\r\n \"N\": false,\r\n true: \"Y\",\r\n false: \"N\"\r\n }\r\n }\r\n },\r\n // {\r\n // \"type\": \"formcheckbox\",\r\n // \"key\": \"IsConsultant\",\r\n // \"options\": {\r\n // \"row\": 6,\r\n // \"col\": 2,\r\n // \"width\": 3,\r\n // \"label\": \"Consultant\",\r\n // \"name\": \"IsConsultant\",\r\n // // onlyLabel: true,\r\n // initialvalue: 'N',\r\n // \"transformProps\": {\r\n // \"Y\": true,\r\n // \"N\": false,\r\n // true: \"Y\",\r\n // false: \"N\"\r\n // }\r\n\r\n // }\r\n // },\r\n {\r\n \"type\": \"formcheckbox\",\r\n \"key\": \"sendactivationlink\",\r\n \"options\": {\r\n \"row\": 6,\r\n \"col\": 3,\r\n \"width\": 4,\r\n \"label\": \"Send Activation Link\",\r\n \"name\": \"IsActivationLink\",\r\n initialvalue: 'N',\r\n \"transformProps\": {\r\n \"Y\": true,\r\n \"N\": false,\r\n true: \"Y\",\r\n false: \"N\"\r\n },\r\n conditions: {\r\n hide: [{ 'Email': '' }],\r\n },\r\n }\r\n },\r\n ]\r\n }]\r\n}\r\n\r\nexport default newcompanyuser;","import { getEnvVariable } from '../../../modules/environmentalList';\r\nimport newsavedreportstypes from '../../reports/savedreports';\r\nimport comapanyuser from './edit';\r\nimport newcomapanyuser from './new';\r\nconst companyusersgrid = {\r\n \"type\": \"grid\",\r\n \"key\": \"companyusersgrid\",\r\n \"gridkey\": 'companyusersgrid',\r\n \"order\": 1,\r\n \"options\": {\r\n sidepopupgridheight: true,\r\n \"routes\": [\r\n {\r\n \"route\": \"/companies\",\r\n \"routeParams\": \":routeid\",\r\n },\r\n {\r\n \"route\": \"/users\"\r\n },\r\n ],\r\n \"crud\": {\r\n \"update\": {\r\n \"link\": [\r\n {\r\n \"link\": \"/companies\",\r\n \"matchProps\": {\r\n \"value\": \"routeid\"\r\n }\r\n },\r\n {\r\n \"link\": \"/users/view\",\r\n \"matchProps\": {\r\n \"value\": \"UserId\"\r\n }\r\n },\r\n ]\r\n },\r\n \"read\": {\r\n \"get\": {\r\n \"url\": getEnvVariable('MasterAdmin')+`/api/ExternalUser/Grid/`+getEnvVariable('ModuleKey')+`/{Id}`,\r\n \"customProps\": {\r\n \"value\": \"Id\"\r\n }\r\n }\r\n }\r\n },\r\n \"back\": {\r\n \"routes\": [\r\n {\r\n \"route\": \"/companies/view\",\r\n \"routeParams\": \"routeid\",\r\n },\r\n ],\r\n },\r\n \"childGrid\": true,\r\n \"sidebar\": true,\r\n \"formgrid\": true,\r\n headerProps: {\r\n title: \"Users\",\r\n customheader: true,\r\n headerProps:{\r\n //designprops: true,\r\n kendogridprops: true,\r\n title: \"Users\",\r\n actions: [\r\n {\r\n type: 'fab',\r\n icon: 'clear',\r\n name: 'clear',\r\n color: 'primary',\r\n title: 'Clear Filters',\r\n menucolor: '#22a9b3'\r\n },\r\n\r\n {\r\n type: 'menu',\r\n icon: 'excel',\r\n name: 'excel',\r\n color: 'primary',\r\n title: 'Export to Excel',\r\n menucolor: '#c90685',\r\n items: [{\r\n name: 'Export Current Page',\r\n action: 'filtercurrent'\r\n },\r\n {\r\n name: 'Export All Pages',\r\n action: 'filterall'\r\n }\r\n ]\r\n },\r\n {\r\n type: 'fab',\r\n icon: 'add',\r\n name: 'add',\r\n color: 'primary',\r\n title: 'Add Users ',\r\n menucolor: '#36088a'\r\n },\r\n\r\n ]\r\n }\r\n },\r\n \"afterSaveroutes\": {\r\n \"route\": \"/Administration/agencyusers/\",\r\n \"routeparams\": 'UserId'\r\n },\r\n savedreports: {\r\n ...newsavedreportstypes\r\n },\r\n \"components\": [\r\n comapanyuser\r\n ],\r\n \"addcomponents\": [\r\n newcomapanyuser\r\n ],\r\n \"gridcolumns\": [\r\n {\r\n \"title\": \"Username\",\r\n \"field\": \"User.UserName\",\r\n \"show\": true,\r\n \"width\": 185\r\n },\r\n {\r\n \"title\": \"First Name\",\r\n \"field\": \"User.FirstName\",\r\n \"show\": true,\r\n \"width\": 150\r\n },\r\n {\r\n \"title\": \"Last Name\",\r\n \"field\": \"User.LastName\",\r\n \"show\": true,\r\n \"width\": 150\r\n },\r\n {\r\n \"title\": \"Email\",\r\n \"field\": \"Email\",\r\n \"show\": true,\r\n \"width\": 250\r\n },\r\n {\r\n \"title\": \"Contact Number\",\r\n \"field\": \"Phone\",\r\n \"show\": true,\r\n \"width\": 150\r\n },\r\n {\r\n \"title\": \"Status\",\r\n \"field\": \"User.Status\",\r\n \"show\": false,\r\n \"width\": 150\r\n },\r\n {\r\n \"title\": \"Created By\",\r\n \"field\": \"CreatedByName\",\r\n \"show\": true,\r\n \"width\": 185\r\n },\r\n {\r\n \"title\": \"Created On\",\r\n \"field\": \"CreatedOn\",\r\n \"show\": true,\r\n \"width\": 185\r\n },\r\n {\r\n \"title\": \"Updated By\",\r\n \"field\": \"UpdatedByName\",\r\n \"show\": true,\r\n \"width\": 185\r\n },\r\n {\r\n \"title\": \"Updated On\",\r\n \"field\": \"UpdatedOn\",\r\n \"show\": true,\r\n \"width\": 185\r\n }\r\n ]\r\n }\r\n}\r\n\r\nexport default companyusersgrid;","\r\nimport { getEnvVariable } from '../../modules/environmentalList';\r\nimport SelectedApplicants from './associatedapplicants';\r\nimport externaluserloginhistory from './externaluserloginhistory';\r\nimport users from './users/grid';\r\n\r\nconst companyinternal = {\r\n \"type\": \"slidingbutton\",\r\n \"key\": \"companyconsultantinternaluserslidingbutton\",\r\n \"options\": {\r\n \"row\": 6,\r\n \"col\": 4,\r\n \"width\": 2,\r\n \"buttonprops\": {\r\n \"text\": \"Consultant\",\r\n \"size\": \"large\",\r\n \"color\": \"primary\",\r\n \"variant\": \"contained\"\r\n },\r\n excludefromresults: true,\r\n \"label\": \"Consultant\",\r\n \"name\": \"Consultant\",\r\n receiveValues: [{ paramname: 'Id', valuefromparent: 'Id' }],\r\n },\r\n open: true,\r\n components: [{\r\n \"type\": \"formcontainer\",\r\n \"key\": \"companyinternaluserform\",\r\n \"viewroutesId\": \"Id\",\r\n \"options\": {\r\n \"title\": \"Consultant\",\r\n headerProps: {\r\n \"navigateup\": true,\r\n \"navigatedown\": true,\r\n \"editbutton\": false,\r\n \"savebutton\": false,\r\n \"backbutton\": true,\r\n \"closebutton\": false,\r\n \"navigateview\": true,\r\n \"breadcrumbs\": [\r\n { \"link\": \"Consultant\", \"materialicon\": \"connect_without_contact\", className: 'eps-breadcrumb-item', class: 'text-light' }\r\n ],\r\n },\r\n\r\n hidescroll: true,\r\n \"name\": \"companyinternaluserform\",\r\n \"back\": {\r\n \"routes\": [{\r\n \"route\": \"/consultants\",\r\n \"exactRoute\": true\r\n },],\r\n \"popupback\": true,\r\n },\r\n },\r\n \"sidepopupadd\": true,\r\n \"components\": [\r\n {\r\n \"type\": \"ctab\",\r\n \"key\": \"companycinternalusertabform\",\r\n hidemargin: true,\r\n \"name\": \"companycinternalusertabform\",\r\n excludefromresults: true,\r\n \"options\": {\r\n tabinfo: [\r\n {\r\n tablabel: \"View/Edit Consultant\",\r\n tabkey: 0\r\n },\r\n {\r\n tablabel: \"Users\",\r\n tabkey: 1\r\n },\r\n {\r\n tablabel: \"Associate Applicants\",\r\n tabkey: 2,\r\n },\r\n\r\n\r\n ],\r\n },\r\n components: [\r\n {\r\n \"tabkey\": 0,\r\n \"type\": \"formcontainer\",\r\n \"key\": \"companyuserform\",\r\n \"options\": {\r\n \"totalcolumns\": 2,\r\n \"totalrows\": 13,\r\n \"title\": \"User \",\r\n \"alignitem\": \"center\",\r\n \"routes\": [\r\n {\r\n \"route\": \"/consultants\",\r\n \"routeParams\": \":routeid\",\r\n },\r\n ],\r\n styles: {\r\n margin: 15\r\n }, headerProps: {\r\n \"editbutton\": true,\r\n \"savebutton\": true,\r\n \"backbutton\": true,\r\n \"closebutton\": false,\r\n \"navigateview\": true,\r\n \"breadcrumbs\": [\r\n // { \"link\": \"View/Edit Applicant\", href: \"#/companies\", popupclose: true, \"materialicon\": \"edit\", className: 'eps-breadcrumb-item ', class: 'text-light' },\r\n { \"link\": \"Consultants\", \"materialicon\": \"person\", className: 'eps-breadcrumb-item', class: 'text-light' }\r\n ],\r\n },\r\n designprops: true,\r\n \"name\": \"consultantform\",\r\n \"afterSaveroutes\": {\r\n \"route\": \"/consultants/view/\",\r\n \"routeparams\": 'Id'\r\n },\r\n \"back\": {\r\n \"routes\": [\r\n {\r\n \"route\": \"/consultants\",\r\n \"exactRoute\": true\r\n },\r\n ],\r\n },\r\n \"crud\": {\r\n \"read\": {\r\n \"get\": {\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/CompanyInternal/` + getEnvVariable('ModuleKey'),\r\n \"customProps\": {\r\n \"value\": \"Id\"\r\n }\r\n }\r\n },\r\n \"update\": {\r\n \"put\": {\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/CompanyInternal`,\r\n \"urlpath\": '/Update/{Id}/' + getEnvVariable('ModuleKey'),\r\n \"customProps\": [{\r\n \"custom\": \"Id\"\r\n }]\r\n }\r\n }\r\n },\r\n \"validations\": [\r\n {\r\n get: {\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/ProjectMessages/RulesByName?name=master.companies`\r\n },\r\n transformProps: {\r\n name: 'Key',\r\n subfieldname: 'MASTER.COMPANIES_'\r\n }\r\n\r\n },\r\n {\r\n get: {\r\n \"url\": getEnvVariable('Admin') + `/api/ProjectMessages/RulesByName?name=admin.contactaddress`\r\n },\r\n transformProps: {\r\n name: 'Key',\r\n subfieldname: 'ADMIN.CONTACTADDRESS_',\r\n //addsubfieldname: 'CONTACTADDRESS.'\r\n }\r\n }\r\n ]\r\n },\r\n \"components\": [\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"name\",\r\n \"options\": {\r\n \"row\": 0,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"label\": \"Consultant Name\",\r\n \"name\": \"Name\"\r\n },\r\n\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"address1\",\r\n \"options\": {\r\n \"row\": 1,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"label\": \"Address Line 1\",\r\n \"name\": \"Contacts.PrimaryContactAddress.AddressLine1\"\r\n },\r\n\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"address2\",\r\n \"options\": {\r\n \"row\": 2,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"label\": \"Address Line 2\",\r\n \"name\": \"Contacts.PrimaryContactAddress.AddressLine2\"\r\n },\r\n\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"city\",\r\n \"options\": {\r\n \"row\": 3,\r\n \"col\": 0,\r\n \"width\": 6,\r\n \"label\": \"City\",\r\n \"name\": \"Contacts.PrimaryContactAddress.City\"\r\n },\r\n\r\n },\r\n {\r\n \"type\": \"formdropdown\",\r\n \"key\": \"state\",\r\n \"options\": {\r\n \"row\": 3,\r\n \"col\": 1,\r\n \"width\": 6,\r\n \"label\": \"State\",\r\n \"name\": \"Contacts.PrimaryContactAddress.State\",\r\n \"id\": \"stateformdropdown\",\r\n \"crud\": {\r\n \"read\": {\r\n \"get\": {\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/Domains/values?domainkey=US_STATES`\r\n }\r\n }\r\n },\r\n \"transformProps\": {\r\n \"value\": \"Value\",\r\n \"name\": \"Name\"\r\n }\r\n\r\n }\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"zip\",\r\n \"options\": {\r\n \"row\": 4,\r\n \"col\": 0,\r\n \"width\": 6,\r\n \"label\": \"Zip\",\r\n \"name\": \"Contacts.PrimaryContactAddress.Zip\"\r\n },\r\n\r\n },\r\n // {\r\n // \"type\": \"formtextbox\",\r\n // \"key\": \"companyemail\",\r\n // \"options\": {\r\n // \"row\": 4,\r\n // \"col\": 1,\r\n // \"width\": 6,\r\n // \"xtype\": \"email\",\r\n // \"label\": \"Email\",\r\n // \"name\": \"Contacts.PrimaryContactAddress.Email\"\r\n // },\r\n\r\n // },\r\n {\r\n \"type\": \"cformphonetext\",\r\n \"key\": \"Phone\",\r\n \"options\": {\r\n \"row\": 5,\r\n \"col\": 0,\r\n \"width\": 6,\r\n \"label\": \"Office Phone\",\r\n \"name\": \"Contacts.PrimaryContactAddress.Phone\"\r\n }\r\n },\r\n {\r\n \"type\": \"cformphonetext\",\r\n \"key\": \"Phone\",\r\n \"options\": {\r\n \"row\": 5,\r\n \"col\": 1,\r\n \"width\": 6,\r\n \"label\": \"Mobile Phone\",\r\n \"name\": \"Contacts.PrimaryContactAddress.SecondaryPhone\"\r\n }\r\n },\r\n {\r\n \"type\": \"cformphonetext\",\r\n \"key\": \"Phone\",\r\n \"options\": {\r\n \"row\": 6,\r\n \"col\": 0,\r\n \"width\": 6,\r\n \"label\": \"Home Phone\",\r\n \"name\": \"Contacts.PrimaryContactAddress.HomePhone\"\r\n }\r\n },\r\n {\r\n \"type\": \"cformphonetext\",\r\n \"key\": \"Fax\",\r\n \"options\": {\r\n \"row\": 6,\r\n \"col\": 1,\r\n \"width\": 6,\r\n \"label\": \"Fax/Others\",\r\n \"name\": \"Contacts.PrimaryContactAddress.Fax\"\r\n }\r\n },\r\n // {\r\n // \"type\": \"formtextbox\",\r\n // \"key\": \"MaxUsers\",\r\n // \"options\": {\r\n // \"row\": 7,\r\n // \"col\": 0,\r\n // \"width\": 6,\r\n // \"label\": \"Max Users\",\r\n // \"name\": \"MaxUsers\",\r\n // \"xtype\": \"number\",\r\n // \"inputProps\": { min: 1 },\r\n // conditions: {\r\n // hideall: true\r\n // },\r\n // }\r\n // },\r\n {\r\n \"type\": \"formswitch\",\r\n \"key\": \"switch\",\r\n \"options\": {\r\n \"row\": 8,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"label\": \"Status\",\r\n \"name\": \"Status\",\r\n \"transformProps\": {\r\n \"A\": true,\r\n \"I\": false,\r\n true: \"A\",\r\n false: \"I\"\r\n }\r\n }\r\n },\r\n // {\r\n // \"type\": \"submoduleselection\",\r\n // \"key\": \"SubModuleKey\",\r\n // \"options\": {\r\n // \"row\": 9,\r\n // \"col\": 0,\r\n // \"width\": 6,\r\n // \"label\": \"\",\r\n // \"text\": \"SubModuleKey\",\r\n // \"name\": \"CompaniesModules\",\r\n // \"islabel\": true,\r\n // \"labelinfo\": \"Grant module access for\",\r\n // \"titleinfo\": \"Are you sure you want grant module access?\",\r\n // \"urlinfo\": \"grant\"\r\n // // \"transformProps\": {\r\n // // \"Y\": true,\r\n // // \"N\": false,\r\n // // true: \"Y\",\r\n // // false: \"N\"\r\n // // }\r\n // }\r\n // },\r\n {\r\n \"type\": \"historydate\",\r\n \"key\": \"datecreated\",\r\n \"options\": {\r\n \"row\": 11,\r\n \"col\": 0,\r\n \"width\": 6,\r\n \"text\": \"Created On : \",\r\n \"name\": \"CreatedOn\"\r\n }\r\n },\r\n {\r\n \"type\": \"historyuser\",\r\n \"key\": \"createdby\",\r\n \"options\": {\r\n \"row\": 11,\r\n \"col\": 1,\r\n \"width\": 6,\r\n \"text\": \"Created By : \",\r\n \"name\": \"CreatedByName\"\r\n }\r\n },\r\n {\r\n \"type\": \"historydate\",\r\n \"key\": \"updatedon\",\r\n \"options\": {\r\n \"row\": 12,\r\n \"col\": 0,\r\n \"width\": 6,\r\n \"text\": \"Updated On : \",\r\n \"name\": \"UpdatedOn\"\r\n }\r\n },\r\n {\r\n \"type\": \"historyuser\",\r\n \"key\": \"updatedbyname\",\r\n \"options\": {\r\n \"row\": 12,\r\n \"col\": 1,\r\n \"width\": 6,\r\n \"text\": \"Updated By : \",\r\n \"name\": \"UpdatedByName\"\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"tabkey\": 1,\r\n ...users\r\n },\r\n {\r\n \"tabkey\": 2,\r\n ...SelectedApplicants\r\n },\r\n\r\n\r\n ]\r\n }]\r\n }]\r\n}\r\n\r\nexport default companyinternal","import { getEnvVariable } from '../../modules/environmentalList';\r\nimport newsavedreportstypes from '../reports/savedreports';\r\nimport consultantuser from './consultant';\r\n\r\nconst consultantgrid = {\r\n \"type\": \"grid\",\r\n \"key\": \"consultantsgrid\",\r\n \"gridkey\": 'consultantsgrid',\r\n \"custompropsvalue\": \"Id\",\r\n \"options\": {\r\n // \"gridheightfortabs\": true,\r\n \"custompropsvalue\": \"Id\",\r\n \"routes\": {\r\n \"route\": \"/Administration/consultants/:Id?\"\r\n },\r\n \"crud\": {\r\n \"update\": {\r\n \"link\": {\r\n \"link\": \"/consultants/view\",\r\n \"matchProps\": {\r\n \"value\": \"Id\"\r\n }\r\n }\r\n },\r\n \"read\": {\r\n \"get\": {\r\n // \"url\": getEnvVariable('MasterAdmin') + `/api/CompanyInternal/` + getEnvVariable('ModuleKey') + `/Grid`,\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/CompanyInternal/` + getEnvVariable('ModuleKey') + `/Consultants/Grid`,\r\n }\r\n }\r\n },\r\n \"sidebar\": true,\r\n headerProps: {\r\n title: \"Consultants\",\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": \"Administration\", \"materialicon\": \"spellcheck\", href: getEnvVariable('InternalBasepath'), className: 'breadcrumb-item text-dark', class: 'text-dark' },\r\n { \"link\": \"Consultants\", href: \"#/consultants\", \"materialicon\": \"connect_without_contact\", className: 'breadcrumb-item ', class: '' }\r\n ],\r\n }\r\n ],\r\n actions: [\r\n {\r\n type: 'fab',\r\n icon: 'clear',\r\n name: 'clear',\r\n color: 'primary',\r\n title: 'Clear Filters',\r\n menucolor: '#22a9b3'\r\n },\r\n\r\n {\r\n type: 'menu',\r\n icon: 'excel',\r\n name: 'excel',\r\n color: 'primary',\r\n title: 'Export to Excel',\r\n menucolor: '#c90685',\r\n items: [{\r\n name: 'Export Current Page',\r\n action: 'filtercurrent'\r\n },\r\n {\r\n name: 'Export All Pages',\r\n action: 'filterall'\r\n }\r\n ]\r\n },\r\n {\r\n type: 'fab',\r\n icon: 'reports',\r\n name: 'reports',\r\n color: 'primary',\r\n title: 'Save Report',\r\n menucolor: '#C85A54'\r\n },\r\n\r\n ]\r\n },\r\n savedreports: {\r\n ...newsavedreportstypes\r\n },\r\n \"components\": [\r\n consultantuser\r\n\r\n ],\r\n \"gridcolumns\": [\r\n {\r\n \"title\": \"Consultant ID\",\r\n \"field\": \"Id\",\r\n \"show\": true,\r\n \"width\": 250\r\n },\r\n {\r\n \"title\": \"Consultant Name\",\r\n \"field\": \"Name\",\r\n \"show\": true,\r\n \"width\": 250\r\n },\r\n\r\n // {\r\n // \"title\": \"Address Line 1\",\r\n // \"field\": \"Contacts.PrimaryContactAddress.AddressLine1\",\r\n // \"show\": true,\r\n // \"width\": 250\r\n // },\r\n\r\n // {\r\n // \"title\": \"Office Phone\",\r\n // \"field\": \"Contacts.PrimaryContactAddress.Phone\",\r\n // \"show\": true,\r\n // \"width\": 200\r\n // },\r\n {\r\n \"title\": \"Status\",\r\n \"field\": \"StatusDesc\",\r\n \"show\": true,\r\n \"width\": 150\r\n },\r\n\r\n {\r\n \"title\": \"Created By\",\r\n \"field\": \"CreatedByName\",\r\n \"show\": true,\r\n \"width\": 185\r\n },\r\n {\r\n \"title\": \"Created On\",\r\n \"field\": \"CreatedOn\",\r\n \"show\": true,\r\n \"width\": 185\r\n },\r\n {\r\n \"title\": \"Updated By\",\r\n \"field\": \"UpdatedByName\",\r\n \"show\": true,\r\n \"width\": 185\r\n },\r\n {\r\n \"title\": \"Updated On\",\r\n \"field\": \"UpdatedOn\",\r\n \"show\": true,\r\n \"width\": 185\r\n },\r\n ]\r\n }\r\n}\r\n\r\nexport default consultantgrid","import { getEnvVariable } from \"../../modules/environmentalList\";\r\n\r\nconst map = {\r\n \"type\": \"map\",\r\n \"key\": \"EPS_map_GRID\", \r\n \"order\": 32,\r\n \"options\": {\r\n \"mapkey\":\"EPS_map_GRID\", \r\n \"routes\": {\r\n \"route\": \"/\",\r\n },\r\n \"hastaxlotlayer\":\"N\",\r\n \"alignitem\": \"left\",\r\n \"widgets\": [\"Home\",\"Zoom\", \"BasemapGallery\", \"Search\", \"LayerList\", \"Measurement\", \"Print\", \"Select\",\"LayerFilter\"], // [\"Locate\", \"Home\", \"Search\", \"Zoom\", \"Measurement\", \"Draw\", \"Sketch\", \"BasemapGallery\", \"LayerList\", \"Bookmark\"], \r\n \"basemap\": \"streets\",//\"streets\", \"satellite\", \"hybrid\", \"terrain\", \"topo\", \"gray\", \"dark-gray\", \"oceans\", \"national-geographic\", \"osm\", \"dark-gray-vector\", \"gray-vector\", \"streets-vector\", \"topo-vector\", \"streets-night-vector\", \"streets-relief-vector\", \"streets-navigation-vector\"\r\n \"viewProperties\": {\r\n // \"extent\": {\r\n // \"xmax\": -8057114.558988379,\r\n // \"xmin\": -8679311.969229413,\r\n // \"ymax\": 4872179.908902848,\r\n // \"ymin\": 4605567.554244282,\r\n // \"spatialReference\": 102100 \r\n // },\r\n \"zoom\": 12,\r\n \"center\": [-8424171.646132585,4680123.621274437],\r\n \"ui\": {\r\n \"components\": [\"attribution\"]// [\"compass\", \"attribution\"] // empty the UI, except for attribution\r\n }\r\n },\r\n \"printOptions\":{\r\n \"serviceURL\":\"https://utility.arcgisonline.com/arcgis/rest/services/Utilities/PrintingTools/GPServer/Export%20Web%20Map%20Task\" \r\n }, \r\n \"zoomOptions\": {\r\n \"maxZoomed\": false,\r\n \"minZoomed\": false\r\n }, \r\n 'searchbookmarks':{\r\n \"drawTool\":' Hello I ma me',\r\n \"url\":getEnvVariable('ArcGIS')+`/rest/services/AWS_KEPT_Test/Bookmarks/FeatureServer/0`,\r\n \"defaultChoice\":'E',\r\n \"defaultName\":'Bookmark #',\r\n \"defaultSymbol\":{\r\n type: \"simple-fill\",\r\n outline: {\r\n style: \"dash\",\r\n miterLimit: 16,\r\n color: [0, 112, 255, 1]\r\n },\r\n color: [115, 223, 255, 0.24]\r\n },\r\n \"defaultMessage\":'Draw Box on Map for Bookmark',\r\n 'appname':'INQUERY',\r\n 'username':'13384'\r\n },\r\n \"LayerOptionsConfig\":\r\n {\r\n \"Category\": [\"A\",\"F\"],\r\n \"MapType\": [\"G\"] //A-Add Record,L-Landing,G-Grid,R-Record review \r\n },\r\n \"LayerOptions\": [ \r\n {\r\n \"ExtentZoom\": true,//CenterAndZoom after load\r\n \"title\": \"CenterGeomService\",\r\n \"type\": \"F\",//F-FeatureLayer,G-GraphicsLayer\r\n \"url\": getEnvVariable('ArcGIS')+`/rest/services/EPS/MasterTable_Center_Geom_Service/MapServer/0`,\r\n \"outFields\": [\"*\"] \r\n //popupTemplate : {} //https://developers.arcgis.com/javascript/latest/api-reference/esri-PopupTemplate.html\r\n }\r\n // ,{\r\n // \"ExtentZoom\": true,//CenterAndZoom after load\r\n // \"title\": \"STATE_MAINTAINED\",\r\n // \"type\": \"M\",//F-FeatureLayer,G-GraphicsLayer\r\n // \"url\": `https://firstmap.gis.delaware.gov/arcgis/rest/services/Transportation/DE_STATE_MAINTAINED_ROADS/MapServer`,\r\n // \"outFields\": [\"*\"] \r\n // }, \r\n ],\r\n \"FeatureLayerListOptions\":[],\r\n }\r\n};\r\n\r\nexport default map;","import { Button, Fab, Icon, IconButton } from '@material-ui/core';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardActions from '@material-ui/core/CardActions';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport Pageview from '@material-ui/icons/Info';\r\nimport SettingsIcon from '@material-ui/icons/Settings';\r\nimport { process, toDataSourceRequestString } from '@progress/kendo-data-query';\r\nimport { ExcelExport } from '@progress/kendo-react-excel-export';\r\nimport { Grid as KendoGrids, GridColumn as Column, GridColumnMenuFilter } from \"@progress/kendo-react-grid\";\r\nimport { Splitter } from \"@progress/kendo-react-layout\";\r\nimport React, { Fragment, useEffect, useRef, useState } from 'react';\r\nimport Asynchronous from '../../core/controls/components/autocomplete';\r\nimport MultiDropDown from '../../core/controls/components/checkautocomplete';\r\nimport Breadcrumbs from '../../core/controls/components/breadcrumbs';\r\nimport CheckBox from '../../core/controls/components/checkbox';\r\nimport { CustomColumnMenu } from '../../core/controls/components/customColumnMenu';\r\nimport DatePickers from '../../core/controls/components/datepicker';\r\nimport Dropdown from '../../core/controls/components/dropdown';\r\nimport GridHeader from '../../core/controls/components/kendoheader';\r\nimport NumberFormat from '../../core/controls/components/numberformat';\r\nimport RadioButtonsGroup from '../../core/controls/components/radiogroup';\r\nimport DefaultSettings from '../../core/controls/components/settings';\r\nimport Textbox from '../../core/controls/components/textbox';\r\nimport { createRequest, requestApi } from '../../core/controls/helpers/rest';\r\nimport Map from '../../core/modules/map/map';\r\nimport AddRecordMapJson from '../../json/map/permitsgridmap';\r\nimport { getEnvVariable } from '../environmentalList';\r\nimport { filter } from 'lodash';\r\n\r\nconst breadcrumbs = {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": \"Dashboard\", \"tab\": 'D', \"materialicon\": \"dashboard\", href: getEnvVariable('AccessPortal') === 'I' ? getEnvVariable('InternalBasepath') : getEnvVariable('ExternalBasepath'), className: 'breadcrumb-item text-dark', class: 'text-dark'},\r\n { \"link\": \"Search\", href: \"#/search\", \"materialicon\": \"search\", className: 'breadcrumb-item', class: 'text-light'}\r\n ],\r\n}\r\n\r\nconst PermitOptions = {\r\n 'AMES': [\r\n\r\n {\r\n FieldKey: 'module', FieldDisplayName: 'Module', UIFieldTypeComponent: 'DS', url: {\r\n url: getEnvVariable('MasterAdmin') + `/api/Module/${getEnvVariable('ModuleKey')}/SubModule/All/Active`,\r\n type: 'get'\r\n }, className: \"col-4\", extraProps: {\r\n transformProps: {\r\n label: 'SubModuleName',\r\n value: 'Key',\r\n }\r\n }\r\n },\r\n {\r\n FieldKey: 'SITE_PERMIT_TYPE', className: \"col-4\", FieldDisplayName: 'Request Type', UIFieldTypeComponent: 'DS', url: {\r\n url: getEnvVariable('AdminConfig') + `/api/SitePermitTypes/SubModuleKey/Active/{module}`,\r\n type: 'get',\r\n matchProps: [\r\n {\r\n\r\n name: \"module\",\r\n key: \"module\",\r\n },\r\n ]\r\n }, className: \"col-4\", dependency: 'module', //disabled: true,//disabledBy: 'module',\r\n extraProps: {\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Id',\r\n }\r\n }\r\n }\r\n ],\r\n 'WRS': [\r\n\r\n {\r\n FieldKey: 'module', FieldDisplayName: 'Module', UIFieldTypeComponent: 'DS', url: {\r\n url: getEnvVariable('MasterAdmin') + `/api/Module/${getEnvVariable('ModuleKey')}/SubModule/All/Active`,\r\n type: 'get'\r\n }, className: \"col-4\", extraProps: {\r\n transformProps: {\r\n label: 'SubModuleName',\r\n value: 'Key',\r\n }\r\n }\r\n },\r\n {\r\n FieldKey: 'SITE_PERMIT_TYPE', className: \"col-4\", FieldDisplayName: 'Request Type', UIFieldTypeComponent: 'DS', url: {\r\n url: getEnvVariable('AdminConfig') + `/api/SitePermitTypes/SubModuleKey/Active/{module}`,\r\n type: 'get',\r\n matchProps: [\r\n {\r\n\r\n name: \"module\",\r\n key: \"module\",\r\n },\r\n ]\r\n }, className: \"col-4\", dependency: 'module', //disabled: true,//disabledBy: 'module',\r\n extraProps: {\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Id',\r\n }\r\n }\r\n }\r\n ]\r\n}\r\nconst QuickSearchOptions = {\r\n 'AMES': [\r\n {\r\n FieldKey: 'SEARCH_CRITERIA', FieldDisplayName: 'Search Criteria', UIFieldTypeComponent: 'DS', className: \"col-4\", extraProps: {\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Value',\r\n }\r\n },\r\n },\r\n {\r\n FieldKey: 'SearchKey', FieldDisplayName: 'Search Key', UIFieldTypeComponent: 'TB', className: \"col-4\",\r\n conditions: [{ name: 'SEARCH_CRITERIA', value: '0' }]\r\n\r\n }\r\n ],\r\n 'WRS': [\r\n {\r\n FieldKey: 'SEARCH_CRITERIA', FieldDisplayName: 'Search Criteria', UIFieldTypeComponent: 'DS', className: \"col-4\", extraProps: {\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Value',\r\n }\r\n },\r\n },\r\n {\r\n FieldKey: 'SearchKey', FieldDisplayName: 'Search Key', UIFieldTypeComponent: 'TB', className: \"col-4\",\r\n conditions: [{ name: 'SEARCH_CRITERIA', value: '0' }]\r\n },\r\n {\r\n FieldKey: 'SearchKey', FieldDisplayName: 'Search Key', UIFieldTypeComponent: 'DM', className: \"col-4\", ismulti: true,\r\n extraProps: {\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Id',\r\n }\r\n }\r\n },\r\n {\r\n FieldKey: 'SearchKey', FieldDisplayName: 'Search Key', UIFieldTypeComponent: 'DS', className: \"col-4\",\r\n extraProps: {\r\n transformProps: {\r\n label: 'StatusName',\r\n value: 'Id',\r\n }\r\n }\r\n }\r\n ]\r\n}\r\n\r\nconst headerProps = {\r\n title: \"Contact\",\r\n\r\n actions: [\r\n {\r\n type: 'fab',\r\n icon: 'clear',\r\n name: 'clear',\r\n color: 'primary',\r\n title: 'Clear Filters',\r\n menucolor: '#22a9b3',\r\n hideon: 'clear',\r\n hidevalue: false\r\n },\r\n\r\n {\r\n type: 'menu',\r\n icon: 'excel',\r\n name: 'excel',\r\n color: 'primary',\r\n title: 'Export to Excel',\r\n menucolor: '#c90685',\r\n hideon: 'excel',\r\n hidevalue: false,\r\n items: [{\r\n name: 'Export Current Page',\r\n action: 'filtercurrent'\r\n },\r\n {\r\n name: 'Export All Pages',\r\n action: 'filterall'\r\n }\r\n ]\r\n },\r\n\r\n ]\r\n}\r\n\r\nconst defaultProps = {\r\n transformProps: {\r\n label: 'name',\r\n value: 'value',\r\n }\r\n}\r\n\r\nfunction otherURLS(key) {\r\n switch (key) {\r\n case 'COMPANY_ID': return {\r\n optionsurl: {\r\n url: getEnvVariable('MasterAdmin') + `/api/CompanyInternal/` + getEnvVariable('ModuleKey') + `/Search/`,\r\n type: 'get',\r\n\r\n },\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Id',\r\n }\r\n }\r\n default: return {\r\n transformProps: {\r\n label: 'name',\r\n value: 'value',\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\nexport default function Search() {\r\n const [permitSearch, setPermitSearch] = useState({})\r\n const [total, setTotal] = useState(null)\r\n const [showAdvancedSearch, setShowAdvancedSearch] = useState(true);\r\n const [permitOptions, setPermitOptions] = useState(QuickSearchOptions[getEnvVariable('ModuleKey')] || [])\r\n const [items, setItems] = useState([])\r\n const [data, setData] = useState([])\r\n const [columns, setColumns] = useState([])\r\n const [selectionmapdata, setSelectionmapdata] = useState([])\r\n const [reload, setReload] = useState(false)\r\n const [searchType, setsearchType] = useState('0');\r\n const [changedModule, setChangedModule] = useState(false)\r\n const [waitMap, setWaitMap] = useState(false)\r\n const [quicksearchitems, setQuickSearchItems] = useState([])\r\n const [panes, setPanes] = React.useState([\r\n {\r\n size: \"50%\",\r\n min: \"20px\",\r\n collapsible: true,\r\n },\r\n {},\r\n {\r\n size: \"20%\",\r\n min: \"20px\",\r\n collapsible: true,\r\n },\r\n ]);\r\n\r\n const onChange = (event) => {\r\n setPanes(event.newState);\r\n };\r\n\r\n const handleChange = (e) => {\r\n const { name, value } = e.target;\r\n switch (name) {\r\n case 'searchType':\r\n setsearchType(value);\r\n handleClear()\r\n if (value === '0') {\r\n setPermitOptions(QuickSearchOptions[getEnvVariable('ModuleKey')]) \r\n setItems(quicksearchitems) \r\n } else setPermitOptions(PermitOptions[getEnvVariable('ModuleKey')])\r\n break;\r\n case 'SearchKey':\r\n if (permitSearch && permitSearch[permitSearch['SEARCH_CRITERIA']])\r\n delete permitSearch[permitSearch['SEARCH_CRITERIA']]\r\n setPermitSearch({ ...permitSearch, [permitSearch['SEARCH_CRITERIA']]: value, SearchKey: value });\r\n break;\r\n case 'module':\r\n setItems({ ...items, 'SITE_PERMIT_TYPE': [] })\r\n if (!showAdvancedSearch) {\r\n handleModuleChange(name, value);\r\n }\r\n else {\r\n handleModuleChange(name, value);\r\n let tempResultdata = permitSearch\r\n setPermitSearch({ ...tempResultdata, [name]: value });\r\n setReload(!reload)\r\n }\r\n break;\r\n default:\r\n let tempResult = permitSearch\r\n if (name === 'SEARCH_CRITERIA')\r\n tempResult = {}\r\n setPermitSearch({ ...tempResult, [name]: value });\r\n setReload(!reload)\r\n }\r\n\r\n }\r\n\r\n const handleModuleChange = (name, value) => {\r\n let permitOptionsData = permitOptions.filter(res => {\r\n if (res.FieldKey && (res.FieldKey == \"module\" || res.FieldKey == \"SITE_PERMIT_TYPE\"))\r\n return res\r\n })\r\n setPermitOptions(permitOptionsData);\r\n setItems({ ...items, 'SITE_PERMIT_TYPE': [] })\r\n setPermitSearch({ [name]: value });\r\n setChangedModule(true);\r\n setShowAdvancedSearch(true)\r\n //setReload(!reload)\r\n }\r\n\r\n useEffect(() => {\r\n if (changedModule) {\r\n handleAdvanceSearch();\r\n }\r\n }, [changedModule, permitSearch])\r\n\r\n\r\n const handleClear = () => {\r\n setItems({ ...items, 'SITE_PERMIT_TYPE': [] })\r\n setPermitSearch({});\r\n setData([]);\r\n setColumns([]);\r\n setShowAdvancedSearch(true)\r\n setPermitOptions(QuickSearchOptions[getEnvVariable('ModuleKey')] || []);\r\n }\r\n\r\n useEffect(() => {\r\n if (permitOptions && showAdvancedSearch) {\r\n let read = [];\r\n let names = []\r\n permitOptions.forEach(each => {\r\n if (each.dependency && each.url) {\r\n if (permitSearch[each.dependency]) {\r\n read.push(each.url);\r\n names.push(each.FieldKey)\r\n }\r\n }\r\n else {\r\n if (!items[each.FieldKey] && each.url) {\r\n read.push(each.url)\r\n names.push(each.FieldKey)\r\n }\r\n }\r\n })\r\n if (read && (read.length > 0)) {\r\n Promise.all(read.map(each => requestApi(createRequest(each, permitSearch)).catch(error => { return error; }))).then(resp => {\r\n let tempItems = items\r\n names.forEach((each, index) => {\r\n tempItems[each] = resp[index]\r\n })\r\n setItems(tempItems)\r\n setReload(!reload)\r\n })\r\n }\r\n }\r\n }, [permitSearch, searchType])\r\n\r\n\r\n useEffect(() => {\r\n const read = [\r\n {\r\n url: getEnvVariable('Admin') + `/api/Domains/values?domainkey=SEARCH_CRITERIA`,\r\n type: 'get'\r\n\r\n },\r\n {\r\n url: getEnvVariable('Admin') + `/api/Domains/values?domainkey=SEARCH_TYPE`,\r\n type: 'get'\r\n },\r\n {\r\n url: getEnvVariable('Admin') + `/api/Sites/${getEnvVariable('ModuleKey')}/All/Active`,\r\n type: 'get'\r\n },\r\n {\r\n url: getEnvVariable('Admin') + `/api/ApplicationStatus/Active`,\r\n type: 'get'\r\n },\r\n // {\r\n // url: getEnvVariable('Application') + `/api/Application/All/ActiveNames`,\r\n // type: 'get'\r\n // }\r\n ]\r\n Promise.all(read.map(each => requestApi(createRequest(each)).catch(error => { return error; }))).then(res => {\r\n const [CriteriaItems = [], SearchList, Sites = [], Status = []] = res;\r\n let tempItems = items\r\n tempItems['SEARCH_CRITERIA'] = getEnvVariable('AccessPortal') === 'E' ? CriteriaItems.filter(each => each.Name !== 'Applicant Name') : CriteriaItems\r\n tempItems['SearchList'] = SearchList\r\n tempItems['SITE_ID'] = Sites\r\n tempItems['APPLICATION_STATUS'] = Status.filter(e=>e.Stage != \"DRAFT\")\r\n //tempItems['ASSIGNED_TO'] = Assigned\r\n setQuickSearchItems(tempItems)\r\n setItems(tempItems)\r\n setReload(!reload)\r\n })\r\n }, [])\r\n\r\n\r\n const disableField = (param) => {\r\n let disabled = param.disabled || false\r\n //let hasPadding = param.disabled || false\r\n if (param.conditions) {\r\n param.conditions.map(each => {\r\n if (each.value === permitSearch[each.name]) {\r\n disabled = true\r\n }\r\n })\r\n }\r\n return disabled\r\n }\r\n\r\n const hasPaddingS = (param) => {\r\n // let const hasPaddingS = (param) => {\r\n let hasPadding = param.hasPadding || true\r\n //let hasPadding = param.disabled || false\r\n if (param.conditions) {\r\n param.conditions.map(each => {\r\n if (each.value === permitSearch[each.name]) {\r\n hasPadding = false\r\n }\r\n })\r\n }\r\n return hasPadding \r\n }\r\n\r\n \r\n\r\n const renderSwitch = (param) => {\r\n let type = param.UIFieldTypeComponent;\r\n let params = {\r\n ...param,\r\n value: permitSearch[param.FieldKey] || param.value || '',\r\n label: param.FieldDisplayName,\r\n name: param.FieldKey,\r\n className: 'col-12 m-2' ,\r\n \r\n };\r\n let disabled = disableField(param);\r\n let hasPadding = hasPaddingS(param)\r\n let permitsearchkey =\r\n permitSearch &&\r\n permitSearch['SEARCH_CRITERIA'] &&\r\n params.FieldKey === 'SearchKey'\r\n ? permitSearch['SEARCH_CRITERIA']\r\n : null;\r\n switch (type) {\r\n case 'DM': return (<div className='col-8'> <MultiDropDown {...params} handleFieldValue={handleChange} disabled={disabled} items={ permitsearchkey ? items[permitsearchkey]: param.items || items[params.FieldKey] } extraProps={params.extraProps || defaultProps} /> </div> );\r\n case 'DS': return (<div className='col-4'> <Dropdown {...params} handleFieldValue={handleChange} disabled={disabled} items={permitsearchkey ? items[permitsearchkey] : param.items || items[params.FieldKey] } extraProps={params.extraProps || defaultProps} /> </div> );\r\n case 'CF': return (<div className='col-4'> <CheckBox {...params} handleFieldValue={handleChange} disabled={disabled} items={items[params.FieldKey]} extraProps={params.extraProps || defaultProps} /> </div> );\r\n case 'D': return (<div className='col-4' > <DatePickers {...params} handleFieldValue={handleChange} disabled={disabled} hasPadding={hasPadding} extraProps={params.extraProps || defaultProps} /> </div>);\r\n case 'DT': return (<div className='col-4'> <DatePickers {...params} handleFieldValue={handleChange} disabled={disabled} hasPadding={hasPadding} extraProps={params.extraProps || defaultProps} /> </div>);\r\n case 'AC': return (<div className='col-4'> <Asynchronous {...params} items={ param.items || items[params.FieldKey] || []} handleFieldValue={handleChange} disabled={disabled} extraProps={params.extraProps || { ...otherURLS(params.name) }}/> </div>);\r\n case 'N': return (<div className='col-4'> <NumberFormat {...params} handleFieldValue={handleChange} disabled={disabled} items={items[params.FieldKey]} extraProps={params.extraProps || defaultProps} /> </div>);\r\n case 'RG': return (<div className='col-4'> <RadioButtonsGroup {...params} handleFieldValue={handleChange} disabled={disabled} items={param.items || items[params.FieldKey]} extraProps={params.extraProps || defaultProps} /></div>);\r\n default: return ( <div className='col-4'> <Textbox {...params} handleFieldValue={handleChange} disabled={disabled} extraProps={params.extraProps || defaultProps}/> </div>);\r\n }\r\n };\r\n\r\n const handleAdvanceSearch = () => {\r\n if (permitSearch.module && permitSearch.SITE_PERMIT_TYPE) {\r\n const read = [{\r\n url: getEnvVariable('Application') + `/api/${getEnvVariable('ModuleKey')}SitePermitSectionFieldsView/SearchFields/{module}/{SITE_PERMIT_TYPE}`,\r\n type: 'get',\r\n matchProps: [\r\n {\r\n name: \"module\",\r\n key: \"module\",\r\n },\r\n {\r\n\r\n name: \"SITE_PERMIT_TYPE\",\r\n key: \"SITE_PERMIT_TYPE\",\r\n },\r\n ]\r\n },\r\n {\r\n url: getEnvVariable('Application') + `/api/DomainsMapper/ByParams/{SITE_PERMIT_TYPE}?autoComplete=true`,\r\n type: 'post',\r\n alert: true,\r\n matchProps: [\r\n {\r\n name: \"SITE_PERMIT_TYPE\",\r\n key: \"SITE_PERMIT_TYPE\",\r\n },\r\n ]\r\n },]\r\n Promise.all(read.map(each => requestApi(createRequest(each, permitSearch)).catch(error => { return error; }))).then(res => {\r\n const [searchdata = [], domains] = res;\r\n var wrssearchdata = searchdata.filter(e=> e.FieldKey != 'SITE_ID' && e.FieldKey != 'ASSIGNED_TO' && e.FieldKey != 'COUNTY_HWY_DEPT_RESPONDER_NAME' && e.FieldKey != 'CONTRACTOR_RESPONDER_NAME' )\r\n let tempdomains\r\n if( getEnvVariable('ModuleKey') === \"WRS\" && domains && domains.APPLICATION_STATUS.length >1)\r\n {\r\n domains.APPLICATION_STATUS = domains.APPLICATION_STATUS.filter(e=>e.name != \"Draft\");\r\n tempdomains = domains \r\n }\r\n let tempsearchdata = getEnvVariable('ModuleKey') === \"WRS\" ? wrssearchdata: searchdata\r\n if (searchdata && searchdata.length > 0 && getEnvVariable('AccessPortal') === 'E') {\r\n tempsearchdata = searchdata.filter(each => (each.FieldKey !== 'COMPANY_ID'))\r\n }\r\n let tempFields = [...permitOptions, ...tempsearchdata]\r\n setChangedModule(false);\r\n setPermitOptions(tempFields);\r\n setShowAdvancedSearch(false)\r\n getEnvVariable('ModuleKey') === \"WRS\" && domains && domains.APPLICATION_STATUS.length > 1 ? setItems({ ...items, ...domains }) : setItems({ ...items, ...tempdomains })\r\n setReload(!reload)\r\n })\r\n }\r\n }\r\n\r\n const handleSearch = (datastate, message) => {\r\n let tempResult = permitSearch;\r\n if ((searchType === '0' && tempResult.SEARCH_CRITERIA === '0' || tempResult.SearchKey) ||\r\n searchType === '1' && tempResult.module && permitSearch.SITE_PERMIT_TYPE\r\n ) {\r\n let tempSearchKey = tempResult.SEARCH_CRITERIA;\r\n let tempModule = tempResult.module\r\n let tempSearchKeyresult = tempResult.SearchKey\r\n delete tempResult.SEARCH_CRITERIA\r\n delete tempResult.SearchKey\r\n delete tempResult.module\r\n tempResult = {\r\n searchParams: (!showAdvancedSearch || searchType === '0') ? permitSearch : {}, operator:\r\n permitSearch.operator || 'and', IsQuickSearch: (searchType === '0' ? \"Y\" : \"N\")\r\n }\r\n if(getEnvVariable('ModuleKey') == \"WRS\"){\r\n tempResult.searchParams = tempSearchKey == \"0\" && !tempSearchKeyresult ? {\"SITE_PERMIT_TYPE_ID\" : '1' } : tempResult.searchParams\r\n }\r\n let dataState = datastate ? datastate : { skip: 0, take: 20 }\r\n const queryStr = `${toDataSourceRequestString(dataState)}`;\r\n const read = [{\r\n url: getEnvVariable('Application') + `/api/Application/DynamicSearchGrid/${tempModule || 'APPLICATIONS'}/${permitSearch.SITE_PERMIT_TYPE || '-1'}?${queryStr}`, // -1\r\n type: 'post',\r\n message: message ? \"Search Completed\" : null,\r\n //message: dataState.sort && (dataState.sort.length> 0 || dataState.sort.length == 0) ? null : \"Search Completed\",\r\n },\r\n {\r\n url: getEnvVariable('Application') + `/api/${searchType === '0' ? `${getEnvVariable('ModuleKey')}SitePermitSectionFieldsView/AllRecordsGridFields` : `SitePermitSectionFieldsView/GridFields/${permitSearch.module || '-1'}/${permitSearch.SITE_PERMIT_TYPE || '-1'}`}`, // change\r\n type: 'get',\r\n matchProps: [\r\n {\r\n name: \"module\",\r\n key: \"module\",\r\n },\r\n {\r\n\r\n name: \"SITE_PERMIT_TYPE\",\r\n key: \"SITE_PERMIT_TYPE\",\r\n },\r\n ]\r\n }]\r\n Promise.all(read.map(each => requestApi(createRequest(each, tempResult)).catch(error => { return error; }))).then(res => {\r\n const [result, tempcolumns] = res;\r\n let customcolumns=[];\r\n setTotal(result.total)\r\n setData(result && result.data.map(dataItem => Object.assign({ selected: false }, dataItem)));\r\n if(tempcolumns && tempcolumns.length>0 && getEnvVariable('ModuleKey')==='WRS'){\r\n customcolumns=tempcolumns.filter(each => (each.fieldKey !=='RECORD_ID'))\r\n }\r\n customcolumns.map(m => {\r\n m.show = true;\r\n m.title = m.columnName\r\n })\r\n setColumns(customcolumns);\r\n setPermitSearch({ ...permitSearch, 'SEARCH_CRITERIA': tempSearchKey, 'module': tempModule, 'SearchKey': tempSearchKeyresult })\r\n setWaitMap(false)\r\n setReload(!reload)\r\n })\r\n } else {\r\n if (DefaultSettings.getAlert() != null)\r\n DefaultSettings.getAlert().show(\"Please provide search information \", 'error');\r\n }\r\n }\r\n\r\n const handleSeclectionfromMap = (ids) => {\r\n ids.forEach(id => {\r\n data.forEach(dataItem => {\r\n if (dataItem.Id === id) {\r\n dataItem.selected = true\r\n }\r\n })\r\n })\r\n setData(data)\r\n }\r\n\r\n\r\n return <Fragment>\r\n {reload}\r\n <Breadcrumbs {...breadcrumbs} className=\"pt-2\" />\r\n <div className='m-2'>\r\n <RadioButtonsGroup items={items['SearchList'] || []} name='searchType' value={searchType} handleFieldValue={handleChange} extraProps={{\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Value',\r\n }\r\n }} />\r\n <Card >\r\n <CardContent>\r\n <div className='row'>\r\n {permitOptions.map((each, index) => {\r\n // permitSearch.SEARCH_CRITERIA == \"COMPANY_ID\"\r\n if ((permitSearch.SEARCH_CRITERIA == \"PERMIT_NO\" || permitSearch.SEARCH_CRITERIA == \"0\") && each.FieldKey == \"SearchKey\" && each.UIFieldTypeComponent == 'TB') {\r\n return <Fragment key={index}>\r\n {renderSwitch(each)}\r\n </Fragment>\r\n }\r\n else if (permitSearch.SEARCH_CRITERIA == \"SITE_ID\" && each.FieldKey == \"SearchKey\" && each.UIFieldTypeComponent == 'DM') {\r\n return <Fragment key={index}>\r\n {renderSwitch(each)}\r\n </Fragment>\r\n }\r\n else if (permitSearch.SEARCH_CRITERIA == \"APPLICATION_STATUS\" && each.FieldKey == \"SearchKey\" && each.UIFieldTypeComponent == 'DS') {\r\n return <Fragment key={index}>\r\n {renderSwitch(each)}\r\n </Fragment>\r\n }\r\n else if (each.UIFieldTypeComponent !== 'LB' && each.FieldKey == \"SEARCH_CRITERIA\") {\r\n return <Fragment key={index}>\r\n {renderSwitch(each)}\r\n </Fragment>\r\n }\r\n else if (each.FieldKey !== \"SEARCH_CRITERIA\" && each.FieldKey !== \"SearchKey\") {\r\n return <Fragment key={index}>\r\n {renderSwitch(each)}\r\n </Fragment>\r\n }\r\n\r\n })}\r\n {/* {(showAdvancedSearch && searchType === '1') && <Fab variant='outlined' size='small' color='primary' onClick={handleAdvanceSearch}\r\n title='Advanced Search'><SettingsIcon /></Fab>} */}\r\n </div>\r\n </CardContent>\r\n <CardActions>\r\n {\r\n !showAdvancedSearch && searchType === '1' && <div className='col-3 m-3'> <RadioButtonsGroup name='operator' label={'Condition'} value={permitSearch['operator'] || 'and'} handleFieldValue={handleChange} extraProps={{\r\n transformProps: {\r\n label: 'name',\r\n value: 'value',\r\n }\r\n }} items={[{ name: 'and', value: 'and' }, { name: 'or', value: 'or' }]} /></div>\r\n }\r\n <Button className='m-1' color=\"primary\" variant=\"outlined\" onClick={(e) => { setWaitMap(true); handleSearch(e, true) }}> Search </Button>\r\n <Button className='m-1' color=\"primary\" variant=\"outlined\" onClick={() => { setsearchType('0'); handleClear() }}>Clear</Button>\r\n </CardActions>\r\n </Card>\r\n <div className='mt-3'>\r\n\r\n {\r\n data && data.length > 0 ? <Splitter\r\n panes={panes} onChange={onChange}\r\n >\r\n <KenodGrid\r\n columns={columns}\r\n searchType={searchType}\r\n data={data || []}\r\n total={total}\r\n result={permitSearch}\r\n fetchData={handleSearch}\r\n showAdvancedSearch={showAdvancedSearch}\r\n setSelectionmapdata={(selecteddata) => setSelectionmapdata(selecteddata)}\r\n />\r\n {waitMap === false ? <Map height={showAdvancedSearch ? 500 : 400} mapdata={data && data.length > 0 && data.map(res => {\r\n return res.Id\r\n }) || []} selectiondata={selectionmapdata} {...AddRecordMapJson}\r\n SubModuleKey={(permitSearch && permitSearch['Module']) || 'APPLICATIONS'}\r\n isGridView={true}\r\n handleSeclectionfromMap={handleSeclectionfromMap}\r\n SITE_PERMIT_TYPE_ID={permitSearch.SITE_PERMIT_TYPE}\r\n /> : <></>}\r\n </Splitter> : (columns && columns.length > 0) && <div >{' No Search Results Found '}</div>\r\n }\r\n </div>\r\n </div>\r\n </Fragment >\r\n}\r\n\r\nfunction KenodGrid({ columns, data, result, total, fetchData, setSelectionmapdata, showAdvancedSearch, searchType }) {\r\n\r\n const [dataState, setDataState] = useState({ skip: 0, take: 20 })\r\n const [column, setColumns] = useState(columns);\r\n const [filteredfield, setFilteredField] = useState([])\r\n const [reload, setReload] = useState(false)\r\n // const [data, setData] = useState(kendoData)\r\n const [pageable, setPageable] = useState({\r\n buttonCount: 2,\r\n info: true,\r\n type: 'numeric',\r\n pageSizes: [10, 20, 30, 40, 50,100],\r\n previousNext: true\r\n })\r\n const _export = useRef(null)\r\n\r\n // useEffect(() => {\r\n // setData(kendoData)\r\n // }, [kendoData])\r\n\r\n useEffect(() => {\r\n setColumns(columns);\r\n setReload(!reload)\r\n }, [columns])\r\n\r\n const handleDataStateChange = (e) => {\r\n let hasfilterfields = [];\r\n hasfilterfields = column ? column.filter(field => {\r\n if (GridColumnMenuFilter.active(field.field, e.dataState.filter)) {\r\n return field;\r\n \r\n }\r\n }) : [];\r\n setFilteredField(hasfilterfields)\r\n setDataState(e.dataState);\r\n fetchData(e.dataState, false)\r\n }\r\n\r\n const handleViewPermit = (props) => {\r\n const { dataItem } = props\r\n return <td><IconButton title={'View Disposal Request'} color=\"success\" onClick={() =>\r\n window.open('#/Records/' + `${dataItem.SubModuleKey}/${dataItem['Application Type']}/${dataItem.Id}`, 'self')} > < Pageview /> </IconButton ></td>\r\n }\r\n\r\n const selectionChange = (event) => {\r\n let selectData = data\r\n const tempdata = selectData.map(item => {\r\n if (item.Id === event.dataItem.Id) {\r\n item.selected = !event.dataItem.selected;\r\n }\r\n return item;\r\n });\r\n let selectionmapdata = tempdata.filter(res => {\r\n if (res.selected)\r\n return res.Id\r\n })\r\n selectionmapdata = selectionmapdata.map(res => {\r\n return res.Id\r\n })\r\n setSelectionmapdata(selectionmapdata)\r\n }\r\n\r\n const headerSelectionChange = (event) => {\r\n let selectData = data\r\n const checked = event.syntheticEvent.target.checked;\r\n const tempdata = selectData.map(item => {\r\n item.selected = checked;\r\n return item;\r\n });\r\n let selectionmapdata = tempdata.filter(res => {\r\n if (res.selected)\r\n return res.Id\r\n })\r\n selectionmapdata = selectionmapdata.map(res => {\r\n return res.Id\r\n })\r\n setSelectionmapdata(selectionmapdata)\r\n }\r\n\r\n const onColumnsSubmit = (columnsState) => {\r\n setColumns(columnsState)\r\n\r\n }\r\n\r\n const clearFilters = () => {\r\n let dataState = {\r\n skip: 0, take: 20\r\n }\r\n setFilteredField([])\r\n setDataState(dataState)\r\n fetchData(dataState);\r\n }\r\n\r\n const handleExport = (action) => {\r\n let tempResult = result;\r\n tempResult = { searchParams: tempResult, operator: 'and', IsQuickSearch: (searchType === '0' ? \"Y\" : \"N\") }\r\n let tempdataState = dataState ? dataState : { skip: 0, take: 20 }\r\n const queryStr = action === 'filterall' ? '' : `${toDataSourceRequestString(tempdataState)}`;\r\n const read = [{\r\n url: getEnvVariable('Application') + `/api/Application/DynamicSearchGrid/${tempResult.searchParams.module || 'APPLICATIONS'}/${tempResult.searchParams.SITE_PERMIT_TYPE || '-1'}?${queryStr}`,\r\n type: 'post',\r\n message: \"Search Completed\"\r\n }]\r\n Promise.all(read.map(each => requestApi(createRequest(each, tempResult)).catch(error => { return error; }))).then(res => {\r\n const [results] = res;\r\n if (_export.current !== null) {\r\n _export.current.save(results.data, column);\r\n }\r\n })\r\n }\r\n\r\n let gridDataState = { ...dataState, take: pageable.pageSizes.includes(dataState['take']) ? dataState.take : 'All' }\r\n let gridPageable = { ...pageable, ['info']: pageable.pageSizes.includes(dataState['take']) ? true : false }\r\n return <Fragment>\r\n {reload}\r\n <GridHeader {...headerProps} {...{ addOnsByName: { excel: { onClick: handleExport }, clear: { onClick: clearFilters }, } }} />\r\n <ExcelExport\r\n data={data}\r\n fileName={'Search.xlsx'}\r\n ref={_export}\r\n >\r\n <KendoGrids\r\n pageable={gridPageable}\r\n sortable={true}\r\n filterable={false}\r\n style={{\r\n height: showAdvancedSearch ? '500px' : '380px',\r\n overflow: 'auto'\r\n }}\r\n data={data}\r\n total={total}\r\n // file deepcode ignore DOMXSS: <please specify a reason of ignoring this>\r\n {...gridDataState}\r\n onDataStateChange={(e) => {\r\n handleDataStateChange(e);\r\n }}\r\n selectedField=\"selected\"\r\n onSelectionChange={selectionChange}\r\n onHeaderSelectionChange={headerSelectionChange}\r\n resizable\r\n >\r\n <Column\r\n className=\"selected\"\r\n field=\"selected\"\r\n width=\"75px\"\r\n headerSelectionValue={\r\n data && data.length > 0 && data.findIndex(dataItem => dataItem.selected === false) === -1\r\n\r\n } />\r\n <Column cell={handleViewPermit} width={'50px'} filterable={false} sortable={false} />\r\n {column && column.length > 0 && column.map((each, index) => {\r\n return <Column field={each.fieldName} title={each.columnName} width={'220px'} filter={each.filter} key={index}\r\n columnMenu={\r\n props =>\r\n <CustomColumnMenu\r\n {...props}\r\n columns={columns}\r\n onColumnsSubmit={onColumnsSubmit}\r\n />\r\n }\r\n />\r\n })}\r\n </KendoGrids>\r\n </ExcelExport>\r\n </Fragment>\r\n\r\n}","//import HolidayAdd from \"./newholidays\"\r\n\r\nimport { getEnvVariable } from \"../../../modules/environmentalList\"\r\n\r\n//import notehistory from './notehistorygrid';\r\nconst EditAuthorization = {\r\n \"type\": \"popup\",\r\n \"key\": \"EditAuthorization\",\r\n \"name\": \"EditAuthorization\",\r\n anchor: 'right',\r\n open: false,\r\n aliases: {\r\n open: 'editOpen'\r\n },\r\n sharedValues: ['open'],\r\n container: {\r\n closepopup: true,\r\n closepopupval: 'authorizations',\r\n \"addRoute\": true,\r\n \"routeParams\": { replace: 'authorizations', param: 'Id', routeName: 'id' },\r\n 'removelayout': 'EditAuthorization',\r\n values: { editInfo: null, edit: false, createduplicate: false, fullscreen: false, back: false, allgriddata: null, navigation: null },\r\n mapValues: {\r\n header: [\r\n { key: 'edit', name: 'edit' },\r\n { key: 'exitfullscreen', name: 'exitfullscreen' },\r\n { key: 'fullscreen', name: 'fullscreen' },\r\n { key: 'createduplicate', name: 'createduplicate' },\r\n { key: 'allgriddata', name: 'allgriddata' },\r\n ],\r\n ViewAuthorization: [\r\n { key: 'editInfo', name: 'editInfo' },\r\n { key: 'allgriddata', name: 'allgriddata' },\r\n { key: 'save', name: 'save' },\r\n // { key: 'saveduplicate', name: 'saveduplicate' },\r\n { key: 'edit', name: 'edit' },\r\n { key: 'exitfullscreen', name: 'exitfullscreen' },\r\n { key: 'fullscreen', name: 'fullscreen' },\r\n { key: 'createduplicate', name: 'createduplicate' },\r\n { key: 'back', name: 'back' },\r\n { key: 'navigation', name: 'navigation' },]\r\n },\r\n // sharedValues: ['save', 'edit'],\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [{\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'header',\r\n type: 'div',\r\n className: 'col-12 ',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12',\r\n }\r\n }],\r\n\r\n },\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'ViewAuthorization',\r\n type: 'div',\r\n className: 'col-12 pl-4 m-3',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12 pl-4 m-3',\r\n }\r\n }],\r\n\r\n },\r\n ]\r\n },\r\n\r\n components: {\r\n header: {\r\n name: \"header\",\r\n type: 'header',\r\n title: 'Authorizations',\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": \"View Authorization\", \"materialicon\": \"vpn_key\", className: 'eps-breadcrumb-item ', class: 'text-light' },\r\n ]\r\n }\r\n ],\r\n layout: {},\r\n actions: [\r\n {\r\n type: 'icon',\r\n icon: 'back',\r\n name: 'back',\r\n hideon: 'back',\r\n hidevalue: false,\r\n title: 'Back'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'edit',\r\n name: 'edit',\r\n hideanother: 'edit',\r\n hidevalue: true,\r\n title: 'Edit Authorization'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'previtem',\r\n name: 'previtem',\r\n hideon: 'previtem',\r\n hidevalue: false,\r\n title: 'Previous Item'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'nextitem',\r\n name: 'nextitem',\r\n hideon: 'nextitem',\r\n hidevalue: false,\r\n title: 'Next Item'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'fullscreen',\r\n name: 'fullscreen',\r\n hidevalue: false,\r\n title: 'Full Screen'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'exitfullscreen',\r\n name: 'exitfullscreen',\r\n hideon: 'fullscreen',\r\n hidevalue: false,\r\n title: 'Exit FullScreen'\r\n },\r\n ],\r\n },\r\n ViewAuthorization: {\r\n \"type\": \"form\",\r\n initRun: true,\r\n \"key\": \"ViewAuthorization\",\r\n \"name\": \"ViewAuthorization\",\r\n aliases: {\r\n 'editInfo': 'editInfo',\r\n 'allgriddata': 'allgriddata',\r\n 'navigateItem': 'navigateItem',\r\n 'edit': 'edit'\r\n },\r\n sharedValues: ['editInfo', 'allgriddata', 'navigateItem', 'navigation', 'edit', 'save', 'createduplicate', 'exitfullscreen', 'fullscreen', 'back'],\r\n validationMapKeys: [],\r\n layout: {\r\n group: [\r\n\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'FirstName',\r\n type: 'div',\r\n className: 'col-10 m-1',\r\n sub: {\r\n type: 'div',\r\n className: 'col-10 m-1'\r\n }\r\n },\r\n\r\n ]\r\n },\r\n {\r\n order: 2,\r\n type: 'div',\r\n className: 'row',\r\n components: [\r\n {\r\n name: 'LastName',\r\n type: 'div',\r\n className: 'col-6 m-1',\r\n sub: {\r\n type: 'div',\r\n className: 'col-6 m-1'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 3,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'Email',\r\n type: 'div',\r\n className: 'col-10 m-1',\r\n sub: {\r\n type: 'div',\r\n className: 'col-10 m-1'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 4,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'Subject',\r\n type: 'div',\r\n className: 'col-10 m-1',\r\n sub: {\r\n type: 'div',\r\n className: 'col-10 m-1'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 5,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'Body',\r\n type: 'div',\r\n className: 'col-10 m-1',\r\n sub: {\r\n type: 'div',\r\n className: 'col-10 m-1'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 6,\r\n type: 'div',\r\n className: 'row ',\r\n components: [\r\n {\r\n name: 'IsApproved',\r\n type: 'div',\r\n className: 'col-2 m-1',\r\n sub: {\r\n type: 'div',\r\n className: 'col-2 m-1'\r\n }\r\n },\r\n\r\n ]\r\n },\r\n {\r\n order: 7,\r\n type: 'div',\r\n className: 'row ',\r\n components: [{\r\n name: 'Approved',\r\n type: 'div',\r\n className: 'col- m-1',\r\n sub: {\r\n type: 'div',\r\n className: 'col-2 m-1'\r\n }\r\n }, {\r\n name: 'Denied',\r\n type: 'div',\r\n className: 'col-2 m-1',\r\n sub: {\r\n type: 'div',\r\n className: 'col-2 m-1'\r\n }\r\n }, {\r\n name: 'GotoUser',\r\n type: 'div',\r\n className: 'col-3 m-1',\r\n sub: {\r\n type: 'div',\r\n className: 'col-3 m-1'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 8,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'CreatedOn',\r\n type: 'div',\r\n className: 'col-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-6'\r\n }\r\n },\r\n {\r\n name: 'CreatedByName',\r\n type: 'div',\r\n className: 'col-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-6'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 9,\r\n type: 'div',\r\n className: 'row',\r\n components: [\r\n {\r\n name: 'UpdatedOn',\r\n type: 'div',\r\n className: 'col-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-6'\r\n }\r\n },\r\n {\r\n name: 'UpdatedByName',\r\n type: 'div',\r\n className: 'col-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-6'\r\n }\r\n },]\r\n },\r\n\r\n ]\r\n\r\n },\r\n values: {\r\n FirstName: '',\r\n LastName: '',\r\n Email: '',\r\n Subject: '',\r\n Body: '',\r\n GotoUser: '',\r\n IsApproved: '',\r\n Approved: '',\r\n Denied: '',\r\n UpdatedByName: '',\r\n CreatedByName: '',\r\n UpdatedOn: '',\r\n CreatedOn: '',\r\n UpdatedBy: '',\r\n CreatedBy: '',\r\n Id: '',\r\n UserId: '',\r\n userId: '',\r\n editInfo: null,\r\n allgriddata: null,\r\n navigation: null\r\n },\r\n \"components\": {\r\n FirstName: {\r\n \"type\": \"label\",\r\n \"key\": \"FirstName\",\r\n \"label\": \"First Name\",\r\n \"name\": \"FirstName\",\r\n changefieldto: \"label\",\r\n },\r\n LastName: {\r\n \"type\": \"label\",\r\n \"key\": \"LastName\",\r\n \"label\": \"LastName\",\r\n \"name\": \"Last Name\",\r\n changefieldto: \"label\",\r\n },\r\n Email: {\r\n \"type\": \"label\",\r\n \"key\": \"Email\",\r\n \"label\": \"Email\",\r\n \"name\": \"Email\",\r\n changefieldto: \"label\",\r\n },\r\n Subject: {\r\n \"type\": \"label\",\r\n \"key\": \"Subject\",\r\n \"label\": \"Subject\",\r\n \"name\": \"Subject\",\r\n changefieldto: \"label\",\r\n },\r\n Body: {\r\n \"type\": \"label\",\r\n \"key\": \"Body\",\r\n \"label\": \"Body\",\r\n \"name\": \"Body\",\r\n changefieldto: \"label\",\r\n },\r\n GotoUser: {\r\n \"type\": \"label\",\r\n changefieldto: \"button\",\r\n \"key\": \"GotoUser\",\r\n size: 'small',\r\n \"label\": \"Grant Access\",\r\n name: \"GotoUser\",\r\n buttontype: 'routing',\r\n navurl: '/Administration/agencyusers/{UserId}',\r\n optionalRoutes: 'userId',\r\n useFieldVals: true,\r\n extraProps: {\r\n color: 'primary',\r\n variant: \"contained\",\r\n },\r\n },\r\n Approved: {\r\n \"type\": \"label\",\r\n changefieldto: \"button\",\r\n \"key\": \"Approved\",\r\n size: 'small',\r\n \"label\": \"Approve\",\r\n name: \"Approved\",\r\n extraProps: {\r\n color: 'primary',\r\n variant: \"contained\",\r\n },\r\n },\r\n Denied: {\r\n \"type\": \"label\",\r\n changefieldto: \"button\",\r\n \"key\": \"Denied\",\r\n size: 'small',\r\n \"label\": \"Deny\",\r\n name: \"Denied\",\r\n extraProps: {\r\n color: 'secondary',\r\n variant: \"contained\",\r\n },\r\n },\r\n IsApproved: {\r\n \"type\": \"dropdown\",\r\n changefieldto: \"dropdown\",\r\n \"key\": \"IsApproved\",\r\n \"label\": \"Status\",\r\n name: \"IsApproved\",\r\n disabled: true,\r\n extraProps: {\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Value'\r\n },\r\n }\r\n },\r\n CreatedOn: {\r\n \"type\": \"label\",\r\n \"key\": \"CreatedOn\",\r\n \"label\": \"Created On\",\r\n name: \"CreatedOn\",\r\n changefieldto: \"label\",\r\n },\r\n CreatedByName: {\r\n \"type\": \"label\",\r\n \"key\": \"CreatedByName\",\r\n \"label\": \"Created By\",\r\n name: \"CreatedByName\",\r\n changefieldto: \"label\",\r\n },\r\n UpdatedOn: {\r\n \"type\": \"label\",\r\n \"key\": \"UpdatedOn\",\r\n \"label\": \"Updated On\",\r\n name: \"UpdatedOn\",\r\n changefieldto: \"label\",\r\n },\r\n UpdatedByName: {\r\n \"type\": \"label\",\r\n \"key\": \"UpdatedByName\",\r\n \"label\": \"Updated By\",\r\n name: \"UpdatedByName\",\r\n changefieldto: \"label\",\r\n },\r\n },\r\n mapActionsToEffects: {\r\n 'onLoad': {\r\n 'init': {\r\n rules: [{\r\n run:\r\n {\r\n valid: [\r\n {\r\n type: 'validations',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('MasterAdmin') + `/api/ProjectMessages/RulesByName?name=master.IPUsersAuthorizations`,\r\n type: 'get'\r\n }\r\n ],\r\n transformProps: {\r\n removesubfieldname: 'master.IPUsersAuthorizations_'\r\n }\r\n },\r\n {\r\n type: 'businessrules',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('MasterAdmin') + `/api/BusinessRules/Grid/master.IPUsersAuthorizations`,\r\n type: 'get',\r\n }\r\n ],\r\n },\r\n {\r\n type: 'load',\r\n name: 'IsApproved',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin') + `/api/Domains/values?domainkey=AUTHORIZATION_STATUS`,\r\n type: 'get',\r\n saveAs: {\r\n key: 'items'\r\n }\r\n }\r\n ]\r\n },\r\n { type: \"prop\", name: \"GotoUser\", isVisible: true },\r\n { type: \"prop\", name: \"Approved\", isVisible: false },\r\n { type: \"prop\", name: \"Denied\", isVisible: false },\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n 'onChange': {\r\n 'navigation': {\r\n rules: [{\r\n run:\r\n {\r\n valid: [\r\n {\r\n type: 'initial', //http://development.delasoft.com:8443/AMES-application/api/ProposedLandUse/5864/Add\r\n \"read\": [\r\n {\r\n url: getEnvVariable('MasterAdmin') + `/api/IPUsersAuthorizations/GetRequest/{Id}`,\r\n key: 'save',\r\n \"matchProps\": [\r\n {\r\n name: \"routeid1\",\r\n key: \"routeid1\",\r\n },\r\n {\r\n name: \"navigation.Id\",\r\n key: \"Id\",\r\n }\r\n ],\r\n type: 'get',\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n GLOBAL: {\r\n rules: [\r\n {\r\n canOverwrite: false,\r\n check: [\r\n {\r\n condition: \"AND\",\r\n rules: [\r\n { name: \"IsApproved\", type: \"=\", value: \"A\", rules: [] },\r\n ]\r\n }\r\n ],\r\n fields: [\"IsApproved\"],\r\n ruleOrder: 0,\r\n run: {\r\n valid: [\r\n {\r\n type: \"prop\", name: \"IsApproved\", isVisible: true, hasValue: true, value: 'A', valueType: 'D'\r\n },\r\n\r\n ],\r\n\r\n },\r\n uncheck: true\r\n },\r\n {\r\n canOverwrite: false,\r\n check: [\r\n {\r\n condition: \"OR\",\r\n rules: [\r\n { name: \"IsApproved\", type: \"=\", value: \"P\", rules: [] },\r\n ]\r\n }\r\n ],\r\n fields: [\"IsApproved\"],\r\n ruleOrder: 0,\r\n run: {\r\n valid: [\r\n {\r\n type: \"prop\", name: \"IsApproved\", isVisible: true, hasValue: true, value: 'P', valueType: 'D'\r\n },\r\n\r\n ],\r\n\r\n },\r\n uncheck: true\r\n },\r\n {\r\n canOverwrite: false,\r\n check: [\r\n {\r\n condition: \"AND\",\r\n rules: [\r\n { name: \"IsApproved\", type: \"=\", value: \"D\", rules: [] },\r\n ]\r\n }\r\n ],\r\n fields: [\"IsApproved\"],\r\n ruleOrder: 0,\r\n run: {\r\n valid: [\r\n {\r\n type: \"prop\", name: \"IsApproved\", isVisible: true, hasValue: true, value: 'D', valueType: 'D'\r\n },\r\n\r\n ],\r\n\r\n },\r\n uncheck: true\r\n },\r\n // {\r\n // canOverwrite: false,\r\n // check: [\r\n // {\r\n // condition: \"AND\",\r\n // rules: [\r\n // { name: \"userId\", type: \"is not null\", rules: [] },\r\n // ]\r\n // }\r\n // ],\r\n // fields: [\"userId\"],\r\n // ruleOrder: 0,\r\n // run: {\r\n // valid: [\r\n // {\r\n // type: \"prop\", name: \"UserId\", hasValue: true, value: '{{userId}}', valueType: 'C'\r\n // },\r\n\r\n // ],\r\n\r\n // },\r\n // uncheck: true\r\n // },\r\n ]\r\n },\r\n Approved: {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'initial', //http://development.delasoft.com:8443/AMES-application/api/ProposedLandUse/5864/Add\r\n \"read\": [\r\n {\r\n url: getEnvVariable('MasterAdmin') + `/api/IPUsersAuthorizations/ApproveRequest/{Id}?moduleKey=${getEnvVariable('ModuleKey')}`,\r\n key: 'save',\r\n \"matchProps\": [\r\n {\r\n name: \"routeid1\",\r\n key: \"routeid1\",\r\n },\r\n {\r\n name: \"navigation.Id\",\r\n key: \"Id\",\r\n }\r\n ],\r\n type: 'put',\r\n }\r\n ]\r\n },\r\n { type: \"prop\", name: \"GotoUser\", isVisible: true },\r\n { type: \"prop\", name: \"Approved\", isVisible: false },\r\n { type: \"prop\", name: \"Denied\", isVisible: false },\r\n {\r\n type: \"prop\", name: \"IsApproved\", isVisible: true, hasValue: true, value: 'A', valueType: 'D'\r\n },\r\n ],\r\n\r\n },\r\n },\r\n ]\r\n },\r\n Denied: {\r\n rules: [\r\n\r\n {\r\n // canOverwrite: false,\r\n // check: [\r\n // {\r\n // condition: \"AND\",\r\n // rules: [\r\n // { name: \"Denied\", type: \"=\", value: \"D\", rules: [] },\r\n // ]\r\n // }\r\n // ],\r\n // fields: [\"Denied\"],\r\n // ruleOrder: 0,\r\n run: {\r\n valid: [\r\n {\r\n type: 'initial', //http://development.delasoft.com:8443/AMES-application/api/ProposedLandUse/5864/Add\r\n \"read\": [\r\n {\r\n url: getEnvVariable('MasterAdmin') + `/api/IPUsersAuthorizations/DenyRequest/{Id}`,\r\n key: 'save',\r\n \"matchProps\": [\r\n {\r\n name: \"routeid1\",\r\n key: \"routeid1\",\r\n },\r\n {\r\n name: \"navigation.Id\",\r\n key: \"Id\",\r\n }\r\n ],\r\n type: 'put',\r\n }\r\n ]\r\n },\r\n { type: \"prop\", name: \"GotoUser\", isVisible: false },\r\n { type: \"prop\", name: \"Approved\", isVisible: true },\r\n { type: \"prop\", name: \"Denied\", isVisible: true, disabled: true },\r\n {\r\n type: \"prop\", name: \"IsApproved\", hasValue: true, value: 'D', valueType: 'D'\r\n },\r\n ],\r\n\r\n },\r\n },\r\n ]\r\n },\r\n 'edit': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'edit',\r\n\r\n },\r\n\r\n ]\r\n }\r\n },\r\n {\r\n canOverwrite: false,\r\n check: [\r\n {\r\n condition: \"AND\",\r\n rules: [\r\n { name: \"IsApproved\", type: \"=\", value: \"A\", rules: [] },\r\n ]\r\n }\r\n ],\r\n fields: [\"IsApproved\"],\r\n ruleOrder: 0,\r\n run: {\r\n valid: [\r\n { type: \"prop\", name: \"GotoUser\", isVisible: true },\r\n { type: \"prop\", name: \"Approved\", isVisible: false },\r\n { type: \"prop\", name: \"Denied\", isVisible: false },\r\n ],\r\n\r\n },\r\n uncheck: true\r\n },\r\n {\r\n canOverwrite: false,\r\n check: [\r\n {\r\n condition: \"OR\",\r\n rules: [\r\n { name: \"IsApproved\", type: \"=\", value: \"P\", rules: [] },\r\n { name: \"IsApproved\", type: \"=\", value: \"D\", rules: [] },\r\n ]\r\n }\r\n ],\r\n fields: [\"IsApproved\"],\r\n ruleOrder: 0,\r\n run: {\r\n valid: [\r\n { type: \"prop\", name: \"GotoUser\", isVisible: false },\r\n\r\n ],\r\n\r\n },\r\n uncheck: true\r\n },\r\n {\r\n canOverwrite: false,\r\n check: [\r\n {\r\n condition: \"AND\",\r\n rules: [\r\n { name: \"IsApproved\", type: \"=\", value: \"D\", rules: [] },\r\n ]\r\n }\r\n ],\r\n fields: [\"IsApproved\"],\r\n ruleOrder: 0,\r\n run: {\r\n valid: [\r\n { type: \"prop\", name: \"GotoUser\", isVisible: false },\r\n { type: \"prop\", name: \"Approved\", isVisible: true },\r\n { type: \"prop\", name: \"Denied\", isVisible: true, disabled: true },\r\n\r\n ],\r\n\r\n },\r\n uncheck: true\r\n },\r\n {\r\n canOverwrite: false,\r\n check: [\r\n {\r\n condition: \"AND\",\r\n rules: [\r\n { name: \"IsApproved\", type: \"=\", value: \"P\", rules: [] },\r\n ]\r\n }\r\n ],\r\n fields: [\"IsApproved\"],\r\n ruleOrder: 0,\r\n run: {\r\n valid: [\r\n { type: \"prop\", name: \"Approved\", isVisible: true },\r\n { type: \"prop\", name: \"Denied\", isVisible: true },\r\n ],\r\n\r\n },\r\n uncheck: true\r\n },\r\n ]\r\n },\r\n 'exitfullscreen': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'exitfullscreen',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'fullscreen': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'fullscreen',\r\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 EditAuthorization\r\n","import EditAuthorization from './edit'\r\nimport { getEnvVariable } from '../../../modules/environmentalList';\r\nconst AuthorizationsGrid = {\r\n \"title\": \"Authorizations\",\r\n \"type\": \"grid\",\r\n \"key\": \"AuthorizationsGrid\",\r\n \"gridkey\": 'AuthorizationsGrid',\r\n \"name\": \"AuthorizationsGrid\",\r\n \"hasreport\": true,\r\n \"addRoute\": true,\r\n \"routeParams\": { replace: 'authorizations', param: 'Id', routeName: 'id' },\r\n values: {\r\n addOpen: false,\r\n editOpen: false,\r\n editInfo: null,\r\n load: false,\r\n allgriddata:null,\r\n navigateItem: null,\r\n navigation :null,\r\n reportOpen: false,\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null,\r\n },\r\n sharedValues: ['addOpen', 'editOpen', 'editInfo', 'allgriddata', 'navigateItem', 'navigation', 'loadreportfilter', 'ReportJsonQueryStr', 'reportOpen'],\r\n aliases: {\r\n addOpen: 'addOpen',\r\n editOpen: 'editOpen',\r\n editInfo: 'editInfo',\r\n allgriddata: 'allgriddata',\r\n navigateItem: 'navigateItem',\r\n navigation: 'navigation',\r\n reportOpen: 'reportOpen',\r\n loadreportfilter: 'loadreportfilter',\r\n ReportJsonQueryStr: 'ReportJsonQueryStr'\r\n },\r\n headerProps: {\r\n title: \"Authorizations\",\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": \"Dashboard\", \"tab\": 'D', \"materialicon\": \"dashboard\", href: getEnvVariable('InternalBasepath'), className: 'breadcrumb-item text-dark', class: 'text-dark' },\r\n { \"link\": \"Authorization\", \"materialicon\": \"vpn_key\", className: 'breadcrumb-item ', class: '', color:'#074078' }\r\n\r\n ],\r\n }\r\n ],\r\n actions: [\r\n {\r\n type: 'fab',\r\n icon: 'clear',\r\n name: 'clear',\r\n color: 'primary',\r\n title: 'Clear Filters',\r\n menucolor: '#22a9b3',\r\n hideon: 'clear',\r\n hidevalue: false\r\n },\r\n\r\n {\r\n type: 'menu',\r\n icon: 'excel',\r\n name: 'excel',\r\n color: 'primary',\r\n title: 'Export to Excel',\r\n menucolor: '#c90685',\r\n hideon: 'excel',\r\n hidevalue: false,\r\n items: [{\r\n name: 'Export Current Page',\r\n action: 'filtercurrent'\r\n },\r\n {\r\n name: 'Export All Pages',\r\n action: 'filterall'\r\n }\r\n ]\r\n },\r\n {\r\n type: 'fab',\r\n icon: 'reports',\r\n name: 'reports',\r\n color: 'primary',\r\n title: 'Save Report',\r\n menucolor: '#C85A54',\r\n hideon: 'reports',\r\n hidevalue: false\r\n },\r\n ]\r\n },\r\n \"columns\": [\r\n {\r\n \"title\": \"First Name\",\r\n \"field\": \"FirstName\", \r\n \"show\": true,\r\n \"width\": 60,\r\n },\r\n {\r\n \"title\": \"Last Name\",\r\n \"field\": \"LastName\",\r\n \"show\": true,\r\n \"width\": 60,\r\n },\r\n {\r\n \"title\": \"Email\",\r\n \"field\": \"Email\",\r\n \"show\": true,\r\n \"width\": 60,\r\n },\r\n {\r\n \"title\": \"Status\",\r\n \"field\": \"IsApprovedDesc\",\r\n \"show\": true,\r\n \"width\": 100\r\n },\r\n {\r\n \"title\": \"Created On\",\r\n \"field\": \"CreatedOn\",\r\n \"show\": true,\r\n \"width\": 100,\r\n filter: \"date\",\r\n format: \"{0:d}\",\r\n convert: \"MM/DD/YYYY hh:mm:ss A\"\r\n },\r\n {\r\n \"title\": \"Updated By\",\r\n \"field\": \"UpdatedByName\",\r\n \"show\": true,\r\n \"width\": 100\r\n },\r\n {\r\n \"title\": \"Updated On\",\r\n \"field\": \"UpdatedOn\",\r\n \"show\": true,\r\n \"width\": 100,\r\n filter: \"date\",\r\n format: \"{0:d}\",\r\n convert: \"MM/DD/YYYY hh:mm:ss A\"\r\n },\r\n\r\n ],\r\n displayName: 'editInfo',\r\n allgriddata: 'allgriddata',\r\n navigateItem: 'navigateItem',\r\n navigation: 'navigation',\r\n loadreportfilter: 'loadreportfilter',\r\n ReportJsonQueryStr: 'ReportJsonQueryStr',\r\n mapActionsToEffects: {\r\n load: {\r\n rules: [{\r\n run: {\r\n valid: [{\r\n type: 'grid',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('MasterAdmin')+`/api/IPUsersAuthorizations/GetRequests/Grid?`,\r\n //\"url\":\"http://localhost:6004/api/IPUsersAuthorizations/GetRequests/Grid?\",\r\n \"matchProps\": [{\r\n name: \"routeid1\",\r\n key: \"routeid1\",\r\n }],\r\n type: 'get',\r\n saveAs: {\r\n key: 'data'\r\n }\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]// 1 intital load\r\n },\r\n addOpen:{\r\n rules: [{\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"addOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n run: {\r\n valid: [{\r\n type: 'grid',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('MasterAdmin')+`/api/IPUsersAuthorizations/GetRequests/Grid?`,\r\n //\"url\":\"http://localhost:6004/api/IPUsersAuthorizations/GetRequests/Grid?\",\r\n \"matchProps\": [{\r\n name: \"routeid1\",\r\n key: \"routeid1\",\r\n }],\r\n type: 'get',\r\n saveAs: {\r\n key: 'data'\r\n }\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n editOpen:{\r\n rules: [{\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"editOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n run: {\r\n valid: [{\r\n type: 'grid',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('MasterAdmin')+`/api/IPUsersAuthorizations/GetRequests/Grid?`,\r\n //\"url\":\"http://localhost:6004/api/IPUsersAuthorizations/GetRequests/Grid?\",\r\n \"matchProps\": [{\r\n name: \"routeid1\",\r\n key: \"routeid1\",\r\n }],\r\n type: 'get',\r\n saveAs: {\r\n key: 'data'\r\n }\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n \r\n 'display': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'value',\r\n key: 'editOpen',\r\n result: true\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'editInfo',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'allgriddata',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'navigateItem',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'navigation',\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'report': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'value',\r\n key: 'reportOpen',\r\n result: true\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'loadreportfilter',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'ReportJsonQueryStr',\r\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 AuthorizationsReport = {\r\n type: 'popup',\r\n key: 'AuthorizationsReport',\r\n name: 'AuthorizationsReport',\r\n\r\n anchor: 'right',\r\n open: false,\r\n aliases: {\r\n open: 'reportOpen'\r\n },\r\n sharedValues: ['open', 'loadreportfilter', 'ReportJsonQueryStr'],\r\n container: {\r\n values: {\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null\r\n },\r\n mapValues: {\r\n Report: [\r\n {\r\n key: 'ReportJsonQueryStr',\r\n name: 'ReportJsonQueryStr'\r\n },\r\n {\r\n key: 'loadreportfilter',\r\n name: 'loadreportfilter'\r\n },\r\n ],\r\n },\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: '',\r\n components: [\r\n {\r\n name: 'Report'\r\n },\r\n ]\r\n }\r\n ]\r\n\r\n },\r\n components: {\r\n Report: {\r\n \"type\": \"form\",\r\n \"key\": \"Report\",\r\n \"name\": \"Report\",\r\n aliases: {\r\n\r\n },\r\n sharedValues: ['ReportJsonQueryStr', 'loadreportfilter'],\r\n values: {\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null\r\n },\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: '',\r\n components: [{\r\n name: 'ReportJsonQueryStr',\r\n type: 'div',\r\n\r\n },\r\n {\r\n name: 'loadreportfilter',\r\n type: 'div',\r\n\r\n }],\r\n\r\n },\r\n ],\r\n },\r\n \"components\": {\r\n \"ReportJsonQueryStr\": {\r\n \"type\": \"gridreport\",\r\n \"gridkey\": 'AuthorizationsGrid',\r\n },\r\n },\r\n }\r\n }\r\n }\r\n}\r\n\r\nconst AuthorizationsContainer = {\r\n type: 'container',\r\n key: 'AuthorizationsContainer',\r\n values: {\r\n addOpen: false,\r\n editOpen: false,\r\n editInfo: null,\r\n allgriddata: null,\r\n navigateItem: null,\r\n navigation :null,\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null,\r\n reportOpen : false,\r\n },\r\n mapValues: {\r\n \r\n EditAuthorization: [\r\n {\r\n key: 'editOpen',\r\n name: 'open'\r\n },\r\n {\r\n key: 'editInfo',\r\n name: 'editInfo'\r\n },\r\n {\r\n key: 'allgriddata',\r\n name: 'allgriddata'\r\n },\r\n {\r\n key: 'navigateItem',\r\n name: 'navigateItem'\r\n },\r\n {\r\n key: 'navigation',\r\n name: 'navigation'\r\n },\r\n ],\r\n AuthorizationsGrid: [\r\n {\r\n key: 'editOpen',\r\n name: 'editOpen'\r\n },\r\n {\r\n key: 'reportOpen',\r\n name: 'reportOpen'\r\n },\r\n {\r\n key: 'ReportJsonQueryStr',\r\n name: 'ReportJsonQueryStr'\r\n },\r\n {\r\n key: 'loadreportfilter',\r\n name: 'loadreportfilter'\r\n },\r\n ],\r\n AuthorizationsReport: [\r\n {\r\n key: 'reportOpen',\r\n name: 'open'\r\n },\r\n {\r\n key: 'loadreportfilter',\r\n name: 'loadreportfilter'\r\n },\r\n {\r\n key: 'ReportJsonQueryStr',\r\n name: 'ReportJsonQueryStr'\r\n },\r\n\r\n ]\r\n\r\n },\r\n mapActionsToEffects: {\r\n \r\n 'editOpen': {\r\n rules: [\r\n {\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"editOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n uncheck:true,\r\n run: {\r\n valid: [\r\n {\r\n type: 'removelayout',\r\n name: 'EditAuthorization',\r\n }\r\n\r\n ],\r\n inValid:[\r\n {\r\n type: 'addlayout',\r\n name: 'EditAuthorization',\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'reportOpen': {\r\n rules: [\r\n {\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"reportOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n uncheck: true,\r\n run: {\r\n valid: [\r\n {\r\n type: 'removelayout',\r\n name: 'AuthorizationsReport',\r\n }\r\n\r\n ],\r\n inValid: [\r\n {\r\n type: 'addlayout',\r\n name: 'AuthorizationsReport',\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n },\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'col-12',\r\n components: [\r\n {\r\n name: 'AuthorizationsGrid'\r\n },\r\n ]\r\n }\r\n ]\r\n\r\n },\r\n components: {\r\n AuthorizationsGrid: AuthorizationsGrid,\r\n EditAuthorization: EditAuthorization,\r\n AuthorizationsReport:AuthorizationsReport\r\n }\r\n}\r\n\r\n\r\nexport default AuthorizationsContainer\r\n\r\n","\r\nimport React, { Fragment, useEffect, useRef } from \"react\"\r\nimport Container from '../../../core/controls/components/container'\r\nimport AuthorizationsGrid from '../../jsons/authorizations'\r\n\r\n\r\nconst AuthorizationsContainer = (props) => {\r\n\r\n return (\r\n <Container {...AuthorizationsGrid} {...props} />\r\n )\r\n}\r\n\r\nexport default AuthorizationsContainer\r\n\r\n\r\n\r\n","import Skeleton from '@material-ui/lab/Skeleton';\r\nimport React, { lazy, Suspense, useEffect, useRef } from 'react';\r\nimport { Route, Switch } from 'react-router-dom';\r\nimport Holidays from '../controls/wrappers/holidays/index';\r\nimport MasterTemplates from '../controls/wrappers/mastertemplate';\r\nimport Notice from '../controls/wrappers/notice';\r\nimport Settings from '../controls/wrappers/settings/settingscontainer';\r\nimport SidebarBr from '../controls/wrappers/sidebarbr';\r\nimport Alert from '../core/controls/components/alert';\r\nimport ConfirmationDialog from '../core/controls/components/confirmationPopup';\r\nimport HelpContext from '../core/controls/components/helpContext';\r\nimport Loader from '../core/controls/components/loading';\r\nimport RecordEditor from '../core/controls/components/recordeditors';\r\nimport DefaultSettings from '../core/controls/components/settings';\r\nimport consultantgrid from '../json/consultant/consultantgrid';\r\nimport Search from '../modules/search/index_tsp';\r\nimport Authorizations from '../controls/wrappers/authorizations';\r\n\r\nconst CreateRecord = lazy(() => import('../controls/wrappers/record/createrecord'));\r\nconst EditRecord = lazy(() => import('../controls/wrappers/record/editrecord'));\r\nconst CGrid = lazy(() => import('../core/modules/Grid/cgrid'));\r\nconst ProjectDownloads = lazy(() => import('../controls/wrappers/projectdownloads/projectdownloadscontainer'));\r\n\r\nexport default function WRSRouteControls(props) {\r\n\r\n let userProps = {\r\n 'AccessPortal': props.AccessPortal,\r\n 'accessPermissions': props.accessPermissions,\r\n 'accessLevelPermissions': props.accessLevelPermissions\r\n }\r\n let compmap = props.compmap\r\n const helpContext = useRef(null);\r\n const loaderView = React.useRef(null);\r\n const alertView = React.useRef(null);\r\n const noticeView = useRef(null)\r\n const confirmationView = useRef(null)\r\n\r\n useEffect(() => {\r\n if (loaderView && loaderView.current)\r\n DefaultSettings.setLoader(loaderView.current);\r\n if (alertView && alertView.current)\r\n DefaultSettings.setAlert(alertView.current);\r\n if (helpContext && helpContext.current)\r\n DefaultSettings.setDrawer(helpContext.current);\r\n if (noticeView && noticeView.current)\r\n DefaultSettings.setNotices(noticeView.current);\r\n if (confirmationView && confirmationView.current)\r\n DefaultSettings.setConfirmation(confirmationView.current);\r\n }, [loaderView, alertView, helpContext, noticeView, confirmationView])\r\n\r\n\r\n\r\n return (<Suspense fallback={<div className=\"col\">\r\n {/* <Backdrop open={true} /> */}\r\n <Skeleton variant=\"text\" width='100%' height={50} />\r\n <Skeleton variant=\"rect\" width='100%' height={800} />\r\n </div>}>\r\n {/* <Router> */}\r\n <Loader ref={loaderView} />\r\n <Alert ref={alertView} />\r\n <HelpContext ref={helpContext} />\r\n <RecordEditor ref={noticeView} />\r\n <ConfirmationDialog ref={confirmationView} />\r\n <Switch>\r\n <Route exact strict path='/Records/:key/new' render={() => <CreateRecord {...userProps} compmap={compmap} />} />\r\n <Route exact strict path='/Records/:key/:routeid/:routeid1/:sidebar?/:id?' render={() => <EditRecord userProps={userProps} compmap={compmap} />} />\r\n <Route exact strict path='/Administration/settings/:TableName?' component={Settings} />\r\n <Route exact strict path='/Administration/noticestypes/:mid?' component={Notice} />\r\n <Route exact strict path='/Administration/masternotices/:id?' component={MasterTemplates} />\r\n <Route exact strict path='/Administration/sidebarbr/:id?' component={SidebarBr} />\r\n <Route exact strict path='/Administration/projectdownloads' component={ProjectDownloads} />\r\n <Route exact strict path='/Administration/holidays/:id?' component={Holidays} />\r\n <Route exact strict path='/search' component={Search} />\r\n <Route exact strict path='/Administration/authorizations/:id?' component={Authorizations} />\r\n <Route exact strict path='/Administration/consultants/:Id?' render={() => <CGrid compmap={compmap} components={props.components}\r\n {...userProps} {...consultantgrid} />} />\r\n </Switch>\r\n {/* </Router> */}\r\n </Suspense>\r\n );\r\n}","import Skeleton from '@material-ui/lab/Skeleton';\r\nimport React, { lazy, Suspense, useEffect, useRef } from 'react';\r\nimport { Route, Switch } from 'react-router-dom';\r\nimport Holidays from '../controls/wrappers/holidays/index';\r\nimport MasterTemplates from '../controls/wrappers/mastertemplate';\r\nimport Notice from '../controls/wrappers/notice';\r\nimport Settings from '../controls/wrappers/settings/settingscontainer';\r\nimport SidebarBr from '../controls/wrappers/sidebarbr';\r\nimport Alert from '../core/controls/components/alert';\r\nimport ConfirmationDialog from '../core/controls/components/confirmationPopup';\r\nimport HelpContext from '../core/controls/components/helpContext';\r\nimport Loader from '../core/controls/components/loading';\r\nimport RecordEditor from '../core/controls/components/recordeditors';\r\nimport DefaultSettings from '../core/controls/components/settings';\r\nimport consultantgrid from '../json/consultant/consultantgrid';\r\nimport Search from '../modules/search/index_tsp';\r\nconst CreateRecord = lazy(() => import('../controls/wrappers/record/createrecord'));\r\nconst EditRecord = lazy(() => import('../controls/wrappers/record/editrecord'));\r\nconst CGrid = lazy(() => import('../core/modules/Grid/cgrid'));\r\nconst ProjectDownloads = lazy(() => import('../controls/wrappers/projectdownloads/projectdownloadscontainer'));\r\n\r\nexport default function FORWARDRouteControls(props) {\r\n\r\n let userProps = {\r\n 'AccessPortal': props.AccessPortal,\r\n 'accessPermissions': props.accessPermissions,\r\n 'accessLevelPermissions': props.accessLevelPermissions\r\n }\r\n let compmap = props.compmap\r\n const helpContext = useRef(null);\r\n const loaderView = React.useRef(null);\r\n const alertView = React.useRef(null);\r\n const noticeView = useRef(null)\r\n const confirmationView = useRef(null)\r\n\r\n useEffect(() => {\r\n if (loaderView && loaderView.current)\r\n DefaultSettings.setLoader(loaderView.current);\r\n if (alertView && alertView.current)\r\n DefaultSettings.setAlert(alertView.current);\r\n if (helpContext && helpContext.current)\r\n DefaultSettings.setDrawer(helpContext.current);\r\n if (noticeView && noticeView.current)\r\n DefaultSettings.setNotices(noticeView.current);\r\n if (confirmationView && confirmationView.current)\r\n DefaultSettings.setConfirmation(confirmationView.current);\r\n }, [loaderView, alertView, helpContext, noticeView, confirmationView])\r\n\r\n\r\n\r\n return (<Suspense fallback={<div className=\"col\">\r\n {/* <Backdrop open={true} /> */}\r\n <Skeleton variant=\"text\" width='100%' height={50} />\r\n <Skeleton variant=\"rect\" width='100%' height={800} />\r\n </div>}>\r\n {/* <Router> */}\r\n <Loader ref={loaderView} />\r\n <Alert ref={alertView} />\r\n <HelpContext ref={helpContext} />\r\n <RecordEditor ref={noticeView} />\r\n <ConfirmationDialog ref={confirmationView} />\r\n <Switch>\r\n <Route exact strict path='/Records/:key/new' render={() => <CreateRecord {...userProps} compmap={compmap} />} />\r\n <Route exact strict path='/Records/:key/:routeid/:routeid1/:sidebar?/:id?' render={() => <EditRecord userProps={userProps} compmap={compmap} />} />\r\n <Route exact strict path='/Administration/settings/:TableName?' component={Settings} />\r\n <Route exact strict path='/Administration/noticestypes/:mid?' component={Notice} />\r\n <Route exact strict path='/Administration/masternotices/:id?' component={MasterTemplates} />\r\n <Route exact strict path='/Administration/sidebarbr/:id?' component={SidebarBr} />\r\n <Route exact strict path='/Administration/projectdownloads' component={ProjectDownloads} />\r\n <Route exact strict path='/Administration/holidays/:id?' component={Holidays} />\r\n <Route exact strict path='/search' component={Search} />\r\n <Route exact strict path='/Administration/consultants/:Id?' render={() => <CGrid compmap={compmap} components={props.components}\r\n {...userProps} {...consultantgrid} />} />\r\n </Switch>\r\n {/* </Router> */}\r\n </Suspense>\r\n );\r\n}","/**\r\n *********************************************************\r\n Description: Handles routing of the components. Based on routes config routes are generated. All the properties from\r\n the json are spread over the component along with accessPermissions, accessPortal and component mapping. Component mapping\r\n maps names (json type value) to components.\r\n Required props: components, options. In options routes are needed to configure the routes.\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\n\r\nimport React, { Component, lazy, Suspense } from 'react'\r\nimport { HashRouter as Router, Route, withRouter, Switch } from 'react-router-dom';\r\nimport SnackBar from './snackbar';\r\nimport { getEnvVariable } from '../../../modules/environmentalList';\r\nimport Skeleton from '@material-ui/lab/Skeleton';\r\nimport Confirmation from '../../controls/components/confirmationPopup'\r\nimport Backdrop from '../backdrop';\r\nimport AMESRouteControls from '../../../routecontrols/ames.routecontrols';\r\nimport EPSRouteControls from '../../../routecontrols/eps.routecontrols';\r\nimport UPSRouteControls from '../../../routecontrols/ups.routecontrols';\r\nimport KEPTRouteControls from '../../../routecontrols/kept.routecontrols';\r\nimport SACRouteControls from '../../../routecontrols/sac.routecontrols';\r\n//import AEPSRouteControls from '../../../routecontrols/aeps.routecontrols';\r\nimport MPSRouteControls from '../../../routecontrols/mps.routecontrols';\r\nimport WRSRouteControls from '../../../routecontrols/wrs.routecontrols';\r\nimport FORWARDRouteControls from '../../../routecontrols/forward.routecontrols';\r\n// const AMESRouteControls = lazy(() => import('../../../routecontrols/ames.routecontrols'));\r\n// const EPSRouteControls = lazy(() => import('../../../routecontrols/eps.routecontrols'));\r\n// const UPSRouteControls = lazy(() => import('../../../routecontrols/ups.routecontrols'));\r\n// const KEPTRouteControls = lazy(() => import('../../../routecontrols/kept.routecontrols'));\r\n// const SACRouteControls = lazy(() => import('../../../routecontrols/sac.routecontrols'));\r\n// const AEPSRouteControls = lazy(() => import('../../../routecontrols/aeps.routecontrols'));\r\n// const MPSRouteControls = lazy(() => import('../../../routecontrols/mps.routecontrols'));\r\n// const WRSRouteControls = lazy(() => import('../../../routecontrols/wrs.routecontrols'));\r\nclass Content extends Component {\r\n\r\n generatePin = () => {\r\n let min = 0;\r\n let max = 9999;\r\n return (\"0\" + Math.floor(Math.random() * (max - min + 1)) + min).substr(-4);\r\n }\r\n\r\n render() {\r\n const { type, components, options, compmap, accessPermissions, accessLevelPermissions, AccessPortal } = this.props\r\n const contentcomp = []\r\n components.forEach((each, index) => {\r\n const EachComp = compmap[each.type]\r\n const { options, key } = each\r\n const routes = options ? options.routes : null;\r\n if (Array.isArray(routes)) {\r\n let path = ''\r\n routes.forEach(each => {\r\n const { route, routeParams } = each\r\n if (routeParams) {\r\n path += route + \"/\" + routeParams\r\n }\r\n else {\r\n path += route\r\n }\r\n })\r\n contentcomp.push(<Route exact={true} strict path={path} key={each.key || index} render={() => <EachComp AccessPortal={AccessPortal} accessPermissions={accessPermissions} accessLevelPermissions={accessLevelPermissions} compmap={compmap} {...each} key={each.key} />} />)\r\n }\r\n else if (routes) {\r\n const { route, routeParams, exactRoute } = routes\r\n if (routeParams) {\r\n contentcomp.push(<Route exact={exactRoute || true} strict path={route + '/:routeid'} key={each.key || index} render={() => <EachComp accessPermissions={accessPermissions} accessLevelPermissions={accessLevelPermissions} AccessPortal={AccessPortal} compmap={compmap} {...each} key={each.key} />} />)\r\n }\r\n else {\r\n contentcomp.push(<Route exact={true} strict path={route} key={each.key || index} render={() =>\r\n <EachComp accessPermissions={accessPermissions} accessLevelPermissions={accessLevelPermissions} AccessPortal={AccessPortal} compmap={compmap} {...each}\r\n key={each.key} dynamicKey={this.generatePin()} />} />)\r\n }\r\n\r\n }\r\n })\r\n return (\r\n <div className=\"eps-content-scroll w-100 m-2\" style={{ height: 'calc(100% - (50px))' }}>\r\n <Suspense fallback={<div className=\"col\">\r\n <Backdrop open={true} />\r\n <Skeleton variant=\"text\" width='100%' height={50} />\r\n <Skeleton variant=\"rect\" width='100%' height={800} />\r\n </div>}>\r\n <SnackBar />\r\n <Confirmation />\r\n {contentcomp ? <>\r\n {contentcomp}\r\n {getEnvVariable('ModuleKey') === 'AMES' && <AMESRouteControls {...this.props} />}\r\n {getEnvVariable('ModuleKey') === 'EPS' && <EPSRouteControls {...this.props} />}\r\n {getEnvVariable('ModuleKey') === 'UPS' && <UPSRouteControls {...this.props} />}\r\n {getEnvVariable('ModuleKey') === 'KEPT' && <KEPTRouteControls {...this.props} />}\r\n {getEnvVariable('ModuleKey') === 'SAC' && <SACRouteControls {...this.props} />}\r\n {/* {getEnvVariable('ModuleKey') === 'AEPS' && <AEPSRouteControls {...this.props} />} */}\r\n {getEnvVariable('ModuleKey') === 'MPS' && <MPSRouteControls {...this.props} />}\r\n {getEnvVariable('ModuleKey') === 'WRS' && <WRSRouteControls {...this.props} />}\r\n {getEnvVariable('ModuleKey') === 'FORWARD' && <FORWARDRouteControls {...this.props} />}</> : <></>}\r\n </Suspense>\r\n </div>\r\n )\r\n }\r\n\r\n}\r\n\r\nexport default withRouter(Content);\r\n","import Drawer from '@material-ui/core/Drawer';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport React, { forwardRef, useEffect, useState } from 'react';\r\n//import CloseIcon from '@material-ui/icons';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Fab from '@material-ui/core/Fab';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport GetAppIcon from '@material-ui/icons/GetApp';\r\nimport { DownloadInvoice } from '../../core/controls/components/custom/downloadshelper';\r\n\r\nconst drawerWidth = 840;\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n display: 'flex',\r\n },\r\n drawer: {\r\n [theme.breakpoints.up('sm')]: {\r\n width: drawerWidth,\r\n flexShrink: 0,\r\n },\r\n },\r\n // necessary for content to be below app bar\r\n toolbar: theme.mixins.toolbar,\r\n drawerPaper: {\r\n width: drawerWidth,\r\n },\r\n content: {\r\n flexGrow: 1,\r\n padding: theme.spacing(3),\r\n },\r\n drawerHeader: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: theme.spacing(0, 1),\r\n // necessary for content to be below app bar\r\n ...theme.mixins.toolbar,\r\n justifyContent: 'flex-start',\r\n }\r\n}));\r\n\r\nfunction InvoiceSideBar(props, ref) {\r\n const [url, setUrl] = useState(null);\r\n const [open, setOpen] = useState(false);\r\n const [id, setId] = useState(null);\r\n const [fileContent, setFileContent] = useState({htmlFileContent : '<span>Loading Invoice Details</span>'});\r\n const classes = useStyles();\r\n // useImperativeHandle(ref, () => ({\r\n // opendrawer: (url) => {\r\n // setUrl(url);\r\n // }\r\n // }))\r\n\r\n useEffect(() => {\r\n setOpen(props.open);\r\n if(props.open){\r\n setId(props.gridrow.InvoiceId)\r\n DownloadInvoice(props.gridrow.InvoiceId, props.gridrow.DownloadId).then(res => {\r\n setFileContent(res)\r\n });\r\n }\r\n\r\n }, [props.open]);\r\n\r\n // useEffect(\r\n // () => {\r\n // console.log('Invoice page entered......')\r\n // setOpen(true);\r\n // },\r\n // [props.invoiceid],\r\n // );\r\n\r\n const toggleDrawer = () => {\r\n setOpen(false);\r\n setId(null);\r\n setFileContent({htmlFileContent : '<span>Loading Invoice Details</span>'})\r\n props.handleInvoiceSlider();\r\n };\r\n\r\n const download = () =>{\r\n const downloadLink = document.createElement(\"a\");\r\n downloadLink.href = fileContent.base64PDFFileContent;//dFile\r\n downloadLink.download = fileContent.fileName; //fileName\r\n downloadLink.click();\r\n downloadLink.remove();\r\n }\r\n\r\n return (\r\n <Drawer anchor={'right'} open={open} onClose={() => toggleDrawer()} classes={{\r\n paper: classes.drawerPaper,\r\n }}>\r\n <AppBar position=\"static\" color='secondary'>\r\n <Toolbar variant=\"dense\">\r\n {/* <Typography variant=\"h6\" color=\"inherit\" >\r\n Invoice Details\r\n </Typography> */}\r\n <div className=\"row float-right\">\r\n <Fab size=\"small\" color=\"secondary\" aria-label=\"Close\" className=\"float-right\" title=\"Close\" onClick={toggleDrawer}>\r\n <CloseIcon fontSize=\"small\" />\r\n </Fab>\r\n <Fab size=\"small\" color=\"secondary\" aria-label=\"Download\" className=\"float-right\" title=\"Download\" onClick={download}>\r\n <GetAppIcon fontSize=\"small\" />\r\n </Fab>\r\n </div>\r\n\r\n {/* <IconButton onClick={toggleDrawer}>\r\n <CloseIcon />\r\n </IconButton> */}\r\n </Toolbar>\r\n </AppBar>\r\n {/* <div className={classes.drawerHeader}>\r\n <IconButton onClick={toggleDrawer}>\r\n <CloseIcon />\r\n </IconButton>\r\n </div> */}\r\n <div id=\"sampleDiv\" className=\"pl-4\" style={{ overflow: 'scroll' }}>\r\n <div dangerouslySetInnerHTML={{__html: fileContent.htmlFileContent}} />\r\n </div>\r\n\r\n </Drawer>\r\n );\r\n\r\n\r\n}\r\n\r\nexport default forwardRef(InvoiceSideBar);\r\n","import AppBar from '@material-ui/core/AppBar';\r\nimport Button from '@material-ui/core/Button';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport Drawer from '@material-ui/core/Drawer';\r\nimport Fab from '@material-ui/core/Fab';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport FormLabel from '@material-ui/core/FormLabel';\r\nimport Radio from '@material-ui/core/Radio';\r\nimport RadioGroup from '@material-ui/core/RadioGroup';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport React, { forwardRef, useEffect, useState } from 'react';\r\n\r\nconst drawerWidth = 840;\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n formControl: {\r\n margin: theme.spacing(3),\r\n },\r\n button: {\r\n margin: theme.spacing(1, 1, 0, 0),\r\n },\r\n }));\r\n\r\nfunction RegenerateSideBar(props, ref) {\r\n const [open, setOpen] = useState(false);\r\n const [value, setValue] = React.useState('2');\r\n const [cancelInvoice, setCancelInvoice] = React.useState(false);\r\n const [invoiceDate, setInvoiceDate] = React.useState(new Date());\r\n const [invoiceDueDays, setInvoiceDueDays] = React.useState(180);\r\n const classes = useStyles();\r\n\r\n\r\n useEffect(() => {\r\n setOpen(props.open);\r\n if(props.open){\r\n\r\n }\r\n\r\n }, [props.open]);\r\n\r\n\r\n\r\n const toggleDrawer = () => {\r\n setOpen(false);\r\n props.handleRegenerateSlider(null);\r\n };\r\n\r\n const handleRadioChange = (event) => {\r\n setValue(event.target.value);\r\n };\r\n\r\n const handleSubmit = (event) => {\r\n event.preventDefault();\r\n let regenerateOptions = { RegenerateType: value, CancelInvoice: cancelInvoice, InvoiceDate: invoiceDate, InvoiceDueDays:invoiceDueDays }\r\n props.handleRegenerateSlider(regenerateOptions);\r\n //props.handleRegenerateSlider(value,cancelInvoice);\r\n };\r\n\r\n const handleCancelInvoice = (e) => {\r\n setCancelInvoice(e.target.checked)\r\n }\r\n\r\n const handleFieldChange = (e, name) => {\r\n if(name == 'invoiceDate') {\r\n setInvoiceDate(e.target.value);\r\n }\r\n else {\r\n setInvoiceDueDays(e.target.value);\r\n }\r\n\r\n }\r\n\r\n const lable_baseCAP = (props.recordDetails && props.recordDetails[\"KEY\"] == 'VIOLATIONS') ? \"Fine\" : \"Invoice\";\r\n const isFine = (props.recordDetails && props.recordDetails[\"KEY\"] == 'VIOLATIONS');\r\n\r\n return (\r\n <Drawer anchor={'right'} open={open} onClose={() => toggleDrawer()} classes={{\r\n paper: classes.drawerPaper,\r\n }}>\r\n <AppBar position=\"static\" color='secondary'>\r\n <Toolbar variant=\"dense\">\r\n <div className=\"row float-right\">\r\n <Fab size=\"small\" color=\"secondary\" aria-label=\"Close\" className=\"float-right\" title=\"Close\" onClick={toggleDrawer}>\r\n <CloseIcon fontSize=\"small\" />\r\n </Fab>\r\n </div>\r\n\r\n </Toolbar>\r\n </AppBar>\r\n <FormControl component=\"fieldset\" className={classes.formControl}>\r\n <FormLabel component=\"legend\"> {props.type ==\"G\" ? \"Generate Options:\" : \"Regenerate Options:\"} </FormLabel>\r\n <FormLabel component=\"legend\" color=\"secondary\">{lable_baseCAP} will be generated based on current setting data. Latest fee details will be considered.</FormLabel>\r\n <div className=\"row pl-5\">\r\n <TextField\r\n label={lable_baseCAP +\" Date\"}\r\n className={'col-sm-5 pr-2'}\r\n value={invoiceDate}\r\n onChange={(e) => handleFieldChange(e, 'invoiceDate')}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n type=\"date\"\r\n />\r\n <TextField\r\n label={lable_baseCAP +\" Due Days\"}\r\n className={'col-sm-5 pr-3'}\r\n value={invoiceDueDays}\r\n onChange={(e) => handleFieldChange(e, 'invoiceDueDays')}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n type=\"number\"\r\n />\r\n </div>\r\n {!isFine && <RadioGroup aria-label=\"regenerate\" name=\"regenerate\" value={value} onChange={handleRadioChange}>\r\n <FormControlLabel value=\"1\" control={<Radio />} label=\"Include all active permits of applicant\" />\r\n <FormControlLabel value=\"2\" control={<Radio />} label= { props.type ==\"G\" ? \"Current permit\" : \"Current invoice permits\"} />\r\n </RadioGroup>}\r\n\r\n {props.type ==\"R\" && <FormControlLabel\r\n control={\r\n <Checkbox\r\n checked={cancelInvoice}\r\n onChange={handleCancelInvoice}\r\n name=\"cancelInvoice\"\r\n color=\"primary\"\r\n />\r\n }\r\n label=\"Cancel Current Invoice\"\r\n />}\r\n {cancelInvoice && <FormLabel component=\"legend\" color=\"secondary\">You are about to cancel current invoice upon regenerating.</FormLabel> }\r\n <Button type=\"submit\" variant=\"outlined\" color=\"primary\" className={classes.button} onClick={handleSubmit}>\r\n Confirm\r\n </Button>\r\n </FormControl>\r\n\r\n </Drawer>\r\n );\r\n\r\n\r\n}\r\n\r\nexport default forwardRef(RegenerateSideBar);\r\n","//[{\"Id\":1087,\"DomainId\":20340,\"Name\":\"Current\",\"Value\":\"U\"}, {\"Id\":1088,\"DomainId\":20340,\"Name\":\"Due\",\"Value\":\"D\",}, {\"Id\":1089, \"DomainId\":20340, \"Name\":\"Past Due\", \"Value\":\"PD\", }, { \"Id\":1090, \"DomainId\":20340, \"Name\":\"In Violation\", \"Value\":\"V\", }, { \"Id\":1091, \"DomainId\":20340, \"Name\":\"Paid\", \"Value\":\"P\", }, { \"Id\":1092, \"DomainId\":20340, \"Name\":\"Cancelled\", \"Value\":\"C\", }, { \"Id\":1093, \"DomainId\":20340, \"Name\":\"Waived\", \"Value\":\"W\", } ]\r\n\r\nexport function IsValidPermitStatus(prevstatus, currstatus){\r\n \r\n if(prevstatus == 'U'){\r\n if(currstatus == 'C' || currstatus == 'W'){\r\n return true;\r\n }else{\r\n return false;\r\n }\r\n }\r\n if(prevstatus == 'C'){\r\n if(currstatus == 'U' || currstatus == 'W'){\r\n return true;\r\n }else{\r\n return false;\r\n }\r\n }\r\n if(prevstatus == 'W'){\r\n return false;\r\n }\r\n \r\n}\r\n\r\nexport function IsValidInvoiceStatus(prevstatus, currstatus){\r\n \r\n if(prevstatus == 'U'){\r\n if(currstatus == 'C' || currstatus == 'W'){\r\n return true;\r\n }else{\r\n return false;\r\n }\r\n }\r\n if(prevstatus == 'C'){\r\n if(currstatus == 'U' || currstatus == 'W'){\r\n return true;\r\n }else{\r\n return false;\r\n }\r\n }\r\n if(prevstatus == 'W'){\r\n return false;\r\n }\r\n\r\n return false;\r\n \r\n}","import Checkbox from '@material-ui/core/Checkbox';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport FormGroup from '@material-ui/core/FormGroup';\r\nimport { Grid, GridColumn, GridToolbar } from '@progress/kendo-react-grid';\r\nimport moment from 'moment';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport ReactResizeDetector from 'react-resize-detector';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { bindActionCreators } from 'redux';\r\nimport { snackbarMessage } from '../../core/actions';\r\nimport { CustomColumnMenu } from '../../core/controls/components/customColumnMenu';\r\nconst _ = require('lodash');\r\n\r\nfunction BillingGrid(props) {\r\n const [data, setData] = useState([])\r\n const [total, setTotal] = useState(0)\r\n const [gridColumns, setGridColumns] = useState([])\r\n //const [selectionValue, setSelectionValue] = useState(null)\r\n const [hasCheckbox, setHasCheckbox] = useState(props.hascheckbox)\r\n const [check, setcheck] = useState([])\r\n let submodulemenu = localStorage.getItem('submodule') && JSON.parse(localStorage.getItem('submodule')) ? JSON.parse(localStorage.getItem('submodule')) : []\r\n const [submodule, setSubmodule] = useState(submodulemenu)\r\n\r\n const rowRender = (trElement, row) => {\r\n const trProps = {\r\n ...trElement.props,\r\n onDoubleClick: () => {\r\n props.rowRenderData(row)\r\n }\r\n };\r\n return React.cloneElement(trElement, { ...trProps }, trElement.props.children);\r\n }\r\n\r\n useEffect(() => {\r\n let checkdata = []\r\n submodule.forEach(element => {\r\n checkdata.push(element.key)\r\n });\r\n setcheck(checkdata)\r\n }, [submodule])\r\n\r\n\r\n useEffect(() => {\r\n if (data !== props.data) {\r\n setData(props.data);\r\n }\r\n setTotal(props.total);\r\n setGridColumns(props.gridColumns);\r\n setHasCheckbox(props.hascheckbox);\r\n }, [props])\r\n\r\n const handleSelection = (event) => {\r\n let finalitems = []\r\n if (check.includes(event.target.value)) {\r\n finalitems = _.remove(check, function (n) {\r\n return n !== event.target.value;\r\n });\r\n }\r\n else {\r\n finalitems = [...check]\r\n finalitems.push(event.target.value)\r\n }\r\n setcheck(finalitems);\r\n props.gridselectionLoad(finalitems);\r\n }\r\n\r\n\r\n const selectionChange = (event, propsdata) => {\r\n let selectData = data\r\n // const checked = event.syntheticEvent.target.checked;\r\n const datavalues = selectData.map(item => { //all records with selected : true, false\r\n if (propsdata && propsdata.dataItem && propsdata.dataItem.Id ? item.Id === propsdata.dataItem.Id : item.Id === event.dataItem.Id) {\r\n item.selected = propsdata && propsdata.dataItem && propsdata.dataItem.Id ? !propsdata.dataItem.selected : !event.dataItem.selected;\r\n }\r\n return item;\r\n });\r\n let selectionmapdata = datavalues.filter(res => { //selected records\r\n if (res.selected)\r\n return res.Id\r\n })\r\n let selectionmapdataid = selectionmapdata.map(res => { // selected record ids\r\n return res.Id\r\n })\r\n\r\n setData(datavalues);\r\n props.gridSelection(datavalues, selectionmapdata) //need confirmation selectionmapdata or selectionmapdataid\r\n }\r\n\r\n const headerSelectionChange = (event, gridprops) => {\r\n let selectData = data.map(a => ({ ...a }));\r\n let selectDataVal = data.map(a => ({ ...a }));\r\n const checked = event.syntheticEvent.target.checked;\r\n const dataValues = selectDataVal.map(item => {\r\n item.selected = checked;\r\n return item;\r\n });\r\n const datavalues = selectData.map(item => { //all records with selected : true, false\r\n if (item.Status !== \"U\") {\r\n item.selected = false;\r\n }\r\n else {\r\n item.selected = checked;\r\n }\r\n\r\n return item;\r\n });\r\n let selectionmapdata = datavalues.filter(res => { //selected records\r\n if (res.selected)\r\n return res.Id\r\n })\r\n let selectionmapdataid = selectionmapdata.map(res => { // selected record ids\r\n return res.Id\r\n })\r\n\r\n setData(dataValues);\r\n props.gridSelection(datavalues, selectionmapdata) //need confirmation selectionmapdata or selectionmapdataid\r\n }\r\n\r\n const StatusCustomCell = (props) => {\r\n return (\r\n <td>\r\n {props.dataItem[props.field] === 'U' ? \"UnPaid\" : props.dataItem[props.field] === 'P' ? \"Paid\" : props.dataItem[props.field] === 'C' ? \"Cancelled\" : \"Partial Payment\"}\r\n </td>\r\n );\r\n };\r\n\r\n const DateCustomCell = (props) => {\r\n return (\r\n <td>\r\n {props.dataItem[props.field] ? moment(props.dataItem[props.field]).format('MM/DD/YYYY') : \"\"}\r\n </td>\r\n );\r\n };\r\n\r\n const ColumnName = (str) => {\r\n const str2 = str.charAt(0).toUpperCase() + str.slice(1);\r\n\r\n }\r\n\r\n const GridTitle = (each) => {\r\n let title = each.charAt(0).toUpperCase() + each.slice(1);\r\n return title.replace(/([A-Z])/g, ' $1').trim()\r\n }\r\n\r\n return (\r\n <ReactResizeDetector handleWidth handleHeight>\r\n {({ width, height }) =>\r\n <div className=\"col-sm-12 col-xs-12 \">\r\n <Grid\r\n reorderable\r\n style={{ height: window.innerHeight - 520, width: 'w-90' }}\r\n resizable\r\n data={data}\r\n total={total}\r\n rowRender={rowRender}\r\n selectedField=\"selected\"\r\n onSelectionChange={selectionChange}\r\n onHeaderSelectionChange={headerSelectionChange}\r\n >\r\n {props.issidebar && <GridToolbar >\r\n <div className=\"col row pl-5\">\r\n <FormControl component=\"fieldset\" >\r\n <FormGroup>\r\n <div className=\"row pl-2 \">\r\n {submodule.map(each => {\r\n return <FormControlLabel value={each.key} control={<Checkbox onChange={handleSelection} checked={check.includes(each.key)} size=\"small\" />} label={<span style={{ fontSize: '14px' }}>{each.title}</span>} />\r\n })}\r\n </div>\r\n </FormGroup>\r\n </FormControl>\r\n </div>\r\n </GridToolbar>}\r\n {hasCheckbox && <GridColumn\r\n className=\"selected\"\r\n field=\"selected\"\r\n width=\"75px\"\r\n headerSelectionValue={\r\n data && data.length > 0 && data.findIndex(dataItem => dataItem.selected === false) === -1\r\n\r\n }\r\n cell={props => <td>\r\n <input type=\"checkbox\" checked={props.dataItem['Status'] !== 'U' ? false : props.dataItem['selected']} disabled={props.dataItem['Status'] !== 'U'} onChange={(e) => selectionChange(e, props)} />\r\n </td>}\r\n columnMenu={\r\n props =>\r\n <CustomColumnMenu\r\n {...props}\r\n // columns={datagridcol} //datagridcol: no declaration datagridcol\r\n saveReport={this.saveReport}\r\n onColumnsSubmit={this.onColumnsSubmit}\r\n />}\r\n />}\r\n {gridColumns && gridColumns.length > 0 && gridColumns.map((each, index) => {\r\n if (each === 'Status')\r\n return <GridColumn width={'200px'} field={each} title={GridTitle(each)} key={index} cell={StatusCustomCell} />\r\n else if (each.includes(\"Date\"))\r\n return <GridColumn width={'200px'} field={each} title={GridTitle(each)} key={index} cell={DateCustomCell} />\r\n else\r\n return <GridColumn width={'200px'} field={each} title={GridTitle(each)} key={index} />\r\n })}\r\n </Grid>\r\n </div>\r\n }\r\n </ReactResizeDetector>\r\n )\r\n}\r\n\r\nconst mapProps = (state) => {\r\n return state\r\n}\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage }, dispatch);\r\n}\r\n\r\nBillingGrid = connect(mapProps, mapActions)(BillingGrid)\r\nexport default withRouter(BillingGrid)","import MaterialTable from '@material-table/core';\r\nimport Accordion from '@material-ui/core/Accordion';\r\nimport AccordionDetails from '@material-ui/core/AccordionDetails';\r\nimport AccordionSummary from '@material-ui/core/AccordionSummary';\r\nimport Button from '@material-ui/core/Button';\r\nimport Drawer from '@material-ui/core/Drawer';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport InputAdornment from '@material-ui/core/InputAdornment';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Select from '@material-ui/core/Select';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport AddCircleIcon from '@material-ui/icons/AddCircle';\r\nimport CheckIcon from '@material-ui/icons/Check';\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport DeleteOutlineIcon from '@material-ui/icons/DeleteOutline';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\r\nimport { Grid, GridColumn as Column } from '@progress/kendo-react-grid';\r\nimport moment from 'moment';\r\nimport React, { forwardRef, useEffect, useState } from 'react';\r\nimport { getEnvVariable } from '../../../src/modules/environmentalList';\r\nimport { DownloadInvoice } from '../../core/controls/components/custom/downloadshelper';\r\nimport FormHeader from '../../core/modules/form/cformheader';\r\nimport { GetInvoiceById, GetInvoicePaymentInformation, GetInvoicePermitDetails, GetInvoicePermitDetailsList, GetInvoicesList, GetInvoiceViewById, GetStateDomainValues, GetTotalDue, GetTotalDueMultiPayments, GetTotalFee, InsertInvoicePhysicalCheckPayment } from './billingservice';\r\nconst _ = require('lodash');\r\n\r\nconst drawerWidth = 1000;\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n formControl: {\r\n margin: theme.spacing(3),\r\n },\r\n button: {\r\n margin: theme.spacing(1, 1, 0, 0),\r\n },\r\n drawerPaper: {\r\n width: drawerWidth,\r\n },\r\n root: {\r\n width: '100%'\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\nfunction PhysicalCheckSideBar(props, ref) {\r\n const [open, setOpen] = useState(false);\r\n const [itemEdit, setItemEdit] = useState(false);\r\n const [billingInfo, setBillinfInfo] = useState({ PayeeName: '', PayeeLastName: '', PayeeAddressLine1: '', PayeeAddressLine2: '', PayeeCity: '', PayeeState: '', PayeeZip: '', PayeeEmail: '' });\r\n\r\n const classes = useStyles();\r\n const [currentCheckData, setCurrentCheckData] = useState({ Id: 0, Type: 'Check', TransactionDate: new Date(), Status: 'Paid', Quantity: 1, ProcessingFee: 0, CheckNumber: '', CheckDepositNumber: '', CheckBankNumber: '', CheckDepositDate: '', TotalAmount: '', CheckDepositedBy: '' });\r\n const [initialCheckData, setInitialCheckData] = useState([])\r\n const [checkData, setCheckData] = useState([])\r\n const [paymentInformation, setPaymentInformation] = useState({ InvoiceId: 0, ApplicantId: 0, ApplicationType: '', TotalFee: 0, BalanceDue: 0, PermitNumber: '' })\r\n const [helperText, setHelperText] = useState(null)\r\n const [billingHelperText, setBillingHelperText] = useState(null)\r\n const [amountHelperText, setAmountHelperText] = useState(null)\r\n const [zipHelperText, setZipHelperText] = useState(null)\r\n const [balanceAmount, setBalanceAmount] = useState(null)\r\n const [statedropdownvalues, setStatedropdownvalues] = useState([])\r\n const [firstnameHelperText, setFirstnameHelperText] = useState(null)\r\n const [lastnameHelperText, setLastnameHelperText] = useState(null)\r\n const [addressline1HelperText, setAddressline1HelperText] = useState(null)\r\n const [addressline2HelperText, setAddressline2HelperText] = useState(null)\r\n const [cityHelperText, setCityHelperText] = useState(null)\r\n const [editedData, setEditedData] = useState(null)\r\n const [invoicePermits, setInvoicePermits] = useState({})\r\n const [ACHCCPaymentDetails, setACHCCPaymentDetails] = useState({ ProcessingFee: 0, TotalAmount: 0 , TransactionId: 'NA', PaymentDate: 'NA'})\r\n\r\n useEffect(() => {\r\n GetStateDomainValues().then(res => {\r\n setStatedropdownvalues(res);\r\n });\r\n console.log(\"Hello\");\r\n if (props.viewtype == 'BILLING') {\r\n LoadBillingData();\r\n } else if (props.viewtype == 'INVOICE') {\r\n LoadInvoiceData();\r\n }\r\n else if (props.viewtype == 'PAYMENT') {\r\n LoadInvoicesData();\r\n }\r\n LoadInvoicePermitDetailsList()\r\n\r\n }, []);\r\n\r\n const LoadBillingData = () => {\r\n let recordid = props.match.params.routeid1\r\n if (props.billingid) {\r\n let invoiceids = props.billingid.split(',');\r\n if (invoiceids.length > 0) {\r\n GetInvoicePaymentInformation(recordid, invoiceids).then(res => {\r\n console.log(res);\r\n });\r\n }\r\n }\r\n }\r\n\r\n const LoadInvoicesData = () => {\r\n if(props.invoiceid && Array.isArray(props.invoiceid)){\r\n GetInvoicesList(props.invoiceid).then(res => {\r\n console.log(res)\r\n if (res) {\r\n setBalanceAmount(GetTotalDueMultiPayments(res));\r\n let appdata = props.appdata || {}\r\n let billingpaymentdetails = [];\r\n let totalFeeAmount = 0;\r\n let invmerged = res[0];\r\n let invdetailsmerged = [];\r\n let invlineitemsmerged = [];\r\n let invbillingpaymentsmerged = [];\r\n let invbillingpaymentdetailsmerged = [];\r\n if(Array.isArray(res)){\r\n res.forEach(inv => {\r\n invdetailsmerged.push(...inv.InvoiceDetails)\r\n invlineitemsmerged.push(...inv.InvoiceLineItems)\r\n //if(invbillingpaymentsmerged.some(e => e.BillingPaymentDetailId === 'Magenic'))\r\n invbillingpaymentsmerged.push(...inv.BillingPayments);\r\n inv.BillingPayments.forEach(blg => {\r\n invbillingpaymentdetailsmerged.push(blg.BillingPaymentDetails)\r\n });\r\n //totalFeeAmount =totalFeeAmount + GetTotalFee(inv)\r\n });\r\n }\r\n invmerged.InvoiceDetails = invdetailsmerged;\r\n invmerged.InvoiceLineItems = invlineitemsmerged;\r\n //Remove duplicate data\r\n invbillingpaymentdetailsmerged = invbillingpaymentdetailsmerged.filter((tag, index, array) => array.findIndex(t => t.Id == tag.Id && t.Type == tag.Type) == index);\r\n // let uniquebillingpayments = invbillingpaymentsmerged[0];\r\n // uniquebillingpayments.BillingPaymentDetails = invbillingpaymentdetailsmerged[0];\r\n //invmerged.BillingPayments = [uniquebillingpayments]\r\n\r\n setPaymentInformation({ InvoiceId: invmerged.Id, ApplicantId: (invmerged && Array.isArray(invmerged.InvoiceLineItems)) ? invmerged.InvoiceLineItems[0].OwnerId : appdata[\"COMPANY_ID\"], ApplicationType: props.match.params.key, TotalFee: GetTotalFee(invmerged), BalanceDue: GetTotalDue(invmerged), PermitNumber: appdata[\"PERMIT_NO\"] })\r\n\r\n billingpaymentdetails = invbillingpaymentdetailsmerged;\r\n // invmerged.BillingPayments.forEach(payment => {\r\n // if (payment.BillingPaymentDetails)\r\n // billingpaymentdetails.push(payment.BillingPaymentDetails);\r\n // })\r\n if (billingpaymentdetails.length > 0) {\r\n let billinginfo = billingpaymentdetails[0];\r\n let achepayments = billingpaymentdetails.filter(a => a.Type == 'ACH');\r\n setCheckData(billingpaymentdetails.filter(a => a.Type == 'Check'));\r\n setBillinfInfo({ PayeeName: billinginfo.PayeeName, PayeeLastName: billinginfo.PayeeLastName, PayeeAddressLine1: billinginfo.PayeeAddressLine1, PayeeAddressLine2: billinginfo.PayeeAddressLine2, PayeeCity: billinginfo.PayeeCity, PayeeState: billinginfo.PayeeState, PayeeZip: billinginfo.PayeeZip, PayeeEmail: billinginfo.PayeeEmail });\r\n if(achepayments && Array.isArray(achepayments) && achepayments.length > 0)\r\n setACHCCPaymentDetails({ ProcessingFee: achepayments[0].ProcessingFee, TotalAmount: achepayments[0].TotalAmount , TransactionId: achepayments[0].TransactionId, PaymentDate: moment(achepayments[0].TransactionDate).format('MM/DD/YYYY')})\r\n }\r\n }\r\n })\r\n }\r\n }\r\n\r\n const LoadInvoiceData = () => {\r\n GetInvoiceById(props.invoiceid).then(res => {\r\n console.log(res)\r\n if (res) {\r\n let appdata = props.appdata || {}\r\n let billingpaymentdetails = []\r\n setPaymentInformation({ InvoiceId: res.Id, ApplicantId: (res && Array.isArray(res.InvoiceLineItems)) ? res.InvoiceLineItems[0].OwnerId : appdata[\"COMPANY_ID\"], ApplicationType: props.match.params.key, TotalFee: GetTotalFee(res), BalanceDue: GetTotalDue(res), PermitNumber: appdata[\"PERMIT_NO\"] })\r\n setBalanceAmount(GetTotalDue(res));\r\n res.BillingPayments.forEach(payment => {\r\n if (payment.BillingPaymentDetails)\r\n billingpaymentdetails.push(payment.BillingPaymentDetails);\r\n })\r\n if (billingpaymentdetails.length > 0) {\r\n let billinginfo = billingpaymentdetails[0];\r\n let achepayments = billingpaymentdetails.filter(a => a.Type == 'ACH');\r\n setCheckData(billingpaymentdetails.filter(a => a.Type == 'Check'));\r\n setBillinfInfo({ PayeeName: billinginfo.PayeeName, PayeeLastName: billinginfo.PayeeLastName, PayeeAddressLine1: billinginfo.PayeeAddressLine1, PayeeAddressLine2: billinginfo.PayeeAddressLine2, PayeeCity: billinginfo.PayeeCity, PayeeState: billinginfo.PayeeState, PayeeZip: billinginfo.PayeeZip, PayeeEmail: billinginfo.PayeeEmail });\r\n if(achepayments && Array.isArray(achepayments) && achepayments.length > 0)\r\n setACHCCPaymentDetails({ ProcessingFee: achepayments[0].ProcessingFee, TotalAmount: achepayments[0].TotalAmount , TransactionId: achepayments[0].TransactionId, PaymentDate: moment(achepayments[0].TransactionDate).format('MM/DD/YYYY')})\r\n }\r\n }\r\n })\r\n }\r\n\r\n const LoadInvoicePermitDetails = () => {\r\n GetInvoicePermitDetails(props.invoiceid).then(res => {\r\n console.log(res)\r\n if (res && Array.isArray(res)) {\r\n setInvoicePermits(res)\r\n }\r\n })\r\n }\r\n\r\n const LoadInvoicePermitDetailsList = () => {\r\n let invlist = props.viewtype == 'PAYMENT' ? props.invoiceid : [props.invoiceid]\r\n GetInvoicePermitDetailsList(invlist).then(res => {\r\n setInvoicePermits(res)\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n setOpen(props.open);\r\n }, [props.open]);\r\n\r\n const toggleDrawer = () => {\r\n setOpen(false);\r\n props.physicalcheckSlider(false, '', '');\r\n };\r\n\r\n const handleSave = () => {\r\n if (billingInfo.PayeeName == '' || billingInfo.PayeeLastName == '' || billingInfo.PayeeAddressLine1 == '' || billingInfo.PayeeCity == '' || billingInfo.PayeeState == '' || billingInfo.PayeeZip == '') {\r\n setBillingHelperText(\"Please fill mandatory fields\")\r\n }\r\n else if (billingInfo.PayeeName.length > 100) {\r\n setFirstnameHelperText(\"First Name length should be in the range of (1-100)\")\r\n }\r\n else if (billingInfo.PayeeLastName.length > 100) {\r\n setLastnameHelperText(\"Last Name length should be in the range of (1-100)\")\r\n }\r\n else if (billingInfo.PayeeAddressLine1.length > 1000) {\r\n setAddressline1HelperText(\"Address Line 1 length should be in the range of (1-1000)\")\r\n }\r\n else if (billingInfo.PayeeAddressLine2.length > 1000) {\r\n setAddressline2HelperText(\"Address Line 2 length should be in the range of (1-1000)\")\r\n }\r\n else if (billingInfo.PayeeCity.length > 200) {\r\n setCityHelperText(\"City length should be in the range of (1-200)\")\r\n }\r\n else if (!(/(^\\d{5}$)|(^\\d{5}-\\d{4}$)/.test(billingInfo.PayeeZip))) {\r\n setZipHelperText(\"Please enter valid Zip\")\r\n }\r\n else if (props.viewtype == 'INVOICE' || props.viewtype == 'PAYMENT') {\r\n saveInvoicePayments();\r\n }\r\n // call request, data to pass : checkData and BillingInfo\r\n\r\n }\r\n\r\n const saveInvoicePayments = () => {\r\n if (checkData && Array.isArray(checkData)) {\r\n let billinginformation = []\r\n checkData.forEach(checkinfo => {\r\n billinginformation.push({ ...checkinfo, ...billingInfo })\r\n })\r\n InsertInvoicePhysicalCheckPayment(props.invoiceid, billinginformation).then(res => {\r\n console.log(res);\r\n toggleDrawer();\r\n })\r\n }\r\n }\r\n\r\n const handleFieldChange = (event, name) => {\r\n setZipHelperText(null)\r\n setFirstnameHelperText(null)\r\n setLastnameHelperText(null)\r\n setAddressline1HelperText(null)\r\n setAddressline2HelperText(null)\r\n setCityHelperText(null)\r\n setBillinfInfo({ ...billingInfo, [name]: event.target.value });\r\n setBillingHelperText(null)\r\n }\r\n\r\n const handleCheckChange = (event, name) => {\r\n let valuedata = event.target.value\r\n if (name == \"TotalAmount\") {\r\n setAmountHelperText(null)\r\n let num = event.target.value.split(\".\");\r\n if(num && Array.isArray(num) && num.length>1) {\r\n const myArray = valuedata.split(\".\");\r\n if(myArray[1].length > 2){\r\n let dectext = myArray[1].substring(0, 2)\r\n valuedata = myArray[0]+'.'+dectext\r\n }\r\n }\r\n }\r\n setCurrentCheckData({ ...currentCheckData, [name]: valuedata });\r\n setHelperText(null);\r\n }\r\n\r\n const insert = () => {\r\n setItemEdit(true);\r\n }\r\n\r\n const discard = () => {\r\n setCurrentCheckData({ Id: 0, Type: 'Check', TransactionDate: new Date(), Status: '', Quantity: 1, SubTotal: '', ProcessingFee: 0, CheckNumber: '', CheckDepositNumber: '', CheckBankNumber: '', CheckDepositDate: '', TotalAmount: '', CheckDepositedBy: '' });\r\n setItemEdit(false);\r\n setHelperText(null);\r\n setAmountHelperText(null);\r\n setEditedData(null)\r\n }\r\n\r\n const addcheck = () => {\r\n if (currentCheckData.CheckBankNumber == \"\" || currentCheckData.CheckDepositDate == \"\" || currentCheckData.CheckDepositNumber == \"\" || currentCheckData.TotalAmount == \"\" || currentCheckData.CheckNumber == \"\") {\r\n setHelperText(\"Please fill all the mandatory fields.\")\r\n setAmountHelperText(null)\r\n }\r\n else if (currentCheckData.TotalAmount > balanceAmount) {\r\n setAmountHelperText(\"Check Amount cannot exceed Balance(due)\")\r\n }\r\n else {\r\n let totalcheckdata = [...checkData];\r\n let blncamount\r\n if(editedData) {\r\n blncamount = Number(balanceAmount) + Number(editedData.TotalAmount)\r\n totalcheckdata = totalcheckdata.map(x => _.isEqual(x, editedData) ? currentCheckData : x)\r\n }\r\n else {\r\n let savedCheckData = { Type: 'Check', TransactionDate: new Date(), Status: 'Paid', Quantity: 1, SubTotal: currentCheckData.TotalAmount, ProcessingFee: 0, Invoices: (props.viewtype == \"PAYMENT\" ? props.invoiceid : [props.invoiceid]), ...currentCheckData, ...billingInfo }\r\n totalcheckdata.push(savedCheckData);\r\n }\r\n setCheckData(totalcheckdata);\r\n blncamount = Number(balanceAmount) - Number(currentCheckData.TotalAmount)\r\n //setBalanceAmount(blncamount)\r\n setCurrentCheckData({ Type: 'Check', TransactionDate: new Date(), Status: '', Quantity: 1, SubTotal: '', ProcessingFee: 0, CheckNumber: '', CheckDepositNumber: '', CheckBankNumber: '', CheckDepositDate: '', TotalAmount: '', CheckDepositedBy: '' });\r\n setItemEdit(false);\r\n setAmountHelperText(null)\r\n setEditedData(null)\r\n }\r\n }\r\n\r\n const deleteCheck = (x) => {\r\n var array = [...checkData];\r\n var finalarray = _.remove(array, function (n) {\r\n return !(_.isEqual(n, x));\r\n });\r\n setCheckData(finalarray);\r\n setAmountHelperText(null);\r\n let blncamount = Number(balanceAmount) + Number(x.TotalAmount)\r\n setBalanceAmount(blncamount)\r\n }\r\n\r\n const EditCheck = (x) => {\r\n console.log(x);\r\n setCurrentCheckData({...x});\r\n setEditedData({...x})\r\n setItemEdit(true);\r\n }\r\n\r\n const cellWithEditing = (propdata) => {\r\n return <td>\r\n <IconButton onClick={() => EditCheck(propdata.dataItem)} color=\"primary\" title=\"Edit Check\">\r\n <EditIcon fontSize=\"small\" />\r\n </IconButton>\r\n <IconButton onClick={() => deleteCheck(propdata.dataItem)} disabled={ propdata.dataItem.Id > 0 ? true : _.some(initialCheckData, propdata.dataItem)} color=\"primary\" title=\"Delete Check\">\r\n <DeleteIcon fontSize=\"small\" />\r\n </IconButton>\r\n {/* {propdata && propdata.dataItem && propdata.dataItem.Id && !propdata.dataItem.Id > 0 &&\r\n <IconButton onClick={() => deleteCheck(propdata.dataItem)} disabled={_.some(initialCheckData, propdata.dataItem)} color=\"primary\" title=\"Delete Check\">\r\n <DeleteIcon fontSize=\"small\" />\r\n </IconButton>\r\n } */}\r\n\r\n </td>\r\n }\r\n const DateCustomCell = (props) => {\r\n return (\r\n <td>\r\n {props.dataItem[props.field] ? moment(props.dataItem[props.field]).format('MM/DD/YYYY') : \"\"}\r\n </td>\r\n );\r\n }\r\n\r\n const handleDownload = () => {\r\n GetInvoiceViewById(paymentInformation.InvoiceId).then(res =>{\r\n if(res && res.ReceiptDownloadId){\r\n DownloadInvoice(paymentInformation.InvoiceId, res.ReceiptDownloadId).then(data => {\r\n const downloadLink = document.createElement(\"a\");\r\n downloadLink.href = data.base64PDFFileContent;//dFile\r\n downloadLink.download = data.fileName; //fileName\r\n downloadLink.click();\r\n downloadLink.remove();\r\n })\r\n\r\n }else{\r\n alert('No setting mapped')\r\n }\r\n })\r\n console.log(\"test\");\r\n }\r\n\r\n const InvoiceLineItemsForm = (key, data) => {\r\n return (\r\n <div className={classes.root}>\r\n <Accordion style={{border: '1px solid', color: '#1976d2'}}>\r\n <AccordionSummary\r\n expandIcon={<ExpandMoreIcon />}\r\n aria-controls=\"panel1a-content\"\r\n id=\"panel1a-header\">\r\n <Typography>Line Items Of {lable_baseCAP} - <b>{key}</b> </Typography>\r\n </AccordionSummary>\r\n\r\n <AccordionDetails style={{'display':'block'}}>\r\n <MaterialTable\r\n title=\"\"\r\n columns={[\r\n { title: 'Permit Number', field: 'PermitNumber' },\r\n { title: 'District', field: 'District' },\r\n { title: 'Applicant Name', field: 'ApplicantName' },\r\n { title: 'Date Submitted', field: 'SubmittedDate' },\r\n { title: 'Authorized By', field: 'AuthorizedBy' },\r\n { title: 'Authorized Date', field: 'AuthorizedDate' }\r\n ]}\r\n data={data}\r\n />\r\n </AccordionDetails>\r\n </Accordion>\r\n </div>\r\n )\r\n }\r\n\r\n const InvoiceLineItemsFormControl = (invoicePermits) => {\r\n let content = []\r\n Object.keys(invoicePermits).forEach(function(key) {\r\n content.push(InvoiceLineItemsForm(key, invoicePermits[key]))\r\n })\r\n return content;\r\n }\r\n\r\n const checkform = () => {\r\n return (\r\n <div>\r\n <div className=\"row pl-5 pt-2\">\r\n <TextField\r\n label=\"Check Number\"\r\n className={'col-sm-5 pr-3'}\r\n value={currentCheckData.CheckNumber}\r\n onChange={(e) => handleCheckChange(e, 'CheckNumber')}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n type=\"number\"\r\n required\r\n />\r\n <TextField\r\n label=\"Check Deposit Number\"\r\n className={'col-sm-5 pr-2'}\r\n value={currentCheckData.CheckDepositNumber}\r\n onChange={(e) => handleCheckChange(e, 'CheckDepositNumber')}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n type=\"number\"\r\n required\r\n />\r\n </div>\r\n <div className=\"row pl-5\">\r\n <TextField\r\n label=\"Bank Number\"\r\n className={'col-sm-5 pr-3'}\r\n value={currentCheckData.CheckBankNumber}\r\n onChange={(e) => handleCheckChange(e, 'CheckBankNumber')}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n type=\"number\"\r\n required\r\n />\r\n <TextField\r\n label=\"Deposit Date\"\r\n className={'col-sm-5 pr-2'}\r\n value={currentCheckData.CheckDepositDate}\r\n onChange={(e) => handleCheckChange(e, 'CheckDepositDate')}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n type=\"date\"\r\n required\r\n />\r\n </div>\r\n <div className=\"row pl-5\">\r\n {/* <NumericTextBox\r\n label=\"Check Amount *\"\r\n width={400}\r\n required={true}\r\n value={currentCheckData.TotalAmount && currentCheckData.TotalAmount == \"\" ? 0 : currentCheckData.TotalAmount}\r\n onChange={(e) => handleCheckChange(e, 'TotalAmount')}\r\n format=\"c2\"\r\n min={0}\r\n required\r\n error={amountHelperText ? true : false}\r\n helperText={amountHelperText} />\r\n {amountHelperText && <FormHelperText error={true}>{amountHelperText}</FormHelperText>} */}\r\n <TextField\r\n label=\"Check Amount\"\r\n className={'col-sm-5 pr-3'}\r\n value={currentCheckData.TotalAmount}\r\n onChange={(e) => handleCheckChange(e, 'TotalAmount')}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n type=\"number\"\r\n required\r\n error={amountHelperText ? true : false}\r\n helperText={amountHelperText}\r\n InputProps={{\r\n startAdornment: <InputAdornment position=\"start\">$</InputAdornment>,\r\n }}\r\n />\r\n <TextField\r\n label=\"Deposited By\"\r\n className={'col-sm-5 pr-2'}\r\n value={currentCheckData.CheckDepositedBy}\r\n onChange={(e) => handleCheckChange(e, 'CheckDepositedBy')}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </div>\r\n <div className=\"row pl-5 pt-2\">\r\n {helperText && <FormHelperText error={true}>{helperText}</FormHelperText>}\r\n </div>\r\n <div className=\"row pl-5 pt-2\">\r\n <Button color=\"primary\" className=\"pr-3\" variant=\"contained\" size=\"small\" onClick={discard} startIcon={<DeleteOutlineIcon />}>Discard</Button>\r\n <span className=\"pl-3\" ><Button color=\"primary\" variant=\"contained\" size=\"small\" onClick={addcheck} startIcon={<CheckIcon />}>Add Check</Button></span>\r\n </div>\r\n </div>\r\n )\r\n }\r\n\r\n const lable_baseCAP = props.appdata && props.appdata[\"KEY\"] == 'VIOLATIONS' ? \"Fine\" : \"Invoice\";\r\n\r\n return (\r\n <Drawer anchor={'right'} disableBackdropClick open={open} onClose={() => toggleDrawer()} classes={{\r\n paper: classes.drawerPaper,\r\n }}>\r\n <FormHeader className=\"row\" title={props.viewtype && props.viewtype == \"PAYMENT\" ? \"Payment Information\" : \"Physical Check\"} savebutton={(getEnvVariable('AccessPortal') === 'I' && balanceAmount > 0) ? true : false} handleSave={handleSave} closebutton={true} handleClose={toggleDrawer} handleDownload={handleDownload} downloadbutton={true}/>\r\n <Typography variant=\"subtitle2\" color=\"primary\" className=\"pl-3 pt-2\" gutterBottom>\r\n <b>Payment Information</b>\r\n </Typography>\r\n <div>\r\n <Typography className=\"float-right pr-3 pt-2\" variant=\"body2\" gutterBottom>Payment Total :$ {paymentInformation.TotalFee}</Typography>\r\n <Typography display=\"block\" className=\"pl-3 pt-2\" variant=\"body2\" gutterBottom>Invoice Id : { props.viewtype == \"PAYMENT\" ? (Array.isArray(props.invoiceid) ? props.invoiceid.join() : props.invoiceid) : paymentInformation.InvoiceId}</Typography>\r\n <Typography className=\"float-right pr-3 pt-2\" variant=\"body2\" gutterBottom>Balance(Due) :$ {balanceAmount}</Typography>\r\n <Typography display=\"block\" className=\"pl-3 pt-2\" variant=\"body2\" gutterBottom>Applicant Id : {paymentInformation.ApplicantId}</Typography>\r\n {/* <Typography display=\"block\" className=\"pl-3 pt-2\" variant=\"body2\" gutterBottom>Payment Total :$ {paymentInformation.TotalFee}</Typography> */}\r\n {/* <Typography display=\"block\" className=\"pl-3 pt-2\" variant=\"body2\" gutterBottom>Record/Permit Number : {paymentInformation.PermitNumber}</Typography> */}\r\n {/* <Typography display=\"block\" className=\"pl-3 pt-2\" variant=\"body2\" gutterBottom>Balance(Due) :$ {balanceAmount}</Typography> */}\r\n {/* <Typography display=\"block\" className=\"pl-3\" variant=\"body2\" gutterBottom>Application Type : {paymentInformation.ApplicationType}</Typography> */}\r\n\r\n\r\n {props.viewtype && props.viewtype == \"PAYMENT\" &&\r\n <div>\r\n <Typography variant=\"subtitle2\" color=\"primary\" className=\"pl-3 pt-2\" gutterBottom>\r\n <b>ACH/CC Payment Details</b>\r\n </Typography>\r\n <Typography className=\"float-right pr-3 pt-2\" variant=\"body2\" gutterBottom>Total Amount :$ {ACHCCPaymentDetails.TotalAmount}</Typography>\r\n <Typography display=\"block\" className=\"pl-3 pt-2\" variant=\"body2\" gutterBottom>Processing Fee :$ {ACHCCPaymentDetails.ProcessingFee}</Typography>\r\n <Typography className=\"float-right pr-3 pt-2\" variant=\"body2\" gutterBottom>Payment Date : {ACHCCPaymentDetails.PaymentDate}</Typography>\r\n <Typography display=\"block\" className=\"pl-3 pt-2\" variant=\"body2\" gutterBottom>Transaction Id : {ACHCCPaymentDetails.TransactionId}</Typography>\r\n </div>}\r\n </div>\r\n {InvoiceLineItemsFormControl(invoicePermits)}\r\n\r\n {/* {invoicePermits && InvoiceLineItemsForm(invoicePermits)} */}\r\n <Typography variant=\"subtitle2\" color=\"primary\" className=\"pl-3 pt-3\" gutterBottom>\r\n <b className=\"pr-3\">Physical Check</b>\r\n <IconButton color=\"primary\" title=\"Add Check\" disabled={balanceAmount <= 0} aria-label=\"add\" onClick={insert}>\r\n <AddCircleIcon />\r\n </IconButton>\r\n </Typography>\r\n <div>\r\n <Grid data={checkData} style={{ height: '180px' }} reorderable resizable>\r\n <Column title=\"Edit\" cell={cellWithEditing} width=\"100px\" />\r\n <Column field=\"CheckNumber\" title=\"Check Number\" width=\"150px\" />\r\n <Column field=\"CheckDepositNumber\" title=\"Check Deposit Number\" width=\"200px\" />\r\n <Column field=\"CheckBankNumber\" title=\"Bank Number\" width=\"150px\" />\r\n <Column field=\"CheckDepositDate\" title=\"Deposit Date\" width=\"150px\" cell={DateCustomCell}/>\r\n <Column field=\"TotalAmount\" title=\"Check Amount\" width=\"150px\" />\r\n <Column field=\"CheckDepositedBy\" title=\"Deposited By\" width=\"150px\" />\r\n </Grid>\r\n </div>\r\n {itemEdit && checkform()}\r\n <Typography variant=\"subtitle2\" color=\"primary\" className=\"pl-3 pt-3\" gutterBottom>\r\n <b>Billing Information</b>\r\n </Typography>\r\n <div className=\"row pl-5\">\r\n <TextField\r\n label=\"First Name\"\r\n className={'col-sm-5 pr-3'}\r\n value={billingInfo.PayeeName}\r\n onChange={(e) => handleFieldChange(e, 'PayeeName')}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n required\r\n error={firstnameHelperText ? true : false}\r\n helperText={firstnameHelperText}\r\n disabled={balanceAmount <= 0}\r\n />\r\n <TextField\r\n label=\"Last Name\"\r\n className={'col-sm-5 pr-2'}\r\n value={billingInfo.PayeeLastName}\r\n onChange={(e) => handleFieldChange(e, 'PayeeLastName')}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n required\r\n error={lastnameHelperText ? true : false}\r\n helperText={lastnameHelperText}\r\n disabled={balanceAmount <= 0}\r\n />\r\n </div>\r\n <div className=\"row pl-5\">\r\n <TextField\r\n label=\"Address Line 1\"\r\n className={'col-sm-10 pr-2'}\r\n value={billingInfo.PayeeAddressLine1}\r\n onChange={(e) => handleFieldChange(e, 'PayeeAddressLine1')}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n required\r\n error={addressline1HelperText ? true : false}\r\n helperText={addressline1HelperText}\r\n disabled={balanceAmount <= 0}\r\n />\r\n </div>\r\n <div className=\"row pl-5\">\r\n <TextField\r\n label=\"Address Line 2\"\r\n className={'col-sm-10 pr-2'}\r\n value={billingInfo.PayeeAddressLine2}\r\n onChange={(e) => handleFieldChange(e, 'PayeeAddressLine2')}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n error={addressline2HelperText ? true : false}\r\n helperText={addressline2HelperText}\r\n disabled={balanceAmount <= 0}\r\n />\r\n </div>\r\n <div className=\"row pl-5\">\r\n <TextField\r\n label=\"City\"\r\n className={'col-sm-4 pr-3 pb-2'}\r\n value={billingInfo.PayeeCity}\r\n onChange={(e) => handleFieldChange(e, 'PayeeCity')}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n required\r\n error={cityHelperText ? true : false}\r\n helperText={cityHelperText}\r\n disabled={balanceAmount <= 0}\r\n />\r\n <FormControl className={'col-sm-3 pr-3 pb-2'} required>\r\n <InputLabel shrink required >State</InputLabel>\r\n <Select\r\n value={billingInfo.PayeeState}\r\n onChange={(e) => handleFieldChange(e, 'PayeeState')}\r\n required\r\n disabled={balanceAmount <= 0}\r\n >\r\n {statedropdownvalues && Array.isArray(statedropdownvalues) && statedropdownvalues.map((each, index) => {\r\n const value = each.Value\r\n const name = each.Name\r\n const key = each.key || value\r\n return <MenuItem key={key || ('item' + value)} value={value}>{name}</MenuItem>\r\n })}\r\n </Select>\r\n </FormControl>\r\n {/* <TextField\r\n label=\"State\"\r\n className={'col-sm-3 pr-3 pb-2'}\r\n value={billingInfo.PayeeState}\r\n onChange={(e) => handleFieldChange(e, 'PayeeState')}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n required\r\n /> */}\r\n <TextField\r\n error={zipHelperText ? true : false}\r\n label=\"Zip\"\r\n className={'col-sm-3 pr-2 pb-2'}\r\n value={billingInfo.PayeeZip}\r\n onChange={(e) => handleFieldChange(e, 'PayeeZip')}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n required\r\n helperText={zipHelperText}\r\n disabled={balanceAmount <= 0}\r\n />\r\n </div>\r\n <div className=\"pl-5 pb-2\">\r\n {billingHelperText && <FormHelperText error={true}>{billingHelperText}</FormHelperText>}\r\n </div>\r\n </Drawer>\r\n );\r\n}\r\n\r\nexport default forwardRef(PhysicalCheckSideBar);\r\n","import AppBar from '@material-ui/core/AppBar';\r\nimport Box from '@material-ui/core/Box';\r\nimport Button from '@material-ui/core/Button';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport Tabs from '@material-ui/core/Tabs';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport { toDataSourceRequestString } from '@progress/kendo-data-query';\r\nimport PropTypes from 'prop-types';\r\nimport React, { Fragment, useEffect, useRef, useState } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { getEnvVariable } from '../../../src/modules/environmentalList';\r\n//import { getCalculatedAmount } from '../../../src/payment/manager';\r\nimport moment from 'moment';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport { snackbarMessage } from '../../core/actions';\r\nimport {\r\n GenerateInvoice, GetDomainValues,\r\n GetPaymentInformation, GetRecordDataByKeys, GetRecordInvoiceByType, GetSitePermitType, GetTotalDue, GetTotalFee, ReGenerateInvoice, UpdateInvoiceStatus\r\n} from './billingservice';\r\n//import BillingSidepopup from '../billing/billingsidepopup'\r\n//import BillingRegenerate from '../billing/billingregenerate'\r\nimport InvoiceSideBar from './billinginvoice';\r\nimport RegenerateSideBar from './billingregenerateoptions';\r\nimport { IsValidInvoiceStatus, IsValidPermitStatus } from './statusvalidator';\r\n\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Select from '@material-ui/core/Select';\r\nimport AccountBalanceWalletIcon from '@material-ui/icons/AccountBalanceWallet';\r\nimport AttachMoneyIcon from '@material-ui/icons/AttachMoney';\r\nimport LocalAtmIcon from '@material-ui/icons/LocalAtm';\r\nimport MonetizationOnIcon from '@material-ui/icons/MonetizationOn';\r\nimport PaymentIcon from '@material-ui/icons/Payment';\r\nimport DefaultSettings from '../../core/controls/components/settings';\r\nimport GridHeader from '../../core/modules/Grid/cgridheader';\r\nimport BillingGrid from './billinggrid';\r\nimport PhysicalCheckSideBar from './billingphysicalcheck';\r\nconst _ = require('lodash');\r\n\r\nfunction TabPanel(props) {\r\n const { children, value, index, ...other } = props;\r\n\r\n return (\r\n <Typography\r\n component=\"div\"\r\n role=\"tabpanel\"\r\n hidden={value !== index}\r\n id={`scrollable-force-tabpanel-${index}`}\r\n aria-labelledby={`scrollable-force-tab-${index}`}\r\n {...other}\r\n >\r\n {/* by removing style scrollbar will be hided {value === index && <Box p={3} style={{ overflow: 'auto', height: '800px' }}>{children}</Box>} */}\r\n {value === index && <Box p={3}>{children}</Box>}\r\n </Typography>\r\n );\r\n}\r\n\r\nTabPanel.propTypes = {\r\n children: PropTypes.node,\r\n index: PropTypes.any.isRequired,\r\n value: PropTypes.any.isRequired,\r\n};\r\n\r\nfunction a11yProps(index) {\r\n return {\r\n id: `scrollable-force-tab-${index}`,\r\n 'aria-controls': `scrollable-force-tabpanel-${index}`,\r\n };\r\n}\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n flexGrow: 1,\r\n width: '100%',\r\n backgroundColor: theme.palette.background.paper,\r\n \"& .MuiTab-root\": {\r\n 'text-transform': 'capitalize'\r\n },\r\n },\r\n}));\r\n\r\nfunction Billing(props) {\r\n const { headerProps } = props.options\r\n const [data, setData] = useState([])\r\n const [total, setTotal] = useState(0)\r\n const [gridColumns, setGridColumns] = useState([])\r\n // const [attachmentTypeResults, setAttachmentTypeResults] = useState(null)\r\n const [TabValue, setTabValue] = useState(0)\r\n const [invoice, setInvoice] = useState({})\r\n const [pdf, setPDF] = useState(null)\r\n const [openInvoice, setOpenInvoice] = useState(false)\r\n const [currentDataItem, setCurrentDataItem] = useState(null)\r\n const [openSlide, setOpenSlide] = useState(false)\r\n const [generateInvoiceType, setGenerateInvoiceType] = useState(null)\r\n const [openGenerateInvoice, setOpenGenerateInvoice] = useState(false)\r\n\r\n const [permitDropdown, setPermitDropdown] = useState([])\r\n const [appDropdown, setAppDropdown] = useState([])\r\n const [paymentStatusOptions, setPaymentStatusOptions] = useState([])\r\n const [paymentStatusValue, setPaymentStatusValue] = useState(null)\r\n const [initialloadextrainfo, setInitialloadextrainfo] = useState(null)\r\n //const [components, setComponents] = useState({ ...BillingSidepopup })\r\n const [dataState, setDataState] = useState({\r\n skip: 0, take: 5\r\n })\r\n const [EachComp, setEachComp] = useState(null)\r\n const [pageable, setPageable] = useState({\r\n buttonCount: 6,\r\n info: true,\r\n type: 'numeric',\r\n pageSizes: [10, 20, 30, 40, 50, \"all\"],\r\n previousNext: true\r\n })\r\n const helpContext = useRef(null);\r\n const silderContext = useRef(null);\r\n const [gridSelectionRecord, setGridSelectionRecord] = useState(false)\r\n const [hascheckbox, setHasCheckBox] = useState(false)\r\n const [gridCheckBoxSelectionRecords, setGridCheckBoxSelectionRecords] = useState([])\r\n const [sitePermitTypeData, setSitePermitTypeData] = useState(null)\r\n const [physicalCheck, setPhysicalCheck] = useState(false)\r\n const [physicalCheckProps, setPhysicalCheckProps] = useState({ open: false, type: 'NEW', id: 0 })\r\n const [recordDetails, setRecordDetails] = useState({});\r\n\r\n\r\n useEffect(() => {\r\n let recorddatakeys = [\"COMPANY_ID\", \"PERMIT_TYPE_ID\", \"APPLICATION_STATUS\", \"SITE_PERMIT_TYPE_ID\", \"PERMIT_NO\",\r\n \"DISTRICT_ID\", \"COUNTY\", \"AUTHORIZED_DATE\", \"AUTHORIZED_BY\", \"PERMIT_NO\", \"EXEMPTED_FROM_RENEWAL\", \"EXEMPTED_FROM_PRORATE\"]\r\n Promise.all([\r\n GetRecordDataByKeys(props.match.params.routeid, props.match.params.routeid1, recorddatakeys),\r\n GetSitePermitType(props.match.params.routeid),\r\n GetDomainValues('APPLICATION_PAYMENT_STATUS'),\r\n GetDomainValues('PERMIT_PAYMENT_STATUS')\r\n ]).then((values) => {\r\n //const { recorddetails, sitepermittypedetails, apppaymentstatus, permitpaymentstatus} = values;\r\n //console.log(recorddetails, sitepermittypedetails, apppaymentstatus, permitpaymentstatus);\r\n if (values && Array.isArray(values)) {\r\n let recorddetails = values[0];\r\n let sitepermittypedetails = values[1];\r\n let apppaymentstatus = values[2];\r\n let permitpaymentstatus = values[3];\r\n let fullrecorddetails = recorddetails[0];\r\n fullrecorddetails[\"KEY\"] = props.match.params.key;\r\n let initialloadextrainfodata = { results: values[0][0] }\r\n setInitialloadextrainfo(initialloadextrainfodata);\r\n setRecordDetails(fullrecorddetails);\r\n let initialtabvalue = sitepermittypedetails && sitepermittypedetails.HasApplicationFee && sitepermittypedetails.HasApplicationFee == \"Y\" ? 0 : sitepermittypedetails.HasPorate && sitepermittypedetails.HasPorate == \"Y\" ? 1 : sitepermittypedetails.PermitRenewal && sitepermittypedetails.PermitRenewal == \"Y\" ? 2 : 3\r\n\r\n setTabValue(initialtabvalue);\r\n setSitePermitTypeData(sitepermittypedetails);\r\n\r\n setAppDropdown(apppaymentstatus);\r\n setPaymentStatusOptions(apppaymentstatus);\r\n\r\n setPermitDropdown(permitpaymentstatus);\r\n }\r\n console.log(values);\r\n });\r\n //LoadExistingInvoiceData()\r\n LoadData();\r\n }, [])\r\n\r\n const LoadExistingInvoiceData = () => {\r\n if (TabValue < 4) {\r\n LoadInvoiceDetails();\r\n }\r\n if (TabValue == 4) {\r\n LoadPaymentInformation();\r\n }\r\n }\r\n\r\n const LoadInvoiceDetails = () => {\r\n //console.log('Loading from ------------------------------------------------------*******')\r\n let invoicetypeexp = TabValue == 0 ? 'Application' : TabValue == 1 ? 'Prorate' : 'PermitRenewal';\r\n GetRecordInvoiceByType(props.match.params.routeid1, invoicetypeexp).then(invres => {\r\n let extdata = []; //[...data, ...invres.InvoiceLineItems];\r\n let statusopts = TabValue < 2 ? appDropdown : permitDropdown\r\n if (invres && Array.isArray(invres) && invres.length > 0) {\r\n if (TabValue < 3) {\r\n let proinvoice = invres.filter(a => a.InvoiceType == invoicetypeexp && a.Status != \"C\")\r\n if (proinvoice.length > 0) {\r\n proinvoice = proinvoice.sort(function (a, b) {\r\n return b.Id - a.Id;\r\n });\r\n extdata = proinvoice[0].InvoiceLineItems\r\n setData(extdata)\r\n setInvoice(proinvoice[0])\r\n setPaymentStatusOptions(statusopts)\r\n setGridSelectionRecord(null)\r\n } else {\r\n setData([])\r\n //setInvoice({})\r\n setInvoice({})\r\n // GetBaseRecordDetail(props.match.params.routeid1).then(res => {\r\n // let invoice = {PermitNumber: res.PermitNo}\r\n // setInvoice(invoice)\r\n // })\r\n }\r\n } else {\r\n let invdataarr = invres.filter(a => a.InvoiceType == 'PermitRenewal');\r\n if (invdataarr && Array.isArray(invdataarr)) {\r\n invdataarr.forEach(element => {\r\n element.InvoiceLineItems = element.InvoiceLineItems.length;\r\n element.InvoiceDetails = element.InvoiceDetails.length;\r\n });\r\n }\r\n\r\n setData(invdataarr)\r\n setInvoice(invdataarr[0])\r\n setPaymentStatusOptions(statusopts)\r\n setGridSelectionRecord(null)\r\n }\r\n } else {\r\n setInvoice({})\r\n }\r\n })\r\n }\r\n\r\n const LoadPaymentInformation = () => {\r\n GetPaymentInformation(props.match.params.routeid1).then(invres => {\r\n console.log(invres)\r\n if (invres && Array.isArray(invres)) {\r\n setData(invres);\r\n setInvoice({});\r\n setPaymentStatusOptions([]);\r\n setGridSelectionRecord(null);\r\n }\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n LoadData();\r\n }, [dataState])\r\n\r\n const LoadData = () => {\r\n const queryStr = `${toDataSourceRequestString(dataState)}`;\r\n //we do request grid request and need to append queryStr for url\r\n let dataitems = data || []\r\n //setData(dataitems);\r\n setTotal(dataitems.length);\r\n //for getting distinct columns, returns all distinct columns by verifying all objects in data array\r\n let columnsarr = _.union(_.flatten(_.map(dataitems, (e) => _.keys(e))));\r\n var removedfields = _.remove(columnsarr, function (n) {\r\n if (TabValue < 3)\r\n return n != \"UpdatedBy\" && n != \"UpdatedOn\" && n != \"Id\" && n != \"BillingPayments\" && n != \"DownloadId\";\r\n else\r\n return n != \"UpdatedBy\" && n != \"UpdatedOn\" && n != \"BillingPayments\" && n != \"DownloadId\";\r\n });\r\n setGridColumns(removedfields)\r\n }\r\n\r\n const handleDataStateChange = (changeEvent) => {\r\n setDataState(changeEvent.data)\r\n }\r\n\r\n const handleBack = () => {\r\n const { back } = props.options;\r\n const { routes } = back;\r\n if (Array.isArray(routes)) {\r\n let path = ''\r\n routes.forEach(each => {\r\n const { route, routeParams, matchProps } = each\r\n path += route + \"/\" + props.match.params[routeParams]\r\n })\r\n props.history.push(path)\r\n }\r\n }\r\n\r\n const handleChange = (event, newValue) => {\r\n setTabValue(newValue);\r\n if (newValue == 3) {\r\n setHasCheckBox(true)\r\n }\r\n else {\r\n setHasCheckBox(false)\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n //console.log('Loading from tab value change----------------------**')\r\n LoadExistingInvoiceData();\r\n setData([])\r\n }, [TabValue])\r\n\r\n //Genreate options\r\n const handleButtonClick = () => {\r\n if (TabValue == '1') {\r\n GenerateProrateInvoice(recordDetails);\r\n } else if (TabValue == '2') {\r\n GeneratePermitRenewalInvoice(recordDetails);\r\n }\r\n }\r\n\r\n const GeneratePermitRenewalInvoice = (recordDetails) => {\r\n GenerateInvoice(recordDetails, \"PERMITRENEWAL\").then(res => {\r\n console.log(res);\r\n if (res && res.Id && res.InvoiceLineItems) {\r\n LoadExistingInvoiceData();\r\n }\r\n }).catch(function (err) {\r\n console.error(err);\r\n let nobll = err.Error == 'NOBILLING'\r\n let nosetting = err.Error == 'NOSETTING'\r\n props.snackbarMessage(`No permit fee found in settings.`, 'info')\r\n })\r\n }\r\n\r\n const GenerateProrateInvoice = (recordDetails) => {\r\n GenerateInvoice(recordDetails, \"PRORATE\").then(res => {\r\n console.log(res);\r\n if (res && res.Id && res.InvoiceLineItems) {\r\n LoadExistingInvoiceData();\r\n }\r\n }).catch(function (err) {\r\n console.error(err);\r\n let nobll = err.Error == 'NOBILLING'\r\n let nosetting = err.Error == 'NOSETTING'\r\n props.snackbarMessage(`No prorate fee found in settings.`, 'info')\r\n })\r\n }\r\n\r\n\r\n useEffect(() => {\r\n SetGridData();\r\n }, [data])\r\n\r\n\r\n\r\n const SetGridData = () => {\r\n const queryStr = `${toDataSourceRequestString(dataState)}`;\r\n //we do request grid request and need to append queryStr for url\r\n let dataitems = data || []\r\n //setData(dataitems);\r\n setTotal(dataitems.length);\r\n //for getting distinct columns, returns all distinct columns by verifying all objects in data array\r\n let columnsarr = _.union(_.flatten(_.map(dataitems, (e) => _.keys(e))));\r\n var removedfields = _.remove(columnsarr, function (n) {\r\n if (TabValue < 3)\r\n return n != \"UpdatedBy\" && n != \"UpdatedOn\" && n != \"Id\" && n != \"BillingPayments\" && n != \"DownloadId\";\r\n else\r\n return n != \"UpdatedBy\" && n != \"UpdatedOn\" && n != \"BillingPayments\" && n != \"PermitNumber\" && n != \"DownloadId\";\r\n });\r\n setGridColumns(removedfields)\r\n }\r\n\r\n const payOnline = () => {\r\n let routeid = props.match.params.routeid;\r\n let routeid1 = props.match.params.routeid1;\r\n let currentuser = props.accessPermissions.userId\r\n let url = getEnvVariable('PaymentGateWay') + `/RequestPayment/Index/${routeid}/${routeid1}/${invoice.Id}/${currentuser}` //'http://localhost/payment/RequestPayment/Index/1/1/1';\r\n let payment_window = window.open(url, 'popUpWindow', 'height=800,width=1000,left=100,top=100,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no, status=yes')\r\n payment_window.focus();\r\n var timer = setInterval(function () {\r\n if (payment_window.closed) {\r\n clearInterval(timer);\r\n LoadExistingInvoiceData();\r\n }\r\n }.bind(this), 1000);\r\n\r\n }\r\n\r\n const payOnlineAll = () => {\r\n let routeid = props.match.params.routeid;\r\n let routeid1 = props.match.params.routeid1;\r\n let currentuser = props.accessPermissions.userId;\r\n let invoicecondition = \"\"\r\n let selectionmapdataid = gridCheckBoxSelectionRecords.map(res => {\r\n return res.Id\r\n })\r\n if (selectionmapdataid && Array.isArray(selectionmapdataid)) {\r\n selectionmapdataid.forEach(element => {\r\n if (Number.isInteger(element))\r\n invoicecondition = invoicecondition + 'id=' + element + '&';\r\n });\r\n\r\n let url = getEnvVariable('PaymentGateWay') + `/OnlinePayment/Index/${routeid}/${routeid1}/${currentuser}?${invoicecondition}` //${invoice.Id}\r\n let payment_window = window.open(url, 'popUpWindow', 'height=800,width=1000,left=100,top=100,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no, status=yes')\r\n payment_window.focus();\r\n var timer = setInterval(function () {\r\n if (payment_window.closed) {\r\n clearInterval(timer);\r\n LoadExistingInvoiceData();\r\n }\r\n }.bind(this), 1000);\r\n }\r\n }\r\n\r\n\r\n\r\n const PaymentStatus = () => {\r\n return invoice ? (invoice.Status == 'P' ? 'Paid' : 'UnPaid') : '';\r\n }\r\n\r\n\r\n // const rowRender = (trElement, row) => {\r\n // const trProps = {\r\n // ...trElement.props,\r\n // onDoubleClick: () => {\r\n // if(TabValue < 3){\r\n // setGridSelectionRecord(row.dataItem.InvoiceId)\r\n // }else{\r\n // setGridSelectionRecord(row.dataItem.Id)\r\n // }\r\n // }\r\n // };\r\n // return React.cloneElement(trElement, { ...trProps }, trElement.props.children);\r\n // }\r\n\r\n const rowRenderData = (row) => {\r\n let gridrow = row.dataItem;\r\n gridrow.InvoiceId = TabValue < 3 ? row.dataItem.InvoiceId : row.dataItem.Id\r\n setGridSelectionRecord(gridrow)\r\n // if (TabValue < 3) {\r\n // setGridSelectionRecord(row.dataItem.InvoiceId)\r\n // } else {\r\n // setGridSelectionRecord(row.dataItem.Id)\r\n // }\r\n }\r\n\r\n const gridSelection = (datavalues, selectionmapdata) => {\r\n //setData(datavalues);\r\n setGridCheckBoxSelectionRecords(selectionmapdata)\r\n }\r\n const gridselectionLoad = (gridcheckload) => {\r\n console.log(gridcheckload);\r\n }\r\n\r\n useEffect(() => {\r\n if (TabValue == 4 && gridSelectionRecord) {\r\n physicalcheckSlider(true, 'PAYMENT', gridSelectionRecord.id)\r\n } else if (gridSelectionRecord && gridSelectionRecord.InvoiceId > 0) {\r\n setOpenInvoice(true);\r\n }\r\n }, [gridSelectionRecord])\r\n\r\n const handleSlide = () => {\r\n setOpenSlide(false);\r\n setCurrentDataItem(null);\r\n LoadExistingInvoiceData();\r\n }\r\n\r\n const handleInvoiceSlider = () => {\r\n setOpenInvoice(false);\r\n setGridSelectionRecord(false);\r\n }\r\n\r\n const regenerateSlider = (type) => {\r\n setGenerateInvoiceType(type);\r\n }\r\n\r\n const physicalcheckSlider = (open, type, id) => {\r\n //setPhysicalCheck(open);\r\n if (!open) {\r\n setPhysicalCheckProps({ open: false, viewtype: '', id: 0 });\r\n LoadExistingInvoiceData();\r\n }\r\n else\r\n setPhysicalCheckProps({ open: true, viewtype: type, id: id })\r\n }\r\n\r\n const handleRegenerateSlider = (RegenerateOptions) => {\r\n //setGenerateInvoiceType(type);\r\n if (RegenerateOptions && RegenerateOptions.RegenerateType) {\r\n if (generateInvoiceType == \"G\" && RegenerateOptions.RegenerateType == \"2\") {\r\n let invoiceprops = { ...RegenerateOptions, ...recordDetails };\r\n if (TabValue == '1') {\r\n GenerateProrateInvoice(invoiceprops);\r\n } else if (TabValue == '2') {\r\n GeneratePermitRenewalInvoice(invoiceprops);\r\n }\r\n } else {\r\n let applicantid = recordDetails['COMPANY_ID'] //props.match.params.routeid2\r\n let sitepermittypeid = props.match.params.routeid\r\n let recordid = props.match.params.routeid1\r\n let invtype = (RegenerateOptions.RegenerateType == \"1\" && generateInvoiceType == \"R\" || (RegenerateOptions.RegenerateType == \"1\" && generateInvoiceType == \"G\")) ? \"A\" : \"C\"\r\n let invid = invoice.Id ? invoice.Id : '-1'\r\n let cancelParent = RegenerateOptions.CancelInvoice ? \"Y\" : \"N\";\r\n let RegenerateProps = { ...RegenerateOptions, SitePermitTypeId: sitepermittypeid, InvoiceId: invid, ApplicantId: applicantid, InvoiceType: invtype, RecordId: recordid, CancelParent: cancelParent, SubModuleKey: props.match.params.key };\r\n ReGenerateInvoice(RegenerateProps).then(a => {\r\n console.log(a);\r\n LoadExistingInvoiceData();\r\n if (DefaultSettings.getAlert() != null)\r\n DefaultSettings.getAlert().show(`Invoice generated successfully.`, 'success');\r\n // props.snackbarMessage(`Invoice generated successfully.`, 'success');\r\n }).catch(function (err) {\r\n if (DefaultSettings.getAlert() != null)\r\n DefaultSettings.getAlert().show(`No records found for this owner.`, 'error');\r\n //console.error(err);\r\n // props.snackbarMessage(`No records found for this owner.`, 'error')\r\n })\r\n\r\n }\r\n }\r\n setOpenGenerateInvoice(false);\r\n setGenerateInvoiceType(null);\r\n }\r\n\r\n // const handleRegenerateSlider = (type, iscancel) =>{\r\n // //setGenerateInvoiceType(type);\r\n // if(type){\r\n // if(generateInvoiceType == \"G\" && type == \"2\"){\r\n // handleButtonClick();\r\n // }else{\r\n // let applicantid = props.match.params.routeid2\r\n // let sitepermittypeid = props.match.params.routeid\r\n // let recordid = props.match.params.routeid1\r\n // let invtype = (type == \"1\" && generateInvoiceType == \"R\" || (type == \"1\" && generateInvoiceType == \"G\")) ? \"A\" : \"C\"\r\n // let invid = invoice.Id ? invoice.Id : '-1'\r\n // let cancelParent = iscancel ? \"Y\": \"N\"\r\n // ReGenerateInvoice(invid, applicantid, invtype, recordid, cancelParent, props.match.params.key).then(a =>{\r\n // console.log(a);\r\n // LoadExistingInvoiceData();\r\n // props.snackbarMessage(`Invoice generated successfully.`, 'success');\r\n // })\r\n\r\n // }\r\n // }\r\n // setOpenGenerateInvoice(false);\r\n // setGenerateInvoiceType(null);\r\n // }\r\n\r\n const InvoiceStatusChange = (e) => {\r\n let currstatus = e.target.value;\r\n if (TabValue < 3) {\r\n if (!IsValidInvoiceStatus(invoice.Status, currstatus)) {\r\n props.snackbarMessage(`Invalid status change.`, 'error');\r\n } else {\r\n let inv = invoice;\r\n inv.Status = currstatus;\r\n // setInvoice(inv)\r\n // props.Confirmation(updateInvoiceStatusCancel, () => updateInvoiceStatus(inv), 'Are You sure you want update. This cannot be undone.', true);\r\n }\r\n } else {\r\n if (!IsValidPermitStatus(invoice.Status, currstatus)) {\r\n props.snackbarMessage(`Invalid status change.`, 'error');\r\n } else {\r\n let inv = invoice;\r\n inv.Status = currstatus;\r\n // setInvoice(inv)\r\n }\r\n }\r\n\r\n const updateInvoiceStatusCancel = () => {\r\n // props.Confirmation(null, null, null, false);\r\n }\r\n\r\n const updateInvoiceStatus = (inv) => {\r\n // props.Confirmation(null, null, null, false);\r\n UpdateInvoiceStatus(inv.Id, inv.Status).then(res => {\r\n setInvoice(inv)\r\n props.snackbarMessage(`Updated successfully.`, 'success');\r\n })\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (generateInvoiceType)\r\n setOpenGenerateInvoice(true)\r\n }, [generateInvoiceType])\r\n\r\n const viewInvoice = () => {\r\n if (invoice && invoice.Id > 0) {\r\n let gridselectionrecord = { InvoiceId: invoice.Id, ...invoice }\r\n setOpenInvoice(true);\r\n setGridSelectionRecord(gridselectionrecord)\r\n }\r\n }\r\n\r\n const lable_baseCAP = recordDetails[\"KEY\"] == 'VIOLATIONS' ? \"Fine\" : \"Invoice\";\r\n const lable_base = recordDetails[\"KEY\"] == 'VIOLATIONS' ? \"fine\" : \"invoice\";\r\n const lable_allinvoices = recordDetails[\"KEY\"] == 'VIOLATIONS' ? \"All Fines\" : \"All Permit Invoices\";\r\n\r\n const getGrid = (gridColumns) => {\r\n let stagedetails = localStorage.getItem('stagedetails')\r\n let progressstatus = localStorage.getItem('permitstatus')\r\n let prorateinfoval = localStorage.getItem('prorateinfo')\r\n let showbutton = (stagedetails == \"InProgress\" || progressstatus == \"10143\") ? true : false;\r\n let calTotalFee = (invoice && invoice.Id) ? GetTotalFee(invoice) : 0;\r\n let calTotalDue = (invoice && invoice.Id) ? GetTotalDue(invoice) : 0;\r\n let generatebutton = stagedetails && stagedetails == \"Approved\" ? true : false;\r\n let showbutton_fine = (recordDetails[\"KEY\"] == 'VIOLATIONS');\r\n return (\r\n <div>\r\n\r\n {TabValue < 3 && <div>\r\n <Typography className=\"float-right pr-3 pt-2\" gutterBottom><b>Total Fee</b> : $ {calTotalFee}</Typography>\r\n {/* <Typography className=\"float-right pr-3 pt-2\" gutterBottom><b>Amount Paid</b> : {(calTotalFee - calTotalDue)}</Typography>\r\n <Typography className=\"float-right pr-3 pt-2\" gutterBottom><b>Amount Due</b> : { calTotalDue }</Typography> */}\r\n <Typography display=\"block\" className=\"pl-3 pt-2\" gutterBottom><b>Record/Permit Number</b> : {recordDetails && recordDetails[\"PERMIT_NO\"]} </Typography>\r\n {/* {invoice ? (invoice.PermitNumber) : props.match.params.routeid1} */}\r\n <Typography className=\"float-right pr-3\" gutterBottom><b>Invoice Id</b> : {(invoice && invoice.Id) ? invoice.Id : 'Not Generated Yet'}</Typography>\r\n <Typography display=\"block\" className=\"pl-3\" gutterBottom><b>Applicant Id</b> : {recordDetails && recordDetails[\"COMPANY_ID\"]}</Typography>\r\n {(TabValue <= 1 || props.accessPermissions.portal == \"E\") && <Typography className=\"float-right pr-3\" gutterBottom><b>{lable_baseCAP} Status</b> : {PaymentStatus()} </Typography>}\r\n {TabValue > 1 && (props.accessPermissions.portal != \"E\") && <Typography align=\"right\" className=\"float-right pr-3\" gutterBottom><b>{lable_baseCAP} Status</b> :<Select onChange={(e) => InvoiceStatusChange(e)} value={invoice && invoice.Status ? ((invoice.Status == 'R' || invoice.Status == 'U') ? 'U' : invoice.Status) : ''} >\r\n {paymentStatusOptions && paymentStatusOptions.length > 0 && paymentStatusOptions.map((opt, index) => {\r\n return <MenuItem key={index} value={opt.Value}>{opt.Name}</MenuItem>\r\n })}\r\n </Select> </Typography>}\r\n {/* {TabValue > 1 && <Typography className=\"float-right pr-3\" gutterBottom><b>{lable_baseCAP} Status</b> : <Select onChange={(e) => InvoiceStatusChange(e)} value={invoice && invoice.Status ? ((invoice.Status == 'R' || invoice.Status == 'U') ? 'U' : invoice.Status) : ''} >\r\n {paymentStatusOptions && paymentStatusOptions.length > 0 && paymentStatusOptions.map((opt, index) => {\r\n return <MenuItem key={index} value={opt.Value}>{opt.Name}</MenuItem>\r\n })}\r\n </Select></Typography>} */}\r\n <Typography display=\"block\" className=\"pl-3\" gutterBottom><b>{lable_baseCAP} Date :</b>{(invoice && invoice.InvoiceDate) ? moment(invoice.InvoiceDate).format('MM/DD/YYYY') : 'N/A'} </Typography>\r\n {TabValue > 2 && <Typography display=\"block\" className=\"pl-3\" gutterBottom><b>{lable_baseCAP} Due Date :</b>{(invoice && invoice.DueDate) ? moment(invoice.DueDate).format('MM/DD/YYYY') : 'N/A'} </Typography>}\r\n <Typography align={TabValue > 2 ? \"left\" : \"right\"} display={TabValue > 2 ? \"inline\" : \"block\"} className={TabValue > 2 ? \"pl-3\" : \"float-right pr-3\"} gutterBottom><b>Payment Confirmation</b> : {invoice && invoice.PaymentReferenceId && invoice.PaymentReferenceId != \"\" ? invoice.PaymentReferenceId : 'N/A'}</Typography>\r\n {TabValue <= 2 && <Typography display=\"block\" className=\"pl-3\" gutterBottom><b>{lable_baseCAP} Due Date :</b>{(invoice && invoice.DueDate) ? moment(invoice.DueDate).format('MM/DD/YYYY') : 'N/A'} </Typography>}\r\n <Typography className=\"float-right pr-3\" gutterBottom><b>Amount Paid</b> : $ {(calTotalFee - calTotalDue)}</Typography>\r\n <Typography display=\"block\" className=\"pl-3\" gutterBottom><b>Due Amount :</b> $ {calTotalDue}</Typography>\r\n\r\n </div>}\r\n {TabValue == 3 && <div>\r\n <Typography display=\"block\" className=\"pl-3 pt-2\" gutterBottom><b>{lable_allinvoices}</b></Typography>\r\n <Typography display=\"block\" className=\"pl-3 pt-2\" gutterBottom><b>Multiple unpaid {lable_base}s can be paid online. Maximum selection limited to 50 {lable_base}.</b></Typography>\r\n </div>}\r\n {TabValue == 4 && <div>\r\n <Typography display=\"block\" className=\"pl-3 pt-2\" gutterBottom><b>All {lable_base} payment information</b></Typography>\r\n </div>}\r\n\r\n <BillingGrid data={data} total={total} gridSelection={gridSelection} gridselectionLoad={gridselectionLoad} hascheckbox={hascheckbox} rowRenderData={rowRenderData} gridColumns={gridColumns} sidebar={true} />\r\n\r\n {TabValue == 3 && <div>\r\n <Typography display=\"block\" color=\"secondary\" className=\"pl-3 pt-2\" gutterBottom><b>Note: Partial payment {lable_base}s can only be paid from payment information section.</b></Typography>\r\n </div>}\r\n <div className=\"col-sm-12 pt-3\">\r\n <InvoiceSideBar ref={helpContext} open={openInvoice} gridrow={gridSelectionRecord} handleInvoiceSlider={handleInvoiceSlider} />\r\n\r\n <RegenerateSideBar ref={silderContext} open={openGenerateInvoice} type={generateInvoiceType} invoiceid={invoice ? invoice.Id : -1} handleRegenerateSlider={handleRegenerateSlider} recordDetails={recordDetails} />\r\n\r\n {physicalCheckProps.open && <PhysicalCheckSideBar open={physicalCheckProps.open}\r\n invoiceid={(invoice && invoice.Id) ? invoice.Id : ((gridSelectionRecord && gridSelectionRecord.invoices) ? gridSelectionRecord.invoices : 0)}\r\n viewtype={physicalCheckProps.viewtype}\r\n billingid={physicalCheckProps.id}\r\n appdata={recordDetails}\r\n physicalcheckSlider={physicalcheckSlider}\r\n recorddata={gridSelectionRecord} {...props} />}\r\n\r\n {showbutton && getEnvVariable('AccessPortal') === 'I' && TabValue == '1' && !invoice.Id && recordDetails && recordDetails[\"EXEMPTED_FROM_PRORATE\"] == \"N\" && <Button className=\"col-sm-2 float-right pr-2\" variant=\"contained\" color=\"primary\" onClick={handleButtonClick}>Generate</Button>}\r\n\r\n {/*Following button specific for violation fines*/}\r\n {showbutton_fine && getEnvVariable('AccessPortal') === 'I' && TabValue == '2' && recordDetails && <Button className=\"col-sm-2 float-right pr-2\" variant=\"contained\" color=\"primary\" onClick={() => regenerateSlider(\"G\")}>Generate</Button>}\r\n\r\n {!showbutton_fine && getEnvVariable('AccessPortal') === 'I' && TabValue == '2' && invoice && invoice.Id && <Button className=\"col-sm-2 float-right pr-2\" variant=\"contained\" color=\"primary\" onClick={() => regenerateSlider(\"R\")}>Regenerate {lable_baseCAP}</Button>}\r\n\r\n {generatebutton && getEnvVariable('AccessPortal') === 'I' && TabValue == '2' && recordDetails && recordDetails[\"EXEMPTED_FROM_RENEWAL\"] == \"N\" && <Button className=\"col-sm-2 float-right pr-2\" variant=\"contained\" color=\"primary\" onClick={() => regenerateSlider(\"G\")}>Generate</Button>}\r\n\r\n {invoice && invoice.Id && invoice.Status == 'U' && TabValue != '3' && <Button className=\"col-sm-2 float-right pr-2\" variant=\"contained\" color=\"primary\" onClick={payOnline}>Pay Online</Button>}\r\n\r\n {getEnvVariable('AccessPortal') === 'I' && invoice && invoice.Id && invoice.Id > 0 && invoice.Status != 'P' && TabValue < 3 && <Button className=\"col-sm-2 float-right pr-2\" variant=\"contained\" color=\"primary\" onClick={() => physicalcheckSlider(true, 'INVOICE', invoice.Id)}>Physical Check</Button>}\r\n\r\n {TabValue == '3' && gridCheckBoxSelectionRecords.length > 0 && <Button className=\"col-sm-2 float-right pr-2\" variant=\"contained\" color=\"primary\" onClick={payOnlineAll}>Pay Online(Selected)</Button>}\r\n\r\n {invoice && invoice.Id && invoice.Id > 0 && TabValue < 3 && <Button className=\"col-sm-2 float-right pr-2\" variant=\"contained\" color=\"primary\" onClick={viewInvoice}>View {lable_baseCAP}</Button>}\r\n {/* <Button className=\"col-sm-2 float-right pr-2\" variant=\"contained\" color=\"primary\" onClick={DownloadInvoicePDF}>Download</Button> */}\r\n </div>\r\n <div>\r\n {pdf && <iframe src={pdf} width=\"100%\" height=\"100%\" frameborder=\"0\" scrolling=\"no\" id=\"iframe\" />}\r\n </div>\r\n\r\n </div>\r\n )\r\n }\r\n\r\n const lable_renewallable = recordDetails[\"KEY\"] == 'VIOLATIONS' ? \"Latest Fine Record\" : \"Current Renewal Invoice\";\r\n const lable_allrenewal = recordDetails[\"KEY\"] == 'VIOLATIONS' ? \"All Fines\" : \"All Renewal Invoices\";\r\n const lable_paymentinformation = recordDetails[\"KEY\"] == 'VIOLATIONS' ? \"Fine Payment Information\" : \"Invoice Payment Information\";\r\n return (\r\n <Fragment>\r\n {headerProps &&\r\n <GridHeader initialloadextrainfo={initialloadextrainfo} headerProps={headerProps} compmap={props.compmap} accessPermissions={props.accessPermissions} accessLevelPermissions={props.accessLevelPermissions} handleBack={handleBack} />}\r\n <AppBar position=\"static\" color=\"white\">\r\n <Tabs\r\n value={TabValue}\r\n onChange={handleChange}\r\n indicatorColor=\"primary\"\r\n textColor=\"primary\"\r\n variant=\"fullWidth\"\r\n scrollButtons=\"on\"\r\n aria-label=\"scrollable auto tabs example\"\r\n >\r\n {sitePermitTypeData && sitePermitTypeData.HasApplicationFee && sitePermitTypeData.HasApplicationFee == \"Y\"\r\n && <Tab label=\"Application Fee\" icon={<AttachMoneyIcon />} {...a11yProps(0)} value=\"0\" />}\r\n {sitePermitTypeData && sitePermitTypeData.HasPorate && sitePermitTypeData.HasPorate == \"Y\"\r\n && <Tab label=\"Prorate Fee\" icon={<LocalAtmIcon />} {...a11yProps(0)} value=\"1\" />}\r\n {sitePermitTypeData && sitePermitTypeData.PermitRenewal && sitePermitTypeData.PermitRenewal == \"Y\"\r\n && <Tab label={lable_renewallable} icon={<MonetizationOnIcon />} {...a11yProps(0)} value=\"2\" />}\r\n <Tab label={lable_allrenewal} icon={<PaymentIcon />} {...a11yProps(0)} value=\"3\" />\r\n <Tab label={lable_paymentinformation} icon={<AccountBalanceWalletIcon />} {...a11yProps(0)} value=\"4\" />\r\n </Tabs>\r\n </AppBar>\r\n {getGrid(gridColumns)}\r\n </Fragment>\r\n )\r\n}\r\n\r\nconst mapProps = (state) => {\r\n return state\r\n}\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage }, dispatch);\r\n}\r\n\r\nBilling = connect(mapProps, mapActions)(Billing)\r\nexport default withRouter(Billing)","import AppBar from '@material-ui/core/AppBar';\r\nimport Box from '@material-ui/core/Box';\r\nimport Button from '@material-ui/core/Button';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport Tabs from '@material-ui/core/Tabs';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport { toDataSourceRequestString } from '@progress/kendo-data-query';\r\nimport PropTypes from 'prop-types';\r\nimport React, { Fragment, useEffect, useRef, useState } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { requestApi } from '../../../src/core/modules/form/utilities';\r\nimport { getEnvVariable } from '../../../src/modules/environmentalList';\r\n//import { getCalculatedAmount } from '../../../src/payment/manager';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport { snackbarMessage } from '../../core/actions';\r\nimport { GenerateInvoice, GetOwnerInvoice, GetOwnerInvoiceView, GetOwnerPaymentsInformation, ReGenerateInvoice } from './billingservice';\r\n//import BillingSidepopup from '../billing/billingsidepopup'\r\n//import BillingRegenerate from '../billing/billingregenerate'\r\nimport InvoiceSideBar from './billinginvoice';\r\nimport RegenerateSideBar from './billingregenerateoptions';\r\nimport { IsValidInvoiceStatus, IsValidPermitStatus } from './statusvalidator';\r\n\r\nimport AccountBalanceWalletIcon from '@material-ui/icons/AccountBalanceWallet';\r\nimport AttachMoneyIcon from '@material-ui/icons/AttachMoney';\r\nimport LocalAtmIcon from '@material-ui/icons/LocalAtm';\r\nimport PaymentIcon from '@material-ui/icons/Payment';\r\nimport Card from '../../core/controls/components/card';\r\nimport BillingGrid from './billinggrid';\r\nimport PhysicalCheckSideBar from './billingphysicalcheck';\r\nconst _ = require('lodash');\r\n\r\n\r\nfunction TabPanel(props) {\r\n const { children, value, index, ...other } = props;\r\n\r\n return (\r\n <Typography\r\n component=\"div\"\r\n role=\"tabpanel\"\r\n hidden={value !== index}\r\n id={`scrollable-force-tabpanel-${index}`}\r\n aria-labelledby={`scrollable-force-tab-${index}`}\r\n {...other}\r\n >\r\n {/* by removing style scrollbar will be hided {value === index && <Box p={3} style={{ overflow: 'auto', height: '800px' }}>{children}</Box>} */}\r\n {value === index && <Box p={3}>{children}</Box>}\r\n </Typography>\r\n );\r\n}\r\n\r\nTabPanel.propTypes = {\r\n children: PropTypes.node,\r\n index: PropTypes.any.isRequired,\r\n value: PropTypes.any.isRequired,\r\n};\r\n\r\nfunction a11yProps(index) {\r\n return {\r\n id: `scrollable-force-tab-${index}`,\r\n 'aria-controls': `scrollable-force-tabpanel-${index}`,\r\n };\r\n}\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n flexGrow: 1,\r\n width: '100%',\r\n backgroundColor: theme.palette.background.paper,\r\n \"& .MuiTab-root\": {\r\n 'text-transform': 'capitalize'\r\n },\r\n },\r\n}));\r\n\r\nfunction OwnerBilling(props) {\r\n // const {headerProps} = props.options\r\n const [data, setData] = useState([])\r\n const [total, setTotal] = useState(0)\r\n const [gridColumns, setGridColumns] = useState([])\r\n //const [attachmentTypeResults, setAttachmentTypeResults] = useState(null)\r\n const [TabValue, setTabValue] = useState(0)\r\n const [invoice, setInvoice] = useState({})\r\n const [pdf, setPDF] = useState(null)\r\n const [openInvoice, setOpenInvoice] = useState(false)\r\n const [currentDataItem, setCurrentDataItem] = useState(null)\r\n const [openSlide, setOpenSlide] = useState(false)\r\n const [generateInvoiceType, setGenerateInvoiceType] = useState(null)\r\n const [openGenerateInvoice, setOpenGenerateInvoice] = useState(false)\r\n\r\n const [permitDropdown, setPermitDropdown] = useState([])\r\n const [appDropdown, setAppDropdown] = useState([])\r\n const [paymentStatusOptions, setPaymentStatusOptions] = useState([])\r\n const [paymentStatusValue, setPaymentStatusValue] = useState(null)\r\n const [disabled, setDisabled] = useState(true)\r\n\r\n //const [components, setComponents] = useState({ ...BillingSidepopup })\r\n const [dataState, setDataState] = useState({\r\n skip: 0, take: 5\r\n })\r\n const [EachComp, setEachComp] = useState(null)\r\n const [pageable, setPageable] = useState({\r\n buttonCount: 6,\r\n info: true,\r\n type: 'numeric',\r\n pageSizes: [10, 20, 30, 40, 50, \"all\"],\r\n previousNext: true\r\n })\r\n const helpContext = useRef(null);\r\n const silderContext = useRef(null);\r\n const [gridSelectionRecord, setGridSelectionRecord] = useState(false)\r\n const [hascheckbox, setHasCheckBox] = useState(true)\r\n const [gridCheckBoxSelectionRecords, setGridCheckBoxSelectionRecords] = useState([])\r\n const [invoiceSummary, setInvoiceSummary] = useState([])\r\n const [allInvoices, setAllInvoices] = useState({})\r\n const [companyId, setCompanyId] = useState(null)\r\n const [physicalCheckProps, setPhysicalCheckProps] = useState({ open: false, type: 'NEW', id: 0 })\r\n const [checkModules, setCheckModules] = useState([])\r\n\r\n useEffect(() => {\r\n // requestApi({ get: { url: getEnvVariable('AdminConfig') + `/api/KEPTSitePermitTypes/${props.match.params.routeid}` } }, null, null).then(results => {\r\n // setAttachmentTypeResults(results);\r\n // })\r\n\r\n if (props.options && props.options.billingtype && props.options.billingtype == \"externalbilling\") {\r\n requestApi({ get: { url: getEnvVariable('MasterAdmin') + `/api/ExternalUser/` + getEnvVariable('ModuleKey') + `/${props.accessPermissions.userId}` } }, null, null).then(results => {\r\n setCompanyId(results.CompanyId)\r\n })\r\n }\r\n requestApi({ get: { url: getEnvVariable('Admin') + `/api/Domains/values?domainkey=APPLICATION_PAYMENT_STATUS` } }, null, null).then(results => {\r\n setAppDropdown(results);\r\n setPaymentStatusOptions(results);\r\n })\r\n requestApi({ get: { url: getEnvVariable('Admin') + `/api/Domains/values?domainkey=PERMIT_PAYMENT_STATUS`, } }, null, null).then(results => {\r\n setPermitDropdown(results);\r\n })\r\n let submodule = localStorage.getItem('submodule') && JSON.parse(localStorage.getItem('submodule')) ? JSON.parse(localStorage.getItem('submodule')) : []\r\n let checkdata = []\r\n submodule.forEach(element => {\r\n checkdata.push(element.key)\r\n });\r\n setCheckModules(checkdata)\r\n\r\n LoadData();\r\n }, [])\r\n\r\n useEffect(() => {\r\n LoadExistingInvoiceData()\r\n }, [companyId])\r\n\r\n const LoadExistingInvoiceData = () => {\r\n let passid = props.options && props.options.billingtype && props.options.billingtype == \"externalbilling\" ? companyId : props.match.params.Id\r\n let passtype = TabValue == 0 ? 'Application' : TabValue == 1 ? 'Prorate' : 'PermitRenewal';\r\n if (passid) {\r\n LoadStatistics(passid, passtype);\r\n GetOwnerInvoiceView(passid, passtype, checkModules).then(invres => {\r\n let extdata = []; //[...data, ...invres.InvoiceLineItems];\r\n let statusopts = TabValue < 2 ? appDropdown : permitDropdown\r\n if (invres && Array.isArray(invres)) {\r\n let invdataarr = invres;\r\n setAllInvoices(invres);\r\n setData(invdataarr)\r\n setInvoice(invdataarr[0])\r\n setPaymentStatusOptions(statusopts)\r\n setGridSelectionRecord(null)\r\n setGridCheckBoxSelectionRecords([]);\r\n }\r\n })\r\n }\r\n\r\n }\r\n\r\n const LoadStatistics = (passid, passtype) => {\r\n GetOwnerInvoice(passid, passtype).then(invres => {\r\n if (invres && Array.isArray(invres) && invres.length > 0) {\r\n let invdataarr = invres;\r\n setAllInvoices(invres);\r\n if (invdataarr && Array.isArray(invdataarr)) {\r\n SetInvoiceSummary(invdataarr);\r\n }\r\n }\r\n })\r\n }\r\n\r\n const physicalcheckSlider = (open, type, id) => {\r\n if (!open) {\r\n setPhysicalCheckProps({ open: false, viewtype: '', id: 0 });\r\n\r\n }\r\n else\r\n setPhysicalCheckProps({ open: true, viewtype: type, id: id })\r\n }\r\n\r\n const SetInvoiceSummary = (invoices) => {\r\n let unpaid = invoices.filter(a => a.Status == 'U');\r\n let cancelled = invoices.filter(a => a.Status == 'C');\r\n let paid = invoices.filter(a => a.Status == 'P');\r\n let unpaidamount = GetSummaryFee(unpaid);\r\n let paidamount = GetSummaryFee(paid);\r\n let cancelledamount = GetSummaryFee(cancelled);\r\n //{ permitcount : 0 , paidinvoice:0, paidamount : 0, unpaidinvoice:0, unpaidamount : 0 }\r\n //{header: \"Payment Details :- \", body: \"Total amount: \", footer: \"$1050\"}\r\n let invoiceSummaryArr = [];\r\n invoiceSummaryArr.push({ header: \" Number Of Invoice :\" + paid.length, body: \"Paid Invoice\", footer: paidamount })\r\n invoiceSummaryArr.push({ header: \" Number Of Invoice :\" + unpaid.length, body: \"UnPaid Invoice\", footer: unpaidamount })\r\n invoiceSummaryArr.push({ header: \" Number Of Invoice :\" + cancelled.length, body: \"Cancelled Invoice\", footer: cancelledamount })\r\n\r\n // let obj = {\r\n // paidinvoice: paid.length,\r\n // paidamount: paidamount,\r\n // unpaidinvoice: unpaid.length,\r\n // unpaidamount: unpaidamount,\r\n // cancelledinvoice:cancelled.length\r\n // }\r\n setInvoiceSummary(invoiceSummaryArr)\r\n }\r\n\r\n const GetSummaryFee = (invoices) => {\r\n if (invoices && Array.isArray(invoices)) {\r\n let totalAmount = 0;\r\n invoices.forEach(inv => {\r\n if (Array.isArray(inv.InvoiceDetails)) {\r\n inv.InvoiceDetails.forEach(element => {\r\n totalAmount = totalAmount + element.Amount\r\n });\r\n }\r\n });\r\n return \"$\" + totalAmount\r\n }\r\n return \"$0\";\r\n }\r\n\r\n\r\n\r\n useEffect(() => {\r\n LoadData();\r\n }, [dataState])\r\n\r\n const LoadData = () => {\r\n const queryStr = `${toDataSourceRequestString(dataState)}`;\r\n //we do request grid request and need to append queryStr for url\r\n let dataitems = data || []\r\n //setData(dataitems);\r\n setTotal(dataitems.length);\r\n //for getting distinct columns, returns all distinct columns by verifying all objects in data array\r\n let columnsarr = _.union(_.flatten(_.map(dataitems, (e) => _.keys(e))));\r\n var removedfields = _.remove(columnsarr, function (n) {\r\n return n != \"UpdatedBy\" && n != \"UpdatedOn\" && n != \"BillingPayments\";\r\n });\r\n setGridColumns(removedfields)\r\n }\r\n\r\n\r\n const handleChange = (event, newValue) => {\r\n setTabValue(newValue);\r\n }\r\n\r\n useEffect(() => {\r\n //console.log('Loading from tab value change----------------------**');\r\n setData([])\r\n setInvoice({})\r\n setGridSelectionRecord(null)\r\n setGridCheckBoxSelectionRecords([])\r\n setInvoiceSummary([])\r\n let hasCheckBoxVal = TabValue == 2 ? true : false;\r\n setHasCheckBox(hasCheckBoxVal);\r\n if (TabValue == 3) {\r\n LoadPaymentInformation();\r\n } else {\r\n LoadExistingInvoiceData()\r\n }\r\n }, [TabValue])\r\n\r\n const LoadPaymentInformation = () => {\r\n let passid = props.options && props.options.billingtype && props.options.billingtype == \"externalbilling\" ? companyId : props.match.params.Id\r\n\r\n GetOwnerPaymentsInformation(passid).then(invres => {\r\n console.log(invres)\r\n if (invres && Array.isArray(invres)) {\r\n setData(invres);\r\n setInvoice({});\r\n setPaymentStatusOptions([]);\r\n setGridSelectionRecord(null);\r\n setGridCheckBoxSelectionRecords([]);\r\n }\r\n })\r\n }\r\n\r\n //Genreate options\r\n const handleButtonClick = () => {\r\n let appdata = {\r\n applicantid: props.match.params.routeid2,\r\n sitepermittypeid: props.match.params.routeid,\r\n recordid: props.match.params.routeid1,\r\n district: \"\",\r\n county: \"\"\r\n };\r\n if (TabValue == '1') {\r\n GenerateInvoice(appdata, \"PRORATE\").then(res => {\r\n console.log(res);\r\n if (res && res.Id && res.InvoiceLineItems) {\r\n // let extdata = [...data, ...res.InvoiceLineItems];\r\n // setData(extdata)\r\n // setInvoice(res)\r\n LoadExistingInvoiceData();\r\n }\r\n }).catch(function (err) {\r\n console.error(err);\r\n let nobll = err.Error == 'NOBILLING'\r\n let nosetting = err.Error == 'NOSETTING'\r\n props.snackbarMessage(`No prorate fee found in settings.`, 'info')\r\n })\r\n } else if (TabValue == '2') {\r\n GenerateInvoice(appdata, \"PERMITRENEWAL\").then(res => {\r\n console.log(res);\r\n if (res && res.Id && res.InvoiceLineItems) {\r\n // let extdata = [...data, ...res.InvoiceLineItems];\r\n // setData(extdata)\r\n // setInvoice(res)\r\n LoadExistingInvoiceData();\r\n }\r\n }).catch(function (err) {\r\n console.error(err);\r\n let nobll = err.Error == 'NOBILLING'\r\n let nosetting = err.Error == 'NOSETTING'\r\n props.snackbarMessage(`No permit fee found in settings.`, 'info')\r\n })\r\n }\r\n\r\n }\r\n\r\n\r\n useEffect(() => {\r\n SetGridData();\r\n }, [data])\r\n\r\n\r\n\r\n const SetGridData = () => {\r\n const queryStr = `${toDataSourceRequestString(dataState)}`;\r\n //we do request grid request and need to append queryStr for url\r\n let dataitems = data || []\r\n //setData(dataitems);\r\n setTotal(dataitems.length);\r\n //for getting distinct columns, returns all distinct columns by verifying all objects in data array\r\n let columnsarr = _.union(_.flatten(_.map(dataitems, (e) => _.keys(e))));\r\n var removedfields = _.remove(columnsarr, function (n) {\r\n return n != \"UpdatedBy\" && n != \"UpdatedOn\" && n != \"BillingPayments\" && n != \"DownloadId\";\r\n });\r\n setGridColumns(removedfields)\r\n }\r\n\r\n const payOnline = () => {\r\n let routeid = props.match.params.routeid;\r\n let routeid1 = props.match.params.routeid1;\r\n let currentuser = props.accessPermissions.userId\r\n let url = getEnvVariable('PaymentGateWay') + `/RequestPayment/Index/${routeid}/${routeid1}/${invoice.Id}/${currentuser}` //'http://localhost/payment/RequestPayment/Index/1/1/1';\r\n let payment_window = window.open(url, 'popUpWindow', 'height=800,width=1000,left=100,top=100,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no, status=yes')\r\n payment_window.focus();\r\n var timer = setInterval(function () {\r\n if (payment_window.closed) {\r\n clearInterval(timer);\r\n LoadExistingInvoiceData();\r\n }\r\n }.bind(this), 1000);\r\n\r\n }\r\n\r\n const payOnlineAll = () => {\r\n let routeid = props.options && props.options.billingtype && props.options.billingtype == \"externalbilling\" ? companyId : props.match.params.Id;\r\n let routeid1 = props.match.params.routeid1 || -1;\r\n let currentuser = props.accessPermissions.userId;\r\n let invoicecondition = \"\"\r\n let selectionmapdataid = gridCheckBoxSelectionRecords.map(res => {\r\n return res.Id\r\n })\r\n if (selectionmapdataid && Array.isArray(selectionmapdataid)) {\r\n selectionmapdataid.forEach(element => {\r\n if (Number.isInteger(element))\r\n invoicecondition = invoicecondition + 'id=' + element + '&';\r\n });\r\n\r\n let url = getEnvVariable('PaymentGateWay') + `/OnlinePayment/Index/${routeid}/${routeid1}/${currentuser}?${invoicecondition}` //${invoice.Id}\r\n let payment_window = window.open(url, 'popUpWindow', 'height=800,width=1000,left=100,top=100,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no, status=yes')\r\n payment_window.focus();\r\n var timer = setInterval(function () {\r\n if (payment_window.closed) {\r\n clearInterval(timer);\r\n LoadExistingInvoiceData();\r\n }\r\n }.bind(this), 1000);\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n\r\n const PaymentStatus = () => {\r\n return invoice.Status == 'P' ? 'Paid' : 'UnPaid';\r\n }\r\n\r\n\r\n const rowRender = (trElement, row) => {\r\n const trProps = {\r\n ...trElement.props,\r\n onDoubleClick: () => {\r\n if (TabValue < 3) {\r\n setGridSelectionRecord(row.dataItem.InvoiceId)\r\n } else {\r\n setGridSelectionRecord(row.dataItem.Id)\r\n }\r\n }\r\n };\r\n return React.cloneElement(trElement, { ...trProps }, trElement.props.children);\r\n }\r\n\r\n const rowRenderData = (row) => {\r\n if (TabValue < 3) {\r\n setGridSelectionRecord(row.dataItem)\r\n } else {\r\n setGridSelectionRecord(row.dataItem)\r\n }\r\n }\r\n\r\n const gridSelection = (datavalues, selectionmapdata) => {\r\n // setData(datavalues);\r\n setGridCheckBoxSelectionRecords(selectionmapdata);\r\n if (selectionmapdata && selectionmapdata.length > 0) {\r\n setDisabled(false);\r\n }\r\n else {\r\n setDisabled(true);\r\n }\r\n }\r\n const gridselectionLoad = (gridcheckload) => {\r\n console.log(gridcheckload);\r\n setCheckModules(gridcheckload)\r\n }\r\n\r\n useEffect(() => {\r\n LoadExistingInvoiceData()\r\n }, [checkModules])\r\n\r\n useEffect(() => {\r\n if (gridSelectionRecord) {\r\n if (TabValue == 3) {\r\n physicalcheckSlider(true, 'PAYMENT', gridSelectionRecord.Id)\r\n } else {\r\n setOpenInvoice(true);\r\n }\r\n }\r\n }, [gridSelectionRecord])\r\n\r\n const handleSlide = () => {\r\n setOpenSlide(false);\r\n setCurrentDataItem(null);\r\n LoadExistingInvoiceData();\r\n }\r\n\r\n const handleInvoiceSlider = () => {\r\n setOpenInvoice(false);\r\n setGridSelectionRecord(false);\r\n }\r\n\r\n const regenerateSlider = (type) => {\r\n setGenerateInvoiceType(type);\r\n }\r\n\r\n const handleRegenerateSlider = (type, iscancel) => {\r\n //setGenerateInvoiceType(type);\r\n if (type) {\r\n if (generateInvoiceType == \"G\" && type == \"2\") {\r\n handleButtonClick();\r\n } else {\r\n let applicantid = props.match.params.routeid2\r\n let sitepermittypeid = props.match.params.routeid\r\n let recordid = props.match.params.routeid1\r\n let invtype = (type == \"1\" && generateInvoiceType == \"R\" || (type == \"1\" && generateInvoiceType == \"G\")) ? \"A\" : \"C\"\r\n let invid = invoice.Id ? invoice.Id : '-1'\r\n let cancelParent = iscancel ? \"Y\" : \"N\"\r\n ReGenerateInvoice(invid, applicantid, invtype, recordid, cancelParent).then(a => {\r\n console.log(a);\r\n LoadExistingInvoiceData();\r\n props.snackbarMessage(`Invoice generated successfully.`, 'success');\r\n })\r\n\r\n }\r\n }\r\n setOpenGenerateInvoice(false);\r\n setGenerateInvoiceType(null);\r\n }\r\n\r\n const InvoiceStatusChange = (e) => {\r\n let currstatus = e.target.value;\r\n if (TabValue < 3) {\r\n if (!IsValidInvoiceStatus(invoice.Status, currstatus)) {\r\n props.snackbarMessage(`Invalid status change.`, 'error');\r\n } else {\r\n let inv = invoice;\r\n inv.Status = currstatus;\r\n setInvoice(inv)\r\n }\r\n } else {\r\n if (!IsValidPermitStatus(invoice.Status, currstatus)) {\r\n props.snackbarMessage(`Invalid status change.`, 'error');\r\n } else {\r\n let inv = invoice;\r\n inv.Status = currstatus;\r\n setInvoice(inv)\r\n }\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (generateInvoiceType)\r\n setOpenGenerateInvoice(true)\r\n }, [generateInvoiceType])\r\n\r\n const tabdata = () => {\r\n return <div><div>\r\n {/* <Typography display=\"block\" className=\"pl-3 pt-2\" gutterBottom><b>All Permit Invoices</b></Typography> */}\r\n {TabValue == 2 && <Typography display=\"block\" className=\"pl-3 pt-2\" gutterBottom><b>Multiple unpaid invoices can be paid online. Maximum selection limited to 50 invoices.</b></Typography>}\r\n <Card componentlist={invoiceSummary} />\r\n {/* <Typography display=\"block\" className=\"pl-3 pt-2\" gutterBottom><b>Paid Invoice: {invoiceSummary.paidinvoice || 0}</b></Typography>\r\n <Typography display=\"block\" className=\"pl-3 pt-2\" gutterBottom><b>UnPaid Invoice: {invoiceSummary.unpaidinvoice || 0}</b></Typography>\r\n <Typography display=\"block\" className=\"pl-3 pt-2\" gutterBottom><b>Cancelled Invoice: {invoiceSummary.cancelledinvoice || 0}</b></Typography>\r\n <Typography display=\"block\" className=\"pl-3 pt-2\" gutterBottom><b>Total Paid Amount: {invoiceSummary.paidamount || 0}</b></Typography>\r\n <Typography display=\"block\" className=\"pl-3 pt-2\" gutterBottom><b>Total Unpaid Invoice Amount : {invoiceSummary.unpaidamount || 0}</b></Typography>\r\n */}\r\n </div>\r\n <BillingGrid data={data} total={total} gridSelection={gridSelection} gridselectionLoad={gridselectionLoad} hascheckbox={hascheckbox} rowRenderData={rowRenderData} gridColumns={gridColumns} issidebar={true} />\r\n {gridCheckBoxSelectionRecords.length > 0 && <Typography display=\"block\" className=\"pl-3 pt-2\" gutterBottom><b>You have selected {gridCheckBoxSelectionRecords.length || 0} invoices</b></Typography>}\r\n <div className=\"col-sm-12 pt-3\">\r\n <InvoiceSideBar ref={helpContext} open={openInvoice} gridrow={gridSelectionRecord} handleInvoiceSlider={handleInvoiceSlider} />\r\n <RegenerateSideBar ref={silderContext} open={openGenerateInvoice} type={generateInvoiceType} invoiceid={invoice && invoice.Id ? invoice.Id : null} handleRegenerateSlider={handleRegenerateSlider} />\r\n {/* {invoice && invoice.Id && invoice.Status == 'U' && <Button className=\"col-sm-2 float-right pr-2\" variant=\"contained\" color=\"primary\" onClick={payOnline}>Pay</Button>} */}\r\n {physicalCheckProps.open && <PhysicalCheckSideBar open={physicalCheckProps.open}\r\n invoiceid={(invoice && invoice.Id) ? invoice.Id : gridSelectionRecord && gridSelectionRecord.invoices ? gridSelectionRecord.invoices : 0}\r\n viewtype={physicalCheckProps.viewtype}\r\n billingid={physicalCheckProps.id}\r\n appdata={{}}\r\n physicalcheckSlider={physicalcheckSlider}\r\n recorddata={gridSelectionRecord} {...props} />}\r\n </div>\r\n <div>\r\n {pdf && <iframe src={pdf} width=\"100%\" height=\"100%\" frameborder=\"0\" scrolling=\"no\" id=\"iframe\" />}\r\n </div>\r\n {TabValue == 2 && <Button className=\"col-sm-2 float-right pr-2\" variant=\"contained\" disabled={disabled} color={disabled ? \"default\" : \"primary\"} onClick={payOnlineAll}>Pay</Button>}\r\n\r\n </div>\r\n }\r\n\r\n return (\r\n <Fragment>\r\n <AppBar position=\"static\" color=\"white\">\r\n <Tabs\r\n value={TabValue}\r\n onChange={handleChange}\r\n indicatorColor=\"primary\"\r\n textColor=\"primary\"\r\n variant=\"fullWidth\"\r\n scrollButtons=\"on\"\r\n aria-label=\"scrollable auto tabs example\"\r\n >\r\n <Tab label=\"Application Invoices\" {...a11yProps(0)} icon={<AttachMoneyIcon />} value=\"0\" />\r\n <Tab label=\"Prorate Invoices\" {...a11yProps(1)} icon={<LocalAtmIcon />} value=\"1\" />\r\n <Tab label=\"All Renewal Invoices\" {...a11yProps(3)} icon={<PaymentIcon />} value=\"2\" />\r\n <Tab label=\"Payments\" {...a11yProps(4)} icon={<AccountBalanceWalletIcon />} value=\"3\" />\r\n </Tabs>\r\n </AppBar>\r\n <TabPanel value={TabValue} index={0}></TabPanel>\r\n <TabPanel value={TabValue} index={1}></TabPanel>\r\n <TabPanel value={TabValue} index={2}></TabPanel>\r\n <TabPanel value={TabValue} index={3}></TabPanel>\r\n {tabdata()}\r\n </Fragment>\r\n )\r\n}\r\n\r\nconst mapProps = (state) => {\r\n return state\r\n}\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage }, dispatch);\r\n}\r\n\r\nOwnerBilling = connect(mapProps, mapActions)(OwnerBilling)\r\nexport default withRouter(OwnerBilling)","/**\r\n *********************************************************\r\n Description: Handles MasterFieldsList. Probably this component can be removed and managed by form.\r\n Required props: commap, components, options.\r\n limitations : custom module which only hanldes masterfields.\r\n *********************************************************\r\n **/\r\n\r\nimport React, { Component, Fragment } from 'react';\r\nimport { requestApi } from '../../core/modules/form/utilities'\r\nimport SubForm from '../../core/modules/form/csubform';\r\nimport { withRouter } from 'react-router-dom';\r\nimport FormHeader from '../../core/modules/form/cformheader'\r\nimport { bindActionCreators } from 'redux'\r\nimport { connect } from 'react-redux';\r\nimport { snackbarMessage } from '../../core/actions';\r\nimport SimpleGrid from '../../core/modules/simplegrid';\r\nimport { globalvalidate } from '../../core/modules/form/validations'\r\nimport CustomAlert from '../../core/modules/form/calertbox'\r\nimport { T } from 'ramda';\r\nclass MasterFieldsList extends Component {\r\n constructor(props) {\r\n super(props);\r\n const { compmap, components, options, datecomponents, createdcomponents } = this.props\r\n const { conditionalComponents, newmasterfieldslist } = options\r\n this.effects = {\r\n\r\n }\r\n\r\n\r\n /**\r\n *********************************************************\r\n Description: Initialization. Conditional components are hidden.\r\n Required props: commap, components, options.\r\n limitations : custom module which only hanldes masterfields.\r\n *********************************************************\r\n **/\r\n\r\n conditionalComponents.forEach(each => {\r\n const { options } = each\r\n const { name, isHidden } = options\r\n\r\n if (isHidden) this.effects[name] = {\r\n show: false\r\n }\r\n })\r\n this.newcomponents = components.concat(conditionalComponents).map(each => {\r\n return { ...each, options: { ...each.options, edit: newmasterfieldslist ? true : false } }\r\n })\r\n if (datecomponents)\r\n this.datecomps = datecomponents.map(each => {\r\n return { ...each, options: { ...each.options, edit: false } }\r\n })\r\n\r\n if (createdcomponents)\r\n this.createcomps = createdcomponents.map(each => {\r\n return { ...each, options: { ...each.options, edit: false } }\r\n })\r\n this.state = {\r\n changedFieldName: [],\r\n opensnackbar: false,\r\n snackbarmessageType: '',\r\n snackbarmessage: '',\r\n results: newmasterfieldslist ? {} : null,\r\n isedited: false,\r\n showview: false,\r\n displayalert: false,\r\n // isduplicate: false,\r\n }\r\n }\r\n\r\n /**\r\n *********************************************************\r\n Description: Used to convert all non-editable components to editable by setting edit to true.\r\n Required props: this.newcomponents. Newcomponents equals conditional components and non-conditional components.\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n\r\n handleEdit = () => {\r\n const { options } = this.props\r\n const { results, showview, isedited } = this.state\r\n this.setState({\r\n isedited: !isedited,\r\n displayalert: false,\r\n dateshowcomp: this.datecomps.map(each => {\r\n const { options } = each\r\n const { name } = options\r\n return { name: name, value: results[name] }\r\n }),\r\n changedFieldName: this.newcomponents.filter(f => {\r\n const { options } = f\r\n if (results.UIFieldTypeComponent === 'CF' && options.name === 'MasterDomainKey') return false\r\n else return true\r\n\r\n }).map(each => {\r\n const { options } = each\r\n const { name } = options\r\n\r\n if (name === 'FieldProps.AllowDate') {\r\n let AllowDate = results && results['FieldProps'] && results['FieldProps'].AllowDate ? results['FieldProps'].AllowDate : ''\r\n return { edit: showview ? !showview : true, editduplicate: this.state.isduplicate, name: name, value: AllowDate, effect: { show: (this.effects[name] != null) ? this.effects[name].show : true } }\r\n }\r\n if (name === 'FieldProps.CurrentDefaultDate') {\r\n let currentDefaultDate = results && results['FieldProps'] && results['FieldProps'].CurrentDefaultDate ? results['FieldProps'].CurrentDefaultDate : ''\r\n return { edit: showview ? !showview : true, editduplicate: this.state.isduplicate, name: name, value: currentDefaultDate, effect: { show: (this.effects[name] != null) ? this.effects[name].show : true } }\r\n }\r\n return { edit: showview ? !showview : true, editduplicate: this.state.isduplicate, name: name, value: results[name], effect: { show: (this.effects[name] != null) ? this.effects[name].show : true } }\r\n }),\r\n showview: false,\r\n })\r\n\r\n }\r\n\r\n /**\r\n * Helper text scenarios\r\n */\r\n handleHelperText = (value, UIfieldcomponent) => {\r\n let helperText = \"\";////\r\n if (UIfieldcomponent && UIfieldcomponent === 'TB') {\r\n if (value !== \"\" && (value < 200 || value === 200)) {\r\n helperText = \"Length should be in the range of 0 to 200\"\r\n }\r\n else if (value > 200 && value <= 4000) {\r\n helperText = \"Length should be in the range of 200 to 4000\"\r\n }\r\n else if (value > 4000 && value <= 8000) {\r\n helperText = \"Length should be in the range of 4000 to 8000\"\r\n }\r\n }\r\n else helperText = \"Length cannot be more than 8000\"\r\n this.setState({ lengthHelper: helperText })\r\n }\r\n\r\n /**\r\n *********************************************************\r\n Description: Handles displaying the components. When the field value of non-conditional component is changed, the\r\n conditions on the conditional components are searched. If the condition is successful the component is displayed\r\n Required props: compname, value, results\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n\r\n handleShow = (compname, value, results) => {\r\n const { options } = this.props\r\n const { conditionalComponents } = options\r\n let hidecomp = [], showcomp = [];\r\n const requiredFieldNamesInUpperCase = this.requiredFieldNamesInUpperCase\r\n const toshow = conditionalComponents.filter(each => {\r\n const { options } = each\r\n const { name } = options;\r\n //DefaultValue Content\r\n if (value === 'P' && (name === 'DefaultValue')) return true\r\n if (value === 'TB' && (name === 'DefaultValue')) return true\r\n if (value === 'TA' && name === 'DefaultValue') return true\r\n if (value === 'C' && (name === 'DefaultValue')) return true\r\n if (value === 'DN' && name === 'DefaultValue') return true\r\n if (value === 'N' && (name === 'DefaultValue')) return true\r\n if (value === 'RT' && (name === 'DefaultValue')) return true\r\n if (value === 'L' && (name === 'DefaultValue')) return true\r\n //end of default content\r\n if (compname === 'UIValidation') {\r\n if (value === 'I' && (name === 'Length' || name === 'DefaultValue' || name === 'UIValidation' || name === 'Mask')) return true\r\n if (value === 'R' & (name === 'Length' || name === 'DefaultValue' || name === 'UIValidation' || name === 'RegExpression')) return true\r\n if (value === 'N' && name === 'Length' || name === 'DefaultValue' || name === 'UIValidation') return true\r\n }\r\n if (compname === 'Mask') {\r\n if (name === 'Length' || name === 'DefaultValue' || name === 'UIValidation' || name === 'Mask') return true\r\n }\r\n if (value === 'TB' && (name === 'Length' || name === 'UIValidation')) {\r\n return true\r\n }\r\n // if (value === 'TB' && (name === 'Length' || name === 'UIValidation')) return true\r\n if (value === 'TA' && name === 'Length') return true\r\n if (value === 'L' && name === 'Length') return true\r\n if (value === 'TA' && name === 'IsSpellCheck') return true\r\n if (value === 'TB' && name === 'IsSpellCheck') return true\r\n if (value === 'DS' && name === 'DomainKey') return true\r\n if (value === 'AC' && name === 'DomainKey') return true\r\n if (compname !== 'UIValidation' && value === 'N' && (name === 'Min' || name === 'Max')) return true\r\n if (value === 'P' && (name === 'Min' || name === 'Max')) return true\r\n if (value === 'DN' && (name === 'Min' || name === 'Max' || name === 'DecimalPlace')) return true\r\n if (value === 'C' && (name === 'Min' || name === 'Max' || name === 'DecimalPlace')) return true\r\n if (value === 'RB' && (name === 'DomainKey')) return true\r\n if (value === 'CB' && (name === 'DomainKey')) return true\r\n if (value === 'DM' && (name === 'DomainKey')) return true\r\n // if (value === 'B' ) return true\r\n if (value === 'CF' && (name === 'LinkedMasterFieldId')) return true\r\n if (compname === 'FieldProps.AllowDate') {\r\n if (value === 'PD' && (name === 'FieldProps.AllowDate')) return true\r\n if (value === 'CD' && (name === 'FieldProps.AllowDate')) return true\r\n if (value === 'FD' && (name === 'FieldProps.AllowDate')) return true\r\n }\r\n if (value === 'D' && (name === 'FieldProps.AllowDate')) return true\r\n if (value === 'DT' && (name === 'FieldProps.AllowDate')) return true\r\n //end of date and time components\r\n hidecomp.push({ name: name, display: 'd-none', value: results[name] })\r\n })\r\n\r\n toshow.forEach(each => {\r\n const { options } = each\r\n const { name } = options\r\n if (name === 'DomainKey') {\r\n const required = name ? (requiredFieldNamesInUpperCase ? (requiredFieldNamesInUpperCase[name.toUpperCase()] ? requiredFieldNamesInUpperCase[name.toUpperCase()] : false) : false) : false\r\n this.requiredFields[name] = required\r\n requestApi(this.props.options.dropdownchoice.read).then(res => {\r\n this.setState({\r\n changedFieldName: [{ name: 'DomainKey', value: this.state.results['DomainKey'], display: 'd-block', dropdownvalues: res, required: required }]\r\n\r\n })\r\n })\r\n }\r\n\r\n else if (name === 'MasterDomainKey') {\r\n const required = name ? (requiredFieldNamesInUpperCase ? (requiredFieldNamesInUpperCase[name.toUpperCase()] ? requiredFieldNamesInUpperCase[name.toUpperCase()] : false) : false) : false\r\n this.requiredFields[name] = required\r\n requestApi(this.props.options.masterdropdownchoice.read).then(res => {\r\n this.setState({\r\n changedFieldName: [{ name: 'DomainKey', value: this.state.results['DomainKey'], display: 'd-block', dropdownvalues: res, required: required }]\r\n\r\n })\r\n })\r\n }\r\n else if (name === 'LinkedMasterFieldId') {\r\n const required = name ? (requiredFieldNamesInUpperCase ? (requiredFieldNamesInUpperCase[name.toUpperCase()] ? requiredFieldNamesInUpperCase[name.toUpperCase()] : false) : false) : false\r\n this.requiredFields[name] = required\r\n requestApi(this.props.options.Linkeddropdown.read).then(res => {\r\n this.setState({\r\n changedFieldName: [{ required: required, name: 'LinkedMasterFieldId', value: this.state.results['LinkedMasterFieldId'], display: 'd-block', dropdownvalues: this.state.linkeddropdowns, transformProps: { \"value\": \"id\", \"name\": \"name\" } }]\r\n })\r\n })\r\n }\r\n else if (name === 'DomainKey1') {\r\n const required = name ? (requiredFieldNamesInUpperCase ? (requiredFieldNamesInUpperCase[name.toUpperCase()] ? requiredFieldNamesInUpperCase[name.toUpperCase()] : false) : false) : false\r\n this.requiredFields[name] = required\r\n showcomp.push({ required: required, name: 'DomainKey1', value: results['DomainKey'], display: 'd-block', dropdownvalues: [{ name: 'Yes', value: 'Y', key: 'y' }, { name: \"No\", value: 'N', key: 'n' }] })\r\n }\r\n else if (name === 'FieldProps.AllowDate') {\r\n const { defaultValue } = options\r\n let AllowDate = results && results['FieldProps'] && results['FieldProps'].AllowDate ? results['FieldProps'].AllowDate : (defaultValue ? defaultValue : '')\r\n showcomp.push({ name: 'FieldProps.AllowDate', value: AllowDate, display: 'd-block' });\r\n showcomp.push({\r\n name: 'FieldProps.CurrentDefaultDate', value: results['FieldProps'] && results['FieldProps'].CurrentDefaultDate ?\r\n results['FieldProps'].CurrentDefaultDate : 'N',\r\n display: 'd-block', required: true\r\n })\r\n }\r\n else if (name === \"UIValidation\") {\r\n if (results[name] === 'I' || (results['Mask'] && results[name] === 'I')) {\r\n const required = name ? (requiredFieldNamesInUpperCase ? (requiredFieldNamesInUpperCase[name.toUpperCase()] ? requiredFieldNamesInUpperCase[name.toUpperCase()] : false) : false) : false\r\n this.requiredFields['Mask'] = required || true\r\n let mask = results && results['Mask'] ? results['Mask'] : '';\r\n showcomp.push({ name: name, value: results[name], display: 'd-block', required: required })\r\n showcomp.push({ name: 'Mask', value: mask, display: 'd-block', required: true })//required\r\n }\r\n if (results[name] === 'R' || (results['RegExpression'] && results[name] === 'R')) {\r\n const required = name ? (requiredFieldNamesInUpperCase ? (requiredFieldNamesInUpperCase[name.toUpperCase()] ? requiredFieldNamesInUpperCase[name.toUpperCase()] : false) : false) : false\r\n this.requiredFields['RegExpression'] = required || true\r\n let mask = results && results['RegExpression'] ? results['RegExpression'] : '';\r\n showcomp.push({ name: name, value: results[name], display: 'd-block', required: required })\r\n showcomp.push({ name: 'RegExpression', value: mask, display: 'd-block', required: true })\r\n }\r\n if (value == 'TB') {\r\n showcomp.push({ name: 'UIValidation', value: results[name], display: 'd-block' })\r\n }\r\n }\r\n else if (name === 'DefaultValue') {\r\n const required = name ? (requiredFieldNamesInUpperCase ? (requiredFieldNamesInUpperCase[name.toUpperCase()] ? requiredFieldNamesInUpperCase[name.toUpperCase()] : false) : false) : false\r\n this.requiredFields[name] = required;\r\n if (value === 'N' || value === 'P' || value === 'C' || value === 'DN')\r\n showcomp.push({ name: name, value: results[name], display: 'd-block', required: required, xtype: \"Number\" })\r\n else showcomp.push({ name: name, value: results[name], display: 'd-block', required: required, xtype: \"\" })\r\n }\r\n else if (name === 'Length') {\r\n this.handleHelperText(results[name], results['UIFieldTypeComponent'])\r\n const required = name ? (requiredFieldNamesInUpperCase ? (requiredFieldNamesInUpperCase[name.toUpperCase()] ? requiredFieldNamesInUpperCase[name.toUpperCase()] : false) : false) : false\r\n this.requiredFields[name] = required;\r\n showcomp.push({ name: name, value: results[name], display: 'd-block', helperText: this.state.lengthHelper })\r\n }\r\n else {\r\n let tempResultShow = this.state.results\r\n const required = name ? (requiredFieldNamesInUpperCase ? (requiredFieldNamesInUpperCase[name.toUpperCase()] ? requiredFieldNamesInUpperCase[name.toUpperCase()] : false) : false) : false\r\n this.requiredFields[name] = required\r\n showcomp.push({ name: name, value: results[name] || options.defaultValue, display: 'd-block' })\r\n if (!results[name] && this.props.options.newmasterfieldslist) {\r\n tempResultShow[name] = (options && options.defaultValue && options.defaultValue !== null) ? options.defaultValue : 0\r\n this.setState({ results: tempResultShow })\r\n }\r\n }\r\n\r\n })\r\n return hidecomp.concat(showcomp)\r\n }\r\n\r\n /**\r\n *********************************************************\r\n Description: Handles displaying the components by calling handleshow method.\r\n Required props: options, components\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n componentDidMount() {\r\n this.didmountinitialload();\r\n }\r\n\r\n\r\n didmountinitialload() {\r\n const { options, components } = this.props;\r\n const { validations, newmasterfieldslist } = options;\r\n const read = options.crud.read\r\n\r\n if (this.props.options.Linkeddropdown) {\r\n requestApi(this.props.options.Linkeddropdown.read).then(linkeddropdowns => {\r\n this.setState({ linkeddropdowns: linkeddropdowns })\r\n })\r\n }\r\n //const routeProps = options.crud.read.get.routeProps\r\n //const id = this.props.match.params[routeProps.value]\r\n var self = this\r\n let aryofvalidations = []\r\n if (!Array.isArray(validations)) {\r\n aryofvalidations.push(validations)\r\n }\r\n else aryofvalidations = validations\r\n\r\n if (validations) {\r\n let requiredFieldNamesInUpperCase = {}\r\n let toolTipFieldNamesInUpperCase = {}\r\n let helpContext = {}\r\n aryofvalidations && Promise.all(aryofvalidations.map(each => requestApi(each)))\r\n .then(function (values) {\r\n let xvalidations = {}\r\n validations && values.forEach((each, index) => {\r\n const { transformProps } = aryofvalidations[index] ? aryofvalidations[index] : {}\r\n const { subfieldname, addsubfieldname } = transformProps ? transformProps : {}\r\n const subfieldnamelength = subfieldname ? subfieldname.length : 0\r\n each && each.forEach(each => {\r\n let validationname = each[transformProps.name].slice(subfieldnamelength)\r\n if (addsubfieldname) validationname = addsubfieldname + validationname\r\n if (each.Type === 'R' || each.Type === 'F') requiredFieldNamesInUpperCase[validationname] = true\r\n if (each.Type === 'T') toolTipFieldNamesInUpperCase[validationname] = each.Message || ''\r\n if (each.Type === 'H') helpContext[validationname] = each.Message || ''\r\n if (Array.isArray(xvalidations[validationname])) {\r\n const len = xvalidations[validationname].length\r\n const lastvalidation = xvalidations[validationname][len - 1]\r\n if (each.Order > lastvalidation.Order) xvalidations[validationname].push(each)\r\n else xvalidations[validationname].unshift(each)\r\n }\r\n else {\r\n xvalidations[validationname] = [each]\r\n }\r\n })\r\n self.validations = xvalidations\r\n self.requiredFieldNamesInUpperCase = requiredFieldNamesInUpperCase\r\n self.toolTipFieldNamesInUpperCase = toolTipFieldNamesInUpperCase\r\n self.helpContext = helpContext\r\n })\r\n self.fieldConfiguration()\r\n\r\n })\r\n .catch(err => {\r\n console.log(err)\r\n })\r\n }\r\n\r\n }\r\n\r\n fieldConfiguration = () => {\r\n const { options, components, datecomponents, createdcomponents, dataItem } = this.props;\r\n const read = options.crud.read\r\n if (this.props.options.Linkeddropdown) {\r\n requestApi(this.props.options.Linkeddropdown.read).then(linkeddropdowns => {\r\n this.setState({ linkeddropdowns: linkeddropdowns })\r\n\r\n })\r\n }\r\n let otherchangedfield = []\r\n let alreadyshowncomp = []\r\n let dateshowcomp = null\r\n let createshowcomp = null\r\n this.requiredFields = {}\r\n this.tempResults = {}\r\n const requiredFieldNamesInUpperCase = this.requiredFieldNamesInUpperCase;\r\n const toolTipFieldNamesInUpperCase = this.toolTipFieldNamesInUpperCase;\r\n const helpContext = this.helpContext;\r\n if (options.newmasterfieldslist) {\r\n components.map(each => {\r\n const { options } = each\r\n const { name, transformProps, defaultValue } = options\r\n const compcrud = options ? options.crud : null\r\n const compread = compcrud ? compcrud.read : null\r\n const required = name ? (requiredFieldNamesInUpperCase ? (requiredFieldNamesInUpperCase[name.toUpperCase()] ? requiredFieldNamesInUpperCase[name.toUpperCase()] : false) : false) : false\r\n this.requiredFields[name] = required;\r\n const tooltip = name ? (toolTipFieldNamesInUpperCase ? (toolTipFieldNamesInUpperCase[name.toUpperCase()] ? toolTipFieldNamesInUpperCase[name.toUpperCase()] : '') : '') : ''\r\n const helpContextMsg = name ? (helpContext ? (helpContext[name.toUpperCase()] ? helpContext[name.toUpperCase()] : '') : '') : ''\r\n this.tempResults[name] = defaultValue || null;\r\n if (compread) {\r\n requestApi(compread).then(resp => {\r\n alreadyshowncomp.push({ name: name, required: required, tooltip: tooltip, helpContext: helpContextMsg, dropdownvalues: resp || null, transformProps: transformProps });\r\n this.setState({ changedFieldName: alreadyshowncomp.concat(alreadyshowncomp), results: this.tempResults })\r\n })\r\n }\r\n else {\r\n alreadyshowncomp.push({ name: name, required: required, tooltip: tooltip, helpContext: helpContextMsg, })\r\n }\r\n })\r\n this.setState({\r\n changedFieldName: alreadyshowncomp.concat(otherchangedfield), results: this.tempResults\r\n })\r\n\r\n }\r\n else if (options.crud.read) {\r\n const routeProps = options.crud.read.get.routeProps\r\n const customProps = options.crud.read.get.customProps\r\n const id = routeProps ? this.props.match.params[routeProps.value] : dataItem[customProps.value]\r\n requestApi(read, id).then(results => {\r\n if (results.FieldProps) {\r\n results.FieldProps = JSON.parse(results.FieldProps)\r\n } const IsSystem = results.IsSystem\r\n if (IsSystem === 'N') this.IsSystem = true\r\n if (IsSystem === 'Y') this.IsSystem = false\r\n components.map(each => {\r\n const { options } = each\r\n const { name, transformProps } = options\r\n const compcrud = options ? options.crud : null\r\n const compread = compcrud ? compcrud.read : null\r\n const required = name ? (requiredFieldNamesInUpperCase ? (requiredFieldNamesInUpperCase[name.toUpperCase()] ? requiredFieldNamesInUpperCase[name.toUpperCase()] : false) : false) : false\r\n this.requiredFields[name] = required;\r\n const tooltip = name ? (toolTipFieldNamesInUpperCase ? (toolTipFieldNamesInUpperCase[name.toUpperCase()] ? toolTipFieldNamesInUpperCase[name.toUpperCase()] : '') : '') : ''\r\n const helpContextMsg = name ? (helpContext ? (helpContext[name.toUpperCase()] ? helpContext[name.toUpperCase()] : '') : '') : ''\r\n if (name === 'UIFieldTypeComponent') {\r\n otherchangedfield = this.handleShow(name, results[name], results)\r\n if (compread) {\r\n requestApi(compread).then(resp => {\r\n alreadyshowncomp.push({ name: name, required: required, tooltip: tooltip, contexthelp: helpContextMsg, dropdownvalues: resp || null, transformProps: transformProps, value: results[name] });\r\n this.setState({ changedFieldName: alreadyshowncomp.concat(alreadyshowncomp) })\r\n })\r\n }\r\n }\r\n if (name === 'Status' && transformProps) {\r\n let tval = transformProps ? transformProps[results[name]] : false;\r\n alreadyshowncomp.push({ name: name, value: tval, required: required, tooltip: tooltip, contexthelp: helpContextMsg })\r\n }\r\n else alreadyshowncomp.push({ name: name, value: results[name], required: required, tooltip: tooltip, contexthelp: helpContextMsg })\r\n })\r\n if (datecomponents)\r\n dateshowcomp = datecomponents.map(each => {\r\n const { options } = each\r\n const { name } = options\r\n return { name: name, value: results[name] }\r\n })\r\n\r\n if (createdcomponents)\r\n createshowcomp = createdcomponents.map(each => {\r\n const { options } = each\r\n const { name } = options\r\n return { name: name, value: results[name] }\r\n })\r\n let embeddtext = \"?view=embedded\"\r\n if (results.ContextHelp && results.ContextHelp.includes(embeddtext)) {\r\n let contexthelpval = results.ContextHelp.split(embeddtext)\r\n results = { ...results, ContextHelp: contexthelpval[0] }\r\n }\r\n if (results.ContextHelpExternal && results.ContextHelpExternal.includes(embeddtext)) {\r\n let contexthelpval = results.ContextHelpExternal.split(embeddtext)\r\n results = { ...results, ContextHelpExternal: contexthelpval[0] }\r\n }\r\n this.setState({\r\n results: results,\r\n showdomains: true,\r\n changedFieldName: alreadyshowncomp.concat(otherchangedfield),\r\n dateshowcomp: dateshowcomp,\r\n createshowcomp: createshowcomp\r\n }, () => {\r\n if (options.newmasterfieldslist) {\r\n this.handleEdit();\r\n }\r\n })\r\n })\r\n }\r\n\r\n }\r\n\r\n getDomainKeys = () => {\r\n const { results } = this.state;\r\n if (results['UIFieldTypeComponent'] && (results['UIFieldTypeComponent'] === 'CB' || results['UIFieldTypeComponent'] === 'RB' || results['UIFieldTypeComponent'] === 'AC' || results['UIFieldTypeComponent'] === 'DS' || results['UIFieldTypeComponent'] === 'DM') &&\r\n results['DomainKey'] !== '') {\r\n this.setState({ showdomains: true })\r\n }\r\n else {\r\n this.setState({ showdomains: false })\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevProps.dataItem != this.props.dataItem) {\r\n this.didmountinitialload();\r\n }\r\n\r\n }\r\n /**\r\n *********************************************************\r\n Description: Handles field changes.\r\n Required props: name or checked, type\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n handleFieldChange = (event) => {\r\n const { name, checked, type } = event.target\r\n const value = (type == 'checkbox') ? checked : event.target.value\r\n const checkboxvalue = event.target.value;\r\n let error = false, helperText = name === 'Length' ? this.state.lengthHelper : '';\r\n const nameinuppercase = name.toUpperCase()\r\n if (this.validations && this.validations[nameinuppercase]) {\r\n const err = globalvalidate({ [name]: this.validations[nameinuppercase] }, { [name]: value })\r\n if (err && err[name] && err[name].error) {\r\n error = err[name].error\r\n helperText = err[name].errortext\r\n }\r\n }\r\n if (name === 'DomainKey1') {\r\n this.setState({\r\n results: { ...this.state.results, ['DomainKey']: value },\r\n changedFieldName: [{ name: name, value: value }],\r\n })\r\n }\r\n else if (name === 'IsSpellCheck') {\r\n this.setState({\r\n results: { ...this.state.results, ['IsSpellCheck']: (value === 'Y' || value === true) ? 'Y' : 'N' },\r\n changedFieldName: [{ name: name, value: value }],\r\n })\r\n }\r\n else if (name === 'MasterDomainKey') {\r\n this.setState({\r\n results: { ...this.state.results, ['DomainKey']: value },\r\n changedFieldName: [{ name: name, value: value }]\r\n })\r\n }\r\n else if (name === 'FieldProps.CurrentDefaultDate') {\r\n var addedname = name.slice(11)\r\n let fieldprops = { [addedname]: value }\r\n this.setState({\r\n results: { ...this.state.results, ['FieldProps']: { ...this.state.results.FieldProps, ...fieldprops } },\r\n changedFieldName: [{ name: name, value: value }]\r\n })\r\n }\r\n else if (name === 'FieldProps.AllowDate') {\r\n var addedname = name.slice(11)\r\n let fieldprops = { [addedname]: checkboxvalue }\r\n this.setState({\r\n results: { ...this.state.results, ['FieldProps']: { ...this.state.results.FieldProps, ...fieldprops } },\r\n changedFieldName: [{ name: name, value: checkboxvalue, checkboxvalue: checkboxvalue }]\r\n })\r\n }\r\n else {\r\n this.setState({\r\n results: { ...this.state.results, [name]: value },\r\n changedFieldName: [{ name: name, value: value, error: error, helperText: helperText }],\r\n showdomains: name === 'DomainKey' ? true : false,\r\n domainKey: value ? value : ''\r\n }, () => {\r\n if (name === 'UIFieldTypeComponent' || name === 'UIValidation' || name === 'Mask') {\r\n if (name == 'UIFieldTypeComponent' && (this.state.results['UIFieldTypeComponent'] === 'DT' || this.state.results['UIFieldTypeComponent'] === 'D')) {\r\n this.setState({\r\n results: { ...this.state.results, ['FieldProps']: { ...this.state.results.FieldProps, ['AllowDate']: 'CD', ['CurrentDefaultDate']: 'N' } },\r\n changedFieldName: this.handleShow(name, value, this.state.results)\r\n })\r\n }\r\n else if (name == 'UIFieldTypeComponent' && (this.state.results['UIFieldTypeComponent'] === 'B' || this.state.results['UIFieldTypeComponent'] === 'CSC' || this.state.results['UIFieldTypeComponent'] === 'RC')) {\r\n this.setState({\r\n results: { ...this.state.results, ['DomainKey']: 'FLAG' },\r\n changedFieldName: this.handleShow(name, value, this.state.results)\r\n })\r\n }\r\n else this.setState({\r\n changedFieldName: this.handleShow(name, value, this.state.results)\r\n\r\n })\r\n }\r\n\r\n })\r\n }\r\n this.getDomainKeys()\r\n }\r\n\r\n getRequiredFields = (requiredFields) => {\r\n let keys = requiredFields && Object.keys(requiredFields);\r\n const { results } = this.state;\r\n let returnkeys = [];\r\n let requiredData = ['Name', 'UIFieldTypeComponent', 'Status']\r\n if (results['UIFieldTypeComponent'] === 'N' || results['UIFieldTypeComponent'] === 'C' ||\r\n results['UIFieldTypeComponent'] === 'P' || results['UIFieldTypeComponent'] === 'DN') {\r\n returnkeys = keys.filter(k => {\r\n if (k === 'Min' || k == 'Max')\r\n return k\r\n })\r\n }\r\n else if (results['UIFieldTypeComponent'] === 'CB' || results['UIFieldTypeComponent'] === 'AC' || results['UIFieldTypeComponent'] === 'DS' || results['UIFieldTypeComponent'] === 'DM' || results['UIFieldTypeComponent'] === 'RB') {\r\n returnkeys = keys.filter(k => {\r\n if (k === 'DomainKey')\r\n return k\r\n })\r\n }\r\n else if (results['UIFieldTypeComponent'] === 'TB') {\r\n returnkeys = keys.filter(k => {\r\n if (results['UIValidation'] === 'R' && k === 'RegExpression')\r\n return k\r\n if (results['UIValidation'] === 'I' && k === 'Mask')\r\n return k\r\n })\r\n }\r\n return [...requiredData, ...returnkeys]\r\n }\r\n /**\r\n *********************************************************\r\n Description: Handles component saving.\r\n Required props: crud.update.save is needed to save the results.\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n handleSave = (e, duplicaterecord) => {\r\n const { options } = this.props\r\n const { crud } = options\r\n const save = duplicaterecord ? crud.duplicate : crud.update;\r\n let embeddtext = \"?view=embedded\"\r\n let results\r\n results = duplicaterecord ? { ...this.state.results, IsDuplicate: \"Y\" } : this.state.results;\r\n if ((this.state.results.ContextHelp && !this.state.results.ContextHelp.includes(embeddtext))\r\n || (this.state.results.ContextHelpExternal && !this.state.results.ContextHelpExternal.includes(embeddtext))) {\r\n // let contexthelpval = this.state.results.ContextHelp.trim() \r\n let contexthelpval = (this.state.results && this.state.results.ContextHelp && this.state.results.ContextHelp.trim()) || ''\r\n let contexthelp = contexthelpval + embeddtext\r\n let extcontexthelpval = (this.state.results && this.state.results.ContextHelpExternal && this.state.results.ContextHelpExternal.trim()) || ''\r\n let extcontexthelp = extcontexthelpval + embeddtext\r\n results = { ...results, ContextHelp: contexthelp, ContextHelpExternal: extcontexthelp }\r\n }\r\n let changedFieldName = []\r\n const requiredFields = this.requiredFields\r\n const requiredFieldsKeys = this.getRequiredFields(requiredFields);\r\n let err\r\n if (requiredFieldsKeys) {\r\n requiredFieldsKeys.forEach(each => {\r\n if (requiredFields[each]) {\r\n if (each === 'Status')\r\n results.Status = (results.Status === 'A' || results.Status === true) ? 'A' : 'I';\r\n\r\n console.log(results)\r\n const value = (results && results[each]) ? results[each] : null\r\n if ((value === null) || (value === undefined) || (value === '')) {\r\n err = true\r\n changedFieldName.push({ value: value, name: each, error: true, helperText: 'Field is Required' })\r\n }\r\n }\r\n })\r\n }\r\n if (err) {\r\n console.log('errors----------------', changedFieldName)\r\n this.setState({\r\n errors: true,\r\n changedFieldName: changedFieldName,\r\n })\r\n ;\r\n }\r\n else {\r\n if (options.newmasterfieldslist) {\r\n // results.UiavailableFor = results.UiavailableFor ? 'A' : 'I';\r\n results.Status = 'A';\r\n if (results.FieldProps)\r\n results.FieldProps = JSON.stringify(results.FieldProps)\r\n }\r\n if (!options.newmasterfieldslist) {\r\n results.Status = (results.Status === 'A' || results.Status === true) ? 'A' : 'I';\r\n // results.UiavailableFor = results.UiavailableFor ? 'A' : 'I';\r\n if (results.FieldProps)\r\n results.FieldProps = JSON.stringify(results.FieldProps)\r\n }\r\n requestApi(save, null, results).then(response => {\r\n const { headerProps } = options\r\n const { navigateview, navigateadd } = headerProps;\r\n if (navigateview) {\r\n if (response && response.FieldProps) {\r\n response.FieldProps = JSON.parse(response.FieldProps)\r\n }\r\n response.Status = response.Status === 'A' ? true : false\r\n this.setState({ showview: true, results: response }, () => {\r\n this.handleEdit()\r\n })\r\n }\r\n if (navigateadd) {\r\n const { sidepopupadd } = options;\r\n if (sidepopupadd) {\r\n let pathname = this.props.location.pathname\r\n if (response && this.props && this.props.match && this.props.match.params && options.afterSaveroutesId) {\r\n this.props.match.params.Id = response[options.afterSaveroutesId]\r\n pathname = pathname + '/' + this.props.match.params.Id\r\n }\r\n this.props.onClose();\r\n this.props.history.push(pathname);\r\n //this.props.onClose();\r\n }\r\n else {\r\n const { afterSaveroutes } = options;\r\n const { connectingroute, connectingrouteid, routeparams, route } = afterSaveroutes;\r\n if (connectingroute && connectingrouteid) {\r\n this.props.history.push(route + response[routeparams] + connectingroute + response[connectingrouteid])\r\n }\r\n else this.props.history.push(afterSaveroutes.route + response[afterSaveroutes.routeparams])\r\n }\r\n }\r\n\r\n }).catch(error => {\r\n error.then(err => {\r\n if (err.errors) {\r\n this.onError(err.errors)\r\n ;\r\n }\r\n else if (err) {\r\n this.onError(err)\r\n\r\n }\r\n })\r\n })\r\n }\r\n }\r\n handleView = () => {\r\n this.handleEdit()\r\n }\r\n\r\n handleBack = () => {\r\n const { options } = this.props\r\n const { back } = options;\r\n const { routes, popupback } = back;\r\n if (!options.newmasterfieldslist && this.state.isedited) {\r\n this.setState({ showview: true }, () => {\r\n this.handleView()\r\n })\r\n\r\n }\r\n else {\r\n if (popupback) {\r\n this.props.onClose()\r\n }\r\n else if (Array.isArray(routes)) {\r\n let path = ''\r\n routes.forEach(each => {\r\n const { route, routeParams, matchProps } = each\r\n if (routeParams) {\r\n path += route + \"/\" + this.props.match.params[routeParams]\r\n }\r\n else if (matchProps) {\r\n path += route + \"/\" + this.props.results[matchProps]\r\n }\r\n else {\r\n path += route\r\n }\r\n })\r\n this.props.history.push(path)\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Description: handling the save errors and displaying the helper text\r\n */\r\n\r\n\r\n onError = (errors) => {\r\n const { results } = this.state\r\n const errfieldnames = Object.keys(errors)\r\n let changedNames = [], errformControls = {}\r\n errfieldnames.forEach(each => {\r\n if (results[each] != undefined) {\r\n errformControls[each] = {\r\n value: results[each],\r\n error: errors[each].error,\r\n touched: 1,\r\n // dropdownvalues: this.state.results[each].dropdownvalues,\r\n helperText: errors[each].errortext\r\n }\r\n }\r\n let errorstate = false, errorval = ''\r\n if (errors[each]) {\r\n if (Array.isArray(errors[each])) {\r\n errorstate = true\r\n errorval = errors[each][0]\r\n }\r\n else {\r\n errorstate = errors[each].error\r\n errorval = errors[each].errortext\r\n }\r\n\r\n }\r\n if (results[each] != undefined) {\r\n changedNames.push({\r\n name: each,\r\n value: results[each],\r\n error: errorstate,\r\n touched: 1,\r\n // dropdownvalues: this.state.results[each].dropdownvalues,\r\n helperText: errorval\r\n })\r\n }\r\n else {\r\n changedNames.push({\r\n name: each,\r\n value: null,\r\n error: errorstate,\r\n touched: 1,\r\n // dropdownvalues: this.state.results[each].dropdownvalues,\r\n helperText: errorval\r\n })\r\n }\r\n })\r\n this.setState({\r\n // results: { ...results, ...errformControls }, //commented becoz, on error clicking on save double returning to error screen\r\n changedFieldName: changedNames\r\n })\r\n }\r\n\r\n customhandleedit = (e, duplicate) => {\r\n if (duplicate) {\r\n this.setState({ isduplicate: false }, () => this.handleEdit())\r\n\r\n }\r\n else {\r\n if (this.state.results && this.state.results.IsSystem && this.state.results.IsSystem === \"Y\") {\r\n this.setState({ displayalert: true })\r\n }\r\n else {\r\n this.handleEdit();\r\n }\r\n }\r\n\r\n }\r\n closeAlert = () => {\r\n this.setState({ displayalert: false })\r\n }\r\n /**\r\n *********************************************************\r\n Description: renders the components.\r\n Required props: results\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n render() {\r\n const { compmap, components, options, datecomponents, createdcomponents, onNextItemClick, onPrevItemClick, onFullScreen, onExitFullScreen, fullscreen, exitfullscreen } = this.props\r\n const { conditionalComponents, headerProps, newmasterfieldslist, designprops } = options;\r\n const { navigateup, navigatedown, historyurl } = headerProps ? headerProps : {}\r\n const { results, displayalert } = this.state\r\n const { isedited } = this.state;\r\n return (\r\n <Fragment >\r\n {this.state.results && <Fragment>\r\n <FormHeader savebutton={(isedited === false && !newmasterfieldslist) ? false : true} isedited={isedited} editbutton={(isedited === false && !newmasterfieldslist) ? true : false} onFullScreen={onFullScreen} onExitFullScreen={onExitFullScreen} fullscreen={fullscreen} exitfullscreen={exitfullscreen} onNextItemClick={onNextItemClick} onPrevItemClick={onPrevItemClick} duplicatebutton={false}\r\n handleEdit={this.customhandleedit} handleSave={this.handleSave} breadcrumbs={headerProps.breadcrumbs} backbutton={headerProps.backbutton} handleBack={this.handleBack} designprops={designprops} historyurl={historyurl} navigateup={navigateup} navigatedown={navigatedown} iseditduplicate={this.state.isduplicate} rowrenderedslide={this.props.rowrenderedslide} />\r\n {results && results.IsSystem === \"Y\" && displayalert && <CustomAlert isAction={true}\r\n message={'This is a System field. Do you want to edit ?'} severity={'Warning'}\r\n handleEdit={this.handleEdit} closeAlert={this.closeAlert} masterfield={true} />}\r\n <SubForm {...this.props} components={this.newcomponents} handleFieldChange={this.handleFieldChange} effects={this.effects} changedFieldName={this.state.changedFieldName} />\r\n {(results && (results['UIFieldTypeComponent'] === 'CB' || results['UIFieldTypeComponent'] === 'AC' || results['UIFieldTypeComponent'] === 'DS' || results['UIFieldTypeComponent'] === 'DM' || results['UIFieldTypeComponent'] === 'RB')) && this.state.showdomains && results['DomainKey'] && results['DomainKey'] !== '' &&\r\n <div className=\"col-sm-8 m-3\"><SimpleGrid gridFields={this.props.options.domainvaluesurl.gridFields} url={this.props.options.domainvaluesurl.url + results['DomainKey']} title=\"Look Up Information\" /></div>}\r\n </Fragment>}\r\n </Fragment>\r\n )\r\n\r\n }\r\n}\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage }, dispatch);\r\n}\r\n\r\nMasterFieldsList = connect(null, mapActions)(MasterFieldsList)\r\n\r\nexport default withRouter(MasterFieldsList)\r\n"," /** \r\n *********************************************************\r\n Description: Form for dynamically creating form fields.\r\n Required props: urls for getting the fields.\r\n limitations : N/A\r\n *********************************************************\r\n **/ \r\nimport React, { Component, Fragment } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport { requestApi } from '../../core/modules/form/utilities';\r\nimport SubForm from '../../core/modules/form/csubform';\r\nimport moment from 'moment';\r\nimport FormHeader from '../../core/modules/form/cformheader'\r\nimport SnackBar from '../../core/modules/viewport/snackbar'\r\nimport { withRouter } from 'react-router-dom';\r\n\r\n\r\nconst styles = theme => ({\r\n root: {\r\n width: '100%',\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\nconst applicationstatustransformProps = {\r\n name: 'Name',\r\n value: 'Value'\r\n}\r\n\r\n\r\n\r\nconst comptypes = {\r\n TB: {\r\n type: 'formtextbox', options: {\r\n\r\n }\r\n },\r\n TA: {\r\n type: 'formtextbox', options: {\r\n multiline: true\r\n }\r\n },\r\n N: {\r\n type: 'formtextbox', options: {\r\n\r\n }\r\n },\r\n DN: {\r\n type: 'formtextbox', options: {\r\n\r\n }\r\n },\r\n P: {\r\n type: 'formtextbox', options: {\r\n\r\n }\r\n },\r\n RB: {\r\n type: 'radio', options: {\r\n\r\n }\r\n },\r\n CB: {\r\n type: 'formcheckbox', options: {\r\n transformProps: {\r\n 'N': false,\r\n 'Y': true,\r\n 'false': 'N',\r\n 'true': 'Y'\r\n }\r\n }\r\n },\r\n C: {\r\n type: 'formtextbox', options: {\r\n\r\n }\r\n },\r\n D: {\r\n type: 'date', options: {\r\n\r\n }\r\n },\r\n T: {\r\n type: 'time', options: {\r\n\r\n }\r\n },\r\n DT: {\r\n type: 'datetime-local', options: {\r\n\r\n }\r\n },\r\n B: {\r\n type: 'formdropdown', options: {\r\n values: [\r\n {\r\n name: 'Yes',\r\n value: 'Y'\r\n },\r\n {\r\n name: 'No',\r\n value: 'N'\r\n }\r\n ]\r\n }\r\n },\r\n DS: {\r\n type: 'formdropdown', options: {\r\n\r\n }\r\n },\r\n DM: {\r\n type: 'formdropdown', options: {\r\n multiple: true\r\n }\r\n },\r\n RT: {\r\n type: 'editor', options: {\r\n\r\n }\r\n },\r\n CM: {\r\n type: 'dropdownwithadd', options: {\r\n }\r\n },\r\n CF: {\r\n type: 'formdropdown', options: {\r\n\r\n }\r\n },\r\n LB: {\r\n type: 'text', options: {\r\n\r\n }\r\n }\r\n}\r\nconst breadcrumbs = [\r\n { \"link\": \"Dashboard\", \"tab\": 'D', \"materialicon\": \"dashboard\", href: \"#\", className: 'eps-breadcrumb-item', class: 'text-light' },\r\n { \"link\": \"Records\", className: 'eps-breadcrumb-item ', \"materialicon\": \"assignment\", class: 'text-light' },\r\n { \"link\": \"Inspections\", \"materialicon\": \"settings_system_daydream\", className: 'eps-breadcrumb-item ', class: 'text-light' },\r\n { \"link\": \"Add/Edit Inspections\", \"materialicon\": \"edit\", className: 'eps-breadcrumb-item', class: 'text-light' }\r\n]\r\n\r\nclass ApplicationInspections extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.requiredFields = {}\r\n this.validations = {}\r\n this.extraProps = {}\r\n this.mapfieldnamestofieldkeys = {}\r\n this.initformControls = {}\r\n this.state = {\r\n results: null,\r\n opensnackbar: false,\r\n snackbarmessageType: '',\r\n snackbarmessage: '',\r\n changedFieldName: [],\r\n }\r\n }\r\n /** \r\n *********************************************************\r\n Description: Fetches the validations and gets the fields. formcontrols contains the field configuration. header object\r\n for updating or saving.\r\n Required props: Validationurl, AllFields.\r\n limitations : N/A\r\n *********************************************************\r\n **/ \r\n componentDidMount() {\r\n //const { ApplicationNumber } = this.props\r\n const { options, compmap } = this.props\r\n const { allurls } = options\r\n const { SitePermitTypesSites, SitePermitTypesValue, Validationurl, AllFields } = allurls\r\n const val = 'NC' + '#' + 'Commercial'\r\n const validationurl = Validationurl.get.url + encodeURIComponent(val);\r\n const read = {\r\n get: {\r\n url: AllFields.get.url,\r\n routeProps: {}\r\n }\r\n }\r\n const validations = {\r\n get: {\r\n url: validationurl\r\n }\r\n }\r\n const { routeid, routeid1 } = this.props.match.params\r\n const { allSectionFields, applicationstatus } = allurls\r\n Promise.all([requestApi(validations), requestApi({ get: { url: `${allSectionFields.get.url}/${routeid}/${routeid1}` } })]).then((values) => {\r\n\r\n const [allvalidations, results] = values\r\n let header = {}\r\n let formControls = {}\r\n\r\n\r\n const formvalues = this.transformIntoForms(results, 'inspectionfields', allvalidations)\r\n\r\n this.initformControls = formvalues.initformControls\r\n header = {\r\n ...header,\r\n ...formvalues.header\r\n }\r\n formControls = {\r\n ...formControls,\r\n ...formvalues.formControls\r\n }\r\n\r\n\r\n\r\n this.setState({\r\n section: formvalues.section,\r\n header: { ...header },\r\n formControls: formControls\r\n })\r\n })\r\n\r\n }\r\n /** \r\n *********************************************************\r\n Description: Used to convert all non-editable components to editable.Get all form field \r\n components and change its edit property to true and push it to changedFieldName.\r\n Required props: N/A \r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n handleEdit = () => {\r\n const { options } = this.props\r\n const { formControls } = this.state\r\n const formControlsKeys = Object.keys(formControls)\r\n let newformControls = {}\r\n formControlsKeys.forEach(each => {\r\n newformControls[each] = { ...formControls[each], edit: true }\r\n });\r\n this.setState({\r\n formControls: newformControls,\r\n changedFieldName: formControlsKeys.map(each => {\r\n return { ...formControls[each], edit: true }\r\n })\r\n })\r\n }\r\n\r\n /** \r\n *********************************************************\r\n Description:transforms into a format that is consumed by form to render the fields.\r\n Required props:fields, name\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n\r\n transformIntoForms = (fields, name, allvalidations) => {\r\n const { options } = this.props\r\n const { allurls } = options\r\n this[name] = {}\r\n let initformControls = {}\r\n let header = {}\r\n let formControls = {}\r\n this.requiredFields[name] = {}\r\n\r\n const section = {\r\n type: 'form',\r\n key: name,\r\n options: {\r\n name: name\r\n },\r\n components: fields.map(each => {\r\n const { UIFieldTypeComponent, FieldDescription, FieldName, FieldRowDisplayOrder, ...otherProps } = each\r\n const { FieldKey, Key, FieldValue, Id, IsLabel, IsHidden } = otherProps\r\n\r\n\r\n this.mapfieldnamestofieldkeys[FieldName] = FieldKey\r\n // this.validations[FieldKey] = allvalidations.filter(each => {\r\n // if (each.Type === 'R') { this.requiredFields[name][FieldKey] = true }\r\n // return each.Key === Key\r\n // })\r\n let datevalue\r\n if (UIFieldTypeComponent === 'D') datevalue = FieldValue ? moment(FieldValue, 'MM/DD/YYYY').format('YYYY-MM-DD') : '';\r\n if (UIFieldTypeComponent === 'DT') datevalue = FieldValue ? moment(FieldValue, 'MM/DD/YYYY hh:mm:ss').format('YYYY-MM-DD') : '';\r\n header[FieldKey] = FieldValue\r\n const value = (UIFieldTypeComponent === 'D' || UIFieldTypeComponent === 'DT') ? datevalue : each.FieldValue\r\n\r\n const compprops = { options: { ...otherProps, label: FieldName, edit: false, initialvalue: value, name: FieldName, row: FieldRowDisplayOrder }, type: comptypes[UIFieldTypeComponent].type, key: FieldKey, }\r\n\r\n initformControls[FieldName] = compprops\r\n formControls[FieldKey] = {\r\n name: FieldName,\r\n value: value,\r\n touched: 0,\r\n error: false,\r\n edit: false,\r\n edit: !(IsLabel === 'Y'),\r\n display: IsHidden === 'Y' ? 'd-none' : 'd-block',\r\n dropdownvalues: null,\r\n }\r\n return compprops\r\n })\r\n }\r\n return { section: section, initformControls: initformControls, header: header, formControls: formControls }\r\n\r\n }\r\n\r\n /** \r\n *********************************************************\r\n Description: Handles value for form fields to save in the headers object. Checks the type of the components, transforms the value and return it.\r\n Required props: value, checked, name\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n\r\n handleValue = (value, checked, name) => {\r\n const { transformProps, multiple, type } = this.initformControls[name] ? this.initformControls[name] : {}\r\n switch (type) {\r\n case 'formcheckbox':\r\n return transformProps ? (transformProps[checked] ? transformProps[checked] : checked) : checked\r\n case 'formdropdown':\r\n return multiple && Array.isArray(value) ? value.join(',') : value\r\n case 'date':\r\n return moment(value).format('MM/DD/YYYY')\r\n case 'datetime-local':\r\n return moment(value).format('MM/DD/YYYY hh:mm:ss')\r\n case 'formswitch':\r\n return transformProps ? (transformProps[checked] ? transformProps[checked] : checked) : checked\r\n default:\r\n return transformProps ? (transformProps[value] ? transformProps[value] : value) : value\r\n }\r\n }\r\n\r\n /** \r\n *********************************************************\r\n Description: Handles value changes to the field.\r\n Required props: event\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n handleFieldChange = (event) => {\r\n const { name, checked, type } = event.target\r\n let value = this.handleValue(event.target.value, checked, name)\r\n const fieldkey = this.mapfieldnamestofieldkeys[name]\r\n if (fieldkey) {\r\n this.setState({\r\n header: { ...this.state.header, [fieldkey]: value },\r\n formControls: { ...this.state.formControls, [fieldkey]: { ...this.state.formControls[fieldkey], value: value } },\r\n changedFieldName: [{ ...this.state.formControls[fieldkey], value: value }]\r\n\r\n })\r\n }\r\n\r\n }\r\n\r\n /** \r\n *********************************************************\r\n Description: handles saving the results.\r\n Required props: options.put or options.post\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n\r\n handleSave = () => {\r\n const { routeid, routeid1 } = this.props.match.params\r\n const { options } = this.props\r\n const { allurls, newapplicationinspection } = options\r\n const { updateInspection, newInspection } = allurls\r\n let save\r\n if (newapplicationinspection) {\r\n save = {\r\n post: {\r\n url: `${newInspection.post.url}/${routeid1}/${routeid}`\r\n }\r\n }\r\n }\r\n else {\r\n save = {\r\n put: {\r\n url: `${updateInspection.put.url}/${routeid1}/${routeid}`\r\n }\r\n }\r\n }\r\n\r\n requestApi(save, null, this.state.header).then(results => {\r\n console.log('saved----', results);\r\n this.setState({\r\n opensnackbar: true,\r\n snackbarmessage: 'Saved Successfully',\r\n snackbarmessageType: 'success'\r\n })\r\n }).catch(error => {\r\n error.then(err => {\r\n console.log(err);\r\n\r\n this.setState({\r\n opensnackbar: true,\r\n snackbarmessage: JSON.stringify(err),\r\n snackbarmessageType: 'error',\r\n })\r\n })\r\n })\r\n }\r\n\r\n /** \r\n *********************************************************\r\n Description: Handles alerts close.Alerts are closed after the user clicks the close button on the alert.\r\n Required props: N/A \r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n\r\n handleSnackBarClose = (event, reason) => {\r\n if (reason === 'clickaway') {\r\n return;\r\n }\r\n this.setState({ opensnackbar: false });\r\n };\r\n\r\n \r\n\r\n/** \r\n *********************************************************\r\n Description: Renders the components.Subform manages the layout of the component. Form sends the changed field values to subform to update the field values. Form header contains\r\n save and edit actions.\r\n Required props: N/A \r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n\r\n render() {\r\n const { results, section } = this.state\r\n const { compmap, options } = this.props\r\n console.log('this.state,this.requiredfirlds---', this.state, this.requiredFields)\r\n const { opensnackbar, snackbarmessage, snackbarmessageType } = this.state\r\n const { routeid, routeid1 } = this.props.match.params\r\n\r\n return (\r\n <div>\r\n <FormHeader breadcrumbs={breadcrumbs} key=\"headerapplications\" handleEdit={this.handleEdit} handleSave={this.handleSave} editbutton={true} savebutton={true} backbutton={true} />\r\n {\r\n section && <SubForm {...section} compmap={compmap} changedFieldName={this.state.changedFieldName} handleFieldChange={this.handleFieldChange} />\r\n }\r\n <SnackBar messageType={snackbarmessageType} message={snackbarmessage} open={opensnackbar} handleSnackBarClose={this.handleSnackBarClose} />\r\n\r\n </div>\r\n )\r\n }\r\n}\r\nApplicationInspections.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n};\r\nexport default withStyles(styles)(withRouter(ApplicationInspections));\r\n\r\n\r\n","import React, { Component } from 'react';\r\n\r\nclass Map extends Component {\r\n\r\n\r\n\r\n render() {\r\n\r\n return (\r\n <div className='col-sm-12'>\r\n map\r\n </div>\r\n )\r\n }\r\n}\r\n\r\n\r\n\r\n\r\nexport default Map;","import React, { Component, Fragment } from 'react';\r\nimport Icon from '@material-ui/core/Icon';\r\nimport Button from '@material-ui/core/Button';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport List from '@material-ui/core/List';\r\nimport ListItem from '@material-ui/core/ListItem';\r\nimport ListItemAvatar from '@material-ui/core/ListItemAvatar';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport { TextField, Typography, Fab } from '@material-ui/core';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport { validateTaxParcelTask } from '../../core/modules/map/eps/validatetaxparcelQuery';\r\nimport ConfirmDialog from '../../core/modules/form/cconfirmationpopup';\r\nconst styles = theme => ({\r\n // button: {\r\n // margin: theme.spacing(1),\r\n // },\r\n paper: {\r\n height: 500\r\n },\r\n leftIcon: {\r\n marginRight: theme.spacing(1),\r\n },\r\n rightIcon: {\r\n marginLeft: theme.spacing(1),\r\n }\r\n});\r\n\r\nclass CFormButton extends Component {\r\n state = {\r\n taxparcels: this.props.FieldValue ? this.props.FieldValue.split(\", \").map((each, index) => { return { name: each, id: index } }) : [],\r\n open: false,\r\n taxparcel: ''\r\n }\r\n\r\n validateDuplicateTacparcel = () => {\r\n let isexists = false;\r\n this.state.taxparcels.map(each => {\r\n if (each.name == this.state.taxparcel) {\r\n isexists = true;\r\n //return confirm(\"Tax parcel already exists\");\r\n }\r\n })\r\n return isexists;\r\n }\r\n addTaxParcel = () => {\r\n console.log(\"--in add tax parcel---\");\r\n console.log(this.state.taxparcel);\r\n //check if this taxparcel exists in the list of taxparcels\r\n let isexistsduplicate = this.validateDuplicateTacparcel();\r\n if (isexistsduplicate) {\r\n // confirm(\"Tax parcel already exists\");\r\n this.setState({ confirmClickedEvent: true, message: \"Tax parcel already exists .You can not add this taxparcel again.\" });\r\n }\r\n else {\r\n this.validateTaxparcel().then(result => {\r\n if (result.taxParcelFlag) {\r\n this.setState({\r\n taxparcels: this.state.taxparcels.concat({ name: this.state.taxparcel, id: this.state.taxparcels.length }),\r\n taxparcel: ''\r\n })\r\n }\r\n }\r\n ).catch(ex => console.log(ex));\r\n }\r\n\r\n }\r\n\r\n validateTaxparcel = () => {\r\n let taxparcelTosend = this.state.taxparcel.split('').join('%');//531-8.00-15.01\r\n let site = \"Sussex\"\r\n let queryexpression = \"PIN like('\" + taxparcelTosend + \"') \"; //and COUNTY = '\" + site + \"'\r\n return new Promise((resolve, reject) => {\r\n\r\n validateTaxParcelTask(this.props.options.tasks, queryexpression, this.state.taxparcel).then(\r\n response => {\r\n console.log(\"TaxParcelTask:: \", response);\r\n resolve(response);\r\n },\r\n error => {\r\n console.log(error);\r\n reject({ \"error\": error });\r\n });\r\n });\r\n }\r\n\r\n handleValue = (e) => {\r\n this.setState({\r\n taxparcel: e.target.value\r\n })\r\n }\r\n\r\n deleteTaxParcel = (id) => {\r\n this.setState({\r\n taxparcels: this.state.taxparcels.filter(each => each.id !== id).map((each, index) => {\r\n const { name, id } = each\r\n return { name: name, id: index }\r\n })\r\n })\r\n\r\n }\r\n\r\n openDialog = () => {\r\n const { edit } = this.props\r\n if (edit !== false) this.setState({\r\n open: true\r\n })\r\n }\r\n\r\n handleClose = () => {\r\n this.setState({\r\n open: false\r\n })\r\n }\r\n\r\n\r\n handleClear = () => {\r\n this.setState({\r\n taxparcels: []\r\n })\r\n }\r\n\r\n\r\n handleSave = () => {\r\n console.log()\r\n this.props.addTaxParcels(this.state.taxparcels.map(each => each.name).join(', '), this.state.taxparcels)\r\n this.closeDialog()\r\n }\r\n\r\n closeDialog = () => {\r\n this.setState({\r\n open: false\r\n })\r\n }\r\n\r\n\r\n\r\n render() {\r\n const { classes } = this.props\r\n const { options, passer, type, edit, rules, components, handleFieldChange, value, error, touched, ...otherProps } = this.props;\r\n const { text, icon, color, disabled, href, size, variant, name, ...otherOptions } = options\r\n let iconname, iconColor, iconFontSize, iconposition\r\n if (icon) {\r\n iconname = icon.iconname\r\n iconColor = icon.iconColor\r\n iconFontSize = icon.iconFontSize\r\n }\r\n return (\r\n <Fragment>\r\n {edit &&\r\n\r\n < Fab size=\"small\" color=\"secondary\" aria-label=\"add\" onClick={this.openDialog}>\r\n <Tooltip title=\"Add tax Parcels\"><AddIcon /></Tooltip>\r\n </Fab>\r\n }\r\n {\r\n <Dialog onClose={this.handleClose} open={this.state.open} fullWidth={true} maxWidth='sm' >\r\n <AppBar position=\"static\" color='secondary'>\r\n <Toolbar variant=\"dense\">\r\n <Typography>\r\n TaxParcels\r\n </Typography>\r\n <div className='flex-grow-1' />\r\n <i className=\"\" onClick={this.closeDialog} >\r\n <IconButton color=\"inherit\">\r\n <CloseIcon fontSize=\"small\" />\r\n </IconButton>\r\n </i>\r\n </Toolbar>\r\n </AppBar>\r\n <DialogContent className={classes.paper}>\r\n <TextField\r\n name='taxparcel'\r\n value={this.state.taxparcel}\r\n onChange={this.handleValue}\r\n />\r\n <Button\r\n color='primary'\r\n variant='contained'\r\n name='addtaxparcel'\r\n onClick={this.addTaxParcel}\r\n className=\"ml-2\"\r\n >Add</Button>\r\n <div>\r\n <List>\r\n {this.state.taxparcels.map(each => {\r\n const { name, id } = each\r\n return <ListItem key={id}>\r\n {name}\r\n <i onClick={() => this.deleteTaxParcel(id)} >\r\n <IconButton color=\"inherit\">\r\n <CloseIcon fontSize=\"small\" />\r\n </IconButton>\r\n </i>\r\n </ListItem>\r\n })}\r\n </List>\r\n <Button\r\n color='primary'\r\n variant='contained'\r\n name='addtaxparcel'\r\n onClick={this.handleClear}\r\n >Clear</Button>\r\n <Button\r\n color='primary'\r\n variant='contained'\r\n name='addtaxparcel'\r\n onClick={this.handleSave}\r\n className=\"ml-2\"\r\n >Save</Button>\r\n </div>\r\n </DialogContent>\r\n </Dialog>\r\n }\r\n {\r\n this.state.confirmClickedEvent && <ConfirmDialog title=\"Tax Parcel Validation\" description={this.state.message}\r\n onSubmit={() => this.setState({ confirmClickedEvent: false })} onClose={() => () => this.setState({ confirmClickedEvent: false })} ></ConfirmDialog>\r\n }\r\n </Fragment >\r\n\r\n )\r\n\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(CFormButton);\r\n\r\n\r\n\r\n\r\n\r\n\r\n/**\r\n * {\r\n * type:'button',\r\n * options:{\r\n * text:'alarm',\r\n * icon:'alarm',\r\n * button:''\r\n * },\r\n * defaults:{\r\n * theme:'default',\r\n * custom: false\r\n * }\r\n * }\r\n */","import { loadModules } from 'esri-loader';\r\nimport { QueryTask } from '../util/queryTask';\r\n\r\n\r\n\r\nexport function validateTaxParcelTask(config, queryexpression, parcelId) {\r\n return new Promise((resolve, reject) => {\r\n if (!loadModules) {\r\n reject('TaxParcelTask: ArcGIS API is not loaded');\r\n return;\r\n }\r\n\r\n if (config && config.TaxParcels) {\r\n if (queryexpression != null && queryexpression != \"\")\r\n config.TaxParcels.queryExpression = queryexpression;\r\n config.spatialReference = 4326;\r\n console.log('spatialReference here......4326')\r\n if (config.TaxParcels.queryExpression == null || config.TaxParcels.queryExpression == \"\" || config.TaxParcels.queryExpression == \"1!=1\") {\r\n resolve({ \"Message\": \"Invalid Expression\" });\r\n } else {\r\n QueryTask(config.TaxParcels, config.TaxParcels.queryExpression, config.spatialReference).then(\r\n response => {\r\n let parcelFeatures = response.features\r\n if (parcelFeatures) {\r\n console.log(\"-----------tax parcels are available here-----------\")\r\n if (parcelFeatures.length >= 1) {\r\n let FinalPIN = null;\r\n let ParcelIDwithoutsplchar = parcelId.replace(/[^\\w\\s]/gi, '');\r\n for (let i = 0; i <= parcelFeatures.length; i++) {\r\n if (parcelFeatures[i] != undefined) {\r\n let PINwithoutsplchar = parcelFeatures[i].attributes.PIN.replace(/[^\\w\\s]/gi, '');\r\n //console.log(PINwithoutsplchar);\r\n if (ParcelIDwithoutsplchar == PINwithoutsplchar) {\r\n FinalPIN = PINwithoutsplchar;\r\n let grpcentroid = parcelFeatures[i].geometry.centroid;\r\n console.log(grpcentroid);\r\n console.log(\"--center is here---\")\r\n resolve({ \"taxParcelFlag\": true, \"grpcentroid\": grpcentroid, \"hidPIN\": parcelFeatures[i].attributes.PIN });\r\n\r\n }\r\n }\r\n }\r\n if (ParcelIDwithoutsplchar !== FinalPIN) {\r\n //---correct: there is no confirm function\r\n // let r = confirm(\"Tax Parcel ID entered is not valid. Do you want to override the validation?\", true);\r\n if (true) {\r\n resolve({ \"taxParcelFlag\": true, \"hidPIN\": parcelId });\r\n return;\r\n } else {\r\n resolve({ \"taxParcelFlag\": false });\r\n return;\r\n }\r\n }\r\n\r\n }\r\n else {\r\n //let r = confirm(\"Tax Parcel ID entered is not valid. Do you want to override the validation?\",true);\r\n if (true) {\r\n resolve({ \"taxParcelFlag\": true });\r\n } else {\r\n resolve({ \"taxParcelFlag\": false });\r\n }\r\n }\r\n\r\n }\r\n else {\r\n resolve({ \"Message\": \"Tax Parcels not found\" });\r\n }\r\n },\r\n error => {\r\n console.log(error);\r\n reject({ \"error\": error });\r\n }\r\n );\r\n }\r\n }\r\n });\r\n};\r\n\r\n","import React, { Component, Fragment } from 'react'\r\nimport DualListBox from '../../core/modules/form/cmultiduallistbox'\r\nimport Header from '../../core/modules/form/cformheader'\r\nimport { Typography } from '@material-ui/core'\r\n\r\nclass UsersNContacts extends Component {\r\n state = {\r\n save: false\r\n }\r\n\r\n handleSave = () => {\r\n this.setState({\r\n save: true\r\n })\r\n this.refs.child.onhandleSave();\r\n }\r\n\r\n // getValueFromChild = (value) => {\r\n // console.log('value usersncontacts',value)\r\n // }\r\n\r\n render() {\r\n const { options, components, compmap } = this.props\r\n const { headerProps } = options\r\n\r\n return (\r\n <Fragment>\r\n <Header {...headerProps} handleSave={this.handleSave} />\r\n {components.map(each => {\r\n const { type, options } = each\r\n const { title } = options\r\n const EachComp = compmap[type]\r\n return <Fragment>\r\n <Typography className=\"mt-5\">\r\n {title}\r\n </Typography>\r\n <EachComp {...each} ref=\"child\" save={this.state.save} />\r\n </Fragment>\r\n })}\r\n </Fragment>\r\n )\r\n }\r\n\r\n}\r\n\r\nexport default UsersNContacts","import React, { Component, Fragment } from 'react';\r\nimport FormTextBox from '../../core/modules/form/cformtextbox'\r\nimport FormDropDown from '../../core/modules/form/cformdropdown'\r\n\r\n\r\nclass EPSNotifications extends Component {\r\n state = {\r\n notificationtype: 1,\r\n module: 1\r\n }\r\n handleFieldChange = (event) => {\r\n const { name, value } = event.target\r\n }\r\n render() {\r\n const { notificationtype, module } = this.state\r\n return (\r\n <form>\r\n <div className=\"row\">\r\n <div className=\"col-sm-6\">\r\n <FormTextBox label='Notification name' handleFieldChange={this.handleFieldChange} name='notificationname' />\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-sm-6\">\r\n <FormTextBox label='Description' handleFieldChange={this.handleFieldChange} name='description' />\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-sm-6\">\r\n <FormDropDown dropdownvalues={notificationvalues} label='Notification Type' value={notificationtype} name='notificationtype' />\r\n </div>\r\n </div>\r\n {(notificationtype === 1) &&\r\n <Fragment>\r\n <div className=\"row\">\r\n <div className=\"col-sm-6\">\r\n <FormDropDown dropdownvalues={modulevalues} label='Module' value={module} name='module' />\r\n </div>\r\n </div>\r\n {/* {(module !== 3) &&\r\n <Fragment>\r\n <div className=\"row\">\r\n <div className=\"col-sm-6\">\r\n <FormDropDown dropdownvalues={sitevalues} label='Site' value={site} name='site' />\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-sm-6\">\r\n <FormDropDown dropdownvalues={sitepermittypevalues} label='Application Type' value={sitepermittype} name='sitepermittype' />\r\n </div>\r\n </div>\r\n </Fragment>\r\n } */}\r\n {/* <div className=\"row\">\r\n <div className=\"col-sm-6\">\r\n <FormDropDown dropdownvalues={eventonvalues} label='Event On:' value={site} name='eventon' />\r\n </div>\r\n </div> */}\r\n </Fragment>\r\n }\r\n {/* <div className=\"row\">\r\n <div className=\"col-3\">\r\n <button type=\"button\">Sites</button>\r\n </div>\r\n <div className=\"col-3\">\r\n <button type=\"button\">recipients</button>\r\n </div>\r\n <div className=\"col-3\">\r\n <button type=\"button\">notification template</button>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-3\">\r\n <button type=\"button\">Sites</button>\r\n </div>\r\n <div className=\"col-3\">\r\n <button type=\"button\">recipients</button>\r\n </div>\r\n <div className=\"col-3\">\r\n <button type=\"button\">notification template</button>\r\n </div>\r\n <div className=\"col-3\">\r\n <button type=\"button\">notification template</button>\r\n </div>\r\n </div> */}\r\n </form>\r\n )\r\n\r\n }\r\n}\r\n\r\n\r\nexport default EPSNotifications\r\n\r\nconst notificationvalues = [\r\n {\r\n name: 'Event Notificaton',\r\n value: 1,\r\n key: 'eventnotificaton'\r\n },\r\n {\r\n name: 'Scheduled Notificaton',\r\n value: 2,\r\n key: 'schedulednotificaton'\r\n }\r\n]\r\n\r\nconst modulevalues = [\r\n {\r\n name: 'Entrance Permit Applications',\r\n value: 1,\r\n key: 'entrancepermitapplications'\r\n },\r\n {\r\n name: 'Records',\r\n value: 2,\r\n key: 'entrancepermits'\r\n },\r\n {\r\n name: 'Entrance Permit Owners',\r\n value: 3,\r\n key: 'entrancepermitowners'\r\n }\r\n]\r\n\r\nconst eventonvalues = {\r\n applications: [\r\n {\r\n name: 'Application Status Change',\r\n value: 1,\r\n key: 'applicationstatuschange'\r\n },\r\n {\r\n name: 'Workflow Status Change',\r\n value: 2,\r\n key: 'workflowstatuschange'\r\n },\r\n {\r\n name: 'Field Value Change',\r\n value: 3,\r\n key: 'fieldvaluechange'\r\n },\r\n {\r\n name: 'Workflow due date',\r\n value: 4,\r\n key: 'workflowduedate'\r\n },\r\n {\r\n name: 'Notes Change',\r\n value: 5,\r\n key: 'noteschange'\r\n },\r\n {\r\n name: 'Attachments Change',\r\n value: 6,\r\n key: 'attachmentschange'\r\n },\r\n {\r\n name: 'Inspections Change',\r\n value: 7,\r\n key: 'inspectionschange'\r\n },\r\n {\r\n name: 'Images Change',\r\n value: 8,\r\n key: 'Imageschange'\r\n },\r\n // {\r\n // name: 'Shared discussions Change',\r\n // value: 9,\r\n // key: 'shareddiscussionschange'\r\n // },\r\n {\r\n name: 'Notices Change',\r\n value: 10,\r\n key: 'noticeschange'\r\n },\r\n {\r\n name: 'Payment Slips Change',\r\n value: 11,\r\n key: 'paymentslipschange'\r\n }\r\n ],\r\n permits: [\r\n {\r\n name: 'Permit Status Change',\r\n value: 1,\r\n key: 'Permitstatuschange'\r\n },\r\n {\r\n name: 'Sign Status Change',\r\n value: 2,\r\n key: 'Signstatuschange'\r\n },\r\n {\r\n name: 'Construction Window',\r\n value: 3,\r\n key: 'constructionwindow'\r\n },\r\n {\r\n name: 'Cancellation Work Flow Status Change',\r\n value: 4,\r\n key: 'cancellationworkflow'\r\n },\r\n {\r\n name: 'Field Value Change',\r\n value: 5,\r\n key: 'fieldvaluechange'\r\n },\r\n {\r\n name: 'Notes Change',\r\n value: 6,\r\n key: 'noteschange'\r\n },\r\n {\r\n name: 'Attachments Change',\r\n value: 7,\r\n key: 'Attachmentschange'\r\n },\r\n {\r\n name: 'Inspections Change',\r\n value: 8,\r\n key: 'Inspectionschange'\r\n },\r\n {\r\n name: 'Images Change',\r\n value: 9,\r\n key: 'imageschange'\r\n },\r\n // {\r\n // name: 'Shared Discussions Change',\r\n // value: 10,\r\n // key: 'shareddiscussionschange'\r\n // },\r\n {\r\n name: 'Notices Change',\r\n value: 11,\r\n key: 'noticeschange'\r\n },\r\n {\r\n name: 'Invoice Change',\r\n value: 12,\r\n key: 'invoiceschange'\r\n },\r\n {\r\n name: 'Prebills Change',\r\n value: 13,\r\n key: 'prebillschange'\r\n }\r\n ],\r\n owners: [\r\n {\r\n name: 'Owner Status Change',\r\n value: 1,\r\n key: 'ownerstatuschange'\r\n },\r\n {\r\n name: 'Field Value Change',\r\n value: 2,\r\n key: 'fieldvaluechange'\r\n },\r\n {\r\n name: 'Notes Change',\r\n value: 3,\r\n key: 'noteschange'\r\n },\r\n {\r\n name: 'Attachment Change',\r\n value: 4,\r\n key: 'attachmentchange'\r\n },\r\n {\r\n name: 'Name Change Applications Change',\r\n value: 5,\r\n key: 'namechangeapplicationchange'\r\n },\r\n {\r\n name: 'Invoices Change',\r\n value: 6,\r\n key: 'invoiceschange'\r\n },\r\n {\r\n name: 'Pre-Bills Change',\r\n value: 7,\r\n key: 'prebillschange'\r\n },\r\n ]\r\n}\r\n","/**\r\n *********************************************************\r\n Description: Handles passing the settings from sections and fields or inspections to the form component.\r\n form component manages the state and returns the changed state.\r\n Required props: N/A\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n\r\nimport React, { Component, Fragment } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport FormContainer from '../../core/modules/form/cform'\r\nimport SlidingButton from '../../core/modules/form/cslidingpage'\r\nimport Button from '@material-ui/core/Button';\r\nimport FormDropDown from '../../core/modules/form/cformdropdown'\r\nimport SaveIcon from '@material-ui/icons/Save';\r\nimport Fab from '@material-ui/core/Fab';\r\n\r\nconst dropdowntransformProps = {\r\n name: 'Name',\r\n value: 'SectionId'\r\n}\r\n\r\nclass SitePermitsSectionsFields extends Component {\r\n\r\n state = {\r\n newsectiondropdown: ''\r\n }\r\n\r\n handleFieldChange = (event) => {\r\n const { value, name } = event.target;\r\n const { availableSections } = this.props;\r\n\r\n let selectedsection = {}\r\n if (availableSections && Array.isArray(availableSections) && availableSections.length > 0) {\r\n selectedsection = availableSections.filter((e, index) => {//.slice(1) Removed as First selected section is deleted resulting undefin or no name in section and fields\r\n return e.SectionId === value;\r\n })\r\n }\r\n this.setState({\r\n [name]: value,\r\n selectedsection: selectedsection[0]\r\n })\r\n }\r\n\r\n\r\n\r\n render() {\r\n const { components, options, err, compmap, selectedParentSection, sectionsettings, fieldsettings, togglebackslider, handleBackSlider, opensection, openfield, isNewSection, sectionData, availableSections } = this.props\r\n const { settings } = options\r\n const { newsectiondropdown, selectedsection } = this.state\r\n return (\r\n <Fragment>\r\n\r\n {\r\n opensection && !isNewSection && <SlidingButton {...settings.section} key='sectionsettings' togglebackslider={togglebackslider} handleBackSlider={handleBackSlider} >\r\n {settings.section.items.map(each => {\r\n const { options, type, key } = each\r\n const EachComp = compmap[type]\r\n return <EachComp compmap={compmap} key={key} errfieldnames={err} errors={err ? true : false} {...each} getState={(res) => this.props.getState(res, 'section')} results={sectionsettings} />\r\n })\r\n }\r\n </SlidingButton>\r\n\r\n }\r\n {\r\n opensection && isNewSection && <SlidingButton {...settings.section} key='newsectionsettings' togglebackslider={togglebackslider} handleBackSlider={handleBackSlider} >\r\n <div className=\"col-sm-12\">\r\n {selectedsection && <Fab className=\"float-right p-1\" title=\"Save Sections\" size=\"small\" color=\"secondary\" aria-label=\"save\"\r\n onClick={(e) => { this.setState({ selectedsection: null }, () => this.props.OnAddNewSection(e, sectionsettings, selectedParentSection)) }}>\r\n <SaveIcon />\r\n </Fab>}\r\n <div className=\"clear-fix\" />\r\n <div className=\"text-primary p-2\">Please select the below dropdown </div>\r\n\r\n\r\n <FormDropDown label=\"Select\" name='newsectiondropdown' value={newsectiondropdown || \"\"} dropdownvalues={availableSections} transformProps={dropdowntransformProps} handleFieldChange={this.handleFieldChange} />\r\n {newsectiondropdown && settings.section.items.map(each => {\r\n const { options, type, key } = each\r\n const EachComp = compmap[type]\r\n return <EachComp compmap={compmap} key={key} {...each} getState={(res) => this.props.getState(res, 'newsection', selectedsection)} results={this.state.selectedsection} />\r\n })\r\n }\r\n </div>\r\n </SlidingButton>\r\n\r\n }\r\n {\r\n openfield && <SlidingButton {...settings.field} key='fieldsettings' togglebackslider={togglebackslider} handleBackSlider={handleBackSlider} >\r\n {settings.field.items.map(each => {\r\n const { options, type, key } = each\r\n const EachComp = compmap[type]\r\n return <EachComp compmap={compmap} key={key} {...each} getState={(res) => this.props.getState(res, 'field', sectionsettings)} results={fieldsettings} />\r\n })\r\n }\r\n </SlidingButton>\r\n }\r\n </Fragment>\r\n )\r\n }\r\n\r\n\r\n}\r\n\r\nexport default withRouter(SitePermitsSectionsFields)","import MaterialTable from \"@material-table/core\";\r\nimport Drawer from '@material-ui/core/Drawer';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Select from '@material-ui/core/Select';\r\nimport { makeStyles } from '@material-ui/core/styles';\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 React, { useCallback, useEffect, useState } from 'react';\r\nimport { useParams } from 'react-router-dom';\r\nimport Header from '../../controls/components/header';\r\nimport { createRequest, requestApi } from '../../controls/helpers/rest';\r\nimport { getEnvVariable } from \"../../../modules/environmentalList\";\r\n\r\n\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n drawer: {\r\n flexShrink: 0\r\n },\r\n dragger: {\r\n width: \"7px\",\r\n cursor: \"ew-resize\",\r\n padding: \"4px 0 0\",\r\n borderTop: \"1px solid #ddd\",\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n bottom: 0,\r\n zIndex: 100,\r\n // backgroundColor: \"#f4f7f9\"\r\n }\r\n}));\r\n\r\n\r\n\r\nconst defaultDrawerWidth = 900;\r\nconst minDrawerWidth = 700;\r\nconst maxDrawerWidth = window.innerWidth - 220;\r\nconst fullscreenwidth = window.innerWidth\r\n\r\nexport default function Editable({ sitePermitTypeAppStatusId, close, props, ModuleJSON }) {\r\n let params = useParams();\r\n const [dropdownlist, setdropdownlist] = useState([])\r\n const [templookup, settempdropdownlist] = useState({})\r\n const [data, setData] = useState([]);\r\n //drawer settings\r\n const [drawerWidth, setDrawerWidth] = useState((props && props.width == \"sm\" || props && props.width == \"xs\" || props && props.width == \"md\") ? fullscreenwidth : defaultDrawerWidth);\r\n const [fullscreen, setFullScreen] = useState(false)\r\n const [fullwidth, setFullWidth] = useState(fullscreenwidth)\r\n\r\n const handleMouseDown = e => {\r\n document.addEventListener(\"mouseup\", handleMouseUp, true);\r\n document.addEventListener(\"mousemove\", handleMouseMove, true);\r\n };\r\n\r\n const handleMouseUp = () => {\r\n document.removeEventListener(\"mouseup\", handleMouseUp, true);\r\n document.removeEventListener(\"mousemove\", handleMouseMove, true);\r\n };\r\n\r\n const handleMouseMove = useCallback(e => {\r\n let newWidth =\r\n document.body.offsetWidth - (e.clientX - document.body.offsetLeft);\r\n // const newWidth = e.clientX - document.body.offsetLeft;\r\n if (newWidth > minDrawerWidth && newWidth < maxDrawerWidth) {\r\n setDrawerWidth(newWidth);\r\n }\r\n }, []);\r\n //end drawer settings\r\n useEffect(() => {\r\n const read = ModuleJSON.get;\r\n Promise.all(read.map(each => requestApi(createRequest(each, {}, { ...params, sitePermitTypeAppStatusId })).catch(error => { return error; }))).then(res => {\r\n const [lookup, tempdata] = res;\r\n let tempLookup = {}\r\n lookup.map(each => {\r\n tempLookup[each.Id] = each.Name\r\n })\r\n setdropdownlist(lookup);\r\n if (tempdata && Array.isArray(tempdata) && tempdata.length > 0) {\r\n let finaltempdata = []\r\n tempdata.forEach(element => {\r\n element.IsInternalVisible = element.IsInternalVisible == 'Y' ? true : false\r\n element.IsMandatory = element.IsMandatory == 'Y' ? true : false\r\n element.IsExternalVisible = getEnvVariable(\"ModuleKey\") === \"WRS\" ? false : element.IsExternalVisible == 'Y' ? true : false\r\n element.IsExternalMandatory = getEnvVariable(\"ModuleKey\") === \"WRS\" ? false : element.IsExternalMandatory == 'Y' ? true : false\r\n finaltempdata.push(element);\r\n });\r\n setData(finaltempdata)\r\n }\r\n settempdropdownlist(tempLookup);\r\n }).catch(ex => {\r\n console.error(ex)\r\n })\r\n }, [])\r\n\r\n const handleSave = () => {\r\n let tempdata = data.map(each => {\r\n each.IsInternalVisible = each.IsInternalVisible ? 'Y' : 'N'\r\n each.IsMandatory = each.IsMandatory ? 'Y' : 'N'\r\n each.IsExternalVisible = getEnvVariable(\"ModuleKey\") === \"WRS\" ? 'N' :each.IsExternalVisible ? 'Y' : 'N'\r\n each.IsExternalMandatory = getEnvVariable(\"ModuleKey\") === \"WRS\" ? 'N' : each.IsExternalMandatory ? 'Y' : 'N'\r\n delete each.tableData\r\n return each\r\n })\r\n const read = ModuleJSON.addorupdate\r\n Promise.all(read.map(each => requestApi(createRequest(each, tempdata, { ...params, sitePermitTypeAppStatusId })).catch(error => { return error; }))).then(res => {\r\n console.log(\"Success\");\r\n }).catch(ex => {\r\n console.error(\"error\", ex)\r\n })\r\n }\r\n\r\n const addOnsByName = { addOnsByName: { back: { onClick: close }, save: { onClick: handleSave } } }\r\n const classes = useStyles();\r\n return (\r\n <Drawer anchor=\"right\" open={sitePermitTypeAppStatusId ? true : false}\r\n disableEnforceFocus={true}\r\n disableAutoFocus={true}\r\n PaperProps={{ style: { width: fullscreen ? fullwidth : drawerWidth } }}\r\n >\r\n <div onMouseDown={e => handleMouseDown(e)} className={classes.dragger} />\r\n <Header {...ModuleJSON['header']} {...addOnsByName} />\r\n <MaterialTable\r\n title={\"\"}\r\n columns={[\r\n {\r\n title: 'Name', field: ModuleJSON['id'], lookup: templookup, initialEditValue: '', validate: rowData => rowData[ModuleJSON['id']] === '' ? { isValid: false, helperText: 'Name is Required' } : true,\r\n editComponent: props => (\r\n <Select value={props.value || null} fullWidth onChange={(e) => props.onChange(e.target.value)}>\r\n <MenuItem value={''}>{'None'}</MenuItem>\r\n {dropdownlist && dropdownlist.map(each => {\r\n return <MenuItem key={each.Id.toString()} disabled={data.some(e => e[ModuleJSON['id']] === each.Id) ? true : false}\r\n value={each['Id']}>{each.Name}</MenuItem>\r\n })}\r\n </Select>\r\n )\r\n },\r\n { title: 'Can Show', field: 'IsInternalVisible', type: 'boolean' },\r\n { title: 'Is Required', field: 'IsMandatory', type: 'boolean' },\r\n getEnvVariable(\"ModuleKey\") === \"WRS\" ? {} : { title: 'Can Show', field: 'IsExternalVisible', type: 'boolean' },\r\n getEnvVariable(\"ModuleKey\") === \"WRS\" ? {} : { title: 'Is Required', field: 'IsExternalMandatory', type: 'boolean' },\r\n ]}\r\n data={data}\r\n doubleHorizontalScroll={true}\r\n options={{\r\n search: false,\r\n paging: false,\r\n emptyRowsWhenPaging: true,\r\n addRowPosition: 'first',\r\n actionsColumnIndex: -1\r\n }}\r\n editable={{\r\n onRowAdd: newData =>\r\n new Promise((resolve, reject) => {\r\n setTimeout(() => {\r\n setData([...data, newData]);\r\n resolve();\r\n }, 1000)\r\n }),\r\n onRowUpdate: (newData, oldData) =>\r\n new Promise((resolve, reject) => {\r\n setTimeout(() => {\r\n const dataUpdate = [...data];\r\n const index = oldData.tableData.id;\r\n dataUpdate[index] = newData;\r\n setData([...dataUpdate]);\r\n resolve();\r\n }, 1000)\r\n }),\r\n onRowDelete: oldData =>\r\n new Promise((resolve, reject) => {\r\n setTimeout(() => {\r\n const dataDelete = [...data];\r\n const index = oldData.tableData.id;\r\n dataDelete.splice(index, 1);\r\n setData([...dataDelete]);\r\n // handleSave([...dataDelete])\r\n resolve()\r\n }, 1000)\r\n }),\r\n }}\r\n components={{\r\n Header: props => {\r\n return (\r\n <TableHead style={{ backgroundColor: 'black' }}>\r\n <TableRow>\r\n <TableCell style={{ color: 'white' }} rowSpan={2}>Name</TableCell>\r\n <TableCell style={{ color: 'white' }} colSpan={2} align=\"center\">\r\n Internal\r\n </TableCell>\r\n {getEnvVariable(\"ModuleKey\") != \"WRS\" && <TableCell style={{ color: 'white' }} colSpan={2} align=\"center\">\r\n External\r\n </TableCell>}\r\n {getEnvVariable(\"ModuleKey\") != \"WRS\" && <TableCell style={{ color: 'white' }} rowSpan={2}>Actions</TableCell>}\r\n </TableRow>\r\n <TableRow>\r\n <TableCell style={{ color: 'white' }} align=\"center\">Can Show</TableCell>\r\n <TableCell style={{ color: 'white' }} align=\"center\">Is Required</TableCell>\r\n {getEnvVariable(\"ModuleKey\") != \"WRS\" && <TableCell style={{ color: 'white' }} align=\"center\">Can Show</TableCell>}\r\n {getEnvVariable(\"ModuleKey\") !== \"WRS\" &&<TableCell style={{ color: 'white' }} align=\"center\">Is Required</TableCell>}\r\n </TableRow>\r\n </TableHead>\r\n );\r\n },\r\n }}\r\n />\r\n </Drawer>\r\n )\r\n}","import * as React from \"react\";\r\nimport AttachmentIcon from '@material-ui/icons/AttachFile';\r\nimport NoticeIcon from '@material-ui/icons/Note';\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport GetAppIcon from '@material-ui/icons/GetApp';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport SaveIcon from '@material-ui/icons/Save';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport { getEnvVariable } from \"../../../modules/environmentalList\";\r\n\r\nexport const MyCommandCell = props => {\r\n const { dataItem, handleEdit, handleSave, handleDelete, setTemplateSettingsOpen, subGrid } = props;\r\n\r\n return <td className=\"k-command-cell\">\r\n {!dataItem.inEdit && <IconButton title=\"Edit\" color=\"primary\" component=\"span\" onClick={() => handleEdit(dataItem)}>\r\n <EditIcon />\r\n </IconButton>}\r\n {dataItem.inEdit && <IconButton title=\"Save\" color=\"primary\" component=\"span\" onClick={() => handleSave(dataItem)}>\r\n <SaveIcon />\r\n </IconButton>}\r\n <IconButton title=\"Delete\" color=\"primary\" component=\"span\" onClick={(e) => handleDelete(dataItem.Id)}>\r\n <DeleteIcon />\r\n </IconButton>\r\n <IconButton title=\"Attachment Settings\" color=\"primary\" component=\"span\" onClick={() => subGrid({ id: dataItem.Id, name: 'attachments' })}>\r\n <AttachmentIcon />\r\n </IconButton>\r\n {/* <IconButton title=\"Notice Settings\" color=\"primary\" component=\"span\" onClick={() => subGrid({ id: dataItem.Id, name: 'notices' })}>\r\n <NoticeIcon />\r\n </IconButton>*/}\r\n {getEnvVariable('ModuleKey') !== 'AMES' && <IconButton title=\"Template Settings\" color=\"primary\" component=\"span\" onClick={() => setTemplateSettingsOpen(dataItem.Id)}>\r\n <GetAppIcon />\r\n </IconButton>}\r\n </td >;\r\n};","import Drawer from '@material-ui/core/Drawer';\r\n//import TemplateSettings from '../sitepermittypes/templatesettings';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport React, { useCallback, useEffect, useState } from 'react';\r\nimport { useParams } from 'react-router-dom';\r\nimport { getEnvVariable } from '../../../modules/environmentalList';\r\nimport DropDown from '../../controls/components/dropdown';\r\nimport Header from '../../controls/components/header';\r\nimport Switch from '../../controls/components/switch';\r\nimport { PostData } from '../../controls/helpers/requests';\r\nimport { createRequest, requestApi } from '../../controls/helpers/rest';\r\n\r\nconst TemplateSettingsheader = {\r\n name: \"header\",\r\n type: 'header',\r\n title: 'Template Settings for Application Status',\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": \"Template Settings for Permit Status\", \"materialicon\": \"assignment_turned_in\", className: 'eps-breadcrumb-item ', class: 'text-light' },\r\n ]\r\n }\r\n ],\r\n actions: [\r\n {\r\n type: 'icon',\r\n icon: 'back',\r\n name: 'back',\r\n hideon: 'back',\r\n hidevalue: false\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'save',\r\n name: 'save',\r\n hideon: 'save',\r\n hidevalue: false\r\n },\r\n ],\r\n}\r\n\r\nconst defaultDrawerWidth = 900;\r\nconst minDrawerWidth = 700;\r\nconst maxDrawerWidth = window.innerWidth - 220;\r\nconst fullscreenwidth = window.innerWidth\r\nconst checkwidth = 960\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n drawer: {\r\n flexShrink: 0\r\n },\r\n dragger: {\r\n width: \"7px\",\r\n cursor: \"ew-resize\",\r\n padding: \"4px 0 0\",\r\n borderTop: \"1px solid #ddd\",\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n bottom: 0,\r\n zIndex: 100,\r\n // backgroundColor: \"#f4f7f9\"\r\n }\r\n}));\r\n\r\nexport default function TemplateSettings({ sitePermitTypeAppStatusId, closeTemplate, props }) {\r\n let params = useParams();\r\n const [appDownloadsHelperText, setAppDownloadsHelperText] = useState(null)\r\n const [permitDownloadsHelperText, setPermitDownloadsHelperText] = useState(null)\r\n const [data, setData] = useState([]);\r\n const [result, setResult] = useState({})\r\n const [dataexists, setDataExists] = useState(false)\r\n const [templatesettings, setTemplateSettings] = useState([])\r\n const [buttonsettings, setButtonsettings] = useState([])\r\n const [reload, setReload] = useState(false)\r\n\r\n\r\n //drawer settings\r\n const [drawerWidth, setDrawerWidth] = useState((props && props.width == \"sm\" || props && props.width == \"xs\" || props && props.width == \"md\") ? fullscreenwidth : defaultDrawerWidth);\r\n const [fullscreen, setFullScreen] = useState(false)\r\n const [fullwidth, setFullWidth] = useState(fullscreenwidth)\r\n\r\n\r\n\r\n const handleMouseDown = e => {\r\n document.addEventListener(\"mouseup\", handleMouseUp, true);\r\n document.addEventListener(\"mousemove\", handleMouseMove, true);\r\n };\r\n\r\n const handleMouseUp = () => {\r\n document.removeEventListener(\"mouseup\", handleMouseUp, true);\r\n document.removeEventListener(\"mousemove\", handleMouseMove, true);\r\n };\r\n\r\n const handleMouseMove = useCallback(e => {\r\n let newWidth =\r\n document.body.offsetWidth - (e.clientX - document.body.offsetLeft);\r\n // const newWidth = e.clientX - document.body.offsetLeft;\r\n if (newWidth > minDrawerWidth && newWidth < maxDrawerWidth) {\r\n setDrawerWidth(newWidth);\r\n }\r\n }, []);\r\n //end drawer settings\r\n useEffect(() => {\r\n const read = [\r\n {\r\n url: getEnvVariable('AppDownloadAPI') + `/Template/All/${getEnvVariable('ModuleKey')}`,\r\n type: 'get'\r\n },\r\n {\r\n url: getEnvVariable('AdminConfig') + `/api/SitePermitTypeTemplateSettings/` + params.Id + '/' + sitePermitTypeAppStatusId + `/GetAll`,\r\n type: 'get'\r\n }\r\n //add another request\r\n ]\r\n Promise.all(read.map(each => requestApi(createRequest(each, {})))).then(res => {\r\n const [buttonsettings, templatesettings] = res;\r\n setTemplateSettings(templatesettings)\r\n if (templatesettings.length > 0) {\r\n setResult(templatesettings[0]);\r\n }\r\n setButtonsettings(buttonsettings)\r\n })\r\n }, [])\r\n\r\n const handleFieldChange = (event, type, id) => {\r\n const { name, value } = event.target;\r\n if (name === 'AppDownloadsId') {\r\n //setAppDownloadDropdown(value);\r\n setAppDownloadsHelperText(null);\r\n }\r\n if (name === 'PermitDownloadsId') {\r\n //setPermitDownloadDropdown(value);\r\n setPermitDownloadsHelperText(null);\r\n }\r\n if (type === 'add') {\r\n result[name] = value;\r\n setResult(result)\r\n setReload(!reload)\r\n }\r\n else if (type === 'editdownloadtemplate') {\r\n data.map(final => {\r\n if (final.Id === id) {\r\n final[name] = value\r\n }\r\n })\r\n setData(data)\r\n setReload(!reload)\r\n }\r\n }\r\n\r\n const handleFieldValue = (event, type, id) => {\r\n const { name, checked } = event.target;\r\n if (name === \"IsApplicationDownload\" && checked == false) {\r\n //setAppDownloadToggle(checked)\r\n setAppDownloadsHelperText(null);\r\n }\r\n if (name === \"IsPermitDownload\" && checked == false) {\r\n //setPermitDownloadToggle(checked)\r\n setPermitDownloadsHelperText(null);\r\n }\r\n if (type === 'add') {\r\n result[name] = checked ? 'Y' : 'N';\r\n data && data.length > 0 && data.map(final => {\r\n final[name] = 'N'\r\n })\r\n setData(data)\r\n setResult(result)\r\n setReload(!reload)\r\n }\r\n else {\r\n data.map(final => {\r\n if (final.Id === id) {\r\n final[name] = checked ? 'Y' : 'N';\r\n }\r\n else final[name] = checked ? 'N' : final[name]\r\n })\r\n setData(data)\r\n setReload(!reload)\r\n }\r\n }\r\n\r\n const handleSave = () => {\r\n let tempdata = result;\r\n result.IsApplicationDownload = result.IsApplicationDownload ? result.IsApplicationDownload : 'N';\r\n result.IsPermitDownload = result.IsPermitDownload ? result.IsPermitDownload : 'N';\r\n if (result.IsApplicationDownload == \"Y\" && result.AppDownloadsId == undefined) {\r\n setAppDownloadsHelperText(\"required\")\r\n }\r\n if (result.IsPermitDownload == \"Y\" && result.PermitDownloadsId == undefined) {\r\n setPermitDownloadsHelperText(\"required\")\r\n }\r\n if (result.AppDownloadsId != undefined) {\r\n result.AppDownloadsGroup = buttonsettings.filter(a => a.Id == result.AppDownloadsId)[0].Module\r\n }\r\n if (result.PermitDownloadsId != undefined) {\r\n result.PermitDownloadsGroup = buttonsettings.filter(a => a.Id == result.PermitDownloadsId)[0].Module\r\n }\r\n if (!(result.IsApplicationDownload == \"Y\" && result.AppDownloadsId == undefined) && !(result.IsPermitDownload == \"Y\" && result.PermitDownloadsId == undefined)) {\r\n let url = getEnvVariable('AdminConfig') + `/api/SitePermitTypeTemplateSettings/` + params.Id + '/' + sitePermitTypeAppStatusId + `/AddOrUpdate`\r\n PostData(url, result).then(res => {\r\n // setAdd(false);\r\n // handleTransision();\r\n })\r\n }\r\n }\r\n\r\n const addOnsByName = { addOnsByName: { back: { onClick: closeTemplate }, save: { onClick: handleSave } } }\r\n const classes = useStyles();\r\n return (\r\n <Drawer anchor=\"right\" open={sitePermitTypeAppStatusId ? true : false}\r\n disableEnforceFocus={true}\r\n disableAutoFocus={true}\r\n PaperProps={{ style: { width: fullscreen ? fullwidth : drawerWidth } }}\r\n >\r\n <div onMouseDown={e => handleMouseDown(e)} className={classes.dragger} />\r\n <Header {...TemplateSettingsheader} {...addOnsByName} />\r\n\r\n <div>\r\n <FormControl component=\"fieldset\" className=\"col-sm-4 pl-3 pt-3\">\r\n {reload}\r\n\r\n <DropDown name='AppDownloadsId' items={buttonsettings || []} label=\"Template\" value={(result && result.AppDownloadsId) || null} //otherProps={label= \"Template\"}\r\n error={appDownloadsHelperText ? true : false}\r\n handleFieldValue={(e) => handleFieldChange(e, \"add\")} extraProps={{\r\n transformProps: {\r\n label: 'FileName',\r\n value: 'Id'\r\n }\r\n }} />\r\n {appDownloadsHelperText && <FormHelperText error={true}>{appDownloadsHelperText}</FormHelperText>}\r\n <Switch label='Application Download' name=\"IsApplicationDownload\" value={result && result.IsApplicationDownload || null} handleFieldValue={(e) => handleFieldValue(e, \"add\")} extraProps={{\r\n transformProps: {\r\n \"Y\": true,\r\n \"N\": false,\r\n true: \"Y\",\r\n false: \"N\"\r\n }\r\n }} />\r\n\r\n <DropDown name='PermitDownloadsId' items={buttonsettings||[]} label=\"Template\" value={(result && result.PermitDownloadsId) || null}\r\n handleFieldValue={(e) => handleFieldChange(e, \"add\")} extraProps={{\r\n transformProps: {\r\n label: 'FileName',\r\n value: 'Id'\r\n }\r\n }} />\r\n {permitDownloadsHelperText && <FormHelperText error={true}>{permitDownloadsHelperText}</FormHelperText>}\r\n <Switch label='Permit Download' name=\"IsPermitDownload\" value={result && result.IsPermitDownload || null} handleFieldValue={(e) => handleFieldValue(e, \"add\")} extraProps={{\r\n transformProps: {\r\n \"Y\": true,\r\n \"N\": false,\r\n true: \"Y\",\r\n false: \"N\"\r\n }\r\n }} />\r\n </FormControl>\r\n </div>\r\n\r\n\r\n </Drawer>\r\n )\r\n}","import { Paper } from '@material-ui/core';\r\nimport Button from '@material-ui/core/Button';\r\nimport Fab from '@material-ui/core/Fab';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport DefaultSettings from '../../controls/components/settings';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport SaveIcon from '@material-ui/icons/Save';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport { groupBy } from '@progress/kendo-data-query';\r\nimport { setExpandedState, setGroupIds } from '@progress/kendo-react-data-tools';\r\nimport { Grid, GridColumn as Column } from \"@progress/kendo-react-grid\";\r\nimport { React, useCallback, useEffect, useState } from 'react';\r\nimport { useParams } from 'react-router-dom';\r\nimport { getEnvVariable } from '../../../modules/environmentalList';\r\nimport Checkbox from '../../controls/components/checkbox';\r\nimport DropDown from '../../controls/components/dropdown';\r\nimport TextBox from '../../controls/components/textbox';\r\nimport { createRequest, requestApi } from '../../controls/helpers/rest';\r\nimport Editable from './editable';\r\nimport { MyCommandCell } from \"./myCommandCell\";\r\nimport TemplateSettings from './templatesettings';\r\nimport AttachmentIcon from '@material-ui/icons/AttachFile';\r\nimport NoticeIcon from '@material-ui/icons/Note';\r\nimport GetAppIcon from '@material-ui/icons/GetApp';\r\n\r\nconst editField = \"inEdit\";\r\n\r\nconst JSON = {\r\n notices: {\r\n header: {\r\n name: \"header\",\r\n type: 'header',\r\n title: 'Status Settings',\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": \"Status Settings - Notices\", materialicon: 'note', className: 'eps-breadcrumb-item ', class: 'text-light' },\r\n ]\r\n }\r\n ],\r\n actions: [\r\n {\r\n type: 'icon',\r\n icon: 'back',\r\n name: 'back',\r\n hideon: 'back',\r\n hidevalue: false,\r\n title: 'Back'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'save',\r\n name: 'save',\r\n hideon: 'save',\r\n hidevalue: false,\r\n title: 'Save'\r\n },\r\n\r\n ],\r\n },\r\n id: 'NoticesTypeId',\r\n get: [{\r\n url: getEnvVariable('AdminConfig') + `/api/SitePermitTypesConfig/ConfigNoticeTypes/{Id}`,\r\n type: 'get',\r\n \"routeProps\": [\r\n {\r\n name: \"Id\",\r\n key: \"Id\",\r\n }\r\n ],\r\n },\r\n {\r\n url: getEnvVariable('AdminConfig') + `/api/SitePermitTypeNotices/{Id}/{sitePermitTypeAppStatusId}/GetAllNotices`,\r\n type: 'get',\r\n \"routeProps\": [\r\n {\r\n name: \"Id\",\r\n key: \"Id\",\r\n },\r\n {\r\n name: \"sitePermitTypeAppStatusId\",\r\n key: \"sitePermitTypeAppStatusId\",\r\n }\r\n ],\r\n },],\r\n addorupdate: [{\r\n url: getEnvVariable('AdminConfig') + `/api/SitePermitTypeNotices/{Id}/{sitePermitTypeAppStatusId}/AddOrUpdate`,\r\n type: 'post',\r\n \"routeProps\": [\r\n {\r\n name: \"Id\",\r\n key: \"Id\",\r\n },\r\n {\r\n name: \"sitePermitTypeAppStatusId\",\r\n key: \"sitePermitTypeAppStatusId\",\r\n }\r\n ],\r\n }]\r\n\r\n },\r\n\r\n attachments: {\r\n id: 'AttachmentTypeId',\r\n header: {\r\n name: \"header\",\r\n type: 'header',\r\n title: 'Status Settings',\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": \"Status Settings - Attachments\", materialicon: 'attach_file', className: 'eps-breadcrumb-item ', class: 'text-light' },\r\n ]\r\n }\r\n ],\r\n actions: [\r\n {\r\n type: 'icon',\r\n icon: 'back',\r\n name: 'back',\r\n hideon: 'back',\r\n hidevalue: false,\r\n title: 'Back'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'save',\r\n name: 'save',\r\n hideon: 'save',\r\n hidevalue: false,\r\n title: 'Save'\r\n },\r\n ],\r\n },\r\n get: [{\r\n url: getEnvVariable('AdminConfig') + `/api/SitePermitTypesConfig/{Id}/AttachmentTypes`,\r\n type: 'get',\r\n \"routeProps\": [\r\n {\r\n name: \"Id\",\r\n key: \"Id\",\r\n }\r\n ],\r\n }, {\r\n url: getEnvVariable('AdminConfig') + `/api/SitePermitTypeAttachments/{Id}/{sitePermitTypeAppStatusId}/GetAllAttachments`,\r\n type: 'get',\r\n \"routeProps\": [\r\n {\r\n name: \"Id\",\r\n key: \"Id\"\r\n },\r\n {\r\n name: \"sitePermitTypeAppStatusId\",\r\n key: \"sitePermitTypeAppStatusId\",\r\n }\r\n ],\r\n },],\r\n addorupdate: [{\r\n url: getEnvVariable('AdminConfig') + `/api/SitePermitTypeAttachments/{Id}/{sitePermitTypeAppStatusId}/AddOrUpdate`,\r\n type: 'post',\r\n \"routeProps\": [\r\n {\r\n name: \"Id\",\r\n key: \"Id\",\r\n },\r\n {\r\n name: \"sitePermitTypeAppStatusId\",\r\n key: \"sitePermitTypeAppStatusId\",\r\n }\r\n ],\r\n }]\r\n\r\n }\r\n}\r\n\r\n\r\nconst initialGroup = [{\r\n field: 'AppStatusLabel'\r\n},];\r\n\r\nconst processWithGroups = (data, group) => {\r\n const newDataState = groupBy(data, group);\r\n setGroupIds({\r\n data: newDataState,\r\n group: group\r\n });\r\n return newDataState;\r\n};\r\n\r\nexport default function ApplicationStatu(props) {\r\n const [status, setStatus] = useState([])\r\n const [reload, setReload] = useState(false)\r\n const [TemplateSettingsOpen, setTemplateSettingsOpen] = useState(null)\r\n const [edit, setEdit] = useState(false)\r\n const [add, setAdd] = useState(false)\r\n const [dataItem, setDataitem] = useState(null)\r\n const [search, setSearch] = useState(null)\r\n const [moduleJSON, setModuleJSon] = useState(null)\r\n //Grid Functions\r\n const [data, setData] = useState([]);\r\n const [orgData, setOrgData] = useState([]);\r\n const [group, setGroup] = useState(initialGroup);\r\n const [collapsedState, setCollapsedState] = useState([]);\r\n\r\n const params = useParams()\r\n\r\n useEffect(() => {\r\n const read = [\r\n {\r\n url: getEnvVariable('Admin') + `/api/ApplicationStatus/Active`,\r\n type: 'get'\r\n },\r\n ]\r\n Promise.all(read.map(each => requestApi(createRequest(each, {})))).then(res => {\r\n const [active] = res;// add buttonsettings\r\n let tempStatus = active.map(each => {\r\n each['StatusCodeDesc'] = each.StatusName + `- (${each.StatusCode})`\r\n return each\r\n })\r\n setStatus(tempStatus)\r\n handleTransision(active)\r\n }).catch(ex => {\r\n console.error(ex)\r\n })\r\n }, [])\r\n\r\n\r\n const CommandCell = (props) => {\r\n if (props.rowType === \"groupHeader\") {\r\n return null;\r\n }\r\n else return <MyCommandCell {...props} handleDelete={handleDelete} subGrid={(obj) => { getTableView(obj) }}\r\n setTemplateSettingsOpen={(id) => { setTemplateSettingsOpen(id) }}\r\n handleEdit={(dataItem) => {\r\n let newData = data.map(item => item.Id === dataItem.Id ?\r\n { ...item, inEdit: true } : item);\r\n setData(newData)\r\n console.log(data)\r\n }} handleSave={handleSave} editField={editField} />\r\n };\r\n\r\n\r\n const itemChange = (event, dataItem) => {\r\n const field = event.target.name || '';\r\n const newData = data.map(item => item.Id === dataItem.Id ? {\r\n ...item,\r\n [field]: event.target.value\r\n } : item);\r\n setData(newData);\r\n setReload(!reload)\r\n };\r\n\r\n const cellRender = (tdElement, cellProps) => {\r\n if (cellProps.rowType === \"groupHeader\") {\r\n let row = cellProps.dataItem.items.find(each => each.AppStatusLabel === cellProps.dataItem.value)\r\n return (\r\n <td className=\"col-sm-10 m-4\" style={{ borderColor: 'white' }}>\r\n <IconButton title=\"Notice Settings\" color=\"primary\" component=\"span\" onClick={() => getTableView({ id: row.Id, name: 'notices' })}>\r\n <NoticeIcon />\r\n </IconButton> \r\n {cellProps.dataItem.value}\r\n </td>\r\n )\r\n }\r\n return tdElement;\r\n };\r\n\r\n const DropDownCell = (props) => {\r\n const { dataItem } = props;\r\n const field = props.field || '';\r\n const dataValue = dataItem[field] === null ? '' : dataItem[field];\r\n let objT = null;\r\n if (field === 'TransmisionStatusId')\r\n objT = (status.find(x => parseInt(x.Id) === parseInt(dataValue)) || {});\r\n else if (field === 'IsDefault')\r\n objT = (data.find(x => parseInt(x.Id) === parseInt(dataValue)) || {})\r\n\r\n if (props.rowType === \"groupHeader\") {\r\n return null\r\n }\r\n else if (field === 'TransmisionStatusId') return <td>\r\n {dataItem.inEdit ? <DropDown name='TransmisionStatusId' items={status} value={dataValue || null}\r\n handleFieldValue={(e) => itemChange(e, dataItem)} extraProps={{ transformProps: { label: 'StatusCodeDesc', value: 'Id' } }} /> :\r\n objT && (objT.StatusName + `- (${objT.StatusCode})`) || ''}\r\n </td>\r\n else return <td>\r\n {dataItem.inEdit ? <Checkbox name=\"IsDefault\" value={dataValue || null}\r\n handleFieldValue={(e) => itemChange({ target: { name: 'IsDefault', value: e.target.checked ? 'Y' : 'N' } }, dataItem)} extraProps={{\r\n transformProps: { \"Y\": true, \"N\": false, true: \"Y\", false: \"N\" }\r\n }} /> : dataItem.IsDefault === 'Y' ? 'Yes' : 'No'}\r\n </td>;\r\n };\r\n\r\n const onExpandChange = useCallback(event => {\r\n const item = event.dataItem;\r\n if (item.groupId) {\r\n const newCollapsedIds = !event.value ? [...collapsedState, item.groupId] : collapsedState.filter(groupId => groupId !== item.groupId);\r\n setCollapsedState(newCollapsedIds);\r\n }\r\n }, [collapsedState]);\r\n\r\n const handleSave = (result) => {\r\n if(result['ApplicationStatusId'] && result['TransmisionStatusId']) \r\n {\r\n result['IsDefault'] = result && result['IsDefault'] == true ? 'Y' : result['IsDefault'] == 'Y' ? 'Y' : 'N'\r\n const read = [\r\n {\r\n url: result && result.Id ? getEnvVariable('AdminConfig') + `/api/SitePermitTypesStatus/Update` :\r\n getEnvVariable('AdminConfig') + `/api/SitePermitTypesStatus/${params.Id}/Create`,\r\n type: 'post',\r\n message:result && result.Id ? 'Updated Successfully' : 'Saved Successfully',\r\n },\r\n ]\r\n delete result['AppStatusLabel']\r\n Promise.all(read.map(each => requestApi(createRequest(each, result)))).then(res => {\r\n setDataitem(null)\r\n setEdit(false)\r\n setAdd(false)\r\n handleTransision(status)\r\n })\r\n }\r\n else\r\n {\r\n DefaultSettings.getAlert().show(\"Please provide status details\", 'error');\r\n }\r\n }\r\n\r\n\r\n const handleTransision = (active = []) => {\r\n const read = [{\r\n url: getEnvVariable('AdminConfig') + `/api/SitePermitTypesStatus/${props.dataItem.Id}/All`,\r\n type: 'get'\r\n }]\r\n Promise.all(read.map(each => requestApi(createRequest(each, {})))).then(res => {\r\n const [addedstatus] = res\r\n let tempData = {};\r\n tempData = addedstatus.map(each => {\r\n let obj = (active.find(x => parseInt(x.Id) === parseInt(each.ApplicationStatusId)) || {})\r\n let objT = (active.find(x => parseInt(x.Id) === parseInt(each.TransmisionStatusId)) || {});\r\n each['AppStatusLabel'] = obj.StatusName + `- (${obj.StatusCode})`;\r\n each['TransStatusLabel'] = objT.StatusName + `- (${objT.StatusCode})`;\r\n each['IsDefaultDesc'] = each.IsDefault === 'Y' ? 'Yes' : 'No'\r\n return each\r\n })\r\n setData(tempData)\r\n setOrgData(tempData)\r\n })\r\n }\r\n\r\n const handleDelete = (dataItem) => {\r\n const read = [{\r\n url: getEnvVariable('AdminConfig') + `/api/SitePermitTypesStatus/Delete/` + dataItem,\r\n type: 'delete'\r\n }]\r\n Promise.all(read.map(each => requestApi(createRequest(each, {})))).then(res => {\r\n handleTransision(status)\r\n }).catch(ex => {\r\n console.error(ex)\r\n })\r\n }\r\n\r\n const handleSearch = () => {\r\n if (search !== '') {\r\n const filterData = orgData.filter((item) => {\r\n return Object.values(item).join('').toLowerCase().includes(search.toLowerCase())\r\n })\r\n setData(filterData)\r\n setReload(!reload)\r\n }\r\n else setData(orgData)\r\n }\r\n\r\n const handleSearchInfo = (evt) => {\r\n const { name, value } = evt.target;\r\n setSearch(value)\r\n\r\n }\r\n\r\n const newData = setExpandedState({\r\n data: processWithGroups(data, initialGroup),\r\n collapsedIds: collapsedState\r\n });\r\n\r\n const getTableView = (obj) => {\r\n if (obj) {\r\n let temp = { ...JSON }\r\n let id = obj.id\r\n if (obj.name) {\r\n setModuleJSon({ json: temp[obj.name], id: id })\r\n return true\r\n }\r\n }\r\n else return null\r\n }\r\n\r\n\r\n return (\r\n <div className=\"h-100\">\r\n {reload}\r\n <div >\r\n <TextBox className=\"col-sm-10 m-4\" handleFieldValue={handleSearchInfo} label=\"Search..\" name=\"search\" value={search} />\r\n <Fab className='float-end' size=\"small\" title='Search' color=\"primary\" onClick={handleSearch} > <SearchIcon /></Fab> \r\n <Fab className='float-end' size=\"small\" title='Add' color=\"primary\" onClick={() => { setAdd(true) }} > <AddIcon /></Fab>\r\n </div>\r\n <div className='clearfix' />\r\n {add && <Paper variant=\"outlined\" className='my-2 p-1' >\r\n <StatusAdd handleSave={handleSave} dataItem={dataItem} status={status} closeEdit={() => { setAdd(false) }} />\r\n </Paper>}\r\n <Grid\r\n style={{ height: window.innerHeight - 230, width: '100%' }} data={newData} editField={editField} groupable={true} resizable\r\n group={group} onExpandChange={onExpandChange} cellRender={cellRender}\r\n expandField=\"expanded\">\r\n <Column cell={CommandCell} title=\"Actions\" width=\"170px\" editable={false} />\r\n <Column field=\"TransmisionStatusId\" title=\"Status Transition\" width=\"350px\" cell={DropDownCell} />\r\n <Column field=\"IsDefault\" title=\"Is Default\" width=\"160px\" cell={DropDownCell} />\r\n\r\n </Grid>\r\n <small className='float-right text-secondary'>Total Results: {data.length || 0}</small>\r\n {moduleJSON && moduleJSON.json && <Editable sitePermitTypeAppStatusId={moduleJSON.id} close={() => { setModuleJSon(null); setReload(reload) }} ModuleJSON={moduleJSON.json} />}\r\n {TemplateSettingsOpen && <TemplateSettings sitePermitTypeAppStatusId={TemplateSettingsOpen} closeTemplate={() =>\r\n setTemplateSettingsOpen(null)} />}\r\n </div>\r\n )\r\n}\r\n\r\nfunction StatusAdd({ dataItem = {}, handleSave, status, closeEdit }) {\r\n\r\n const [newDataItem, setDataitem] = useState(dataItem || {});\r\n const [reload, setReload] = useState(false);\r\n\r\n const handleFieldChange = (evt) => {\r\n const { name, value, checked } = evt.target;\r\n newDataItem[name] = value;\r\n if (name === 'IsDefault') {\r\n newDataItem[name] = (checked === true || checked === false) ? checked : value;\r\n }\r\n if (name === 'ApplicationStatusId') {\r\n let obj = status.find(x => parseInt(x.Id) === parseInt(newDataItem.ApplicationStatusId))\r\n newDataItem['AppStatusLabel'] = obj.StatusName + `- (${obj.StatusCode})`\r\n }\r\n else if (name === 'TransmisionStatusId') {\r\n let obj = status.find(x => parseInt(x.Id) === parseInt(newDataItem.TransmisionStatusId))\r\n newDataItem['TransStatusLabel'] = obj.StatusName + `- (${obj.StatusCode})`\r\n }\r\n newDataItem['IsDefaultDesc'] = (newDataItem.IsDefault === 'Y' || newDataItem.IsDefault === true) ? 'Yes' : 'No'\r\n if (newDataItem && !newDataItem.IsDefault) {\r\n newDataItem['IsDefault'] = 'N'\r\n }\r\n setDataitem(newDataItem)\r\n setReload(!reload)\r\n }\r\n\r\n return <div className='row '>\r\n <DropDown className='col-4 ' name='ApplicationStatusId' label=\"Status\" items={status} value={(newDataItem && newDataItem.ApplicationStatusId) || null}\r\n handleFieldValue={(e) => handleFieldChange(e)} extraProps={{\r\n transformProps: { label: 'StatusCodeDesc', value: 'Id' }\r\n }} />\r\n <DropDown className='col-4 ' name='TransmisionStatusId' label=\"Transition Status\" items={status} value={(newDataItem && newDataItem.TransmisionStatusId) || null}\r\n handleFieldValue={(e) => handleFieldChange(e)} extraProps={{\r\n transformProps: { label: 'StatusCodeDesc', value: 'Id' }\r\n }} />\r\n <Checkbox className='col-4 ' label='Is Default?' name=\"IsDefault\" value={(newDataItem && newDataItem.IsDefault) || null}\r\n handleFieldValue={(e) => handleFieldChange(e)} extraProps={{\r\n transformProps: { \"Y\": true, \"N\": false, true: \"Y\", false: \"N\" }\r\n }} />\r\n\r\n <Button autoFocus onClick={() => closeEdit()} color=\"primary\">\r\n <IconButton color=\"inherit\" aria-label=\"Close\">\r\n <CloseIcon />\r\n </IconButton></Button>\r\n <Button autoFocus onClick={() => handleSave(newDataItem)} color=\"primary\">\r\n {/* onClick={() => handleEdit(dataItem)} */}\r\n <IconButton title=\"Save\" color=\"primary\" aria-label=\"upload picture\" component=\"span\" ></IconButton>\r\n <SaveIcon />\r\n </Button>\r\n </div>\r\n}\r\n\r\n\r\n\r\n\r\n","import withWidth from '@material-ui/core/withWidth';\r\nimport React, { Component } from 'react';\r\nimport { GetData, PutData } from '../../core/controls/helpers/requests';\r\nimport { getEnvVariable } from '../../modules/environmentalList';\r\nimport SimpleGrid from '../../core/modules/Grid/cgrid';\r\nimport descconsgridjson from '../../json/sitepermittypes/descconsgridjson';\r\nconst _ = require('lodash');\r\n\r\nclass DescCons extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n items : []\r\n };\r\n this.jsoninfo = { ...descconsgridjson }\r\n }\r\n\r\n\r\n\r\n componentDidMount() {\r\n this.IntialLoad();\r\n }\r\n\r\n IntialLoad = () => {\r\n\r\n let url = getEnvVariable('AdminConfig') + `/api/SitePermitTypeDescriptionOfConstruction/${this.props.dataItem.Id}/Grid`;\r\n GetData(url).then(response => {\r\n this.setState({items : response.data})\r\n })\r\n\r\n }\r\n\r\n handleCustomBack = () => {\r\n this.IntialLoad();\r\n }\r\n\r\n onUp = (dataItem) => {\r\n let url = getEnvVariable('AdminConfig') + `/api/SitePermitTypeDescriptionOfConstruction/${dataItem.Id}/UP`;\r\n PutData(url).then(res => {\r\n if (res.isMoved) {\r\n this.IntialLoad()\r\n }\r\n })\r\n\r\n }\r\n onDown = (dataItem) => {\r\n let url = getEnvVariable('AdminConfig') + `/api/SitePermitTypeDescriptionOfConstruction/${dataItem.Id}/DOWN`;\r\n PutData(url).then(res => {\r\n if (res.isMoved) {\r\n this.IntialLoad()\r\n }\r\n })\r\n }\r\n componentDidUpdate(prevProps, prevState) {\r\n if ((!(prevState.items.length > 0)) && !(_.isEqual(prevState.items, this.state.items))) {\r\n this.IntialLoad()\r\n }\r\n if(!(_.isEqual(prevState.items, this.state.items))) {\r\n this.IntialLoad()\r\n }\r\n }\r\n render() {\r\n return (\r\n <div>\r\n <SimpleGrid\r\n onUp={this.onUp}\r\n onDown={this.onDown}\r\n data={this.state.items}\r\n columns={this.jsoninfo.options.gridcolumns} useComp={true} enablerender={true} {...descconsgridjson} {...this.props} handleCustomBack = {this.handleCustomBack} upanddowndisplaycondition = {true} />\r\n </div>\r\n )\r\n }\r\n}\r\n\r\nexport default withWidth()(DescCons)\r\n","import { getEnvVariable } from \"../../modules/environmentalList\"\r\n\r\nexport const AdminList = {\r\n 'WRS': {\r\n \"epsgeneral\":\r\n [\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Statistics\",\r\n \"icon\": \"poll\",\r\n \"materialicon\": \"poll\",\r\n \"link\": \"/systemstatistics\",\r\n \"key\": \"Statistics\",\r\n \"style\": {\r\n 'color': '#A020F0'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Notifications\",\r\n \"icon\": \"notifications_active\",\r\n \"materialicon\": \"notifications_active\",\r\n \"link\": \"notifications\",\r\n \"key\": \"Notifications\",\r\n \"style\": {\r\n 'color': '#00bfa5'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Search\",\r\n \"icon\": \"search\",\r\n \"materialicon\": \"search\",\r\n \"link\": \"/search\",\r\n \"key\": \"Search\",\r\n \"style\": {\r\n 'color': '#61A5DC'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Records\",\r\n \"key\": \"newapplicationdetails\",\r\n \"link\": \"/Administration/applications\",\r\n \"icon\": \"fa fa-file-text\",\r\n \"materialicon\": \"new_releases\",\r\n \"style\": {\r\n 'color': '#9c27b0'\r\n }\r\n },\r\n\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Reports\",\r\n \"icon\": \"fa fa-files-o\",\r\n \"link\": getEnvVariable('ReportsUI'),\r\n \"key\": \"reports\",\r\n \"newtab\": true,\r\n \"materialicon\": \"post_add\",\r\n \"style\": {\r\n 'color': '#827717'\r\n }\r\n },\r\n {\r\n \"type\":\"menu\",\r\n \"title\": \"Authorization\",\r\n \"key\": \"Authorization\",\r\n \"link\": \"/Administration/authorizations\",\r\n \"icon\": \"fa fa-globe\",\r\n \"materialicon\": \"vpn_key\",\r\n \"style\": {\r\n 'color': '#c158dc'\r\n }\r\n },\r\n ],\r\n \"Adminlist\":\r\n [\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Users\",\r\n \"icon\": \"fa fa-users\",\r\n \"link\": \"#/Administration/agencyusers\",\r\n \"key\": \"AgencyUsers\",\r\n \"materialicon\": \"person\",\r\n \"style\": {\r\n 'color': '#01579b'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Roles\",\r\n \"key\": \"roles\",\r\n \"link\": \"#/Administration/roles\",\r\n \"icon\": \"fa fa-user-circle-o\",\r\n \"materialicon\": \"manage_accounts\",\r\n \"style\": {\r\n 'color': '#004d40'\r\n }\r\n },\r\n\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Groups\",\r\n \"key\": \"groups\",\r\n \"link\": \"#/Administration/groups\",\r\n \"icon\": \"fa fa-users\",\r\n \"materialicon\": \"device_hub\",\r\n \"style\": {\r\n 'color': '#3f51b5'\r\n }\r\n },\r\n\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Regions\",\r\n \"key\": \"regions\",\r\n \"link\": \"#/Administration/regions\",\r\n \"icon\": \"fa fa-map\",\r\n \"materialicon\": \"streetview\",\r\n \"style\": {\r\n 'color': '#61A5DC'\r\n }\r\n },\r\n\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Districts\",\r\n // \"key\": \"districts\",\r\n // \"link\": \"#/Administration/districts\",\r\n // \"icon\": \"fa fa-map\",\r\n // \"materialicon\": \"map\",\r\n // \"style\": {\r\n // 'color': '#c158dc'\r\n // }\r\n // },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Counties\",\r\n \"key\": \"sites\",\r\n \"link\": \"#/Administration/counties\",\r\n \"icon\": \"fa fa-globe\",\r\n \"materialicon\": \"settings_system_daydream\",\r\n \"style\": {\r\n 'color': '#006064'\r\n }\r\n },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Domains\",\r\n // \"key\": \"domains\",\r\n // \"link\": \"#/Administration/domains\",\r\n // \"icon\": \"fa fa-domain\",\r\n // \"materialicon\": \"domain\",\r\n // \"style\": {\r\n // 'color': '#a98274'\r\n // }\r\n // },\r\n {\r\n \"type\":\"menu\",\r\n \"title\": \"Holidays\",\r\n \"key\": \"Holidays\",\r\n \"link\": \"#/Administration/holidays\",\r\n \"icon\": \"fa fa-globe\",\r\n \"materialicon\": \"today\",\r\n \"style\": {\r\n 'color': '#c158dc'\r\n }\r\n },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Email Groups\",\r\n // \"key\": \"groupemails\",\r\n // \"link\": \"#/Administration/groupemails\",\r\n // \"icon\": \"fa fa-domain\",\r\n // \"materialicon\": \"email\",\r\n // \"style\": {\r\n // 'color': '#0c755b'\r\n // }\r\n // },\r\n // ,\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Contractors\",\r\n \"icon\": \"fa fa-building\",\r\n \"link\": \"#/Administration/companies\",\r\n \"key\": \"companies\",\r\n \"materialicon\": \"apartment\",\r\n \"style\": {\r\n 'color': '#ea156d'\r\n }\r\n },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Consultants\",\r\n // \"icon\": \"fa fa-building\",\r\n // \"link\": \"/Administration/consultants\",\r\n // \"key\": \"consultants\",\r\n // \"materialicon\": \"connect_without_contact\",\r\n // \"style\": {\r\n // 'color': '#cddc39'\r\n // }\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Registrations\",\r\n // \"key\": \"registrationrequest\",\r\n // \"link\": \"#/Administration/registrationrequest\",\r\n // \"icon\": \"fa fa-caret-square-o-right\",\r\n // \"materialicon\": \"how_to_vote\",\r\n // \"style\": {\r\n // 'color': '#9fa8da'\r\n // }\r\n // },\r\n ],\r\n\r\n },\r\n\r\n\r\n}\r\n\r\n","import { getEnvVariable } from \"../..//modules/environmentalList\"\r\n\r\nexport const NoAdminList = { \r\n 'WRS': {\r\n \"epsgeneral\":\r\n [\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Statistics\",\r\n // \"icon\": \"poll\",\r\n // \"materialicon\": \"poll\",\r\n // \"link\": \"/systemstatistics\",\r\n // \"key\": \"Statistics\",\r\n // \"style\": {\r\n // 'color': '#A020F0'\r\n // }\r\n // },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Notifications\",\r\n \"icon\": \"notifications_active\",\r\n \"materialicon\": \"notifications_active\",\r\n \"link\": \"/notifications\",\r\n \"key\": \"Notifications\",\r\n \"style\": {\r\n 'color': '#00bfa5'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Search\",\r\n \"icon\": \"search\",\r\n \"materialicon\": \"search\",\r\n \"link\": \"/search\",\r\n \"key\": \"Search\",\r\n \"style\": {\r\n 'color': '#61A5DC'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Records\",\r\n \"key\": \"newapplicationdetails\",\r\n \"link\": \"#/Records/RECYCLERS\",\r\n \"icon\": \"fa fa-file-text\",\r\n \"materialicon\": \"new_releases\",\r\n \"style\": {\r\n 'color': '#9c27b0'\r\n }\r\n },\r\n\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Reports\",\r\n \"icon\": \"fa fa-files-o\",\r\n \"link\": getEnvVariable('ReportsUI'),\r\n \"key\": \"reports\",\r\n \"newtab\": true,\r\n \"materialicon\": \"post_add\",\r\n \"style\": {\r\n 'color': '#827717'\r\n }\r\n },\r\n\r\n ],\r\n // \"Adminlist\":\r\n // [\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Users\",\r\n // \"icon\": \"fa fa-users\",\r\n // \"link\": \"#/Administration/agencyusers\",\r\n // \"key\": \"AgencyUsers\",\r\n // \"materialicon\": \"person\",\r\n // \"style\": {\r\n // 'color': '#01579b'\r\n // }\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Roles\",\r\n // \"key\": \"roles\",\r\n // \"link\": \"#/Administration/roles\",\r\n // \"icon\": \"fa fa-user-circle-o\",\r\n // \"materialicon\": \"manage_accounts\",\r\n // \"style\": {\r\n // 'color': '#004d40'\r\n // }\r\n // },\r\n\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Groups\",\r\n // \"key\": \"groups\",\r\n // \"link\": \"#/Administration/groups\",\r\n // \"icon\": \"fa fa-users\",\r\n // \"materialicon\": \"device_hub\",\r\n // \"style\": {\r\n // 'color': '#3f51b5'\r\n // }\r\n // },\r\n\r\n\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Regions\",\r\n // \"key\": \"regions\",\r\n // \"link\": \"#/Administration/regions\",\r\n // \"icon\": \"fa fa-map\",\r\n // \"materialicon\": \"streetview\",\r\n // \"style\": {\r\n // 'color': '#61A5DC'\r\n // }\r\n // },\r\n\r\n // // {\r\n // // \"type\": \"menu\",\r\n // // \"title\": \"Districts\",\r\n // // \"key\": \"districts\",\r\n // // \"link\": \"#/Administration/districts\",\r\n // // \"icon\": \"fa fa-map\",\r\n // // \"materialicon\": \"map\",\r\n // // \"style\": {\r\n // // 'color': '#c158dc'\r\n // // }\r\n // // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Counties\",\r\n // \"key\": \"sites\",\r\n // \"link\": \"#/Administration/counties\",\r\n // \"icon\": \"fa fa-globe\",\r\n // \"materialicon\": \"settings_system_daydream\",\r\n // \"style\": {\r\n // 'color': '#006064'\r\n // }\r\n // },\r\n // {\r\n // \"type\":\"menu\",\r\n // \"title\": \"Holidays\",\r\n // \"key\": \"Holidays\",\r\n // \"link\": \"#/Administration/holidays\",\r\n // \"icon\": \"fa fa-globe\",\r\n // \"materialicon\": \"today\",\r\n // \"style\": {\r\n // 'color': '#c158dc'\r\n // }\r\n // },\r\n // // {\r\n // // \"type\": \"menu\",\r\n // // \"title\": \"Email Groups\",\r\n // // \"key\": \"groupemails\",\r\n // // \"link\": \"#/Administration/groupemails\",\r\n // // \"icon\": \"fa fa-domain\",\r\n // // \"materialicon\": \"email\",\r\n // // \"style\": {\r\n // // 'color': '#0c755b'\r\n // // }\r\n // // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Contractors\",\r\n // \"icon\": \"fa fa-building\",\r\n // \"link\": \"#/Administration/companies\",\r\n // \"key\": \"companies\",\r\n // \"materialicon\": \"apartment\",\r\n // \"style\": {\r\n // 'color': '#ea156d'\r\n // }\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Attachment Types\",\r\n // \"key\": \"attachmenttypes\",\r\n // \"link\": \"#/Administration/attachmenttypes\",\r\n // \"icon\": \"fa fa-paperclip\",\r\n // \"materialicon\": \"attach_file\",\r\n // \"style\": {\r\n // 'color': '#b26a00'\r\n // }\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Image Types\",\r\n // \"key\": \"imagetypes\",\r\n // \"link\": \"#/Administration/imagetypes\",\r\n // \"icon\": \"fa fa-file-image-o\",\r\n // \"materialicon\": \"wallpaper\",\r\n // \"style\": {\r\n // 'color': '#ffb300'\r\n // }\r\n // },\r\n // // {\r\n // // \"type\":\"menu\",\r\n // // \"title\": \"Authorization\",\r\n // // \"key\": \"Authorization\",\r\n // // \"link\": \"#/Administration/authorizations\",\r\n // // \"icon\": \"fa fa-globe\",\r\n // // \"materialicon\": \"vpn_key\",\r\n // // \"style\": {\r\n // // 'color': '#c158dc'\r\n // // }\r\n // // },\r\n // // {\r\n // // \"type\": \"menu\",\r\n // // \"title\": \"Consultants\",\r\n // // \"icon\": \"fa fa-building\",\r\n // // \"link\": \"/Administration/consultants\",\r\n // // \"key\": \"consultants\",\r\n // // \"materialicon\": \"connect_without_contact\",\r\n // // \"style\": {\r\n // // 'color': '#cddc39'\r\n // // }\r\n // // },\r\n // // {\r\n // // \"type\": \"menu\",\r\n // // \"title\": \"Project Messages\",\r\n // // \"key\": \"projectmessages\",\r\n // // \"link\": \"/Administration/projectmessages\",\r\n // // \"icon\": \"fa fa-domain\",\r\n // // \"materialicon\": \"message\",\r\n // // \"style\": {\r\n // // 'color': '#940786'\r\n // // }\r\n // // },\r\n // ],\r\n // 'settings': [\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Permit Status\",\r\n // \"icon\": \"fa fa-donut\",\r\n // \"link\": \"#/Administration/applicationstatus\",\r\n // \"key\": \"applicationstatus\",\r\n // \"materialicon\": \"rotate_right\",\r\n // \"style\": {\r\n // 'color': '#00796b'\r\n // }\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Master Sections\",\r\n // \"key\": \"sections\",\r\n // \"link\": \"#/Administration/mastersections\",\r\n // \"icon\": \"fa fa-columns\",\r\n // \"materialicon\": \"view_week\",\r\n // \"style\": {\r\n // 'color': '#00c853'\r\n // }\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Master Fields List\",\r\n // \"key\": \"masterFieldsList\",\r\n // \"link\": \"#/Administration/masterfieldslist\",\r\n // \"icon\": \"fa fa-list-alt\",\r\n // \"materialicon\": \"view_module\",\r\n // \"style\": {\r\n // 'color': '#e65100'\r\n // }\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Master Permit Types\",\r\n // \"key\": \"masterpermittypes\",\r\n // \"link\": \"#/Administration/masterpermittypes\",\r\n // \"icon\": \"fa fa-id-badge\",\r\n // \"materialicon\": \"verified_user\",\r\n // \"style\": {\r\n // 'color': '#795548'\r\n // }\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Permit Types\",\r\n // \"key\": \"sitepermittypes\",\r\n // \"link\": \"#/Administration/applicationtypes\",\r\n // \"icon\": \"fa fa-address-card-o\",\r\n // \"materialicon\": \"language\",\r\n // \"style\": {\r\n // 'color': '#a5d6a7'\r\n // }\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Master Templates\",\r\n // \"key\": \"notices\",\r\n // \"link\": \"#/Administration/masternotices\",\r\n // \"icon\": \"fa fa-sticky-note\",\r\n // \"materialicon\": \"document_scanner\",\r\n // \"style\": {\r\n // 'color': '#ab003c'\r\n // }\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Notices\",\r\n // \"key\": \"notices\",\r\n // \"link\": \"#/Administration/noticestypes\",\r\n // \"icon\": \"fa fa-sticky-note\",\r\n // \"materialicon\": \"article\",\r\n // \"style\": {\r\n // 'color': '#8bc34a'\r\n // }\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Notification Settings\",\r\n // \"key\": \"notificationsettings\",\r\n // \"link\": \"#/Administration/notificationsettings\",\r\n // \"icon\": \"fa fa-bell-o\",\r\n // \"materialicon\": \"notifications_active\",\r\n // \"style\": {\r\n // 'color': '#40c4ff'\r\n // }\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Domains\",\r\n // \"key\": \"domains\",\r\n // \"link\": \"#/Administration/domains\",\r\n // \"icon\": \"fa fa-domain\",\r\n // \"materialicon\": \"domain\",\r\n // \"style\": {\r\n // 'color': '#a98274'\r\n // }\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Layers\",\r\n // \"key\": \"layers\",\r\n // \"link\": \"#/Administration/layers\",\r\n // \"icon\": \"fa fa-domain\",\r\n // \"materialicon\": \"layers\",\r\n // \"style\": {\r\n // 'color': '#c85a54'\r\n // }\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"InvoiceCycles\",\r\n // \"key\": \"invoicecycles\",\r\n // \"link\": \"#/Administration/invoicecycles\",\r\n // \"icon\": \"fa fa-users\",\r\n // \"materialicon\": \"paid\",\r\n // \"style\": {\r\n // 'color': '#3f51b5'\r\n // }\r\n // },\r\n // // {\r\n // // \"type\": \"menu\",\r\n // // \"title\": \"Project Downloads\",\r\n // // \"key\": \"settings\",\r\n // // \"link\": \"#/Administration/projectdownloads\",\r\n // // \"icon\": \"fa fa-domain\",\r\n // // \"materialicon\": \"download\",\r\n // // \"style\": {\r\n // // 'color': '#3f51b5'\r\n // // }\r\n // // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Configurations\",\r\n // \"key\": \"settings\",\r\n // \"link\": \"#/Administration/settings\",\r\n // \"icon\": \"fa fa-domain\",\r\n // \"materialicon\": \"settings_suggest\",\r\n // \"style\": {\r\n // 'color': '#5ddef4'\r\n // }\r\n // },\r\n // // {\r\n // // \"type\": \"menu\",\r\n // // \"title\": \"Sidebar Rules\",\r\n // // \"key\": \"settings\",\r\n // // \"link\": \"#/Administration/sidebarbr\",\r\n // // \"icon\": \"fa fa-domain\",\r\n // // \"materialicon\": \"ballot\",\r\n // // \"style\": {\r\n // // 'color': '#aeea00'\r\n // // }\r\n // // },\r\n\r\n // ]\r\n },\r\n}\r\n","export const ExternalList = {\r\n WRS: {\r\n \"epsgeneral\":\r\n [\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Notifications\",\r\n \"icon\": \"notifications_active\",\r\n \"materialicon\": \"notifications_active\",\r\n \"link\": \"/notifications\",\r\n \"key\": \"Notifications\",\r\n \"style\": {\r\n 'color': '#d50000'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Search\",\r\n \"icon\": \"search\",\r\n \"materialicon\": \"search\",\r\n \"link\": \"/search\",\r\n \"key\": \"Search\",\r\n \"style\": {\r\n 'color': '#61A5DC'\r\n }\r\n },\r\n\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Records\",\r\n \"key\": \"newapplicationdetails\",\r\n \"link\": \"#/Administration/applications\",\r\n \"icon\": \"fa fa-file-text\",\r\n \"materialicon\": \"new_releases\",\r\n \"style\": {\r\n 'color': '#9c27b0'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Users\",\r\n \"icon\": \"fa fa-users\",\r\n \"link\": \"#/users\",\r\n \"key\": \"usersform\",\r\n \"materialicon\": \"person\",\r\n \"style\": {\r\n 'color': '#01579b'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Contacts\",\r\n \"key\": \"contacts\",\r\n \"link\": \"#/Administration/externalcontacts\",\r\n \"icon\": \"fa fa-user-circle-o\",\r\n \"materialicon\": \"contacts\",\r\n \"style\": {\r\n 'color': '#006064'\r\n }\r\n }\r\n ],\r\n },\r\n \r\n}\r\n\r\n","import { ExposureTwoTone } from \"@material-ui/icons\"\r\nimport { getEnvVariable } from \"../../modules/environmentalList\"\r\n\r\nexport const NotAdminRegList = {\r\n 'WRS': {\r\n \"epsgeneral\":\r\n [\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Notifications\",\r\n \"icon\": \"notifications_active\",\r\n \"materialicon\": \"notifications_active\",\r\n \"link\": \"/notifications\",\r\n \"key\": \"Notifications\",\r\n \"style\": {\r\n 'color': '#d50000'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Search\",\r\n \"icon\": \"search\",\r\n \"materialicon\": \"search\",\r\n \"link\": \"/search\",\r\n \"key\": \"Search\",\r\n \"style\": {\r\n 'color': '#61A5DC'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Records\",\r\n \"key\": \"newapplicationdetails\",\r\n \"link\": \"#/Administration/applications\",\r\n \"icon\": \"fa fa-file-text\",\r\n \"materialicon\": \"new_releases\",\r\n \"style\": {\r\n 'color': '#9c27b0'\r\n }\r\n },\r\n\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Reports\",\r\n \"icon\": \"fa fa-files-o\",\r\n \"link\": getEnvVariable('ReportsUI'),\r\n \"key\": \"reports\",\r\n \"newtab\": true,\r\n \"materialicon\": \"post_add\",\r\n \"style\": {\r\n 'color': '#827717'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Contractors\",\r\n \"icon\": \"fa fa-building\",\r\n \"link\": \"#/Administration/companies\",\r\n \"key\": \"companies\",\r\n \"materialicon\": \"apartment\",\r\n \"style\": {\r\n 'color': '#ea156d'\r\n }\r\n },\r\n ],\r\n \"Adminlist\":\r\n [\r\n\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Applicants\",\r\n \"icon\": \"fa fa-building\",\r\n \"link\": \"#/Administration/companies\",\r\n \"key\": \"companies\",\r\n \"materialicon\": \"apartment\",\r\n \"style\": {\r\n 'color': '#ea156d'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Users\",\r\n \"icon\": \"fa fa-users\",\r\n \"link\": \"/Administration/agencyusers\",\r\n \"key\": \"AgencyUsers\",\r\n \"materialicon\": \"person\",\r\n \"style\": {\r\n 'color': '#01579b'\r\n }\r\n },\r\n // {\r\n // \"type\":\"menu\",\r\n // \"title\": \"Authorization\",\r\n // \"key\": \"Authorization\",\r\n // \"link\": \"/Administration/authorizations\",\r\n // \"icon\": \"fa fa-globe\",\r\n // \"materialicon\": \"vpn_key\",\r\n // \"style\": {\r\n // 'color': '#c158dc'\r\n // }\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Registrations\",\r\n // \"key\": \"registrationrequest\",\r\n // \"link\": \"#/Administration/registrationrequest\",\r\n // \"icon\": \"fa fa-caret-square-o-right\",\r\n // \"materialicon\": \"how_to_vote\",\r\n // \"style\": {\r\n // 'color': '#9fa8da'\r\n // }\r\n // },\r\n ],\r\n },\r\n\r\n}\r\n","import { getEnvVariable } from \"../..//modules/environmentalList\"\r\n\r\nexport const NotRegList = { \r\n 'WRS': {\r\n \"epsgeneral\":\r\n [\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Statistics\",\r\n \"icon\": \"poll\",\r\n \"materialicon\": \"poll\",\r\n \"link\": \"/systemstatistics\",\r\n \"key\": \"Statistics\",\r\n \"style\": {\r\n 'color': '#A020F0'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Notifications\",\r\n \"icon\": \"notifications_active\",\r\n \"materialicon\": \"notifications_active\",\r\n \"link\": \"/notifications\",\r\n \"key\": \"Notifications\",\r\n \"style\": {\r\n 'color': '#00bfa5'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Search\",\r\n \"icon\": \"search\",\r\n \"materialicon\": \"search\",\r\n \"link\": \"/search\",\r\n \"key\": \"Search\",\r\n \"style\": {\r\n 'color': '#61A5DC'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Records\",\r\n \"key\": \"newapplicationdetails\",\r\n \"link\": \"#/Records/RECYCLERS\",\r\n \"icon\": \"fa fa-file-text\",\r\n \"materialicon\": \"new_releases\",\r\n \"style\": {\r\n 'color': '#9c27b0'\r\n }\r\n },\r\n\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Reports\",\r\n \"icon\": \"fa fa-files-o\",\r\n \"link\": getEnvVariable('ReportsUI'),\r\n \"key\": \"reports\",\r\n \"newtab\": true,\r\n \"materialicon\": \"post_add\",\r\n \"style\": {\r\n 'color': '#827717'\r\n }\r\n },\r\n\r\n ],\r\n \"Adminlist\":\r\n [\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Users\",\r\n \"icon\": \"fa fa-users\",\r\n \"link\": \"#/Administration/agencyusers\",\r\n \"key\": \"AgencyUsers\",\r\n \"materialicon\": \"person\",\r\n \"style\": {\r\n 'color': '#01579b'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Roles\",\r\n \"key\": \"roles\",\r\n \"link\": \"#/Administration/roles\",\r\n \"icon\": \"fa fa-user-circle-o\",\r\n \"materialicon\": \"manage_accounts\",\r\n \"style\": {\r\n 'color': '#004d40'\r\n }\r\n },\r\n\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Groups\",\r\n \"key\": \"groups\",\r\n \"link\": \"#/Administration/groups\",\r\n \"icon\": \"fa fa-users\",\r\n \"materialicon\": \"device_hub\",\r\n \"style\": {\r\n 'color': '#3f51b5'\r\n }\r\n },\r\n\r\n\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Regions\",\r\n \"key\": \"regions\",\r\n \"link\": \"#/Administration/regions\",\r\n \"icon\": \"fa fa-map\",\r\n \"materialicon\": \"streetview\",\r\n \"style\": {\r\n 'color': '#61A5DC'\r\n }\r\n },\r\n\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Districts\",\r\n // \"key\": \"districts\",\r\n // \"link\": \"#/Administration/districts\",\r\n // \"icon\": \"fa fa-map\",\r\n // \"materialicon\": \"map\",\r\n // \"style\": {\r\n // 'color': '#c158dc'\r\n // }\r\n // },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Counties\",\r\n \"key\": \"sites\",\r\n \"link\": \"#/Administration/counties\",\r\n \"icon\": \"fa fa-globe\",\r\n \"materialicon\": \"settings_system_daydream\",\r\n \"style\": {\r\n 'color': '#006064'\r\n }\r\n },\r\n {\r\n \"type\":\"menu\",\r\n \"title\": \"Holidays\",\r\n \"key\": \"Holidays\",\r\n \"link\": \"#/Administration/holidays\",\r\n \"icon\": \"fa fa-globe\",\r\n \"materialicon\": \"today\",\r\n \"style\": {\r\n 'color': '#c158dc'\r\n }\r\n },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Email Groups\",\r\n // \"key\": \"groupemails\",\r\n // \"link\": \"#/Administration/groupemails\",\r\n // \"icon\": \"fa fa-domain\",\r\n // \"materialicon\": \"email\",\r\n // \"style\": {\r\n // 'color': '#0c755b'\r\n // }\r\n // },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Contractors\",\r\n \"icon\": \"fa fa-building\",\r\n \"link\": \"#/Administration/companies\",\r\n \"key\": \"companies\",\r\n \"materialicon\": \"apartment\",\r\n \"style\": {\r\n 'color': '#ea156d'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Attachment Types\",\r\n \"key\": \"attachmenttypes\",\r\n \"link\": \"#/Administration/attachmenttypes\",\r\n \"icon\": \"fa fa-paperclip\",\r\n \"materialicon\": \"attach_file\",\r\n \"style\": {\r\n 'color': '#b26a00'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Image Types\",\r\n \"key\": \"imagetypes\",\r\n \"link\": \"#/Administration/imagetypes\",\r\n \"icon\": \"fa fa-file-image-o\",\r\n \"materialicon\": \"wallpaper\",\r\n \"style\": {\r\n 'color': '#ffb300'\r\n }\r\n },\r\n // {\r\n // \"type\":\"menu\",\r\n // \"title\": \"Authorization\",\r\n // \"key\": \"Authorization\",\r\n // \"link\": \"#/Administration/authorizations\",\r\n // \"icon\": \"fa fa-globe\",\r\n // \"materialicon\": \"vpn_key\",\r\n // \"style\": {\r\n // 'color': '#c158dc'\r\n // }\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Consultants\",\r\n // \"icon\": \"fa fa-building\",\r\n // \"link\": \"/Administration/consultants\",\r\n // \"key\": \"consultants\",\r\n // \"materialicon\": \"connect_without_contact\",\r\n // \"style\": {\r\n // 'color': '#cddc39'\r\n // }\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Project Messages\",\r\n // \"key\": \"projectmessages\",\r\n // \"link\": \"/Administration/projectmessages\",\r\n // \"icon\": \"fa fa-domain\",\r\n // \"materialicon\": \"message\",\r\n // \"style\": {\r\n // 'color': '#940786'\r\n // }\r\n // },\r\n ],\r\n 'settings': [\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Permit Status\",\r\n \"icon\": \"fa fa-donut\",\r\n \"link\": \"#/Administration/applicationstatus\",\r\n \"key\": \"applicationstatus\",\r\n \"materialicon\": \"rotate_right\",\r\n \"style\": {\r\n 'color': '#00796b'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Master Sections\",\r\n \"key\": \"sections\",\r\n \"link\": \"#/Administration/mastersections\",\r\n \"icon\": \"fa fa-columns\",\r\n \"materialicon\": \"view_week\",\r\n \"style\": {\r\n 'color': '#00c853'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Master Fields List\",\r\n \"key\": \"masterFieldsList\",\r\n \"link\": \"#/Administration/masterfieldslist\",\r\n \"icon\": \"fa fa-list-alt\",\r\n \"materialicon\": \"view_module\",\r\n \"style\": {\r\n 'color': '#e65100'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Master Permit Types\",\r\n \"key\": \"masterpermittypes\",\r\n \"link\": \"#/Administration/masterpermittypes\",\r\n \"icon\": \"fa fa-id-badge\",\r\n \"materialicon\": \"verified_user\",\r\n \"style\": {\r\n 'color': '#795548'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Permit Types\",\r\n \"key\": \"sitepermittypes\",\r\n \"link\": \"#/Administration/applicationtypes\",\r\n \"icon\": \"fa fa-address-card-o\",\r\n \"materialicon\": \"language\",\r\n \"style\": {\r\n 'color': '#a5d6a7'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Master Templates\",\r\n \"key\": \"notices\",\r\n \"link\": \"#/Administration/masternotices\",\r\n \"icon\": \"fa fa-sticky-note\",\r\n \"materialicon\": \"document_scanner\",\r\n \"style\": {\r\n 'color': '#ab003c'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Notices\",\r\n \"key\": \"notices\",\r\n \"link\": \"#/Administration/noticestypes\",\r\n \"icon\": \"fa fa-sticky-note\",\r\n \"materialicon\": \"article\",\r\n \"style\": {\r\n 'color': '#8bc34a'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Notification Settings\",\r\n \"key\": \"notificationsettings\",\r\n \"link\": \"#/Administration/notificationsettings\",\r\n \"icon\": \"fa fa-bell-o\",\r\n \"materialicon\": \"notifications_active\",\r\n \"style\": {\r\n 'color': '#40c4ff'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Domains\",\r\n \"key\": \"domains\",\r\n \"link\": \"#/Administration/domains\",\r\n \"icon\": \"fa fa-domain\",\r\n \"materialicon\": \"domain\",\r\n \"style\": {\r\n 'color': '#a98274'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Layers\",\r\n \"key\": \"layers\",\r\n \"link\": \"#/Administration/layers\",\r\n \"icon\": \"fa fa-domain\",\r\n \"materialicon\": \"layers\",\r\n \"style\": {\r\n 'color': '#c85a54'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"InvoiceCycles\",\r\n \"key\": \"invoicecycles\",\r\n \"link\": \"#/Administration/invoicecycles\",\r\n \"icon\": \"fa fa-users\",\r\n \"materialicon\": \"paid\",\r\n \"style\": {\r\n 'color': '#3f51b5'\r\n }\r\n },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Project Downloads\",\r\n // \"key\": \"settings\",\r\n // \"link\": \"#/Administration/projectdownloads\",\r\n // \"icon\": \"fa fa-domain\",\r\n // \"materialicon\": \"download\",\r\n // \"style\": {\r\n // 'color': '#3f51b5'\r\n // }\r\n // },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Configurations\",\r\n \"key\": \"settings\",\r\n \"link\": \"#/Administration/settings\",\r\n \"icon\": \"fa fa-domain\",\r\n \"materialicon\": \"settings_suggest\",\r\n \"style\": {\r\n 'color': '#5ddef4'\r\n }\r\n },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Sidebar Rules\",\r\n // \"key\": \"settings\",\r\n // \"link\": \"#/Administration/sidebarbr\",\r\n // \"icon\": \"fa fa-domain\",\r\n // \"materialicon\": \"ballot\",\r\n // \"style\": {\r\n // 'color': '#aeea00'\r\n // }\r\n // },\r\n\r\n ]\r\n },\r\n}\r\n","import { getEnvVariable } from \"../..//modules/environmentalList\"\r\n\r\nexport const SuperAdminList = {\r\n 'WRS': {\r\n \"epsgeneral\":\r\n [\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Statistics\",\r\n \"icon\": \"poll\",\r\n \"materialicon\": \"poll\",\r\n \"link\": \"/systemstatistics\",\r\n \"key\": \"Statistics\",\r\n \"style\": {\r\n 'color': '#A020F0'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Notifications\",\r\n \"icon\": \"notifications_active\",\r\n \"materialicon\": \"notifications_active\",\r\n \"link\": \"#/notifications\",\r\n \"key\": \"Notifications\",\r\n \"style\": {\r\n 'color': '#00bfa5'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Search\",\r\n \"icon\": \"search\",\r\n \"materialicon\": \"search\",\r\n \"link\": \"/search\",\r\n \"key\": \"Search\",\r\n \"style\": {\r\n 'color': '#61A5DC'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Records\",\r\n \"key\": \"newapplicationdetails\",\r\n \"link\": \"#/Records/RECYCLERS\",\r\n \"icon\": \"fa fa-file-text\",\r\n \"materialicon\": \"new_releases\",\r\n \"style\": {\r\n 'color': '#9c27b0'\r\n }\r\n },\r\n\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Reports\",\r\n \"icon\": \"fa fa-files-o\",\r\n \"link\": getEnvVariable('ReportsUI'),\r\n \"key\": \"reports\",\r\n \"newtab\": true,\r\n \"materialicon\": \"post_add\",\r\n \"style\": {\r\n 'color': '#827717'\r\n }\r\n },\r\n {\r\n \"type\":\"menu\",\r\n \"title\": \"Authorization\",\r\n \"key\": \"Authorization\",\r\n \"link\": \"/Administration/authorizations\",\r\n \"icon\": \"fa fa-globe\",\r\n \"materialicon\": \"vpn_key\",\r\n \"style\": {\r\n 'color': '#c158dc'\r\n }\r\n },\r\n ],\r\n \"Adminlist\":\r\n [\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Users\",\r\n \"icon\": \"fa fa-users\",\r\n \"link\": \"#/Administration/agencyusers\",\r\n \"key\": \"AgencyUsers\",\r\n \"materialicon\": \"person\",\r\n \"style\": {\r\n 'color': '#01579b'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Roles\",\r\n \"key\": \"roles\",\r\n \"link\": \"#/Administration/roles\",\r\n \"icon\": \"fa fa-user-circle-o\",\r\n \"materialicon\": \"manage_accounts\",\r\n \"style\": {\r\n 'color': '#004d40'\r\n }\r\n },\r\n\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Groups\",\r\n \"key\": \"groups\",\r\n \"link\": \"#/Administration/groups\",\r\n \"icon\": \"fa fa-users\",\r\n \"materialicon\": \"device_hub\",\r\n \"style\": {\r\n 'color': '#3f51b5'\r\n }\r\n },\r\n\r\n\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Regions\",\r\n \"key\": \"regions\",\r\n \"link\": \"#/Administration/regions\",\r\n \"icon\": \"fa fa-map\",\r\n \"materialicon\": \"streetview\",\r\n \"style\": {\r\n 'color': '#61A5DC'\r\n }\r\n },\r\n\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Districts\",\r\n // \"key\": \"districts\",\r\n // \"link\": \"#/Administration/districts\",\r\n // \"icon\": \"fa fa-map\",\r\n // \"materialicon\": \"map\",\r\n // \"style\": {\r\n // 'color': '#c158dc'\r\n // }\r\n // },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Counties\",\r\n \"key\": \"sites\",\r\n \"link\": \"#/Administration/counties\",\r\n \"icon\": \"fa fa-globe\",\r\n \"materialicon\": \"settings_system_daydream\",\r\n \"style\": {\r\n 'color': '#006064'\r\n }\r\n },\r\n {\r\n \"type\":\"menu\",\r\n \"title\": \"Holidays\",\r\n \"key\": \"Holidays\",\r\n \"link\": \"#/Administration/holidays\",\r\n \"icon\": \"fa fa-globe\",\r\n \"materialicon\": \"today\",\r\n \"style\": {\r\n 'color': '#c158dc'\r\n }\r\n },\r\n \r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Email Groups\",\r\n // \"key\": \"groupemails\",\r\n // \"link\": \"#/Administration/groupemails\",\r\n // \"icon\": \"fa fa-domain\",\r\n // \"materialicon\": \"email\",\r\n // \"style\": {\r\n // 'color': '#0c755b'\r\n // }\r\n // },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Contractors\",\r\n \"icon\": \"fa fa-building\",\r\n \"link\": \"#/Administration/companies\",\r\n \"key\": \"companies\",\r\n \"materialicon\": \"apartment\",\r\n \"style\": {\r\n 'color': '#ea156d'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Attachment Types\",\r\n \"key\": \"attachmenttypes\",\r\n \"link\": \"#/Administration/attachmenttypes\",\r\n \"icon\": \"fa fa-paperclip\",\r\n \"materialicon\": \"attach_file\",\r\n \"style\": {\r\n 'color': '#b26a00'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Image Types\",\r\n \"key\": \"imagetypes\",\r\n \"link\": \"#/Administration/imagetypes\",\r\n \"icon\": \"fa fa-file-image-o\",\r\n \"materialicon\": \"wallpaper\",\r\n \"style\": {\r\n 'color': '#ffb300'\r\n }\r\n },\r\n \r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Consultants\",\r\n // \"icon\": \"fa fa-building\",\r\n // \"link\": \"/Administration/consultants\",\r\n // \"key\": \"consultants\",\r\n // \"materialicon\": \"connect_without_contact\",\r\n // \"style\": {\r\n // 'color': '#cddc39'\r\n // }\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Project Messages\",\r\n // \"key\": \"projectmessages\",\r\n // \"link\": \"/Administration/projectmessages\",\r\n // \"icon\": \"fa fa-domain\",\r\n // \"materialicon\": \"message\",\r\n // \"style\": {\r\n // 'color': '#940786'\r\n // }\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Registrations\",\r\n // \"key\": \"registrationrequest\",\r\n // \"link\": \"#/Administration/registrationrequest\",\r\n // \"icon\": \"fa fa-caret-square-o-right\",\r\n // \"materialicon\": \"how_to_vote\",\r\n // \"style\": {\r\n // 'color': '#9fa8da'\r\n // }\r\n //},\r\n ],\r\n 'settings': [\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Permit Status\",\r\n \"icon\": \"fa fa-donut\",\r\n \"link\": \"#/Administration/applicationstatus\",\r\n \"key\": \"applicationstatus\",\r\n \"materialicon\": \"rotate_right\",\r\n \"style\": {\r\n 'color': '#00796b'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Master Sections\",\r\n \"key\": \"sections\",\r\n \"link\": \"#/Administration/mastersections\",\r\n \"icon\": \"fa fa-columns\",\r\n \"materialicon\": \"view_week\",\r\n \"style\": {\r\n 'color': '#00c853'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Master Fields List\",\r\n \"key\": \"masterFieldsList\",\r\n \"link\": \"#/Administration/masterfieldslist\",\r\n \"icon\": \"fa fa-list-alt\",\r\n \"materialicon\": \"view_module\",\r\n \"style\": {\r\n 'color': '#e65100'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Master Permit Types\",\r\n \"key\": \"masterpermittypes\",\r\n \"link\": \"#/Administration/masterpermittypes\",\r\n \"icon\": \"fa fa-id-badge\",\r\n \"materialicon\": \"verified_user\",\r\n \"style\": {\r\n 'color': '#795548'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Permit Types\",\r\n \"key\": \"sitepermittypes\",\r\n \"link\": \"#/Administration/applicationtypes\",\r\n \"icon\": \"fa fa-address-card-o\",\r\n \"materialicon\": \"language\",\r\n \"style\": {\r\n 'color': '#a5d6a7'\r\n }\r\n },\r\n \r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Master Templates\",\r\n \"key\": \"notices\",\r\n \"link\": \"#/Administration/masternotices\",\r\n \"icon\": \"fa fa-sticky-note\",\r\n \"materialicon\": \"document_scanner\",\r\n \"style\": {\r\n 'color': '#ab003c'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Notices\",\r\n \"key\": \"notices\",\r\n \"link\": \"#/Administration/noticestypes\",\r\n \"icon\": \"fa fa-sticky-note\",\r\n \"materialicon\": \"article\",\r\n \"style\": {\r\n 'color': '#8bc34a'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Notification Settings\",\r\n \"key\": \"notificationsettings\",\r\n \"link\": \"#/Administration/notificationsettings\",\r\n \"icon\": \"fa fa-bell-o\",\r\n \"materialicon\": \"notifications_active\",\r\n \"style\": {\r\n 'color': '#40c4ff'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Domains\",\r\n \"key\": \"domains\",\r\n \"link\": \"#/Administration/domains\",\r\n \"icon\": \"fa fa-domain\",\r\n \"materialicon\": \"domain\",\r\n \"style\": {\r\n 'color': '#a98274'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Layers\",\r\n \"key\": \"layers\",\r\n \"link\": \"#/Administration/layers\",\r\n \"icon\": \"fa fa-domain\",\r\n \"materialicon\": \"layers\",\r\n \"style\": {\r\n 'color': '#c85a54'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"InvoiceCycles\",\r\n \"key\": \"invoicecycles\",\r\n \"link\": \"#/Administration/invoicecycles\",\r\n \"icon\": \"fa fa-users\",\r\n \"materialicon\": \"paid\",\r\n \"style\": {\r\n 'color': '#3f51b5'\r\n }\r\n },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Project Downloads\",\r\n // \"key\": \"settings\",\r\n // \"link\": \"#/Administration/projectdownloads\",\r\n // \"icon\": \"fa fa-domain\",\r\n // \"materialicon\": \"download\",\r\n // \"style\": {\r\n // 'color': '#3f51b5'\r\n // }\r\n // },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Configurations\",\r\n \"key\": \"settings\",\r\n \"link\": \"#/Administration/settings\",\r\n \"icon\": \"fa fa-domain\",\r\n \"materialicon\": \"settings_suggest\",\r\n \"style\": {\r\n 'color': '#5ddef4'\r\n }\r\n },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Sidebar Rules\",\r\n // \"key\": \"settings\",\r\n // \"link\": \"#/Administration/sidebarbr\",\r\n // \"icon\": \"fa fa-domain\",\r\n // \"materialicon\": \"ballot\",\r\n // \"style\": {\r\n // 'color': '#aeea00'\r\n // }\r\n // },\r\n\r\n ]\r\n },\r\n}\r\n","export const PreparerExternalList = {\r\n\r\n WRS: {\r\n \"epsgeneral\":\r\n [\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Notifications\",\r\n \"icon\": \"notifications_active\",\r\n \"materialicon\": \"notifications_active\",\r\n \"link\": \"#/notifications\",\r\n \"key\": \"Notifications\",\r\n \"style\": {\r\n 'color': '#d50000'\r\n }\r\n },\r\n\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Records\",\r\n \"key\": \"newapplicationdetails\",\r\n \"link\": \"#/Records/RECYCLERS\",\r\n \"icon\": \"fa fa-file-text\",\r\n \"materialicon\": \"new_releases\",\r\n \"style\": {\r\n 'color': '#9c27b0'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Contacts\",\r\n \"key\": \"contacts\",\r\n \"link\": \"#/Administration/externalcontacts\",\r\n \"icon\": \"fa fa-user-circle-o\",\r\n \"materialicon\": \"contacts\",\r\n \"style\": {\r\n 'color': '#006064'\r\n }\r\n }\r\n ],\r\n },\r\n}\r\n\r\n\r\n","import { getEnvVariable } from \"../..//modules/environmentalList\"\r\n\r\nexport const SystemAdminList = {\r\n 'WRS': {\r\n \"epsgeneral\":\r\n [\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Statistics\",\r\n \"icon\": \"poll\",\r\n \"materialicon\": \"poll\",\r\n \"link\": \"/systemstatistics\",\r\n \"key\": \"Statistics\",\r\n \"style\": {\r\n 'color': '#A020F0'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Notifications\",\r\n \"icon\": \"notifications_active\",\r\n \"materialicon\": \"notifications_active\",\r\n \"link\": \"/notifications\",\r\n \"key\": \"Notifications\",\r\n \"style\": {\r\n 'color': '#00bfa5'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Search\",\r\n \"icon\": \"search\",\r\n \"materialicon\": \"search\",\r\n \"link\": \"/search\",\r\n \"key\": \"Search\",\r\n \"style\": {\r\n 'color': '#61A5DC'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Records\",\r\n \"key\": \"newapplicationdetails\",\r\n \"link\": \"#/Records/RECYCLERS\",\r\n \"icon\": \"fa fa-file-text\",\r\n \"materialicon\": \"new_releases\",\r\n \"style\": {\r\n 'color': '#9c27b0'\r\n }\r\n },\r\n\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Reports\",\r\n \"icon\": \"fa fa-files-o\",\r\n \"link\": getEnvVariable('ReportsUI'),\r\n \"key\": \"reports\",\r\n \"newtab\": true,\r\n \"materialicon\": \"post_add\",\r\n \"style\": {\r\n 'color': '#827717'\r\n }\r\n },\r\n {\r\n \"type\":\"menu\",\r\n \"title\": \"Authorization\",\r\n \"key\": \"Authorization\",\r\n \"link\": \"/Administration/authorizations\",\r\n \"icon\": \"fa fa-globe\",\r\n \"materialicon\": \"vpn_key\",\r\n \"style\": {\r\n 'color': '#c158dc'\r\n }\r\n },\r\n ],\r\n \"Adminlist\":\r\n [\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Users\",\r\n \"icon\": \"fa fa-users\",\r\n \"link\": \"#/Administration/agencyusers\",\r\n \"key\": \"AgencyUsers\",\r\n \"materialicon\": \"person\",\r\n \"style\": {\r\n 'color': '#01579b'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Roles\",\r\n \"key\": \"roles\",\r\n \"link\": \"#/Administration/roles\",\r\n \"icon\": \"fa fa-user-circle-o\",\r\n \"materialicon\": \"manage_accounts\",\r\n \"style\": {\r\n 'color': '#004d40'\r\n }\r\n },\r\n\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Groups\",\r\n \"key\": \"groups\",\r\n \"link\": \"#/Administration/groups\",\r\n \"icon\": \"fa fa-users\",\r\n \"materialicon\": \"device_hub\",\r\n \"style\": {\r\n 'color': '#3f51b5'\r\n }\r\n },\r\n\r\n\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Regions\",\r\n \"key\": \"regions\",\r\n \"link\": \"#/Administration/regions\",\r\n \"icon\": \"fa fa-map\",\r\n \"materialicon\": \"streetview\",\r\n \"style\": {\r\n 'color': '#61A5DC'\r\n }\r\n },\r\n\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Districts\",\r\n // \"key\": \"districts\",\r\n // \"link\": \"#/Administration/districts\",\r\n // \"icon\": \"fa fa-map\",\r\n // \"materialicon\": \"map\",\r\n // \"style\": {\r\n // 'color': '#c158dc'\r\n // }\r\n // },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Counties\",\r\n \"key\": \"sites\",\r\n \"link\": \"#/Administration/counties\",\r\n \"icon\": \"fa fa-globe\",\r\n \"materialicon\": \"settings_system_daydream\",\r\n \"style\": {\r\n 'color': '#006064'\r\n }\r\n },\r\n {\r\n \"type\":\"menu\",\r\n \"title\": \"Holidays\",\r\n \"key\": \"Holidays\",\r\n \"link\": \"#/Administration/holidays\",\r\n \"icon\": \"fa fa-globe\",\r\n \"materialicon\": \"today\",\r\n \"style\": {\r\n 'color': '#c158dc'\r\n }\r\n },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Email Groups\",\r\n // \"key\": \"groupemails\",\r\n // \"link\": \"#/Administration/groupemails\",\r\n // \"icon\": \"fa fa-domain\",\r\n // \"materialicon\": \"email\",\r\n // \"style\": {\r\n // 'color': '#0c755b'\r\n // }\r\n // },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Contractors\",\r\n \"icon\": \"fa fa-building\",\r\n \"link\": \"#/Administration/companies\",\r\n \"key\": \"companies\",\r\n \"materialicon\": \"apartment\",\r\n \"style\": {\r\n 'color': '#ea156d'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Attachment Types\",\r\n \"key\": \"attachmenttypes\",\r\n \"link\": \"#/Administration/attachmenttypes\",\r\n \"icon\": \"fa fa-paperclip\",\r\n \"materialicon\": \"attach_file\",\r\n \"style\": {\r\n 'color': '#b26a00'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Image Types\",\r\n \"key\": \"imagetypes\",\r\n \"link\": \"#/Administration/imagetypes\",\r\n \"icon\": \"fa fa-file-image-o\",\r\n \"materialicon\": \"wallpaper\",\r\n \"style\": {\r\n 'color': '#ffb300'\r\n }\r\n },\r\n \r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Consultants\",\r\n // \"icon\": \"fa fa-building\",\r\n // \"link\": \"/Administration/consultants\",\r\n // \"key\": \"consultants\",\r\n // \"materialicon\": \"connect_without_contact\",\r\n // \"style\": {\r\n // 'color': '#cddc39'\r\n // }\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Project Messages\",\r\n // \"key\": \"projectmessages\",\r\n // \"link\": \"/Administration/projectmessages\",\r\n // \"icon\": \"fa fa-domain\",\r\n // \"materialicon\": \"message\",\r\n // \"style\": {\r\n // 'color': '#940786'\r\n // }\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Registrations\",\r\n // \"key\": \"registrationrequest\",\r\n // \"link\": \"#/Administration/registrationrequest\",\r\n // \"icon\": \"fa fa-caret-square-o-right\",\r\n // \"materialicon\": \"how_to_vote\",\r\n // \"style\": {\r\n // 'color': '#9fa8da'\r\n // }\r\n // },\r\n ],\r\n 'settings': [\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Permit Status\",\r\n \"icon\": \"fa fa-donut\",\r\n \"link\": \"#/Administration/applicationstatus\",\r\n \"key\": \"applicationstatus\",\r\n \"materialicon\": \"rotate_right\",\r\n \"style\": {\r\n 'color': '#00796b'\r\n }\r\n },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Master Sections\",\r\n // \"key\": \"sections\",\r\n // \"link\": \"#/Administration/mastersections\",\r\n // \"icon\": \"fa fa-columns\",\r\n // \"materialicon\": \"view_week\",\r\n // \"style\": {\r\n // 'color': '#00c853'\r\n // }\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Master Fields List\",\r\n // \"key\": \"masterFieldsList\",\r\n // \"link\": \"#/Administration/masterfieldslist\",\r\n // \"icon\": \"fa fa-list-alt\",\r\n // \"materialicon\": \"view_list\",\r\n // \"style\": {\r\n // 'color': '#e65100'\r\n // }\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Master Permit Types\",\r\n // \"key\": \"masterpermittypes\",\r\n // \"link\": \"#/Administration/masterpermittypes\",\r\n // \"icon\": \"fa fa-id-badge\",\r\n // \"materialicon\": \"verified_user\",\r\n // \"style\": {\r\n // 'color': '#795548'\r\n // }\r\n // },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Permit Types\",\r\n \"key\": \"sitepermittypes\",\r\n \"link\": \"#/Administration/applicationtypes\",\r\n \"icon\": \"fa fa-address-card-o\",\r\n \"materialicon\": \"language\",\r\n \"style\": {\r\n 'color': '#a5d6a7'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Master Templates\",\r\n \"key\": \"notices\",\r\n \"link\": \"#/Administration/masternotices\",\r\n \"icon\": \"fa fa-sticky-note\",\r\n \"materialicon\": \"document_scanner\",\r\n \"style\": {\r\n 'color': '#ab003c'\r\n }\r\n },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Project Downloads\",\r\n // \"key\": \"settings\",\r\n // \"link\": \"#/Administration/projectdownloads\",\r\n // \"icon\": \"fa fa-domain\",\r\n // \"materialicon\": \"download\",\r\n // \"style\": {\r\n // 'color': '#3f51b5'\r\n // }\r\n // },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Notice Types\",\r\n \"key\": \"notices\",\r\n \"link\": \"#/Administration/noticestypes\",\r\n \"icon\": \"fa fa-sticky-note\",\r\n \"materialicon\": \"article\",\r\n \"style\": {\r\n 'color': '#8bc34a'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Notifications\",\r\n \"key\": \"notificationsettings\",\r\n \"link\": \"#/Administration/notificationsettings\",\r\n \"icon\": \"fa fa-bell-o\",\r\n \"materialicon\": \"notifications_active\",\r\n \"style\": {\r\n 'color': '#40c4ff'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Domains\",\r\n \"key\": \"domains\",\r\n \"link\": \"#/Administration/domains\",\r\n \"icon\": \"fa fa-domain\",\r\n \"materialicon\": \"domain\",\r\n \"style\": {\r\n 'color': '#a98274'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Layers\",\r\n \"key\": \"layers\",\r\n \"link\": \"#/Administration/layers\",\r\n \"icon\": \"fa fa-domain\",\r\n \"materialicon\": \"layers\",\r\n \"style\": {\r\n 'color': '#c85a54'\r\n }\r\n },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"InvoiceCycles\",\r\n // \"key\": \"invoicecycles\",\r\n // \"link\": \"#/Administration/invoicecycles\",\r\n // \"icon\": \"fa fa-users\",\r\n // \"materialicon\": \"paid\",\r\n // \"style\": {\r\n // 'color': '#3f51b5'\r\n // }\r\n // },\r\n\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Configurations\",\r\n // \"key\": \"settings\",\r\n // \"link\": \"#/Administration/settings\",\r\n // \"icon\": \"fa fa-domain\",\r\n // \"materialicon\": \"settings_suggest\",\r\n // \"style\": {\r\n // 'color': '#5ddef4'\r\n // }\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Sidebar Rules\",\r\n // \"key\": \"settings\",\r\n // \"link\": \"#/Administration/sidebarbr\",\r\n // \"icon\": \"fa fa-domain\",\r\n // \"materialicon\": \"ballot\",\r\n // \"style\": {\r\n // 'color': '#aeea00'\r\n // }\r\n // },\r\n\r\n ],\r\n 'sitesettings': [\r\n\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Master Sections\",\r\n \"key\": \"sections\",\r\n \"link\": \"#/Administration/mastersections\",\r\n \"icon\": \"fa fa-columns\",\r\n \"materialicon\": \"view_week\",\r\n \"style\": {\r\n 'color': '#00c853'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Master Fields\",\r\n \"key\": \"masterFieldsList\",\r\n \"link\": \"#/Administration/masterfieldslist\",\r\n \"icon\": \"fa fa-list-alt\",\r\n \"materialicon\": \"view_module\",\r\n \"style\": {\r\n 'color': '#e65100'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Master Permit Types\",\r\n \"key\": \"masterpermittypes\",\r\n \"link\": \"#/Administration/masterpermittypes\",\r\n \"icon\": \"fa fa-id-badge\",\r\n \"materialicon\": \"verified_user\",\r\n \"style\": {\r\n 'color': '#795548'\r\n }\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Configurations\",\r\n \"key\": \"settings\",\r\n \"link\": \"#/Administration/settings\",\r\n \"icon\": \"fa fa-domain\",\r\n \"materialicon\": \"settings_suggest\",\r\n \"style\": {\r\n 'color': '#5ddef4'\r\n }\r\n },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Sidebar Rules\",\r\n // \"key\": \"settings\",\r\n // \"link\": \"#/Administration/sidebarbr\",\r\n // \"icon\": \"fa fa-domain\",\r\n // \"materialicon\": \"ballot\",\r\n // \"style\": {\r\n // 'color': '#aeea00'\r\n // }\r\n // },\r\n\r\n ]\r\n },\r\n}\r\n","import Box from '@material-ui/core/Box';\r\nimport Icon from '@material-ui/core/Icon';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport Tabs from '@material-ui/core/Tabs';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport React from 'react';\r\nimport { getEnvVariable } from '../environmentalList';\r\nimport { AdminList } from '../../json/administration/adminlist';\r\nimport { NoAdminList } from '../../json/administration/noadminlist';\r\nimport { ExternalList } from '../../json/administration/externallist';\r\nimport { NotAdminRegList } from '../../json/administration/notadminreglist';\r\nimport { NotRegList } from '../../json/administration/noregistrationlist';\r\nimport { SuperAdminList } from '../../json/administration/superadminlist';\r\nimport { getSignInToken } from '../../core/modules/header';\r\nimport { PreparerExternalList } from '../../json/administration/preparerexternallist';\r\nimport { SystemAdminList } from '../../json/administration/Systemadminlist';\r\nfunction TabPanel(props) {\r\n const { children, value, index, ...other } = props;\r\n \r\n return (\r\n <Typography\r\n component=\"div\"\r\n role=\"tabpanel\"\r\n hidden={value !== index}\r\n id={`nav-tabpanel-${index}`}\r\n aria-labelledby={`nav-tab-${index}`}\r\n {...other}\r\n >\r\n {value === index && <Box p={3}>{children}</Box>}\r\n </Typography>\r\n );\r\n}\r\n \r\nexport default function PaperSheet(props) {\r\n let permissions = props.accessPermissions;\r\n const [displaySettingsTabList, setDisplaySettingsTabList] = React.useState(!(props.AccessPortal === 'E' || (props.AccessPortal === 'I' &&\r\n permissions && permissions.isSuperAdmin === \"N\") || (props.AccessPortal === 'I' && permissions && permissions.isSystemAdmin === \"N\")))\r\n let printlist =\r\n (props.AccessPortal == 'I' ?\r\n (permissions.isSystemAdmin === 'Y' ? SystemAdminList[getEnvVariable('ModuleKey')] : permissions.isAdmin === 'Y' &&\r\n permissions.isSuperAdmin === 'Y' ? SuperAdminList[getEnvVariable('ModuleKey')] : permissions.isAdmin === 'Y' &&\r\n permissions.isRequestAdmin === 'Y' ? AdminList[getEnvVariable('ModuleKey')] : permissions.isAdmin === 'Y' ?\r\n NotRegList[getEnvVariable('ModuleKey')] : permissions.isRequestAdmin === 'Y' ? NotAdminRegList[getEnvVariable('ModuleKey')] :\r\n NoAdminList[getEnvVariable('ModuleKey')]) : permissions && permissions.roles && permissions.roles.includes(\"Official\") ? ExternalList[getEnvVariable('ModuleKey')] :\r\n PreparerExternalList[getEnvVariable('ModuleKey')]);\r\n \r\n if (printlist && printlist.epsgeneral) {\r\n ((printlist && printlist.epsgeneral) || []).map((e, index) => {\r\n if (e.title === 'Records') {\r\n let submodule = JSON.parse(localStorage.getItem('submodule'))\r\n if (submodule)\r\n printlist.epsgeneral.splice(index, 1, ...submodule);\r\n }\r\n })\r\n }\r\n \r\n if (!getSignInToken()) {\r\n window.location.reload(true)\r\n }\r\n \r\n const [value, setValue] = React.useState((\r\n localStorage.getItem('tab') === 'D' ? 0 : parseInt(localStorage.getItem('tab'))) || 0);\r\n \r\n const handleChange = (event, newValue) => {\r\n setValue(newValue);\r\n }; //eps-img\r\n return (\r\n <div className=\"pt-2 ames-tab-dashboard w-99\">\r\n <Tabs\r\n value={value}\r\n className='col-12'\r\n onChange={handleChange}\r\n variant=\"fullWidth\"\r\n indicatorColor=\"primary\"\r\n textColor=\"primary\"\r\n aria-label=\"icon label tabs example\"\r\n >\r\n <Tab label='Dashboard' />\r\n {props.AccessPortal !== 'E' && permissions.isAdmin === 'Y' && <Tab label=\"Administration\" />}\r\n {props.AccessPortal !== 'E' && displaySettingsTabList && <Tab label={getEnvVariable('ModuleKey')+` Settings`} />}\r\n {props.AccessPortal !== 'E' && displaySettingsTabList && <Tab label={`Site Settings`} />}\r\n </Tabs>\r\n <TabPanel className=\" col-sm-12 p-1\" value={value} index={0}>\r\n <div className=\"row ames-tabpanel\">\r\n {((printlist && printlist.epsgeneral) || []).map(e => {\r\n return <div className=\" col-lg-4 col-md-5 col-sm-4 col-xs-12 p-1\">\r\n <a href={e.title=='Reports' ? e.link:'#' + e.link} > <Paper href={e.link} elevation={4} className=\"p-1\" style={{ backgroundColor: '#212121' }}>\r\n <Typography variant=\"h1\" component=\"h1\" className='text-center'>\r\n <Icon style={e.style || { color: e.color }} className=' dashboard-icons'> {e.materialicon}</Icon>\r\n </Typography>\r\n <Typography component=\"h5\" variant=\"title\" className='text-center' style={{ color: '#ffffff' }}>\r\n {e.title}\r\n </Typography>\r\n </Paper>\r\n </a>\r\n </div>\r\n })}\r\n </div>\r\n </TabPanel>\r\n <TabPanel className=\" col-sm-12 p-1\" value={value} index={1}>\r\n <div className=\"row\">\r\n {(printlist && printlist.Adminlist || []).map(e => {\r\n return <div className=\" col-lg-4 col-md-5 col-sm-4 col-xs-12 p-1\">\r\n <a href={e.link}> <Paper href={e.link} elevation={4} className=\"p-1\" style={{ backgroundColor: '#212121' }}>\r\n <Typography variant=\"h1\" component=\"h1\" className='text-center'>\r\n <Icon style={e.style} className=' dashboard-icons'> {e.materialicon}</Icon>\r\n </Typography>\r\n <Typography component=\"h5\" variant=\"title\" className='text-center' style={{ color: '#ffffff' }}>\r\n {e.title}\r\n </Typography>\r\n </Paper>\r\n </a>\r\n </div>\r\n })}\r\n </div>\r\n </TabPanel>\r\n <TabPanel className=\" col-sm-12 p-1\" value={value} index={2}>\r\n <div className=\"row\">\r\n {(printlist && printlist.settings || []).map(e => {\r\n return <div className=\" col-lg-4 col-md-5 col-sm-4 col-xs-12 p-1\">\r\n <a href={e.link}> <Paper href={e.link} elevation={4} className=\"p-1\" style={{ backgroundColor: '#212121' }}>\r\n <Typography variant=\"h1\" component=\"h1\" className='text-center'>\r\n <Icon style={e.style} className=' dashboard-icons'> {e.materialicon}</Icon>\r\n </Typography>\r\n <Typography component=\"h5\" variant=\"title\" className='text-center' style={{ color: '#ffffff' }}>\r\n {e.title}\r\n </Typography>\r\n </Paper>\r\n </a>\r\n </div>\r\n })}\r\n </div>\r\n </TabPanel>\r\n <TabPanel className=\" col-sm-12 p-1\" value={value} index={3}>\r\n <div className=\"row\">\r\n {(printlist && printlist.sitesettings || []).map(e => {\r\n return <div className=\"col-lg-4 col-md-5 col-sm-4 col-xs-12 p-1\">\r\n <a href={e.link}> <Paper href={e.link} elevation={4} className=\"p-1\" style={{ backgroundColor: '#212121' }}>\r\n <Typography variant=\"h1\" component=\"h1\" className='text-center'>\r\n <Icon style={e.style} className=' dashboard-icons'> {e.materialicon}</Icon>\r\n </Typography>\r\n <Typography component=\"h5\" variant=\"title\" className='text-center' style={{ color: '#ffffff' }}>\r\n {e.title}\r\n </Typography>\r\n </Paper>\r\n </a>\r\n </div>\r\n })}\r\n </div>\r\n </TabPanel>\r\n </div>\r\n );\r\n}","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport {\r\n Chart,\r\n ChartLegend,\r\n ChartSeries,\r\n ChartSeriesItem,\r\n ChartSeriesLabels,\r\n ChartTitle,\r\n ChartTooltip,\r\n ChartValueAxis,\r\n ChartValueAxisItem,\r\n ChartCategoryAxis,\r\n ChartCategoryAxisItem,\r\n ChartArea\r\n} from '@progress/kendo-react-charts';\r\n\r\n// Chart color configuration\r\nconst CHART_COLORS = {\r\n SAME_DAY: '#50C878', // Green\r\n ONE_DAY: '#45B7D1', // Light Blue\r\n TWO_DAYS: '#4B9EFF', // Blue\r\n THREE_DAYS: '#9B59B6', // Purple\r\n FOUR_DAYS: '#FF7F50', // Coral\r\n FIVE_PLUS_DAYS: '#C0392B', // Dark Red\r\n OTHERS: '#808080', // Gray\r\n ADDITIONAL: [ // Additional colors for other categories\r\n '#45B7D1', '#FF69B4', '#20B2AA', '#FFA07A', '#BA55D3'\r\n ]\r\n};\r\n\r\n// Chart style constants\r\nconst CHART_STYLES = {\r\n FONT_FAMILY: \"'Segoe UI', sans-serif\",\r\n TITLE_COLOR: '#2e4053',\r\n GRID_COLOR: '#e0e0e0',\r\n TOOLTIP_BG: 'rgba(46, 64, 83, 0.95)',\r\n LABEL_COLOR: '#ffffff',\r\n LABEL_SHADOW: '0 1px 2px rgba(0,0,0,0.2)'\r\n};\r\n\r\n// Generate color palette with better contrast and consistency\r\nconst generateColorPalette = (count) => {\r\n const baseColors = [\r\n { h: 210, s: 65, l: 45 }, // Blue\r\n { h: 150, s: 60, l: 45 }, // Green\r\n { h: 280, s: 55, l: 45 }, // Purple\r\n { h: 25, s: 65, l: 45 }, // Orange\r\n { h: 340, s: 60, l: 45 }, // Red\r\n { h: 190, s: 55, l: 45 }, // Teal\r\n { h: 45, s: 65, l: 45 }, // Gold\r\n { h: 315, s: 55, l: 45 }, // Pink\r\n ];\r\n\r\n const colors = [];\r\n const iterations = Math.ceil(count / baseColors.length);\r\n\r\n for (let i = 0; i < iterations; i++) {\r\n baseColors.forEach((base, index) => {\r\n if (colors.length < count) {\r\n const lightness = base.l + (i * 10);\r\n colors.push(`hsl(${base.h}, ${base.s}%, ${Math.min(lightness, 65)}%)`);\r\n }\r\n });\r\n }\r\n\r\n return colors;\r\n};\r\n\r\n/**\r\n * Formats a number with thousands separator\r\n * @param {number} num - Number to format\r\n * @returns {string} Formatted number\r\n */\r\nconst formatNumber = (num) => {\r\n return new Intl.NumberFormat().format(num);\r\n};\r\n\r\n/**\r\n * Processes chart data to calculate percentages (no longer groups small segments)\r\n * @param {Array} data - Raw chart data\r\n * @returns {Array} Processed chart data\r\n */\r\nconst processChartData = (data) => {\r\n const total = data.reduce((sum, item) => sum + item.share, 0);\r\n \r\n // Calculate percentages and sort by share descending\r\n return data\r\n .map(item => ({\r\n ...item,\r\n percentage: (item.share / total) * 100,\r\n color: getColorForCategory(item.kind, data.indexOf(item))\r\n }))\r\n .sort((a, b) => b.share - a.share);\r\n};\r\n\r\n/**\r\n * Returns appropriate color for a category\r\n * @param {string} category - Category name\r\n * @param {number} index - Index for fallback color\r\n * @returns {string} Color code\r\n */\r\nconst getColorForCategory = (category, index) => {\r\n // Normalize category name for comparison\r\n const normalizedCategory = category.toLowerCase();\r\n \r\n // Check for variations of \"5+ Business Days\"\r\n if (normalizedCategory.includes('5+ business days')) {\r\n return CHART_COLORS.FIVE_PLUS_DAYS;\r\n }\r\n \r\n // Standard category checks for county performance\r\n switch(category) {\r\n case \"Cases Cleared on Same Day\":\r\n return CHART_COLORS.SAME_DAY;\r\n case \"Cases Cleared in 1 Business Day\":\r\n return CHART_COLORS.ONE_DAY;\r\n case \"Cases Cleared in 2+ Business Days\":\r\n return CHART_COLORS.FIVE_PLUS_DAYS; // Using Dark Red for 2+ days\r\n case \"Cases Cleared in 2 Business Days\":\r\n return CHART_COLORS.TWO_DAYS;\r\n case \"Cases Cleared in 3 Business Days\":\r\n return CHART_COLORS.THREE_DAYS;\r\n case \"Cases Cleared in 4 Business Days\":\r\n return CHART_COLORS.FOUR_DAYS;\r\n case \"Cases Cleared in 5+ Business Days\":\r\n return CHART_COLORS.FIVE_PLUS_DAYS;\r\n default:\r\n return CHART_COLORS.ADDITIONAL[index % CHART_COLORS.ADDITIONAL.length];\r\n }\r\n};\r\n\r\n/**\r\n * Custom tooltip component for bubble charts\r\n */\r\nconst BubbleTooltip = ({ point }) => {\r\n if (!point || !point.dataItem) return null;\r\n \r\n const { dataItem } = point;\r\n return (\r\n <div style={{ \r\n padding: '10px',\r\n background: 'rgba(255, 255, 255, 0.95)',\r\n boxShadow: '0 2px 6px rgba(0,0,0,0.2)',\r\n borderRadius: '4px'\r\n }}>\r\n <strong style={{ color: dataItem.color }}>{dataItem.kind}</strong>\r\n <br />\r\n {dataItem.tooltip ? (\r\n <>\r\n <strong>Total: {formatNumber(dataItem.share)}</strong>\r\n <br />\r\n <small style={{ whiteSpace: 'pre-line' }}>{dataItem.tooltip}</small>\r\n </>\r\n ) : (\r\n <>Total: {formatNumber(dataItem.share)}</>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nBubbleTooltip.propTypes = {\r\n point: PropTypes.shape({\r\n dataItem: PropTypes.shape({\r\n kind: PropTypes.string,\r\n share: PropTypes.number,\r\n color: PropTypes.string,\r\n tooltip: PropTypes.string\r\n })\r\n }).isRequired\r\n};\r\n\r\n/**\r\n * KendoChart component for rendering various chart types\r\n */\r\nclass KendoChart extends React.Component {\r\n static propTypes = {\r\n data: PropTypes.array.isRequired,\r\n reportval: PropTypes.func,\r\n showPercentages: PropTypes.bool,\r\n reportType: PropTypes.string,\r\n monthName: PropTypes.string,\r\n isSecondChart: PropTypes.bool,\r\n animalType: PropTypes.string,\r\n chartType: PropTypes.string,\r\n showValues: PropTypes.bool\r\n };\r\n\r\n static defaultProps = {\r\n showPercentages: true,\r\n reportType: \"1\",\r\n monthName: \"\",\r\n isSecondChart: false,\r\n animalType: \"dog\",\r\n chartType: null,\r\n showValues: false\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n chartType: props.chartType || ((props.reportType === \"6\" || props.reportType === \"7\" || props.reportType === \"2\") ? \"column\" : \"donut\"),\r\n hoveredSeries: null\r\n };\r\n }\r\n\r\n /**\r\n * Renders the center of donut charts\r\n */\r\n donutCenterRenderer = () => {\r\n const { data } = this.props;\r\n const total = data.reduce((acc, curr) => acc + curr.share, 0);\r\n return <h3>{formatNumber(total)}</h3>;\r\n };\r\n\r\n /**\r\n * Renders a column chart for report type 6\r\n */\r\n renderColumnChart = (data, total, showPercentages, showValues = false) => {\r\n const { reportType, animalType } = this.props;\r\n const useHorizontalBars = data.length > 20; // Determine bar orientation based on data length\r\n \r\n // Special handling for report type 7\r\n if (reportType === \"7\") {\r\n // Sort data by total cases\r\n const sortedData = [...data].sort((a, b) => b.share - a.share);\r\n const categories = sortedData.map(item => item.kind);\r\n \r\n // Generate colors for counties\r\n const countyColors = {};\r\n const colors = generateColorPalette(categories.length);\r\n categories.forEach((county, index) => {\r\n countyColors[county] = colors[index];\r\n });\r\n\r\n return (\r\n <div style={{ width: '100%', height: '100%', padding: '12px' }}>\r\n <Chart style={{ height: '100%' }}>\r\n <ChartArea background=\"#f8f9fa\" />\r\n <ChartTitle \r\n text={`Pending ${animalType.charAt(0).toUpperCase() + animalType.slice(1)} Disposal by Counties with Due Dates (Total: ${formatNumber(total)})`}\r\n color={CHART_STYLES.TITLE_COLOR}\r\n font={`bold 16px ${CHART_STYLES.FONT_FAMILY}`}\r\n margin={{ bottom: 15 }}\r\n />\r\n \r\n <ChartValueAxis>\r\n <ChartValueAxisItem \r\n title={{ \r\n text: \"Number of Cases\",\r\n font: `13px ${CHART_STYLES.FONT_FAMILY}`,\r\n color: CHART_STYLES.TITLE_COLOR\r\n }}\r\n labels={{\r\n format: \"{0:n0}\",\r\n font: `12px ${CHART_STYLES.FONT_FAMILY}`,\r\n color: CHART_STYLES.TITLE_COLOR,\r\n step: 2 // Show fewer labels to save space\r\n }}\r\n line={{ color: CHART_STYLES.GRID_COLOR }}\r\n majorGridLines={{ color: CHART_STYLES.GRID_COLOR }}\r\n min={0}\r\n />\r\n </ChartValueAxis>\r\n\r\n <ChartCategoryAxis>\r\n <ChartCategoryAxisItem\r\n categories={categories}\r\n labels={{\r\n font: `10px ${CHART_STYLES.FONT_FAMILY}`,\r\n color: CHART_STYLES.TITLE_COLOR,\r\n rotation: useHorizontalBars ? 0 : -45,\r\n padding: { right: 12 }\r\n }}\r\n line={{ color: CHART_STYLES.GRID_COLOR }}\r\n majorGridLines={{ visible: false }}\r\n />\r\n </ChartCategoryAxis>\r\n\r\n <ChartSeries>\r\n <ChartSeriesItem\r\n type={useHorizontalBars ? \"bar\" : \"column\"}\r\n data={sortedData}\r\n field=\"share\"\r\n categoryField=\"kind\"\r\n color={item => countyColors[item.dataItem.kind]}\r\n gap={0.2}\r\n spacing={0.1}\r\n >\r\n <ChartSeriesLabels \r\n visible={true}\r\n content={e => {\r\n if (e.value === 0) return '';\r\n const percentage = (e.value / total * 100).toFixed(1);\r\n return showPercentages ? \r\n `${formatNumber(e.value)} (${percentage}%)` : \r\n formatNumber(e.value);\r\n }}\r\n color=\"#fff\"\r\n background=\"none\"\r\n position=\"center\"\r\n font={`9px ${CHART_STYLES.FONT_FAMILY}`}\r\n style={{\r\n textShadow: CHART_STYLES.LABEL_SHADOW\r\n }}\r\n />\r\n </ChartSeriesItem>\r\n </ChartSeries>\r\n\r\n <ChartTooltip render={({ point }) => {\r\n if (!point) return null;\r\n\r\n const countyData = sortedData.find(item => item.kind === point.category);\r\n if (!countyData) return null;\r\n\r\n return (\r\n <div style={{\r\n padding: '12px 16px',\r\n background: 'rgba(255,255,255,0.98)',\r\n boxShadow: '0 2px 4px rgba(0,0,0,0.15)',\r\n borderRadius: '4px',\r\n fontSize: '12px',\r\n lineHeight: '1.6',\r\n whiteSpace: 'pre-line',\r\n minWidth: '200px',\r\n border: '1px solid rgba(0,0,0,0.1)',\r\n color: '#333' // Ensure text is black/dark gray\r\n }}>\r\n <div style={{ marginBottom: '8px' }}>\r\n <strong style={{ \r\n color: countyColors[countyData.kind],\r\n fontSize: '14px'\r\n }}>{countyData.kind}</strong>\r\n </div>\r\n <div style={{ \r\n display: 'flex', \r\n justifyContent: 'space-between',\r\n marginBottom: '8px',\r\n borderBottom: '1px solid #eee',\r\n paddingBottom: '4px'\r\n }}>\r\n <strong>Total Cases:</strong>\r\n <span>{formatNumber(point.value)}</span>\r\n </div>\r\n {countyData.dueDates && (\r\n <div style={{ fontSize: '11px', color: '#444' }}>\r\n {Object.entries(countyData.dueDates).map(([label, value]) => (\r\n <div key={label} style={{ \r\n display: 'flex', \r\n justifyContent: 'space-between', \r\n marginBottom: '2px' \r\n }}>\r\n <span>{label}:</span>\r\n <strong>{formatNumber(value)}</strong>\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }} />\r\n\r\n <ChartLegend visible={false} />\r\n </Chart>\r\n </div>\r\n );\r\n }\r\n\r\n // Special handling for report type 8 (Sign Inventory Report)\r\n if (reportType === \"8\") {\r\n // Sort data by share value\r\n const sortedData = [...data].sort((a, b) => b.share - a.share);\r\n \r\n // Split data into counties with values and counties with zero values\r\n const countiesWithValues = sortedData.filter(item => item.share > 0);\r\n const countiesWithZero = sortedData.filter(item => item.share === 0);\r\n \r\n // Display all counties - we'll use horizontal bars and adjust the chart height\r\n const displayedData = sortedData;\r\n \r\n // Always force horizontal bars for this report for better readability with many counties\r\n const useHorizontalBars = true;\r\n \r\n // Calculate total for displayed counties (only those with values)\r\n const displayedTotal = countiesWithValues.reduce((sum, item) => sum + item.share, 0);\r\n \r\n // Generate colors for counties\r\n const countyColors = {};\r\n const colors = generateColorPalette(countiesWithValues.length);\r\n countiesWithValues.forEach((county, index) => {\r\n countyColors[county.kind] = colors[index % colors.length];\r\n });\r\n \r\n // Zero-value counties get a light gray\r\n countiesWithZero.forEach(county => {\r\n countyColors[county.kind] = 'rgba(200, 200, 200, 0.3)';\r\n });\r\n \r\n // Get categories in order for display\r\n const categories = displayedData.map(item => item.kind);\r\n \r\n // Set a fixed pixel height per county with a minimum chart height\r\n const heightPerCounty = 18; // pixels per county\r\n const minChartHeight = 500; // minimum chart height\r\n const calculatedHeight = Math.max(minChartHeight, 100 + (heightPerCounty * displayedData.length));\r\n \r\n // Get the correct total county count - either from metadata or default to 72\r\n const totalCounties = data.totalCounties || 72;\r\n \r\n return (\r\n <div style={{ \r\n width: '100%', \r\n height: '100%', \r\n padding: '12px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n overflow: 'hidden' // Prevent outer container from scrolling\r\n }}>\r\n <div style={{\r\n marginBottom: '5px'\r\n }}>\r\n <div style={{\r\n fontWeight: 'bold',\r\n fontSize: '16px',\r\n color: CHART_STYLES.TITLE_COLOR,\r\n marginBottom: '5px',\r\n textAlign: 'center'\r\n }}>\r\n {`Total Request/All counties - ${animalType.charAt(0).toUpperCase() + animalType.slice(1)} (Total: ${formatNumber(total)})`}\r\n </div>\r\n <div style={{\r\n fontSize: '12px',\r\n color: '#666',\r\n marginBottom: '10px',\r\n textAlign: 'center'\r\n }}>\r\n {`${countiesWithValues.length} of ${totalCounties} counties have request data`}\r\n </div>\r\n </div>\r\n \r\n {/* Chart container with scroll capability */}\r\n <div style={{ \r\n flex: 1,\r\n overflow: 'auto', // Enable scrolling for this container\r\n border: '1px solid #eee',\r\n borderRadius: '4px',\r\n position: 'relative'\r\n }}>\r\n <div style={{\r\n height: `${calculatedHeight}px`,\r\n minHeight: `${minChartHeight}px`,\r\n width: '100%'\r\n }}>\r\n <Chart style={{ height: '100%', width: '100%' }}>\r\n <ChartArea background=\"#f8f9fa\" />\r\n \r\n <ChartValueAxis>\r\n <ChartValueAxisItem \r\n title={{ \r\n text: \"Number of Requests\",\r\n font: `13px ${CHART_STYLES.FONT_FAMILY}`,\r\n color: CHART_STYLES.TITLE_COLOR\r\n }}\r\n labels={{\r\n format: \"{0:n0}\",\r\n font: `12px ${CHART_STYLES.FONT_FAMILY}`,\r\n color: CHART_STYLES.TITLE_COLOR,\r\n step: 2\r\n }}\r\n line={{ color: CHART_STYLES.GRID_COLOR }}\r\n majorGridLines={{ color: CHART_STYLES.GRID_COLOR }}\r\n min={0}\r\n />\r\n </ChartValueAxis>\r\n\r\n <ChartCategoryAxis>\r\n <ChartCategoryAxisItem\r\n categories={categories}\r\n labels={{\r\n font: `11px ${CHART_STYLES.FONT_FAMILY}`,\r\n color: CHART_STYLES.TITLE_COLOR,\r\n padding: { right: 4 },\r\n rotation: 0 // No rotation needed for horizontal bars\r\n }}\r\n line={{ color: CHART_STYLES.GRID_COLOR }}\r\n majorGridLines={{ visible: false }}\r\n />\r\n </ChartCategoryAxis>\r\n\r\n <ChartSeries>\r\n <ChartSeriesItem\r\n type=\"bar\" // Use horizontal bars\r\n data={displayedData}\r\n field=\"share\"\r\n categoryField=\"kind\"\r\n color={item => {\r\n // Make zero-value counties a lighter color\r\n const isZero = item.dataItem.share === 0;\r\n const baseColor = countyColors[item.dataItem.kind];\r\n \r\n if (isZero) {\r\n return 'rgba(200, 200, 200, 0.3)';\r\n }\r\n \r\n return baseColor;\r\n }}\r\n gap={0.2} // Slightly reduce gap for more compact display with many counties\r\n spacing={0.1}\r\n >\r\n <ChartSeriesLabels \r\n visible={true}\r\n content={e => {\r\n if (e.value === 0) return '0';\r\n const percentage = (e.value / displayedTotal * 100).toFixed(1);\r\n return showPercentages ? \r\n `${formatNumber(e.value)} (${percentage}%)` : \r\n formatNumber(e.value);\r\n }}\r\n color={e => e.value === 0 ? '#999' : '#fff'}\r\n background=\"none\"\r\n position=\"center\"\r\n font={`11px ${CHART_STYLES.FONT_FAMILY}`}\r\n style={{\r\n textShadow: e => e.value === 0 ? 'none' : CHART_STYLES.LABEL_SHADOW\r\n }}\r\n />\r\n </ChartSeriesItem>\r\n </ChartSeries>\r\n\r\n <ChartTooltip render={({ point }) => {\r\n const item = displayedData.find(d => d.kind === point.category);\r\n if (!item) return null;\r\n \r\n const percentage = displayedTotal > 0 ? (item.share / displayedTotal * 100).toFixed(1) : '0.0';\r\n return (\r\n <div style={{\r\n padding: '10px',\r\n backgroundColor: 'white',\r\n border: '1px solid #ccc',\r\n boxShadow: '0 2px 4px rgba(0,0,0,0.2)',\r\n borderRadius: '4px',\r\n color: '#333' // Ensure text is black/dark gray\r\n }}>\r\n <strong>{item.kind}</strong><br />\r\n Requests: {formatNumber(item.share)}<br />\r\n {percentage}% of total\r\n </div>\r\n );\r\n }} />\r\n </Chart>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n // Original column chart code for report type 6\r\n if (reportType === \"6\") {\r\n // Get unique contractors and assign colors\r\n const allContractors = new Set();\r\n data.forEach(county => {\r\n if (county.contractors) {\r\n county.contractors.forEach(contractor => {\r\n allContractors.add(contractor.name);\r\n });\r\n }\r\n });\r\n\r\n // Generate colors for contractors\r\n const contractorColors = {};\r\n const colors = generateColorPalette(allContractors.size);\r\n [...allContractors].forEach((contractor, index) => {\r\n contractorColors[contractor] = colors[index];\r\n });\r\n\r\n // Sort counties by total cases\r\n const sortedData = [...data].sort((a, b) => b.share - a.share);\r\n const categories = sortedData.map(item => item.kind);\r\n \r\n // Prepare series data\r\n const series = [...allContractors].map(contractorName => ({\r\n name: contractorName,\r\n data: sortedData.map(county => {\r\n const contractor = county.contractors?.find(c => c.name === contractorName);\r\n return contractor ? contractor.share : 0;\r\n }),\r\n color: contractorColors[contractorName]\r\n }));\r\n\r\n // Filter out series with all zero values\r\n const filteredSeries = series.filter(s => s.data.some(value => value > 0));\r\n\r\n return (\r\n <div style={{ width: '100%', height: '800px', padding: '20px' }}>\r\n <Chart style={{ height: '100%' }}>\r\n <ChartArea background=\"#f8f9fa\" />\r\n <ChartTitle \r\n text={`Pending ${animalType.charAt(0).toUpperCase() + animalType.slice(1)} Disposal by Counties (Total: ${formatNumber(total)})`}\r\n color={CHART_STYLES.TITLE_COLOR}\r\n font={`bold 18px ${CHART_STYLES.FONT_FAMILY}`}\r\n margin={{ bottom: 20 }}\r\n />\r\n \r\n <ChartValueAxis>\r\n <ChartValueAxisItem \r\n title={{ \r\n text: \"Number of Cases\",\r\n font: `14px ${CHART_STYLES.FONT_FAMILY}`,\r\n color: CHART_STYLES.TITLE_COLOR,\r\n margin: { right: 10 }\r\n }}\r\n labels={{\r\n format: \"{0:n0}\",\r\n font: `12px ${CHART_STYLES.FONT_FAMILY}`,\r\n color: CHART_STYLES.TITLE_COLOR,\r\n step: 2\r\n }}\r\n line={{ color: CHART_STYLES.GRID_COLOR }}\r\n majorGridLines={{ \r\n color: CHART_STYLES.GRID_COLOR,\r\n visible: true,\r\n step: 2\r\n }}\r\n min={0}\r\n />\r\n </ChartValueAxis>\r\n\r\n <ChartCategoryAxis>\r\n <ChartCategoryAxisItem\r\n categories={categories}\r\n labels={{\r\n font: `10px ${CHART_STYLES.FONT_FAMILY}`,\r\n color: CHART_STYLES.TITLE_COLOR,\r\n padding: { right: 12 },\r\n rotation: useHorizontalBars ? 0 : -45\r\n }}\r\n line={{ color: CHART_STYLES.GRID_COLOR }}\r\n majorGridLines={{ visible: false }}\r\n />\r\n </ChartCategoryAxis>\r\n\r\n <ChartSeries>\r\n {filteredSeries.map((series, index) => (\r\n <ChartSeriesItem\r\n key={series.name}\r\n type={useHorizontalBars ? \"bar\" : \"column\"}\r\n stack={{\r\n type: \"normal\",\r\n group: \"county\"\r\n }}\r\n name={series.name}\r\n data={series.data}\r\n color={series.color}\r\n gap={0.25}\r\n spacing={0.1}\r\n opacity={1}\r\n border={{\r\n width: 1,\r\n color: \"rgba(0,0,0,0.1)\"\r\n }}\r\n >\r\n <ChartSeriesLabels\r\n visible={true}\r\n content={e => {\r\n if (e.value === 0) return '';\r\n \r\n const county = sortedData.find(c => c.kind === e.category);\r\n if (!county) return '';\r\n \r\n const countyTotal = county.share;\r\n const percentage = countyTotal > 0 ? (e.value / countyTotal * 100).toFixed(1) : '0.0';\r\n \r\n // Only show labels for significant values (reduced threshold to 3%)\r\n // This helps avoid cluttering the chart\r\n if (e.value < countyTotal * 0.03) return '';\r\n \r\n // Show compact display - we'll have detailed breakdown in tooltip\r\n return showPercentages ? \r\n `${formatNumber(e.value)} (${percentage}%)` : \r\n formatNumber(e.value);\r\n }}\r\n color=\"#fff\"\r\n background=\"none\"\r\n padding={{ top: 0, bottom: 0, left: 3, right: 3 }}\r\n position=\"center\"\r\n rotation={0}\r\n font={`9px ${CHART_STYLES.FONT_FAMILY}`}\r\n style={{\r\n textShadow: CHART_STYLES.LABEL_SHADOW\r\n }}\r\n />\r\n </ChartSeriesItem>\r\n ))}\r\n </ChartSeries>\r\n\r\n <ChartLegend \r\n visible={true}\r\n position=\"right\"\r\n orientation=\"vertical\"\r\n padding={{ left: 16 }}\r\n background=\"transparent\"\r\n labels={{\r\n font: `10px ${CHART_STYLES.FONT_FAMILY}`,\r\n color: CHART_STYLES.TITLE_COLOR\r\n }}\r\n item={{\r\n cursor: \"pointer\",\r\n hover: {\r\n background: \"rgba(0,0,0,0.05)\"\r\n }\r\n }}\r\n />\r\n\r\n <ChartTooltip render={({ point }) => {\r\n if (!point) return null;\r\n\r\n const county = sortedData.find(item => item.kind === point.category);\r\n if (!county) return null;\r\n\r\n const contractorName = point.series.name;\r\n const contractorData = county.contractors?.find(c => c.name === contractorName);\r\n if (!contractorData) return null;\r\n\r\n const countyTotal = county.share;\r\n // Verify that this contractor's data is consistent\r\n const contractorTotal = contractorData.share;\r\n const dueTotal = \r\n contractorData.dueDates['Same Day'] +\r\n contractorData.dueDates['1 Day'] +\r\n contractorData.dueDates['2 Days'] +\r\n contractorData.dueDates['2+ Days'];\r\n \r\n const percentage = countyTotal > 0 ? (contractorTotal / countyTotal * 100).toFixed(1) : '0.0';\r\n\r\n // Check if there's a discrepancy\r\n const hasMismatch = Math.abs(contractorTotal - dueTotal) > 0.01;\r\n const hasTinySegments = county.contractors.some(c => \r\n c.share > 0 && c.share < countyTotal * 0.03\r\n );\r\n\r\n return (\r\n <div style={{\r\n padding: '10px 12px',\r\n background: 'rgba(255,255,255,0.98)',\r\n boxShadow: '0 2px 4px rgba(0,0,0,0.15)',\r\n borderRadius: '4px',\r\n fontSize: '11px',\r\n lineHeight: '1.4',\r\n whiteSpace: 'pre-line',\r\n minWidth: '180px',\r\n border: '1px solid rgba(0,0,0,0.1)'\r\n }}>\r\n <div style={{ marginBottom: '6px' }}>\r\n <strong style={{ \r\n color: point.series.color,\r\n fontSize: '12px'\r\n }}>{contractorName}</strong>\r\n <br />\r\n <span style={{ color: '#666' }}>{county.kind}</span>\r\n </div>\r\n <div style={{ \r\n display: 'flex', \r\n justifyContent: 'space-between',\r\n marginBottom: '8px',\r\n borderBottom: '1px solid #eee',\r\n paddingBottom: '4px'\r\n }}>\r\n <strong>Cases:</strong>\r\n <span>{formatNumber(contractorTotal)} ({percentage}%)</span>\r\n </div>\r\n {hasMismatch && (\r\n <div style={{\r\n marginBottom: '6px',\r\n padding: '4px',\r\n fontSize: '10px',\r\n color: '#d32f2f',\r\n backgroundColor: 'rgba(211, 47, 47, 0.08)',\r\n borderRadius: '2px'\r\n }}>\r\n Warning: Total doesn't match due date sum\r\n </div>\r\n )}\r\n {hasTinySegments && !hasMismatch && (\r\n <div style={{\r\n marginBottom: '6px',\r\n fontSize: '10px',\r\n color: '#666',\r\n fontStyle: 'italic'\r\n }}>\r\n Note: Some segments smaller than 3% have no visible labels\r\n </div>\r\n )}\r\n {contractorData.dueDates && (\r\n <div style={{ fontSize: '11px', color: '#444' }}>\r\n {Object.entries(contractorData.dueDates).map(([label, value]) => (\r\n <div key={label} style={{ \r\n display: 'flex', \r\n justifyContent: 'space-between', \r\n marginBottom: '2px' \r\n }}>\r\n <span>{label}:</span>\r\n <strong>{formatNumber(value)}</strong>\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }} />\r\n </Chart>\r\n </div>\r\n );\r\n }\r\n\r\n // Special handling for report type 2\r\n if (reportType === \"2\") {\r\n // Group data by animal type\r\n const animalTypes = {};\r\n data.forEach(item => {\r\n if (!animalTypes[item.animalType]) {\r\n animalTypes[item.animalType] = [];\r\n }\r\n animalTypes[item.animalType].push(item);\r\n });\r\n\r\n // Get unique counties and assign random colors\r\n const uniqueCounties = [...new Set(data.map(item => item.kind))];\r\n const countyColors = {};\r\n const colors = generateColorPalette(uniqueCounties.length);\r\n uniqueCounties.forEach((county, index) => {\r\n countyColors[county] = colors[index];\r\n });\r\n\r\n // Sort data by share value\r\n const sortedData = [...data].sort((a, b) => b.share - a.share);\r\n const categories = sortedData.map(item => item.kind);\r\n \r\n // Determine if we should use horizontal bars based on data length\r\n const useHorizontalBars = data.length > 20;\r\n\r\n return (\r\n <div style={{ width: '100%', height: '800px', padding: '20px' }}>\r\n <Chart style={{ height: '100%' }}>\r\n <ChartArea background=\"#f8f9fa\" />\r\n <ChartTitle \r\n text={`Pending ${this.props.animalType.charAt(0).toUpperCase() + this.props.animalType.slice(1)} Disposal by Counties (Total: ${formatNumber(total)})`}\r\n color={CHART_STYLES.TITLE_COLOR}\r\n font={`bold 18px ${CHART_STYLES.FONT_FAMILY}`}\r\n margin={{ bottom: 20 }}\r\n />\r\n \r\n <ChartValueAxis>\r\n <ChartValueAxisItem \r\n title={{ \r\n text: \"Number of Cases\",\r\n font: `14px ${CHART_STYLES.FONT_FAMILY}`,\r\n color: CHART_STYLES.TITLE_COLOR\r\n }}\r\n labels={{\r\n format: \"{0:n0}\",\r\n font: `12px ${CHART_STYLES.FONT_FAMILY}`,\r\n color: CHART_STYLES.TITLE_COLOR\r\n }}\r\n line={{ color: CHART_STYLES.GRID_COLOR }}\r\n majorGridLines={{ color: CHART_STYLES.GRID_COLOR }}\r\n min={0}\r\n />\r\n </ChartValueAxis>\r\n\r\n <ChartCategoryAxis>\r\n <ChartCategoryAxisItem\r\n categories={categories}\r\n labels={{\r\n font: `10px ${CHART_STYLES.FONT_FAMILY}`,\r\n color: CHART_STYLES.TITLE_COLOR,\r\n rotation: useHorizontalBars ? 0 : -45,\r\n padding: { right: 12 }\r\n }}\r\n line={{ color: CHART_STYLES.GRID_COLOR }}\r\n majorGridLines={{ visible: false }}\r\n />\r\n </ChartCategoryAxis>\r\n\r\n <ChartSeries>\r\n <ChartSeriesItem\r\n type={useHorizontalBars ? \"bar\" : \"column\"}\r\n data={sortedData}\r\n field=\"share\"\r\n categoryField=\"kind\"\r\n color={item => countyColors[item.dataItem.kind]}\r\n gap={0.2}\r\n spacing={0.1}\r\n >\r\n <ChartSeriesLabels \r\n visible={true}\r\n content={e => {\r\n if (e.value === 0) return '';\r\n const percentage = (e.value / total * 100).toFixed(1);\r\n return showPercentages ? \r\n `${formatNumber(e.value)} (${percentage}%)` : \r\n formatNumber(e.value);\r\n }}\r\n color=\"#fff\" \r\n background=\"none\"\r\n position=\"center\"\r\n font={`9px ${CHART_STYLES.FONT_FAMILY}`}\r\n style={{\r\n textShadow: CHART_STYLES.LABEL_SHADOW\r\n }}\r\n />\r\n </ChartSeriesItem>\r\n </ChartSeries>\r\n\r\n <ChartTooltip render={({ point }) => {\r\n if (!point) return null;\r\n\r\n const countyData = sortedData.find(item => item.kind === point.category);\r\n if (!countyData) return null;\r\n\r\n return (\r\n <div style={{\r\n padding: '10px 12px',\r\n background: 'rgba(255,255,255,0.98)',\r\n boxShadow: '0 2px 4px rgba(0,0,0,0.15)',\r\n borderRadius: '4px',\r\n fontSize: '11px',\r\n lineHeight: '1.4',\r\n whiteSpace: 'pre-line',\r\n minWidth: '180px',\r\n border: '1px solid rgba(0,0,0,0.1)'\r\n }}>\r\n <div style={{ marginBottom: '6px' }}>\r\n <strong style={{ \r\n color: countyColors[countyData.kind],\r\n fontSize: '12px'\r\n }}>{countyData.kind}</strong>\r\n </div>\r\n <div style={{ \r\n display: 'flex', \r\n justifyContent: 'space-between',\r\n marginBottom: '8px',\r\n borderBottom: '1px solid #eee',\r\n paddingBottom: '4px'\r\n }}>\r\n <strong>Total Cases:</strong>\r\n <span>{formatNumber(point.value)}</span>\r\n </div>\r\n {countyData.dueDates && (\r\n <div style={{ fontSize: '11px', color: '#444' }}>\r\n {Object.entries(countyData.dueDates).map(([label, value]) => (\r\n <div key={label} style={{ \r\n display: 'flex', \r\n justifyContent: 'space-between', \r\n marginBottom: '2px' \r\n }}>\r\n <span>{label}:</span>\r\n <strong>{formatNumber(value)}</strong>\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }} />\r\n\r\n <ChartLegend visible={false} />\r\n </Chart>\r\n </div>\r\n );\r\n }\r\n\r\n // Original column chart code for other report types\r\n const sortedData = [...data].sort((a, b) => b.share - a.share);\r\n const colors = generateColorPalette(sortedData.length);\r\n const processedData = sortedData.map((item, index) => ({\r\n ...item,\r\n color: colors[index],\r\n percentage: (item.share / total * 100).toFixed(1)\r\n }));\r\n\r\n return (\r\n <div style={{ width: '100%', height: '600px', padding: '20px' }}>\r\n <Chart style={{ height: '100%' }}>\r\n <ChartArea background=\"#f8f9fa\" />\r\n <ChartTitle \r\n text={this.props.isSecondChart ? \"Contractor Performance\" : `Case Disposal Performance (Total: ${formatNumber(total)})`}\r\n color={CHART_STYLES.TITLE_COLOR}\r\n font={`bold 14px ${CHART_STYLES.FONT_FAMILY}`} // Reduced from 16px\r\n margin={{ bottom: 8 }}\r\n />\r\n <ChartValueAxis>\r\n <ChartValueAxisItem \r\n title={{ \r\n text: \"Number of Cases\",\r\n font: `14px ${CHART_STYLES.FONT_FAMILY}`,\r\n color: CHART_STYLES.TITLE_COLOR,\r\n margin: { right: 10 }\r\n }}\r\n labels={{\r\n format: \"{0:n0}\",\r\n font: `12px ${CHART_STYLES.FONT_FAMILY}`,\r\n color: CHART_STYLES.TITLE_COLOR\r\n }}\r\n line={{ color: CHART_STYLES.GRID_COLOR }}\r\n majorGridLines={{ color: CHART_STYLES.GRID_COLOR, dashType: \"dash\" }}\r\n />\r\n </ChartValueAxis>\r\n <ChartCategoryAxis>\r\n <ChartCategoryAxisItem\r\n categories={processedData.map(item => item.kind)}\r\n labels={{\r\n rotation: useHorizontalBars ? 0 : -45,\r\n font: `10px ${CHART_STYLES.FONT_FAMILY}`,\r\n color: CHART_STYLES.TITLE_COLOR,\r\n margin: { top: 10 }\r\n }}\r\n line={{ color: CHART_STYLES.GRID_COLOR }}\r\n majorGridLines={{ visible: false }}\r\n />\r\n </ChartCategoryAxis>\r\n <ChartSeries>\r\n <ChartSeriesItem\r\n type={useHorizontalBars ? \"bar\" : \"column\"}\r\n data={processedData}\r\n field=\"share\"\r\n categoryField=\"kind\"\r\n colorField=\"color\"\r\n gap={0.2}\r\n spacing={0.1}\r\n border={{ width: 0 }}\r\n highlight={{\r\n visible: true,\r\n border: {\r\n width: 2,\r\n color: CHART_STYLES.TITLE_COLOR\r\n }\r\n }}\r\n >\r\n <ChartSeriesLabels\r\n visible={true}\r\n content={e => {\r\n const countyTotal = data[e.category]?.share || 0;\r\n const percentage = countyTotal > 0 ? (e.value / countyTotal * 100).toFixed(1) : '0.0';\r\n return showPercentages ? \r\n `${percentage}%\\n(${formatNumber(e.value)})` : \r\n formatNumber(e.value);\r\n }}\r\n background={CHART_STYLES.LABEL_BG}\r\n padding={4}\r\n font={`9px ${CHART_STYLES.FONT_FAMILY}`}\r\n />\r\n </ChartSeriesItem>\r\n </ChartSeries>\r\n <ChartTooltip render={({ point }) => {\r\n if (!point) return null;\r\n\r\n // Find the county data using the category name\r\n const county = data.find(item => item.kind === point.category);\r\n if (!county) return null;\r\n\r\n // Get contractor data from the series\r\n const contractorName = point.series.name;\r\n const contractorData = county.contractors?.find(c => c.name === contractorName);\r\n if (!contractorData) return null;\r\n\r\n return (\r\n <div style={{\r\n padding: '10px 12px',\r\n background: 'rgba(255,255,255,0.95)',\r\n boxShadow: '0 2px 4px rgba(0,0,0,0.15)',\r\n borderRadius: '4px',\r\n fontSize: '11px',\r\n lineHeight: '1.4',\r\n whiteSpace: 'pre-line',\r\n minWidth: '180px'\r\n }}>\r\n <div style={{ marginBottom: '6px' }}>\r\n <strong style={{ color: point.series.color }}>{contractorName}</strong>\r\n <br />\r\n <span style={{ color: '#666' }}>{county.kind}</span>\r\n </div>\r\n <div style={{ \r\n display: 'flex', \r\n justifyContent: 'space-between',\r\n marginBottom: '8px',\r\n borderBottom: '1px solid #eee',\r\n paddingBottom: '4px'\r\n }}>\r\n <strong>Total Cases:</strong>\r\n <span>{formatNumber(point.value)}</span>\r\n </div>\r\n {contractorData.dueDates && (\r\n <div style={{ fontSize: '11px', color: '#444' }}>\r\n {Object.entries(contractorData.dueDates).map(([label, value]) => (\r\n <div key={label} style={{ \r\n display: 'flex', \r\n justifyContent: 'space-between', \r\n marginBottom: '2px' \r\n }}>\r\n <span>{label}:</span>\r\n <strong>{formatNumber(value)}</strong>\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }} />\r\n <ChartLegend visible={false} />\r\n </Chart>\r\n </div>\r\n );\r\n };\r\n\r\n /**\r\n * Renders a donut chart for other report types\r\n */\r\n renderDonutChart = (data, total, showPercentages) => {\r\n // Process data to ensure consistent colors and add percentages\r\n const processedData = data.map(item => {\r\n const percentage = total > 0 ? (item.share / total * 100) : 0;\r\n return {\r\n ...item,\r\n color: getColorForCategory(item.kind, data.indexOf(item)),\r\n percentage: percentage.toFixed(1)\r\n };\r\n });\r\n\r\n // Define all possible categories that should appear in the legend\r\n const { reportType, isSecondChart } = this.props;\r\n \r\n const allPossibleCategories = \r\n (reportType === \"3\" && !isSecondChart) \r\n ? [\r\n \"Cases Cleared on Same Day\",\r\n \"Cases Cleared in 1 Business Day\",\r\n \"Cases Cleared in 2 Business Days\",\r\n \"Cases Cleared in 2+ Business Days\"\r\n ]\r\n : (reportType === \"5\") // Special case for Performance County As Contractors\r\n ? [\r\n \"Cases Cleared on Same Day\",\r\n \"Cases Cleared in 1 Business Day\",\r\n \"Cases Cleared in 2 Business Days\",\r\n \"Cases Cleared in 2+ Business Days\"\r\n ]\r\n : (reportType === \"3\" && isSecondChart)\r\n ? [] \r\n : [\r\n \"Cases Cleared on Same Day\",\r\n \"Cases Cleared in 2 Business Days\",\r\n \"Cases Cleared in 3 Business Days\", \r\n \"Cases Cleared in 4 Business Days\",\r\n \"Cases Cleared in 5+ Business Days\",\r\n ];\r\n\r\n const completeLegendData = [...processedData];\r\n \r\n allPossibleCategories.forEach(category => {\r\n if (!completeLegendData.some(item => item.kind === category)) {\r\n completeLegendData.push({\r\n kind: category,\r\n share: 0,\r\n percentage: \"0.0\",\r\n color: getColorForCategory(category, -1),\r\n alwaysShowInLegend: false\r\n });\r\n }\r\n });\r\n\r\n return (\r\n <div style={{ \r\n width: '100%', \r\n height: '100%', \r\n position: 'relative',\r\n display: 'flex',\r\n flexDirection: 'column'\r\n }}>\r\n {/* Chart container with reduced height */}\r\n <div style={{ \r\n width: '100%', \r\n height: '65%', // Reduced from 75% to make donut smaller\r\n position: 'relative',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center'\r\n }}>\r\n <div style={{ \r\n width: '80%', // Control donut width\r\n height: '100%',\r\n maxWidth: '400px' // Limit maximum size\r\n }}>\r\n <Chart \r\n style={{ height: '100%', width: '100%' }}\r\n donutCenterRender={this.donutCenterRenderer}\r\n >\r\n <ChartTitle\r\n text={this.props.isSecondChart ? \"Contractor Performance\" : `Case Disposal Performance (Total: ${formatNumber(total)})`} \r\n color={CHART_STYLES.TITLE_COLOR}\r\n font={`bold 14px ${CHART_STYLES.FONT_FAMILY}`} // Reduced from 16px\r\n margin={{ bottom: 8 }}\r\n />\r\n <ChartSeries>\r\n <ChartSeriesItem\r\n type=\"donut\"\r\n data={processedData}\r\n categoryField=\"kind\"\r\n field=\"share\"\r\n colorField=\"color\"\r\n padding={4} // Reduced padding\r\n holeSize={45} // Slightly smaller hole\r\n >\r\n <ChartSeriesLabels \r\n color=\"#fff\" \r\n background=\"none\"\r\n content={e => {\r\n // Show all segments, no matter how small - removing the percentage filter\r\n // if (e.dataItem.percentage < 5) return '';\r\n \r\n // For very small segments (< 2%), display a more compact label\r\n if (e.dataItem.percentage < 2) {\r\n return showPercentages ? `${e.dataItem.percentage}%` : formatNumber(e.dataItem.share);\r\n }\r\n \r\n if (!showPercentages) return formatNumber(e.dataItem.share);\r\n return `${formatNumber(e.dataItem.share)} (${e.dataItem.percentage}%)`;\r\n }}\r\n position=\"center\"\r\n visible={true}\r\n font={`9px ${CHART_STYLES.FONT_FAMILY}`} // Reduced from 11px\r\n style={{\r\n textShadow: CHART_STYLES.LABEL_SHADOW\r\n }}\r\n />\r\n </ChartSeriesItem>\r\n </ChartSeries>\r\n <ChartLegend visible={false} />\r\n <ChartTooltip render={({ point }) => {\r\n if (!point || !point.dataItem) return null;\r\n \r\n const color = point.dataItem.color;\r\n const isDarkColor = /^#([0-9a-f]{2}){1,2}[0-9a-f]{2}$/i.test(color) ? \r\n parseInt(color.slice(1), 16) < 0x808080 : false;\r\n \r\n return (\r\n <div style={{\r\n padding: '10px',\r\n background: 'rgba(255, 255, 255, 0.98)',\r\n boxShadow: '0 2px 8px rgba(0,0,0,0.25)',\r\n borderRadius: '4px',\r\n border: '1px solid rgba(0,0,0,0.15)',\r\n fontSize: '12px', // Reduced from 13px\r\n lineHeight: '1.5',\r\n color: '#333',\r\n minWidth: '200px',\r\n maxWidth: '280px'\r\n }}>\r\n <div style={{ \r\n borderBottom: '1px solid #ddd', \r\n paddingBottom: '6px',\r\n marginBottom: '6px',\r\n fontWeight: 'bold',\r\n fontSize: '13px', // Reduced from 14px\r\n color: isDarkColor ? point.dataItem.color : '#333',\r\n backgroundColor: isDarkColor ? 'transparent' : 'transparent',\r\n display: 'flex',\r\n alignItems: 'center'\r\n }}>\r\n <div style={{\r\n width: '10px',\r\n height: '10px',\r\n backgroundColor: point.dataItem.color,\r\n marginRight: '6px',\r\n borderRadius: '2px',\r\n border: '1px solid rgba(0,0,0,0.1)'\r\n }}></div>\r\n {point.dataItem.kind}\r\n </div>\r\n <div style={{ \r\n display: 'flex', \r\n justifyContent: 'space-between', \r\n alignItems: 'center',\r\n marginBottom: '4px',\r\n backgroundColor: 'rgba(0,0,0,0.03)',\r\n padding: '3px 6px',\r\n borderRadius: '3px'\r\n }}>\r\n <span style={{ fontWeight: '500', color: '#444' }}>Count:</span>\r\n <strong style={{ color: '#222' }}>{formatNumber(point.dataItem.share)}</strong>\r\n </div>\r\n <div style={{ \r\n display: 'flex', \r\n justifyContent: 'space-between', \r\n alignItems: 'center',\r\n backgroundColor: 'rgba(0,0,0,0.03)',\r\n padding: '3px 6px',\r\n borderRadius: '3px'\r\n }}>\r\n <span style={{ fontWeight: '500', color: '#444' }}>Percentage:</span>\r\n <strong style={{ color: '#222' }}>{point.dataItem.percentage}%</strong>\r\n </div>\r\n {point.dataItem.tooltip && (\r\n <div style={{ \r\n marginTop: '6px', \r\n paddingTop: '6px', \r\n borderTop: '1px solid #ddd',\r\n whiteSpace: 'pre-line',\r\n fontSize: '11px', // Reduced from 12px\r\n color: '#444',\r\n lineHeight: '1.5'\r\n }}>\r\n <div style={{ fontWeight: '500', marginBottom: '3px', color: '#333' }}>Details:</div>\r\n {point.dataItem.tooltip.split('\\\\n').map((line, i) => (\r\n <div key={i} style={{ \r\n padding: '2px 0',\r\n borderBottom: i < point.dataItem.tooltip.split('\\\\n').length - 1 ? '1px dotted #eee' : 'none'\r\n }}>\r\n {line}\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }} />\r\n </Chart>\r\n </div>\r\n </div>\r\n \r\n {/* Bottom legend container */}\r\n <div style={{ \r\n width: '100%', \r\n height: '35%', // Increased from 25% to balance smaller chart\r\n padding: '8px 0',\r\n boxSizing: 'border-box',\r\n overflowX: 'auto'\r\n }}>\r\n <div style={{\r\n background: 'rgba(255, 255, 255, 0.98)',\r\n border: `1px solid ${CHART_STYLES.GRID_COLOR}`,\r\n borderRadius: '4px',\r\n padding: '8px',\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n justifyContent: 'center',\r\n gap: '10px',\r\n boxShadow: '0 1px 3px rgba(0,0,0,0.1)'\r\n }}>\r\n {completeLegendData.map((item, index) => (\r\n <div \r\n key={index}\r\n style={{ \r\n display: 'flex', \r\n alignItems: 'center',\r\n opacity: item.share > 0 ? 1 : 0.7,\r\n padding: '4px 8px',\r\n borderRadius: '4px',\r\n backgroundColor: item.share > 0 ? 'rgba(0,0,0,0.04)' : 'transparent',\r\n border: item.share > 0 ? '1px solid rgba(0,0,0,0.08)' : 'none'\r\n }}\r\n >\r\n <div style={{ \r\n width: '10px', \r\n height: '10px', \r\n backgroundColor: item.color,\r\n marginRight: '6px',\r\n borderRadius: '2px',\r\n flexShrink: 0,\r\n border: '1px solid rgba(0,0,0,0.1)'\r\n }} />\r\n <div style={{ \r\n fontSize: '10px',\r\n fontWeight: item.share > 0 ? '500' : 'normal',\r\n color: item.share > 0 ? '#333' : '#666',\r\n whiteSpace: 'nowrap',\r\n letterSpacing: '-0.2px'\r\n }}>\r\n {showPercentages \r\n ? `${item.kind}: ${item.percentage}% (${formatNumber(item.share)})`\r\n : `${item.kind}: ${formatNumber(item.share)}`\r\n }\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n };\r\n\r\n render() {\r\n const { data, showPercentages, reportType, chartType, isSecondChart, showValues } = this.props;\r\n const total = data.reduce((acc, curr) => acc + curr.share, 0);\r\n\r\n // If chartType prop is provided, use it; otherwise use the default logic\r\n const effectiveChartType = chartType || \r\n ((reportType === \"6\" || reportType === \"7\" || reportType === \"2\") ? \"column\" : \r\n (reportType === \"8\") ? \"column\" : \"donut\");\r\n\r\n // Add special handling for performance contractors second chart\r\n if (reportType === \"3\" && isSecondChart && effectiveChartType === \"column\") {\r\n // Use the column chart renderer with specialized tooltip handling for this case\r\n return this.renderPerformanceContractorsColumnChart(data, total, showPercentages);\r\n }\r\n \r\n // Special case for Sign Inventory Report\r\n if (reportType === \"8\" && effectiveChartType === \"column\") {\r\n return this.renderColumnChart(data, total, showPercentages, showValues);\r\n }\r\n\r\n return effectiveChartType === \"column\"\r\n ? this.renderColumnChart(data, total, showPercentages, showValues)\r\n : this.renderDonutChart(data, total, showPercentages);\r\n }\r\n\r\n /**\r\n * Specialized column chart renderer for performance contractors report (second chart)\r\n */\r\n renderPerformanceContractorsColumnChart = (data, total, showPercentages) => {\r\n // Process data to ensure consistent colors without grouping into \"Others\"\r\n const processedData = data.map((item, index) => ({\r\n ...item,\r\n color: getColorForCategory(item.kind, index),\r\n percentage: total > 0 ? (item.share / total * 100).toFixed(1) : '0.0'\r\n }));\r\n\r\n // Sort data by share descending for better visualization\r\n const sortedData = [...processedData].sort((a, b) => b.share - a.share);\r\n const categories = sortedData.map(item => item.kind);\r\n \r\n // Determine if we should use horizontal bars based on data length\r\n const useHorizontalBars = categories.length > 10;\r\n \r\n // Adjust chart height based on number of categories for better visibility\r\n // For horizontal bars with many categories, we need more height\r\n const baseHeight = 300; // Base height\r\n const heightPerItem = 30; // Additional height per item for horizontal bars\r\n const dynamicHeight = useHorizontalBars ? \r\n Math.max(baseHeight, categories.length * heightPerItem) : \r\n '100%';\r\n\r\n return (\r\n <div style={{ \r\n width: '100%', \r\n height: useHorizontalBars ? `${dynamicHeight}px` : '100%', \r\n padding: '12px',\r\n overflowY: useHorizontalBars ? 'auto' : 'hidden'\r\n }}>\r\n <Chart style={{ height: useHorizontalBars ? `${dynamicHeight}px` : '100%' }}>\r\n <ChartArea background=\"#f8f9fa\" />\r\n <ChartTitle \r\n text={`Contractor Performance Breakdown (Total: ${formatNumber(total)})`}\r\n color={CHART_STYLES.TITLE_COLOR}\r\n font={`bold 16px ${CHART_STYLES.FONT_FAMILY}`}\r\n margin={{ bottom: 15 }}\r\n />\r\n \r\n <ChartValueAxis>\r\n <ChartValueAxisItem \r\n title={{ \r\n text: \"Number of Cases\",\r\n font: `13px ${CHART_STYLES.FONT_FAMILY}`,\r\n color: CHART_STYLES.TITLE_COLOR\r\n }}\r\n labels={{\r\n format: \"{0:n0}\",\r\n font: `12px ${CHART_STYLES.FONT_FAMILY}`,\r\n color: CHART_STYLES.TITLE_COLOR\r\n }}\r\n line={{ color: CHART_STYLES.GRID_COLOR }}\r\n majorGridLines={{ color: CHART_STYLES.GRID_COLOR }}\r\n min={0}\r\n />\r\n </ChartValueAxis>\r\n\r\n <ChartCategoryAxis>\r\n <ChartCategoryAxisItem\r\n categories={categories}\r\n labels={{\r\n font: `12px ${CHART_STYLES.FONT_FAMILY}`,\r\n color: CHART_STYLES.TITLE_COLOR,\r\n rotation: useHorizontalBars ? 0 : (categories.length > 8 ? -45 : 0),\r\n padding: categories.length > 8 ? { left: 5, right: 5 } : { left: 8, right: 8 }\r\n }}\r\n majorGridLines={{ color: CHART_STYLES.GRID_COLOR }}\r\n />\r\n </ChartCategoryAxis>\r\n\r\n <ChartSeries>\r\n <ChartSeriesItem\r\n type={useHorizontalBars ? \"bar\" : \"column\"}\r\n data={sortedData.map(item => ({\r\n category: item.kind,\r\n value: item.share,\r\n color: item.color\r\n }))}\r\n field=\"value\"\r\n categoryField=\"category\"\r\n colorField=\"color\"\r\n gap={0.3} // Reduce gap to make bars wider (default is 0.5)\r\n spacing={0.1} // Reduce spacing between bars\r\n labels={{\r\n visible: true,\r\n content: ({ dataItem }) => {\r\n if (showPercentages && total > 0) {\r\n const percentage = ((dataItem.value / total) * 100).toFixed(1);\r\n return `${formatNumber(dataItem.value)} (${percentage}%)`;\r\n } else {\r\n return formatNumber(dataItem.value);\r\n }\r\n },\r\n background: \"none\",\r\n position: \"center\",\r\n font: `12px ${CHART_STYLES.FONT_FAMILY}`,\r\n color: \"#333\", // Black text for better visibility\r\n style: {\r\n textShadow: \"0 0 3px rgba(255,255,255,0.7)\" // Light shadow for better contrast\r\n }\r\n }}\r\n />\r\n </ChartSeries>\r\n\r\n <ChartTooltip render={({ point }) => {\r\n if (!point || !point.dataItem) return null;\r\n \r\n const item = sortedData.find(d => d.kind === point.category);\r\n if (!item) return null;\r\n \r\n \r\n const percentage = total > 0 ? (item.share / total * 100).toFixed(1) : '0.0';\r\n \r\n return (\r\n <div style={{\r\n padding: '12px 16px',\r\n background: 'rgba(255,255,255,0.98)',\r\n boxShadow: '0 2px 4px rgba(0,0,0,0.15)',\r\n borderRadius: '4px',\r\n fontSize: '12px',\r\n lineHeight: '1.6',\r\n whiteSpace: 'pre-line',\r\n minWidth: '200px',\r\n border: '1px solid rgba(0,0,0,0.1)',\r\n color: '#333' // Ensure text is black/dark gray\r\n }}>\r\n <div style={{ marginBottom: '8px' }}>\r\n <strong style={{ \r\n color: item.color,\r\n fontSize: '14px',\r\n display: 'block',\r\n marginBottom: '4px'\r\n }}>\r\n {item.kind}\r\n </strong>\r\n </div>\r\n <div style={{ display: 'flex', justifyContent: 'space-between', marginBottom: '4px', color: '#333' }}>\r\n <span>Total Cases:</span>\r\n <strong>{formatNumber(item.share)}</strong>\r\n </div>\r\n <div style={{ display: 'flex', justifyContent: 'space-between', color: '#333' }}>\r\n <span>Percentage:</span>\r\n <strong>{percentage}%</strong>\r\n </div>\r\n </div>\r\n );\r\n }} />\r\n \r\n <ChartLegend position=\"bottom\" visible={categories.length <= 10} />\r\n </Chart>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default KendoChart\r\n","import '@progress/kendo-data-query';\r\nimport '@progress/kendo-drawing';\r\nimport '@progress/kendo-file-saver';\r\nimport '@progress/kendo-react-charts';\r\nimport '@progress/kendo-react-inputs';\r\nimport '@progress/kendo-react-intl';\r\nimport '@progress/kendo-react-popup';\r\nimport 'hammerjs';\r\nimport React, { Component } from 'react';\r\n\r\nimport {\r\n Chart, ChartCategoryAxis,\r\n ChartCategoryAxisItem, ChartSeries,\r\n ChartSeriesItem, ChartTitle, ChartTooltip\r\n} from '@progress/kendo-react-charts';\r\n\r\nconst categories = [\"January\", \"Feburary\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"]\r\n\r\nclass KendoLine extends Component {\r\n\r\n nestedTooltipRender = (point) => {\r\n return <div >{point.categoryText} </div>\r\n }\r\n\r\n onEvent = (eventName, event) => {\r\n this.props.monthval(event.category)\r\n }\r\n\r\n render() {\r\n\r\n return (\r\n <Chart onSeriesClick={(event) => this.onEvent('seriesClick', event)} >\r\n <ChartTooltip shared={true} render={this.nestedTooltipRender} />\r\n <ChartTitle text=\"Year wise Calculations\" />\r\n <ChartCategoryAxis>\r\n <ChartCategoryAxisItem title={{ text: 'Months' }} categories={categories} />\r\n </ChartCategoryAxis>\r\n <ChartSeries>\r\n <ChartSeriesItem type=\"line\" data={this.props.data} />\r\n </ChartSeries>\r\n </Chart>\r\n )\r\n }\r\n}\r\n\r\n\r\n\r\nexport default KendoLine;\r\n\r\n","import React, { useState, useEffect } from 'react';\r\nimport { Dialog, DialogContent, DialogActions, Button, IconButton, Typography } from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { KeyboardArrowUp, KeyboardArrowDown } from '@material-ui/icons';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n dialogContent: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n padding: '16px 24px'\r\n },\r\n pickerContainer: {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n gap: theme.spacing(2)\r\n },\r\n spinnerContainer: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n width: 100,\r\n },\r\n spinnerValue: {\r\n padding: '8px 0',\r\n width: '100%',\r\n textAlign: 'center',\r\n borderTop: '1px solid #ddd',\r\n borderBottom: '1px solid #ddd',\r\n color: theme.palette.primary.main,\r\n fontWeight: 500,\r\n fontSize: '16px'\r\n },\r\n arrowButton: {\r\n padding: 4,\r\n color: '#888',\r\n '&.Mui-disabled': {\r\n color: '#ddd'\r\n }\r\n },\r\n dialogTitle: {\r\n textAlign: 'center',\r\n padding: '16px 24px 0',\r\n fontSize: '16px',\r\n fontWeight: 500,\r\n color: '#333'\r\n },\r\n dialogActions: {\r\n justifyContent: 'space-between',\r\n padding: '8px 24px 16px'\r\n },\r\n validationText: {\r\n fontSize: '12px',\r\n color: theme.palette.error.main,\r\n textAlign: 'center',\r\n marginTop: theme.spacing(1)\r\n }\r\n}));\r\n\r\n// Array of months (could be customized)\r\nconst MONTHS = [\r\n { value: 1, label: 'Jan' },\r\n { value: 2, label: 'Feb' },\r\n { value: 3, label: 'Mar' },\r\n { value: 4, label: 'Apr' },\r\n { value: 5, label: 'May' },\r\n { value: 6, label: 'Jun' },\r\n { value: 7, label: 'Jul' },\r\n { value: 8, label: 'Aug' },\r\n { value: 9, label: 'Sep' },\r\n { value: 10, label: 'Oct' },\r\n { value: 11, label: 'Nov' },\r\n { value: 12, label: 'Dec' }\r\n];\r\n\r\nconst MonthYearPicker = ({ \r\n open, \r\n onClose, \r\n onSelect, \r\n initialMonth, \r\n initialYear, \r\n maxYearsFromNow = 10,\r\n title = \"Please Select View Month\"\r\n}) => {\r\n const classes = useStyles();\r\n const currentDate = new Date();\r\n const currentYear = currentDate.getFullYear();\r\n const currentMonth = currentDate.getMonth() + 1; // 1-indexed\r\n const minYear = currentYear - maxYearsFromNow;\r\n \r\n // Default to current month and year if not provided\r\n const [selectedMonth, setSelectedMonth] = useState(initialMonth || currentMonth);\r\n const [selectedYear, setSelectedYear] = useState(initialYear || currentYear);\r\n const [validationError, setValidationError] = useState('');\r\n \r\n // Update selected values when initialMonth or initialYear change\r\n useEffect(() => {\r\n if (open) {\r\n // When dialog opens, set the initial values\r\n setSelectedMonth(initialMonth || currentMonth);\r\n setSelectedYear(initialYear || currentYear);\r\n setValidationError('');\r\n }\r\n }, [open, initialMonth, initialYear, currentMonth]);\r\n \r\n // Navigate month spinner\r\n const handleMonthChange = (direction) => {\r\n let newMonth;\r\n let newYear = selectedYear;\r\n \r\n if (direction === 'up') {\r\n // Going up from December should increase the year\r\n if (selectedMonth === 12) {\r\n newMonth = 1;\r\n newYear = selectedYear + 1;\r\n } else {\r\n newMonth = selectedMonth + 1;\r\n }\r\n } else {\r\n // Going down from January should decrease the year\r\n if (selectedMonth === 1) {\r\n newMonth = 12;\r\n newYear = selectedYear - 1;\r\n } else {\r\n newMonth = selectedMonth - 1;\r\n }\r\n }\r\n \r\n // Check if we're going beyond limits\r\n if (newYear > currentYear) {\r\n setValidationError('Cannot select future dates');\r\n return;\r\n }\r\n \r\n if (newYear === currentYear && newMonth > currentMonth) {\r\n setValidationError('Cannot select future dates');\r\n return;\r\n }\r\n \r\n if (newYear < minYear) {\r\n setValidationError(`Cannot select dates before ${minYear}`);\r\n return;\r\n }\r\n \r\n // If we're here, the date is valid\r\n setSelectedMonth(newMonth);\r\n setSelectedYear(newYear);\r\n setValidationError('');\r\n };\r\n \r\n // Navigate year spinner\r\n const handleYearChange = (direction) => {\r\n let newYear = direction === 'up' ? selectedYear + 1 : selectedYear - 1;\r\n \r\n // Check if we're going beyond limits\r\n if (newYear > currentYear) {\r\n setValidationError('Cannot select future years');\r\n return;\r\n }\r\n \r\n if (newYear < minYear) {\r\n setValidationError(`Cannot select years before ${minYear}`);\r\n return;\r\n }\r\n \r\n // If we're here, the year is valid\r\n setSelectedYear(newYear);\r\n \r\n // But we need to check if the month is still valid with this year\r\n if (newYear === currentYear && selectedMonth > currentMonth) {\r\n setSelectedMonth(currentMonth);\r\n setValidationError('Adjusted to current month for current year');\r\n } else {\r\n setValidationError('');\r\n }\r\n };\r\n \r\n // Handle selection confirmation\r\n const handleConfirm = () => {\r\n // Get the month name\r\n const monthName = MONTHS.find(m => m.value === selectedMonth)?.label;\r\n \r\n // Return the selected values\r\n onSelect({\r\n month: selectedMonth,\r\n year: selectedYear,\r\n monthName: monthName\r\n });\r\n \r\n onClose();\r\n };\r\n \r\n // Check if up/down buttons should be disabled based on validation\r\n const isMonthUpDisabled = selectedYear === currentYear && selectedMonth === currentMonth; // Can't go beyond current month\r\n const isYearUpDisabled = selectedYear === currentYear; // Can't go beyond current year\r\n const isMonthDownDisabled = selectedYear === minYear && selectedMonth === 1; // Can't go before min year/Jan\r\n const isYearDownDisabled = selectedYear === minYear; // Can't go before min year\r\n \r\n return (\r\n <Dialog open={open} onClose={onClose} maxWidth=\"xs\" fullWidth>\r\n <div className={classes.dialogTitle}>\r\n {title}\r\n </div>\r\n \r\n <DialogContent className={classes.dialogContent}>\r\n <div className={classes.pickerContainer}>\r\n {/* Year spinner */}\r\n <div className={classes.spinnerContainer}>\r\n <IconButton \r\n className={classes.arrowButton}\r\n onClick={() => handleYearChange('up')} \r\n size=\"small\"\r\n aria-label=\"Next year\"\r\n disabled={isYearUpDisabled}\r\n >\r\n <KeyboardArrowUp />\r\n </IconButton>\r\n \r\n <div className={classes.spinnerValue}>\r\n {selectedYear}\r\n </div>\r\n \r\n <IconButton \r\n className={classes.arrowButton} \r\n onClick={() => handleYearChange('down')}\r\n size=\"small\"\r\n aria-label=\"Previous year\"\r\n disabled={isYearDownDisabled}\r\n >\r\n <KeyboardArrowDown />\r\n </IconButton>\r\n </div>\r\n \r\n {/* Month spinner */}\r\n <div className={classes.spinnerContainer}>\r\n <IconButton \r\n className={classes.arrowButton} \r\n onClick={() => handleMonthChange('up')}\r\n size=\"small\"\r\n aria-label=\"Next month\"\r\n disabled={isMonthUpDisabled}\r\n >\r\n <KeyboardArrowUp />\r\n </IconButton>\r\n \r\n <div className={classes.spinnerValue}>\r\n {MONTHS.find(m => m.value === selectedMonth)?.label}\r\n </div>\r\n \r\n <IconButton \r\n className={classes.arrowButton} \r\n onClick={() => handleMonthChange('down')}\r\n size=\"small\"\r\n aria-label=\"Previous month\"\r\n disabled={isMonthDownDisabled}\r\n >\r\n <KeyboardArrowDown />\r\n </IconButton>\r\n </div>\r\n </div>\r\n \r\n {validationError && (\r\n <Typography className={classes.validationText}>\r\n {validationError}\r\n </Typography>\r\n )}\r\n </DialogContent>\r\n \r\n <DialogActions className={classes.dialogActions}>\r\n <Button onClick={onClose} color=\"primary\">\r\n CANCEL\r\n </Button>\r\n <Button \r\n onClick={handleConfirm} \r\n color=\"primary\" \r\n variant=\"contained\"\r\n >\r\n OK\r\n </Button>\r\n </DialogActions>\r\n </Dialog>\r\n );\r\n};\r\n\r\nexport default MonthYearPicker; ","import React, { useState } from 'react';\r\nimport { Box, Typography, Paper } from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport MonthYearPicker from './monthyearpicker';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n root: {\r\n position: 'relative',\r\n },\r\n rangeContainer: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: theme.spacing(1, 1.5),\r\n borderRadius: theme.shape.borderRadius,\r\n border: `1px solid ${theme.palette.divider}`,\r\n backgroundColor: theme.palette.background.paper,\r\n cursor: 'pointer',\r\n '&:hover': {\r\n borderColor: theme.palette.action.active\r\n }\r\n },\r\n rangeItem: {\r\n flex: 1,\r\n cursor: 'pointer',\r\n padding: theme.spacing(0.5, 0),\r\n '&:hover': {\r\n backgroundColor: theme.palette.action.hover\r\n }\r\n },\r\n rangeLabel: {\r\n color: theme.palette.text.secondary,\r\n fontSize: '12px',\r\n lineHeight: 1.2\r\n },\r\n rangeValue: {\r\n fontWeight: 500,\r\n fontSize: '14px',\r\n color: theme.palette.text.primary\r\n },\r\n separator: {\r\n margin: theme.spacing(0, 1),\r\n color: theme.palette.text.secondary\r\n }\r\n}));\r\n\r\nconst MonthYearInput = ({ \r\n startValue, \r\n endValue,\r\n onChange, \r\n maxYearsFromNow = 10,\r\n disabled = false,\r\n name,\r\n isRangeSelector = true,\r\n type = 'start' // 'start' or 'end'\r\n}) => {\r\n const classes = useStyles();\r\n const [open, setOpen] = useState(false);\r\n const [pickerType, setPickerType] = useState(type);\r\n \r\n // Helper to get month name from month number\r\n const getMonthName = (monthNum) => {\r\n const MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\r\n return MONTHS[(monthNum - 1) % 12];\r\n };\r\n \r\n // Handle picker open/close\r\n const handleOpen = (type) => {\r\n if (!disabled) {\r\n setPickerType(type);\r\n setOpen(true);\r\n }\r\n };\r\n \r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n \r\n // Handle selection\r\n const handleSelect = (selection) => {\r\n if (onChange) {\r\n if (isRangeSelector) {\r\n let newStartValue = startValue || {};\r\n let newEndValue = endValue || {};\r\n \r\n if (pickerType === 'start') {\r\n newStartValue = {\r\n month: selection.month,\r\n year: selection.year,\r\n monthName: selection.monthName\r\n };\r\n \r\n // If new start date is after current end date, adjust end date\r\n if (newEndValue.year && newEndValue.month) {\r\n const startDate = new Date(selection.year, selection.month - 1);\r\n const endDate = new Date(newEndValue.year, newEndValue.month - 1);\r\n \r\n if (startDate > endDate) {\r\n newEndValue = { ...newStartValue };\r\n }\r\n } else {\r\n // If no end date exists, set it to the same as start\r\n newEndValue = { ...newStartValue };\r\n }\r\n } else {\r\n newEndValue = {\r\n month: selection.month,\r\n year: selection.year,\r\n monthName: selection.monthName\r\n };\r\n \r\n // If new end date is before current start date, adjust start date\r\n if (newStartValue.year && newStartValue.month) {\r\n const startDate = new Date(newStartValue.year, newStartValue.month - 1);\r\n const endDate = new Date(selection.year, selection.month - 1);\r\n \r\n if (endDate < startDate) {\r\n newStartValue = { ...newEndValue };\r\n }\r\n } else {\r\n // If no start date exists, set it to the same as end\r\n newStartValue = { ...newEndValue };\r\n }\r\n }\r\n \r\n // Create a synthetic event-like object for compatibility with form handlers\r\n const event = {\r\n target: {\r\n name,\r\n value: {\r\n start: newStartValue,\r\n end: newEndValue\r\n }\r\n }\r\n };\r\n \r\n onChange(event);\r\n }\r\n }\r\n };\r\n \r\n // Ensure we have valid display values\r\n const displayStartMonth = startValue?.monthName || (startValue?.month ? getMonthName(startValue.month) : '');\r\n const displayStartYear = startValue?.year || '';\r\n const displayEndMonth = endValue?.monthName || (endValue?.month ? getMonthName(endValue.month) : '');\r\n const displayEndYear = endValue?.year || '';\r\n \r\n return (\r\n <div className={classes.root}>\r\n <Paper elevation={0} variant=\"outlined\" className={classes.rangeContainer}>\r\n <Box className={classes.rangeItem} onClick={() => handleOpen('start')}>\r\n <Typography variant=\"caption\" className={classes.rangeLabel}>\r\n From\r\n </Typography>\r\n <Typography variant=\"body2\" className={classes.rangeValue}>\r\n {displayStartMonth} {displayStartYear}\r\n </Typography>\r\n </Box>\r\n \r\n <Box className={classes.rangeItem} onClick={() => handleOpen('end')}>\r\n <Typography variant=\"caption\" className={classes.rangeLabel}>\r\n To\r\n </Typography>\r\n <Typography variant=\"body2\" className={classes.rangeValue}>\r\n {displayEndMonth} {displayEndYear}\r\n </Typography>\r\n </Box>\r\n </Paper>\r\n \r\n <MonthYearPicker\r\n open={open}\r\n onClose={handleClose}\r\n onSelect={handleSelect}\r\n initialMonth={pickerType === 'start' ? startValue?.month : endValue?.month}\r\n initialYear={pickerType === 'start' ? startValue?.year : endValue?.year}\r\n maxYearsFromNow={maxYearsFromNow}\r\n title={pickerType === 'start' ? 'Select Start Month' : 'Select End Month'}\r\n />\r\n </div>\r\n );\r\n};\r\n\r\nexport default MonthYearInput; ","import React, { Fragment } from 'react';\r\nimport { GetData, PostData, PutData } from '../../core/controls/helpers/requests';\r\nimport BreadCrumb from '../../core/modules/breadcrumbs';\r\nimport { getEnvVariable } from '../../modules/environmentalList';\r\nimport CFormDropDown from '../../core/modules/form/cformdropdown';\r\nimport { getToken } from '../../core/modules/header';\r\nimport KendoChart from '../chart/kendochart';\r\nimport KendoLine from './kendoline';\r\nimport { getData } from '../../core/modules/rest';\r\nimport Label from '../../core/controls/components/label';\r\nimport MaterialDatePicker from '../../core/modules/form/materialdatepicker';\r\nimport MonthYearInput from '../../modules/form/monthyearinput';\r\nimport moment from 'moment';\r\nimport './dashboard-carousel.css';\r\n\r\nconst siteTransformProps = {\r\n \"value\": \"Id\",\r\n \"name\": \"Name\",\r\n \"key\": \"Id\"\r\n}\r\nconst reportsTransformProps = {\r\n \"value\": \"Id\",\r\n \"name\": \"Name\",\r\n \"key\": \"Id\"\r\n}\r\nconst permittypeTransformProps = {\r\n \"value\": \"Id\",\r\n \"name\": \"Name\",\r\n \"key\": \"Id\"\r\n}\r\nconst monthsTransformProps = {\r\n \"value\": \"Id\",\r\n \"name\": \"Name\",\r\n \"key\": \"Id\"\r\n}\r\nconst yearTransformProps = {\r\n \"value\": \"Id\",\r\n \"name\": \"Name\",\r\n \"key\": \"Id\"\r\n}\r\nconst contractorJson = {\r\n \"value\": \"Id\",\r\n \"name\": \"Name\",\r\n \"key\": \"Id\"\r\n}\r\nconst reportsJson = [\r\n // {\r\n // \"Id\":\"1\",\r\n // \"Name\":\"Pending Disposal By User\"\r\n // },\r\n {\r\n \"Id\": \"2\",\r\n \"Name\": \"Pending Disposal By County\"\r\n },\r\n {\r\n \"Id\": \"4\",\r\n \"Name\": \"Performance of County\"\r\n },\r\n {\r\n \"Id\": \"3\",\r\n \"Name\": \"Performance of Contractors \"\r\n },\r\n {\r\n \"Id\": \"6\",\r\n \"Name\": \"Pending Disposal of Contractors by Counties\"\r\n },\r\n {\r\n \"Id\": \"7\", \r\n \"Name\": \"PendingDisposal County As Contractors Due\"\r\n },\r\n {\r\n \"Id\": \"5\",\r\n \"Name\": \"Performance County As Contractors\"\r\n },\r\n {\r\n \"Id\": \"8\",\r\n \"Name\": \"Total Request/All counties\"\r\n }\r\n]\r\nconst monthsJson = [\r\n {\r\n \"Id\": \"1\",\r\n \"Name\": \"January\"\r\n },\r\n {\r\n \"Id\": \"2\",\r\n \"Name\": \"Feburary\"\r\n },\r\n {\r\n \"Id\": \"3\",\r\n \"Name\": \"March\"\r\n },\r\n {\r\n \"Id\": \"4\",\r\n \"Name\": \"April\"\r\n },\r\n {\r\n \"Id\": \"5\",\r\n \"Name\": \"May\"\r\n },\r\n {\r\n \"Id\": \"6\",\r\n \"Name\": \"June\"\r\n },\r\n {\r\n \"Id\": \"7\",\r\n \"Name\": \"July\"\r\n },\r\n {\r\n \"Id\": \"8\",\r\n \"Name\": \"August\"\r\n },\r\n {\r\n \"Id\": \"9\",\r\n \"Name\": \"September\"\r\n },\r\n {\r\n \"Id\": \"10\",\r\n \"Name\": \"October\"\r\n },\r\n {\r\n \"Id\": \"11\",\r\n \"Name\": \"November\"\r\n },\r\n {\r\n \"Id\": \"12\",\r\n \"Name\": \"December\"\r\n }\r\n]\r\nclass DashboardChart extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n // Determine initial report type\r\n const initialReportType = props.accessPermissions.isAdmin == \"Y\" ? \"2\" : \"1\";\r\n const currentDate = new Date();\r\n \r\n this.token = getToken()\r\n this.state = {\r\n chartApplicationData: [],\r\n chartMonthApplicationData: [],\r\n chartPermitData: [],\r\n site: 1,\r\n sitesJson: [],\r\n permitType: 1,\r\n month: currentDate.getMonth() + 1,\r\n permitTypeJson: [],\r\n monthsJson: monthsJson,\r\n reports: initialReportType,\r\n reportsJson: reportsJson,\r\n contractor: null,\r\n contractorJson: [],\r\n contractors: [],\r\n contractorChartData: [],\r\n contractorperformaceData: [],\r\n // Initialize date filters based on report type\r\n startDate: null,\r\n endDate: null,\r\n filterType: initialReportType === \"2\" || initialReportType === \"6\" ? null : 'year',\r\n year: initialReportType === \"2\" || initialReportType === \"6\" ? null : currentDate.getFullYear(),\r\n monthName: monthsJson[currentDate.getMonth()].ShortName,\r\n // Add end date fields\r\n endMonth: ((currentDate.getMonth() + 3) % 12) + 1,\r\n endYear: currentDate.getMonth() + 3 > 11 ? currentDate.getFullYear() + 1 : currentDate.getFullYear(),\r\n endMonthName: monthsJson[((currentDate.getMonth() + 3) % 12)].ShortName,\r\n showPercentages: false,\r\n isLoading: true, // Add loading state\r\n animalType: 'deer', // Add default animal type\r\n \r\n // Add new state property for carousel\r\n activeChartIndex: 0,\r\n };\r\n }\r\n componentDidMount() {\r\n // Reset date filters for report types 2 and 6\r\n if (this.state.reports === \"2\" || this.state.reports === \"6\") {\r\n this.setState({\r\n startDate: null,\r\n endDate: null,\r\n year: null,\r\n filterType: 'year'\r\n });\r\n }\r\n this.loadInitialChart();\r\n }\r\n contractorChart = (body, targetval) => {\r\n let reportkey = targetval == \"1\" ? \"PendingDisposalByUserByCounty\" : \"PerformanceContractorsByCounty\"\r\n const url = getEnvVariable('Report') + `/api/ReportQuery/QueryLoad`\r\n const queryParam = `kendoGrid=N&reportkey=` + reportkey.replace(/['\"]+/g, '') + '&page=0&pageSize=5000';\r\n \r\n this.fetchData('POST', url, queryParam, body)\r\n .then(data => {\r\n let result = [];\r\n if (Array.isArray(data) && data.length > 0) {\r\n // First filter by contractor name and animal type\r\n let filteredData = data.filter(entry => \r\n entry.Name === body.C_NAME &&\r\n entry.AnimalType && entry.AnimalType.toLowerCase() === this.state.animalType.toLowerCase()\r\n );\r\n\r\n // Then apply date/year filter\r\n if (this.state.filterType === 'year' && this.state.year) {\r\n filteredData = filteredData.filter(entry => \r\n entry.Year === this.state.year\r\n );\r\n } else if (this.state.filterType === 'date') {\r\n // Handle month/year range filter\r\n if (this.state.month && this.state.year && this.state.endMonth && this.state.endYear) {\r\n const startDate = moment(`${this.state.year}-${this.state.month}-01`);\r\n const endDate = moment(`${this.state.endYear}-${this.state.endMonth}-01`).endOf('month');\r\n \r\n filteredData = filteredData.filter(entry => {\r\n // Convert Month name to month number if needed\r\n let entryMonth = entry.Month;\r\n if (typeof entryMonth === 'string') {\r\n const monthMap = {\r\n 'Jan': 1, 'Feb': 2, 'Mar': 3, 'Apr': 4, 'May': 5, 'Jun': 6,\r\n 'Jul': 7, 'Aug': 8, 'Sep': 9, 'Oct': 10, 'Nov': 11, 'Dec': 12\r\n };\r\n entryMonth = monthMap[entryMonth] || 1;\r\n }\r\n \r\n const entryDate = moment(`${entry.Year}-${entryMonth}-01`);\r\n return entryDate.isBetween(startDate, endDate, 'month', '[]');\r\n });\r\n } else if (this.state.startDate && this.state.endDate) {\r\n // Legacy date range support\r\n const startDate = moment(this.state.startDate).startOf('day');\r\n const endDate = moment(this.state.endDate).endOf('day');\r\n \r\n filteredData = filteredData.filter(entry => {\r\n // Convert Month name to month number if needed\r\n let entryMonth = entry.Month;\r\n if (typeof entryMonth === 'string') {\r\n const monthMap = {\r\n 'Jan': 1, 'Feb': 2, 'Mar': 3, 'Apr': 4, 'May': 5, 'Jun': 6,\r\n 'Jul': 7, 'Aug': 8, 'Sep': 9, 'Oct': 10, 'Nov': 11, 'Dec': 12\r\n };\r\n entryMonth = monthMap[entryMonth] || 1;\r\n }\r\n \r\n const entryDate = moment(`${entry.Year}-${entryMonth}-01`);\r\n return entryDate.isBetween(startDate, endDate, 'month', '[]');\r\n });\r\n }\r\n }\r\n\r\n // Aggregate by County\r\n const aggregatedByCounty = {};\r\n filteredData.forEach(entry => {\r\n if (!aggregatedByCounty[entry.County]) {\r\n aggregatedByCounty[entry.County] = 0;\r\n }\r\n aggregatedByCounty[entry.County] += parseInt(entry.Total) || 0;\r\n });\r\n\r\n result = Object.entries(aggregatedByCounty)\r\n .map(([county, total]) => ({\r\n kind: county,\r\n share: total\r\n }))\r\n .sort((a, b) => b.share - a.share);\r\n\r\n // Add contractor information if available\r\n if (filteredData.length > 0) {\r\n result.contractorName = filteredData[0].Name;\r\n \r\n // Add additional metadata that might be useful for display\r\n if (filteredData[0].UserType) {\r\n result.userType = filteredData[0].UserType;\r\n }\r\n }\r\n }\r\n\r\n if (result.length === 0) {\r\n result = [{\r\n share: 0,\r\n kind: \"No Data\"\r\n }];\r\n }\r\n\r\n this.setState({\r\n contractorperformaceData: result,\r\n monthdisplay: true\r\n });\r\n })\r\n .catch(error => {\r\n console.error('Error in contractorChart:', error);\r\n this.setState({\r\n contractorperformaceData: [{\r\n share: 0,\r\n kind: \"Error Loading Data\"\r\n }],\r\n monthdisplay: true\r\n });\r\n });\r\n }\r\n performanceReport = (body, value) => {\r\n var reportkey = value == \"3\" ? \"PerformanceContractors\" : \r\n (value == \"4\" ? \"PerformanceCounty\" : \r\n (value == \"5\" ? \"PerformanceCountyAsContractors\" : \r\n (value == \"8\" ? \"TotalRequestAllcounties\" : \"PerformanceCountyAsContractors\")))\r\n const url = getEnvVariable('Report') + `/api/ReportQuery/QueryLoad`\r\n const queryParam = `kendoGrid=N&reportkey=` + reportkey.replace(/['\"]+/g, '') + '&page=0&pageSize=5000';\r\n \r\n // For Total Request/All counties report, ensure we send the report key even with empty payload\r\n if (value === \"8\") {\r\n // Send minimal payload with REPORTTYPE for type 8\r\n const minimalBody = { REPORTTYPE: value };\r\n \r\n this.fetchData('POST', url, queryParam, minimalBody)\r\n .then(data => {\r\n const result = this.handleSignInventoryReport(data);\r\n \r\n this.setState({\r\n chartMonthApplicationData: result.length > 0 ? result : [{\r\n share: 0,\r\n kind: \"No Data\"\r\n }],\r\n monthdisplay: true\r\n });\r\n })\r\n .catch(error => {\r\n console.error('Error in performanceReport:', error);\r\n this.setState({\r\n chartMonthApplicationData: [{\r\n share: 0,\r\n kind: \"Error Loading Data\"\r\n }],\r\n monthdisplay: true\r\n });\r\n });\r\n return;\r\n }\r\n \r\n this.fetchData('POST', url, queryParam, body)\r\n .then(data => {\r\n let result = [];\r\n if (Array.isArray(data) && data.length > 0) {\r\n if (value === \"3\") {\r\n // First filter by contractor name and animal type\r\n let filteredData = data.filter(entry => \r\n entry.Name === body.C_NAME &&\r\n entry.AnimalType && entry.AnimalType.toLowerCase() === this.state.animalType.toLowerCase()\r\n );\r\n\r\n // Then apply date/year filter\r\n if (this.state.filterType === 'year' && this.state.year) {\r\n filteredData = filteredData.filter(entry => \r\n entry.Year === this.state.year\r\n );\r\n } else if (this.state.filterType === 'date') {\r\n // Handle month/year range filter\r\n if (this.state.month && this.state.year && this.state.endMonth && this.state.endYear) {\r\n const startDate = moment(`${this.state.year}-${this.state.month}-01`);\r\n const endDate = moment(`${this.state.endYear}-${this.state.endMonth}-01`).endOf('month');\r\n \r\n filteredData = filteredData.filter(entry => {\r\n // Convert Month name to month number if needed\r\n let entryMonth = entry.Month;\r\n if (typeof entryMonth === 'string') {\r\n const monthMap = {\r\n 'Jan': 1, 'Feb': 2, 'Mar': 3, 'Apr': 4, 'May': 5, 'Jun': 6,\r\n 'Jul': 7, 'Aug': 8, 'Sep': 9, 'Oct': 10, 'Nov': 11, 'Dec': 12\r\n };\r\n entryMonth = monthMap[entryMonth] || 1;\r\n }\r\n \r\n const entryDate = moment(`${entry.Year}-${entryMonth}-01`);\r\n return entryDate.isBetween(startDate, endDate, 'month', '[]');\r\n });\r\n } else if (this.state.startDate && this.state.endDate) {\r\n // Legacy date range support\r\n const startDate = moment(this.state.startDate).startOf('day');\r\n const endDate = moment(this.state.endDate).endOf('day');\r\n filteredData = filteredData.filter(entry => {\r\n // Convert Month name to month number if needed\r\n let entryMonth = entry.Month;\r\n if (typeof entryMonth === 'string') {\r\n const monthMap = {\r\n 'Jan': 1, 'Feb': 2, 'Mar': 3, 'Apr': 4, 'May': 5, 'Jun': 6,\r\n 'Jul': 7, 'Aug': 8, 'Sep': 9, 'Oct': 10, 'Nov': 11, 'Dec': 12\r\n };\r\n entryMonth = monthMap[entryMonth] || 1;\r\n }\r\n \r\n const entryDate = moment(`${entry.Year}-${entryMonth}-01`);\r\n return entryDate.isBetween(startDate, endDate, 'month', '[]');\r\n });\r\n }\r\n }\r\n\r\n // Aggregate metrics\r\n const aggregatedMetrics = {\r\n \"Cases Cleared on Same Day\": 0,\r\n \"Cases Cleared in 1 Business Day\": 0,\r\n \"Cases Cleared in 2 Business Days\": 0,\r\n \"Cases Cleared in 2+ Business Days\": 0\r\n };\r\n\r\n filteredData.forEach(entry => {\r\n Object.keys(aggregatedMetrics).forEach(metric => {\r\n aggregatedMetrics[metric] += (parseInt(entry[metric]) || 0);\r\n });\r\n });\r\n\r\n result = Object.entries(aggregatedMetrics)\r\n .map(([kind, share]) => ({\r\n kind,\r\n share\r\n }))\r\n .filter(item => item.share > 0);\r\n\r\n // Add contractor information if available\r\n if (filteredData.length > 0) {\r\n result.contractorName = filteredData[0].Name;\r\n \r\n // Add additional metadata that might be useful for display\r\n if (filteredData[0].UserType) {\r\n result.userType = filteredData[0].UserType;\r\n }\r\n }\r\n\r\n } else if (value === \"4\") {\r\n // First filter by animal type\r\n let filteredData = data.filter(entry => \r\n entry.AnimalType && entry.AnimalType.toLowerCase() === this.state.animalType.toLowerCase()\r\n );\r\n\r\n // Then apply date/year filter\r\n if (this.state.filterType === 'year' && this.state.year) {\r\n filteredData = filteredData.filter(entry => \r\n entry.Year === this.state.year\r\n );\r\n } else if (this.state.filterType === 'date') {\r\n // Handle month/year range filter\r\n if (this.state.month && this.state.year && this.state.endMonth && this.state.endYear) {\r\n const startDate = moment(`${this.state.year}-${this.state.month}-01`);\r\n const endDate = moment(`${this.state.endYear}-${this.state.endMonth}-01`).endOf('month');\r\n \r\n filteredData = filteredData.filter(entry => {\r\n // Convert Month name to month number if needed\r\n let entryMonth = entry.Month;\r\n if (typeof entryMonth === 'string') {\r\n const monthMap = {\r\n 'Jan': 1, 'Feb': 2, 'Mar': 3, 'Apr': 4, 'May': 5, 'Jun': 6,\r\n 'Jul': 7, 'Aug': 8, 'Sep': 9, 'Oct': 10, 'Nov': 11, 'Dec': 12\r\n };\r\n entryMonth = monthMap[entryMonth] || 1;\r\n }\r\n \r\n const entryDate = moment(`${entry.Year}-${entryMonth}-01`);\r\n return entryDate.isBetween(startDate, endDate, 'month', '[]');\r\n });\r\n }\r\n }\r\n\r\n // Aggregate metrics using the direct field names\r\n const metrics = [\r\n \"Cases Cleared on Same Day\",\r\n \"Cases Cleared in 2 Business Days\",\r\n \"Cases Cleared in 3 Business Days\",\r\n \"Cases Cleared in 4 Business Days\",\r\n \"Cases Cleared in 5+ Business Days\"\r\n ];\r\n\r\n // Initialize aggregated metrics\r\n const aggregatedMetrics = {};\r\n metrics.forEach(metric => {\r\n aggregatedMetrics[metric] = 0;\r\n });\r\n\r\n // Aggregate data by summing up the metrics\r\n filteredData.forEach(entry => {\r\n metrics.forEach(metric => {\r\n // Add the value if it exists, otherwise add 0\r\n aggregatedMetrics[metric] += (parseInt(entry[metric]) || 0);\r\n });\r\n });\r\n\r\n // Convert to array format for chart display\r\n result = Object.entries(aggregatedMetrics)\r\n .map(([kind, share]) => ({\r\n kind,\r\n share\r\n }))\r\n .filter(item => item.share > 0)\r\n .sort((a, b) => b.share - a.share);\r\n\r\n // Add county information if available\r\n if (filteredData.length > 0) {\r\n // For the new data structure, the county name is in the Name field\r\n result.countyName = filteredData[0].Name || \"Unknown County\";\r\n \r\n // Add additional metadata that might be useful for display\r\n if (filteredData[0].UserType) {\r\n result.userType = filteredData[0].UserType;\r\n }\r\n }\r\n\r\n } else if (value === \"5\") {\r\n // Call the dedicated method for Performance County As Contractors\r\n result = this.performanceCountyAsContractors(data);\r\n } else if (value === \"8\") {\r\n // Handle Sign Inventory Report data\r\n result = this.handleSignInventoryReport(data);\r\n }\r\n }\r\n\r\n if (result.length === 0) {\r\n result = [{\r\n share: 0,\r\n kind: \"No Data\"\r\n }];\r\n }\r\n\r\n this.setState({\r\n chartMonthApplicationData: result,\r\n monthdisplay: true\r\n });\r\n })\r\n .catch(error => {\r\n console.error('Error in performanceReport:', error);\r\n this.setState({\r\n chartMonthApplicationData: [{\r\n share: 0,\r\n kind: \"Error Loading Data\"\r\n }],\r\n monthdisplay: true\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Process data for report type 5 - Performance County As Contractors\r\n * Applies client-side filtering for animal type, date ranges, and aggregates the data\r\n * @param {Array} data - Raw data from API\r\n * @returns {Array} Processed data ready for chart display\r\n */\r\n performanceCountyAsContractors = (data) => {\r\n if (!Array.isArray(data) || data.length === 0) {\r\n console.warn('Performance County As Contractors: No data available or invalid data format');\r\n return [{\r\n share: 0,\r\n kind: \"No Data\"\r\n }];\r\n }\r\n \r\n // 1. Apply animal type filter - this must be done client-side\r\n let filteredData = data.filter(entry => \r\n entry.AnimalType && entry.AnimalType.toLowerCase() === this.state.animalType.toLowerCase()\r\n );\r\n \r\n // 2. Apply date/year filters - must be done client-side\r\n if (this.state.filterType === 'year' && this.state.year) {\r\n filteredData = filteredData.filter(entry => \r\n entry.Year === this.state.year || entry.Year === parseInt(this.state.year)\r\n );\r\n } else if (this.state.filterType === 'date') {\r\n // Handle month/year range filter\r\n if (this.state.month && this.state.year && this.state.endMonth && this.state.endYear) {\r\n const startDate = moment(`${this.state.year}-${this.state.month}-01`);\r\n const endDate = moment(`${this.state.endYear}-${this.state.endMonth}-01`).endOf('month');\r\n \r\n filteredData = filteredData.filter(entry => {\r\n // Convert Month name to month number if needed\r\n let entryMonth = entry.Month;\r\n if (typeof entryMonth === 'string') {\r\n const monthMap = {\r\n 'Jan': 1, 'Feb': 2, 'Mar': 3, 'Apr': 4, 'May': 5, 'Jun': 6,\r\n 'Jul': 7, 'Aug': 8, 'Sep': 9, 'Oct': 10, 'Nov': 11, 'Dec': 12\r\n };\r\n entryMonth = monthMap[entryMonth] || 1;\r\n }\r\n \r\n const entryDate = moment(`${entry.Year}-${entryMonth}-01`);\r\n return entryDate.isBetween(startDate, endDate, 'month', '[]');\r\n });\r\n } else if (this.state.startDate && this.state.endDate) {\r\n // Legacy date range support\r\n const startDate = moment(this.state.startDate).startOf('day');\r\n const endDate = moment(this.state.endDate).endOf('day');\r\n \r\n filteredData = filteredData.filter(entry => {\r\n // Convert Month name to month number if needed\r\n let entryMonth = entry.Month;\r\n if (typeof entryMonth === 'string') {\r\n const monthMap = {\r\n 'Jan': 1, 'Feb': 2, 'Mar': 3, 'Apr': 4, 'May': 5, 'Jun': 6,\r\n 'Jul': 7, 'Aug': 8, 'Sep': 9, 'Oct': 10, 'Nov': 11, 'Dec': 12\r\n };\r\n entryMonth = monthMap[entryMonth] || 1;\r\n }\r\n \r\n const entryDate = moment(`${entry.Year}-${entryMonth}-01`);\r\n return entryDate.isBetween(startDate, endDate, 'month', '[]');\r\n });\r\n }\r\n }\r\n\r\n // 3. Aggregate the metrics for report type 5\r\n // For this report type, we use only these four categories\r\n const metrics = [\r\n \"Cases Cleared on Same Day\",\r\n \"Cases Cleared in 1 Business Day\",\r\n \"Cases Cleared in 2 Business Days\",\r\n \"Cases Cleared in 2+ Business Days\"\r\n ];\r\n\r\n // Initialize aggregated metrics\r\n const aggregatedMetrics = {};\r\n metrics.forEach(metric => {\r\n aggregatedMetrics[metric] = 0;\r\n });\r\n\r\n // Aggregate data by summing up the metrics across all filtered records\r\n filteredData.forEach(entry => {\r\n metrics.forEach(metric => {\r\n // Parse the metric value (could be string or number)\r\n const value = entry[metric];\r\n const numericValue = typeof value === 'string' ? parseInt(value, 10) : (value || 0);\r\n \r\n // Add the value to the total\r\n aggregatedMetrics[metric] += (numericValue || 0);\r\n });\r\n });\r\n\r\n // 4. Convert to array format for chart display\r\n const result = Object.entries(aggregatedMetrics)\r\n .map(([kind, share]) => ({\r\n kind,\r\n share\r\n }))\r\n .filter(item => item.share > 0)\r\n .sort((a, b) => b.share - a.share);\r\n\r\n // 5. Add county information if available\r\n if (filteredData.length > 0) {\r\n result.countyName = filteredData[0].Name || \"Unknown County\";\r\n \r\n // Add additional metadata that might be useful for display\r\n if (filteredData[0].UserType) {\r\n result.userType = filteredData[0].UserType;\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Handle Total Request/All counties report (type 8)\r\n * Processes data for the Total Request/All counties report\r\n * Expected to be shown as a column chart\r\n * Data structure:\r\n * {\r\n * \"Name\": \"BURNETT\", // County name\r\n * \"Total\": 1, // Count value\r\n * \"Year\": 2025, // Year\r\n * \"Month\": \"Feb\", // Month (string format)\r\n * \"AnimalType\": \"Deer\" // Animal type\r\n * }\r\n */\r\n handleSignInventoryReport = (data) => {\r\n let filteredData = data;\r\n \r\n // Check if data is valid and not empty\r\n if (!Array.isArray(filteredData) || filteredData.length === 0) {\r\n console.warn('Total Request/All counties report: No data available or invalid data format');\r\n return [{\r\n share: 0,\r\n kind: \"No Data\"\r\n }];\r\n }\r\n \r\n // Define all 72 Wisconsin counties\r\n const allWisconsinCounties = [\r\n \"ADAMS\", \"ASHLAND\", \"BARRON\", \"BAYFIELD\", \"BROWN\", \"BUFFALO\", \"BURNETT\", \r\n \"CALUMET\", \"CHIPPEWA\", \"CLARK\", \"COLUMBIA\", \"CRAWFORD\", \"DANE\", \"DODGE\", \r\n \"DOOR\", \"DOUGLAS\", \"DUNN\", \"EAU CLAIRE\", \"FLORENCE\", \"FOND DU LAC\", \r\n \"FOREST\", \"GRANT\", \"GREEN\", \"GREEN LAKE\", \"IOWA\", \"IRON\", \"JACKSON\", \r\n \"JEFFERSON\", \"JUNEAU\", \"KENOSHA\", \"KEWAUNEE\", \"LA CROSSE\", \"LAFAYETTE\", \r\n \"LANGLADE\", \"LINCOLN\", \"MANITOWOC\", \"MARATHON\", \"MARINETTE\", \"MARQUETTE\", \r\n \"MENOMINEE\", \"MILWAUKEE\", \"MONROE\", \"OCONTO\", \"ONEIDA\", \"OUTAGAMIE\", \r\n \"OZAUKEE\", \"PEPIN\", \"PIERCE\", \"POLK\", \"PORTAGE\", \"PRICE\", \"RACINE\", \r\n \"RICHLAND\", \"ROCK\", \"RUSK\", \"ST. CROIX\", \"SAUK\", \"SAWYER\", \"SHAWANO\", \r\n \"SHEBOYGAN\", \"TAYLOR\", \"TREMPEALEAU\", \"VERNON\", \"VILAS\", \"WALWORTH\", \r\n \"WASHBURN\", \"WASHINGTON\", \"WAUKESHA\", \"WAUPACA\", \"WAUSHARA\", \"WINNEBAGO\", \r\n \"WOOD\"\r\n ];\r\n \r\n // Total number of Wisconsin counties - hardcoded to ensure accuracy\r\n const totalCounties = 72;\r\n \r\n // Normalize data - clean county names, format fields\r\n filteredData = filteredData.map(entry => {\r\n return {\r\n Name: (entry.Name || \"\").trim().replace(/\\r?\\n|\\r/g, \"\"), // Remove whitespace and newlines\r\n Total: parseInt(entry.Total || 0, 10),\r\n Year: entry.Year ? parseInt(entry.Year, 10) : null,\r\n Month: entry.Month || null,\r\n AnimalType: entry.AnimalType || null\r\n };\r\n });\r\n \r\n // Apply animal type filter\r\n if (this.state.animalType) {\r\n filteredData = filteredData.filter(entry => \r\n entry.AnimalType && entry.AnimalType.toLowerCase() === this.state.animalType.toLowerCase()\r\n );\r\n }\r\n \r\n // Apply date filters\r\n if (this.state.filterType === 'year' && this.state.year) {\r\n // Filter by year\r\n const yearFilter = parseInt(this.state.year, 10);\r\n filteredData = filteredData.filter(entry => \r\n entry.Year === yearFilter\r\n );\r\n } else if (this.state.filterType === 'date') {\r\n // Filter by month/year range\r\n if (this.state.month && this.state.year && this.state.endMonth && this.state.endYear) {\r\n const startYear = parseInt(this.state.year, 10);\r\n const startMonth = parseInt(this.state.month, 10);\r\n const endYear = parseInt(this.state.endYear, 10);\r\n const endMonth = parseInt(this.state.endMonth, 10);\r\n \r\n const startDate = moment(`${startYear}-${startMonth}-01`);\r\n const endDate = moment(`${endYear}-${endMonth}-01`).endOf('month');\r\n \r\n filteredData = filteredData.filter(entry => {\r\n if (!entry.Year || !entry.Month) return false;\r\n \r\n // Convert Month name to month number if needed\r\n let entryMonth = entry.Month;\r\n if (typeof entryMonth === 'string') {\r\n const monthMap = {\r\n 'Jan': 1, 'Feb': 2, 'Mar': 3, 'Apr': 4, 'May': 5, 'Jun': 6,\r\n 'Jul': 7, 'Aug': 8, 'Sep': 9, 'Oct': 10, 'Nov': 11, 'Dec': 12\r\n };\r\n entryMonth = monthMap[entryMonth] || 1;\r\n }\r\n \r\n const entryDate = moment(`${entry.Year}-${entryMonth}-01`);\r\n return entryDate.isBetween(startDate, endDate, 'month', '[]');\r\n });\r\n } else if (this.state.startDate && this.state.endDate) {\r\n // Legacy date picker support\r\n const startDate = moment(this.state.startDate).startOf('day');\r\n const endDate = moment(this.state.endDate).endOf('day');\r\n \r\n filteredData = filteredData.filter(entry => {\r\n if (!entry.Year || !entry.Month) return false;\r\n \r\n // Convert Month name to month number if needed\r\n let entryMonth = entry.Month;\r\n if (typeof entryMonth === 'string') {\r\n const monthMap = {\r\n 'Jan': 1, 'Feb': 2, 'Mar': 3, 'Apr': 4, 'May': 5, 'Jun': 6,\r\n 'Jul': 7, 'Aug': 8, 'Sep': 9, 'Oct': 10, 'Nov': 11, 'Dec': 12\r\n };\r\n entryMonth = monthMap[entryMonth] || 1;\r\n }\r\n \r\n // Create a date from the entry's year and month\r\n const entryDate = moment(`${entry.Year}-${entryMonth}-01`);\r\n return entryDate.isBetween(startDate, endDate, 'month', '[]');\r\n });\r\n }\r\n }\r\n \r\n // Group and aggregate data by county\r\n const aggregatedByCounty = {};\r\n \r\n // Initialize all counties with zero\r\n allWisconsinCounties.forEach(county => {\r\n aggregatedByCounty[county] = 0;\r\n });\r\n \r\n // Update with actual data where available\r\n filteredData.forEach(entry => {\r\n const county = entry.Name || 'Unknown';\r\n \r\n if (county === 'Unknown' || !allWisconsinCounties.includes(county)) {\r\n console.warn(`County name \"${county}\" not found in Wisconsin counties list`);\r\n return;\r\n }\r\n \r\n // Add the Total value (or 1 if not provided/invalid)\r\n aggregatedByCounty[county] += isNaN(entry.Total) ? 1 : entry.Total;\r\n });\r\n \r\n // Count how many counties have data\r\n const countiesWithData = Object.values(aggregatedByCounty).filter(count => count > 0).length;\r\n \r\n // Transform for chart display\r\n const result = Object.entries(aggregatedByCounty)\r\n .map(([kind, share]) => ({ kind, share }))\r\n .sort((a, b) => b.share - a.share);\r\n \r\n // Store metadata for the chart component\r\n result.totalCounties = totalCounties;\r\n result.countiesWithData = countiesWithData;\r\n \r\n return result;\r\n }\r\n\r\n loadInitialApplicationChart = (body, reportno) => {\r\n function groupby(data, name) {\r\n return data.reduce(function (memo, x) {\r\n if (!memo[x[name]]) {\r\n memo[x[name]] = [];\r\n }\r\n memo[x[name]].push(x);\r\n return memo;\r\n }, {});\r\n }\r\n\r\n // Add standardizeCategory function with report-type specific logic\r\n function standardizeCategory(key, reportType) {\r\n const lowerKey = key.toLowerCase();\r\n \r\n // For report type 2, return the key as is since we handle it differently\r\n if (reportType === \"2\") {\r\n return key;\r\n }\r\n \r\n // For report type 5 (Performance County As Contractors), use only categories up to 2+ days\r\n if (reportType === \"5\") {\r\n // Map due date categories for Performance County As Contractors\r\n const countyAsContractorsMap = {\r\n 'dueby0': 'Cases Cleared on Same Day',\r\n 'dueby1': 'Cases Cleared in 1 Business Day',\r\n 'dueby2': 'Cases Cleared in 2 Business Days'\r\n };\r\n \r\n // Any keys for 3+ days should be mapped to 2+ days\r\n if (lowerKey.includes('dueby3') || lowerKey.includes('dueby4') || \r\n lowerKey.includes('dueby5') || lowerKey.includes('dueby2plus')) {\r\n return \"Cases Cleared in 2+ Business Days\";\r\n }\r\n \r\n return countyAsContractorsMap[lowerKey] || key;\r\n }\r\n \r\n // For other report types, standardize the category names\r\n if (lowerKey.includes('dueby2plus') || lowerKey.includes('2+')) {\r\n return \"Cases Cleared in 2+ Business Days\";\r\n }\r\n \r\n // Map due date categories\r\n const dueByMap = {\r\n 'dueby0': 'Cases Cleared on Same Day',\r\n 'dueby1': 'Cases Cleared in 1 Business Day',\r\n 'dueby2': 'Cases Cleared in 2 Business Days',\r\n 'dueby3': 'Cases Cleared in 3 Business Days',\r\n 'dueby4': 'Cases Cleared in 4 Business Days',\r\n 'dueby5plus': 'Cases Cleared in 5+ Business Days'\r\n };\r\n\r\n return dueByMap[lowerKey] || key;\r\n }\r\n\r\n let reportkey = reportno == \"7\" ? \"PendingDisposalCountyAsContractorsDue\" : \r\n reportno == \"6\" ? \"PendingDisposalByCounties\" : \r\n this.state.reports == \"1\" ? \"PendingDisposalByUser\" : \r\n \"PendingDisposalByCounty\"\r\n const url2 = getEnvVariable('Report') + `/api/ReportQuery/QueryLoad`\r\n const queryParam2 = `kendoGrid=N&reportkey=` + reportkey.replace(/['\"]+/g, '') +'&page=0&pageSize=5000';\r\n \r\n const body2 = reportno == \"1\" ? \r\n { \"ASSIGNED_TO\": this.props.accessPermissions.userId } \r\n : (reportno == \"2\" && !body) ?\r\n { \"SITEVAL\": this.state.site } \r\n : body;\r\n\r\n this.fetchData('POST', url2, queryParam2, body2)\r\n .then(data => {\r\n if (Array.isArray(data)) {\r\n if (reportno === \"2\") {\r\n // Group data by county and animal type for report type 2\r\n const groupedData = {};\r\n \r\n // First filter by selected animal type\r\n const filteredData = data.filter(entry => \r\n entry.AnimalType.toLowerCase() === this.state.animalType.toLowerCase()\r\n );\r\n\r\n filteredData.forEach(entry => {\r\n const county = entry.County;\r\n \r\n if (!groupedData[county]) {\r\n groupedData[county] = {\r\n kind: county,\r\n animalType: entry.AnimalType,\r\n share: 0,\r\n dueDates: {\r\n 'Same Day': 0,\r\n '1 Day': 0,\r\n '2 Days': 0,\r\n '3 Days': 0,\r\n '4 Days': 0,\r\n '5+ Days': 0\r\n }\r\n };\r\n }\r\n \r\n // Update totals and due dates\r\n groupedData[county].share += entry.Total || 0;\r\n groupedData[county].dueDates['Same Day'] += entry.Dueby0 || 0;\r\n groupedData[county].dueDates['1 Day'] += entry.Dueby1 || 0;\r\n groupedData[county].dueDates['2 Days'] += entry.Dueby2 || 0;\r\n groupedData[county].dueDates['3 Days'] += entry.Dueby3 || 0;\r\n groupedData[county].dueDates['4 Days'] += entry.Dueby4 || 0;\r\n groupedData[county].dueDates['5+ Days'] += entry.Dueby5plus || 0;\r\n });\r\n\r\n // Convert to array and sort\r\n const processedData = Object.values(groupedData)\r\n .filter(item => item.share > 0)\r\n .sort((a, b) => b.share - a.share);\r\n\r\n this.setState({\r\n chartMonthApplicationData: processedData.length > 0 ? processedData : [{\r\n share: 0,\r\n kind: \"No Data\"\r\n }],\r\n monthdisplay: true,\r\n reports: reportno\r\n });\r\n }\r\n else if (reportno === \"6\" || reportno === \"7\") {\r\n // Group data by county and contractor\r\n const groupedData = {};\r\n \r\n // First filter by selected animal type\r\n const filteredData = data.filter(entry => \r\n entry.AnimalType.toLowerCase() === this.state.animalType.toLowerCase()\r\n );\r\n\r\n if (reportno === \"7\") {\r\n // Special handling for report type 7\r\n filteredData.forEach(entry => {\r\n const county = entry.County.trim();\r\n \r\n if (!groupedData[county]) {\r\n groupedData[county] = {\r\n kind: county,\r\n share: 0,\r\n dueDates: {\r\n 'Due Today': 0,\r\n 'Due in 1 Day': 0,\r\n 'Due in 2 Days': 0,\r\n 'Due in 3+ Days': 0\r\n }\r\n };\r\n }\r\n \r\n // Calculate total from due dates\r\n const caseTotal = (entry.Dueby0 || 0) + \r\n (entry.Dueby1 || 0) + \r\n (entry.Dueby2 || 0) + \r\n (entry.Dueby2plus || 0);\r\n \r\n // Update county totals and due dates\r\n groupedData[county].share += caseTotal;\r\n groupedData[county].dueDates['Due Today'] += entry.Dueby0 || 0;\r\n groupedData[county].dueDates['Due in 1 Day'] += entry.Dueby1 || 0;\r\n groupedData[county].dueDates['Due in 2 Days'] += entry.Dueby2 || 0;\r\n groupedData[county].dueDates['Due in 3+ Days'] += entry.Dueby2plus || 0;\r\n });\r\n } else {\r\n // Existing logic for report type 6\r\n filteredData.forEach(entry => {\r\n // Clean county name - remove whitespace and newlines\r\n const county = (entry.County || '').trim().replace(/\\r?\\n|\\r/g, '');\r\n const contractor = entry.Name || 'County Handled';\r\n \r\n if (!groupedData[county]) {\r\n groupedData[county] = {\r\n kind: county,\r\n share: 0,\r\n contractors: []\r\n };\r\n }\r\n \r\n let contractorData = groupedData[county].contractors.find(c => c.name === contractor);\r\n if (!contractorData) {\r\n contractorData = {\r\n name: contractor,\r\n share: 0,\r\n dueDates: {\r\n 'Same Day': 0,\r\n '1 Day': 0,\r\n '2 Days': 0,\r\n '2+ Days': 0\r\n }\r\n };\r\n groupedData[county].contractors.push(contractorData);\r\n }\r\n \r\n // Calculate total from due dates if Total is null or zero\r\n // Use entry.Total if available, otherwise calculate\r\n const caseTotal = (entry.Total != null && entry.Total !== 0) \r\n ? Number(entry.Total) \r\n : (\r\n (Number(entry.Dueby0 || 0)) + \r\n (Number(entry.Dueby1 || 0)) + \r\n (Number(entry.Dueby2 || 0)) + \r\n (Number(entry.Dueby2plus || 0))\r\n );\r\n \r\n // Update contractor totals and due dates - ensure all values are treated as numbers\r\n contractorData.share += caseTotal;\r\n contractorData.dueDates['Same Day'] += Number(entry.Dueby0 || 0);\r\n contractorData.dueDates['1 Day'] += Number(entry.Dueby1 || 0);\r\n contractorData.dueDates['2 Days'] += Number(entry.Dueby2 || 0);\r\n contractorData.dueDates['2+ Days'] += Number(entry.Dueby2plus || 0);\r\n \r\n // Update county total\r\n groupedData[county].share += caseTotal;\r\n });\r\n }\r\n\r\n // Convert to array and sort\r\n const processedData = Object.values(groupedData)\r\n .filter(county => county.share > 0)\r\n .sort((a, b) => b.share - a.share);\r\n\r\n // For report type 6, validate and normalize the data\r\n if (reportno === \"6\") {\r\n processedData.forEach(county => {\r\n // Validate all contractors have proper due date totals\r\n county.contractors.forEach(contractor => {\r\n const dueTotal = \r\n contractor.dueDates['Same Day'] +\r\n contractor.dueDates['1 Day'] +\r\n contractor.dueDates['2 Days'] +\r\n contractor.dueDates['2+ Days'];\r\n \r\n // Fix if there's a mismatch\r\n if (Math.abs(contractor.share - dueTotal) > 0.01) {\r\n console.warn(`Fixing contractor total mismatch for ${county.kind}/${contractor.name}: ${contractor.share} vs ${dueTotal}`);\r\n contractor.share = dueTotal;\r\n }\r\n });\r\n \r\n // Recalculate county total to ensure it matches sum of contractors\r\n const contractorsSum = county.contractors.reduce((sum, contractor) => sum + contractor.share, 0);\r\n \r\n // Only adjust if there's a significant difference\r\n if (Math.abs(county.share - contractorsSum) > 0.01) {\r\n console.warn(`Fixing county total mismatch for ${county.kind}: ${county.share} vs ${contractorsSum}`);\r\n county.share = contractorsSum;\r\n }\r\n });\r\n }\r\n\r\n this.setState({\r\n chartMonthApplicationData: processedData.length > 0 ? processedData : [{\r\n share: 0,\r\n kind: \"No Data\"\r\n }],\r\n monthdisplay: true,\r\n reports: reportno\r\n });\r\n }\r\n else if (reportno != \"6\") {\r\n let item = [];\r\n data.map(e => {\r\n Object.entries(e).forEach(([key, value]) => {\r\n // Skip internal/metadata fields\r\n if (!['ID', 'County', 'Permittypeid', 'AID'].includes(key)) {\r\n item.push({\r\n \"share\": value,\r\n \"kind\": standardizeCategory(key, reportno)\r\n });\r\n }\r\n });\r\n });\r\n let pending = this.state.reports == \"1\" ? this.contractorChart(body2, this.state.reports) : null;\r\n this.setState({\r\n chartMonthApplicationData: item,\r\n monthdisplay: true,\r\n reports: this.state.reports\r\n });\r\n }\r\n }\r\n else {\r\n let item = [{\r\n \"share\": \"0\",\r\n \"kind\": \"No Data\"\r\n }]\r\n this.setState({\r\n chartMonthApplicationData: item,\r\n monthdisplay: true,\r\n })\r\n }\r\n })\r\n }\r\n chartLegendName = (name) => {\r\n name = name.toLowerCase().replaceAll(\"_\", \" \")\r\n return name.charAt(0).toUpperCase() + name.slice(1);\r\n }\r\n monthApplicationChart = (month, monthName) => {\r\n const body = {\r\n \"SITEVAL\": this.state.site,\r\n \"PERMITVAL\": this.state.permitType.PermitTypeId,\r\n \"MONTHVAL\": parseInt(month),\r\n \"YEARVAL\": this.state.year || new Date().getFullYear()\r\n }\r\n const url = getEnvVariable('Report') + `/api/ReportQuery/QueryLoad`\r\n const queryParam = `kendoGrid=N&reportkey=DASHBOARD_SUMMARY_APPLICATIONS&page=0&pageSize=5000`;\r\n this.fetchData('POST', url, queryParam, body)\r\n .then(data => {\r\n if (Array.isArray(data)) {\r\n let item = []\r\n if (data[0][\"StatusSettings\"]) {\r\n let chartlabels = data[0][\"StatusSettings\"]\r\n let arrchartlabels = chartlabels.split(',')\r\n if (arrchartlabels.length > 0) {\r\n arrchartlabels.forEach(element => {\r\n item.push({\r\n \"share\": data[0][element],\r\n \"kind\": this.chartLegendName(element)\r\n })\r\n });\r\n }\r\n } else {\r\n item = [\r\n {\r\n \"share\": data[0][\"DRAFT\"],\r\n \"kind\": \"Draft\"\r\n },\r\n {\r\n \"share\": data[0][\"NOT_CLEARED\"],\r\n \"kind\": \"Not Cleared\"\r\n },\r\n {\r\n \"share\": data[0][\"CLOSED\"],\r\n \"kind\": \"Closed\"\r\n },\r\n {\r\n \"share\": data[0][\"CLEARED\"],\r\n \"kind\": \"Cleared\"\r\n },\r\n {\r\n \"share\": data[0][\"FORWARDED_TO_COUNTY\"],\r\n \"kind\": \"Forwarded To County\"\r\n }\r\n ]\r\n }\r\n this.setState({\r\n chartMonthApplicationData: item,\r\n monthdisplay: true,\r\n monthName: monthName\r\n })\r\n }\r\n else {\r\n let item = [{\r\n \"share\": \"0\",\r\n \"kind\": \"No Data\"\r\n }]\r\n this.setState({\r\n chartMonthApplicationData: item,\r\n monthdisplay: true,\r\n monthName: monthName\r\n })\r\n }\r\n })\r\n }\r\n\r\n\r\n\r\n loadInitialChart = () => {\r\n const sitedata = this.fetchData('GET', getEnvVariable('Admin') + `/api/Sites/` + getEnvVariable('ModuleKey') + `/All/Active`, null, null)\r\n const permittypedata = this.fetchData('GET', getEnvVariable('AdminConfig') + `/api/SitePermitTypes/All`, null, null)\r\n Promise.all([sitedata, permittypedata]).then(data => {\r\n const sites = data[0]\r\n const permittypes = data[1];\r\n let initalpermit = permittypes.SitePermitTypesConfig.filter(res => {\r\n if (sites[0].Id == res.SiteId)\r\n return res\r\n })\r\n\r\n // Build initial body based on report type\r\n const body = {\r\n \"SITEVAL\": sites[0].Id,\r\n \"PERMITVAL\": permittypes.PermitTypeId\r\n };\r\n\r\n // Only add year for reports that use date filters\r\n if (this.state.reports !== \"2\" && this.state.reports !== \"6\") {\r\n body.YEARVAL = this.state.year;\r\n }\r\n\r\n this.setState({\r\n sitesJson: data[0],\r\n site: sites[0].Id,\r\n permitTypeJson: Array(permittypes),\r\n permitType: permittypes.PermitTypeId,\r\n permitsAll: data[1]\r\n }, () => {\r\n // Load appropriate data based on report type\r\n if (this.state.reports === \"4\" || this.state.reports === \"5\") {\r\n this.performanceReport(body, this.state.reports);\r\n } else if (this.state.reports === \"3\") {\r\n // Wait for contractors to load before making the API call\r\n this.loadContractors(() => {\r\n if (this.state.contractors.length > 0) {\r\n const contractorBody = {\r\n ...body,\r\n C_NAME: this.state.contractors[0].Name\r\n };\r\n this.performanceReport(contractorBody, this.state.reports);\r\n this.contractorChart(contractorBody, this.state.reports);\r\n }\r\n });\r\n } else {\r\n this.loadInitialApplicationChart(body, this.state.reports);\r\n }\r\n });\r\n });\r\n }\r\n\r\n loadContractors = (callback) => {\r\n var users = this.fetchData('GET', getEnvVariable('MasterAdmin') + `/api/WRSInternalUser/All?ModuleKey=` + getEnvVariable('ModuleKey'), null, null)\r\n Promise.all([users]).then(data => {\r\n var userlist = data[0].filter(e =>\r\n e.IsAdmin != \"Y\" && e.companyId != null && e.UserType == \"C\"\r\n )\r\n var map = new Map();\r\n for (let d of userlist) {\r\n map.set(d[\"companyId\"], d);\r\n }\r\n var iteratorValues = map.values();\r\n var uniquecontractors = [...iteratorValues];\r\n\r\n this.setState({\r\n contractors: uniquecontractors,\r\n contractor: uniquecontractors[0].Id\r\n }, callback);\r\n });\r\n }\r\n\r\n handleContractorChange = (event) => {\r\n var targetval = parseInt(event.target.value)\r\n var username = this.state.contractors.filter(e => e.Id == targetval)\r\n \r\n this.setState({\r\n contractor: targetval\r\n }, () => {\r\n const body = this.buildRequestBody();\r\n let value = username[0].UserType == \"C\" ? \"3\" : username[0].UserType == \"CO\" ? \"4\" : \"5\";\r\n this.performanceReport(body, value);\r\n this.contractorChart(body, value);\r\n });\r\n }\r\n\r\n handleReportChange = (event) => {\r\n const newReportType = event.target.value;\r\n \r\n // Reset date-related state based on report type\r\n const dateState = (newReportType === \"2\" || newReportType === \"6\" || newReportType === \"7\") ? {\r\n startDate: null,\r\n endDate: null,\r\n filterType: null,\r\n year: null\r\n } : {\r\n startDate: null,\r\n endDate: null,\r\n filterType: 'year',\r\n year: new Date().getFullYear()\r\n };\r\n\r\n if (newReportType === \"3\") {\r\n // First load contractors, then update state and make API calls\r\n this.loadContractors(() => {\r\n const applicant = this.state.contractors.filter(e => e.UserType === \"C\");\r\n if (applicant.length > 0) {\r\n const body = {\r\n \"C_NAME\": applicant[0].Name,\r\n ...dateState\r\n };\r\n \r\n this.setState({\r\n ...dateState,\r\n contractor: applicant[0].Id,\r\n contractors: applicant,\r\n contractorJson: applicant,\r\n reports: newReportType,\r\n animalType: 'deer' // Reset animal type to deer\r\n }, () => {\r\n this.performanceReport(body, newReportType);\r\n this.contractorChart(body, newReportType);\r\n });\r\n }\r\n });\r\n } else {\r\n this.setState({\r\n ...dateState,\r\n reports: newReportType,\r\n animalType: 'deer' // Reset animal type to deer\r\n }, () => {\r\n const body = this.buildRequestBody();\r\n if (newReportType === \"1\" || newReportType === \"2\" || newReportType === \"6\" || newReportType === \"7\") {\r\n this.loadInitialApplicationChart(body, newReportType);\r\n } else if (newReportType === \"4\" || newReportType === \"5\" || newReportType === \"8\") {\r\n this.performanceReport(body, newReportType);\r\n } else {\r\n this.performanceReport(body, newReportType);\r\n }\r\n });\r\n }\r\n }\r\n\r\n\r\n handleSiteDropdownChange = (event) => {\r\n const { permitsAll } = this.state;\r\n let initalpermit = permitsAll.SitePermitTypesConfig.filter(res => {\r\n if (event.target.value == res.SiteId)\r\n return res\r\n })\r\n \r\n this.setState({\r\n site: event.target.value,\r\n permitTypeJson: initalpermit,\r\n monthdisplay: false,\r\n permitType: (initalpermit && initalpermit.length > 0) ? initalpermit[0].SitePermitTypeId : '',\r\n }, () => {\r\n const body = this.buildRequestBody();\r\n if (this.state.reports === \"4\" || this.state.reports === \"5\" || this.state.reports === \"8\") {\r\n this.performanceReport(body, this.state.reports);\r\n } else {\r\n this.loadInitialApplicationChart(body, this.state.reports);\r\n }\r\n });\r\n }\r\n handlePermitTypeDropdownChange = (event) => {\r\n let selectedpermit = this.state.permitTypeJson.filter(e => {\r\n if (event.target.value == e.Id)\r\n return e\r\n })\r\n \r\n this.setState({\r\n permitValue: event.target.value,\r\n monthdisplay: false,\r\n permitType: selectedpermit[0].PermitTypeId\r\n }, () => {\r\n const body = this.buildRequestBody();\r\n this.loadInitialApplicationChart(body, this.state.reports);\r\n });\r\n }\r\n handleMonthDropdownChange = (event) => {\r\n this.setState({\r\n month: event.target.value\r\n })\r\n const body = {\r\n \"SITEVAL\": this.state.site,\r\n \"PERMITVAL\": this.state.permitType,\r\n \"MONTHVAL\": event.target.value,\r\n \"YEARVAL\": this.state.year || new Date().getFullYear()\r\n }\r\n this.loadInitialApplicationChart(body)\r\n // this.loadInitialPermitChart(body)\r\n }\r\n handleYearDropdownChange = (event) => {\r\n const selectedYear = parseInt(event.target.value, 10);\r\n \r\n this.setState({\r\n year: selectedYear,\r\n filterType: 'year', // Ensure filterType is set to 'year'\r\n // Clear date range values when switching to year filter\r\n month: null,\r\n monthName: null,\r\n endMonth: null,\r\n endYear: null,\r\n endMonthName: null,\r\n monthdisplay: false\r\n }, () => {\r\n const body = this.buildRequestBody();\r\n if (this.state.reports === \"4\" || this.state.reports === \"5\" || this.state.reports === \"8\") {\r\n this.performanceReport(body, this.state.reports);\r\n } else if (this.state.reports === \"3\") {\r\n this.performanceReport(body, this.state.reports);\r\n this.contractorChart(body, this.state.reports);\r\n } else {\r\n this.loadInitialApplicationChart(body, this.state.reports);\r\n }\r\n });\r\n }\r\n handleDateChange = (event) => {\r\n const { name, value } = event.target;\r\n \r\n // Handle special case for monthYear range picker\r\n if (name === 'monthYear' && value && typeof value === 'object') {\r\n if (value.start && value.end) {\r\n // This is a range\r\n this.setState({\r\n month: value.start.month,\r\n year: value.start.year,\r\n monthName: value.start.monthName,\r\n endMonth: value.end.month,\r\n endYear: value.end.year,\r\n endMonthName: value.end.monthName\r\n }, () => {\r\n const body = this.buildRequestBody();\r\n if (this.state.reports === \"4\" || this.state.reports === \"5\" || this.state.reports === \"8\") {\r\n this.performanceReport(body, this.state.reports);\r\n } else if (this.state.reports === \"3\") {\r\n this.performanceReport(body, this.state.reports);\r\n this.contractorChart(body, this.state.reports);\r\n } else {\r\n this.loadInitialApplicationChart(body, this.state.reports);\r\n }\r\n });\r\n }\r\n return;\r\n }\r\n \r\n // Handle regular date picker\r\n this.setState({\r\n [name]: value\r\n }, () => {\r\n if (this.state.startDate && this.state.endDate) {\r\n const start = moment(this.state.startDate);\r\n const end = moment(this.state.endDate);\r\n \r\n if (start.isValid() && end.isValid() && start.isSameOrBefore(end)) {\r\n const body = this.buildRequestBody();\r\n if (this.state.reports === \"4\" || this.state.reports === \"5\" || this.state.reports === \"8\") {\r\n this.performanceReport(body, this.state.reports);\r\n } else if (this.state.reports === \"3\") {\r\n this.performanceReport(body, this.state.reports);\r\n this.contractorChart(body, this.state.reports);\r\n } else {\r\n this.loadInitialApplicationChart(body, this.state.reports);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n handleFilterTypeChange = (event) => {\r\n const filterType = event.target.value;\r\n const currentDate = new Date();\r\n \r\n // Prepare new state based on filter type\r\n const newState = {\r\n filterType,\r\n // Clear values for the non-selected filter type\r\n startDate: null,\r\n endDate: null\r\n };\r\n \r\n if (filterType === 'year') {\r\n // Set year for year filter type\r\n newState.year = currentDate.getFullYear();\r\n // Clear month/year range values\r\n newState.month = null;\r\n newState.monthName = null;\r\n newState.endMonth = null;\r\n newState.endYear = null;\r\n newState.endMonthName = null;\r\n } else if (filterType === 'date') {\r\n // Set default values for date range filter\r\n newState.month = currentDate.getMonth() + 1;\r\n newState.year = currentDate.getFullYear(); // Keep the year for date range mode\r\n newState.monthName = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'][currentDate.getMonth()];\r\n // Set default end date (current month/year)\r\n newState.endMonth = currentDate.getMonth() + 1;\r\n newState.endYear = currentDate.getFullYear();\r\n newState.endMonthName = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'][currentDate.getMonth()];\r\n } else {\r\n // For null or other filter types, clear all date-related values\r\n newState.year = null;\r\n newState.month = null;\r\n newState.monthName = null;\r\n newState.endMonth = null;\r\n newState.endYear = null;\r\n newState.endMonthName = null;\r\n }\r\n \r\n this.setState(newState, () => {\r\n // After state is updated, reload data with the new filter settings\r\n // Always reload data when changing filter type if we have valid filter values\r\n if ((filterType === 'year' && newState.year) || \r\n (filterType === 'date' && newState.month && newState.endMonth)) {\r\n const body = this.buildRequestBody();\r\n if (this.state.reports === \"4\" || this.state.reports === \"5\" || this.state.reports === \"8\") {\r\n this.performanceReport(body, this.state.reports);\r\n } else if (this.state.reports === \"3\") {\r\n this.performanceReport(body, this.state.reports);\r\n this.contractorChart(body, this.state.reports);\r\n } else {\r\n this.loadInitialApplicationChart(body, this.state.reports);\r\n }\r\n }\r\n });\r\n };\r\n handleAnimalTypeChange = (newType) => {\r\n this.setState({ animalType: newType }, () => {\r\n const body = this.buildRequestBody();\r\n if (this.state.reports === \"3\") {\r\n this.performanceReport(body, this.state.reports);\r\n this.contractorChart(body, this.state.reports);\r\n } else if (this.state.reports === \"4\" || this.state.reports === \"5\" || this.state.reports === \"8\") {\r\n this.performanceReport(body, this.state.reports);\r\n } else if (this.state.reports === \"2\" || this.state.reports === \"6\" || this.state.reports === \"7\") {\r\n this.loadInitialApplicationChart(body, this.state.reports);\r\n }\r\n });\r\n };\r\n fetchData(requestType, url, queryParam, body) {\r\n const queryStr = queryParam != null ? `${url}?${queryParam}` : `${url}`\r\n if (requestType == \"GET\") {\r\n return GetData(queryStr);\r\n }\r\n else if (requestType == \"POST\") {\r\n return PostData(queryStr, body, true);\r\n }\r\n else if (requestType == \"PUT\")\r\n return PutData(queryStr, body, true);\r\n }\r\n getYears = () => {\r\n const currentYear = new Date().getFullYear();\r\n return Array.from({length: 10}, (_, index) => ({\r\n Id: currentYear - index,\r\n Name: (currentYear - index).toString()\r\n }));\r\n }\r\n handlemonthval = (props) => {\r\n console.log(props);\r\n monthsJson.map(res => {\r\n if (res.Name == props) {\r\n this.monthApplicationChart(res.Id, res.Name);\r\n this.loadInitialPermitChart(res.Id)\r\n }\r\n })\r\n }\r\n buildRequestBody = () => {\r\n const body = {};\r\n \r\n // Special handling for report type 4 - only include report type and site value\r\n if (this.state.reports === \"4\") {\r\n body.REPORTTYPE = this.state.reports;\r\n body.SITEVAL = this.state.site;\r\n return body;\r\n }\r\n \r\n // Special handling for report type 5 - only include report type and site value\r\n // All other filtering (date, animal type) will be done client-side\r\n if (this.state.reports === \"5\") {\r\n body.REPORTTYPE = this.state.reports;\r\n body.SITEVAL = this.state.site;\r\n return body;\r\n }\r\n \r\n // Special handling for report type 2\r\n if (this.state.reports === \"2\") {\r\n // Only include date parameters if explicitly selected\r\n if (this.state.filterType === 'year' && this.state.year) {\r\n body.YEARVAL = this.state.year;\r\n return body;\r\n } else if (this.state.filterType === 'date' && this.state.month && this.state.year) {\r\n // Use month/year range\r\n body.START_MONTHVAL = this.state.month;\r\n body.START_YEARVAL = this.state.year;\r\n \r\n if (this.state.endMonth && this.state.endYear) {\r\n body.END_MONTHVAL = this.state.endMonth;\r\n body.END_YEARVAL = this.state.endYear;\r\n } else {\r\n // If no end date, use the start date as end date\r\n body.END_MONTHVAL = this.state.month;\r\n body.END_YEARVAL = this.state.year;\r\n }\r\n \r\n return body;\r\n }\r\n // If no date parameters selected, return empty body\r\n return body;\r\n }\r\n \r\n // Special handling for Sign Inventory Report (type 8)\r\n // Just include REPORTTYPE for this report type\r\n if (this.state.reports === \"8\") {\r\n body.REPORTTYPE = this.state.reports;\r\n return body;\r\n }\r\n\r\n // Regular handling for other report types\r\n if (this.state.reports) {\r\n body.REPORTTYPE = this.state.reports;\r\n }\r\n\r\n // Add site value for reports that need it (except report types 4 and 5 which are handled above)\r\n if (this.state.reports !== \"4\" && this.state.reports !== \"5\" && this.state.site) {\r\n body.SITEVAL = this.state.site;\r\n }\r\n\r\n // Add contractor name for report type 3\r\n if (this.state.reports === \"3\" && this.state.contractor) {\r\n const contractor = this.state.contractors.find(c => c.Id === this.state.contractor);\r\n if (contractor) {\r\n body.C_NAME = contractor.Name;\r\n }\r\n }\r\n\r\n // Add animal type for report types that use it\r\n if ([\"2\", \"3\", \"5\", \"6\", \"7\", \"8\"].includes(this.state.reports)) {\r\n body.ANIMALTYPE = this.state.animalType;\r\n }\r\n\r\n // Handle date parameters based on filter type\r\n if (this.state.filterType === 'year' && this.state.year) {\r\n // Only add YEARVAL for year filter type\r\n body.YEARVAL = this.state.year;\r\n } else if (this.state.filterType === 'date') {\r\n // For date range filter type, use month/year range parameters\r\n if (this.state.month && this.state.year && this.state.endMonth && this.state.endYear) {\r\n // Use month/year range - explicitly DO NOT include YEARVAL\r\n body.START_MONTHVAL = this.state.month;\r\n body.START_YEARVAL = this.state.year;\r\n body.END_MONTHVAL = this.state.endMonth;\r\n body.END_YEARVAL = this.state.endYear;\r\n \r\n // Remove any YEARVAL that might have been set\r\n if (body.YEARVAL) {\r\n delete body.YEARVAL;\r\n }\r\n } else if (this.state.startDate && this.state.endDate) {\r\n // For backward compatibility with date ranges\r\n body.STARTDATE = moment(this.state.startDate).format('DD/MM/YYYY');\r\n body.ENDDATE = moment(this.state.endDate).format('DD/MM/YYYY');\r\n \r\n // Remove any YEARVAL that might have been set\r\n if (body.YEARVAL) {\r\n delete body.YEARVAL;\r\n }\r\n }\r\n }\r\n\r\n return body;\r\n }\r\n\r\n // Add a method to handle carousel navigation\r\n handleChartNavigation = (index) => {\r\n this.setState({ activeChartIndex: index });\r\n }\r\n\r\n getMonthName = (monthNum) => {\r\n const MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\r\n return MONTHS[(monthNum - 1) % 12];\r\n };\r\n\r\n handleDateRangeChange = (event) => {\r\n const { value } = event.target;\r\n \r\n if (value && value.start && value.end) {\r\n this.setState({\r\n filterType: 'date', // Ensure filterType is set to 'date'\r\n month: value.start.month,\r\n year: value.start.year,\r\n monthName: value.start.monthName,\r\n endMonth: value.end.month,\r\n endYear: value.end.year,\r\n endMonthName: value.end.monthName\r\n }, () => {\r\n // After state is updated, fetch data with new date range\r\n const body = this.buildRequestBody();\r\n if (this.state.reports === \"4\" || this.state.reports === \"5\" || this.state.reports === \"8\") {\r\n this.performanceReport(body, this.state.reports);\r\n } else if (this.state.reports === \"3\") {\r\n this.performanceReport(body, this.state.reports);\r\n this.contractorChart(body, this.state.reports);\r\n } else {\r\n this.loadInitialApplicationChart(body, this.state.reports);\r\n }\r\n });\r\n }\r\n };\r\n\r\n render() {\r\n let yearlist = this.getYears();\r\n const { monthdisplay, activeChartIndex } = this.state;\r\n const { options } = this.props;\r\n const { headerProps } = options;\r\n \r\n const showDateFilters = (this.state.reports !== \"2\" && \r\n this.state.reports !== \"6\" && \r\n this.state.reports !== \"7\" &&\r\n this.state.filterType !== null) ||\r\n this.state.reports === \"8\";\r\n\r\n // Determine layout based on whether we have one or two charts\r\n const hasTwoCharts = this.state.reports === \"1\" || this.state.reports === \"3\";\r\n \r\n // Special layout for performance contractors report (type 3)\r\n const isPerformanceContractorsReport = this.state.reports === \"3\";\r\n \r\n // Check if we need to show the contractor filter (Report Type 3)\r\n const showContractorFilter = this.props.accessPermissions.isAdmin === \"Y\" && this.state.reports === \"3\";\r\n \r\n // Check if we need to show the county filter (Report Types 4 and 5 only)\r\n const showCountyFilter = this.props.accessPermissions.isAdmin === \"Y\" && \r\n (this.state.reports === \"4\" || this.state.reports === \"5\");\r\n \r\n // Custom styles for form labels to make them smaller\r\n const formLabelStyle = {\r\n fontSize: '11px',\r\n fontWeight: '500',\r\n color: '#555',\r\n marginBottom: '2px'\r\n };\r\n \r\n // Props to pass to dropdown components to style the labels\r\n const dropdownLabelProps = {\r\n style: formLabelStyle\r\n };\r\n\r\n // Props to pass to date picker components\r\n const datePickerOptions = (label) => ({\r\n label: label,\r\n disabled: false,\r\n FieldProps: JSON.stringify({\r\n AllowDate: 'CD',\r\n CurrentDefaultDate: 'N'\r\n }),\r\n labelProps: {\r\n style: {\r\n fontSize: '11px',\r\n fontWeight: '500',\r\n color: '#555'\r\n }\r\n }\r\n });\r\n \r\n return (\r\n <Fragment>\r\n <div className=\"col pt-1 m-1\">\r\n <BreadCrumb breadcrumbs={headerProps.breadcrumbs} />\r\n </div>\r\n \r\n {/* Main Container */}\r\n <div style={{\r\n display: 'flex',\r\n flexDirection: 'column',\r\n height: 'calc(100vh - 76px)',\r\n overflow: 'hidden'\r\n }}>\r\n {/* Main Card Container */}\r\n <div style={{\r\n backgroundColor: 'white',\r\n borderRadius: '8px',\r\n boxShadow: '0 2px 4px rgba(0,0,0,0.1)',\r\n margin: '8px',\r\n padding: '16px',\r\n flex: 1,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n overflow: 'auto'\r\n }}>\r\n {/* Filter Controls Container */}\r\n <div style={{\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n alignItems: 'center',\r\n marginBottom: '12px',\r\n padding: '10px',\r\n backgroundColor: '#f8f9fa',\r\n borderRadius: '6px',\r\n gap: '8px'\r\n }}>\r\n {/* Primary Filters Row */}\r\n <div style={{\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n gap: '8px',\r\n width: '100%',\r\n alignItems: 'center'\r\n }}>\r\n {/* Report Type Group */}\r\n <div style={{ \r\n flex: showContractorFilter ? '0 0 200px' : '0 0 300px',\r\n padding: '10px',\r\n backgroundColor: 'white',\r\n borderRadius: '6px',\r\n boxShadow: '0 1px 2px rgba(0,0,0,0.05)'\r\n }}>\r\n {this.props.accessPermissions.isAdmin !== \"Y\" ? (\r\n <Label \r\n label=\"Pending Disposal Requests\" \r\n style={{\r\n fontWeight: '500',\r\n color: '#2e4053',\r\n fontSize: '11px'\r\n }}\r\n />\r\n ) : (\r\n <CFormDropDown \r\n value={this.state.reports} \r\n dropdownvalues={this.state.reportsJson} \r\n label=\"Report Type\" \r\n transformProps={reportsTransformProps} \r\n handleFieldChange={this.handleReportChange}\r\n labelProps={dropdownLabelProps}\r\n />\r\n )}\r\n </div>\r\n\r\n {/* Contractor Selection */}\r\n {showContractorFilter && (\r\n <div style={{ \r\n flex: '1 1 200px',\r\n padding: '10px',\r\n backgroundColor: 'white',\r\n borderRadius: '6px',\r\n boxShadow: '0 1px 2px rgba(0,0,0,0.05)'\r\n }}>\r\n <CFormDropDown \r\n value={this.state.contractor || null} \r\n dropdownvalues={this.state.contractors} \r\n label=\"Contractor\" \r\n transformProps={contractorJson} \r\n handleFieldChange={this.handleContractorChange} \r\n labelProps={dropdownLabelProps}\r\n />\r\n </div>\r\n )}\r\n \r\n {/* County Selection */}\r\n {showCountyFilter && (\r\n <div style={{ \r\n flex: '1 1 240px',\r\n padding: '10px',\r\n backgroundColor: 'white',\r\n borderRadius: '6px',\r\n boxShadow: '0 1px 2px rgba(0,0,0,0.05)'\r\n }}>\r\n <CFormDropDown \r\n value={this.state.site || 2} \r\n dropdownvalues={this.state.sitesJson} \r\n label=\"County\" \r\n transformProps={siteTransformProps} \r\n handleFieldChange={this.handleSiteDropdownChange} \r\n labelProps={dropdownLabelProps}\r\n />\r\n </div>\r\n )}\r\n\r\n {/* Toggle Group */}\r\n <div style={{ \r\n display: 'flex',\r\n alignItems: 'center',\r\n marginLeft: 'auto',\r\n gap: '6px',\r\n padding: '6px 10px',\r\n backgroundColor: 'white',\r\n borderRadius: '6px',\r\n boxShadow: '0 1px 2px rgba(0,0,0,0.05)'\r\n }}>\r\n {/* Percentage Toggle */}\r\n <div style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\r\n <button\r\n type=\"button\"\r\n title=\"Toggle Percentages\"\r\n onClick={() => this.setState(prev => ({ showPercentages: !prev.showPercentages }))}\r\n style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n width: '28px',\r\n height: '28px',\r\n border: '1px solid',\r\n borderColor: this.state.showPercentages ? '#1976d2' : '#e0e0e0',\r\n borderRadius: '4px',\r\n backgroundColor: this.state.showPercentages ? '#e3f2fd' : 'white',\r\n cursor: 'pointer'\r\n }}\r\n >\r\n <span className=\"material-icons\" style={{\r\n color: this.state.showPercentages ? '#1976d2' : '#757575',\r\n fontSize: '16px'\r\n }}>\r\n percent\r\n </span>\r\n </button>\r\n </div>\r\n\r\n {/* Animal Type Toggles */}\r\n {(this.state.reports === \"2\" || \r\n this.state.reports === \"3\" || \r\n this.state.reports === \"4\" || \r\n this.state.reports === \"5\" || \r\n this.state.reports === \"6\" ||\r\n this.state.reports === \"7\" ||\r\n this.state.reports === \"8\") && (\r\n <div style={{\r\n display: 'flex',\r\n gap: '4px',\r\n borderLeft: '1px solid #e0e0e0',\r\n paddingLeft: '6px',\r\n alignItems: 'center'\r\n }}>\r\n <span style={{ \r\n color: '#666',\r\n fontSize: '11px',\r\n fontWeight: '500'\r\n }}>\r\n Animal:\r\n </span>\r\n <button\r\n type=\"button\"\r\n onClick={() => this.handleAnimalTypeChange('deer')}\r\n style={{\r\n padding: '4px 6px',\r\n border: '1px solid',\r\n borderColor: this.state.animalType === 'deer' ? '#1976d2' : '#e0e0e0',\r\n borderRadius: '4px',\r\n backgroundColor: this.state.animalType === 'deer' ? '#e3f2fd' : 'white',\r\n color: this.state.animalType === 'deer' ? '#1976d2' : '#666',\r\n cursor: 'pointer',\r\n fontSize: '11px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '4px'\r\n }}\r\n >\r\n <span className=\"material-icons\" style={{ fontSize: '14px' }}>\r\n forest\r\n </span>\r\n Deer\r\n </button>\r\n <button\r\n type=\"button\"\r\n onClick={() => this.handleAnimalTypeChange('bear')}\r\n style={{\r\n padding: '4px 6px',\r\n border: '1px solid',\r\n borderColor: this.state.animalType === 'bear' ? '#1976d2' : '#e0e0e0',\r\n borderRadius: '4px',\r\n backgroundColor: this.state.animalType === 'bear' ? '#e3f2fd' : 'white',\r\n color: this.state.animalType === 'bear' ? '#1976d2' : '#666',\r\n cursor: 'pointer',\r\n fontSize: '11px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '4px'\r\n }}\r\n >\r\n <span className=\"material-icons\" style={{ fontSize: '14px' }}>\r\n pets\r\n </span>\r\n Bear\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n\r\n {/* Date Filter Row */}\r\n {showDateFilters && (\r\n <div style={{\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n gap: '8px',\r\n width: '100%',\r\n alignItems: 'center',\r\n marginTop: '6px',\r\n paddingTop: '6px',\r\n borderTop: '1px dashed #e0e0e0'\r\n }}>\r\n {/* Date Filter Type */}\r\n <div style={{ \r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: '6px 10px',\r\n backgroundColor: 'white',\r\n borderRadius: '6px',\r\n boxShadow: '0 1px 2px rgba(0,0,0,0.05)',\r\n marginRight: '8px'\r\n }}>\r\n <label style={{ \r\n display: 'flex', \r\n alignItems: 'center', \r\n gap: '4px', \r\n cursor: 'pointer',\r\n padding: '2px 4px',\r\n marginRight: '8px',\r\n borderRadius: '4px',\r\n backgroundColor: this.state.filterType === 'year' ? '#f5f5f5' : 'transparent'\r\n }}>\r\n <input\r\n type=\"radio\"\r\n name=\"filterType\"\r\n value=\"year\"\r\n checked={this.state.filterType === 'year'}\r\n onChange={this.handleFilterTypeChange}\r\n style={{ margin: 0, transform: 'scale(0.9)' }}\r\n />\r\n <span className=\"material-icons\" style={{ \r\n color: this.state.filterType === 'year' ? '#1976d2' : '#757575', \r\n fontSize: '14px'\r\n }}>\r\n calendar_today\r\n </span>\r\n <span style={{\r\n color: this.state.filterType === 'year' ? '#1976d2' : '#757575',\r\n fontWeight: this.state.filterType === 'year' ? '500' : 'normal',\r\n fontSize: '11px'\r\n }}>\r\n Year\r\n </span>\r\n </label>\r\n <label style={{ \r\n display: 'flex', \r\n alignItems: 'center', \r\n gap: '4px', \r\n cursor: 'pointer',\r\n padding: '2px 4px',\r\n borderRadius: '4px',\r\n backgroundColor: this.state.filterType === 'date' ? '#f5f5f5' : 'transparent'\r\n }}>\r\n <input\r\n type=\"radio\"\r\n name=\"filterType\"\r\n value=\"date\"\r\n checked={this.state.filterType === 'date'}\r\n onChange={this.handleFilterTypeChange}\r\n style={{ margin: 0, transform: 'scale(0.9)' }}\r\n />\r\n <span className=\"material-icons\" style={{ \r\n color: this.state.filterType === 'date' ? '#1976d2' : '#757575', \r\n fontSize: '14px'\r\n }}>\r\n date_range\r\n </span>\r\n <span style={{\r\n color: this.state.filterType === 'date' ? '#1976d2' : '#757575',\r\n fontWeight: this.state.filterType === 'date' ? '500' : 'normal',\r\n fontSize: '11px'\r\n }}>\r\n Date Range\r\n </span>\r\n </label>\r\n </div>\r\n\r\n {/* Year/Date Inputs */}\r\n <div style={{ \r\n display: 'flex',\r\n gap: '8px',\r\n flex: 1\r\n }}>\r\n {this.state.filterType === 'year' ? (\r\n <div style={{ flex: 1, maxWidth: '220px' }}>\r\n <CFormDropDown\r\n value={this.state.year || new Date().getFullYear()}\r\n dropdownvalues={yearlist}\r\n label=\"Select Year\"\r\n transformProps={yearTransformProps}\r\n handleFieldChange={this.handleYearDropdownChange}\r\n labelProps={dropdownLabelProps}\r\n />\r\n </div>\r\n ) : (\r\n <div style={{ \r\n display: 'flex', \r\n gap: '8px',\r\n flex: 1\r\n }}>\r\n <div style={{ flex: 0, minWidth: '280px' }}>\r\n <MonthYearInput\r\n name=\"dateRange\"\r\n startValue={{ \r\n month: this.state.month || new Date().getMonth() + 1, \r\n year: this.state.year || new Date().getFullYear(),\r\n monthName: this.state.monthName || this.getMonthName(new Date().getMonth() + 1)\r\n }}\r\n endValue={{ \r\n month: this.state.endMonth || new Date().getMonth() + 1, \r\n year: this.state.endYear || new Date().getFullYear(),\r\n monthName: this.state.endMonthName || this.getMonthName(new Date().getMonth() + 1)\r\n }}\r\n onChange={this.handleDateRangeChange}\r\n disabled={false}\r\n isRangeSelector={true}\r\n maxYearsFromNow={10}\r\n />\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n\r\n {/* Charts Container */}\r\n <div style={{\r\n display: 'flex',\r\n flexDirection: isPerformanceContractorsReport ? 'column' : 'row',\r\n flex: 1,\r\n overflow: 'hidden',\r\n minHeight: '420px',\r\n gap: '16px'\r\n }}>\r\n {/* Standard chart layout for non-performance contractors reports */}\r\n {!isPerformanceContractorsReport && (\r\n <div style={{\r\n display: 'grid',\r\n gridTemplateColumns: hasTwoCharts ? 'repeat(2, 1fr)' : '1fr',\r\n gap: '16px',\r\n width: '100%',\r\n height: '100%'\r\n }}>\r\n <div style={{ \r\n height: '100%', \r\n minHeight: '420px',\r\n display: 'flex',\r\n flexDirection: 'column'\r\n }}>\r\n <KendoChart \r\n data={this.state.chartMonthApplicationData} \r\n reportval={this.handleReportChange}\r\n showPercentages={this.state.showPercentages}\r\n reportType={this.state.reports}\r\n monthName={this.state.monthName}\r\n animalType={this.state.animalType}\r\n chartType={this.state.reports === \"8\" ? \"column\" : undefined}\r\n showValues={this.state.reports === \"8\"}\r\n />\r\n </div>\r\n {this.state.reports === \"1\" && (\r\n <div style={{ \r\n height: '100%', \r\n minHeight: '420px',\r\n display: 'flex',\r\n flexDirection: 'column'\r\n }}>\r\n <KendoChart \r\n data={this.state.contractorperformaceData} \r\n reportval={this.handleContractorChange}\r\n showPercentages={this.state.showPercentages}\r\n reportType={this.state.reports}\r\n monthName={this.state.monthName}\r\n isSecondChart={true}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n \r\n {/* Performance Contractors Report - Vertical Layout with Carousel */}\r\n {isPerformanceContractorsReport && (\r\n <div className=\"carousel-container\">\r\n {/* Carousel Navigation */}\r\n <div className=\"carousel-nav\">\r\n <div className=\"carousel-nav-inner\">\r\n <button\r\n onClick={() => this.handleChartNavigation(0)}\r\n className={`carousel-nav-button ${activeChartIndex === 0 ? 'active' : ''}`}\r\n >\r\n Performance Chart\r\n </button>\r\n <button\r\n onClick={() => this.handleChartNavigation(1)}\r\n className={`carousel-nav-button ${activeChartIndex === 1 ? 'active' : ''}`}\r\n >\r\n Contractor Details\r\n </button>\r\n </div>\r\n </div>\r\n \r\n {/* Chart Display based on activeChartIndex */}\r\n <div className=\"carousel-content\">\r\n {activeChartIndex === 0 ? (\r\n <KendoChart \r\n data={this.state.chartMonthApplicationData} \r\n reportval={this.handleReportChange}\r\n showPercentages={this.state.showPercentages}\r\n reportType={this.state.reports}\r\n monthName={this.state.monthName}\r\n animalType={this.state.animalType}\r\n chartType={this.state.reports === \"8\" ? \"column\" : undefined}\r\n showValues={this.state.reports === \"8\"}\r\n />\r\n ) : (\r\n <KendoChart \r\n data={this.state.contractorperformaceData} \r\n reportval={this.handleContractorChange}\r\n showPercentages={this.state.showPercentages}\r\n reportType={this.state.reports}\r\n monthName={this.state.monthName}\r\n isSecondChart={true}\r\n chartType=\"column\" // Force bar chart type\r\n />\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n </Fragment>\r\n );\r\n }\r\n}\r\n//monthdisplay ? \"col-sm-6\" :\r\nexport default DashboardChart\r\n","import React, { Fragment, useCallback, useEffect, useState } from 'react';\r\nimport FormHeader from '../../core/modules/form/cformheader';\r\nimport { getEnvVariable } from '../..//modules/environmentalList';\r\nimport { createRequest, requestApi } from '../../core/controls/helpers/rest';\r\nimport QueryBuilder from '../../core/modules/dnd/widgets/validationrules/mainquerybuilder'\r\nimport FormControl from '@material-ui/core/FormControl'\r\nimport FormHelperText from '@material-ui/core/FormHelperText'\r\nimport Paper from '@material-ui/core/Paper'\r\nimport Input from '@material-ui/core/Input';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport InputAdornment from '@material-ui/core/InputAdornment';\r\nimport { formatQuery as Formatter } from 'react-querybuilder';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport SaveIcon from '@material-ui/icons/Save';\r\nimport Typography from '@material-ui/core/Typography';\r\nconst _ = require('lodash');\r\n\r\n\r\nexport default function BillingBR(props) {\r\n const [fields, setFields] = useState([])\r\n let newItem = {\r\n \"RuleType\": \"S\",\r\n \"Status\": \"A\",\r\n \"EventOn\": \"AS\",//OL,OC,\r\n \"Name\": props.options.businessrulename,\r\n \"CanOverwriteGlobalRule\": \"Y\",\r\n \"IsTriggerAnotherRuleOnFailure\": \"N\",\r\n \"NoticesEventOn\": \"N\",\r\n \"NoticesOnLoad\": \"N\",\r\n \"NotificationSettingsEventOn\": \"N\",\r\n \"NotificationSettingsOnLoad\": \"N\",\r\n \"ProjectMessagesEventOn\": \"N\",\r\n \"ProjectMessagesOnLoad\": \"N\",\r\n \"OnDemand\":\"Y\"\r\n }\r\n const [currentresult, setCurrentResult] = useState({ ...newItem })\r\n const [initialresult, setInitialResult] = useState({ ...newItem })\r\n const [queryError, setqueryError] = useState({ error: false, helperText: '' })\r\n const [amount, setAmount] = useState(null)\r\n const [data, setData] = useState([])\r\n const [add, setAdd] = useState(false)\r\n const [masterfieldid, setmasterfieldid] = useState(null)\r\n const [sectionId, setSectionId] = useState(null)\r\n //required values\r\n //sectionid -- doubt\r\n //routeid -- props.dataItem.Id\r\n //masterfieldid -- we need to do request\r\n //masterfieldkeyname -- props.options.masterfieldkey\r\n\r\n useEffect(() => {\r\n let geturl = {\r\n url: getEnvVariable('AdminConfig') + `/api/SitePermitTypeSection/${props.dataItem.Id}/Selected`,\r\n type: 'get',\r\n }\r\n requestApi(createRequest(geturl, '')).then(results => {\r\n if(results && results.length>0) {\r\n let requiredsection = _.find(results, { 'Key': \"SIGN_INFORMATION\"});\r\n if(requiredsection) {\r\n setSectionId(requiredsection.Id)\r\n }\r\n }\r\n })\r\n\r\n }, [])\r\n\r\n useEffect(() => {\r\n\r\n let geturl = {\r\n url: getEnvVariable('AdminConfig') + `/api/MasterFields/AllLookup`,\r\n type: 'get',\r\n }\r\n requestApi(createRequest(geturl, '')).then(results => {\r\n if(results && results.length>0) {\r\n let masterfielddata = _.find(results, { 'key': props.options.masterfieldkey });\r\n setmasterfieldid(masterfielddata.id)\r\n }})\r\n\r\n }, [])\r\n\r\n useEffect(() => {\r\n if(sectionId) {\r\n let haskey = ''\r\n if (!currentresult.Id && currentresult.HashKey)\r\n haskey = `&HashKey=${currentresult.HashKey}`\r\n const read = [\r\n {\r\n url: getEnvVariable('Application') + `/api/BusinessRules/Builder?SitePermitTypeId=${props.dataItem.Id}&sitePermitTypeSectionId=${sectionId}&businessRuleId=${currentresult.Id || 0}${haskey}`,\r\n type: 'get'\r\n },\r\n ]\r\n Promise.all(read.map(each => requestApi(createRequest(each, {})))).then(response => {\r\n const [fields] = response;\r\n setFields(fields)\r\n })\r\n }\r\n }, [sectionId])\r\n\r\n //get request and set data\r\n useEffect(() => {\r\n if(sectionId) {\r\n let geturl = {\r\n url: getEnvVariable('AdminConfig') + `/api/BusinessRules/${props.dataItem.Id}/All?sitePermitTypeSectionId=${sectionId}`,\r\n type: 'get',\r\n }\r\n requestApi(createRequest(geturl, '')).then(results => {\r\n if(results && results.length>0) {\r\n let res = [...results]\r\n res.forEach(element => {\r\n element.query = JSON.parse(element.JsonQueryStr);\r\n });\r\n res = res.filter(element => element.Name == props.options.businessrulename);\r\n setData(res);\r\n }\r\n else {\r\n setData(results);\r\n }\r\n\r\n })\r\n }\r\n\r\n }, [sectionId])\r\n\r\n const handleFieldValue = (event, IdVal) => {\r\n const { name, value } = event.target;\r\n if (IdVal) {\r\n let pushdata = []\r\n let tempdata = [...data]\r\n let res = _.find(data, { 'Id': IdVal })\r\n let querystr = JSON.parse(res.JsonQueryStr) //JSON.stringify(res.query)\r\n res[name] = querystr\r\n res.JsonQueryStr = JSON.stringify(querystr)\r\n res.SqlQuery = Formatter(querystr, 'sql')\r\n pushdata.push(res)\r\n tempdata.map(obj => pushdata.find(o => o.Id === obj.Id) || obj);\r\n setData(tempdata);\r\n }\r\n else {\r\n currentresult[name] = value\r\n currentresult.JsonQueryStr = JSON.stringify(currentresult.query)\r\n currentresult.SqlQuery = Formatter(currentresult.query, 'sql')\r\n setCurrentResult(currentresult)\r\n }\r\n\r\n }\r\n\r\n const handleBack = () => {\r\n props.onClose();\r\n }\r\n\r\n const handleChange = (event, IdVal) => {\r\n if (IdVal) {\r\n let pushdata = []\r\n let tempdata = [...data]\r\n let res = _.find(data, { 'Id': IdVal })\r\n res['BusinessRuleFields'][0].Value = event.target.value\r\n pushdata.push(res)\r\n tempdata.map(obj => pushdata.find(o => o.Id === obj.Id) || obj);\r\n setData(tempdata);\r\n }\r\n else {\r\n let businessrulefields = [{\r\n \"AllowedValues\": null,\r\n \"ValueType\": \"D\",\r\n \"Value\": event.target.value,\r\n \"IsEnabled\": \"N\",\r\n \"IsVisible\": \"N\",\r\n \"RuleType\": \"V\",\r\n \"Status\": \"A\",\r\n \"IsRequired\": \"N\",\r\n \"MasterFieldId\": masterfieldid,\r\n \"MasterFieldName\": null\r\n }]\r\n currentresult['BusinessRuleFields'] = businessrulefields\r\n setCurrentResult(currentresult)\r\n setAmount(event.target.value)\r\n }\r\n\r\n }\r\n\r\n const handleSave = (type, IdVal) => {\r\n if (type === 'add') {\r\n let saveurl = {\r\n url: getEnvVariable('AdminConfig') + `/api/BusinessRules/${props.dataItem.Id}/Add?sitePermitTypeSectionId=${sectionId}`,\r\n type: 'post',\r\n }\r\n requestApi(createRequest(saveurl, currentresult)).then(results => {\r\n setAdd(false);\r\n currentresult['Id'] = results.Id\r\n currentresult['BusinessRuleFields'] = results.BusinessRuleFields\r\n let adddata = [...data]\r\n adddata.push(currentresult);\r\n setData(adddata);\r\n setCurrentResult({ ...initialresult });\r\n })\r\n }\r\n else {\r\n let saveurl = {\r\n url: getEnvVariable('AdminConfig') + `/api/BusinessRules/${IdVal}/Update`,\r\n type: 'put',\r\n }\r\n let res = _.find(data, { 'Id': IdVal })\r\n requestApi(createRequest(saveurl, res)).then(results => {\r\n setAdd(false);\r\n setCurrentResult({ ...initialresult })\r\n })\r\n }\r\n }\r\n\r\n const handleAdd = () => {\r\n setAdd(!add);\r\n setCurrentResult({ ...initialresult })\r\n setAmount(null)\r\n }\r\n\r\n return (\r\n <Fragment>\r\n <FormHeader title=\"Billing Fee\" handleBack={handleBack} addbutton={sectionId && !(_.isEmpty(fields))? true : false} backbutton={true} handleAdd={handleAdd} />\r\n {!sectionId && <Typography variant=\"body1\" gutterBottom>\r\n Billing related sections are not available for this permit type.\r\n </Typography>}\r\n {_.isEmpty(fields) && sectionId && <Typography variant=\"body1\" gutterBottom>\r\n No fields are available to calculate billing amount.\r\n </Typography>\r\n }\r\n {!(_.isEmpty(fields)) && sectionId && data && data.length>0 && data.map(each => {\r\n return <div className=\"mt-1 mb-1\">\r\n <Paper elevation={3} >\r\n <FormControl error={queryError.error} required={true}>\r\n <QueryBuilder fields={fields} query={each && each.query || null} onQueryChange={(query) => handleFieldValue({ target: { value: query, name: 'query', checked: false }, currentTarget: { dataset: null } }, each.Id)} />\r\n {queryError.helperText && <FormHelperText>{queryError.helperText || ''}</FormHelperText>}\r\n </FormControl>\r\n <FormControl className=\"pl-3 pb-1\">\r\n <InputLabel className=\"pl-3\">Amount</InputLabel>\r\n <Input\r\n value={each['BusinessRuleFields'] && each['BusinessRuleFields'].length> 0 ? each['BusinessRuleFields'][0].Value : null}\r\n onChange={(e) => handleChange(e, each.Id)}\r\n type=\"number\"\r\n startAdornment={<InputAdornment position=\"start\">$</InputAdornment>}\r\n />\r\n </FormControl>\r\n <IconButton tooltip=\"Save\" className=\"pt-3\" color=\"primary\" aria-label=\"upload picture\" component=\"span\" onClick={() => handleSave('update', each.Id)}>\r\n <SaveIcon />\r\n </IconButton>\r\n </Paper>\r\n </div>\r\n })\r\n }\r\n {!(_.isEmpty(fields)) && sectionId && add && <div className=\"mt-1 mb-1\">\r\n <Paper elevation={3} >\r\n <FormControl error={queryError.error} required={true}>\r\n <QueryBuilder fields={fields} query={currentresult && currentresult.query || null} onQueryChange={(query) => handleFieldValue({ target: { value: query, name: 'query', checked: false }, currentTarget: { dataset: null } })} />\r\n {queryError.helperText && <FormHelperText>{queryError.helperText || ''}</FormHelperText>}\r\n </FormControl>\r\n <FormControl className=\"pl-3 pb-1\">\r\n <InputLabel className=\"pl-3\">Amount</InputLabel>\r\n <Input\r\n value={amount}\r\n onChange={(e) => handleChange(e)}\r\n type=\"number\"\r\n startAdornment={<InputAdornment position=\"start\">$</InputAdornment>}\r\n />\r\n </FormControl>\r\n <IconButton tooltip=\"Save\" className=\"pt-3\" color=\"primary\" aria-label=\"upload picture\" component=\"span\" onClick={() => handleSave('add')}>\r\n <SaveIcon />\r\n </IconButton>\r\n </Paper>\r\n </div>}\r\n </Fragment>\r\n );\r\n\r\n}\r\n","import IconButton from '@material-ui/core/IconButton';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport SaveIcon from '@material-ui/icons/Save';\r\nimport React, { Fragment, useEffect, useState } from 'react';\r\nimport { useParams } from 'react-router-dom';\r\nimport { getEnvVariable } from '../..//modules/environmentalList';\r\nimport ConfirmationDialog from \"../../core/controls/components/confirmationPopup\";\r\nimport DropDown from '../../core/controls/components/dropdown';\r\nimport { DeleteRecord, PostData, PutData } from '../../core/controls/helpers/requests';\r\nimport { createRequest, requestApi } from '../../core/controls/helpers/rest';\r\nimport FormHeader from '../../core/modules/form/cformheader';\r\n\r\nconst defaultDrawerWidth = 900;\r\nconst minDrawerWidth = 700;\r\nconst maxDrawerWidth = window.innerWidth - 220;\r\nconst fullscreenwidth = window.innerWidth\r\nconst checkwidth = 960\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n drawer: {\r\n flexShrink: 0\r\n },\r\n dragger: {\r\n width: \"7px\",\r\n cursor: \"ew-resize\",\r\n padding: \"4px 0 0\",\r\n borderTop: \"1px solid #ddd\",\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n bottom: 0,\r\n zIndex: 100,\r\n // backgroundColor: \"#f4f7f9\"\r\n }\r\n}));\r\n\r\nexport default function ConfigType(props) {\r\n const [configtypes, setconfigtype] = useState([])\r\n const [MasterPermitTypes, setMasterPermitTypes] = useState([])\r\n const [sitepermittypedata, setsitepermittypedata] = useState([])\r\n const [MasterPermitTypeId, setMasterPermitTypeId] = useState([])\r\n const [data, setData] = useState([])\r\n const [add, setAdd] = useState(false)\r\n const [result, setResult] = useState({})\r\n const [reload, setReload] = useState(false)\r\n const [menuDisabled, setMenuDisabled] = useState({})\r\n const [openConfirmation, setOpenConfirmation] = useState(false)\r\n const [deleteItemId, setDeleteItemId] = useState(null)\r\n const [configTypeData, setConfigTypeData] = useState(props && props.accessPermissions && props.accessPermissions.configType ? props.accessPermissions.configType == \"D\" ? 'DistrictId' : props.accessPermissions.configType == \"S\" ? 'SiteId' : 'RegionId' : 'RegionId')\r\n const [enabledItems, setEnabledItems] = useState([])\r\n\r\n const params = useParams();\r\n useEffect(() => {\r\n let type = 'Districts'\r\n if (props.accessPermissions.configType === 'S')\r\n type = 'Sites'\r\n else if (props.accessPermissions.configType === 'R')\r\n type = 'Regions'\r\n else type = 'Districts'\r\n const read = [\r\n {\r\n url: getEnvVariable('Admin') + `/api/${type}/` + getEnvVariable('ModuleKey') + `/All/Active`,\r\n type: 'get'\r\n },\r\n {\r\n url: getEnvVariable('AdminConfig') + `/api/SitePermitTypesConfig/${props.dataItem.Id}/All`,\r\n type: 'get'\r\n },\r\n {\r\n url: getEnvVariable('AdminConfig') + `/api/SitePermitTypesConfig/ConfigTypesDropdown/${props.dataItem.Id}`,\r\n type: 'get'\r\n },\r\n ]\r\n Promise.all(read.map(each => requestApi(createRequest(each, {})))).then(res => {\r\n const [active, configdata, configdropdown] = res;\r\n var idarray = configdropdown.map(a => a.Id);\r\n setEnabledItems(idarray);\r\n setconfigtype(active)\r\n setData(configdata)\r\n })\r\n }, [])\r\n\r\n const handleAdd = () => {\r\n setAdd(!add);\r\n setResult({})\r\n }\r\n\r\n const handleFieldChange = (event, type, id) => {\r\n const { name, value } = event.target;\r\n if (type === 'add') {\r\n result[name] = value;\r\n setResult(result)\r\n setReload(!reload)\r\n }\r\n\r\n else if (type === 'editconfigItems') {\r\n data.map(final => {\r\n if (final[configTypeData] === id) {\r\n final[name] = value\r\n }\r\n })\r\n setData(data)\r\n setReload(!reload)\r\n }\r\n }\r\n\r\n const handleDelete = (e, id) => {\r\n setDeleteItemId(id);\r\n setOpenConfirmation(true);\r\n }\r\n\r\n const ConfirmDelete = () => {\r\n let tempData = data.filter(final => {\r\n if (final.Id == deleteItemId) {\r\n let url = getEnvVariable('AdminConfig') + `/api/SitePermitTypesConfig/${props.dataItem.Id}/` + final.DistrictId + `/Delete`\r\n return DeleteRecord(url, '').then(res => {\r\n // var idarray = res.map(a => a.Id);\r\n // setEnabledItems(idarray);\r\n setDeleteItemId(null);\r\n handleTransision();\r\n setOpenConfirmation(false);\r\n setData(tempData)\r\n setReload(!reload)\r\n })\r\n }\r\n })\r\n }\r\n\r\n const handleCancelDelete = () => {\r\n setOpenConfirmation(false);\r\n setDeleteItemId(null);\r\n }\r\n\r\n const handleSave = (type, each) => {\r\n if (type === 'add') {\r\n let url = getEnvVariable('AdminConfig') + `/api/SitePermitTypesConfig/${props.dataItem.Id}/` + result[configTypeData] + `/Add`\r\n PostData(url, result).then(res => {\r\n //var idarray = res.map(a => a.Id);\r\n //setEnabledItems(idarray);\r\n setAdd(false);\r\n handleTransision();\r\n })\r\n }\r\n else {\r\n let url = getEnvVariable('AdminConfig') + `/api/SitePermitTypesConfig/${props.dataItem.Id}/` + each[configTypeData] + `/Update`\r\n PutData(url, each).then(res => {\r\n //var idarray = res.map(a => a.Id);\r\n //setEnabledItems(idarray);\r\n setAdd(false);\r\n handleTransision();\r\n })\r\n }\r\n }\r\n\r\n const handleTransision = () => {\r\n let idval = params.Id ? params.Id : params.routeid\r\n const read = [{\r\n url: getEnvVariable('AdminConfig') + `/api/SitePermitTypesConfig/${idval}/All`,\r\n type: 'get'\r\n }]\r\n Promise.all(read.map(each => requestApi(createRequest(each, {})))).then(res => {\r\n const [data] = res\r\n setData(data);\r\n })\r\n }\r\n\r\n const handleBack = () => {\r\n props.onClose();\r\n }\r\n\r\n return (\r\n <Fragment>\r\n <FormHeader title=\"Configurations\" handleAdd={handleAdd} handleBack={handleBack}\r\n addbutton={true} backbutton={true} />\r\n {reload}\r\n {/* <div className=\"float-md-right\"> <Fab edge=\"start\" size=\"small\" color=\"primary\" onClick={handleAdd} > <AddIcon /></Fab></div> */}\r\n <div className=\"clear-fix\" />\r\n <table className=\"table table-striped\">\r\n <thead className=\"thead-dark\">\r\n <tr>\r\n <th scope=\"col\"> {props.accessPermissions && props.accessPermissions.configType && props.accessPermissions.configType == \"R\" ? 'Region' : props.accessPermissions.configType == \"S\" ? 'Site' : 'District'} </th>\r\n <th scope=\"col\"> Action </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {add && <tr>\r\n <th scope=\"row\">\r\n <DropDown name={configTypeData} items={configtypes} value={(result && result[configTypeData]) || null} menuDisabled={menuDisabled}\r\n handleFieldValue={(e) => handleFieldChange(e, \"add\")} extraProps={{\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Id'\r\n }\r\n }} />\r\n </th>\r\n <td>\r\n <IconButton color=\"primary\" onClick={() => handleSave('add')}>\r\n <SaveIcon />\r\n </IconButton>\r\n <IconButton color=\"primary\" onClick={handleAdd}>\r\n <CloseIcon />\r\n </IconButton>\r\n </td>\r\n </tr>}\r\n {data && data.map(each => {\r\n return <tr>\r\n <th scope=\"row\">\r\n <DropDown name={configTypeData} disabled={true} items={configtypes} value={(each && each[configTypeData]) || null} menuDisabled={menuDisabled}\r\n handleFieldValue={(e) => handleFieldChange(e, \"editconfigItems\", each[configTypeData])} extraProps={{\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Id'\r\n }\r\n }} />\r\n </th>\r\n <td>\r\n {/* <IconButton tooltip=\"Save\" color=\"primary\" aria-label=\"upload picture\" component=\"span\" onClick={(e) => handleSave('update', each)}>\r\n <SaveIcon />\r\n </IconButton> */}\r\n <IconButton tooltip=\"Delete\" color=\"primary\" aria-label=\"upload picture\" component=\"span\" onClick={(e) => handleDelete(e, each.Id)}>\r\n <DeleteIcon />\r\n </IconButton>\r\n {openConfirmation && <ConfirmationDialog value={openConfirmation} title=\"Are you sure you want to delete?\" onSubmit={ConfirmDelete} onClose={handleCancelDelete} />}\r\n </td>\r\n </tr>\r\n })}\r\n </tbody>\r\n </table>\r\n </Fragment>\r\n );\r\n\r\n}\r\n","import { getEnvVariable } from \"../../modules/environmentalList\"\r\n\r\nconst nsComponents = {\r\n \"components\": [\r\n {\r\n type: 'scheduler',\r\n key: 'nsscheduler',\r\n \"options\": {\r\n \"row\": 1,\r\n \"col\": 0,\r\n \"width\": 12,\r\n title: 'Schedule',\r\n headerProps: {\r\n \"editbutton\": false,\r\n \"savebutton\": true,\r\n \"backbutton\": false,\r\n \"closebutton\": true\r\n }\r\n }\r\n },\r\n\r\n {\r\n \"type\": \"multiduallistbox\",\r\n \"key\": \"nseventdetails\",\r\n \"options\": {\r\n \"width\": 12,\r\n \"row\": 0,\r\n \"col\": 0,\r\n multiboxes: false,\r\n save: true,\r\n title: 'Event Details',\r\n designprops: true,\r\n headerProps: {\r\n \"editbutton\": false,\r\n \"savebutton\": true,\r\n \"backbutton\": false,\r\n \"closebutton\": false\r\n },\r\n \"transformProps\": {\r\n \"options\": \"availableCollection\",\r\n \"selected\": \"selectedCollection\",\r\n \"value\": \"id\",\r\n \"label\": \"name\"\r\n },\r\n title: 'Event Details',\r\n headerProps: {\r\n \"editbutton\": false,\r\n \"savebutton\": true,\r\n \"backbutton\": false,\r\n \"closebutton\": true\r\n }\r\n },\r\n components: [\r\n {\r\n type: 'duallistbox',\r\n key: 'firstduallistbox',\r\n options: {\r\n width: 12,\r\n totalrows: '8',\r\n totalcolumns: '4',\r\n name: 'firstbox',\r\n transformProps: {\r\n available: {\r\n key: 'availableCollection',\r\n label: 'name',\r\n value: 'key'\r\n\r\n },\r\n selected: {\r\n key: 'selectedCollection',\r\n label: 'name',\r\n value: 'key'\r\n }\r\n },\r\n \"crud\": {\r\n \"read\": {\r\n \"get\": {\r\n \"url\": getEnvVariable('Notification')+`/api/NotificationEvents/EventDetails`,\r\n \"urlpath\": `?notificationId={ID}&eventOnkey={eventOn}`,\r\n \"routeProps\": [{\r\n \"custom\": \"ID\"\r\n }],\r\n \"matchProps\": [{\r\n \"value\": \"eventOn\"\r\n }]\r\n }\r\n },\r\n \"update\": {\r\n \"put\": {\r\n \"url\": getEnvVariable('Notification')+`/api/NotificationEvents/SaveEventDetails`,\r\n }\r\n },\r\n \"appstatusavailable\": {\r\n \"get\": {\r\n \"url\": getEnvVariable('Sidebar')+`/api/SitePermitTypesStatus/BySitePermitTypeId`,\r\n \"urlpath\": `/{SitePermitTypeId}`,\r\n \"matchProps\": [{\r\n \"value\": \"SitePermitTypeId\"\r\n }]\r\n }\r\n },\r\n },\r\n }\r\n },\r\n ],\r\n \"customclass\": \"dual-list-box-customlg\"\r\n },\r\n /**Added for applicaiton event details - start */\r\n\r\n {\r\n \"type\": \"multiduallistbox\",\r\n \"key\": \"nsapplicationeventdetails\",\r\n \"options\": {\r\n \"width\": 12,\r\n \"row\": 0,\r\n \"col\": 0,\r\n multiboxes: false,\r\n save: true,\r\n title: 'Event Details',\r\n designprops: true,\r\n headerProps: {\r\n \"editbutton\": false,\r\n \"savebutton\": true,\r\n \"backbutton\": false,\r\n \"closebutton\": true\r\n },\r\n \"transformProps\": {\r\n \"options\": \"availableCollection\",\r\n \"selected\": \"selectedCollection\",\r\n \"value\": \"id\",\r\n \"label\": \"name\"\r\n },\r\n title: 'Event Details',\r\n headerProps: {\r\n \"editbutton\": false,\r\n \"savebutton\": true,\r\n \"backbutton\": false,\r\n \"closebutton\": false\r\n }\r\n },\r\n components: [\r\n {\r\n type: 'duallistbox',\r\n key: 'firstduallistbox',\r\n options: {\r\n width: 12,\r\n totalrows: '8',\r\n totalcolumns: '4',\r\n name: 'firstbox',\r\n transformProps: {\r\n available: {\r\n key: 'availableCollection',\r\n label: 'name',\r\n value: 'key'\r\n\r\n },\r\n selected: {\r\n key: 'selectedCollection',\r\n label: 'name',\r\n value: 'key'\r\n }\r\n },\r\n \"crud\": {\r\n \"read\": {\r\n \"get\": {\r\n \"url\": getEnvVariable('Application')+`/api/Application/ApplicationFields`,\r\n \"urlpath\": `/{SitePermitTypeId}`,\r\n \"matchProps\": [{\r\n \"value\": \"SitePermitTypeId\"\r\n }]\r\n }\r\n },\r\n \"update\": {\r\n \"put\": {\r\n \"url\": getEnvVariable('Notification')+`/api/NotificationEvents/SaveEventDetails`,\r\n }\r\n },\r\n \"available\": {\r\n \"get\": {\r\n \"url\": getEnvVariable('Application')+`/api/Application/ApplicationFields`,\r\n \"urlpath\": `/{SitePermitTypeId}`,\r\n \"matchProps\": [{\r\n \"value\": \"SitePermitTypeId\"\r\n }]\r\n }\r\n }, \r\n \"selected\": {\r\n \"get\": {\r\n \"url\": getEnvVariable('Notification')+`/api/NotificationEvents/EventDetails`,\r\n \"urlpath\": `?notificationId={ID}&eventOnkey={eventOn}`,\r\n \"routeProps\": [{\r\n \"custom\": \"ID\"\r\n }],\r\n \"matchProps\": [{\r\n \"value\": \"eventOn\"\r\n }]\r\n }\r\n },\r\n },\r\n }\r\n },\r\n ]\r\n },\r\n\r\n /**Added for application event details - end */\r\n\r\n\r\n {\r\n \"type\": \"formswitch\",\r\n \"key\": \"nsstatus\",\r\n \"options\": {\r\n \"row\": 7,\r\n \"col\": 0,\r\n \"width\": 2,\r\n \"label\": \"Status\",\r\n \"name\": \"Status\",\r\n \"initialvalue\": \"I\",\r\n \"transformProps\": {\r\n \"A\": true,\r\n \"I\": false,\r\n true: \"A\",\r\n false: \"I\"\r\n },\r\n LabeltransformProps: {\r\n I: 'In-Active',\r\n A: 'Active',\r\n true: 'Active',\r\n false: 'In-Active',\r\n },\r\n }\r\n },\r\n {\r\n \"type\": \"popupbutton\",\r\n \"key\": \"nssites\",\r\n \"options\": {\r\n \"row\": 8,\r\n \"col\": 0,\r\n \"width\": 3,\r\n \"label\": \"Counties\",\r\n \"name\": \"Counties\",\r\n \"buttonprops\": {\r\n \"text\": \"sites\",\r\n \"size\": \"large\",\r\n \"color\": \"primary\",\r\n \"variant\": \"contained\"\r\n }\r\n },\r\n \"components\": [\r\n {\r\n \"type\": \"multiduallistbox\",\r\n \"key\": \"duallistsites\",\r\n \"options\": {\r\n \"width\": 12,\r\n \"row\": 0,\r\n \"col\": 0,\r\n multiboxes: false,\r\n save: true,\r\n \"transformProps\": {\r\n \"options\": \"availableCollection\",\r\n \"selected\": \"selectedCollection\",\r\n \"value\": \"id\",\r\n \"label\": \"name\"\r\n },\r\n title: 'Counties',\r\n headerProps: {\r\n \"editbutton\": false,\r\n \"savebutton\": true,\r\n \"backbutton\": false,\r\n \"closebutton\": true\r\n }\r\n },\r\n components: [\r\n {\r\n type: 'duallistbox',\r\n key: 'firstduallistbox',\r\n options: {\r\n width: 12,\r\n totalrows: '8',\r\n totalcolumns: '4',\r\n name: 'firstbox',\r\n transformProps: {\r\n available: {\r\n key: 'availableCollection',\r\n label: 'name',\r\n value: 'id'\r\n\r\n },\r\n selected: {\r\n key: 'selectedCollection',\r\n label: 'name',\r\n value: 'id'\r\n }\r\n },\r\n \"crud\": {\r\n \"read\": {\r\n \"get\": {\r\n \"url\": getEnvVariable('Notification')+`/api/NotificationSettings/Sites`,\r\n \"routeProps\": {\r\n \"value\": \"routeid\"\r\n }\r\n }\r\n },\r\n \"update\": {\r\n \"put\": {\r\n \"url\": getEnvVariable('Notification')+`/api/NotificationSettings/SaveSites`,\r\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 type: \"nstemplate\",\r\n key: \"eventtemplate\",\r\n \"components\": [\r\n ]\r\n },\r\n {\r\n \"type\": \"popupbutton\",\r\n \"key\": \"nsschedulenotificationtemplate\",\r\n \"options\": {\r\n \"row\": 8,\r\n \"col\": 2,\r\n \"width\": 3,\r\n \"label\": \"Notification Template\",\r\n \"name\": \"ScheduleNotificationTemplate\",\r\n \"buttonprops\": {\r\n \"text\": \"Notification Template\",\r\n \"size\": \"large\",\r\n \"color\": \"primary\",\r\n \"variant\": \"contained\"\r\n }\r\n },\r\n \"components\": [\r\n ]\r\n },\r\n {\r\n\r\n \"type\": \"multiduallistbox2\",\r\n \"key\": \"nsrecipients\",\r\n \"options\": {\r\n \"width\": 12,\r\n \"row\": 0,\r\n \"col\": 0,\r\n multiboxes: false,\r\n save: true,\r\n \"transformProps\": {\r\n \"options\": \"availableCollection\",\r\n \"selected\": \"selectedCollection\",\r\n \"value\": \"id\",\r\n \"label\": \"name\"\r\n },\r\n save: true,\r\n title: 'Recipients',\r\n headerProps: {\r\n \"editbutton\": false,\r\n \"savebutton\": true,\r\n \"backbutton\": false,\r\n \"closebutton\": true\r\n }\r\n },\r\n components: [\r\n {\r\n type: 'duallistbox',\r\n key: 'firstduallistbox',\r\n options: {\r\n width: 6,\r\n totalrows: '8',\r\n totalcolumns: '4',\r\n name: 'firstbox',\r\n transformProps: {\r\n available: {\r\n key: 'availableCollection',\r\n label: 'name',\r\n value: 'id'\r\n\r\n },\r\n selected: {\r\n key: 'selectedCollection',\r\n label: 'name',\r\n value: 'id'\r\n }\r\n },\r\n \"crud\": {\r\n \"read\": {\r\n \"get\": {\r\n \"url\": getEnvVariable('Notification')+`/api/NotificationRecipients/Recipient`,\r\n \"routeProps\": {\r\n \"value\": \"ID\"\r\n }\r\n }\r\n },\r\n \"update\": {\r\n \"put\": {\r\n \"url\": getEnvVariable('Notification')+`/api/NotificationRecipients/SaveRecipients`,\r\n }\r\n },\r\n },\r\n }\r\n },\r\n {\r\n type: 'duallistbox',\r\n key: 'secondduallistbox',\r\n options: {\r\n helperText: '', //Once saved sections cannot be removed. They can only be hidden\r\n width: 6,\r\n totalrows: '8',\r\n totalcolumns: '4',\r\n name: 'second box',\r\n transformProps: {\r\n available: {\r\n key: 'availableCollection',\r\n label: 'name',\r\n value: 'id'\r\n\r\n },\r\n selected: {\r\n key: 'selectedCollection',\r\n label: 'name',\r\n value: 'id'\r\n }\r\n },\r\n \"crud\": {\r\n \"read\": {\r\n \"get\": {\r\n \"url\": getEnvVariable('Notification')+`/api/NotificationSettings/Sites`,\r\n \"routeProps\": {\r\n \"value\": \"routeid\"\r\n }\r\n }\r\n },\r\n \"update\": {\r\n \"put\": {\r\n \"url\": getEnvVariable('Admin')+`/api/NotificationSettings/SaveSites`,\r\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 nsComponents","import MomentUtils from '@date-io/moment';\r\nimport Accordion from '@material-ui/core/Accordion';\r\nimport AccordionDetails from '@material-ui/core/AccordionDetails';\r\nimport AccordionSummary from '@material-ui/core/AccordionSummary';\r\nimport Box from '@material-ui/core/Box';\r\nimport Button from '@material-ui/core/Button';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\r\nimport { KeyboardDatePicker, MuiPickersUtilsProvider } from \"@material-ui/pickers\";\r\nimport moment from 'moment';\r\nimport PropTypes from 'prop-types';\r\nimport React, { Component, Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { bindActionCreators } from 'redux';\r\nimport { snackbarMessage } from '../../core/actions';\r\nimport CheckboxesTags from '../../core/controls/components/checkautocomplete';\r\nimport { GetData, PostData, PutData } from '../../core/controls/helpers/requests';\r\nimport CFormCheckBox from '../../core/modules/form/cformcheckbox';\r\nimport CFormDropDown from '../../core/modules/form/cformdropdown';\r\nimport FormHeader from '../../core/modules/form/cformheader';\r\nimport CFormTextBox from '../../core/modules/form/cformtextbox';\r\nimport { globalvalidate as GlobalValidate } from '../../core/modules/form/validations';\r\nimport Grid from '../../core/modules/Grid/cgrid';\r\nimport Template from '../../core/modules/template/template';\r\nimport historygrid from '../../json/common/notices/noticehistorygrid';\r\nimport noticeCommonComponents from '../../json/notificationsettings/nsComponents';\r\nimport { getEnvVariable } from '../environmentalList';\r\n\r\nconst transformProps = {\r\n \"value\": \"Id\",\r\n \"name\": \"Name\",\r\n \"key\": \"Id\"\r\n}\r\n\r\n\r\nconst addbreadcrumbs = [\r\n { \"link\": \"Add Notice\", \"materialicon\": \"tab\", className: 'eps-breadcrumb-item', class: 'text-light' }\r\n]\r\nconst editbreadcrumbs = [\r\n\r\n { \"link\": \"View/Edit Notice\", appendval: 'NoticeTypeIdDesc', \"materialicon\": \"tab\", className: 'eps-breadcrumb-item', class: 'text-light' }\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 <Typography\r\n component=\"div\"\r\n role=\"tabpanel\"\r\n hidden={value !== index}\r\n id={`scrollable-force-tabpanel-${index}`}\r\n aria-labelledby={`scrollable-force-tab-${index}`}\r\n {...other}\r\n >\r\n {value === index && <Box p={3}>{children}</Box>}\r\n </Typography>\r\n );\r\n}\r\n\r\nTabPanel.propTypes = {\r\n children: PropTypes.node,\r\n index: PropTypes.any.isRequired,\r\n value: PropTypes.any.isRequired,\r\n};\r\n\r\nfunction a11yProps(index) {\r\n return {\r\n id: `scrollable-force-tab-${index}`,\r\n 'aria-controls': `scrollable-force-tabpanel-${index}`,\r\n };\r\n}\r\n\r\nclass NoticeCommon extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n noticeTypeJson: [],\r\n results: { TemplateId: 0, NoticeTypeId: \"\", NoticeDate: \"\", CertifiedMailNo: \"\", NoticeDescription: \"\" },\r\n showTemplate: false,\r\n TemplateId: 0,\r\n ParentId: 0,\r\n NoticeTypeId: 0,\r\n updateRecord: this.props.options.updateRecord,\r\n noticeEntryData: [],\r\n NoticeDate: moment(new Date()).format('MM/DD/YYYY'),\r\n CertifiedMailNo: \"\",\r\n NoticeDescription: \"\",\r\n ProjectMessages: [],\r\n errors: {},\r\n errorForBody: {},\r\n SendToOwner: false,\r\n tabvalue: 0,\r\n EmailModel: { Subject: '', Body: '', MailTo: [], TemplateList: [] },\r\n CanEditNoticeDate: '',\r\n CanEditPastNoticeDate: '',\r\n CanEditCurrentNoticeDate: '',\r\n CanEditFutureNoticeDate: '',\r\n DisableNoticeDate: true,\r\n sideBarTablesRecords: [],\r\n sideBarTables: [],\r\n attachmentsdata: [],\r\n Templatedownloaddata: [],\r\n AttachmentIDS: '',\r\n canAttachApplication: '',\r\n canAttachPermit: '',\r\n PermitTempalteID: '',\r\n ApplicationTemplateID: '',\r\n edit: this.props.options.updateRecord ? true : false,\r\n expanded: 'panel1'\r\n\r\n\r\n }\r\n this.masterTableId = this.props.match.params.routeid1 // ApplicationId, PermitId, CompanyId\r\n this.sitePermitTypeId = this.props.match.params.routeid\r\n this.fieldValues = {};\r\n if (this.state.updateRecord) {\r\n this.noticeComponentsArray = { ...historygrid };\r\n this.historygridjson = this.noticeComponentsArray.options\r\n }\r\n this.nsComponentsArray = { ...noticeCommonComponents };\r\n this.statusJson = this.nsComponentsArray.components.find(x => x.key === \"nsstatus\").options;\r\n this.url1 = getEnvVariable('Admin') + `/api/NoticeTypes/All/${this.props.match.params.routeid}`\r\n this.url2 = this.props.dataItem && this.props.dataItem.Id ? getEnvVariable('Application') + `/api/Notices/${this.props.match.params.routeid1}/Notice/${this.props.dataItem.Id}` : getEnvVariable('Application') + `/api/Notices/${this.props.match.params.routeid1}/Notice/${this.props.initialloadextrainfo.results[\"COMPANY_ID\"]}`\r\n this.url3 = this.props.dataItem && this.props.dataItem.Id ? getEnvVariable('Application') + `/api/Notices/${this.props.match.params.routeid1}/Update/${this.props.dataItem.Id}` : getEnvVariable('Application') + `/api/Notices/${this.props.match.params.routeid1}/Update/${this.props.initialloadextrainfo.results[\"COMPANY_ID\"]}`\r\n this.url4 = getEnvVariable('Application') + `/api/Notices/${this.props.match.params.routeid1}/Add`\r\n this.url5 = getEnvVariable('Application') + `/api/Application/FieldValues`;\r\n this.url6 = getEnvVariable('Application') + `/api/Attachments/${this.props.match.params.routeid1}/AttachmentsList`\r\n this.url7 = getEnvVariable('AdminConfig') + `/api/SitePermitTypeTemplateSettings/${this.props.match.params.routeid}/${this.props.initialloadextrainfo && this.props.initialloadextrainfo.results && this.props.initialloadextrainfo.results['APPLICATION_STATUS']}/GetAllForApplication`\r\n this.noticeporjectmessage = getEnvVariable('Application') + `/api/ProjectMessages/RulesByName?name=modulemaster.notices`;\r\n this.sidebartablesurl = getEnvVariable('Application') + `/api/SubModuleSideBar/All`;\r\n this.TemplateForm = React.createRef()\r\n }\r\n\r\n handleFieldChange = (event) => {\r\n let value = event.target.value;\r\n const name = event.target.name;\r\n if (name === 'canAttachPermit' || name === 'canAttachApplication') {\r\n value = event.target.checked === true ? \"Y\" : \"N\";\r\n }\r\n if (name === 'NoticeDescription') {\r\n this.setState({ errors: { ...this.state.errors, NoticeDescription: { error: false, errortext: null } } });\r\n }\r\n if (name === 'NoticeTypeId') {\r\n let selrecord = this.state.noticeTypeJson.find(x => x.Id === value);\r\n let sdtables = selrecord.SideBarTables ? selrecord.SideBarTables.split(',') : [];\r\n let sdtablesfilter = this.state.sideBarTablesRecords.filter(a => sdtables.includes(a.id.toString()));\r\n let sdtablesloadmap = sdtablesfilter ? sdtablesfilter.map(a => (a.name)) : [];\r\n if (selrecord) {\r\n this.setState({\r\n [name]: value,\r\n ParentId: selrecord.Id,\r\n CanEditNoticeDate: selrecord.CanEditNoticeDate,\r\n CanEditPastNoticeDate: selrecord.CanEditPastNoticeDate,\r\n CanEditCurrentNoticeDate: selrecord.CanEditCurrentNoticeDate,\r\n CanEditFutureNoticeDate: selrecord.CanEditFutureNoticeDate,\r\n DisableNoticeDate: selrecord.CanEditNoticeDate === \"Y\" ? false : true,\r\n showTemplate: true,\r\n sideBarTables: sdtablesloadmap,\r\n results: {\r\n ...this.state.results,\r\n [name]: value\r\n }\r\n }, () => {\r\n this.loadNoticeEntryData(this.state.sideBarTables)\r\n this.validateFieldChange(name, value)\r\n })\r\n }\r\n\r\n }\r\n else if (name === 'NoticeDate') {\r\n console.log(event);\r\n this.setState({\r\n [name]: moment(value).format('MM/DD/YYYY'),\r\n results: {\r\n ...this.state.results,\r\n [name]: value\r\n }\r\n }, () => this.validateFieldChange(name, value))\r\n }\r\n\r\n else {\r\n this.setState({\r\n [name]: value,\r\n results: {\r\n ...this.state.results,\r\n [name]: value\r\n }\r\n }, () => this.validateFieldChange(name, value))\r\n }\r\n }\r\n\r\n handleAccordionChange = (panel) => (event, isExpanded) => {\r\n this.setState({ expanded: isExpanded ? panel : false })\r\n };\r\n\r\n\r\n handleNoticeDateChange = (e) => {\r\n let convertMoment = e ? moment(e, 'MM/DD/YYYY').format('MM/DD/YYYY') : null\r\n this.setState({\r\n \"NoticeDate\": convertMoment ? convertMoment : '',\r\n results: {\r\n ...this.state.results,\r\n \"NoticeDate\": convertMoment ? convertMoment : '',\r\n }\r\n }, () => this.validateFieldChange(\"NoticeDate\", convertMoment))\r\n }\r\n\r\n componentDidMount() {\r\n let statusid = localStorage.getItem('applicationstatus') && JSON.parse(localStorage.getItem('applicationstatus'))\r\n this.url1 = (this.props && this.props.match && this.props.match.params && statusid) ? getEnvVariable('AdminConfig') + `/api/SitePermitTypesConfig/${this.props.match.params.routeid}/${statusid}/NoticeTypes` : getEnvVariable('Admin') + `/api/NoticeTypes/All/${this.props.match.params.routeid}`\r\n this.didmountinitialload();\r\n }\r\n didmountinitialload() {\r\n\r\n this.fetchData('GET', this.noticeporjectmessage, null, null).then(data => this.setState({\r\n ProjectMessages: data\r\n }))\r\n\r\n this.fetchData('GET', this.url1, null, null).then(data => this.setState({\r\n noticeTypeJson: data,\r\n\r\n }))\r\n\r\n\r\n\r\n this.fetchData('GET', `${this.sidebartablesurl}`, null, null)\r\n .then(data => {\r\n if (data && Array.isArray(data)) {\r\n let tabls = data.map(a => ({ id: a.Id, name: a.TableName, value: a.Id }))\r\n this.setState({\r\n sideBarTablesRecords: tabls\r\n })\r\n }\r\n })\r\n\r\n if (this.state.updateRecord) {\r\n this.fetchData('GET', this.url2, null, null)\r\n .then(data => {\r\n console.log(data);\r\n let selrecord = this.state.noticeTypeJson.find(x => x.Id === data.NoticeTypeId);\r\n this.setState({\r\n TemplateId: data.TemplateId,\r\n NoticeTypeId: data.NoticeTypeId,\r\n NoticeDate: data.NoticeDate,\r\n CertifiedMailNo: data.CertifiedMailNo,\r\n NoticeDescription: data.NoticeDescription,\r\n canAttachPermit: data.canAttachPermit,\r\n canAttachApplication: data.canAttachApplication,\r\n results: data,\r\n showTemplate: true,\r\n CanEditNoticeDate: data.CanEditNoticeDate,\r\n CanEditPastNoticeDate: data.CanEditPastNoticeDate,\r\n CanEditCurrentNoticeDate: selrecord && selrecord.CanEditCurrentNoticeDate ? selrecord.CanEditCurrentNoticeDate : data.CanEditCurrentNoticeDate,\r\n CanEditFutureNoticeDate: selrecord && selrecord.CanEditFutureNoticeDate ? selrecord.CanEditFutureNoticeDate : data.CanEditFutureNoticeDate,\r\n DisableNoticeDate: selrecord && selrecord.CanEditNoticeDate === \"Y\" ? false : true\r\n })\r\n }\r\n )\r\n }\r\n this.fetchData('GET', this.url6, null, null)\r\n .then(attachmentsdata => {\r\n if (attachmentsdata && attachmentsdata.length > 0 && Array.isArray(attachmentsdata)) {\r\n let attachids = attachmentsdata.map(a => ({ id: a.id, name: a.name, value: a.id }))\r\n this.setState({\r\n attachmentsdata: attachids,\r\n AttachmentIDS: attachids[0].id\r\n })\r\n }\r\n })\r\n\r\n this.fetchData('GET', this.url7, null, null)\r\n .then(Templatedownloaddata => {\r\n if (Templatedownloaddata && Templatedownloaddata.length > 0 && Array.isArray(Templatedownloaddata)) {\r\n let Apptemplateid = Templatedownloaddata.map(a => ({ id: a.AppDownloadsId, name: a.AppDownloadsGroup, value: a.AppDownloadsId }))\r\n let Permittemplateid = Templatedownloaddata.map(a => ({ id: a.PermitDownloadsId, name: a.PermitDownloadsGroup, value: a.PermitDownloadsId }))\r\n this.setState({\r\n PermitTempalteID: Permittemplateid[0].id,\r\n ApplicationTemplateID: Apptemplateid[0].id\r\n })\r\n }\r\n })\r\n\r\n }\r\n\r\n loadNoticeEntryData(tables) {\r\n let urlcon = \"\";\r\n let body = {};\r\n let SideBarDataItems = {}\r\n let sideBarItems = tables;\r\n sideBarItems.forEach(element => {\r\n urlcon = urlcon + 'table=' + element + '&';\r\n if (this.props.childTable)\r\n SideBarDataItems[element] = this.props.childTable.Id\r\n });\r\n body['sitePermitTypeId'] = this.sitePermitTypeId\r\n body['masterTableId'] = this.masterTableId\r\n body['SideBarDataItems'] = SideBarDataItems;\r\n body['sideBarItems'] = sideBarItems;\r\n /* \"sitePermitTypeId\": 276,\r\n \"masterTableId\": 23343,\r\n \"sideBarItems\": [\r\n \"Notes\"\r\n ],\r\n \"SideBarDataItems\": {\r\n \"Notes\": 10312\r\n } */\r\n let url = this.url5 //+ \"?\" + urlcon;\r\n this.fetchData('POST', url, null, body, true).then(data => {\r\n this.setState({ noticeEntryData: data });\r\n })\r\n }\r\n\r\n // Description : for handling notice date format\r\n handleSaveWithTemplate = (event) => {\r\n if (this.state.results.NoticeDate === \"\" && this.state.NoticeDate === \"\") {\r\n this.setState({ errors: { ...this.state.errors, NoticeDate: { error: true, errortext: 'Notice Date is required' } } });\r\n }\r\n // if (this.state.CertifiedMailNo != \"\") {\r\n else {\r\n let convertMoment = moment(this.state.results.NoticeDate === \"\" || this.state.results.NoticeDate === null ? new Date() : this.state.results.NoticeDate).format('MM/DD/YYYY')\r\n this.setState({\r\n NoticeDate: convertMoment,\r\n results: {\r\n ...this.state.results,\r\n \"NoticeDate\": convertMoment\r\n }\r\n }, () => { this.handleSaveWithTemplateData(event) })\r\n //}\r\n }\r\n }\r\n\r\n handleSaveWithTemplateData = (event) => {\r\n console.log(this.state.results);\r\n var isValid = this.validateData(this.state.results);\r\n let descInValid = this.state.results.NoticeDescription.trim()\r\n let strlengthnotice = this.state.results.NoticeDescription != null ? this.state.results.NoticeDescription.length : \"\"\r\n let descLeading = this.state.results.NoticeDescription && this.state.results.NoticeDescription != \"\" && this.state.results.NoticeDescription.charAt(0) === \" \" || this.state.results.NoticeDescription.charAt(0) === '\\n' || this.state.results.NoticeDescription.charAt(strlengthnotice - 1) === \" \"\r\n let descLength = this.state.results.NoticeDescription && this.state.results.NoticeDescription != \"\" && strlengthnotice > 4000\r\n if (descInValid.length === 0 && this.state.results.NoticeDescription && this.state.results.NoticeDescription != \"\") {\r\n this.props.snackbarMessage('Verify Validation Errors', 'error');\r\n this.setState({ errors: { ...this.state.errors, NoticeDescription: { error: true, errortext: 'Notice Description is not valid' } } });\r\n }\r\n else if (descLeading) {\r\n this.props.snackbarMessage('Verify Validation Errors', 'error');\r\n this.setState({ errors: { ...this.state.errors, NoticeDescription: { error: true, errortext: 'Leading or trailing spaces are not allowed' } } });\r\n }\r\n else if (descLength) {\r\n this.props.snackbarMessage('Verify Validation Errors', 'error');\r\n this.setState({ errors: { ...this.state.errors, NoticeDescription: { error: true, errortext: 'Notice Description length should be in the range of (1-4000)' } } });\r\n }\r\n else if (isValid) {\r\n\r\n this.TemplateForm.current.saveTemplate();\r\n } else {\r\n this.props.snackbarMessage('Invalid Data, Cannot be saved', 'error')\r\n }\r\n }\r\n\r\n handleSave = (event) => {\r\n console.log(this.state.results);\r\n //if(this.validateData(this.state.results)){}\r\n\r\n if (this.state.updateRecord) {\r\n this.fetchData('PUT', this.url3, null, this.state.results)\r\n\r\n .then(data => {\r\n this.setState({\r\n results: data,\r\n opensnackbar: true\r\n })\r\n\r\n this.props.onClose();\r\n\r\n })\r\n }\r\n else {\r\n let finalresults = { ...this.state.results, AttachmentIDS: this.state.AttachmentIDS, PermitTempalteID: this.state.PermitTempalteID, ApplicationTemplateID: this.state.ApplicationTemplateID }\r\n this.fetchData('POST', this.url4, null, finalresults)\r\n\r\n .then(data => {\r\n this.setState({\r\n results: { data },\r\n opensnackbar: true\r\n })\r\n\r\n this.props.onClose();\r\n\r\n\r\n })\r\n }\r\n }\r\n handleBack = () => {\r\n this.props.onClose()\r\n }\r\n\r\n validateData = (resultdata) => {\r\n var allErrors = this.validateStateResults(resultdata);\r\n if (Object.keys(allErrors).length > 0) {\r\n this.setState({ errors: allErrors })\r\n return false\r\n } else {\r\n this.setState({ errors: {} })\r\n return true\r\n }\r\n }\r\n\r\n validateStateResults = (resultdata) => {\r\n var allErrors = {};\r\n for (let [key, value] of Object.entries(resultdata)) {\r\n //console.log(`${key}: ${value}`);\r\n var errorJson = {}\r\n errorJson = { [key]: this.getDBValidationMessages(key) };\r\n const error = GlobalValidate(errorJson, { [key]: value })\r\n var isError = (Object.keys(error).length > 0 && error[key]['error']) ? error[key]['error'] : false;\r\n if (isError) {\r\n allErrors[key] = { error: true, errortext: error[key]['errortext'] };\r\n }\r\n }\r\n return allErrors;\r\n }\r\n\r\n validateFieldChange(key, value) {\r\n var allErrors = this.state.errors;\r\n var errorJson = {}\r\n errorJson = { [key]: this.getDBValidationMessages(key) };\r\n const error = GlobalValidate(errorJson, { [key]: value })\r\n var isError = (Object.keys(error).length > 0 && error[key]['error']) ? error[key]['error'] : false;\r\n if (isError) {\r\n allErrors[key] = { error: true, errortext: error[key]['errortext'] };\r\n } else {\r\n delete allErrors[key];\r\n }\r\n this.setState({ errors: allErrors });\r\n }\r\n\r\n getDBValidationMessages(key) {\r\n var keyinuppercase = key.toUpperCase();\r\n var validationSearchKey = \"_\" + keyinuppercase;\r\n var matchingKeys = this.state.ProjectMessages.filter(f => f['Key'].includes(validationSearchKey));;\r\n return matchingKeys;\r\n }\r\n\r\n //This is the template Id\r\n handleTemplateId = (data) => {\r\n\r\n console.log(this.state);\r\n this.setState({\r\n TemplateId: data.id,\r\n ParentId: 0,\r\n results: {\r\n ...this.state.results,\r\n \"TemplateId\": data.id\r\n }\r\n }, () => { this.handleSave(); })\r\n }\r\n\r\n fetchData(requestType, url, queryParam, body, alert = false) {\r\n\r\n const queryStr = queryParam != null ? `${url}?${queryParam}` : `${url}`\r\n\r\n if (requestType === \"GET\") {\r\n return GetData(queryStr);\r\n }\r\n else if (requestType === \"POST\") {\r\n return PostData(queryStr, body, alert);\r\n }\r\n else if (requestType === \"PUT\")\r\n return PutData(queryStr, body);\r\n }\r\n\r\n downloadExternalPDF = (id) => {\r\n //const pdfurl = getEnvVariable('Application')+`/api/Notices/${this.props.match.params.routeid1}/PDF/${this.props.match.params.routeid2}`\r\n const pdfurl = getEnvVariable('TemplateAPI') + `/api/Template/PDF/${this.state.TemplateId}`;\r\n this.fetchData('GET', pdfurl, null, null).then(data => {\r\n if (data) {\r\n\r\n var contentPDF = data.fileContentPDF;\r\n var filename = 'Notice_' + data.id + '.pdf';\r\n this.handleFileDownload(contentPDF, filename);\r\n }\r\n })\r\n }\r\n\r\n\r\n handleFileDownload = (contentPDF, filename) => {\r\n var url = \"data:pdf;base64,\" + contentPDF;\r\n fetch(url)\r\n .then(res => res.blob())\r\n .then(function (blob) {\r\n console.log(blob);\r\n var a = document.createElement(\"a\");\r\n document.body.appendChild(a);\r\n a.style = \"display: none\";\r\n var url = window.URL.createObjectURL(blob);\r\n a.href = url;\r\n a.download = filename;\r\n a.click();\r\n window.URL.revokeObjectURL(url);\r\n })\r\n }\r\n\r\n toggleEmailDrawer = (open) => {\r\n this.setState({ SendToOwner: open });\r\n }\r\n\r\n SendNoticeEmail = () => {\r\n //if (this.state.noticeEntryData && this.state.noticeEntryData.length > 0) {\r\n if (this.state.EmailModel.Subject && this.state.EmailModel.Subject.length > 0) {\r\n\r\n let strlength = this.state.EmailModel.Subject != null ? this.state.EmailModel.Subject.length : \"\"\r\n let strbodylen = this.state.EmailModel.Body != null ? this.state.EmailModel.Body.length : \"\"\r\n let bodyInValid = this.state.EmailModel.Body.trim()\r\n let subLeading = this.state.EmailModel.Subject && this.state.EmailModel.Subject != \"\" && this.state.EmailModel.Subject.charAt(0) === \" \" || this.state.EmailModel.Subject.charAt(strlength - 1) === \" \"\r\n let subLength = this.state.EmailModel.Subject && this.state.EmailModel.Subject != \"\" && strlength > 100\r\n let bodyLeading = this.state.EmailModel.Body && this.state.EmailModel.Body != \"\" && this.state.EmailModel.Body.charAt(0) === \" \" || this.state.EmailModel.Body.charAt(strbodylen - 1) === \" \"\r\n let bodyLength = this.state.EmailModel.Body && this.state.EmailModel.Body != \"\" && strbodylen > 4000\r\n let subInValid = this.state.EmailModel.Subject.trim()\r\n\r\n if (subLeading || (subInValid.length === 0) || subLength || bodyLeading || bodyLength || (bodyInValid.length === 0)) {\r\n if (subLeading || subLength || (subInValid.length === 0)) {\r\n if (subInValid.length === 0) {\r\n this.props.snackbarMessage('Verify Validation Errors', 'error');\r\n this.setState({ errors: { ...this.state.errors, Subject: { error: true, errortext: 'Subject is not valid' } } });\r\n } else if (subLength) {\r\n this.props.snackbarMessage('Verify Validation Errors', 'error');\r\n this.setState({ errors: { ...this.state.errors, Subject: { error: true, errortext: 'Subject length should be in the range of (1-100)' } } });\r\n } else if (subLeading) {\r\n this.props.snackbarMessage('Verify Validation Errors', 'error');\r\n this.setState({ errors: { ...this.state.errors, Subject: { error: true, errortext: 'Leading or trailing spaces are not allowed' } } });\r\n }\r\n }\r\n if (bodyLeading || bodyLength || (bodyInValid.length === 0)) {\r\n if (bodyInValid.length === 0) {\r\n this.props.snackbarMessage('Verify Validation Errors', 'error');\r\n this.setState({ errorForBody: { ...this.state.errorForBody, Body: { error: true, errortext: 'Body is not valid' } } });\r\n } else if (bodyLeading) {\r\n this.props.snackbarMessage('Verify Validation Errors', 'error');\r\n this.setState({ errorForBody: { ...this.state.errorForBody, Body: { error: true, errortext: 'Leading or trailing spaces are not allowed' } } });\r\n } else if (bodyLength) {\r\n this.props.snackbarMessage('Verify Validation Errors', 'error');\r\n this.setState({ errorForBody: { ...this.state.errorForBody, Body: { error: true, errortext: 'Body length should be in the range of (1-4000)' } } });\r\n }\r\n }\r\n }\r\n else {\r\n\r\n let ownerid = this.props.initialloadextrainfo.results[\"COMPANY_ID\"]\r\n let ownerdetailsurl = getEnvVariable('MasterAdmin') + `/api/CompanyInternal/` + getEnvVariable('ModuleKey') + `/` + ownerid\r\n\r\n GetData(ownerdetailsurl, false).then(resp => {\r\n if (resp && resp.Contacts && resp.Contacts.PrimaryContactAddress && resp.Contacts.PrimaryContactAddress.Email) {\r\n let mailContent = { ...this.state.EmailModel, \"MailTo\": [resp.Contacts.PrimaryContactAddress.Email], \"Notices\": [this.state.NoticeTypeId] }\r\n let emaiLUrl = getEnvVariable('TemplateAPI') + `/api/Template/SendNotice`;\r\n PostData(emaiLUrl, mailContent, false, 'Notice sent to ('+resp.Contacts.PrimaryContactAddress.Email+')').then(res => {\r\n this.toggleEmailDrawer(false);;\r\n this.setState({ EmailModel: { Subject: '', Body: '', MailTo: [], Notices: [] } })\r\n })\r\n }\r\n })\r\n // this.fetchData('GET', ownerdetailsurl, null, null).then(data => {\r\n // if (data) {\r\n // var email = data.Contacts.PrimaryContactAddress.Email;\r\n // if (email) {\r\n // var model = this.state.EmailModel;\r\n // model.MailTo = []\r\n // model.MailTo.push(email)\r\n // //const sendurl = getEnvVariable('TemplateAPI')+`/api/Template/SendEmail/${this.state.TemplateId}`;\r\n // model.TemplateList.push(this.state.TemplateId, this.state.PermitTempalteID, this.state.ApplicationTemplateID)\r\n // const sendurl = getEnvVariable('TemplateAPI') + `/api/Template/SendNoticeEmail`;\r\n // this.fetchData('POST', sendurl, null, model, true)\r\n\r\n // .then(data => {\r\n // console.log(data);\r\n // this.props.snackbarMessage('Notice Sent Successfully(' + email + ')', 'success');\r\n // this.toggleEmailDrawer(false);\r\n\r\n // // this.setState({ EmailModel: { Subject: '', Body: '', MailTo: [], TemplateList: [] } })\r\n // })\r\n // }\r\n\r\n // }\r\n // })\r\n }\r\n } if ((this.state.EmailModel.Subject === null) || (this.state.EmailModel.Subject === undefined) || (this.state.EmailModel.Subject === '')) {\r\n this.props.snackbarMessage('Verify Validation Errors', 'error');\r\n this.setState({ errors: { ...this.state.errors, Subject: { error: true, errortext: 'Subject is required' } } });\r\n }\r\n if ((this.state.EmailModel.Body === null) || (this.state.EmailModel.Body === undefined) || (this.state.EmailModel.Body === '')) {\r\n this.props.snackbarMessage('Verify Validation Errors', 'error');\r\n this.setState({ errorForBody: { ...this.state.errorForBody, Body: { error: true, errortext: 'Body is required' } } });\r\n }\r\n\r\n //}\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevProps.dataItem != this.props.dataItem) {\r\n this.setState({ tabvalue: 0 })\r\n this.url2 = getEnvVariable('Application') + `/api/Notices/${this.props.match.params.routeid1}/Notice/${this.props.dataItem.Id}`\r\n this.url3 = getEnvVariable('Application') + `/api/Notices/${this.props.match.params.routeid1}/Update/${this.props.dataItem.Id}`\r\n this.didmountinitialload();\r\n }\r\n }\r\n\r\n handleEmailFieldChange = (event) => {\r\n const value = event.target.value;\r\n const name = event.target.name;\r\n if (name === 'Subject') {\r\n this.setState({ errors: { ...this.state.errors, Subject: { error: false, errortext: null } } });\r\n }\r\n else if (name === 'Body') {\r\n this.setState({ errorForBody: { ...this.state.errorForBody, Body: { error: false, errortext: null } } });\r\n }\r\n this.setState({\r\n EmailModel: {\r\n ...this.state.EmailModel,\r\n [name]: value\r\n }\r\n })\r\n }\r\n handleChange = (event, newValue) => {\r\n this.setState({ tabvalue: newValue, EmailModel: { Subject: '', Body: '', MailTo: [], TemplateList: [] } })\r\n }\r\n\r\n handleEdit = () => {\r\n this.setState({ edit: false })\r\n }\r\n\r\n vieweditnotice = () => {\r\n const { NoticeDate, updateRecord, edit, tabvalue, results, CanEditPastNoticeDate, CanEditCurrentNoticeDate, CanEditFutureNoticeDate, DisableNoticeDate, sideBarTables, PermitTempalteID } = this.state;\r\n const caneditfields = true;//!(this.state.results.TemplateId > 0) ;\r\n const noticeTypeError = this.state.errors && this.state.errors.NoticeTypeId && this.state.errors.NoticeTypeId.error ? this.state.errors.NoticeTypeId.errortext : null\r\n const certifiedMailError = this.state.errors && this.state.errors.CertifiedMailNo && this.state.errors.CertifiedMailNo.error ? this.state.errors.CertifiedMailNo.errortext : null\r\n const noticeDateError = this.state.errors && this.state.errors.NoticeDate && this.state.errors.NoticeDate.error ? this.state.errors.NoticeDate.errortext : null\r\n const noticeDescriptionError = this.state.errors && this.state.errors.NoticeDescription && this.state.errors.NoticeDescription.error ? this.state.errors.NoticeDescription.errortext : null\r\n let approvedflag = this.props && this.props.match && this.props.match.params && this.props.initialloadextrainfo.results[\"APPROVED_FLAG\"] ? this.props.initialloadextrainfo.results[\"APPROVED_FLAG\"] : \"N\"\r\n let hidesavebutton = approvedflag === \"Y\" ? true : false;\r\n let roleaccess = this.props.accessPermissions && this.props.accessPermissions.moduleDistrictAccess && this.props.accessPermissions.moduleDistrictAccess ? Object.values(this.props.accessPermissions.moduleDistrictAccess).includes('Add') ? 'CanAdd' : Object.values(this.props.accessPermissions.moduleDistrictAccess).includes('Update') ? 'CanEdit' : Object.values(this.props.accessPermissions.moduleDistrictAccess).includes('Read') ? 'CanRead' : 'CanAdd' : 'CanAdd'\r\n let portal = this.props.accessPermissions ? this.props.accessPermissions.portal : null\r\n let canAdd = (!roleaccess || !portal) ? true : portal === \"I\" && roleaccess === \"CanAdd\" ? true : (portal === \"E\") ? true : false\r\n let canEdit = (!roleaccess || !portal) ? true : portal === \"I\" && roleaccess === \"CanEdit\" ? true : (portal === \"E\") ? true : false\r\n const canShowTemplate = (this.state.showTemplate && ((this.state.ParentId && this.state.ParentId > 0\r\n && Array.isArray(this.state.noticeEntryData) && this.state.noticeEntryData.length > 0)\r\n || (this.state.updateRecord)))\r\n return <div className=\"col-12\">\r\n\r\n <div className=\"row mt-3\">\r\n <div className=\"col-md-12\">\r\n {updateRecord && <FormHeader title=\"Entrance Permit - Notices\" handleEdit={this.handleEdit} handleSave={this.handleSaveWithTemplate} editbutton={(this.props.accessPermissions.portal === 'E' || (hidesavebutton)) ? false : (canAdd || canEdit) ? caneditfields ? edit ? true : false : false : false} savebutton={edit ? false : (this.props.accessPermissions.portal === 'E' || (hidesavebutton)) ? false : (canAdd || canEdit) ? caneditfields : false} breadcrumbs={editbreadcrumbs} accessLevelPermissions={this.props.accessLevelPermissions} backbutton={true} handleBack={this.handleBack} designprops={true} dataItem={this.props.dataItem} />}\r\n {edit && updateRecord && <div>\r\n <div>\r\n <Typography variant=\"caption\" className=\"text-secondary\">\r\n Notice Type\r\n </Typography>\r\n {this.state.NoticeTypeId && this.state.NoticeTypeId != \"\" && this.state.noticeTypeJson && this.state.noticeTypeJson.length > 0 && this.state.noticeTypeJson.map(menu => {\r\n if (menu.Id === this.state.NoticeTypeId) {\r\n return <Typography variant={'body2'} color={'textPrimary'} display=\"block\" className=\"fw-bold eps-content-wrap\">\r\n {menu.Name}\r\n </Typography>\r\n }\r\n return null\r\n })\r\n }\r\n </div>\r\n <div><Typography variant=\"caption\" className=\"text-secondary\">\r\n Notice Date\r\n </Typography>\r\n <Typography variant={'body2'} color={'textPrimary'} display=\"block\" className=\"fw-bold eps-content-wrap\">\r\n {((NoticeDate && NoticeDate === '') ? new Date() : moment(NoticeDate).format('MM/DD/YYYY')) || null}\r\n </Typography></div>\r\n <div><Typography variant=\"caption\" className=\"text-secondary\">\r\n Certified Mail Number\r\n </Typography>\r\n <Typography variant={'body2'} color={'textPrimary'} display=\"block\" className=\"fw-bold eps-content-wrap\">\r\n {this.state.CertifiedMailNo}\r\n </Typography></div>\r\n <div><Typography variant=\"caption\" className=\"text-secondary\">\r\n Notice Description\r\n </Typography>\r\n <Typography variant={'body2'} color={'textPrimary'} display=\"block\" className=\"fw-bold eps-content-wrap\">\r\n {this.state.NoticeDescription}\r\n </Typography>\r\n {/* {this.props.match.params.key != 'VIOLATIONS' && <div> <Typography variant=\"caption\" className=\"text-secondary\">\r\n Can Attach Permit\r\n </Typography>\r\n <Typography variant={'body2'} color={'textPrimary'} display=\"block\" className=\"fw-bold eps-content-wrap\">\r\n {this.state.canAttachPermit === 'Y' ? \"Yes\" : \"No\"}\r\n </Typography>\r\n <Typography variant=\"caption\" className=\"text-secondary\">\r\n Can Attach Application\r\n </Typography>\r\n <Typography variant={'body2'} color={'textPrimary'} display=\"block\" className=\"fw-bold eps-content-wrap\">\r\n {this.state.canAttachApplication === 'Y' ? \"Yes\" : \"No\"}\r\n </Typography></div>} */}\r\n </div></div>}\r\n {!edit && <div><CFormDropDown value={this.state.NoticeTypeId} dropdownvalues={this.state.noticeTypeJson} required={true}\r\n name=\"NoticeTypeId\" label=\"Notice Type\" transformProps={transformProps}\r\n handleFieldChange={this.handleFieldChange} disabled={updateRecord ? true : false} helperText={noticeTypeError} error={noticeTypeError ? true : false} />\r\n {/* <CDateTimePicker value={this.state.NoticeDate} type = \"datetime-local\"\r\n name=\"NoticeDate\" options = {label}\r\n handleFieldChange={this.handleFieldChange}/> */}\r\n <MuiPickersUtilsProvider utils={MomentUtils}>\r\n <KeyboardDatePicker\r\n clearable\r\n variant=\"filled\"\r\n ampm={false}\r\n value={((NoticeDate === null) ? new Date() : NoticeDate) || null}\r\n disablePast={CanEditPastNoticeDate === \"Y\" ? false : true}\r\n disableFuture={CanEditFutureNoticeDate === \"Y\" ? false : true}\r\n onChange={this.handleNoticeDateChange}\r\n label={\"Notice Date\"}\r\n name={\"NoticeDate\"}\r\n format=\"MM/DD/YYYY\"\r\n InputLabelProps={{\r\n shrink: true,\r\n required: true\r\n }} disabled={DisableNoticeDate}\r\n error={noticeDateError ? true : false}\r\n helperText={noticeDateError}\r\n />\r\n </MuiPickersUtilsProvider>\r\n <CFormTextBox value={this.state.CertifiedMailNo} /*required={true}*/\r\n name=\"CertifiedMailNo\" label=\"Certified Mail Number\" xtype=\"number\"\r\n handleFieldChange={this.handleFieldChange} disabled={!caneditfields} helperText={certifiedMailError} error={certifiedMailError ? true : false} />\r\n\r\n <CFormTextBox value={this.state.NoticeDescription}\r\n name=\"NoticeDescription\" label=\"Notice Description\"\r\n handleFieldChange={this.handleFieldChange} multiline={true} disabled={!caneditfields} helperText={noticeDescriptionError} error={noticeDescriptionError ? true : false} />\r\n {/* <Cautocompletetagsnotification name=\"AttachmentsList\" value={this.state.AttachmentIDS} handleFieldChange={this.handleFieldChange} options={{ label: 'Select Attachment(s)' }} dropdownvalues={this.state.attachmentsdata} /> */}\r\n <CheckboxesTags name=\"AttachmentIDS\" value={this.state.AttachmentIDS ? this.state.AttachmentIDS.toString() : ''} ismulti={true} label='Select Attachment(s)' handleFieldValue={this.handleFieldChange}\r\n options={{ label: 'Select Attachment(s)' }} items={this.state.attachmentsdata} extraProps={{\r\n transformProps: {\r\n label: 'name',\r\n value: 'id',\r\n }\r\n }} />\r\n {/* {this.props.match.params.key != 'VIOLATIONS' && <div> <CFormCheckBox value={this.state.canAttachPermit === \"Y\" ? true : false} name=\"canAttachPermit\" label=\"Attach Permit\" handleFieldChange={this.handleFieldChange} transformProps={this.transformProps} />\r\n \r\n <CFormCheckBox value={this.state.canAttachApplication === \"Y\" ? true : false} name=\"canAttachApplication\" label=\"Attach Application\" handleFieldChange={this.handleFieldChange} transformProps={this.transformProps} /> </div>} */}\r\n </div>}\r\n </div>\r\n </div>\r\n <div className=\"col-4 mt-2\" dir=\"rtl\">\r\n </div>\r\n <div className=\"col-12 mt-2\">\r\n {canShowTemplate &&\r\n <Template ref={this.TemplateForm} fullheight={true} handleTemplateId={this.handleTemplateId}\r\n entryData={this.state.noticeEntryData}\r\n parentid={this.state.ParentId}\r\n isAdmin={false}\r\n templateId={this.state.TemplateId}\r\n isEnabled={(getEnvVariable('AccessPortal') === 'E') ? false : true}\r\n sideBarTables={sideBarTables}\r\n refId={this.state.NoticeTypeId}\r\n refType={'NT'}\r\n />}\r\n </div>\r\n {updateRecord && <div className=\"row pt-1\">\r\n <div className=\"col-sm-6\" style={{ color: '#6C757D', fontSize: '12px' }}><span style={{ color: '#6C757D' }}>Created By : </span> {results.CreatedByName}</div>\r\n <div className=\"col-sm-6\" style={{ color: '#6C757D', fontSize: '12px' }}><span style={{ color: '#6C757D' }}>Created On : </span> {moment(results.CreatedOn).format('MM/DD/YYYY hh:mm:ss A')}</div>\r\n {results.UpdatedBy === null ? ('') : (<div className=\"col-sm-6\" style={{ color: '#6C757D', fontSize: '12px' }}><span style={{ color: '#6C757D' }}>Updated By : </span> {results.UpdatedByName}</div>)}\r\n {results.UpdatedOn === null ? ('') : (<div className=\"col-sm-6\" style={{ color: '#6C757D', fontSize: '12px' }}><span style={{ color: '#6C757D' }}>Updated On : </span> {moment(results.UpdatedOn).format('MM/DD/YYYY hh:mm:ss A')}</div>)}\r\n </div>}\r\n\r\n\r\n </div>\r\n }\r\n render() {\r\n const { compmap, onFullScreen, onExitFullScreen, fullscreen, exitfullscreen, onNextItemClick, onPrevItemClick } = this.props;\r\n const { NoticeDate, updateRecord, edit, tabvalue, results, CanEditPastNoticeDate, CanEditCurrentNoticeDate, CanEditFutureNoticeDate, DisableNoticeDate, sideBarTables, PermitTempalteID } = this.state;\r\n const caneditfields = true;//!(this.state.results.TemplateId > 0) ;\r\n const label = { 'label': \"Notice Date\" }\r\n const noticeTypeError = this.state.errors && this.state.errors.NoticeTypeId && this.state.errors.NoticeTypeId.error ? this.state.errors.NoticeTypeId.errortext : null\r\n const certifiedMailError = this.state.errors && this.state.errors.CertifiedMailNo && this.state.errors.CertifiedMailNo.error ? this.state.errors.CertifiedMailNo.errortext : null\r\n const noticeDateError = this.state.errors && this.state.errors.NoticeDate && this.state.errors.NoticeDate.error ? this.state.errors.NoticeDate.errortext : null\r\n const noticeDescriptionError = this.state.errors && this.state.errors.NoticeDescription && this.state.errors.NoticeDescription.error ? this.state.errors.NoticeDescription.errortext : null\r\n const subjectError = this.state.errors && this.state.errors.Subject && this.state.errors.Subject.error ? this.state.errors.Subject.errortext : null\r\n const bodyError = this.state.errorForBody && this.state.errorForBody.Body && this.state.errorForBody.Body.error ? this.state.errorForBody.Body.errortext : null\r\n let approvedflag = this.props && this.props.match && this.props.match.params && this.props.initialloadextrainfo.results[\"APPROVED_FLAG\"] ? this.props.initialloadextrainfo.results[\"APPROVED_FLAG\"] : \"N\"\r\n let hidesavebutton = approvedflag === \"Y\" ? true : false;\r\n let roleaccess = this.props.accessPermissions && this.props.accessPermissions.moduleDistrictAccess && this.props.accessPermissions.moduleDistrictAccess ? Object.values(this.props.accessPermissions.moduleDistrictAccess).includes('Add') ? 'CanAdd' : Object.values(this.props.accessPermissions.moduleDistrictAccess).includes('Update') ? 'CanEdit' : Object.values(this.props.accessPermissions.moduleDistrictAccess).includes('Read') ? 'CanRead' : 'CanAdd' : 'CanAdd'\r\n let portal = this.props.accessPermissions ? this.props.accessPermissions.portal : null\r\n let canAdd = (!roleaccess || !portal) ? true : portal === \"I\" && roleaccess === \"CanAdd\" ? true : (portal === \"E\") ? true : false\r\n let canEdit = (!roleaccess || !portal) ? true : portal === \"I\" && roleaccess === \"CanEdit\" ? true : (portal === \"E\") ? true : false\r\n let canRead = (!roleaccess || !portal) ? true : portal === \"I\" && roleaccess === \"CanRead\" ? true : (portal === \"E\") ? true : false\r\n const canShowTemplate = (this.state.showTemplate && ((this.state.ParentId && this.state.ParentId > 0\r\n && Array.isArray(this.state.noticeEntryData) && this.state.noticeEntryData.length > 0)\r\n || (this.state.updateRecord)))\r\n return (\r\n <Fragment>\r\n <FormHeader title=\"Entrance Permit - Notices\" handleSave={this.handleSaveWithTemplate} savebutton={(updateRecord || this.state.noticeEntryData.length <= 0) ? false : (canAdd || canEdit) ? caneditfields : false} breadcrumbs={updateRecord ? editbreadcrumbs : addbreadcrumbs} accessLevelPermissions={this.props.accessLevelPermissions} onFullScreen={onFullScreen} onExitFullScreen={onExitFullScreen} fullscreen={fullscreen} exitfullscreen={exitfullscreen} backbutton={true} handleBack={this.handleBack} dataItem={this.props.dataItem} navigateup={updateRecord ? true : false} navigatedown={updateRecord ? true : false} onNextItemClick={onNextItemClick} onPrevItemClick={onPrevItemClick} />\r\n {updateRecord && <div>\r\n <Accordion expanded={this.state.expanded === 'panel1'} onChange={this.handleAccordionChange('panel1')}>\r\n <AccordionSummary\r\n expandIcon={<ExpandMoreIcon />}\r\n aria-controls=\"panel1bh-content\"\r\n id=\"panel1bh-header\"\r\n >\r\n <Typography>Notice Details</Typography>\r\n </AccordionSummary>\r\n <AccordionDetails>\r\n {this.vieweditnotice()}\r\n </AccordionDetails>\r\n </Accordion>\r\n {this.state.TemplateId && this.state.TemplateId > 0 && portal !== 'E' && <Accordion expanded={this.state.expanded === 'panel2'}\r\n onChange={this.handleAccordionChange('panel2')}>\r\n <AccordionSummary\r\n expandIcon={<ExpandMoreIcon />}\r\n aria-controls=\"panel2bh-content\"\r\n id=\"panel2bh-header\"\r\n >\r\n <Typography >Send to Applicant</Typography>\r\n </AccordionSummary>\r\n <AccordionDetails>\r\n <div>\r\n\r\n <div className=\"row mt-5 ml-2\">\r\n\r\n <div className=\"col-10\">\r\n <CFormTextBox value={this.state.EmailModel.Subject}\r\n name=\"Subject\" label=\"Subject\" required={true}\r\n handleFieldChange={this.handleEmailFieldChange}\r\n helperText={subjectError} error={subjectError ? true : false}\r\n />\r\n\r\n <CFormTextBox value={this.state.EmailModel.Body}\r\n name=\"Body\" label=\"Email Body\" required={true}\r\n handleFieldChange={this.handleEmailFieldChange}\r\n multiline={true}\r\n helperText={bodyError} error={bodyError ? true : false}\r\n rows=\"6\"\r\n />\r\n {/* {this.props.match.params.key != 'VIOLATIONS' && <div> <Typography variant=\"caption\" className=\"text-secondary\">\r\n Can Attach Permit\r\n </Typography>\r\n <Typography variant={'body2'} color={'textPrimary'} display=\"block\" className=\"fw-bold eps-content-wrap\">\r\n {this.state.canAttachPermit === 'Y' ? \"Yes\" : \"No\"}\r\n </Typography>\r\n <Typography variant=\"caption\" className=\"text-secondary\">\r\n Can Attach Application\r\n </Typography>\r\n <Typography variant={'body2'} color={'textPrimary'} display=\"block\" className=\"fw-bold eps-content-wrap\">\r\n {this.state.canAttachApplication === 'Y' ? \"Yes\" : \"No\"}\r\n </Typography></div>} */}\r\n {/* {this.props.match.params.key != 'VIOLATIONS' && <div> <CFormCheckBox value={this.state.canAttachPermit === \"Y\" ? true : false} name=\"canAttachPermit\" label=\"Attach Permit\" handleFieldChange={this.handleFieldChange} transformProps={this.transformProps} />\r\n \r\n <CFormCheckBox value={this.state.canAttachApplication === \"Y\" ? true : false} name=\"canAttachApplication\" label=\"Attach Application\" handleFieldChange={this.handleFieldChange} transformProps={this.transformProps} /> </div>} */}\r\n\r\n <Button className=\"my-2 \" variant=\"contained\" color=\"primary\" onClick={this.SendNoticeEmail}>\r\n Send Email\r\n </Button>\r\n </div>\r\n </div>\r\n </div>\r\n </AccordionDetails>\r\n </Accordion>}\r\n {this.state.TemplateId && this.state.TemplateId > 0 && portal != 'E' && <Accordion expanded={this.state.expanded === 'panel3'} onChange={this.handleAccordionChange('panel3')}>\r\n\r\n <AccordionSummary\r\n expandIcon={<ExpandMoreIcon />}\r\n aria-controls=\"panel3bh-content\"\r\n id=\"panel3bh-header\"\r\n >\r\n <Typography >Notice History</Typography>\r\n </AccordionSummary>\r\n <AccordionDetails>\r\n\r\n <Grid options={this.historygridjson} dataItem={this.props.dataItem} />\r\n </AccordionDetails>\r\n </Accordion>}\r\n </div>\r\n }\r\n {!updateRecord && this.vieweditnotice()}\r\n </Fragment>\r\n\r\n )\r\n }\r\n}\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage }, dispatch);\r\n}\r\n\r\nNoticeCommon = connect(null, mapActions)(NoticeCommon)\r\nexport default withRouter(NoticeCommon)","import AppBar from '@material-ui/core/AppBar';\r\nimport Box from '@material-ui/core/Box';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport Tabs from '@material-ui/core/Tabs';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport moment from 'moment';\r\nimport PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { bindActionCreators } from 'redux';\r\nimport { GetData, PostData, PutData } from '../../core/controls/helpers/requests';\r\nimport { createRequest, requestApi } from '../../core/controls/helpers/rest';\r\nimport { snackbarMessage } from '../../core/actions';\r\nimport MultipleDropdown from '../../core/controls/components/checkautocomplete';\r\nimport { getEnvVariable } from '../environmentalList';\r\nimport CFormCheckBox from '../../core/modules/form/cformcheckbox';\r\nimport CFormDropDown from '../../core/modules/form/cformdropdown';\r\nimport FormHeader from '../../core/modules/form/cformheader';\r\nimport CFormSwitch from '../../core/modules/form/cformswitch';\r\nimport CFormTextBox from '../../core/modules/form/cformtextbox';\r\nimport Confirmation from '../../core/modules/form/confirmationdialog';\r\nimport CText from '../../core/modules/form/ctext';\r\nimport { globalvalidate } from '../../core/modules/form/validations';\r\nimport Template from '../../core/modules/template/template';\r\nimport nsComponents from '../../json/notificationsettings/nsComponents';\r\nimport ConfirmationPopup from \"../../core/controls/components/confirmationPopup\";\r\nconst _ = require('lodash');\r\n\r\n\r\nconst transformProps = {\r\n \"value\": \"Id\",\r\n \"name\": \"Name\",\r\n \"key\": \"Id\"\r\n}\r\nconst submoduletransformProps = {\r\n \"value\": \"Key\",\r\n \"name\": \"DisplayName\",\r\n \"key\": \"Key\"\r\n}\r\nconst transformPropsWithKey = {\r\n \"value\": \"Key\",\r\n \"name\": \"Name\",\r\n \"key\": \"Key\"\r\n}\r\n\r\n//Updated By: vijaya. comments : Added Breadcrumbs.\r\nconst addbreadcrumbs = [\r\n { \"link\": \"Add Notice Type\", \"materialicon\": \"tab\", className: 'eps-breadcrumb-item ', class: 'text-light' }\r\n]\r\n\r\nconst editbreadcrumbs = [\r\n { \"link\": \"Notice Type\", appendval: 'Name', \"materialicon\": \"tab\", className: 'eps-breadcrumb-item ', class: 'text-light' }\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 <Typography\r\n component=\"div\"\r\n role=\"tabpanel\"\r\n hidden={value !== index}\r\n id={`scrollable-force-tabpanel-${index}`}\r\n aria-labelledby={`scrollable-force-tab-${index}`}\r\n {...other}\r\n >\r\n {value === index && <Box p={3}>{children}</Box>}\r\n </Typography>\r\n );\r\n}\r\n\r\nTabPanel.propTypes = {\r\n children: PropTypes.node,\r\n index: PropTypes.any.isRequired,\r\n value: PropTypes.any.isRequired,\r\n};\r\n\r\nfunction a11yProps(index) {\r\n return {\r\n id: `scrollable-force-tab-${index}`,\r\n 'aria-controls': `scrollable-force-tabpanel-${index}`,\r\n };\r\n}\r\n\r\nclass Notices extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n sitesJson: [],\r\n regionsJson: [],\r\n submoduleJson: [],\r\n sitePermitTypeJson: [],\r\n SubModuleKey: null,\r\n SiteID: null,\r\n RegionId: null,\r\n SitePermitType: 0,\r\n results: { Status: 'I', TemplateId: 0 },\r\n Name: '',\r\n Description: '',\r\n Status: 'I',\r\n showSitePermitType: this.props.dataItem ? (!this.props.dataItem.Id ? false : true) : false,\r\n showTemplate: false,\r\n TemplateId: 0,\r\n edit: false,\r\n editbutton: true,\r\n duplicatebutton: true,\r\n updateRecord: this.props.dataItem ? (!this.props.dataItem.Id ? false : true) : false,\r\n error_NAME: '',\r\n error_DESCRIPTION: '',\r\n error_SUBMODULEKEY: '',\r\n error_SITEPERMITTYPE: '',\r\n error_SITEID: '',\r\n error_REGIONID: '',\r\n error_NAME_helpertext: '',\r\n error_DESCRIPTION_helpertext: '',\r\n error_SUBMODULEKEY_helpertext: '',\r\n error_SITEPERMITTYPE_helpertext: '',\r\n error_SITEID_helpertext: '',\r\n error_REGIONID_helpertext: '',\r\n CanEditNoticeDate: \"N\",\r\n CanEditPastNoticeDate: \"N\",\r\n CanEditFutureNoticeDate: \"N\",\r\n CanEditPastNoticeDate: \"N\",\r\n disabled: true,\r\n submoduleselectedtables: '',\r\n submoduleselectedtablesresults: [],\r\n sideBarTablesRecords: [],\r\n SideBarTables: \"\",\r\n isduplicate: false,\r\n value: 0,\r\n checkresults: { Status: 'I', TemplateId: 0 },\r\n openconfirmation: false,\r\n compvalidation: null,\r\n openconfirmationpopup:false,\r\n temp:\"\",\r\n tempname:\"\"\r\n }//demo\r\n this.nsComponentsArray = { ...nsComponents };\r\n this.sitesPopup = this.nsComponentsArray.components.find(x => x.key == \"nssites\");\r\n this.statusJson = this.nsComponentsArray.components.find(x => x.key == \"nsstatus\").options;\r\n this.url2 = getEnvVariable('MasterAdmin')+`/api/module/`+getEnvVariable('ModuleKey')+`/submodule/All/Active/IsConfigurable`\r\n this.url3 = getEnvVariable('Admin') + `/api/Sites/` + getEnvVariable('ModuleKey') + `/All/Active`\r\n this.url4 = getEnvVariable('AdminConfig') + `/api/sitepermittypes/Sites/Active`\r\n this.url6 = this.props.dataItem ? getEnvVariable('Admin') + `/api/NoticeTypes/${this.props.dataItem.Id}` : getEnvVariable('Admin') + `/api/NoticeTypes/${this.props.match.params.routeid}`\r\n this.url7 = getEnvVariable('Admin') + `/api/NoticeTypes/Update`\r\n this.url8 = getEnvVariable('Admin') + `/api/NoticeTypes/Add`\r\n this.TemplateForm = React.createRef()\r\n this.transformProps = {\r\n \"Y\": true,\r\n \"N\": false,\r\n true: \"Y\",\r\n false: \"N\"\r\n }\r\n this.url9 = getEnvVariable('AdminConfig') + `/api/SitePermitTypes/Regions/Active`\r\n\r\n this.url10 = getEnvVariable('Admin') + `/api/Regions/` + getEnvVariable('ModuleKey') + `/All/Active`\r\n this.url11 = getEnvVariable('AdminConfig') + `/api/SitePermitTypes/SubModuleKey/Active`\r\n this.sidebartablesurl = getEnvVariable('Application') + `/api/SubModuleSideBar/All`\r\n }\r\n\r\n handleFieldChange = (event) => {\r\n if(event.target.name == \"SubModuleKey\"){\r\n this.setState({temp : event.target.value, tempname:event.target.name, openconfirmationpopup : true} )\r\n }\r\n else{\r\n let error, helperText\r\n let targetname = event.target.name;\r\n let nameinuppercase = targetname.toUpperCase()\r\n if (this.state.compvalidation && this.state.compvalidation[nameinuppercase]) {\r\n const err = globalvalidate({ [targetname]: this.state.compvalidation[nameinuppercase] }, { [targetname]: event.target.value })\r\n\r\n if (err && err[targetname]) {\r\n error = err[targetname].error\r\n helperText = err[targetname].errortext\r\n let errorname = \"error_\" + nameinuppercase\r\n let errorhelpertext = \"error_\" + nameinuppercase + \"_helpertext\"\r\n this.setState({ [errorname]: error, [errorhelpertext]: helperText });\r\n\r\n }\r\n }\r\n let resetSitepermittype = targetname == 'SubModuleKey' && targetname != 'SitePermitType' && this.state.SubModuleKey != event.target.value ? true : false\r\n this.setState({\r\n SitePermitType: !resetSitepermittype ? this.state.SitePermitType : null,\r\n [event.target.name]: event.target.value,\r\n results: {\r\n ...this.state.results,\r\n SitePermitType: !resetSitepermittype ? this.state.SitePermitType : null,\r\n [event.target.name]: event.target.value\r\n }\r\n }, () => {\r\n if (targetname == 'SiteID')\r\n this.loadSitePermitType(this.state.SiteID, 0);\r\n if (targetname == 'SubModuleKey') {\r\n this.loadSubModulePermitType(this.state.SubModuleKey, 0);\r\n this.loadSideBarTables(this.state.SubModuleKey);\r\n }\r\n if (targetname == 'SitePermitType')\r\n this.getBusinessRules(event.target.value)\r\n })\r\n }\r\n }\r\n\r\n getBusinessRules = (value, sidebarItems) => {\r\n let sideUrl = '';\r\n sidebarItems && (sidebarItems !== '') && sidebarItems.split(',') && sidebarItems.split(',').length > 0 && sidebarItems.split(',').map(each => {\r\n sideUrl = sideUrl + '&SideBarItems=' + (this.state.sideBarTablesRecords.find(item => (item.value).toString() === each)).name\r\n })\r\n const read = [\r\n {\r\n url: getEnvVariable('Sidebar') + `/api/BusinessRules/Builder/Template?SitePermitTypeId=${value}${sideUrl}`,\r\n type: 'get'\r\n },\r\n ]\r\n Promise.all(read.map(each => requestApi(createRequest(each, {})))).then(response => {\r\n let [fields] = response\r\n this.setState({\r\n showTemplate: true,\r\n fields: fields.map(res => { res.name = res.name.replace(/\\s/g,''); res.label = res.label.replace(/\\s/g,''); return res })\r\n })\r\n })\r\n }\r\n\r\n getValidations = () => {\r\n const read = [\r\n {\r\n \"url\": getEnvVariable('Admin') + `/api/ProjectMessages/RulesByName?name=admin.noticetypes`,\r\n type: 'get',\r\n transformProps: {\r\n name: 'Key',\r\n subfieldname: `${getEnvVariable('ModuleKey')}ADMIN.NOTICETYPES_`\r\n }\r\n\r\n },\r\n ]\r\n Promise.all(read.map(each => requestApi(createRequest(each, {})))).then(response => {\r\n let values = response\r\n let xvalidations = {}\r\n values && values.length > 0 && values.forEach((each, index) => {\r\n const transformProps = {\r\n name: 'Key',\r\n subfieldname: `${getEnvVariable('ModuleKey')}ADMIN.NOTICETYPES_`\r\n }\r\n const { subfieldname, addsubfieldname } = transformProps ? transformProps : {}\r\n const subfieldnamelength = subfieldname ? subfieldname.length : 0\r\n each && each.forEach(each => {\r\n let validationname = each[transformProps.name].slice(subfieldnamelength)\r\n if (addsubfieldname) validationname = addsubfieldname + validationname\r\n if (Array.isArray(xvalidations[validationname])) {\r\n const len = xvalidations[validationname].length\r\n const lastvalidation = xvalidations[validationname][len - 1]\r\n if (each.Order > lastvalidation.Order) xvalidations[validationname].push(each)\r\n else xvalidations[validationname].unshift(each)\r\n }\r\n else {\r\n xvalidations[validationname] = [each]\r\n }\r\n })\r\n this.setState({\r\n compvalidation: xvalidations\r\n })\r\n console.log(xvalidations);\r\n })\r\n })\r\n }\r\n componentDidMount() {\r\n this.getValidations();\r\n this.didmountinitialload();\r\n }\r\n\r\n\r\n didmountinitialload() {\r\n const { updateRecord } = this.state;\r\n let read = [\r\n {\r\n url: this.url2,\r\n type: 'get'\r\n },\r\n {\r\n url: this.url3,\r\n type: 'get',\r\n },\r\n {\r\n url: this.url10,\r\n type: 'get'\r\n },\r\n ];\r\n if (this.state.updateRecord) {\r\n read.push({\r\n url: this.url6,\r\n type: 'get'\r\n })\r\n }\r\n Promise.all(read.map(each => requestApi(createRequest(each, {})))).then(res => {\r\n const [submoduleJson, sitesJson, regionsJson, data] = res;\r\n if (data) {\r\n this.setState({\r\n submoduleJson: submoduleJson,\r\n sitesJson: sitesJson,\r\n regionsJson: regionsJson,\r\n Name: data.Name,\r\n Description: data.Description,\r\n SubModuleKey: data.SubModuleKey,\r\n SiteID: data.SiteId,\r\n RegionId: data.RegionId,\r\n SitePermitType: data.SitePermitType,\r\n Status: data.Status,\r\n TemplateId: data.TemplateId,\r\n CanEditNoticeDate: data.CanEditNoticeDate,\r\n CanEditPastNoticeDate: data.CanEditPastNoticeDate,\r\n CanEditCurrentNoticeDate: data.CanEditCurrentNoticeDate,\r\n CanEditFutureNoticeDate: data.CanEditFutureNoticeDate,\r\n results: data,\r\n checkresults: data,\r\n disabled: data.CanEditNoticeDate == \"Y\" ? false : true,\r\n showTemplate: data.SitePermitType ? true : false,\r\n SideBarTables: data.SideBarTables ? data.SideBarTables : ''\r\n }, () => {\r\n if (data.SubModuleKey != \"\") {\r\n this.loadSubModulePermitType(data.SubModuleKey, data.SitePermitType);\r\n this.loadSideBarTables(data.SubModuleKey);\r\n }\r\n })\r\n }\r\n else this.setState({\r\n submoduleJson: submoduleJson,\r\n sitesJson: sitesJson,\r\n regionsJson: regionsJson,\r\n })\r\n })\r\n }\r\n\r\n loadSitePermitType = (siteId, selectedId) => {\r\n this.fetchData('GET', `${this.url4}/${siteId}`, null, null)\r\n .then(data => {\r\n this.setState({\r\n sitePermitTypeJson: data,\r\n SitePermitType: selectedId,\r\n showSitePermitType: true,\r\n })\r\n })\r\n }\r\n\r\n loadRegionPermitType = (regionId, selectedId) => {\r\n this.fetchData('GET', `${this.url9}/${regionId}`, null, null)\r\n .then(data => {\r\n this.setState({\r\n sitePermitTypeJson: data,\r\n SitePermitType: selectedId,\r\n showSitePermitType: true,\r\n })\r\n\r\n })\r\n }\r\n\r\n loadSubModulePermitType = (SubModuleKey, selectedId) => {\r\n this.fetchData('GET', `${this.url11}/${SubModuleKey}`, null, null)\r\n .then(data => {\r\n this.setState({\r\n sitePermitTypeJson: data,\r\n SitePermitType: selectedId,\r\n showSitePermitType: true,\r\n })\r\n\r\n })\r\n }\r\n\r\n loadSideBarTables(submodulekey) {\r\n if (submodulekey) {\r\n this.fetchData('GET', `${this.sidebartablesurl}/${submodulekey}`, null, null)\r\n .then(data => {\r\n if (data && Array.isArray(data)) {\r\n let tabls = data.map(a => ({ id: a.Id, name: a.TableName, value: a.Id }))\r\n this.setState({\r\n sideBarTablesRecords: tabls\r\n }, () => {\r\n if (this.state.SitePermitType) {\r\n this.getBusinessRules(this.state.SitePermitType, this.state.SideBarTables);\r\n this.setSideBarTablesData(this.state.SideBarTables)\r\n }\r\n })\r\n }\r\n })\r\n }\r\n }\r\n setSideBarTablesData(sidebarItems) {\r\n if (sidebarItems && (sidebarItems !== '') && sidebarItems.split(',') && sidebarItems.split(',').length > 0) {\r\n let resultdatasplit = sidebarItems.split(\",\")\r\n let selectedRecords = this.state.sideBarTablesRecords.filter(a => resultdatasplit.includes(a.id.toString()))\r\n this.setState({ submoduleselectedtablesresults: selectedRecords})\r\n }\r\n }\r\n\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevProps.dataItem != this.props.dataItem) {\r\n this.url6 = this.props.dataItem ? getEnvVariable('Admin') + `/api/NoticeTypes/${this.props.dataItem.Id}` : getEnvVariable('Admin') + `/api/NoticeTypes/${this.props.match.params.routeid}`\r\n this.didmountinitialload();\r\n }\r\n }\r\n handleEditNoticeDate = (event) => {\r\n const results = this.state.results\r\n const value = this.transformProps ? this.transformProps[event.target.checked] : event.target.value;\r\n let name = event.target.name;\r\n results[name] = value\r\n if (this.state.results.CanEditNoticeDate == 'N') {\r\n results['CanEditPastNoticeDate'] = 'N'\r\n results['CanEditCurrentNoticeDate'] = 'N'\r\n results['CanEditFutureNoticeDate'] = 'N'\r\n }\r\n this.setState({\r\n [event.target.name]: value,\r\n results: results,\r\n disabled: this.state.results.CanEditNoticeDate == 'Y' ? false : true,\r\n CanEditPastNoticeDate: this.state.results.CanEditNoticeDate == 'N' ? 'N' : results.CanEditPastNoticeDate,\r\n CanEditCurrentNoticeDate: this.state.results.CanEditNoticeDate == 'N' ? 'N' : results.CanEditCurrentNoticeDate,\r\n CanEditFutureNoticeDate: this.state.results.CanEditNoticeDate == 'N' ? 'N' : results.CanEditFutureNoticeDate\r\n }, () => {\r\n //this.results.CanEditNoticeDate = value\r\n })\r\n }\r\n\r\n validate = () => {\r\n const { results } = this.state\r\n let error_NAME = true;\r\n //let error_DESCRIPTION = true;\r\n let error_SUBMODULEKEY = true;\r\n let error_SITEID = false;\r\n //let error_REGIONID = true;\r\n let error_SITEPERMITTYPE = true;\r\n\r\n if (results && results.Name) {\r\n error_NAME = false\r\n }\r\n // if (results && results.Description) {\r\n // error_DESCRIPTION = false\r\n // }\r\n if (results && results.SubModuleKey) {\r\n error_SUBMODULEKEY = false\r\n }\r\n if (results && (results.SiteId || results.SiteID)) {\r\n error_SITEID = false\r\n }\r\n // if (results && (results.RegionId || results.RegionID)) {\r\n // error_REGIONID = false\r\n // }\r\n //if (results && (results.RegionId || results.RegionID)) {\r\n if (results && results.SitePermitType) {\r\n error_SITEPERMITTYPE = false\r\n }\r\n // }\r\n\r\n if (error_NAME) {//|| error_REGIONID\r\n this.setState({ error_NAME: error_NAME, error_NAME_helpertext: \"Field is required\" }) //error_REGIONID: error_REGIONID,\r\n }\r\n if (error_SUBMODULEKEY) {//|| error_REGIONID\r\n this.setState({ error_SUBMODULEKEY: error_SUBMODULEKEY, error_SUBMODULEKEY_helpertext: \"Field is required\" }) //error_REGIONID: error_REGIONID,\r\n }\r\n if (error_SITEPERMITTYPE) {//|| error_REGIONID\r\n this.setState({ error_SITEPERMITTYPE: error_SITEPERMITTYPE, error_SITEPERMITTYPE_helpertext: \"Field is required\" }) //error_REGIONID: error_REGIONID,\r\n }\r\n else {\r\n this.setState({ error_NAME: error_NAME, error_SUBMODULEKEY: error_SUBMODULEKEY, error_SITEPERMITTYPE: error_SITEPERMITTYPE }) //error_REGIONID: error_REGIONID,\r\n return true\r\n }\r\n }\r\n\r\n\r\n //Updated by vijaya: Added snack bar to display the messages.\r\n handleSaveWithTemplate = (event) => {\r\n var resultsData = this.state.results;\r\n if (this.state.isduplicate) {\r\n this.setState({\r\n results: { ...this.state.results, IsDuplicate: \"Y\" },\r\n checkresults: { ...this.state.results, IsDuplicate: \"Y\" },\r\n })\r\n }\r\n let validatestatus = this.validate();\r\n if (validatestatus) {\r\n if (this.state.value == 0) {\r\n this.handleSave();\r\n } else {\r\n if (this.TemplateForm.current) {\r\n this.TemplateForm.current.saveTemplate();\r\n }\r\n }\r\n } else {\r\n this.props.snackbarMessage('Invalid Data, Cannot be saved', 'error')\r\n }\r\n }\r\n\r\n handleFormSave = (event) => {\r\n if (this.state.isduplicate) {\r\n this.setState({\r\n results: { ...this.state.results, IsDuplicate: \"Y\" }\r\n }, () => this.handleSave())\r\n }\r\n else {\r\n this.handleSave()\r\n }\r\n }\r\n\r\n //Updated by vijaya: Added snack bar to display the messages.\r\n handleSave = (event) => {\r\n var resultsData = this.state.results;\r\n\r\n resultsData.canEditNoticeDate = this.state.canEditNoticeDate\r\n let validatestatus = this.validate();\r\n if (validatestatus) {\r\n\r\n if (this.state.updateRecord && !this.state.isduplicate) {\r\n this.fetchData('PUT', this.url7, null, this.state.results)\r\n .then(data => {\r\n // this.props.onClose();\r\n\r\n this.setState({\r\n checkresults: data,\r\n results: data,\r\n edit: false,\r\n editbutton: true,\r\n duplicatebutton: true\r\n })\r\n }).catch(errors => {\r\n errors.then(err => {\r\n errors.then(err => {\r\n if (err['Name']) {\r\n this.setState({ error_NAME: err['Name'][0], error_NAME_helpertext: err['Name'][0] });\r\n }\r\n if (err['NoticeName']) {\r\n this.setState({ error_NAME: err['NoticeName'][0], error_NAME_helpertext: err['NoticeName'][0] });\r\n }\r\n if (err['Description']) {\r\n this.setState({ error_DESCRIPTION: err['Description'][0], error_DESCRIPTION_helpertext: err['Description'][0] });\r\n }\r\n })\r\n })\r\n })\r\n }\r\n else {\r\n this.fetchData('POST', this.url8, null, this.state.results)\r\n .then(data => {\r\n\r\n // this.props.onClose();\r\n let pathname = this.props.location.pathname\r\n if (this.state.results && this.state.results.IsDuplicate == 'Y' && data && this.props && this.props.match && this.props.match.params && data.Id) {\r\n this.props.match.params.Id = data.Id\r\n let final = pathname.substring(0, pathname.lastIndexOf(\"/\"))\r\n pathname = final + '/' + this.props.match.params.Id\r\n }\r\n else if (data && this.props && this.props.match && this.props.match.params && data.Id) {\r\n this.props.match.params.Id = data.Id\r\n pathname = pathname + '/' + this.props.match.params.Id\r\n }\r\n this.props.onClose();\r\n this.props.history.push(pathname);\r\n this.setState({\r\n checkresults: data,\r\n results: data,\r\n edit: false,\r\n editbutton: true,\r\n updateRecord: true,\r\n duplicatebutton: true\r\n }, () => {\r\n this.props.onClose();\r\n })\r\n }).catch(errors => {\r\n errors.then(err => {\r\n if (err['Name']) {\r\n this.setState({ error_NAME: err['Name'][0], error_NAME_helpertext: err['Name'][0] });\r\n }\r\n if (err['NoticeName']) {\r\n this.setState({ error_NAME: err['NoticeName'][0], error_NAME_helpertext: err['NoticeName'][0] });\r\n }\r\n if (err['Description']) {\r\n this.setState({ error_DESCRIPTION: err['Description'][0], error_DESCRIPTION_helpertext: err['Description'][0] });\r\n }\r\n })\r\n })\r\n }\r\n }\r\n }\r\n\r\n handleStatusChange = (event) => {\r\n const status = this.statusJson.transformProps ? this.statusJson.transformProps[event.target.checked] : event.target.checked;\r\n this.setState({\r\n Status: status,\r\n results: {\r\n ...this.state.results,\r\n \"Status\": status\r\n }\r\n })\r\n }\r\n\r\n handleTemplateId = (data) => {\r\n this.setState({\r\n TemplateId: data.id,\r\n results: {\r\n ...this.state.results,\r\n \"TemplateId\": data.id\r\n }\r\n }, () => { this.handleSave(); })\r\n }\r\n\r\n fetchData(requestType, url, queryParam, body) {\r\n const queryStr = queryParam != null ? `${url}?${queryParam}` : `${url}`\r\n\r\n if (requestType == \"GET\") {\r\n return GetData(queryStr);\r\n }\r\n else if (requestType == \"POST\") {\r\n return PostData(queryStr, body);\r\n }\r\n else if (requestType == \"PUT\")\r\n return PutData(queryStr, body);\r\n }\r\n\r\n handleSnackBarClose = (event, reason) => {\r\n if (reason === 'clickaway') {\r\n return;\r\n }\r\n this.setState({ opensnackbar: false });\r\n };\r\n handleBack = (e, closeconfirmation, stayInSamePage) => {\r\n let unsavedchanges = !(_.isEqual(this.state.results, this.state.checkresults))\r\n if (!closeconfirmation && !stayInSamePage && !this.state.duplicatebutton && this.state.isduplicate) {\r\n this.setState({ openconfirmation: true })\r\n }\r\n else if (stayInSamePage && !this.state.duplicatebutton && this.state.isduplicate) {\r\n this.setState({ openconfirmation: false })\r\n }\r\n else if (unsavedchanges && !closeconfirmation && !stayInSamePage) {\r\n this.setState({ openconfirmation: true })\r\n }\r\n else if (unsavedchanges && stayInSamePage) {\r\n this.setState({ openconfirmation: false })\r\n }\r\n else {\r\n this.props.onClose()\r\n let pathname = this.props.location.pathname\r\n if (this.props && this.props.match && this.props.match.params && this.props.match.params.Id) {\r\n this.props.match.params.Id = undefined\r\n pathname = pathname.substring(0, pathname.lastIndexOf(\"/\"))\r\n }\r\n this.props.onClose()\r\n this.props.history.push(pathname)\r\n }\r\n }\r\n handleEdit = (e, duplicate) => {\r\n this.setState({ edit: true, editbutton: false, duplicatebutton: false, duplicatebutton: false, isduplicate: duplicate ? true : false })\r\n }\r\n\r\n handlemultidropdown = (tags) => {\r\n let resultdata = tags.target.value\r\n let resultdatasplit = resultdata.split(\",\")\r\n let selectedRecords = this.state.sideBarTablesRecords.filter(a => resultdatasplit.includes(a.id.toString()))\r\n this.setState({\r\n SideBarTables: resultdata,\r\n submoduleselectedtables: resultdata,\r\n submoduleselectedtablesresults: selectedRecords,\r\n results: {\r\n ...this.state.results,\r\n [tags.target.name]: tags.target.value\r\n }\r\n }, () => {\r\n this.getBusinessRules(this.state.SitePermitType, resultdata)\r\n })\r\n }\r\n\r\n handleconfirmation = () => {\r\n let error, helperText\r\n let targetname = this.state.tempname;\r\n let nameinuppercase = targetname.toUpperCase()\r\n if (this.state.compvalidation && this.state.compvalidation[nameinuppercase]) {\r\n const err = globalvalidate({ [targetname]: this.state.compvalidation[nameinuppercase] }, { [targetname]: this.state.temp })\r\n\r\n if (err && err[targetname]) {\r\n error = err[targetname].error\r\n helperText = err[targetname].errortext\r\n let errorname = \"error_\" + nameinuppercase\r\n let errorhelpertext = \"error_\" + nameinuppercase + \"_helpertext\"\r\n this.setState({ [errorname]: error, [errorhelpertext]: helperText });\r\n\r\n }\r\n }\r\n let resetSitepermittype = targetname == 'SubModuleKey' && targetname != 'SitePermitType' && this.state.SubModuleKey != this.state.temp ? true : false\r\n this.setState({\r\n SitePermitType: !resetSitepermittype ? this.state.SitePermitType : null,\r\n [this.state.tempname]: this.state.temp,openconfirmationpopup : false,\r\n results: {\r\n ...this.state.results,\r\n SitePermitType: !resetSitepermittype ? this.state.SitePermitType : null,\r\n [this.state.tempname]: this.state.temp\r\n }\r\n }, () => {\r\n if (targetname == 'SiteID')\r\n this.loadSitePermitType(this.state.SiteID, 0);\r\n if (targetname == 'SubModuleKey') {\r\n this.loadSubModulePermitType(this.state.SubModuleKey, 0);\r\n this.loadSideBarTables(this.state.SubModuleKey);\r\n }\r\n })\r\n }\r\n\r\n handleclose = () => {\r\n this.setState({openconfirmationpopup : false, temp : null})\r\n }\r\n\r\n handleChange = (event, newValue) => {\r\n this.setState({ value: newValue })\r\n };\r\n\r\n render() {\r\n const { compmap, onFullScreen, onExitFullScreen, fullscreen, exitfullscreen, onNextItemClick, onPrevItemClick } = this.props;\r\n const { errors, opensnackbar, updateRecord, snackbarmessage, snackbarmessageType, editbutton, duplicatebutton, results, error_NAME, error_DESCRIPTION, error_SUBMODULEKEY, error_SITEPERMITTYPE, error_REGIONID, canEditNoticeDate, fields, submoduleselectedtables, submoduleselectedtablesresults, SideBarTables, sideBarTablesRecords, value, error_NAME_helpertext, error_DESCRIPTION_helpertext, error_SUBMODULEKEY_helpertext, error_SITEPERMITTYPE_helpertext, error_SITEID_helpertext, error_REGIONID_helpertext, } = this.state\r\n let edit = updateRecord ? this.state.edit : true;\r\n let multitransformProps = {\r\n transformProps: {\r\n label: \"name\",\r\n value: \"id\"\r\n }\r\n }\r\n return (\r\n <div>\r\n {!updateRecord && <FormHeader title=\"Entrance Permit - Notices\" handleSave={this.handleSave} handleEdit={this.handleEdit} editbutton={updateRecord ? editbutton : false} savebutton={updateRecord && editbutton === true ? false : true} breadcrumbs={addbreadcrumbs} backbutton={true} handleBack={this.handleBack} onFullScreen={onFullScreen} onExitFullScreen={onExitFullScreen} fullscreen={fullscreen} exitfullscreen={exitfullscreen} />}\r\n {updateRecord && <FormHeader title=\"Entrance Permit - Notices\" breadcrumbs={editbreadcrumbs} backbutton={true} handleBack={this.handleBack} dataItem={this.props.dataItem} onFullScreen={onFullScreen} onExitFullScreen={onExitFullScreen} fullscreen={fullscreen} exitfullscreen={exitfullscreen} navigateup={true} navigatedown={true} onNextItemClick={onNextItemClick} onPrevItemClick={onPrevItemClick} rowrenderedslide={this.props.rowrenderedslide} />}\r\n {updateRecord && <AppBar position=\"static\" color=\"white\">\r\n <Tabs\r\n value={value}\r\n onChange={this.handleChange}\r\n indicatorColor=\"primary\"\r\n textColor=\"primary\"\r\n variant=\"scrollable\"\r\n scrollButtons=\"on\"\r\n aria-label=\"scrollable auto tabs example\"\r\n >\r\n <Tab label=\"Notice Details\" {...a11yProps(0)} />\r\n <Tab label=\"Notice Template\" {...a11yProps(1)} />\r\n\r\n </Tabs>\r\n </AppBar>}\r\n {/* {openconfirmation && <Confirmation open={this.state.openconfirmation} handleBack={this.handleBack} navigatingnext={this.state.navigatingnext} navigatingprev={this.state.navigatingprev} nextItem={this.nextItem} prevItem={this.prevItem} />} */}\r\n {this.state.openconfirmation && <Confirmation open={this.state.openconfirmation} handleBack={this.handleBack} />}\r\n <TabPanel value={value} index={0}>\r\n {updateRecord && <FormHeader title=\"Entrance Permit - Notices\" designprops={true} handleSave={this.handleFormSave} handleEdit={this.handleEdit} editbutton={updateRecord ? editbutton : false} duplicatebutton={updateRecord ? duplicatebutton : false} savebutton={updateRecord && editbutton === true ? false : true} hasclearfix={true} />}\r\n <div className=\"clearfix\" />\r\n <div className=\"col-12\">\r\n <div className=\"row col pt-1\">\r\n <div className=\"col-md-12 pb-2\">\r\n <CFormTextBox value={this.state.Name} name=\"Name\" label=\"Notice Name\"\r\n handleFieldChange={this.handleFieldChange} edit={edit} required={true} error={error_NAME} helperText={error_NAME && (error_NAME_helpertext ? error_NAME_helpertext : error_NAME_helpertext)} maxLength={100} />\r\n </div>\r\n <div className=\"col-md-12 pb-2\">\r\n <CFormTextBox value={this.state.Description} name=\"Description\" label=\"Description\" multiline={true} error={error_DESCRIPTION} rows=\"4\" helperText={error_DESCRIPTION && error_DESCRIPTION_helpertext}\r\n handleFieldChange={this.handleFieldChange} edit={edit} />\r\n </div>\r\n </div>\r\n <div className=\"row col\">\r\n <div className=\"col-md-6 pb-2\">\r\n {this.state.openconfirmationpopup && <ConfirmationPopup value={this.state.openconfirmationpopup} title={\"On changing the Sub Module notice template parameters should be updated\"} /*description={\"submodule\"}*/ onSubmit={() => this.handleconfirmation()} onClose={() => this.handleclose()} />}\r\n <CFormDropDown value={this.state.SubModuleKey} dropdownvalues={this.state.submoduleJson}\r\n name=\"SubModuleKey\" label=\"Sub Module\" transformProps={submoduletransformProps} handleFieldChange={this.handleFieldChange} edit={edit} required={true} error={error_SUBMODULEKEY} helperText={error_SUBMODULEKEY && error_SUBMODULEKEY_helpertext} />\r\n {/* <CFormDropDown value={this.state.SiteID} dropdownvalues={this.state.sitesJson}\r\n name=\"SiteID\" label=\"County\" transformProps={transformProps} handleFieldChange={this.handleFieldChange} edit={edit} required={true} error={error_SITEID} helperText={error_SITEID && helperText} /> */}\r\n </div>\r\n {/* <div className=\"col-md-12 pb-2\">\r\n <CFormDropDown value={this.state.RegionId} dropdownvalues={this.state.regionsJson}\r\n name=\"RegionId\" label=\"Region\" transformProps={transformProps} handleFieldChange={this.handleFieldChange} edit={edit} required={true} error={error_REGIONID} helperText={error_REGIONID && helperText} />\r\n </div> */}\r\n <div className=\"col-md-6 pb-2 \">\r\n {this.state.showSitePermitType && <CFormDropDown value={this.state.SitePermitType} dropdownvalues={this.state.sitePermitTypeJson}\r\n name=\"SitePermitType\" label=\"Application Type\" transformProps={transformProps} handleFieldChange={this.handleFieldChange} edit={edit} required={true} error={error_SITEPERMITTYPE} helperText={error_SITEPERMITTYPE && error_SITEPERMITTYPE_helpertext} />}\r\n </div>\r\n </div>\r\n <div className=\"col\">\r\n <CFormCheckBox value={this.state.CanEditNoticeDate} checked={this.state.CanEditNoticeDate} name=\"CanEditNoticeDate\" label=\"Edit notice date\" handleFieldChange={this.handleEditNoticeDate} transformProps={this.transformProps} edit={edit} />\r\n <CText type=\"dtext\" value=\"(If date modification is not allowed, notices get generated with current date)\" />\r\n </div>\r\n <div className=\"col pl-5\">\r\n <CFormCheckBox value={this.state.CanEditPastNoticeDate} checked={this.state.CanEditPastNoticeDate} name=\"CanEditPastNoticeDate\" label=\"Past dates\" handleFieldChange={this.handleEditNoticeDate} transformProps={this.transformProps} edit={edit} disablecheckbox={this.state.disabled} />\r\n \r\n <CFormCheckBox value={this.state.CanEditCurrentNoticeDate} checked={this.state.CanEditCurrentNoticeDate} name=\"CanEditCurrentNoticeDate\" label=\"Current date\" handleFieldChange={this.handleEditNoticeDate} transformProps={this.transformProps} edit={edit} disablecheckbox={this.state.disabled} />\r\n \r\n <CFormCheckBox value={this.state.CanEditFutureNoticeDate} checked={this.state.CanEditFutureNoticeDate} name=\"CanEditFutureNoticeDate\" label=\"Future dates\" handleFieldChange={this.handleEditNoticeDate} transformProps={this.transformProps} edit={edit} disablecheckbox={this.state.disabled} />\r\n </div>\r\n\r\n <div className=\"col pl-3\">\r\n {!this.state.updateRecord && <CFormSwitch {...this.statusJson} handleFieldChange={this.handleStatusChange} value={this.state.Status} edit={edit} disabled={true} />}\r\n {this.state.updateRecord && <CFormSwitch {...this.statusJson} handleFieldChange={this.handleStatusChange} value={this.state.Status} edit={edit} />}\r\n </div>\r\n {updateRecord && <div className=\"row col\">\r\n <div className=\"col-sm-6 pt-2\" style={{ color: '#6C757D', fontSize: '12px' }}><span style={{ color: '#6C757D' }}>Created By : </span> {this.state.results.CreatedByName}</div>\r\n <div className=\"col-sm-6 pt-2\" style={{ color: '#6C757D', fontSize: '12px' }}><span style={{ color: '#6C757D' }}>Created On : </span> {moment(this.state.results.CreatedOn).format('MM/DD/YYYY')}</div>\r\n {this.state.results.UpdatedBy === null ? ('') : (<div className=\"col-sm-6 pt-2\" style={{ color: '#6C757D', fontSize: '12px' }}><span style={{ color: '#6C757D' }}>Updated By : </span> {this.state.results.UpdatedByName}</div>)}\r\n {this.state.results.UpdatedOn === null ? ('') : (<div className=\"col-sm-6 pt-2\" style={{ color: '#6C757D', fontSize: '12px' }}><span style={{ color: '#6C757D' }}>Updated On : </span> {moment(this.state.results.UpdatedOn).format('MM/DD/YYYY')}</div>)}\r\n </div>}\r\n </div>\r\n </TabPanel>\r\n <TabPanel value={value} index={1}>\r\n <div className=\"row\">\r\n <MultipleDropdown\r\n label=\"Select table(s)\"\r\n name=\"SideBarTables\"\r\n className=\"col-sm-11\"\r\n items={sideBarTablesRecords}\r\n handleFieldValue={(e) => this.handlemultidropdown(e)}\r\n value={SideBarTables || ''} //&& result.transmisionStatus.join(',')\r\n // extraProps={extraProps}\r\n extraProps={multitransformProps}\r\n ismulti={true}\r\n disabled={!edit}\r\n />{updateRecord && <FormHeader title=\"Notices\" designprops={true} handleSave={this.handleSaveWithTemplate} handleEdit={this.handleEdit}\r\n editbutton={updateRecord ? editbutton : false} savebutton={updateRecord && editbutton === true ? false : true} />}\r\n </div>\r\n <Template ref={this.TemplateForm} moduleId={this.state.SubModuleKey}\r\n sitePermitTypeId={this.state.SitePermitType}\r\n // handleTemplateId={(id) => this.handleTemplateId(id)}\r\n handleTemplateId={this.handleTemplateId}\r\n templateId={this.state.TemplateId}\r\n isadmin={true}\r\n isEnabled={edit}\r\n sideBarTables={submoduleselectedtablesresults}\r\n fields={fields || []}\r\n showHistory={true}\r\n />\r\n\r\n </TabPanel>\r\n </div>\r\n\r\n )\r\n }\r\n}\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage }, dispatch);\r\n}\r\n\r\nNotices = connect(null, mapActions)(Notices)\r\nexport default withRouter(Notices)","import React, { Component } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport CForm from '../../core/modules/form/cform';\r\nimport FormHeader from '../../core/modules/form/cformheader';\r\nimport { requestApi } from '../../core/modules/form/utilities';\r\n\r\n\r\n\r\nclass NotificationSettings extends Component {\r\n\r\n constructor(props) {\r\n super(props)\r\n this.state = {\r\n title: \"Notification Settings\",\r\n\r\n embedform: this.props.options.embedform,\r\n key: \"nsform\",\r\n }\r\n this.results = null;\r\n this.i = 0\r\n\r\n }\r\n\r\n handleState = (inputState) => {\r\n if (this.results === null && inputState.results.NotificationType === \"SCHEDULED_NOTIFICATION\") {\r\n this.results = inputState.results;\r\n let components = [...this.state.embedform.components]\r\n components.find(v => v.key === \"nssubmodule\").options.className = 'hideNSField'\r\n components.find(v => v.key === \"nssitepermitype\").options.className = 'hideNSField'\r\n components.find(v => v.key === \"nseventon\").options.className = 'hideNSField'\r\n components.find(v => v.key === \"nseventdetails\").options.className = 'hideNSField'\r\n components.find(v => v.key === \"nseventtemplate\").options.className = 'hideNSField'\r\n components.find(v => v.key === \"nsschedulenotificationtemplate\").options.className = 'showNSField'\r\n this.setState({\r\n embedform: {\r\n ...this.state.embedform,\r\n components: components\r\n },\r\n key: `nsform${this.i}`\r\n })\r\n console.log(this.state.embedform);\r\n }\r\n else if (this.results === null && (inputState.results.NotificationType === \"EVENT_NOTIFICATION\" || inputState.results.NotificationType === \"BUSINESS_RULES_NOTIFICATION\")) {\r\n this.results = inputState.results;\r\n let components = [... this.state.embedform.components]\r\n components.find(v => v.key === \"nssubmodule\").options.className = ' col-4 showNSField'\r\n components.find(v => v.key === \"nssitepermitype\").options.className = ' col-4 showNSField'\r\n components.find(v => v.key === \"nseventon\").options.className = ' col-4 showNSField'\r\n components.find(v => v.key === \"nseventdetails\").options.className = ' col-4 showNSField'\r\n components.find(v => v.key === \"nseventtemplate\").options.className = ' col-4 showNSField'\r\n components.find(v => v.key === \"nsschedulenotificationtemplate\").options.className = 'hideNSField'\r\n this.setState({\r\n embedform: {\r\n ...this.state.embedform,\r\n components: components\r\n }\r\n })\r\n console.log(this.state.embedform);\r\n }\r\n else if (this.results && this.results != inputState.results) {\r\n this.results = inputState.results;\r\n if (inputState.results.NotificationType === \"SCHEDULED_NOTIFICATION\") {\r\n\r\n let components = [... this.state.embedform.components]\r\n components.find(v => v.key === \"nssubmodule\").options.className = 'hideNSField'\r\n components.find(v => v.key === \"nssitepermitype\").options.className = 'hideNSField'\r\n components.find(v => v.key === \"nseventon\").options.className = 'hideNSField'\r\n components.find(v => v.key === \"nseventdetails\").options.className = 'hideNSField'\r\n components.find(v => v.key === \"nseventtemplate\").options.className = 'hideNSField'\r\n components.find(v => v.key === \"nsschedulenotificationtemplate\").options.className = ' col-4 showNSField'\r\n this.setState({\r\n embedform: {\r\n ...this.state.embedform,\r\n components: components\r\n }\r\n })\r\n console.log(this.state.embedform);\r\n }\r\n else if (inputState.results.NotificationType === \"EVENT_NOTIFICATION\" || inputState.results.NotificationType === \"BUSINESS_RULES_NOTIFICATION\") {\r\n let components = [... this.state.embedform.components]\r\n components.find(v => v.key === \"nssubmodule\").options.className = ' col-4 showNSField'\r\n components.find(v => v.key === \"nssitepermitype\").options.className = ' col-4 showNSField'\r\n components.find(v => v.key === \"nseventon\").options.className = ' col-4 showNSField'\r\n components.find(v => v.key === \"nseventdetails\").options.className = ' col-4 showNSField'\r\n components.find(v => v.key === \"nseventtemplate\").options.className = ' col-4 showNSField'\r\n components.find(v => v.key === \"nsschedulenotificationtemplate\").options.className = 'hideNSField'\r\n this.setState({\r\n embedform: {\r\n ...this.state.embedform,\r\n components: components\r\n }\r\n })\r\n console.log(this.state.embedform);\r\n }\r\n }\r\n }\r\n\r\n handleSave = (event) => {\r\n const { options } = this.props\r\n\r\n const { crud } = options\r\n const save = crud.update\r\n\r\n let ids = [], id\r\n if (Array.isArray(save.put.matchProps)) {\r\n save.put.matchProps.forEach(each => {\r\n const { value } = each\r\n ids.push({ key: value, value: this.props.match.params[value] })\r\n })\r\n }\r\n else {\r\n id = this.props.match.params.routeid\r\n }\r\n\r\n if (save) {\r\n\r\n requestApi(save, (id || ids), this.state.results).then(results => {\r\n\r\n }).catch(error => {\r\n console.log('eroor-----------------', error)\r\n error.then(err => {\r\n console.log('error---', err)\r\n if (err.errors) this.onError(err.errors)\r\n else this.onError(err)\r\n })\r\n })\r\n }\r\n\r\n }\r\n\r\n render() {\r\n const { compmap, options } = this.props;\r\n // / breadcrumbs={breadcrumbs} correct: not defined\r\n return <div>\r\n <FormHeader title={this.state.title} handleSave={this.handleSave} savebutton={true} />\r\n <CForm {...this.state.embedform} compmap={compmap} getState={this.handleState} />\r\n </div>\r\n }\r\n}\r\nexport default withRouter(NotificationSettings)\r\n","/**\r\n *********************************************************\r\n Description: Handles the multiduallistbox component with form fields below the multiduallistbox. Not completely written, still needs to be verified and modified.\r\n Required props: type, components.\r\n limitations : N/A.\r\n *********************************************************\r\n**/\r\n\r\nimport React, { Component, Fragment } from 'react';\r\nimport 'react-dual-listbox/lib/react-dual-listbox.css';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { bindActionCreators } from 'redux';\r\nimport Autocompletetags from '../../core/controls/components/custom/notificationtags';\r\nimport { snackbarMessage } from '../../core/actions';\r\nimport FormHeader from '../../core/modules/form/cformheader';\r\nimport { requestApi } from '../../core/modules/form/utilities';\r\nimport { getEnvVariable } from '../environmentalList';\r\n\r\nclass NotificationEvents extends Component {\r\n constructor(props) {\r\n super(props)\r\n console.log(props);\r\n /**\r\n *********************************************************\r\n Description: Initializing the state to handle the duallist box.\r\n Required props: N/A.\r\n limitations : N/A.\r\n *********************************************************\r\n **/\r\n this.state = {\r\n firstboxselected: [],\r\n firstboxavailable: [],\r\n secondboxselected: [],\r\n secondboxavailable: [],\r\n firstboxresults: null,\r\n secondboxresults: null,\r\n currentfirstboxselecteditem: null,\r\n currentsecondboxselecteditem: null,\r\n changedFieldName: [],\r\n opensnackbar: false,\r\n snackbarmessageType: '',\r\n snackbarmessage: '',\r\n\r\n availablenotificationevents: [],\r\n availablenotificationeventsTRANSITION: [],\r\n selectednotificationevents: '',\r\n selectednotificationeventsTRANSITION: '',\r\n selectednotificationeventscollection: [],\r\n selectednotificationeventscollectionTRANSITION: [],\r\n notificationeventresults: [],\r\n parentId: '',\r\n eventId: '',\r\n allpermittypestatusitems: []\r\n };\r\n }\r\n\r\n\r\n\r\n\r\n /**\r\n *********************************************************\r\n Description: Gets the values for the duallist box and setups click listener on each of the values.\r\n Required props: components.\r\n limitations : N/A.\r\n *********************************************************\r\n**/\r\n\r\n componentDidMount() {\r\n const { options, components, eventOn, duallistprops } = this.props\r\n const [firstbox, secondbox] = components\r\n const firstboxoptions = firstbox ? firstbox.options : null\r\n const firstboxtranformProps = firstboxoptions ? firstboxoptions.transformProps : null\r\n const firstboxcrud = firstboxoptions ? firstboxoptions.crud : null\r\n const firstboxread = firstboxcrud ? firstboxcrud.read : null\r\n const firstboxget = firstboxread ? firstboxread.get : null\r\n //const firstboxrouteProps = firstboxget ? firstboxget.routeProps : null\r\n // id = firstboxrouteProps ? this.props.match.params[firstboxrouteProps.value] : null\r\n\r\n const firstboxeventsavailable = firstboxcrud ? firstboxcrud.available : null\r\n const firstboxeventsselected = firstboxcrud ? firstboxcrud.selected : null\r\n const appstatusfirstboxeventsavailable = firstboxcrud ? firstboxcrud.appstatusavailable : null\r\n\r\n const firstboxeventsavailableget = firstboxeventsavailable ? firstboxread.get : null\r\n const firstboxeventsselectedget = firstboxeventsselected ? firstboxeventsselected.get : null\r\n\r\n const { matchProps, routeProps, extraProps, customProps } = firstboxget ? firstboxget : {}\r\n\r\n //this.progressBar.start()\r\n\r\n\r\n let ids = [], id\r\n if (Array.isArray(routeProps)) {\r\n routeProps.forEach(each => {\r\n const { value, custom } = each\r\n if (custom) {\r\n ids.push({ key: custom, value: this.props.dataItem[custom] })\r\n }\r\n else {\r\n ids.push({ key: value, value: this.props.match.params[value] })\r\n }\r\n })\r\n }\r\n else if (routeProps) {\r\n id = routeProps ? this.props.match.params[routeProps.value] : null\r\n }\r\n else if (customProps) {\r\n id = this.props.dataItem[customProps.custom]\r\n }\r\n else if (matchProps) {\r\n if (Array.isArray(matchProps)) {\r\n matchProps.forEach(each => {\r\n const { value } = each\r\n ids.push({ key: value, value: this.props.extraProps ? this.props.extraProps[matchProps[0].value] : null })\r\n })\r\n }\r\n //if(results) id = results[matchProps.value]\r\n\r\n }\r\n\r\n if (eventOn) {\r\n var val = ''\r\n switch (eventOn) {\r\n case \"APPLICATION_STATUS_CHANGE\":\r\n val = 'APPLICATION_STATUS';\r\n break;\r\n case \"FIELD_VALUE_CHANGE\":\r\n val = 'FIELD_VALUE';\r\n break;\r\n case \"PERMIT_STATUS_CHANGE\":\r\n val = 'PERMIT_STATUS';\r\n break;\r\n case \"WORKFLOW_STATUS_CHANGE\":\r\n val = 'WORKFLOW_STATUS_CHANGE';\r\n break;\r\n case \"RESOLUTION_STATUS\":\r\n val = 'RESOLUTION_STATUS';\r\n break;\r\n default:\r\n val = '';\r\n break;\r\n }\r\n ids.push({ key: 'eventOn', value: val });\r\n let parentId = this.props.dataItem['ID'];\r\n let eventId = val;\r\n\r\n if (eventOn == \"FIELD_VALUE_CHANGE\") {\r\n //Refactor props for event on details\r\n const { matchProps, routeProps, extraProps } = firstboxeventsselectedget ? firstboxeventsselectedget : {}\r\n if (Array.isArray(routeProps)) {\r\n routeProps.forEach(each => {\r\n const { value, custom } = each\r\n if (custom) {\r\n ids.push({ key: custom, value: this.props.dataItem[custom] })\r\n }\r\n else {\r\n ids.push({ key: value, value: this.props.match.params[value] })\r\n }\r\n })\r\n }\r\n else if (routeProps) {\r\n id = routeProps ? this.props.match.params[routeProps.value] : null\r\n }\r\n else if (matchProps) {\r\n if (Array.isArray(matchProps)) {\r\n matchProps.forEach(each => {\r\n const { value } = each\r\n ids.push({ key: value, value: this.props.extraProps ? this.props.extraProps[matchProps[0].value] : null })\r\n })\r\n }\r\n }\r\n //firstboxeventsselected.urlpath = firstboxeventsselected.urlpath\r\n firstboxeventsavailableget && requestApi(firstboxeventsavailable, (ids.length > 0 ? ids : id)).then(results => {\r\n if (results) {\r\n let availablenotificationevents = results.map(each => {\r\n return { id: each.Value, name: each.Label, key: each.Value }\r\n })\r\n this.setState({ availablenotificationevents: availablenotificationevents, parentId: parentId, eventId: eventId });\r\n\r\n firstboxeventsselectedget && requestApi(firstboxeventsselected, (ids.length > 0 ? ids : id)).then(results1 => {\r\n if (results1 && results1.selectedCollection.length > 0) {\r\n let selectedValues = results1.selectedCollection.map(a => { return a.key })\r\n let selectednotificationeventscollection = results.filter(a => selectedValues.includes(a.id)).map(each => {\r\n return { id: each.Value, name: each.Label, key: each.Value }\r\n })\r\n let selcted = [...new Set(selectedValues)].join()\r\n this.setState({\r\n availablenotificationevents: availablenotificationevents,\r\n selectednotificationevents: selcted,\r\n parentId: parentId, eventId: eventId, selectednotificationeventscollection: selectednotificationeventscollection\r\n });\r\n } else {\r\n this.setState({ availablenotificationevents: availablenotificationevents, parentId: parentId, eventId: eventId });\r\n }\r\n // this.progressBar.complete()\r\n })\r\n }\r\n\r\n })\r\n\r\n } else if (eventOn == \"APPLICATION_STATUS_CHANGE\") {\r\n if (this.props.extraProps) {\r\n ids.push({ key: 'SitePermitTypeId', value: this.props.extraProps['SitePermitTypeId'] })\r\n }\r\n //firstboxget.urlpath = firstboxget.urlpath + val;\r\n appstatusfirstboxeventsavailable && requestApi(appstatusfirstboxeventsavailable, (ids.length > 0 ? ids : id)).then(results => {\r\n console.log(results);\r\n if (results && results.length > 0) {\r\n let availablenotificationevents = []\r\n results.forEach(each => {\r\n let selectedStatus = each.SelectedStatus || {}\r\n availablenotificationevents.push({ id: selectedStatus.Id, name: selectedStatus.StatusName, key: selectedStatus.Id });\r\n let transmisionstatus = each.TransmisionStatus;\r\n transmisionstatus.forEach(each => {\r\n availablenotificationevents.push({ id: selectedStatus.Id, name: selectedStatus.StatusName, key: selectedStatus.Id })\r\n })\r\n\r\n });\r\n //unique data\r\n let unique = Array.from(new Set(availablenotificationevents.map(s => s.id))).map(id => {\r\n return {\r\n id: id,\r\n name: availablenotificationevents.find(a => a.id === id).name, //(a.FirstName +' '+a.LastName),\r\n key: availablenotificationevents.find(a => a.id === id).key\r\n }\r\n })\r\n\r\n this.setState({ availablenotificationevents: unique, parentId: parentId, eventId: eventId }, () => {\r\n this.loadSelectedNotificationEvents(firstboxtranformProps, firstboxget, firstboxread, (ids.length > 0 ? ids : id), unique, results)\r\n })\r\n }\r\n // this.progressBar.complete()\r\n })\r\n\r\n }else if (eventOn == \"WORKFLOW_STATUS_CHANGE\"){\r\n firstboxget && requestApi(firstboxread, (ids.length > 0 ? ids : id)).then(results => {\r\n if (results) {\r\n let available = [];\r\n let selected = [];\r\n if (results.availableCollection) {\r\n available = results.availableCollection.map(each => {\r\n return { id: each.key, name: each.name, key: each.key }\r\n })\r\n }\r\n if (results.selectedCollection) {\r\n selected = results.selectedCollection.map(each => {\r\n return { id: each.key, name: each.name, key: each.key }\r\n })\r\n }\r\n let selectedValues = selected.map(a => { return a.id })\r\n let selctedsep = [...new Set(selectedValues)].join()\r\n\r\n //For selected transitions\r\n let selectedTransitionValArr = results.selectedCollection.map(a => a.transition);\r\n let sectedTransitionsep = [...new Set(selectedTransitionValArr)].join();\r\n\r\n this.setState({\r\n availablenotificationevents: available,\r\n selectednotificationevents: selctedsep,\r\n selectednotificationeventscollection: selected,\r\n parentId: parentId, eventId: eventId,\r\n availablenotificationeventsTRANSITION: available,\r\n selectednotificationeventsTRANSITION: sectedTransitionsep\r\n });\r\n }\r\n })\r\n } else {\r\n //firstboxget.urlpath = firstboxget.urlpath + val;\r\n firstboxget && requestApi(firstboxread, (ids.length > 0 ? ids : id)).then(results => {\r\n if (results) {\r\n let available = [];\r\n let selected = [];\r\n if (results.availableCollection) {\r\n available = results.availableCollection.map(each => {\r\n return { id: each.key, name: each.name, key: each.key }\r\n })\r\n }\r\n if (results.selectedCollection) {\r\n selected = results.selectedCollection.map(each => {\r\n return { id: each.key, name: each.name, key: each.key }\r\n })\r\n }\r\n let selectedValues = available.map(a => { return a.id })\r\n let selctedsep = [...new Set(selectedValues)].join()\r\n this.setState({\r\n availablenotificationevents: available,\r\n selectednotificationevents: selctedsep,\r\n selectednotificationeventscollection: selected,\r\n parentId: parentId, eventId: eventId\r\n });\r\n }\r\n // this.progressBar.complete();\r\n })\r\n }\r\n }else{\r\n //Load reports for the scheduled notifications\r\n this.loadScheudleNotificationReports(firstboxread,ids);\r\n }\r\n }\r\n\r\n loadScheudleNotificationReports(firstboxread,ids){\r\n let parentId = this.props.dataItem['ID'];\r\n let reportsurl = { \"get\": { \"url\": getEnvVariable('Report')+`/api/Reports/All` } };\r\n requestApi(reportsurl, null).then(results => {\r\n if(results && results.length > 0){\r\n let eventdetails = results.map(a => { return { id: a.Id, name: a.Name, key: a.Id } })\r\n requestApi(firstboxread, ids).then(selresults => {\r\n console.log(selresults);\r\n if(selresults){\r\n let selids = selresults.selectedCollection.map(a => a.key);\r\n let selctedsep = [...new Set(selids)].join();\r\n this.setState({\r\n availablenotificationevents: eventdetails,\r\n selectednotificationevents: selctedsep,\r\n parentId:parentId\r\n })\r\n }\r\n })\r\n }\r\n })\r\n }\r\n\r\n\r\n loadSelectedNotificationEvents(firstboxtranformProps, firstboxget, firstboxread, ids, availableresults, allpermittypestatusitems) {\r\n firstboxget && requestApi(firstboxread, ids).then(results => {\r\n console.log(results);\r\n let selectedresults = results[firstboxtranformProps.selected.key]\r\n if (results && selectedresults && selectedresults.length > 0) {\r\n let selectedValues = selectedresults.map(a => { return a.name })\r\n let selectedTransition = selectedresults[0].transition ? selectedresults[0].transition : '';\r\n //let selectedTransitionArr = selectedTransition.split(\",\");\r\n\r\n let selectednotificationeventscollection = availableresults.filter(a => selectedValues.includes(a.id.toString())).map(each => {\r\n return { id: each.id, name: each.name, key: each.key }\r\n })\r\n\r\n let alltransitionstatus = allpermittypestatusitems.filter(a => selectedValues.includes(a.SelectedStatus.Id.toString()));\r\n let transitionstatus = []\r\n if (alltransitionstatus && alltransitionstatus.length > 0)\r\n transitionstatus = alltransitionstatus[0].TransmisionStatus ? alltransitionstatus[0].TransmisionStatus.map(a => { return { id: a.Id, name: a.StatusName, key: a.Id } }) : [];\r\n\r\n let selcted = [...new Set(selectedValues)].join()\r\n this.setState({\r\n selectednotificationevents: selcted,\r\n selectednotificationeventscollection: selectednotificationeventscollection,\r\n allpermittypestatusitems: allpermittypestatusitems,\r\n availablenotificationeventsTRANSITION: transitionstatus,\r\n selectednotificationeventsTRANSITION: selectedTransition\r\n });\r\n } else {\r\n this.setState({ allpermittypestatusitems: allpermittypestatusitems, selectednotificationeventsTRANSITION: '' })\r\n }\r\n })\r\n }\r\n\r\n /**\r\n *********************************************************\r\n Description: handles the saving of the results for the firstdual list box.\r\n Required props: components. Within components first dual list box save is needed.\r\n limitations : N/A.\r\n *********************************************************\r\n**/\r\n\r\n onhandleSave = () => {\r\n //selected - {value: \"ADC_MAP_GRID_NO\", label: \"ADC Map Grid No\", key: \"ADC_MAP_GRID_NO\", name: \"ADC Map Grid No\"}\r\n //available - {value: \"ADC_MAP_GRID_NO\", label: \"ADC Map Grid No\", key: \"ADC_MAP_GRID_NO\", name: \"ADC Map Grid No\"}\r\n const { selectednotificationeventscollection, availablenotificationevents, parentId, eventId, selectednotificationeventscollectionTRANSITION, selectednotificationeventsTRANSITION } = this.state;\r\n let selectedcollection = selectednotificationeventscollection.map(each => {\r\n return { value: each.id, label: each.name, key: each.id, name: each.name, transition: selectednotificationeventsTRANSITION }\r\n })\r\n let availablecollection = availablenotificationevents.map(each => {\r\n return { value: each.id, label: each.name, key: each.id, name: each.name }\r\n })\r\n let results = {\r\n availableCollection: availablecollection,\r\n selectedCollection: selectedcollection,\r\n parentId: parentId,\r\n eventId: eventId\r\n }\r\n //this.progressBar.start()\r\n const id = this.props.match.params.routeid\r\n const { options, components } = this.props\r\n const [firstbox, secondbox] = components\r\n const firstboxoptions = firstbox ? firstbox.options : null\r\n const firstboxcrud = firstboxoptions ? firstboxoptions.crud : null\r\n const firstboxsave = firstboxcrud ? firstboxcrud.update : null\r\n const { multiboxes, save, title } = options ? options : {}\r\n if (firstboxsave) {\r\n requestApi(firstboxsave, id, results).then(results => {\r\n //this.progressBar.complete()\r\n if (this.props.save) this.props.handleSave()\r\n this.props.snackbarMessage((title ? title : '') + ' Saved Successfully', 'success')\r\n\r\n }).catch(e => {\r\n // this.progressBar.complete()\r\n if (this.props.save) this.props.handleSave()\r\n this.props.snackbarMessage('Invalid Data, Please check the data', 'error')\r\n });\r\n }\r\n\r\n\r\n }\r\n /**\r\n *********************************************************\r\n Description: handles closing of the alerts.\r\n Required props: N/A.\r\n limitations : N/A.\r\n *********************************************************\r\n **/\r\n\r\n handleSnackBarClose = (event, reason) => {\r\n if (reason === 'clickaway') {\r\n return;\r\n }\r\n this.setState({ opensnackbar: false });\r\n };\r\n\r\n\r\n\r\n\r\n\r\n getEventLabel(eventOn, tag) {\r\n switch (eventOn) {\r\n case \"APPLICATION_STATUS_CHANGE\":\r\n case \"PERMIT_STATUS_CHANGE\":\r\n return 'Select ' + tag + ' status';\r\n case \"FIELD_VALUE_CHANGE\":\r\n return 'Select field(s)';\r\n case \"WORKFLOW_STATUS_CHANGE\":\r\n return 'Select workflow ' + tag + ' status';\r\n case \"RESOLUTION_STATUS\":\r\n return 'Select resolution ' + tag + ' status';\r\n case null:\r\n case \"\":\r\n return 'Select report(s)';\r\n default:\r\n return 'Select notification event(s)';\r\n }\r\n }\r\n\r\n onNotificationEventChange = (tags) => {\r\n //console.log(tags)\r\n let retags = tags;\r\n let resultdata = tags.target.value.map(a => a.id);\r\n let transitionstatus = [];\r\n let seltransitionstatus = '';\r\n if (this.props.eventOn == 'APPLICATION_STATUS_CHANGE') {\r\n seltransitionstatus = ''\r\n let existingdata = this.state.selectednotificationevents ? this.state.selectednotificationevents.split(\",\") : [];\r\n tags = { target: { name: tags.target.name, value: tags.target.value.filter(a => !existingdata.includes(a.id.toString())) } }\r\n resultdata = [...new Set(resultdata)]\r\n //resultdata = tags.target.value.filter(a => !existingdata.includes(a.id)).map(a => a.id);\r\n\r\n let alltransitionstatus = this.state.allpermittypestatusitems.filter(a => resultdata.includes(a.SelectedStatus.Id))\r\n if (alltransitionstatus && alltransitionstatus.length > 0)\r\n transitionstatus = alltransitionstatus[0].TransmisionStatus ? alltransitionstatus[0].TransmisionStatus.map(a => { return { id: a.Id, name: a.StatusName, key: a.Id } }) : [];\r\n }else if (this.props.eventOn == 'WORKFLOW_STATUS_CHANGE'){\r\n let existingdata = this.state.selectednotificationevents ? this.state.selectednotificationevents.split(\",\") : [];\r\n tags = { target: { name: tags.target.name, value: tags.target.value.filter(a => !existingdata.includes(a.id.toString())) } }\r\n seltransitionstatus = this.state.selectednotificationeventsTRANSITION\r\n transitionstatus = this.state.availablenotificationevents;\r\n }else {\r\n seltransitionstatus = this.state.selectednotificationeventsTRANSITION\r\n transitionstatus = this.state.availablenotificationevents;\r\n }\r\n this.setState({\r\n selectednotificationevents: [...new Set(resultdata)].join(),\r\n selectednotificationeventscollection: tags.target.value,\r\n notificationeventresults: { ...this.state.firstboxresults, selectednotificationeventscollection: tags.target.value },\r\n availablenotificationeventsTRANSITION: transitionstatus,\r\n selectednotificationeventsTRANSITION: seltransitionstatus\r\n })\r\n }\r\n\r\n onToNotificationEventChange = (tags) => {\r\n console.log(tags)\r\n let resultdata = tags.target.value.map(a => a.id);\r\n this.setState({\r\n selectednotificationeventsTRANSITION: [...new Set(resultdata)].join(),\r\n selectednotificationeventscollectionTRANSITION: tags.target.value,\r\n //notificationeventresults: { ...this.state.firstboxresults, selectednotificationeventscollection: tags.target.value }\r\n })\r\n }\r\n\r\n /**\r\n *********************************************************\r\n Description: handles rendering of the duallist boxes and the forms beneath it.\r\n Required props: type ,components, options.\r\n limitations : N/A.\r\n *********************************************************\r\n **/\r\n\r\n render() {\r\n let autcompletetags_FROM = {\r\n \"options\": {\r\n \"label\": this.getEventLabel(this.props.eventOn, 'from'),\r\n \"placeholder\": \"\",\r\n \"row\": 0,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"name\": \"NotificationEvents\",\r\n \"itemname\": \"notificationEventId\",\r\n disabled: false,\r\n conditions: {\r\n hideonnull: { 'roleId': null }\r\n },\r\n \"defaultSelected\": true\r\n }\r\n }\r\n\r\n let autcompletetags_TO = {\r\n \"options\": {\r\n \"label\": this.getEventLabel(this.props.eventOn, 'to'),\r\n \"placeholder\": \"\",\r\n \"row\": 0,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"name\": \"NotificationEventsTo\",\r\n \"itemname\": \"notificationEventId\",\r\n disabled: false,\r\n conditions: {\r\n hideonnull: { 'roleId': null }\r\n },\r\n \"defaultSelected\": true\r\n }\r\n }\r\n const { options, components, compmap, eventOn } = this.props\r\n const { multiboxes, save, title } = options ? options : {}\r\n const [firstbox, secondbox] = components\r\n const firstboxoptions = firstbox ? firstbox.options : null\r\n const secondboxoptions = secondbox ? secondbox.options : null\r\n const firstboxprops = {}, secondboxprops = {}\r\n\r\n const { availablenotificationevents, selectednotificationevents, selectednotificationeventscollection, selectednotificationeventsTRANSITION, availablenotificationeventsTRANSITION } = this.state\r\n const { headerProps, designprops } = options\r\n const { savebutton, closebutton } = headerProps ? headerProps : {}\r\n\r\n return (\r\n <Fragment>\r\n {headerProps && <FormHeader title={title} handleSave={this.onhandleSave} savebutton={savebutton} handleClose={this.props.onClose} closebutton={closebutton} duallistheader={true} designprops={designprops} />}\r\n {/* <div> <ProgressBar ref={e => this.progressBar = e} /></div> */}\r\n <div className=\"mt-2\">\r\n <Autocompletetags\r\n label=\"Notification Events\"\r\n name=\"notificationEvents\"\r\n dropdownvalues={availablenotificationevents}\r\n options={autcompletetags_FROM.options}\r\n handleFieldChange={this.onNotificationEventChange}\r\n defaultSelValue={selectednotificationevents}\r\n />\r\n </div>\r\n {(eventOn == 'APPLICATION_STATUS_CHANGE' || eventOn == 'WORKFLOW_STATUS_CHANGE') && <div className=\"mt-2\">\r\n <Autocompletetags\r\n label=\"Notification Events\"\r\n name=\"notificationEventsTRANSITION\"\r\n dropdownvalues={availablenotificationeventsTRANSITION}\r\n options={autcompletetags_TO.options}\r\n handleFieldChange={this.onToNotificationEventChange}\r\n defaultSelValue={selectednotificationeventsTRANSITION}\r\n />\r\n </div>}\r\n </Fragment>\r\n )\r\n }\r\n}\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage }, dispatch);\r\n}\r\n\r\nNotificationEvents = connect(null, mapActions)(NotificationEvents)\r\nexport default withRouter(NotificationEvents)\r\n\r\n","import Box from '@material-ui/core/Box';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport Tabs from '@material-ui/core/Tabs';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport React, { Component, Fragment } from \"react\";\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { bindActionCreators } from 'redux';\r\nimport MultipleDropdown from '../../core/controls/components/checkautocomplete';\r\nimport { GetData, PostData, PutData } from \"../../core/controls/helpers/requests\";\r\nimport { createRequest, requestApi } from '../../core/controls/helpers/rest';\r\nimport { snackbarMessage } from '../../core/actions';\r\nimport { getEnvVariable } from \"../../modules/environmentalList\";\r\nimport CFormCheckbox from '../../core/modules/form/cformcheckbox';\r\nimport FormHeader from '../../core/modules/form/cformheader';\r\nimport Template from '../../core/modules/template/template';\r\n\r\n\r\nconst multitransformProps = {\r\n transformProps: {\r\n label: \"name\",\r\n value: \"id\"\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 <Typography\r\n component=\"div\"\r\n role=\"tabpanel\"\r\n hidden={value !== index}\r\n id={`nav-tabpanel-${index}`}\r\n aria-labelledby={`nav-tab-${index}`}\r\n {...other}\r\n >\r\n {value === index && <Box p={3}>{children}</Box>}\r\n </Typography>\r\n );\r\n}\r\n\r\nclass NSTemplate extends Component {\r\n constructor(props) {\r\n super(props)\r\n this.state = {\r\n tabValue: 0,\r\n IsGrouped: \"N\",\r\n internalTemplateId: 0,\r\n externalTemplateId: 0,\r\n //updateRecord: this.props.match.params.routeid && (this.props.match.params.routeid == 'add' ? false : true),\r\n updateRecord: this.props.dataItem ? (!this.props.dataItem.ID ? false : true) : false,\r\n snackbarmessage: '', fields: []\r\n\r\n };\r\n this.transformProps = {\r\n \"Y\": true,\r\n \"N\": false,\r\n true: \"Y\",\r\n false: \"N\"\r\n }\r\n this.results = [\r\n { IsGrouped: \"N\", TemplateId: 0, UseType: \"I\", NotificationSettingId: this.props.dataItem.ID },\r\n { IsGrouped: \"N\", TemplateId: 0, UseType: \"E\", NotificationSettingId: this.props.dataItem.ID }\r\n ]\r\n this.url1 = this.props.dataItem ? getEnvVariable('Notification')+`/api/NotificationTemplates/EventNotificationtemplate/${this.props.dataItem.ID}` : getEnvVariable('Notification')+`/api/NotificationTemplates/EventNotificationtemplate/${this.props.match.params.routeid}`\r\n this.url2 = this.props.dataItem ? getEnvVariable('Notification')+`/api/NotificationTemplates/SaveEventNotificationTemplate/${this.props.dataItem.ID}` : getEnvVariable('Notification')+`/api/NotificationTemplates/SaveEventNotificationTemplate/${this.props.match.params.routeid}`\r\n this.TemplateForm = React.createRef()\r\n }\r\n handleIsGroupChange = (event) => {\r\n const value = this.transformProps ? this.transformProps[event.target.checked] : event.target.value;\r\n this.setState({\r\n [event.target.name]: value,\r\n }, () => {\r\n this.results[0].IsGrouped = value\r\n })\r\n }\r\n handleInternalTemplateId = (data) => {\r\n if (this.state.internalTemplateId !== data.id) {\r\n this.setState({\r\n \"internalTemplateId\": data.id,\r\n }, () => {\r\n console.log(this.results);\r\n this.results[0].TemplateId = data.id;\r\n this.handleSave();\r\n })\r\n\r\n } else {\r\n //this.props.snackbarMessage(' Saved Successfully', 'success')\r\n\r\n }\r\n }\r\n\r\n handleExternalTemplateId = (data) => {\r\n if (this.state.externalTemplateId !== data.id) {\r\n this.setState({\r\n \"externalTemplateId\": data.id,\r\n }, () => {\r\n this.results[1].TemplateId = data.id;\r\n this.handleSave();\r\n })\r\n } else {\r\n // this.props.snackbarMessage(' Saved Successfully', 'success')\r\n\r\n }\r\n }\r\n\r\n fetchData(requestType, url, queryParam, body) {\r\n\r\n const queryStr = queryParam != null ? `${url}?${queryParam}` : `${url}`\r\n\r\n if (requestType == \"GET\") {\r\n return GetData(queryStr);\r\n }\r\n else if (requestType == \"POST\") {\r\n return PostData(queryStr, body);\r\n }\r\n else if (requestType == \"PUT\")\r\n return PutData(queryStr, body);\r\n }\r\n\r\n\r\n componentDidMount() {\r\n if (this.state.updateRecord) {\r\n this.fetchData('GET', this.url1, null, null).then(response => {\r\n if (response) {\r\n console.log('ok response', response);\r\n let data = response;\r\n if (data.length > 0) {\r\n this.results = data;\r\n this.setState({\r\n internalTemplateId: data[0].TemplateId,\r\n IsGrouped: data[0].IsGrouped,\r\n externalTemplateId: data[1].TemplateId,\r\n }, () => {\r\n this.getBusiessRules(this.props.extraProps.submoduleselectedtables)\r\n })\r\n }\r\n return response\r\n }\r\n else {\r\n throw response.json();\r\n }\r\n }).then(data => {\r\n if (data.length > 0) {\r\n this.results = data;\r\n this.setState({\r\n internalTemplateId: data[0].TemplateId,\r\n IsGrouped: data[0].IsGrouped,\r\n externalTemplateId: data[1].TemplateId,\r\n }, () => {\r\n this.getBusiessRules(this.props.extraProps.submoduleselectedtables)\r\n })\r\n }\r\n }).catch(x => console.log(x));\r\n }\r\n }\r\n\r\n getBusiessRules(sidebarItems) {\r\n if (this.state.updateRecord) {\r\n let sideUrl = '';\r\n sidebarItems && (sidebarItems !== '') && sidebarItems.split(',') && sidebarItems.split(',').length > 0 && sidebarItems.split(',').map(each => {\r\n sideUrl = sideUrl + '&SideBarItems=' + (this.props.extraProps.sideBarTablesRecords.find(item => (item.value).toString() === each)).name\r\n })\r\n const read = [\r\n {\r\n url: getEnvVariable('Sidebar')+`/api/BusinessRules/Builder/Template?SitePermitTypeId=${this.props.extraProps.SitePermitTypeId}${sideUrl}`,\r\n type: 'get'\r\n },\r\n ]\r\n Promise.all(read.map(each => requestApi(createRequest(each, {})))).then(res => {\r\n let [fields] = res\r\n this.setState({\r\n fields: fields.map(res => { res.name = res.name.replace(\" \", \"\"); return res })\r\n })\r\n }).catch(x => console.log(x));\r\n }\r\n }\r\n\r\n\r\n //Updated by vijaya: Added snack bar to display the messages.\r\n handleSaveWithTemplate = (event) => {\r\n\r\n console.log(this.state.results);\r\n this.TemplateForm.current.saveTemplate();\r\n }\r\n\r\n //code changed\r\n handleSave = (event) => {\r\n console.log(this.state.results);\r\n this.fetchData('PUT', this.url2, null, this.results).then(response => {\r\n if (response) {\r\n return 'success'\r\n }\r\n }).then(data => {\r\n this.setState({\r\n results: data\r\n })\r\n })\r\n\r\n }\r\n\r\n handleChange = (event, value) => {\r\n var tabSelection = value == 0 ? 0 : 1;\r\n this.setState({ tabValue: tabSelection });\r\n }\r\n\r\n handlemultidropdown = (tags) => {\r\n let resultdata = tags.target.value\r\n let resultdatasplit = resultdata.split(\",\")\r\n let selectedRecords = this.props.extraProps.sideBarTablesRecords.filter(a => resultdatasplit.includes(a.id.toString()))\r\n this.setState({\r\n SideBarTables: resultdata,\r\n submoduleselectedtables: resultdata,\r\n submoduleselectedtablesresults: selectedRecords,\r\n }, () => {\r\n this.getBusiessRules(resultdata)\r\n })\r\n }\r\n\r\n noExtNotification = [\"INTERNAL_STATUS_TIMER_NOTIFICATION\",\"APPEAL_STATUS_TIMER_NOTIFICATION\",\"EXTERNAL_STATUS_TIMER_NOTIFICATION\"]\r\n\r\n render() {\r\n console.log(this.state, this.props)\r\n let hasExternalNotify = (!this.props.extraProps.hideexternal && this.props.extraProps.NotificationType != 'SCHEDULED_NOTIFICATION' && !this.noExtNotification.includes(this.props.extraProps.EventOn)) ;\r\n let templabel = hasExternalNotify ? \"Internal\" : \"Internal\";\r\n return (\r\n <Fragment>\r\n\r\n <Paper>\r\n <FormHeader handleSave={this.handleSaveWithTemplate} savebutton={true} designprops={true} />\r\n <Tabs\r\n value={this.state.tabValue}\r\n onChange={this.handleChange}\r\n indicatorColor=\"primary\"\r\n textColor=\"primary\">\r\n <Tab label={templabel} />\r\n { hasExternalNotify && <Tab label=\"External\" />}\r\n </Tabs>\r\n <TabPanel className=\" col-sm-12 p-1\" value={this.state.tabValue} index={0}>\r\n <Typography className=\"\">\r\n {(this.props.extraProps.NotificationType === 'EVENT_NOTIFICATION' || this.props.extraProps.NotificationType === 'BUSINESS_RULES_NOTIFICATION') && <CFormCheckbox value={this.state.IsGrouped} handleFieldChange={this.handleIsGroupChange}\r\n name=\"IsGrouped\" transformProps={this.transformProps} label=\"Group Notifications\" checked=\"IsGrouped\" />}\r\n {(this.props.extraProps.NotificationType === 'EVENT_NOTIFICATION' || this.props.extraProps.NotificationType === 'BUSINESS_RULES_NOTIFICATION') && <div className=\"mt-2 pl-3\">\r\n <MultipleDropdown\r\n label=\"Select table(s)\"\r\n name=\"SideBarTables\"\r\n items={this.props.extraProps.sideBarTablesRecords}\r\n handleFieldValue={(e) => this.handlemultidropdown(e)}\r\n value={this.state.submoduleselectedtables || ''}\r\n extraProps={multitransformProps}\r\n ismulti={true}\r\n />\r\n </div>}\r\n <Template ref={this.TemplateForm} moduleId={this.props.extraProps.SubModuleKey}\r\n sitePermitTypeId={this.props.extraProps.SitePermitTypeId}\r\n handleTemplateId={this.handleInternalTemplateId}\r\n templateId={this.state.internalTemplateId}\r\n isadmin={true}\r\n hasSubject={true}\r\n fields={this.state.fields || []}\r\n sideBarTables={this.state.submoduleselectedtablesresults || []}\r\n />\r\n </Typography>\r\n </TabPanel>\r\n <TabPanel className=\" col-sm-12 p-1\" value={this.state.tabValue} index={1} >\r\n <Typography>\r\n <Template ref={this.TemplateForm} moduleId={this.props.extraProps.SubModuleKey}\r\n sitePermitTypeId={this.props.extraProps.SitePermitTypeId}\r\n handleTemplateId={this.handleExternalTemplateId}\r\n templateId={this.state.externalTemplateId}\r\n isadmin={true}\r\n hasSubject={true}\r\n fields={this.state.fields || []}\r\n sideBarTables={this.state.submoduleselectedtablesresults || []}\r\n />\r\n </Typography>\r\n </TabPanel>\r\n </Paper>\r\n </Fragment>\r\n )\r\n }\r\n}\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage }, dispatch);\r\n}\r\n\r\nNSTemplate = connect(null, mapActions)(NSTemplate)\r\nexport default withRouter(NSTemplate)","import AppBar from '@material-ui/core/AppBar';\r\nimport Box from '@material-ui/core/Box';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport Tabs from '@material-ui/core/Tabs';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport moment from 'moment';\r\nimport PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { bindActionCreators } from 'redux';\r\nimport { GetData, PostData, PutData } from '../../core/controls/helpers/requests';\r\nimport { snackbarMessage } from '../../core/actions';\r\nimport { getEnvVariable } from '../environmentalList';\r\nimport CFormDropDown from '../../core/modules/form/cformdropdown';\r\nimport FormHeader from '../../core/modules/form/cformheader';\r\nimport CFormSwitch from '../../core/modules/form/cformswitch';\r\nimport CFormTextBox from '../../core/modules/form/cformtextbox';\r\nimport CMulti from '../../core/modules/form/cmultiduallistbox2';\r\nimport Confirmation from '../../core/modules/form/confirmationdialog';\r\nimport Scheduler from '../../core/modules/form/cscheduler';\r\nimport nsComponents from '../../json/notificationsettings/nsComponents';\r\nimport NotificationEvents from './notificationevents';\r\nimport NsTemplate from './nstemplate';\r\nconst _ = require('lodash');\r\n\r\n\r\nconst transformProps = {\r\n \"value\": \"Id\",\r\n \"name\": \"Name\",\r\n \"key\": \"Id\"\r\n}\r\nconst submoduletransformProps = {\r\n \"value\": \"Key\",\r\n \"name\": \"DisplayName\",\r\n \"key\": \"Key\"\r\n}\r\nconst transformPropsWithKey = {\r\n \"value\": \"Key\",\r\n \"name\": \"Name\",\r\n \"key\": \"Key\"\r\n}\r\n\r\n//Updated By: vijaya. comments : Added Breadcrumbs.\r\nconst addbreadcrumbs = [\r\n { \"link\": \"Add Notification\", \"materialicon\": \"notifications_active\", className: 'eps-breadcrumb-item ', class: 'text-light' }\r\n]\r\nconst editbreadcrumbs = [\r\n { \"link\": \"Notification\", appendval: 'Name', \"materialicon\": \"notifications_active\", className: 'eps-breadcrumb-item ', class: 'text-light' }\r\n]\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 <Typography\r\n component=\"div\"\r\n role=\"tabpanel\"\r\n hidden={value !== index}\r\n id={`scrollable-force-tabpanel-${index}`}\r\n aria-labelledby={`scrollable-force-tab-${index}`}\r\n {...other}\r\n >\r\n {value === index && <Box p={3}>{children}</Box>}\r\n </Typography>\r\n );\r\n}\r\n\r\nTabPanel.propTypes = {\r\n children: PropTypes.node,\r\n index: PropTypes.any.isRequired,\r\n value: PropTypes.any.isRequired,\r\n};\r\n\r\nfunction a11yProps(index) {\r\n return {\r\n id: `scrollable-force-tab-${index}`,\r\n 'aria-controls': `scrollable-force-tabpanel-${index}`,\r\n };\r\n}\r\n\r\n// const styles = theme => ({\r\n// root: {\r\n// flexGrow: 1,\r\n// width: '100%',\r\n// backgroundColor: theme.palette.background.paper,\r\n// \"& .MuiTab-root\": {\r\n// 'text-transform': 'capitalize'\r\n// },\r\n// },\r\n// }));\r\n\r\nclass NS extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n sitesJson: [],\r\n regionsJson: [],\r\n notificationTypeJson: [],\r\n submoduleJson: [],\r\n showSubModule: false,\r\n sitePermitTypeJson: [],\r\n showSitePermitType: false,\r\n showSite: false,\r\n notificationEventOnJson: [],\r\n showEventOn: false,\r\n showEventDetailsButton: false,\r\n showScheduleNotitificationTemplateButton: false,\r\n showSchedulerButton: false,\r\n NotificationType: \"EVENT_NOTIFICATION\",\r\n SubModuleKey: null,\r\n SiteID: null,\r\n RegionId: null,\r\n SitePermitTypeId: 0,\r\n EventOn: null,\r\n BeforeDueDays: 0,\r\n results: { NotificationType: \"EVENT_NOTIFICATION\", Status: 'I' },\r\n Name: '',\r\n Description: '',\r\n Status: 'I',\r\n CreatedOn: '',\r\n CreatedBy: '',\r\n UpdatedOn: '',\r\n UpdatedBy: '',\r\n edit: false,\r\n editbutton: true,\r\n // duplicatebutton: true,\r\n // iseditduplicate: false,\r\n updateRecord: this.props.dataItem ? (!this.props.dataItem.ID ? false : true) : false,\r\n error_name: '',\r\n error_description: '',\r\n error_submodulekey: '',\r\n error_Sitepermittype: '',\r\n error_regionId: '',\r\n error_EventOn: '',\r\n disabled: this.props.dataItem ? (!this.props.dataItem.ID ? false : true) : false,\r\n value: 0,\r\n progresscomplete: false,\r\n checkresults: { NotificationType: \"EVENT_NOTIFICATION\", Status: 'I' },\r\n openconfirmation: false,\r\n compvalidation: null,\r\n hideeventrecipients: false,\r\n hideeventstabs: false,\r\n isapplicantcheck: true\r\n }\r\n this.nsComponentsArray = { ...nsComponents };\r\n this.schedulerPopup = this.nsComponentsArray.components.find(x => x.key == \"nsscheduler\");\r\n this.sitesPopup = this.nsComponentsArray.components.find(x => x.key == \"nssites\");\r\n this.eventTemplatePopup = this.nsComponentsArray.components.find(x => x.key == \"eventtemplate\");\r\n this.eventTemplatePopup = this.nsComponentsArray.components.find(x => x.key == \"eventtemplate\");\r\n this.recipientsPopup = this.nsComponentsArray.components.find(x => x.key == \"nsrecipients\");\r\n this.eventDetailsPopup = this.nsComponentsArray.components.find(x => x.key == \"nseventdetails\");\r\n this.statusJson = this.nsComponentsArray.components.find(x => x.key == \"nsstatus\").options;\r\n this.url1 = getEnvVariable('Notification') + `/api/Domains/values`;\r\n this.url2 = getEnvVariable('MasterAdmin') + `/api/module/` + getEnvVariable('ModuleKey') + `/submodule/All/Active/IsConfigurable`\r\n this.url3 = getEnvVariable('Admin') + `/api/Sites/` + getEnvVariable('ModuleKey') + `/All/Active`\r\n this.url4 = getEnvVariable('AdminConfig') + `/api/sitepermittypes/Sites/Active`\r\n this.url5 = getEnvVariable('Notification') + `/api/Domains/values`\r\n this.url6 = this.props.dataItem ? getEnvVariable('Notification') + `/api/NotificationSettings/${this.props.dataItem.ID}` : getEnvVariable('Notification') + `/api/NotificationSettings/${this.props.match.params.routeid}`\r\n this.url7 = getEnvVariable('Notification') + `/api/NotificationSettings/Update`\r\n this.url8 = getEnvVariable('Notification') + `/api/NotificationSettings/Add`\r\n this.scheduleReportsPopup = this.nsComponentsArray.components.find(x => x.key == \"nsschedulereportsbtn\")\r\n this.url9 = getEnvVariable('AdminConfig') + `/api/SitePermitTypes/Regions/Active`\r\n this.url10 = getEnvVariable('Admin') + `/api/Regions/` + getEnvVariable('ModuleKey') + `/All/Active`\r\n this.url11 = getEnvVariable('AdminConfig') + `/api/SitePermitTypes/SubModuleKey/Active`\r\n this.url12 = this.props.dataItem ? getEnvVariable('Notification') + `/api/NotificationRecipients/Recipient/${this.props.dataItem.ID}` : getEnvVariable('Notification') + `/api/NotificationRecipients/Recipient/${this.props.match.params.routeid}`\r\n }\r\n handleFieldChange = (event) => {\r\n if (event.target.name == 'NotificationType') {\r\n this.setState({\r\n [event.target.name]: event.target.value,\r\n showSubModule: (event.target.value == 'EVENT_NOTIFICATION' || event.target.value == 'BUSINESS_RULES_NOTIFICATION') ? true : false,\r\n showSitePermitType: (event.target.value == 'EVENT_NOTIFICATION' || event.target.value == 'BUSINESS_RULES_NOTIFICATION') ? true : false,\r\n showSite: (event.target.value == 'EVENT_NOTIFICATION' || event.target.value == 'BUSINESS_RULES_NOTIFICATION') ? true : true,\r\n showEventOn: (event.target.value == 'EVENT_NOTIFICATION') ? true : false,\r\n showEventDetailsButton: (event.target.value == 'BUSINESS_RULES_NOTIFICATION') ? false : true,//(event.target.value == 'EVENT_NOTIFICATION' || event.target.value == 'BUSINESS_RULES_NOTIFICATION') ? true : false,\r\n showScheduleNotitificationTemplateButton: (event.target.value == 'EVENT_NOTIFICATION' || event.target.value == 'BUSINESS_RULES_NOTIFICATION') ? false : true,\r\n showSchedulerButton: (event.target.value == 'EVENT_NOTIFICATION' || event.target.value == 'BUSINESS_RULES_NOTIFICATION') ? false : true,\r\n SubModuleKey: (event.target.value == 'EVENT_NOTIFICATION' || event.target.value == 'BUSINESS_RULES_NOTIFICATION') ? this.state.SubModuleKey : null,\r\n SitePermitTypeId: (event.target.value == 'EVENT_NOTIFICATION' || event.target.value == 'BUSINESS_RULES_NOTIFICATION') ? this.state.SitePermitTypeId : null,\r\n EventOn: (event.target.value == 'EVENT_NOTIFICATION' || event.target.value == 'BUSINESS_RULES_NOTIFICATION') ? this.state.EventOn : null,\r\n results: {\r\n ...this.state.results,\r\n [event.target.name]: event.target.value,\r\n SubModuleKey: (event.target.value == 'EVENT_NOTIFICATION' || event.target.value == 'BUSINESS_RULES_NOTIFICATION') ? this.state.SubModuleKey : '',\r\n Site: (event.target.value == 'EVENT_NOTIFICATION' || event.target.value == 'BUSINESS_RULES_NOTIFICATION') ? this.state.Site : 0,\r\n SitePermitTypeId: (event.target.value == 'EVENT_NOTIFICATION' || event.target.value == 'BUSINESS_RULES_NOTIFICATION') ? this.state.SitePermitTypeId : 0,\r\n EventOn: (event.target.value == 'EVENT_NOTIFICATION' || event.target.value == 'BUSINESS_RULES_NOTIFICATION') ? this.state.EventOn : null,\r\n }\r\n })\r\n }\r\n else if (event.target.name == 'SubModuleKey') {\r\n\r\n this.setState({\r\n [event.target.name]: event.target.value,\r\n showSitePermitType: (event.target.value == 'OWNERS') ? false : true,\r\n showSite: event.target.value == 'OWNERS' ? false : true,\r\n results: {\r\n ...this.state.results,\r\n [event.target.name]: event.target.value\r\n }\r\n }, () => {\r\n if (event.target && [event.target.name] == 'SubModuleKey')\r\n this.loadEventOn(this.state.SubModuleKey, '')\r\n this.loadSubModulePermitType(this.state.SubModuleKey, 0);\r\n })\r\n }\r\n else if (event.target.name == 'EventOn') {\r\n this.handleEventOn(event.target.value);\r\n this.setState({\r\n [event.target.name]: event.target.value,\r\n results: {\r\n ...this.state.results,\r\n [event.target.name]: event.target.value\r\n }\r\n })\r\n }\r\n else {\r\n if (event && event.persist) {\r\n event.persist();\r\n }\r\n\r\n this.setState({\r\n [event.target.name]: event.target.value,\r\n results: {\r\n ...this.state.results,\r\n [event.target.name]: event.target.value\r\n }\r\n }, () => {\r\n if (event.target && [event.target.name] == 'SiteID')\r\n this.loadSitePermitType(this.state.SiteID, 0);\r\n // if (event.target && [event.target.name] == 'RegionId')\r\n // this.loadRegionPermitType(this.state.RegionId, 0);\r\n if (event.target && [event.target.name] == 'SubModuleKey')\r\n this.loadEventOn(this.state.SubModuleKey, '')\r\n\r\n\r\n })\r\n }\r\n\r\n }\r\n handleEventOn = (targetVal) => {\r\n\r\n let val = false;\r\n\r\n switch (targetVal) {\r\n case \"APPLICATION_STATUS_CHANGE\":\r\n val = true;\r\n break;\r\n case \"FIELD_VALUE_CHANGE\":\r\n val = true;\r\n break;\r\n case \"PERMIT_STATUS_CHANGE\":\r\n val = true;\r\n break;\r\n case \"WORKFLOW_STATUS_CHANGE\":\r\n val = true;\r\n break;\r\n case \"RESOLUTION_STATUS\":\r\n val = true;\r\n break;\r\n default:\r\n val = false;\r\n break;\r\n }\r\n this.setState({\r\n showEventDetailsButton: val\r\n })\r\n\r\n this.changeEventDetailProps(targetVal);\r\n\r\n }\r\n\r\n changeEventDetailProps(targetVal) {\r\n if (targetVal == \"FIELD_VALUE_CHANGE\") {\r\n this.eventDetailsPopup = this.nsComponentsArray.components.find(x => x.key == \"nsapplicationeventdetails\");\r\n } else {\r\n this.eventDetailsPopup = this.nsComponentsArray.components.find(x => x.key == \"nseventdetails\");\r\n }\r\n console.log(this.eventDetailsPopup);\r\n }\r\n\r\n\r\n componentDidMount() {\r\n this.didmountinitialload();\r\n }\r\n didmountinitialload() {\r\n // this.progressBar.start()\r\n console.trace()\r\n\r\n this.fetchData('GET', this.url1, 'domainkey=NOTIFICATION_TYPE', null).then(data => this.setState({\r\n notificationTypeJson: data, progresscomplete: true\r\n }, () => {\r\n // this.progressBar.complete()\r\n }))\r\n this.fetchData('GET', this.url2, null, null).then(data => this.setState({\r\n submoduleJson: data\r\n }))\r\n this.fetchData('GET', this.url3, null, null).then(data => this.setState({\r\n sitesJson: data\r\n }))\r\n this.fetchData('GET', this.url10, null, null).then(data => this.setState({\r\n regionsJson: data\r\n }))\r\n //let updatedRecord = this.props.match.params.routeid && (this.props.match.params.routeid == 'add' ? false : true)\r\n if (this.state.updateRecord) { //|| updatedRecord\r\n this.fetchData('GET', this.url6, null, null).then(data => this.setState({\r\n Name: data.Name,\r\n Description: data.Description,\r\n NotificationType: data.NotificationType,\r\n SubModuleKey: data.SubModuleKey,\r\n SiteID: data.SiteID,\r\n RegionId: data.RegionId,\r\n SitePermitTypeId: data.SitePermitTypeId,\r\n EventOn: data.EventOn,\r\n Status: data.Status,\r\n CreatedOn: data.CreatedOn,\r\n CreatedBy: data.CreatedBy,\r\n checkresults: data,\r\n results: data,\r\n //results: data,\r\n // UpdatedByName: \"EPS Admin\",\r\n // UpdatedOn: \"2019-12-12T02:20:01.7772703\",\r\n // CreatedByName: \"EPS Admin\",\r\n // CreatedOn: \"2019-12-04T10:47:17.7690128\",\r\n showSubModule: (data.NotificationType == 'EVENT_NOTIFICATION' || data.NotificationType == 'BUSINESS_RULES_NOTIFICATION') ? true : false,\r\n showSite: (data.NotificationType == 'EVENT_NOTIFICATION' || data.NotificationType == 'BUSINESS_RULES_NOTIFICATION') ? true : false,\r\n showSitePermitType: (data.NotificationType == 'EVENT_NOTIFICATION' || data.NotificationType == 'BUSINESS_RULES_NOTIFICATION') ? true : false,\r\n showEventOn: (data.NotificationType == 'EVENT_NOTIFICATION') ? true : false,\r\n showEventDetailsButton: (data.NotificationType == 'BUSINESS_RULES_NOTIFICATION') ? false : true, //(data.NotificationType == 'EVENT_NOTIFICATION' || data.NotificationType == 'BUSINESS_RULES_NOTIFICATION') ? true : false,\r\n showScheduleNotitificationTemplateButton: (data.NotificationType == 'EVENT_NOTIFICATION' || data.NotificationType == 'BUSINESS_RULES_NOTIFICATION') ? false : true,\r\n showSchedulerButton: (data.NotificationType == 'EVENT_NOTIFICATION' || data.NotificationType == 'BUSINESS_RULES_NOTIFICATION') ? false : true,\r\n hideeventstabs: (data.NotificationType == 'BUSINESS_RULES_NOTIFICATION') ? true :\r\n (data.NotificationType == 'EVENT_NOTIFICATION') ? data.EventOn &&\r\n (data.EventOn == \"ATTACHMENTS_CHANGE\" || data.EventOn == \"IMAGES_CHANGES\" || data.EventOn == \"INSPECTIONS_CHANGE\" || data.EventOn == \"NOTES_CHANGE\" || data.EventOn == \"NOTICES_CHANGE\" || data.EventOn == \"WORK_NOTIFICATION\"\r\n || data.EventOn == \"SHARED_DISCUSSIONS_CHANGE\" || data.EventOn == 'REQUEST_EXCHANGE' || data.EventOn == 'REMOVAL_COMPLETE'\r\n || data.EventOn == 'INTERNAL_STATUS_TIMER_NOTIFICATION' || data.EventOn == 'APPEAL_STATUS_TIMER_NOTIFICATION' || data.EventOn == 'EXTERNAL_STATUS_TIMER_NOTIFICATION'\r\n || data.EventOn == 'RW_STATUS_TIMER_NOTIFICATION')\r\n ? true : false : false,\r\n hideeventrecipients: (data.NotificationType == 'EVENT_NOTIFICATION') ? (data.EventOn && (data.EventOn == 'ROUTING_NOTIFICATION' || data.EventOn == 'WORKFLOW_DUE_DATE') ? true : false) : false\r\n //showSitePermitType: data.SubModuleKey == 'OWNERS' ? false : true,\r\n //showSite: data.SubModuleKey == 'OWNERS' ? false : true\r\n }, () => {\r\n if (this.state.SiteID > 0)\r\n this.loadSitePermitType(this.state.SiteID, data.SitePermitTypeId);\r\n if (this.state.SubModuleKey != \"\") {\r\n this.loadSubModulePermitType(this.state.SubModuleKey, data.SitePermitTypeId);\r\n this.loadEventOn(this.state.SubModuleKey, data.EventOn)\r\n this.loadSideBarTables(data.SubModuleKey);\r\n }\r\n if (!this.state.hideeventrecipients) {\r\n this.callRecipients()\r\n }\r\n\r\n\r\n }))\r\n }\r\n else {\r\n\r\n this.setState({\r\n showSubModule: true,\r\n showSitePermitType: true,\r\n showEventOn: (this.state.NotificationType == 'BUSINESS_RULES_NOTIFICATION') ? false : true,\r\n showEventDetailsButton: (this.state.NotificationType == 'BUSINESS_RULES_NOTIFICATION') ? false : true,\r\n showScheduleNotitificationTemplateButton: false,\r\n showSchedulerButton: false,\r\n })\r\n }\r\n }\r\n\r\n callRecipients = () => {\r\n this.fetchData('GET', this.url12, null, null).then(data => {\r\n this.setState({\r\n isapplicantcheck: data && data.notificationToApplicantOwner && data.notificationToApplicantOwner == 'Y' ? true : false\r\n })\r\n })\r\n }\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevProps.dataItem != this.props.dataItem) {\r\n //this.progressBar.complete();\r\n this.setState({ value: 0 })\r\n this.url6 = this.props.dataItem ? getEnvVariable('Notification') + `/api/NotificationSettings/${this.props.dataItem.ID}` : getEnvVariable('Notification') + `/api/NotificationSettings/${this.props.match.params.routeid}`\r\n this.didmountinitialload();\r\n }\r\n }\r\n\r\n loadSitePermitType = (siteId, selectedId) => {\r\n this.fetchData('GET', `${this.url4}/${siteId}`, null, null)\r\n .then(data => {\r\n this.setState({\r\n sitePermitTypeJson: data,\r\n SitePermitTypeId: selectedId\r\n })\r\n\r\n })\r\n }\r\n\r\n\r\n loadSideBarTables(submodulekey) {\r\n if (submodulekey) {\r\n this.fetchData('GET', getEnvVariable('Application') + `/api/SubModuleSideBar/All/${submodulekey}`, null, null)\r\n .then(data => {\r\n if (data && Array.isArray(data)) {\r\n let tabls = data.map(a => ({ id: a.Id, name: a.TableName, value: a.Id }))\r\n this.setState({\r\n sideBarTablesRecords: tabls\r\n })\r\n }\r\n })\r\n }\r\n }\r\n\r\n loadRegionPermitType = (regionId, selectedId) => {\r\n this.fetchData('GET', `${this.url9}/${regionId}`, null, null)\r\n\r\n .then(data => {\r\n\r\n this.setState({\r\n sitePermitTypeJson: data,\r\n SitePermitTypeId: selectedId\r\n })\r\n //this.progressBar.complete();\r\n })\r\n }\r\n\r\n loadSubModulePermitType = (SubModuleKey, selectedId) => {\r\n this.fetchData('GET', `${this.url11}/${SubModuleKey}`, null, null)\r\n .then(data => {\r\n let notificationType = this.state.NotificationType\r\n let defaultrecord = _.find(data, { 'IsDefault': 'Y' });\r\n let id = defaultrecord && defaultrecord.Id && this.state.updateRecord == false ? defaultrecord.Id : this.state.SitePermitTypeId\r\n this.setState({\r\n sitePermitTypeJson: data,\r\n SitePermitTypeId: id,\r\n showSitePermitType: (notificationType == 'EVENT_NOTIFICATION' || notificationType == 'BUSINESS_RULES_NOTIFICATION') ? true : false,\r\n results: { ...this.state.results, SitePermitTypeId: id }\r\n })\r\n })\r\n }\r\n\r\n\r\n\r\n loadEventOn = (SubModuleKey, selectedKey) => {\r\n //added type\r\n this.fetchData('GET', this.url5, `domainkey=NOTIFICATION_ONEVENT&type=${SubModuleKey}`, null)\r\n .then(data => {\r\n let jsn = {};\r\n switch (SubModuleKey) {\r\n case 'APPLICATIONS':\r\n jsn = data.filter(x => x.Type && x.Type.indexOf('APPLICATIONS') !== -1);\r\n break;\r\n case 'INQUIRY':\r\n jsn = data.filter(x => x.Type && x.Type.indexOf('INQUIRY') !== -1);\r\n break;\r\n case 'RECYCLERS':\r\n jsn = data.filter(x => x.Type && x.Type.indexOf('RECYCLERS') !== -1);\r\n break;\r\n case 'OUTDOOR':\r\n jsn = data.filter(x => x.Type && x.Type.indexOf('OUTDOOR') !== -1);\r\n break;\r\n case 'ENCROACHMENTS':\r\n jsn = data.filter(x => x.Type && x.Type.indexOf('ENCROACHMENTS') !== -1);\r\n break;\r\n case 'VIOLATIONS':\r\n jsn = data.filter(x => x.Type && x.Type.indexOf('VIOLATIONS') !== -1);\r\n break;\r\n case 'PERMITS':\r\n jsn = data.filter(x => x.Type == 'Permits');\r\n break;\r\n case 'OWNERS':\r\n jsn = data.filter(x => x.Type == 'Owners');\r\n break;\r\n case 'COLLISION':\r\n jsn = data.filter(x => x.Type == 'COLLISION');\r\n break;\r\n case 'INVESTIGATION':\r\n jsn = data.filter(x => x.Type == 'INVESTIGATION');\r\n break;\r\n default:\r\n break;\r\n }\r\n let defaultrecord = selectedKey\r\n if (jsn && jsn.length > 0) {\r\n defaultrecord = _.find(jsn, { 'IsDefault': 'Y' });\r\n defaultrecord = defaultrecord && this.state.updateRecord == false ? defaultrecord.Key : selectedKey\r\n }\r\n\r\n this.setState({\r\n notificationEventOnJson: jsn,\r\n EventOn: defaultrecord,\r\n results: { ...this.state.results, EventOn: defaultrecord }\r\n }, () => {\r\n this.changeEventDetailProps(this.state.EventOn)\r\n })\r\n })\r\n }\r\n\r\n handleStatusChange = (event) => {\r\n const status = this.statusJson.transformProps ? this.statusJson.transformProps[event.target.checked] : event.target.checked;\r\n this.setState({\r\n Status: status,\r\n results: {\r\n ...this.state.results,\r\n \"Status\": status\r\n }\r\n })\r\n }\r\n\r\n // componentWillUnmount() {\r\n // this.setState({ updateRecord: false })\r\n // }\r\n\r\n validate = () => {\r\n const { results } = this.state\r\n let error_name = true;\r\n // let error_description = true;\r\n let error_submodulekey = true;\r\n let error_siteID = false;\r\n let error_regionId = true;\r\n let error_Sitepermittype = false;\r\n let error_EventOn = true;\r\n if (results.NotificationType === \"EVENT_NOTIFICATION\") {\r\n if (results && results.Name) {\r\n error_name = false\r\n }\r\n // if (results && results.Description) {\r\n // error_description = false\r\n // }\r\n if (results && results.SubModuleKey) {\r\n error_submodulekey = false\r\n }\r\n if (results.SubModuleKey !== 'OWNERS') {\r\n if (results && results.SiteID) {\r\n error_siteID = false\r\n }\r\n // if (results && results.RegionId) {\r\n // error_regionId = false\r\n // }\r\n if (results && results.SitePermitTypeId) {\r\n error_Sitepermittype = false\r\n }\r\n } else {\r\n //Owners will not have region selection and permit type selction\r\n //error_regionId = false;\r\n error_Sitepermittype = false;\r\n }\r\n\r\n if (results && results.EventOn) {\r\n error_EventOn = false\r\n }\r\n if (error_name || error_submodulekey || error_Sitepermittype || error_EventOn) {\r\n this.setState({ error_name: error_name, error_submodulekey: error_submodulekey, error_Sitepermittype: error_Sitepermittype, error_EventOn: error_EventOn, helperText: \"Field is required\" }, () => {\r\n })\r\n }\r\n else {\r\n this.setState({ error_name: error_name, error_submodulekey: error_submodulekey, error_Sitepermittype: error_Sitepermittype, error_EventOn: error_EventOn });\r\n return true;\r\n }\r\n }\r\n else {\r\n if (results && results.Name) {\r\n error_name = false\r\n }\r\n // if (results && results.Description) {\r\n // error_description = false\r\n // }\r\n if (results && results.SiteID) {\r\n error_siteID = false\r\n }\r\n\r\n if (error_name || error_siteID) {\r\n this.setState({ error_name: error_name, error_siteID: error_siteID, helperText: \"Field is required\" }, () => {\r\n })\r\n }\r\n else {\r\n this.setState({ error_name: error_name, error_siteID: error_siteID });\r\n return true;\r\n }\r\n }\r\n\r\n\r\n }\r\n handleBack = (e, closeconfirmation, stayInSamePage) => {\r\n let unsavedchanges = !(_.isEqual(this.state.results, this.state.checkresults))\r\n if (!closeconfirmation && !stayInSamePage && !this.state.duplicatebutton && this.state.iseditduplicate) {\r\n this.setState({ openconfirmation: true })\r\n }\r\n else if (stayInSamePage && !this.state.duplicatebutton && this.state.isduplicate) {\r\n this.setState({ openconfirmation: false })\r\n }\r\n else if (unsavedchanges && !closeconfirmation && !stayInSamePage) {\r\n this.setState({ openconfirmation: true })\r\n }\r\n else if (unsavedchanges && stayInSamePage) {\r\n this.setState({ openconfirmation: false })\r\n }\r\n else {\r\n this.props.onClose()\r\n let pathname = this.props.location.pathname\r\n if (this.props && this.props.match && this.props.match.params && this.props.match.params.Id) {\r\n this.props.match.params.Id = undefined\r\n pathname = pathname.substring(0, pathname.lastIndexOf(\"/\"))\r\n }\r\n this.props.onClose()\r\n this.props.history.push(pathname)\r\n }\r\n }\r\n handleSave = (event, duplicaterecord) => {\r\n //this.progressBar.start()\r\n const { results } = this.state\r\n console.log(this.state.results);\r\n let validatestatus = this.validate();\r\n let finalresults = duplicaterecord ? { ...this.state.results, IsDuplicate: \"Y\" } : this.state.results\r\n if (validatestatus) {\r\n if (this.state.updateRecord && !duplicaterecord) {\r\n this.fetchData('PUT', this.url7, null, this.state.results)\r\n .then(data => {\r\n // this.props.onClose();\r\n // this.progressBar.complete()\r\n this.setState({\r\n results: data,\r\n checkresults: data,\r\n edit: false,\r\n editbutton: true,\r\n // duplicatebutton: true,\r\n\r\n })\r\n }).catch(errors => {\r\n console.log(errors)\r\n errors.then(err => {\r\n if (err['Name']) {\r\n this.setState({ error_name: err['Name'][0], helperText: err['Name'][0] });\r\n }\r\n if (err['Description']) {\r\n this.setState({ error_description: err['Description'][0], helperText1: err['Description'][0] });\r\n }\r\n })\r\n })\r\n }\r\n else {\r\n this.fetchData('POST', this.url8, null, finalresults)\r\n .then(data => {\r\n let pathname = this.props.location.pathname\r\n if (duplicaterecord) {\r\n let final = pathname.substring(0, pathname.lastIndexOf(\"/\"))\r\n pathname = final\r\n }\r\n else if (this.state.results && this.state.results.IsDuplicate == 'Y' && data && this.props && this.props.match && this.props.match.params && data.ID) {\r\n this.props.match.params.Id = data.ID\r\n let final = pathname.substring(0, pathname.lastIndexOf(\"/\"))\r\n pathname = final + '/' + this.props.match.params.Id\r\n }\r\n else if (data && this.props && this.props.match && this.props.match.params && data.ID) {\r\n this.props.match.params.Id = data.ID\r\n pathname = pathname + '/' + this.props.match.params.Id\r\n }\r\n\r\n this.props.history.push(pathname);\r\n this.props.onClose();\r\n // this.progressBar.complete()\r\n this.setState({\r\n results: data,\r\n checkresults: data,\r\n edit: false,\r\n editbutton: true,\r\n // duplicatebutton: true,\r\n updateRecord: true,\r\n disabled: true\r\n }, () => {\r\n this.props.history.push('/administration/notificationsettings/' + data.ID)\r\n })\r\n }).catch(errors => {\r\n console.log(errors)\r\n errors.then(err => {\r\n if (err['Name']) {\r\n this.setState({ error_name: err['Name'][0], helperText: err['Name'][0] });\r\n }\r\n if (err['Description']) {\r\n this.setState({ error_description: err['Description'][0], helperText1: err['Description'][0] });\r\n }\r\n })\r\n })\r\n }\r\n }\r\n else {\r\n this.props.snackbarMessage('Please verify information', 'error')\r\n\r\n }\r\n\r\n }\r\n\r\n fetchData(requestType, url, queryParam, body) {\r\n const queryStr = queryParam != null ? `${url}?${queryParam}` : `${url}`\r\n if (requestType == \"GET\") {\r\n return GetData(queryStr);\r\n }\r\n else if (requestType == \"POST\") {\r\n return PostData(queryStr, body);\r\n }\r\n else if (requestType == \"PUT\")\r\n return PutData(queryStr, body);\r\n\r\n }\r\n\r\n handleEdit = (e, duplicate) => {\r\n if (duplicate) {\r\n this.setState({ edit: true, editbutton: false, duplicatebutton: false, iseditduplicate: true })\r\n }\r\n else {\r\n this.setState({ edit: true, editbutton: false, duplicatebutton: false })\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n handleChange = (event, newValue) => {\r\n let hideval = this.state.hideeventstabs ? 2 : this.state.hideeventrecipients ? 1 : 3\r\n if (newValue == hideval) {\r\n this.setState({ value: newValue }, () => this.callRecipients())\r\n }\r\n else {\r\n this.setState({ value: newValue })\r\n }\r\n\r\n };\r\n\r\n render() {\r\n const { compmap, onFullScreen, onExitFullScreen, fullscreen, exitfullscreen, onNextItemClick, onPrevItemClick } = this.props;\r\n const { editbutton, duplicatebutton, iseditduplicate, updateRecord, error_name, error_description, error_submodulekey, error_Sitepermittype, error_regionId, error_EventOn, helperText, helperText1, disabled, value } = this.state;\r\n let edit = updateRecord ? this.state.edit : true\r\n return (\r\n <div style={{ height: window.innerHeight - 50 }}>\r\n {!updateRecord && <FormHeader title=\"Notifications\" handleSave={this.handleSave} handleEdit={this.handleEdit} editbutton={updateRecord ? editbutton : false} savebutton={edit ? true : false} breadcrumbs={addbreadcrumbs} backbutton={true} handleBack={this.handleBack} onFullScreen={onFullScreen} onExitFullScreen={onExitFullScreen} fullscreen={fullscreen} exitfullscreen={exitfullscreen} />}\r\n {updateRecord && <FormHeader title=\"Notifications\" breadcrumbs={editbreadcrumbs} backbutton={true} handleBack={this.handleBack} dataItem={this.props.dataItem} onFullScreen={onFullScreen} onExitFullScreen={onExitFullScreen} fullscreen={fullscreen} exitfullscreen={exitfullscreen} navigateup={true} navigatedown={true} onNextItemClick={onNextItemClick} onPrevItemClick={onPrevItemClick} rowrenderedslide={this.props.rowrenderedslide} />}\r\n\r\n {updateRecord && <AppBar position=\"static\" color=\"white\">\r\n <Tabs\r\n value={value}\r\n onChange={this.handleChange}\r\n indicatorColor=\"primary\"\r\n textColor=\"primary\"\r\n variant=\"scrollable\"\r\n scrollButtons=\"on\"\r\n aria-label=\"scrollable auto tabs example\"\r\n >\r\n <Tab label=\"View/Edit Notification\" {...a11yProps(0)} />\r\n {this.state.progresscomplete && this.state.showEventDetailsButton && !this.state.showSchedulerButton && !this.state.hideeventstabs && !this.state.hideeventrecipients && <Tab label=\"Event Details\" {...a11yProps(1)} />}\r\n {this.state.progresscomplete && this.state.showSchedulerButton && <Tab label=\"Schedule\" {...a11yProps(2)} />}\r\n {this.state.progresscomplete && !this.state.hideeventrecipients && <Tab label=\"Recipients\" {...a11yProps(3)} />}\r\n {this.state.progresscomplete && <Tab label=\"Notification Template\" {...a11yProps(4)} />}\r\n {/* {this.state.progresscomplete && this.state.showEventDetailsButton && <Tab label=\"Event Details\" {...a11yProps(4)} />} */}\r\n </Tabs>\r\n </AppBar>}\r\n {this.state.openconfirmation && <Confirmation open={this.state.openconfirmation} handleBack={this.handleBack} />}\r\n <TabPanel value={value} index={0}>\r\n {updateRecord && <FormHeader handleSave={this.handleSave} handleEdit={this.handleEdit} editbutton={updateRecord ? editbutton : false} duplicatebutton={updateRecord ? duplicatebutton : false} iseditduplicate={iseditduplicate} savebutton={edit ? true : false} designprops={true} hasclearfix={true} />}\r\n <div className=\"col-12 m-4\">\r\n <div className=\"row col pt-1 \">\r\n <div className=\"col-md-12 pb-2 pl-1\">\r\n <CFormTextBox value={this.state.Name} name=\"Name\" label=\"Notification Name\"\r\n handleFieldChange={this.handleFieldChange} edit={edit} required={true} error={error_name} helperText={error_name && helperText} />\r\n </div>\r\n <div className=\"col-md-12 pb-2 pl-1\">\r\n <CFormTextBox value={this.state.Description} name=\"Description\" label=\"Description\" error={error_description} helperText={error_description && helperText1} multiline={true} rows=\"4\"\r\n handleFieldChange={this.handleFieldChange} edit={edit} />\r\n </div>\r\n\r\n </div>\r\n <div className=\"row col\">\r\n <div className=\"col-md-12 pb-2 pl-1\">\r\n <CFormDropDown value={this.state.NotificationType} disabled={this.state.disabled} dropdownvalues={this.state.notificationTypeJson}\r\n name=\"NotificationType\" label=\"Notification Type\" transformProps={transformPropsWithKey} handleFieldChange={this.handleFieldChange} edit={edit} />\r\n </div>\r\n </div>\r\n <div className=\"row col\">\r\n {this.state.showSubModule ? (<div className=\"col-md-12 pb-2 pl-1\"><CFormDropDown value={this.state.SubModuleKey} disabled={this.state.disabled} dropdownvalues={this.state.submoduleJson}\r\n name=\"SubModuleKey\" label=\"Sub Module\" transformProps={submoduletransformProps} handleFieldChange={this.handleFieldChange} edit={edit} required={true} error={error_submodulekey} helperText={error_submodulekey && helperText} />\r\n </div>) : (\"\")}\r\n\r\n\r\n {this.state.showSitePermitType ? (<div className=\"col-md-12 pb-2 pl-1\"><CFormDropDown value={this.state.SitePermitTypeId} disabled={this.state.disabled} dropdownvalues={this.state.sitePermitTypeJson}\r\n name=\"SitePermitTypeId\" label=\"Application Type\" transformProps={transformProps} handleFieldChange={this.handleFieldChange} edit={edit} required={false} error={error_Sitepermittype} helperText={error_Sitepermittype && helperText} />\r\n </div>) : (\"\")}\r\n </div>\r\n <div className=\"row col\">\r\n {this.state.showEventOn ?\r\n (<div className={updateRecord ? \"col-md-12 pb-2 pl-1\" : \"col-md-12 pb-2 pl-1\"}>\r\n <CFormDropDown value={this.state.EventOn} disabled={this.state.disabled} dropdownvalues={this.state.notificationEventOnJson}\r\n name=\"EventOn\" label=\"Event On\" transformProps={transformPropsWithKey} handleFieldChange={this.handleFieldChange} edit={edit} required={true} error={error_EventOn} helperText={error_EventOn && helperText} />\r\n </div>) : (\"\")}\r\n </div>\r\n <div className=\"row col\">\r\n <div className=\"col-md-4 pb-2 pl-1\">\r\n {this.state.showEventOn && (this.state.EventOn === 'WORKFLOW_Due_Date' || this.state.EventOn === 'CONSTRUCTION_WINDOW') && <CFormTextBox value={this.state.BeforeDueDays}\r\n name=\"BeforeDueDays\" label=\"Before Due Days\" xtype=\"number\" InputProps={{ min: 1 }} handleFieldChange={this.handleFieldChange} edit={edit} />}\r\n </div>\r\n </div>\r\n <div className=\"col pl-1\">\r\n {this.state.updateRecord && <CFormSwitch {...this.statusJson} handleFieldChange={this.handleStatusChange} value={this.state.Status} edit={edit} />}\r\n </div>\r\n <div className=\"row col pt-1\">\r\n </div>\r\n {updateRecord && <div className=\"row pt-3 pl-1\">\r\n <div className=\"col-sm-6 pb-3\" style={{ color: '#6C757D', fontSize: '12px' }}><span style={{ color: '#6C757D' }}>Created By : </span> {this.state.results.CreatedByName}</div>\r\n <div className=\"col-sm-6 pb-3\" style={{ color: '#6C757D', fontSize: '12px' }}><span style={{ color: '#6C757D' }}>Created On : </span> {moment(this.state.results.CreatedOn).format('MM/DD/YYYY hh:mm:ss A')}</div>\r\n {this.state.results.UpdatedBy === null ? ('') : (<div className=\"col-sm-6 pb-3\" style={{ color: '#6C757D', fontSize: '12px' }}><span style={{ color: '#6C757D' }}>Updated By : </span> {this.state.results.UpdatedByName}</div>)}\r\n {this.state.results.UpdatedOn === null ? ('') : (<div className=\"col-sm-6 pb-3\" style={{ color: '#6C757D', fontSize: '12px' }}><span style={{ color: '#6C757D' }}>Updated On : </span> {moment(this.state.results.UpdatedOn).format('MM/DD/YYYY hh:mm:ss A')}</div>)}\r\n </div>}\r\n </div>\r\n </TabPanel>\r\n <TabPanel value={value} index={(this.state.hideeventstabs || this.state.showSchedulerButton || this.state.hideeventrecipients) ? 5 : 1}>\r\n <div className=\"col-md-12 m-4\">\r\n {this.state.showEventDetailsButton && this.state.updateRecord && <NotificationEvents compmap={compmap} {...this.eventDetailsPopup} edit={edit} eventOn={this.state.EventOn} extraProps={{ SitePermitTypeId: this.state.SitePermitTypeId }} dataItem={this.props.dataItem} />}\r\n </div>\r\n {/* <div className=\"col-md-12\">\r\n {this.state.showSchedulerButton && this.state.updateRecord && <Scheduler compmap={compmap} {...this.schedulerPopup} dataItem={this.props.dataItem} edit={edit} />}\r\n </div> */}\r\n </TabPanel>\r\n <TabPanel value={value} index={this.state.hideeventstabs ? 5 : this.state.showSchedulerButton ? 1 : 2}>\r\n {/* <div className=\"col-md-12\">\r\n {this.state.showEventDetailsButton && this.state.updateRecord && <NotificationEvents compmap={compmap} {...this.eventDetailsPopup} edit={edit} eventOn={this.state.EventOn} extraProps={{ SitePermitTypeId: this.state.SitePermitTypeId }} dataItem={this.props.dataItem} />}\r\n </div> */}\r\n <div className=\"col-md-12\">\r\n {this.state.showSchedulerButton && this.state.updateRecord && <Scheduler handleFieldValue={this.handleFieldChange} compmap={compmap} {...this.schedulerPopup} dataItem={this.props.dataItem} edit={edit} />}\r\n </div>\r\n </TabPanel>\r\n <TabPanel value={value} index={this.state.hideeventstabs ? 1 : this.state.showSchedulerButton ? 2 : 2}>\r\n <div className=\"col-12 m-4\">\r\n {this.state.updateRecord && <CMulti compmap={compmap} {...this.recipientsPopup} edit={edit} dataItem={this.props.dataItem} notificationtype={this.state.NotificationType} />}\r\n </div>\r\n </TabPanel>\r\n <TabPanel value={value} index={this.state.hideeventstabs ? 2 : this.state.hideeventrecipients ? 1 : 3}>\r\n <div className=\"col-12 m-4\">\r\n {this.state.updateRecord && <NsTemplate compmap={compmap} {...this.eventTemplatePopup}\r\n extraProps={{\r\n SubModuleKey: this.state.SubModuleKey,\r\n SitePermitTypeId: this.state.SitePermitTypeId,\r\n NotificationType: this.state.NotificationType,\r\n sideBarTablesRecords: this.state.sideBarTablesRecords || [],\r\n EventOn: this.state.EventOn,\r\n hideexternal: !(this.state.isapplicantcheck)\r\n }} edit={edit}\r\n dataItem={this.props.dataItem} />}\r\n </div>\r\n </TabPanel>\r\n {/* <TabPanel value={value} index={4}>\r\n <div className=\"col-md-12\">\r\n {this.state.showEventDetailsButton && this.state.updateRecord && <NotificationEvents compmap={compmap} {...this.eventDetailsPopup} edit={edit} eventOn={this.state.EventOn} extraProps={{ SitePermitType: this.state.SitePermitType }} dataItem={this.props.dataItem} />}\r\n </div>\r\n <div className=\"col-md-12\">\r\n {this.state.showSchedulerButton && this.state.updateRecord && <CPopUp compmap={compmap} {...this.schedulerPopup} edit={edit} />}\r\n </div>\r\n </TabPanel> */}\r\n </div>\r\n // </div>\r\n\r\n )\r\n }\r\n}\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage }, dispatch);\r\n}\r\n\r\nNS = connect(null, mapActions)(NS)\r\n//export default withStyles(styles)(withRouter(NS))\r\nexport default withRouter(NS)","import React from 'react';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport Button from '@material-ui/core/Button';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport MuiDialogTitle from '@material-ui/core/DialogTitle';\r\nimport MuiDialogContent from '@material-ui/core/DialogContent';\r\nimport MuiDialogActions from '@material-ui/core/DialogActions';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Icon from '@material-ui/core/Icon';\r\n\r\nconst DialogTitle = withStyles(theme => ({\r\n root: {\r\n borderBottom: `1px solid ${theme.palette.divider}`,\r\n margin: 0,\r\n padding: theme.spacing(2),\r\n },\r\n closeButton: {\r\n position: 'absolute',\r\n right: theme.spacing(1),\r\n top: theme.spacing(1),\r\n color: theme.palette.grey[500],\r\n },\r\n}))(props => {\r\n const { children, classes, onClose } = props;\r\n return (\r\n <MuiDialogTitle disableTypography className={classes.root}>\r\n <Typography variant=\"h6\">{children}</Typography>\r\n {onClose ? (\r\n <IconButton aria-label=\"Close\" className={classes.closeButton} onClick={onClose}>\r\n <CloseIcon />\r\n </IconButton>\r\n ) : null}\r\n </MuiDialogTitle>\r\n );\r\n});\r\n\r\nconst DialogContent = withStyles(theme => ({\r\n root: {\r\n margin: 0,\r\n padding: theme.spacing(1) * 2,\r\n },\r\n}))(MuiDialogContent);\r\n\r\nconst DialogActions = withStyles(theme => ({\r\n root: {\r\n borderTop: `1px solid ${theme.palette.divider}`,\r\n margin: 0,\r\n padding: theme.spacing(1),\r\n },\r\n}))(MuiDialogActions);\r\n\r\nclass NsPopUp extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n }\r\n state = {\r\n open: false,\r\n };\r\n\r\n handleClickOpen = () => {\r\n this.setState({\r\n open: true,\r\n });\r\n };\r\n\r\n handleClose = () => {\r\n this.setState({ open: false });\r\n };\r\n\r\n render() {\r\n const { options, type, actions, compmap, components, parentProps, edit } = this.props;\r\n const { id, name, dialogtitle, buttonprops, dialogprops, ...otherOptions } = options ? options : {}\r\n const { text, icon, color, disabled, size, variant, ...otherButtonProps } = buttonprops ? buttonprops : {}\r\n let iconname, iconColor, iconFontSize, iconposition, otherIconProps\r\n if (icon) {\r\n iconname = icon.iconname\r\n iconColor = icon.iconColor\r\n iconFontSize = icon.iconFontSize\r\n }\r\n let closefunc\r\n if (type !== 'confirmationpopupbutton') closefunc = { onClose: this.handleClose }\r\n let disable = disabled\r\n if (edit === false) {\r\n disable = true\r\n }\r\n return (\r\n <div>\r\n <Button onClick={this.handleClickOpen}\r\n color={color || 'default'}\r\n disabled={disable}\r\n size={size}\r\n variant={variant}\r\n {...otherButtonProps}\r\n >\r\n {text}\r\n {(iconposition === 'left') && <Icon\r\n color={iconColor || 'inherit'} fontSize={iconFontSize || 'default'} {...otherIconProps}>{iconname}\r\n </Icon>\r\n }\r\n {iconposition && !(iconposition === 'left') && <Icon\r\n color={iconColor || 'inherit'} fontSize={iconFontSize || 'default'} {...otherIconProps}>{iconname}\r\n </Icon>\r\n }\r\n\r\n </Button>\r\n <Dialog\r\n aria-labelledby={id || name}\r\n open={this.state.open}\r\n fullWidth\r\n {...dialogprops}\r\n {...closefunc}\r\n >\r\n {dialogtitle && <DialogTitle id={id} onClose={this.handleClose}>\r\n {dialogtitle}\r\n </DialogTitle>}\r\n <DialogContent {...otherOptions}>\r\n {components && components.map(each => {\r\n const EachComp = compmap[each.type]\r\n return <EachComp {...each} key={each.key} {...this.props} compmap={compmap} onClose={this.handleClose} />\r\n })}\r\n </DialogContent>\r\n </Dialog>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default NsPopUp;\r\n","\r\nexport const RadioList = {\r\n 'AMES': [{ value: 'C', label: 'Applicant', Title: 'Applicant' },\r\n { value: 'I', label: 'Individual', Title: 'Individual' },\r\n { value: 'T', label: 'Consultant', Title: 'Applicant' }],\r\n 'WRS': [{ value: 'C', label: 'Applicant', Title: 'Applicant' },\r\n { value: 'I', label: 'Individual', Title: 'Individual' },\r\n { value: 'T', label: 'Consultant', Title: 'Applicant' }],\r\n 'Other': [{ value: 'C', label: 'Company', Title: 'Company' },\r\n { value: 'I', label: 'Individual', Title: 'Individual' },\r\n { value: 'T', label: 'Consultant', Title: 'Consultant' }]\r\n}","import React from 'react';\r\nimport { getEnvVariable } from '../environmentalList';\r\nimport { RadioList } from './CompanyTypeDrop';\r\n\r\n\r\nfunction Heading(props) {\r\n return (\r\n <h6 className=\"py-3 fw-bold text-dark\" >\r\n {props.CompanyType ? ((RadioList[getEnvVariable('ModuleKey')] || RadioList['Other']).find(each => { return each.value === props.CompanyType }) || {}).Title +\r\n ' Company Information' : props.subheading}\r\n </h6>\r\n );\r\n}\r\n\r\nexport default Heading","import Button from '@material-ui/core/Button';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport MobileStepper from '@material-ui/core/MobileStepper';\r\nimport Radio from '@material-ui/core/Radio';\r\nimport RadioGroup from '@material-ui/core/RadioGroup';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport KeyboardArrowLeft from '@material-ui/icons/KeyboardArrowLeft';\r\nimport KeyboardArrowRight from '@material-ui/icons/KeyboardArrowRight';\r\nimport React, { Component } from 'react';\r\nimport { getEnvVariable } from '../environmentalList';\r\nimport Heading from './heading';\r\nconst styles = {\r\n root: {\r\n maxWidth: window.innerwidth,\r\n flexGrow: 1,\r\n },\r\n};\r\n\r\nconst RadioList = {\r\n 'AMES': [{ value: 'C', label: 'Applicant', Title: 'Applicant' }], // { value: 'T', label: 'Consultant', Title: 'Applicant' }\r\n 'Other': [{ value: 'C', label: 'Company', Title: 'Applicant' },\r\n { value: 'T', label: 'Consultant', Title: 'Applicant' }]\r\n}\r\n\r\nexport class AccountType extends Component {\r\n state = {\r\n activeStep: 0,\r\n };\r\n\r\n continue = e => {\r\n e.preventDefault();\r\n this.props.nextStep();\r\n };\r\n\r\n back = e => {\r\n e.preventDefault();\r\n this.props.prevStep();\r\n };\r\n\r\n\r\n render() {\r\n const { values, classes, handleChange } = this.props;\r\n return (<div className=\"col-sm-12\">\r\n <FormControl component=\"fieldset\"> {RadioList && RadioList[getEnvVariable('ModuleKey')].length > 1 && <Heading subheading='Please Select Account Type' />}<br />\r\n <RadioGroup aria-label=\"AccounType\" name=\"AccounType\" value={values.CompanyType} onChange={handleChange(\"CompanyType\")} >\r\n {(RadioList[getEnvVariable('ModuleKey')] || RadioList['Other']).map((each, index) => {\r\n return <FormControlLabel key={index} value={each.value} control={<Radio />} label={each.label} />\r\n })}\r\n </RadioGroup> </FormControl>\r\n <div className=\"row\">\r\n <MobileStepper className={classes.root} variant=\"dots\" steps={4}\r\n position='static' activeStep={this.state.activeStep}\r\n nextButton={<Button size=\"small\" onClick={this.continue} > Next {<KeyboardArrowRight />} </Button>}\r\n backButton={<Button size=\"small\" onClick={this.back} disabled> {<KeyboardArrowLeft />} Back </Button>}\r\n />\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(AccountType);","import Button from '@material-ui/core/Button';\r\nimport MobileStepper from '@material-ui/core/MobileStepper';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport KeyboardArrowLeft from '@material-ui/icons/KeyboardArrowLeft';\r\nimport KeyboardArrowRight from '@material-ui/icons/KeyboardArrowRight';\r\nimport React, { Component,Fragment } from 'react';\r\nimport SubModuleSelection from '../../core/controls/components/custom/submoduleselection';\r\nimport Heading from './heading';\r\nimport { getEnvVariable } from '../environmentalList';\r\nconst _ = require('lodash');\r\n\r\n\r\nconst styles = {\r\n root: {\r\n maxWidth: window.innerwidth,\r\n flexGrow: 1,\r\n },\r\n};\r\n\r\nconst checkwidth = 960\r\nexport class ModuleSelection extends Component {\r\n state = {\r\n activeStep: 2,\r\n subModuleMenu: '',\r\n checkboxvalues: '',\r\n CompanyModules: []\r\n };\r\n continue = e => {\r\n e.preventDefault();\r\n this.props.nextStep();\r\n };\r\n\r\n\r\n back = e => {\r\n e.preventDefault();\r\n this.props.prevStep();\r\n };\r\n\r\n handleChange = (result, name) => {\r\n this.handleCheckboxChange(result, name);\r\n }\r\n\r\n handleCheckboxChange = (result, name) => {\r\n if (!(_.isEqual(this.props.values.CompanyModules, result))) {\r\n this.setState({ [name]: result }, () => this.props.moduleChecked(this.state));\r\n }\r\n }\r\n\r\n render() {\r\n const { values, classes, moduleChecked } = this.props;\r\n let hidesubmodules = getEnvVariable('HideSubmodules') == \"Y\" ? true : false\r\n return (\r\n <Fragment>\r\n <div className='col-sm-12 '>\r\n {!hidesubmodules && <div>\r\n <Heading subheading='Request Access for' /><br /></div>}\r\n <div className=\"row\">\r\n <SubModuleSelection name='CompanyModules' value={this.props.values && this.props.values.CompanyModules || []}\r\n submoduleItemsToParent={this.props.submoduleItemsToParent}\r\n customnoticesave={this.handleChange} setSubmoduleItemsToParent={this.props.setSubmoduleItemsToParent} />\r\n </div>\r\n {!hidesubmodules &&<MobileStepper\r\n variant=\"dots\"\r\n steps={4}\r\n position=\"static\"\r\n activeStep={this.state.activeStep}\r\n className={classes.root}\r\n nextButton={\r\n <Button size=\"small\" onClick={this.continue} disabled={this.props.values.CompanyModules.length > 1 ? false : true} >\r\n Next\r\n {<KeyboardArrowRight />}\r\n </Button>\r\n }\r\n backButton={<Button size=\"small\" onClick={this.back}> {<KeyboardArrowLeft />} Back </Button>}\r\n />\r\n }\r\n </div>\r\n </Fragment>\r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(ModuleSelection);\r\n","import Button from '@material-ui/core/Button';\r\nimport MobileStepper from '@material-ui/core/MobileStepper';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport KeyboardArrowLeft from '@material-ui/icons/KeyboardArrowLeft';\r\nimport KeyboardArrowRight from '@material-ui/icons/KeyboardArrowRight';\r\nimport React, { Component, Fragment } from 'react';\r\nimport MultiCheckAutoComplete from '../../core/controls/components/checkautocomplete';\r\nimport Dropdown from '../../core/controls/components/dropdown';\r\nimport PhoneFormat from '../../core/controls/components/phoneformat';\r\nimport TextField from '../../core/controls/components/textbox';\r\nimport Heading from './heading';\r\nimport ModuleSelection from './ModuleSelection';\r\nimport { getEnvVariable } from '../environmentalList';\r\n\r\nconst styles = {\r\n root: {\r\n maxWidth: window.innerwidth,\r\n flexGrow: 1,\r\n },\r\n};\r\n\r\n\r\nconst extraProps = {\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Value'\r\n },\r\n}\r\n\r\nconst comextraProps = {\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Id'\r\n },\r\n}\r\n\r\n\r\nconst checkextraProps = {\r\n transformProps: {\r\n \"Y\": true,\r\n \"N\": false,\r\n true: \"Y\",\r\n false: \"N\"\r\n }\r\n}\r\nexport class CompanyDetails extends Component {\r\n state = {\r\n activeStep: 1,\r\n\r\n };\r\n continue = e => {\r\n e.preventDefault();\r\n this.props.nextStep();\r\n };\r\n\r\n back = e => {\r\n e.preventDefault();\r\n this.props.prevStep();\r\n };\r\n\r\n\r\n render() {\r\n const { classes, values, handleChange, handleCheckChange, errors, } = this.props;\r\n let hidesubmodules = getEnvVariable('HideSubmodules') == \"Y\" ? true : false\r\n var stateList = values.StateList ? values.StateList : [];\r\n return (\r\n < div className=' col-sm-12' >\r\n {/* <Heading CompanyType={values && values.CompanyType} /> */}\r\n <Heading subheading=\"Applicant Information : \" />\r\n <Fragment>\r\n <div className=\"row\">\r\n <div className=\"col-sm-10\">\r\n <TextField\r\n error={(errors.Name && errors.Name.error) ? errors.Name.error : false}\r\n label={values.CompanyType === 'T' ? 'Consultant Company Name' : 'Applicant Name'}\r\n handleFieldValue={handleChange('Name')}\r\n value={values.Name}\r\n required={true}\r\n helperText={(errors.Name && errors.Name.error) ? errors.Name.errortext : \"\"}\r\n />\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-sm-10\">\r\n <TextField\r\n error={(errors.AddressLine1 && errors.AddressLine1.error) ? errors.AddressLine1.error : false}\r\n label=\"Address Line 1\"\r\n handleFieldValue={handleChange('AddressLine1')}\r\n value={values.AddressLine1}\r\n required={true}\r\n helperText={(errors.AddressLine1 && errors.AddressLine1.error) ? errors.AddressLine1.errortext : \"\"}\r\n />\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-sm-10\">\r\n <TextField\r\n error={(errors.AddressLine2 && errors.AddressLine2.error) ? errors.AddressLine2.error : false}\r\n label=\"Address Line 2\"\r\n handleFieldValue={handleChange('AddressLine2')}\r\n value={values.AddressLine2}\r\n helperText={(errors.AddressLine2 && errors.AddressLine2.error) ? errors.AddressLine2.errortext : \"\"}\r\n />\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-sm-5\">\r\n <TextField\r\n error={(errors.City && errors.City.error) ? errors.City.error : false}\r\n label=\"City\"\r\n handleFieldValue={handleChange('City')}\r\n required={true}\r\n value={values.City}\r\n helperText={(errors.City && errors.City.error) ? errors.City.errortext : \"\"}\r\n />\r\n </div>\r\n <div className=\"col-sm-5\">\r\n <Dropdown label={'State'} value={values.State || 'OR'} handleFieldValue={handleChange('State')} error={(errors.State && errors.State.error) ? errors.State.errortext : \"\"}\r\n helperText={(errors.State && errors.State.error) ? errors.State.errortext : \"\"}\r\n items={stateList}\r\n extraProps={extraProps} required={true} />\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-sm-5\">\r\n <TextField\r\n error={(errors.Zip && errors.Zip.error) ? errors.Zip.error : false}\r\n label=\"Zip\"\r\n handleFieldValue={handleChange('Zip')}\r\n value={values.Zip}\r\n required={true}\r\n helperText={(errors.Zip && errors.Zip.error) ? errors.Zip.errortext : \"\"}\r\n />\r\n </div>\r\n <div className=\"col-sm-5\">\r\n <TextField\r\n error={(errors.Country && errors.Country.error) ? errors.Country.error : false}\r\n label=\"Country\"\r\n handleFieldValue={handleChange('Country')}\r\n required={true}\r\n value={values.Country || 'USA'}\r\n helperText={(errors.Country && errors.Country.error) ? errors.Country.errortext : \"\"}\r\n />\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-sm-5\">\r\n <PhoneFormat error={(errors.Phone && errors.Phone.error) ? errors.Phone.error : false} name=\"Office Phone\" required={true}\r\n value={values.Phone}\r\n handleFieldValue={handleChange('Phone')} label=\"Office Phone\" helperText={(errors.Phone && errors.Phone.error) ? errors.Phone.errortext : \"\"} />\r\n </div>\r\n <div className=\"col-sm-5\">\r\n <PhoneFormat error={(errors.SecondaryPhone && errors.SecondaryPhone.error) ? errors.SecondaryPhone.error : false} name=\"Mobile Phone\"\r\n value={values.SecondaryPhone}\r\n handleFieldValue={handleChange('SecondaryPhone')} label=\"Mobile Phone\" helperText={(errors.SecondaryPhone && errors.SecondaryPhone.error) ? errors.SecondaryPhone.errortext : \"\"} />\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-sm-5\">\r\n <PhoneFormat error={(errors.HomePhone && errors.HomePhone.error) ? errors.HomePhone.error : false} name=\"Home Phone\"\r\n value={values.HomePhone}\r\n handleFieldValue={handleChange('HomePhone')} label=\"Home Phone\" helperText={(errors.HomePhone && errors.HomePhone.error) ? errors.HomePhone.errortext : \"\"} />\r\n </div>\r\n <div className=\"col-sm-5\">\r\n <PhoneFormat error={(errors.Fax && errors.Fax.error) ? errors.Fax.error : false} name=\"Fax\"\r\n value={values.Fax}\r\n handleFieldValue={handleChange('Fax')} label=\"Fax/Others\" helperText={(errors.Fax && errors.Fax.error) ? errors.Fax.errortext : \"\"} />\r\n </div>\r\n </div>\r\n </Fragment>\r\n {hidesubmodules && <ModuleSelection\r\n nextStep={this.props.nextStep}\r\n handleChange={this.props.handleChange}\r\n moduleChecked={this.props.moduleChecked}\r\n values={values}\r\n prevStep={this.props.prevStep}\r\n onClose={this.props.onClose}\r\n />}\r\n\r\n <div className=\"row\">\r\n <MobileStepper className={classes.root} variant=\"dots\" steps={4} position=\"static\" activeStep={this.state.activeStep}\r\n nextButton={<Button size=\"small\" onClick={this.continue} > Next {<KeyboardArrowRight />} </Button>}\r\n backButton={<Button size=\"small\" onClick={this.back} disabled> {<KeyboardArrowLeft />} Back </Button>}\r\n />\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(CompanyDetails);\r\n","import { AppBar, Toolbar, Typography } from '@material-ui/core';\r\nimport Box from '@material-ui/core/Box';\r\nimport Button from '@material-ui/core/Button';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport MobileStepper from '@material-ui/core/MobileStepper';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport InfoIcon from '@material-ui/icons/Info';\r\nimport KeyboardArrowLeft from '@material-ui/icons/KeyboardArrowLeft';\r\nimport KeyboardArrowRight from '@material-ui/icons/KeyboardArrowRight';\r\nimport React, { Component } from 'react';\r\nimport ReCAPTCHA from \"react-google-recaptcha\";\r\nimport { PostData } from '../../core/controls/helpers/requests';\r\nimport { requestApi } from '../../core/modules/form/utilities';\r\nimport { getEnvVariable } from '../environmentalList';\r\nimport Heading from './heading';\r\nimport Drawer from '@material-ui/core/Drawer';\r\nimport Editor from '../../core/modules/form/cwysiwyg';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\n\r\nconst styles = {\r\n root: {\r\n maxWidth: window.innerwidth,\r\n flexGrow: 1,\r\n },\r\n showbutton: {\r\n // margin: 15,\r\n // display: 'inline-block',\r\n // disable : false\r\n },\r\n hidebutton: {\r\n //margin: 15,\r\n display: 'none',\r\n // disable : true\r\n }\r\n};\r\n\r\n\r\nconst checkwidth = 960\r\n\r\nexport class SignUp extends Component {\r\n state = {\r\n activeStep: 3,\r\n openpolicy: false,\r\n editorval: null\r\n };\r\n\r\n\r\n\r\n componentDidMount() {\r\n requestApi({ get: { url: getEnvVariable('Application') + `/api/EmailConfiguration/Key?key=TERMSANDCONDITIONS_DOTTNC` } }, null, null).then(results => {\r\n this.setState({\r\n editorval: results.Body\r\n })\r\n })\r\n }\r\n\r\n\r\n\r\n validateusernameandsubmit = () => {\r\n const { values, errors, singuperrorupdate, signuperrors } = this.props;\r\n let exp = \"^[A-Za-z0-9._]{5,50}$\"\r\n let newreg = new RegExp(exp)\r\n let correctvalidation = true;\r\n if (values && values.UserName && (!newreg.test(values.UserName))) {\r\n correctvalidation = false;\r\n }\r\n if (values && values.UserName) {\r\n if (!correctvalidation) {\r\n this.props.singuperrorupdate({\r\n signUpError: {\r\n ...signuperrors,\r\n UserName: { error: true, errortext: 'Must be a valid username', isRequired: true }\r\n },\r\n HasValidationError: true\r\n })\r\n }\r\n //Validating the uniqueness of user username and proceed\r\n else {\r\n const value = values.UserName;\r\n var externalUsernameReqURL = {\r\n \"get\": {\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/CompanyExternal/UniqueUserName/${getEnvVariable('ModuleKey')}?userName=${value}`\r\n }\r\n };\r\n requestApi(externalUsernameReqURL, '', null, null, true).then(results => {\r\n if (results && results.isValid) {\r\n this.submit();\r\n }\r\n else {\r\n this.props.singuperrorupdate({\r\n signUpError: {\r\n ...signuperrors,\r\n UserName: { error: true, errortext: 'User Name already exits, Please try with another User Name', isRequired: true }\r\n },\r\n HasValidationError: true\r\n })\r\n }\r\n }).catch(error => {\r\n error.then(err => {\r\n this.props.singuperrorupdate({\r\n signUpError: {\r\n ...signuperrors,\r\n UserName: { error: true, errortext: 'User Name already exits, Please try with another User Name', isRequired: true }\r\n },\r\n HasValidationError: true\r\n })\r\n\r\n })\r\n\r\n })\r\n }\r\n }\r\n\r\n }\r\n\r\n submit = () => {\r\n let values = this.props.values;\r\n let url = getEnvVariable('MasterAdmin') + `/api/${getEnvVariable('ModuleKey')}CompanyExternal/` + getEnvVariable('ModuleKey') + `/${getEnvVariable('ModuleKey')}Add`\r\n PostData(url, values, true).then(res => {\r\n this.props.nextStep();\r\n }).catch(error => {\r\n error.then(err => {\r\n if (err)\r\n this.props.errorSubmit(err);\r\n else this.props.nextStep();\r\n })\r\n })\r\n };\r\n\r\n back = e => {\r\n e.preventDefault();\r\n this.props.prevStep();\r\n };\r\n\r\n toggleDrawer = (open) => (event) => {\r\n if (event.type === 'keydown' && (event.key === 'Tab' || event.key === 'Shift')) {\r\n return;\r\n }\r\n this.setState({ openpolicy: open })\r\n };\r\n\r\n handleFieldChange = (event) => {\r\n console.log(event);\r\n }\r\n\r\n getTerms = () => {\r\n let type = getEnvVariable('ModuleKey')\r\n switch (type) {\r\n case 'AMES':\r\n case 'WRS':\r\n return ' I authorize the Wildlife Reporting System to contact me using the email address provided. Emails will be automatically generated and sent to the provided email address by the system'\r\n default: return 'By checking the above checkbox you are agreeing to all terms and conditions of the department for using this online system.'\r\n }\r\n }\r\n\r\n render() {\r\n const { values, handleChange, handleChecked, classes, signuperrors, handlerecaptchachange } = this.props;\r\n return (\r\n <div className='col-sm-12'>\r\n <Heading subheading=\"Username Information\" />\r\n <div className=\"row\">\r\n <div className=\"col-sm-12\">\r\n <TextField\r\n label=\"Username\"\r\n onChange={handleChange('UserName')}\r\n value={values.UserName}\r\n required\r\n fullWidth\r\n error={signuperrors && signuperrors.UserName && signuperrors.UserName.error ? signuperrors.UserName.error : false}\r\n helperText={(signuperrors && signuperrors.UserName && signuperrors.UserName.error) ? signuperrors.UserName.errortext : \"\"}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </div>\r\n <Typography variant=\"caption\" className=\"pl-2\" gutterBottom><InfoIcon color=\"primary\" />\r\n Username may contain 5-50 characters, letters (a-z)(A-Z),numbers(0-9), period(.) and underscore(_).\r\n </Typography>\r\n </div>\r\n <FormControlLabel\r\n control={<Checkbox onChange={handleChecked('AgreeTerms')} value=\"AgreeTerms\" />}\r\n label={<Box component=\"div\" fontSize={12}>\r\n {this.getTerms()}\r\n </Box>}\r\n />\r\n <br />\r\n <Button size=\"small\" variant=\"contained\" color=\"primary\" onClick={this.toggleDrawer(true)} >\r\n View terms and conditions\r\n </Button>\r\n <Drawer\r\n anchor={'right'}\r\n open={this.state.openpolicy}\r\n onClose={this.toggleDrawer(false)}\r\n key=\"slider\"\r\n disableEnforceFocus={true}\r\n disableAutoFocus={true}\r\n PaperProps={{ style: { width: window.innerWidth - 600 } }}\r\n >\r\n <AppBar position=\"sticky\" color='secondary'>\r\n <Toolbar variant=\"dense\">\r\n <i className=\"float-right\" onClick={this.toggleDrawer(false)} ><IconButton title=\"Close\" color=\"inherit\">\r\n <CloseIcon fontSize=\"small\" />\r\n </IconButton></i>\r\n </Toolbar></AppBar>\r\n <Editor name={'Terms and conditions'} readonlyandprint={true} edit={true} handleFieldChange={this.handleFieldChange} value={this.state.editorval} label={'Terms and conditions'} />\r\n </Drawer>\r\n {values && values.UserName && <ReCAPTCHA sitekey={'6Lcfh6sUAAAAALUwhdig01KatfUoQhm_KjNsZ6TU'} onChange={handlerecaptchachange} />}\r\n <div className=\"row\">\r\n <MobileStepper\r\n variant=\"dots\"\r\n steps={4}\r\n position=\"static\"\r\n activeStep={this.state.activeStep}\r\n className={classes.root}\r\n nextButton={\r\n <Button size=\"small\" onClick={this.validateusernameandsubmit}\r\n disabled={(values.AgreeTerms == 'Y' && values.ReCaptcha == 'Y') ? false : true}\r\n // style={(values.AgreeTerms == 'Y' && values.ReCaptcha == 'Y') ? styles.showbutton : styles.hidebutton}\r\n >\r\n Submit\r\n {<KeyboardArrowRight />}\r\n </Button>\r\n }\r\n backButton={\r\n <Button size=\"small\" onClick={this.back}>\r\n {<KeyboardArrowLeft />}\r\n Back\r\n </Button>\r\n }\r\n />\r\n </div>\r\n\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n\r\n\r\nexport default withStyles(styles)(SignUp);\r\n","import { Typography } from '@material-ui/core';\r\nimport React, { Component } from 'react';\r\nexport class Success extends Component {\r\n\r\n\r\n render() {\r\n return (\r\n <div >\r\n <Typography paragraph>Thank you! Your registration request has been submitted successfully.\r\n You will be receiving an email shortly.</Typography>\r\n <Typography variant=\"caption\" display=\"block\" gutterBottom color='secondary'>\r\n Disclaimer: If you can not find your confirmation/registration approval emails in your normal inbox, please check in your spam or junk mail section.\r\n </Typography>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default Success;","import { AppBar, Toolbar, Typography } from '@material-ui/core';\r\nimport Box from '@material-ui/core/Box';\r\nimport Button from '@material-ui/core/Button';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport Drawer from '@material-ui/core/Drawer';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport MobileStepper from '@material-ui/core/MobileStepper';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport KeyboardArrowLeft from '@material-ui/icons/KeyboardArrowLeft';\r\nimport KeyboardArrowRight from '@material-ui/icons/KeyboardArrowRight';\r\nimport React, { Component } from 'react';\r\nimport PhoneFormat from '../../core/controls/components/phoneformat';\r\nimport TextField from '../../core/controls/components/textbox';\r\nimport Editor from '../../core/modules/form/cwysiwyg';\r\nimport { requestApi } from '../../core/modules/form/utilities';\r\nimport { getEnvVariable } from '../environmentalList';\r\nimport Heading from './heading';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nconst styles = {\r\n root: {\r\n maxWidth: window.innerwidth,\r\n flexGrow: 1,\r\n },\r\n};\r\n\r\n\r\nexport class UserDetails extends Component {\r\n state = {\r\n activeStep: 2,\r\n openpolicy: false,\r\n editorval: null\r\n };\r\n\r\n continue = e => {\r\n e.preventDefault();\r\n this.props.nextStep();\r\n };\r\n back = e => {\r\n e.preventDefault();\r\n this.props.prevStep();\r\n };\r\n\r\n\r\n componentDidMount() {\r\n // requestApi({ get: { url: getEnvVariable('Application') + `/api/EmailConfiguration/Key?key=EMAILPOLICY_DOTTNC` } }, null, null).then(results => {\r\n // this.setState({\r\n // editorval: results.Body\r\n // })\r\n // })\r\n }\r\n\r\n handlecontactcheckbox = (e) => {\r\n this.props.handleCheckChange('Officephonecheck', e)\r\n if (e.target.checked && this.props.values.Phone) {\r\n let value = { value: this.props.values.Phone }\r\n let event = {}\r\n event.target = value\r\n this.props.handleCheckChange('UserPhone', event)\r\n }\r\n }\r\n\r\n toggleDrawer = (open) => (event) => {\r\n if (event.type === 'keydown' && (event.key === 'Tab' || event.key === 'Shift')) {\r\n return;\r\n }\r\n this.setState({ openpolicy: open })\r\n };\r\n\r\n handleFieldChange = (event) => {\r\n console.log(event);\r\n }\r\n\r\n\r\n render() {\r\n const { values, classes, handleChange, errors } = this.props;\r\n let hideDepPolicy = true;\r\n return (\r\n <div className='col-sm-12'>\r\n <Heading subheading=\"Contact Information : \" />\r\n <div className=\"row\">\r\n <div className=\"col-sm-5\"> <TextField error={(errors.FirstName && errors.FirstName.error) ? errors.FirstName.error : false} label=\"First Name\" handleFieldValue={handleChange('FirstName')} value={values.FirstName} required helperText={(errors.FirstName && errors.FirstName.error) ? errors.FirstName.errortext : \"\"} /> </div>\r\n <div className=\"col-sm-5\"> <TextField error={(errors.LastName && errors.LastName.error) ? errors.LastName.error : false} label=\"Last Name\" handleFieldValue={handleChange('LastName')} value={values.LastName} required helperText={(errors.LastName && errors.LastName.error) ? errors.LastName.errortext : \"\"} /> </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-sm-10\"> <TextField error={(errors.Title && errors.Title.error) ? errors.Title.error : false} label=\"Title\" handleFieldValue={handleChange('Title')} value={values.Title} helperText={(errors.Title && errors.Title.error) ? errors.Title.errortext : \"\"} /> </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-sm-10\"> <TextField error={(errors.Email && errors.Email.error) ? errors.Email.error : false} label=\"Email\" handleFieldValue={handleChange('Email')} value={values.Email} required helperText={(errors.Email && errors.Email.error) ? errors.Email.errortext : \"\"} /> </div>\r\n </div>\r\n <div className=\"row col-sm-10\">\r\n <PhoneFormat error={(errors.UserPhone && errors.UserPhone.error) ? errors.UserPhone.error : false} required name=\"Contact Number\" value={values.UserPhone}\r\n handleFieldValue={handleChange('UserPhone')} label=\"Primary Contact Phone\" helperText={(errors.UserPhone && errors.UserPhone.error) ? errors.UserPhone.errortext : \"\"} />\r\n {this.props.values.Phone && <FormControlLabel control={<Checkbox checked={values.Officephonecheck == \"Y\"} onChange={(e) =>\r\n this.handlecontactcheckbox(e)} />} label={<Box component=\"div\" fontSize={12}> Use Office Phone Number </Box>} >\r\n </FormControlLabel>}\r\n </div>\r\n <div className=\"row\">\r\n <MobileStepper\r\n variant=\"dots\"\r\n steps={4}\r\n position=\"static\"\r\n className={classes.root}\r\n activeStep={this.state.activeStep}\r\n nextButton={\r\n <Button size=\"small\" onClick={this.continue} >\r\n Next\r\n {<KeyboardArrowRight />}\r\n </Button>\r\n }\r\n backButton={\r\n <Button size=\"small\" onClick={this.back}>\r\n {<KeyboardArrowLeft />}\r\n Back\r\n </Button>\r\n }\r\n />\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(UserDetails);\r\n","import Grid from '@material-ui/core/Grid';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport React, { Component } from 'react';\r\nimport DefaultSettings from '../../core/controls/components/settings';\r\nimport { createRequest, requestApi as requests } from '../../core/controls/helpers/rest';\r\nimport { requestApi } from '../../core/modules/form/utilities';\r\nimport { globalvalidate as GlobalValidate } from '../../core/modules/form/validations';\r\nimport { getEnvVariable } from '../environmentalList';\r\nimport AccountType from './AccountType';\r\nimport CompanyDetails from './CompanyDetails';\r\nimport ModuleSelection from './ModuleSelection';\r\nimport SignUp from './SignUp';\r\nimport Success from './success';\r\nimport UserDetails from './UserDetails';\r\n\r\nconst styles = theme => ({\r\n root: {\r\n flexGrow: 1,\r\n\r\n },\r\n paper: {\r\n padding: theme.spacing(2),\r\n margin: 'auto',\r\n },\r\n\r\n});\r\nexport class OwnerRegistration extends Component {\r\n\r\n state = {\r\n submoduleItemsToParent: null,\r\n step: 1,\r\n Name: '',\r\n IsElectronicCommunicationAllowed: 'N',\r\n MaxUsers: 1000,\r\n AddressType: 'O',\r\n AddressLine1: '',\r\n AddressLine2: '',\r\n City: '',\r\n State: 'OR',\r\n Zip: '',\r\n Phone: '',\r\n Fax: '',\r\n Title: '',\r\n SecondaryPhone: '',\r\n HomePhone: '',\r\n Country: 'USA',\r\n UserPhone: '',\r\n Email: '',\r\n UserName: '',\r\n FirstName: '',\r\n LastName: '',\r\n CompanyType: 'C',\r\n Modules: [],\r\n SubModuleKey: [],\r\n ModuleKeys: [],\r\n EPSCheck: false,\r\n AgreeTerms: 'N',\r\n ReCaptcha: 'N',\r\n StateList: [],\r\n //ContactType: '',\r\n CompanyValidations: [],\r\n ContactValidations: [],\r\n CompanyModules: [],\r\n HasValidationError: false,\r\n Officephonecheck: 'N',\r\n errors: {\r\n Name: {\r\n error: false,\r\n errortext: \"\",\r\n isRequired: true\r\n },\r\n AddressLine1: {\r\n error: false,\r\n errortext: \"\",\r\n isRequired: true\r\n },\r\n AddressLine2: {\r\n error: false,\r\n errortext: \"\"\r\n },\r\n City: {\r\n error: false,\r\n errortext: \"\",\r\n isRequired: true\r\n },\r\n State: {\r\n error: false,\r\n errortext: \"\",\r\n isRequired: true\r\n },\r\n Zip: {\r\n error: false,\r\n errortext: \"\",\r\n isRequired: true\r\n },\r\n Phone: {\r\n error: false,\r\n errortext: \"\",\r\n isRequired: true\r\n },\r\n Fax: {\r\n error: false,\r\n errortext: \"\",\r\n isRequired: true\r\n },\r\n Title: {\r\n error: false,\r\n errortext: \"\",\r\n isRequired: true\r\n },\r\n UserPhone: {\r\n error: false,\r\n errortext: \"\",\r\n isRequired: true\r\n },\r\n SecondaryPhone: {\r\n error: false,\r\n errortext: \"\",\r\n isRequired: true\r\n },\r\n HomePhone: {\r\n error: false,\r\n errortext: \"\",\r\n isRequired: true\r\n },\r\n Country: {\r\n error: false,\r\n errortext: \"\",\r\n },\r\n Email: {\r\n error: false,\r\n errortext: \"\",\r\n isRequired: true\r\n },\r\n UserName: {\r\n error: false,\r\n errortext: \"\",\r\n isRequired: true\r\n },\r\n FirstName: {\r\n error: false,\r\n errortext: \"\",\r\n isRequired: true\r\n },\r\n LastName: {\r\n error: false,\r\n errortext: \"\",\r\n isRequired: true\r\n }\r\n },\r\n ownerRegErrors: {\r\n Name: {\r\n error: false,\r\n errortext: \"\",\r\n isRequired: true\r\n },\r\n AddressLine1: {\r\n error: false,\r\n errortext: \"\",\r\n isRequired: true\r\n },\r\n AddressLine2: {\r\n error: false,\r\n errortext: \"\"\r\n },\r\n City: {\r\n error: false,\r\n errortext: \"\",\r\n isRequired: true\r\n },\r\n State: {\r\n error: false,\r\n errortext: \"\",\r\n isRequired: true\r\n },\r\n Zip: {\r\n error: false,\r\n errortext: \"\",\r\n isRequired: true\r\n },\r\n Phone: {\r\n error: false,\r\n errortext: \"\",\r\n isRequired: true\r\n },\r\n SecondaryPhone: {\r\n error: false,\r\n errortext: \"\",\r\n },\r\n\r\n HomePhone: {\r\n error: false,\r\n errortext: \"\",\r\n },\r\n Country: {\r\n error: false,\r\n errortext: \"\",\r\n },\r\n Fax: {\r\n error: false,\r\n errortext: \"\",\r\n isRequired: false\r\n }\r\n },\r\n userDetailsErrors: {\r\n Title: {\r\n error: false,\r\n errortext: \"\",\r\n isRequired: false\r\n },\r\n UserPhone: {\r\n error: false,\r\n errortext: \"\",\r\n isRequired: true\r\n },\r\n Email: {\r\n error: false,\r\n errortext: \"\",\r\n isRequired: true\r\n },\r\n FirstName: {\r\n error: false,\r\n errortext: \"\",\r\n isRequired: true\r\n },\r\n LastName: {\r\n error: false,\r\n errortext: \"\",\r\n isRequired: true\r\n },\r\n },\r\n signUpError: {\r\n UserName: {\r\n error: false,\r\n errortext: \"\",\r\n isRequired: true\r\n }\r\n }\r\n\r\n };\r\n // Proceed to next step\r\n nextStep = () => {\r\n const { step } = this.state;\r\n this.setState({\r\n step: step + 1\r\n });\r\n };\r\n\r\n closestep = () => {\r\n this.setState({\r\n onclose: true\r\n });\r\n }\r\n // Proceed to next step\r\n regNextStepValidation = (type) => {\r\n const { step, CompanyType } = this.state;\r\n let error = false;\r\n if (step === 2 || step === 4) {\r\n error = this.validateRegistrationData(type);\r\n }\r\n else this.setState({\r\n step: (step === 2 && CompanyType === 'T') ? 4 : (step + 1)\r\n });\r\n };\r\n\r\n // Proceed to next step\r\n regNextStepUserValidation = (type) => {\r\n const { step } = this.state;\r\n var error = false;\r\n if (step === 4 || step === 3) {\r\n error = this.validateRegistrationData(type);\r\n }\r\n };\r\n\r\n validateRegistrationData(type) {\r\n const { step, CompanyType } = this.state;\r\n var errors = (type === \"owner\") ? this.state.ownerRegErrors : this.state.userDetailsErrors;\r\n var customErrors = (type === \"owner\") ? this.state.userDetailsErrors : this.state.ownerRegErrors;\r\n let changedFieldName = []\r\n let requiredFieldErrors = {}\r\n var hasError = false;\r\n // const { step } = this.state;\r\n //Iterate over object and check for any errors\r\n Object.entries(errors).map(obj => {\r\n const key = obj[0];\r\n const nestedObj = obj[1];\r\n var isRequired = nestedObj['isRequired'];\r\n var formData = this.state;\r\n let value = formData[key];\r\n if (typeof value === 'string' && value != \"\" && value.charAt(0) === \" \") {\r\n this.setState({ [key]: value.trim() });\r\n }\r\n if (isRequired) {\r\n if (value)\r\n value = value.trim();\r\n if ((value === null) || (value === undefined) || (value === '')) {\r\n changedFieldName.push({ [key]: { error: true, errortext: 'Field is Required', isRequired: true } })\r\n requiredFieldErrors[key] = { error: true, errortext: 'Field is Required', isRequired: true };\r\n hasError = true;\r\n } else {\r\n requiredFieldErrors[key] = { error: false, errortext: '', isRequired: true };\r\n }\r\n }\r\n let validationerror = []\r\n if (value !== \"\") {\r\n var errorJson = {}\r\n errorJson = this.getDBValidationMessages(key);\r\n if (errorJson.length > 0) {\r\n errorJson.map(err => {\r\n validationerror[key] = [err]\r\n })\r\n const error = GlobalValidate(validationerror, { [key]: value })\r\n var isError = error[key]['error'];\r\n if (isError) {\r\n changedFieldName.push({ [key]: { error: true, errortext: error[key]['errortext'], isRequired: false } })\r\n requiredFieldErrors[key] = { error: true, errortext: error[key]['errortext'], isRequired: false };\r\n hasError = true;\r\n }\r\n }\r\n }\r\n });\r\n if (hasError) {\r\n this.setState({\r\n errors: {\r\n ...requiredFieldErrors,\r\n ...customErrors\r\n }\r\n });\r\n } else {\r\n const { step, CompanyType } = this.state;\r\n //Validating the uniqueness of user email and proceed\r\n if (type === 'user') {\r\n var value = this.state.Email;\r\n var externalUserEmail = {\r\n \"post\": {\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/CompanyExternal/ExternalUserUniqueEmail?email=${value}&type=${this.state.CompanyType}`\r\n }\r\n };\r\n requestApi(externalUserEmail, '', null, null, true, true).then(results => {\r\n if (results) {\r\n this.setState({\r\n errors: {\r\n ...this.state.errors,\r\n Email: { error: false, errortext: '', isRequired: true }\r\n },\r\n HasValidationError: false,\r\n step: (step === 2 && CompanyType === 'T') ? 4 : (step + 1)\r\n })\r\n }\r\n }).catch(error => {\r\n error.then(err => {\r\n this.setState({\r\n errors: {\r\n ...this.state.errors,\r\n Email: { error: true, errortext: `Email address already exists. Please provide another email address.`, isRequired: true }\r\n },\r\n HasValidationError: true\r\n })\r\n })\r\n\r\n })\r\n }\r\n else {\r\n this.setState({\r\n step: (step === 2 && CompanyType === 'T') ? 3 : (step + 1)\r\n });\r\n }\r\n // else if (type == 'owner') {\r\n // let ownerErrors = Object.keys(this.state.errors).some(each => this.state.errors[each].error === true) || false;\r\n // if (!ownerErrors) {\r\n // var value = this.state.Name;\r\n // var externalName = {\r\n // \"get\": {\r\n // \"url\": getEnvVariable('MasterAdmin') + `/api/CompanyInternal/UniqueCompanyName/${getEnvVariable('ModuleKey')}?companiesName=${value}&companiesType=${this.state.CompanyType}`\r\n // }\r\n // };\r\n // requestApi(externalName, '', null, null, true).then(results => {\r\n // if (results && results.isValid) {\r\n // this.setState({\r\n // errors: {\r\n // ...this.state.errors,\r\n // Name: { error: false, errortext: '', isRequired: true }\r\n // },\r\n // HasValidationError: false,\r\n // step: (step === 2 && CompanyType === 'T') ? 4 : (step + 1)\r\n // })\r\n // }\r\n // else {\r\n // this.setState({\r\n // errors: {\r\n // ...this.state.errors,\r\n // Name: { error: true, errortext: `${CompanyType === 'T' ? 'Consultant ' : 'Applicant '} Company Name already exists. Please provide another company name`, isRequired: true }\r\n // },\r\n // HasValidationError: true\r\n // })\r\n // }\r\n // }).catch(error => {\r\n // error.then(err => {\r\n // this.setState({\r\n // errors: {\r\n // ...this.state.errors,\r\n // Name: { error: true, errortext: `${CompanyType === 'T' ? 'Consultant ' : 'Applicant '} Company Name already exists. Please provide another company name`, isRequired: true }\r\n // },\r\n // HasValidationError: true\r\n // })\r\n // })\r\n // })\r\n // }\r\n\r\n // }\r\n }\r\n }\r\n // Go back to prev step\r\n prevStep = () => {\r\n const { step, CompanyType } = this.state;\r\n this.setState({\r\n step: (step === 4 && CompanyType === 'T') ? (step - 2) : step - 1\r\n });\r\n };\r\n\r\n\r\n singuperrorupdate = (data) => {\r\n this.setState({ ...data });\r\n }\r\n\r\n // Handle fields change\r\n handleChange = input => e => {\r\n if (input === \"UserName\") {\r\n e.target.value = e.target.value.replace(/\\s/g, '')\r\n this.setState({ [input]: e.target.value.trim() });\r\n }\r\n else {\r\n if (e.target.value.length - 1 > 0)\r\n this.setState({ [input]: e.target.value.trim() });\r\n else\r\n this.setState({ [input]: e.target.value.trim() });\r\n }\r\n var errorJson = {}\r\n errorJson = { [input]: this.getDBValidationMessages(input) };\r\n const error = GlobalValidate(errorJson, { [input]: e.target.value });\r\n var isRequiredVal = (this.state.errors[input] && this.state.errors[input].isRequired) ? this.state.errors[input].isRequired : false;\r\n if (Object.keys(error).length > 0) {\r\n var hasError = error[input]['error'];\r\n if (hasError && hasError === true) {\r\n this.setState({\r\n errors: {\r\n ...this.state.errors,\r\n [input]: { error: error[input]['error'], errortext: error[input]['errortext'], isRequired: isRequiredVal }\r\n },\r\n HasValidationError: true\r\n })\r\n\r\n } else {\r\n this.setState({\r\n errors: {\r\n ...this.state.errors,\r\n [input]: { error: false, errortext: '', isRequired: isRequiredVal }\r\n },\r\n HasValidationError: true\r\n })\r\n\r\n }\r\n } else {\r\n\r\n this.setState({\r\n errors: {\r\n ...this.state.errors,\r\n [input]: { error: false, errortext: '', isRequired: isRequiredVal }\r\n },\r\n HasValidationError: false\r\n })\r\n }\r\n };\r\n\r\n handleCheckChange = (input, e) => {\r\n if (input === \"UserName\") {\r\n e.target.value = e.target.value.replace(/\\s/g, '')\r\n this.setState({ [input]: e.target.value.trim() });\r\n }\r\n else if (input === \"Officephonecheck\") {\r\n if (e && e.target && e.target.checked) {\r\n this.setState({ [input]: 'Y' });\r\n }\r\n else {\r\n this.setState({ [input]: 'N' });\r\n }\r\n }\r\n else {\r\n if (e.target.value.length - 1 > 0)\r\n this.setState({ [input]: e.target.value });\r\n else\r\n this.setState({ [input]: e.target.value.trim() });\r\n }\r\n\r\n var errorJson = {}\r\n errorJson = { [input]: this.getDBValidationMessages(input) };\r\n const error = GlobalValidate(errorJson, { [input]: e && e.target.value || null });\r\n var isRequiredVal = (this.state.errors[input] && this.state.errors[input].isRequired) ? this.state.errors[input].isRequired : false;\r\n if (Object.keys(error).length > 0) {\r\n var hasError = error[input]['error'];\r\n if (hasError && hasError === true) {\r\n this.setState({\r\n errors: {\r\n ...this.state.errors,\r\n [input]: { error: error[input]['error'], errortext: error[input]['errortext'], isRequired: isRequiredVal }\r\n },\r\n HasValidationError: true\r\n })\r\n } else {\r\n this.setState({\r\n errors: {\r\n ...this.state.errors,\r\n [input]: { error: false, errortext: '', isRequired: isRequiredVal }\r\n },\r\n HasValidationError: true\r\n })\r\n }\r\n } else {\r\n this.setState({\r\n errors: {\r\n ...this.state.errors,\r\n [input]: { error: false, errortext: '', isRequired: isRequiredVal }\r\n },\r\n HasValidationError: false\r\n })\r\n }\r\n };\r\n\r\n validateUnique(type, value) {\r\n if (type === 'Email') {\r\n var externalUserEmail = {\r\n \"get\": {\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/CompanyExternal/ExternalUserUniqueEmail?email=${value}&type=${this.state.CompanyType}`\r\n }\r\n };\r\n if (value) {\r\n requestApi(externalUserEmail, '').then(results => {\r\n console.log(results);\r\n }).catch(error => {\r\n\r\n error.then(err => {\r\n\r\n this.setState({\r\n errors: {\r\n ...this.state.errors,\r\n [type]: { error: true, errortext: `Email address already exists. Please provide another email address.`, isRequired: true }\r\n },\r\n HasValidationError: true\r\n })\r\n\r\n })\r\n\r\n }).catch(error => {\r\n this.setState({\r\n errors: {\r\n ...this.state.errors,\r\n [type]: { error: false, errortext: '' }\r\n },\r\n HasValidationError: false\r\n })\r\n })\r\n }\r\n } else if (type === \"Username\") { }\r\n }\r\n\r\n getDBValidationMessages(key) {\r\n var companyValidations = this.state.CompanyValidations;\r\n var contactValidations = this.state.ContactValidations;\r\n var allValidations = companyValidations.concat(contactValidations);\r\n var keyinuppercase = key.toUpperCase();\r\n var validationSearchKey = \"_\" + keyinuppercase;\r\n var matchingKeys = allValidations.filter(f => f['Key'].includes(validationSearchKey));;\r\n return matchingKeys;\r\n }\r\n\r\n // Handle fields change\r\n moduleChecked = (e) => {\r\n let result = e;\r\n this.setState({ CompanyModules: result.CompanyModules })\r\n }\r\n\r\n handleChecked = input => e => {\r\n if (e.target.checked) {\r\n this.setState({ [input]: 'Y', ModuleKeys: [`${getEnvVariable('ModuleKey')}`] });\r\n }\r\n else {\r\n this.setState({ [input]: 'N', ModuleKeys: [`${getEnvVariable('ModuleKey')}`] });\r\n }\r\n };\r\n\r\n\r\n componentDidMount() {\r\n this.loadDropdownValues();\r\n }\r\n\r\n loadDropdownValues() {\r\n const dropLists = [\r\n {\r\n url: getEnvVariable('MasterAdmin') + `/api/CompanyExternal/GetDomainValuesByKey?domainkey=US_STATES`,\r\n type: 'get'\r\n },\r\n {\r\n url: getEnvVariable('MasterAdmin') + `/api/CompanyExternal/GetDomainValuesByKey?domainkey=CONTACT_TYPE`,\r\n type: 'get'\r\n },\r\n {\r\n url: getEnvVariable('MasterAdmin') + `/api/CompanyExternal/GetRulesByName?name=master.companies,master.users`,\r\n type: 'get'\r\n },\r\n {\r\n url: getEnvVariable('MasterAdmin') + `/api/CompanyExternal/GetRulesByName?name=master.contacts`,\r\n type: 'get'\r\n },\r\n ]\r\n Promise.all(dropLists.map(each => requests(createRequest(each, {}, null)).catch(error => { return error; }))).then(response => {\r\n const [status, contacts, comvalidations, convaliations] = response\r\n if (Array.isArray(status)) {\r\n this.setState({ StateList: status, ContactTypeList: contacts, CompanyValidations: comvalidations, ContactValidations: convaliations });\r\n }\r\n })\r\n }\r\n\r\n errorSubmit = (error) => {\r\n this.setState({\r\n errors: {\r\n ...this.state.errors,\r\n ['Name']: { error: true, errortext: error.Name[0].toString(), isRequired: true }\r\n },\r\n HasValidationError: true\r\n })\r\n }\r\n\r\n\r\n handlerecaptchachange = (value) => {\r\n if (value && value.length > 0) {\r\n this.setState({ ReCaptcha: 'Y' });\r\n }\r\n }\r\n\r\n handleStepFunc = (step) => {\r\n const { Name, IsElectronicCommunicationAllowed, MaxUsers, AddressType, AddressLine1,\r\n AddressLine2,\r\n City,\r\n State,\r\n Zip,\r\n Phone,\r\n SecondaryPhone,\r\n HomePhone,\r\n Country,\r\n Fax,\r\n Title,\r\n UserPhone,\r\n Email,\r\n UserName,\r\n FirstName,\r\n LastName,\r\n CompanyType,\r\n Modules,\r\n SubModuleKey,\r\n ModuleKeys,\r\n AgreeTerms,\r\n ReCaptcha,\r\n EPSCheck,\r\n StateList,\r\n CompanyValidations,\r\n ContactValidations,\r\n HasValidationError,\r\n CompanyModules,\r\n Officephonecheck,\r\n } = this.state;\r\n const values = {\r\n Name, IsElectronicCommunicationAllowed, MaxUsers, AddressType, AddressLine1,\r\n AddressLine2,\r\n City,\r\n State,\r\n Zip,\r\n Phone,\r\n SecondaryPhone,\r\n HomePhone,\r\n Country,\r\n Fax,\r\n Title,\r\n UserPhone,\r\n Email,\r\n UserName,\r\n FirstName,\r\n LastName,\r\n CompanyType,\r\n Modules, SubModuleKey, ModuleKeys, AgreeTerms, EPSCheck, ReCaptcha,\r\n StateList,\r\n CompanyValidations,\r\n ContactValidations,\r\n HasValidationError,\r\n CompanyModules,\r\n Officephonecheck,\r\n };\r\n switch (step) {\r\n case 1:\r\n return (\r\n <AccountType\r\n nextStep={this.nextStep}\r\n prevStep={this.prevStep}\r\n handleChange={this.handleChange}\r\n values={values}\r\n onClose={this.props.onClose}\r\n />\r\n\r\n );\r\n case 2:\r\n return (\r\n <CompanyDetails\r\n nextStep={() => this.regNextStepValidation('owner')}\r\n prevStep={this.prevStep}\r\n handleChange={this.handleChange}\r\n handleCheckChange={(name, e) => this.handleCheckChange(name, e)}\r\n values={values}\r\n errors={this.state.errors}\r\n onClose={this.props.onClose}\r\n moduleChecked={this.moduleChecked}\r\n />\r\n );\r\n // case 3:\r\n // return (\r\n // <ModuleSelection\r\n // nextStep={this.nextStep}\r\n // handleChange={this.handleChange}\r\n // moduleChecked={this.moduleChecked}\r\n // values={values}\r\n // prevStep={this.prevStep}\r\n // onClose={this.props.onClose}\r\n // submoduleItemsToParent={this.state.submoduleItemsToParent || null}\r\n // setSubmoduleItemsToParent={(items) => { this.setState({ submoduleItemsToParent: items }) }}\r\n // />\r\n // );\r\n case 3:\r\n return (\r\n <UserDetails\r\n nextStep={() => this.regNextStepUserValidation('user')}\r\n prevStep={this.prevStep}\r\n handleChange={this.handleChange}\r\n handleChecked={this.handleChecked}\r\n values={values}\r\n errors={this.state.errors}\r\n onClose={this.props.onClose}\r\n handleCheckChange={this.handleCheckChange}\r\n />\r\n );\r\n case 4:\r\n return (\r\n <SignUp\r\n nextStep={this.nextStep}\r\n prevStep={this.prevStep}\r\n handleChange={this.handleChange}\r\n handleChecked={this.handleChecked}\r\n values={values}\r\n errors={this.state.errors}\r\n signuperrors={this.state.signUpError}\r\n singuperrorupdate={this.singuperrorupdate}\r\n onClose={this.props.onClose}\r\n errorSubmit={this.errorSubmit}\r\n handlerecaptchachange={this.handlerecaptchachange}\r\n />\r\n );\r\n case 5:\r\n return (\r\n <Success\r\n onClose={this.props.onClose}\r\n />\r\n )\r\n default: return <></>\r\n }\r\n }\r\n\r\n render() {\r\n const { step } = this.state;\r\n const { classes } = this.props\r\n return <div className={classes.root + ' eps-content-center'} >\r\n <Paper className={classes.paper} elevation={0}>\r\n <Grid container spacing={2}>\r\n {this.handleStepFunc(step)}\r\n </Grid>\r\n </Paper>\r\n </div>\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(OwnerRegistration);\r\n","import React, { Fragment, useEffect, useState } from 'react';\r\nimport MultiAdd from '../../core/controls/components/multiadd';\r\nimport { createRequest, requestApi } from '../../core/controls/helpers/rest';\r\nimport { getEnvVariable } from '../environmentalList';\r\nimport FormHeader from '../../core/modules/form/cformheader';\r\nconst extraProps = {\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Value'\r\n },\r\n}\r\n\r\nconst breadcrumbs = [\r\n { \"link\": \"User - Selected Associates\", \"materialicon\": \"group_add\", className: 'eps-breadcrumb-item ', class: 'text-light' }\r\n]\r\n\r\nexport default function Consultant(props) {\r\n const [selected, SetSelectedCom] = useState([])\r\n\r\n useEffect(() => {\r\n getAll()\r\n }, [])\r\n\r\n const getAll = () => {\r\n const dropLists = [\r\n {\r\n url: getEnvVariable('MasterAdmin') + `/allAssociated?consulatantid=${props.dataItem.UserId}`,//${company.OfficalUserId}`,\r\n type: 'get'\r\n },\r\n ]\r\n Promise.all(dropLists.map(each => requestApi(createRequest(each, {}, null)).catch(error => { return error; }))).then(response => {\r\n const [companies] = response\r\n SetSelectedCom(companies)\r\n })\r\n }\r\n\r\n const handleUpdate = (newData) => { //${company.OfficalUserId}\r\n const update = [\r\n {\r\n url: getEnvVariable('MasterAdmin') + `/api/ExternalUsersConsultant/StatusUpdateForInternal/${getEnvVariable('ModuleKey')}/${newData.Companies.Id}/${newData.UserId}/${newData.RequestStatus}`,\r\n type: 'get',\r\n }\r\n ]\r\n Promise.all(update.map(each => requestApi(createRequest(each, {}, null)).catch(error => { return error; }))).then(response => {\r\n if (response)\r\n getAll()\r\n })\r\n\r\n }\r\n\r\n\r\n const handleBack = () => {\r\n // let path = '/Administration/registrationrequest'\r\n // props.history.push(path)\r\n props.onClose()\r\n }\r\n\r\n return <Fragment >\r\n <FormHeader savebutton={false} editbutton={false} breadcrumbs={breadcrumbs} backbutton={true} handleBack={handleBack} dataItem={props.dataItem} />\r\n <div className='col-sm-12 text-dark mx-4 my-5'>\r\n <MultiAdd\r\n edit={getEnvVariable('AccessPortal') === 'I' ? true : false}\r\n customsave={true}\r\n toolbar={false}\r\n //Urls\r\n handleUpdate={handleUpdate}\r\n columns={[\r\n { title: 'Name', field: 'Companies.Name', editable: 'never' },\r\n {\r\n title: 'Request Status',\r\n field: 'RequestStatus',\r\n lookup: { 'A': 'Approved', 'D': 'Denied', 'P': 'Pending' },\r\n },\r\n ]}\r\n\r\n value={selected}\r\n\r\n />\r\n {/* <div className='row '>\r\n <div className='col-sm-11'> <RadioButtonsGroup handleFieldValue={(e) => handleAllChange(e)} extraProps={extraProps} items={[{ Name: 'Approve All', Value: 'Y' },\r\n { Name: 'Deny All', Value: 'N' }]} /></div>\r\n <div className=\"col-sm-1 float-right\" > <Fab size=\"small\" color='secondary' aria-label=\"save\" onClick={handleSave}>\r\n <SaveIcon />\r\n </Fab></div>\r\n </div>\r\n {selected.map(each => {\r\n return <RadioButtonsGroup label={<u className=\"text-dark fw-bold\">{'Applicant : ' + each.Name}</u>} handleFieldValue={(e) => handleChange(e, each)} items={status} extraProps={extraProps} />\r\n })} */}\r\n </div>\r\n </Fragment>\r\n}","import FormControl from '@material-ui/core/FormControl';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport FormLabel from '@material-ui/core/FormLabel';\r\nimport Radio from '@material-ui/core/Radio';\r\nimport RadioGroup from '@material-ui/core/RadioGroup';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport React, { Component } from 'react';\r\nimport Checkbox from '../../core/controls/components/checkbox';\r\nimport { createRequest, requestApi } from '../../core/controls/helpers/rest';\r\nimport FormHeader from '../../core/modules/form/cformheader';\r\nimport { getEnvVariable } from '../environmentalList';\r\nconst _ = require('lodash');\r\n\r\n\r\nclass RequestApproval extends Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n confirmClickedEvent: false,\r\n modules: '',\r\n requestStatus: {},\r\n subModuleMenu: null,\r\n ApproveAll: getEnvVariable('HideSubmodules') === \"Y\" ? props && props.companyModules && props.companyModules.length > 0 && props.companyModules[0].RequestStatus === 'A' ? true : false : false,\r\n DenyAll: getEnvVariable('HideSubmodules') === \"Y\" ? props && props.companyModules && props.companyModules.length > 0 && props.companyModules[0].RequestStatus === 'D' ? true : false : false,\r\n approveallClickedEvent: false,\r\n hidedeny: getEnvVariable('HideSubmodules') === \"Y\" ? props && props.companyModules && props.companyModules.length > 0 && (props.companyModules[0].RequestStatus === 'D' || props.companyModules[0].RequestStatus === 'A') ? true : false : false,\r\n disableapproveall: getEnvVariable('HideSubmodules') === \"Y\" ? props && props.companyModules && props.companyModules.length > 0 && (props.companyModules[0].RequestStatus === 'A') ? true : false : false,\r\n initialresult: {},\r\n notaccesseditems: [],\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.loadSubModuleMenu()\r\n }\r\n\r\n setApproveDenyStates = () => {\r\n const { companyModules } = this.props\r\n let reqstatus = {}\r\n companyModules && companyModules.length > 0 && companyModules.forEach(element => {\r\n let idval = element.SubModuleId;\r\n let requeststatusval = element.RequestStatus\r\n reqstatus[idval] = requeststatusval\r\n });\r\n let hidedenyval = (_.includes(reqstatus, 'A') || _.includes(reqstatus, 'D')) ? true : false\r\n this.setState({\r\n requestStatus: reqstatus, initialresult: reqstatus, hidedeny: hidedenyval,\r\n disableapproveall: (_.includes(reqstatus, 'A')) ? true : false\r\n })\r\n }\r\n\r\n loadSubModuleMenu() {\r\n let SubModuleMenuRead = {\r\n url: getEnvVariable('MasterAdmin') + `/api/module/` + getEnvVariable('ModuleKey') + `/submodule/All/Active/IsConfigurable`,\r\n \"matchProps\": [{\r\n name: \"Id\",\r\n key: \"Id\",\r\n }],\r\n type: 'get',\r\n }\r\n requestApi(createRequest(SubModuleMenuRead)).then(results => {\r\n console.log(results);\r\n if (Array.isArray(results)) {\r\n let data = [...results]\r\n this.props.companyModules.forEach(element => {\r\n _.remove(data, result => result.Id === element.SubModuleId);\r\n });\r\n\r\n this.setState({ subModuleMenu: results, notaccesseditems: data }, () => {\r\n this.setApproveDenyStates()\r\n });\r\n }\r\n })\r\n }\r\n\r\n componentDidUpdate(prevState, prevProps) {\r\n if (prevState.companyModules != this.props.companyModules) {\r\n if (this.props.companyModules && this.props.companyModules.length > 0) {\r\n let reqstatus = {}\r\n this.props.companyModules && this.props.companyModules.length > 0 && this.props.companyModules.forEach(element => {\r\n let idval = element.SubModuleId;\r\n let requeststatusval = element.RequestStatus\r\n reqstatus[idval] = requeststatusval\r\n });\r\n this.setState({ requestStatus: reqstatus })\r\n }\r\n }\r\n if (prevState.initialresult != this.props.initialresult) {\r\n this.setState({ initialresult: this.props.initialresult })\r\n\r\n }\r\n // if (this.props.save !== prevProps.save) {\r\n // this.setApproveDenyStates()\r\n // }\r\n }\r\n\r\n handleFieldChange = (event) => {\r\n const { name, value } = event.target\r\n let radiodata = { name: event.target.name, value: event.target.value }\r\n if (value === 'A') {\r\n this.setState({\r\n confirmClickedEvent: true, DenyAll: false, radioevt: {\r\n name: event.target.name,\r\n value: event.target.value\r\n }\r\n }, this.changestatus(radiodata, value === 'A' ? 'Registration is set to Approved.' : 'Registration is set to Denied'));\r\n }\r\n else {\r\n let modules = this.props.companyModules;\r\n modules.find(v => v.SubModuleId === name).RequestStatus = value;\r\n //let radioval = {name : value}\r\n this.setState({ confirmClickedEvent: false, ApproveAll: false, DenyAll: false, requestStatus: { ...this.state.requestStatus, [name]: value } }, () => {\r\n this.props.handleApprovalChange(modules, value === 'A' ? 'Registration is set to Approved.' : 'Registration is set to Denied')\r\n })\r\n }\r\n }\r\n\r\n changestatus = (radioevt, message = null) => {\r\n let modules = this.props.companyModules;\r\n let moduleidval = Number(radioevt.name)\r\n let radioval = { [moduleidval]: radioevt.value }\r\n modules.find(v => v.SubModuleId === radioevt.name).RequestStatus = radioevt.value;\r\n //let reqstatus = {[this.state.requestStatus['SubModuleId']] : radioevt.value}\r\n this.setState({\r\n confirmClickedEvent: false, requestStatus: {\r\n ...this.state.requestStatus,\r\n [moduleidval]: radioevt.value\r\n }\r\n }, () => {\r\n this.props.handleApprovalChange(modules, message)\r\n })\r\n }\r\n\r\n resetStatus = () => {\r\n this.setState({ confirmClickedEvent: false, approveallClickedEvent: false });\r\n // this.setState({ requestStatus: this.props.requestStatus });\r\n }\r\n\r\n handleChange = (event) => {\r\n let othername = event.target.name === \"ApproveAll\" ? \"DenyAll\" : \"ApproveAll\"\r\n if (othername != \"DenyAll\" && event.target.checked) {\r\n let requestStatusData = { ...this.state.requestStatus }\r\n let modules = this.props.companyModules;\r\n modules.forEach(element => {\r\n requestStatusData[element.SubModuleId] = 'D';\r\n element['RequestStatus'] = 'D';\r\n });\r\n this.setState({\r\n requestStatus: requestStatusData,\r\n [event.target.name]: event.target.checked, [othername]: false\r\n }, () => {\r\n this.props.handleApprovalChange(modules, 'Registration is set to Denied')\r\n })\r\n\r\n }\r\n else if (othername != \"ApproveAll\" && event.target.checked) {\r\n this.setState({ approveallClickedEvent: true }, () => {\r\n this.changeToApprovestatus();\r\n })\r\n\r\n }\r\n else {\r\n this.setState({ [event.target.name]: event.target.checked, [othername]: false })\r\n }\r\n }\r\n\r\n changeToApprovestatus = () => {\r\n let requestStatusData = { ...this.state.requestStatus }\r\n let modules = this.props.companyModules;\r\n modules.forEach(element => {\r\n requestStatusData[element.SubModuleId] = 'A';\r\n element['RequestStatus'] = 'A';\r\n });\r\n\r\n this.setState({ requestStatus: requestStatusData, ApproveAll: true, DenyAll: false, approveallClickedEvent: false },\r\n () => {\r\n this.props.handleApprovalChange(modules, 'Registration is set to Approved.')\r\n })\r\n\r\n\r\n }\r\n\r\n\r\n handleIcons = () => {\r\n if (this.props.save && this.state.disableapproveall === false) {\r\n const { companyModules } = this.props\r\n let reqstatus = {}\r\n companyModules && companyModules.length > 0 && companyModules.forEach(element => {\r\n let idval = element.SubModuleId;\r\n let requeststatusval = element.RequestStatus\r\n reqstatus[idval] = requeststatusval\r\n });\r\n if ((_.includes(reqstatus, 'A'))) {\r\n this.setState({\r\n disableapproveall: (_.includes(reqstatus, 'A')) ? true : false\r\n })\r\n }\r\n }\r\n\r\n }\r\n\r\n render() {\r\n const { companyModules } = this.props\r\n let hidesubmodules = getEnvVariable('HideSubmodules') === \"Y\" ? true : false\r\n //const { requestStatus } = this.state\r\n if (this.props.save && this.state.disableapproveall === false)\r\n this.handleIcons()\r\n return (\r\n <div className=\"col\">\r\n <FormHeader savebutton={this.state.disableapproveall ? false : true} handleSave={this.props.handleSave}\r\n designprops={true} hasclearfix={true} />\r\n <div className='row'>\r\n <Checkbox className=\"col-2\" label={'Approve'} disabled={this.state.disableapproveall} value={this.state.ApproveAll} handleFieldValue={this.handleChange} name=\"ApproveAll\" />\r\n <Checkbox className=\"col-2\" label={'Deny'} disabled={this.state.hidedeny || this.state.disableapproveall} value={this.state.DenyAll} handleFieldValue={this.handleChange} name=\"DenyAll\" />\r\n </div>\r\n <small style={{ fontSize: '12px' }} className=\"text-secondary\">Note : Once a request is approved, the action cannot be undone.</small>\r\n {\r\n !hidesubmodules && companyModules && companyModules.map((each, index) => {\r\n let x = this.state.subModuleMenu ? _.find(this.state.subModuleMenu, { 'Id': each.SubModuleId }) : null\r\n let radioval = _.isEmpty(this.state.requestStatus) ? \"P\" : this.state.requestStatus[each.SubModuleId]\r\n return (\r\n <div key={index}>\r\n {!(x && x.Key && x.Key === 'VIOLATIONS') &&\r\n <FormControl component=\"fieldset\" >\r\n <FormLabel component=\"legend\">{x ? x['SubModuleName'] : ''}</FormLabel>\r\n <RadioGroup\r\n aria-label=\"Request Approval\"\r\n name={each.SubModuleId}\r\n //value={this.state.requestStatus[each.SubModuleId]}\r\n value={radioval}\r\n onChange={this.handleFieldChange}\r\n >\r\n {(this.state.initialresult[each.SubModuleId] === \"A\" || hidesubmodules) ?\r\n (<div>\r\n <FormControlLabel\r\n value=\"D\"\r\n control={<Radio color=\"primary\" />}\r\n label=\"Deny\"\r\n labelPlacement=\"end\"\r\n disabled\r\n />\r\n <FormControlLabel\r\n value=\"A\"\r\n control={<Radio color=\"primary\" />}\r\n label=\"Approve\"\r\n labelPlacement=\"end\"\r\n disabled={hidesubmodules ? true : false}\r\n />\r\n <FormControlLabel\r\n value=\"P\"\r\n control={<Radio color=\"primary\" />}\r\n label=\"Pending\"\r\n labelPlacement=\"end\"\r\n disabled\r\n />\r\n </div>) :\r\n (<div>\r\n <FormControlLabel\r\n value=\"D\"\r\n control={<Radio color=\"primary\" />}\r\n label=\"Deny\"\r\n labelPlacement=\"end\"\r\n />\r\n <FormControlLabel\r\n value=\"A\"\r\n control={<Radio color=\"primary\" />}\r\n label=\"Approve\"\r\n labelPlacement=\"end\"\r\n />\r\n <FormControlLabel\r\n value=\"P\"\r\n control={<Radio color=\"primary\" />}\r\n label=\"Pending\"\r\n labelPlacement=\"end\"\r\n />\r\n </div>)}\r\n </RadioGroup>\r\n </FormControl>}\r\n </div>\r\n )\r\n })\r\n }\r\n\r\n {/* {\r\n this.state.confirmClickedEvent && <ConfirmDialog title=\"Request Status\" description={\"Do you want to Approve this request ? This action cannot be undone!\"} onSubmit={() => this.changestatus(this.state.radioevt)} onClose={() => this.resetStatus()} ></ConfirmDialog>\r\n }\r\n {\r\n this.state.approveallClickedEvent && <ConfirmDialog title=\"Request Status\" description={\"Do you want to Approve all the requests ? This action cannot be undone!\"} onSubmit={this.changeToApprovestatus} onClose={this.resetStatus} ></ConfirmDialog>\r\n } */}\r\n {\r\n this.state.notaccesseditems && this.state.notaccesseditems.length > 0 && this.state.notaccesseditems.map((each, index) => {\r\n return <Typography variant=\"body1\" className=\"text-secondary pl-3\" display=\"block\" gutterBottom>\r\n {each.DisplayName} : Not Requested\r\n </Typography>\r\n })\r\n }\r\n\r\n </div >\r\n\r\n )\r\n }\r\n}\r\nexport default RequestApproval;","import AppBar from '@material-ui/core/AppBar';\r\nimport Box from '@material-ui/core/Box';\r\nimport Button from '@material-ui/core/Button';\r\nimport ButtonGroup from '@material-ui/core/ButtonGroup';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport Tabs from '@material-ui/core/Tabs';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { bindActionCreators } from 'redux';\r\nimport TextField from '../../core/controls/components/textbox';\r\nimport { GetData } from '../../core/controls/helpers/requests';\r\nimport { createRequest, requestApi } from '../../core/controls/helpers/rest';\r\nimport CForm from '../../core/modules/form/cform';\r\nimport FormHeader from '../../core/modules/form/cformheader';\r\nimport { getEnvVariable } from '../environmentalList';\r\nimport RequestApproval from './index';\r\n//Updated By: vijaya. comments : Added Breadcrumbs.\r\nconst _ = require('lodash');\r\n\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 <Typography\r\n component=\"div\"\r\n role=\"tabpanel\"\r\n hidden={value !== index}\r\n id={`scrollable-force-tabpanel-${index}`}\r\n aria-labelledby={`scrollable-force-tab-${index}`}\r\n {...other}\r\n >\r\n {value === index && <Box p={3}>{children}</Box>}\r\n </Typography>\r\n );\r\n}\r\n\r\nTabPanel.propTypes = {\r\n children: PropTypes.node,\r\n index: PropTypes.any.isRequired,\r\n value: PropTypes.any.isRequired,\r\n};\r\n\r\nfunction a11yProps(index) {\r\n return {\r\n id: `scrollable-force-tab-${index}`,\r\n 'aria-controls': `scrollable-force-tabpanel-${index}`,\r\n };\r\n}\r\n\r\nclass RegistrationRequestApproval extends Component {\r\n\r\n constructor(props) {\r\n super(props)\r\n this.state = {\r\n title: \"Registration Request\",\r\n approvalButtons: [],\r\n opensnackbar: false,\r\n snackbarmessageType: '',\r\n snackbarmessage: '',\r\n results: {},\r\n dataItemVal: this.props.dataItem,\r\n tabvalue: 0,\r\n comments: null,\r\n disabletab: true,\r\n initialrequest: {},\r\n submodulemenudata: null,\r\n message: null,\r\n requestApprovalSave: false\r\n }\r\n this.LayoutForm = React.createRef()\r\n }\r\n\r\n handleSnackBarClose = (event, reason) => {\r\n if (reason === 'clickaway') {\r\n return;\r\n }\r\n this.setState({ opensnackbar: false });\r\n };\r\n\r\n handleApprovalChange = (modules, message) => {\r\n let results = this.state.results;\r\n results.CompanyModules = modules;\r\n this.setState({\r\n approvalButtons: modules,\r\n results: results,\r\n message: message\r\n })\r\n }\r\n\r\n handleState = (inputState) => {\r\n this.setState({\r\n results: inputState.results,\r\n approvalButtons: inputState.results.CompaniesModules,\r\n comments: inputState.results.Comments,\r\n disabletab: false\r\n })\r\n }\r\n\r\n handleBack = () => {\r\n let pathname = this.props.location.pathname;\r\n if (this.props && this.props.match && this.props.match.params && this.props.match.params.Id) {\r\n this.props.match.params.Id = undefined\r\n pathname = pathname.substring(0, pathname.lastIndexOf(\"/\"))\r\n }\r\n this.props.onClose();\r\n this.props.history.push(pathname)\r\n\r\n }\r\n\r\n handleSave = (event) => {\r\n const { options } = this.props;\r\n const { crud, title } = options\r\n const save = crud.update;\r\n let ids = [], id\r\n let violation = _.find(this.state.submodulemenudata, { 'Key': \"VIOLATIONS\" });\r\n let violationId = violation ? violation.Id : null\r\n let resdata = { ...this.state.results }\r\n if (violationId) {\r\n let containsapproved = _.find(resdata.CompaniesModules, { \"RequestStatus\": 'A' })\r\n let companymodulesresdata = resdata.CompaniesModules ? resdata.CompaniesModules.map(res => {\r\n if (res.SubModuleId == violationId && containsapproved) {\r\n return { ...res, RequestStatus: 'A' }\r\n }\r\n return res\r\n }) : null\r\n let companiesmodulesresdata = resdata.CompanyModules ? resdata.CompanyModules.map(res => {\r\n if (res.SubModuleId == violationId && containsapproved) {\r\n return { ...res, RequestStatus: 'A' }\r\n }\r\n return res\r\n }) : null\r\n resdata = { ...resdata, CompanyModules: companymodulesresdata, CompaniesModules: companiesmodulesresdata }\r\n }\r\n if (Array.isArray(save.put.matchProps)) {\r\n save.put.matchProps.forEach(each => {\r\n const { value } = each\r\n ids.push({ key: value, value: this.props.match.params[value] })\r\n })\r\n }\r\n else if (save.put.customProps) {\r\n id = this.props.dataItem[\"Id\"]\r\n }\r\n else {\r\n id = this.props.match.params.routeid\r\n }\r\n let saveurl = {\r\n url: save.put.url + '/{Id}',\r\n message: this.state.message ? this.state.message : \"Saved Sucessfully\",\r\n \"matchProps\": [{\r\n name: \"Id\",\r\n key: \"Id\",\r\n }],\r\n type: 'put',\r\n }\r\n if (save) {\r\n // requestApi(save, (id || ids), this.state.results).\r\n requestApi(createRequest(saveurl, resdata, (id || ids))).then(results => {\r\n if (results.CompaniesModules && results.CompaniesModules.length > 0) {\r\n let reqstatus = {}\r\n results.CompaniesModules.forEach(element => {\r\n let idval = element.SubModuleId;\r\n let requeststatusval = element.RequestStatus\r\n reqstatus[idval] = requeststatusval\r\n });\r\n this.setState({ initialrequest: reqstatus, message: null, requestApprovalSave: _.includes(reqstatus, 'A') ? true : false })\r\n }\r\n // this.props.snackbarMessage('Registration Requests Updated Successfully', 'success')\r\n }).catch(error => {\r\n error.then(err => {\r\n console.log('error---', err)\r\n if (err.errors) this.onError(err.errors)\r\n else this.onError(err)\r\n })\r\n })\r\n }\r\n\r\n }\r\n\r\n assignSubModuleMenu = (submodulemenudata) => {\r\n this.setState({ submodulemenudata: submodulemenudata })\r\n }\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevProps.dataItem != this.props.dataItem) {\r\n this.setState({ dataItemVal: this.props.dataItem })\r\n }\r\n }\r\n\r\n handleEdit = () => {\r\n this.LayoutForm.current.handleEdit();\r\n }\r\n\r\n handleChange = (event, newValue) => {\r\n if (newValue == 0) {\r\n this.setState({ disabletab: true })\r\n }\r\n this.setState({ tabvalue: newValue })\r\n }\r\n\r\n handleFieldChange = (event) => {\r\n this.setState({ comments: event.target.value, results: { ...this.state.results, Comments: event.target.value } })\r\n }\r\n //http://development.delasoft.com:8443/KEPT-master-admin/api/CompanyInternal/consultantCompanyRequest/Update/KEPT/A/3423\r\n\r\n handleStatusChange = (status) => {\r\n const { dataItemVal, results } = this.state;\r\n if ((dataItemVal.RequestStatus && dataItemVal.RequestStatus !== 'A') || results.RequestStatus !== 'A') {\r\n let data = { ...dataItemVal, ...results }\r\n let url = getEnvVariable('MasterAdmin') + `/api/CompanyInternal/consultantCompanyRequest/Update/${getEnvVariable('ModuleKey')}/${status}/${data.Id}`\r\n let message = `Request is ${status === 'A' ? 'approved' : 'denied'} and an email will be sent to consultant`\r\n GetData(url, true, message).then(res => {\r\n this.setState({ dataItemVal: { ...data, ['RequestStatus']: status } })\r\n })\r\n }\r\n }\r\n\r\n getHeader = (type) => {\r\n switch (type) {\r\n case 'T':\r\n return [\r\n { \"link\": \"Consultant Request\", appendval: 'Name', \"materialicon\": \"connect_without_contact\", className: 'eps-breadcrumb-item ', class: 'text-light' }\r\n ]\r\n default: return [\r\n { \"link\": \"Registration Request\", appendval: 'Name', \"materialicon\": \"how_to_vote\", className: 'eps-breadcrumb-item ', class: 'text-light' }\r\n ]\r\n }\r\n }\r\n\r\n render() {\r\n const { compmap, options, accessPermissions, accessLevelPermissions, onPrevItemClick, onNextItemClick } = this.props;\r\n const { dataItemVal, tabvalue, results } = this.state\r\n return <div style={{ height: window.innerHeight - 50 }}>\r\n <FormHeader savebutton={false} editbutton={false} handleEdit={this.handleEdit} handleSave={this.handleSave} breadcrumbs={this.getHeader(results.Type)} backbutton={true} handleBack={this.handleBack} dataItem={dataItemVal} onNextItemClick={onNextItemClick} onPrevItemClick={onPrevItemClick} navigateup={true} navigatedown={true} />\r\n <AppBar position=\"static\" color=\"white\">\r\n <Tabs\r\n value={tabvalue}\r\n onChange={this.handleChange}\r\n indicatorColor=\"primary\"\r\n textColor=\"primary\"\r\n variant=\"scrollable\"\r\n scrollButtons=\"on\"\r\n aria-label=\"scrollable auto tabs example\"\r\n >\r\n\r\n <Tab label=\"Applicant Information\" {...a11yProps(0)} />\r\n {results && results.Name !== 'NA' && results.Type === 'C' && <Tab label=\"Approvals\" disabled={this.state.disabletab} {...a11yProps(1)} />}\r\n </Tabs>\r\n </AppBar>\r\n <TabPanel value={tabvalue} index={0}>\r\n\r\n {results.Type === 'T' && <div className='float-right'>\r\n <small> Request Status : </small>\r\n {((dataItemVal.RequestStatus && dataItemVal.RequestStatus === 'D') || results.RequestStatus === 'D') && <span className='badge badge-danger'>Denied</span>}\r\n {((dataItemVal.RequestStatus && dataItemVal.RequestStatus === 'A') || results.RequestStatus === 'A') && <span className='badge badge-success'>Approved</span>}\r\n {((dataItemVal.RequestStatus && dataItemVal.RequestStatus === 'P') || results.RequestStatus === 'P') && <span className='badge badge-info'>Pending</span>}\r\n </div>\r\n } <br />\r\n {results.Type === 'T' && ((dataItemVal.RequestStatus && dataItemVal.RequestStatus !== 'A') || results.RequestStatus !== 'A') && <div className='float-right pt-2'><ButtonGroup variant=\"contained\">\r\n <Button color=\"primary\" onClick={() => { this.handleStatusChange('A') }}>Approve</Button>\r\n <Button color=\"secondary\" disabled={((dataItemVal.RequestStatus && dataItemVal.RequestStatus === 'D') || results.RequestStatus === 'S')} onClick={() => { this.handleStatusChange('D') }}>Deny</Button>\r\n </ButtonGroup></div>}\r\n <CForm ref={this.LayoutForm} {...options.embedform} compmap={compmap} getState={this.handleState} edit={false} windowHeight={true} dataItem={dataItemVal} />\r\n </TabPanel>\r\n <TabPanel value={tabvalue} index={1}>\r\n <RequestApproval assignSubModuleMenu={this.assignSubModuleMenu} companyModules={this.state.approvalButtons} initialresult={this.state.initialrequest}\r\n handleApprovalChange={(modules, message) => this.handleApprovalChange(modules, message)}\r\n handleSave={this.handleSave} save={this.state.requestApprovalSave} requestApprovalSaveFnc={() => { this.setState({ requestApprovalSave: false }) }} />\r\n <div className='col-sm-8'>\r\n <TextField\r\n label=\"Comments\"\r\n value={this.state.comments}\r\n handleFieldValue={(e) => this.handleFieldChange(e)}\r\n multiline\r\n rowsMax='4'\r\n />\r\n </div>\r\n </TabPanel>\r\n </div>\r\n\r\n }\r\n}\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({}, dispatch);\r\n}\r\n\r\nRegistrationRequestApproval = connect(null, mapActions, null, { forwardRef: true })(RegistrationRequestApproval)\r\nexport default withRouter(RegistrationRequestApproval)\r\n","/**\r\n * @file Manages the functionalities of User Access Control based on Groups->Roles->Counties.\r\n * @author Sri Pooja <sri.pooja@delasoft.com>\r\n */\r\nimport { Chip, Fab } from '@material-ui/core';\r\nimport Accordion from '@material-ui/core/Accordion';\r\nimport AccordionDetails from '@material-ui/core/AccordionDetails';\r\nimport AccordionSummary from '@material-ui/core/AccordionSummary';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\r\nimport SaveIcon from '@material-ui/icons/Save';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { useParams } from 'react-router-dom';\r\nimport { getEnvVariable } from '../../../../modules/environmentalList';\r\nimport { createRequest, requestApi } from '../../helpers/rest';\r\nimport CheckboxesTags from '../checkautocomplete';\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n width: '100%',\r\n },\r\n});\r\n\r\nexport default function UserAccessControl(props) {\r\n const params = useParams();\r\n const classes = useStyles();\r\n const [data, setData] = useState(null)\r\n const [refresh, setRefresh] = useState(false)\r\n const [user, setuser] = useState(null)\r\n const [authDetails, setAuthDetails] = useState(null)\r\n const [groupIndeterminate, setGroupIndeterminate] = useState(false)\r\n const { options, components, extraProps, match, dataItem } = props\r\n const { read } = options ? options : {}\r\n var get = read.filter(e => e.type === 'get')\r\n var customProps = get.filter(e => e.customProps ? e : null)\r\n let ids = [], id;\r\n var urls = [];\r\n\r\n\r\n /**\r\n * Initial Request to get the data\r\n */\r\n useEffect(() => {\r\n if (customProps.length > 0) {\r\n id = customProps ? (dataItem.Id || dataItem.userId) : null\r\n }\r\n if (options && options.read) {\r\n let read = options.read.filter(each => { if (each.type === 'get') return each })\r\n read = read.filter(each => each.customProps ? each.customProps : each.routeProps)\r\n if (id && read && customProps.length > 0) {\r\n read.forEach(e => {\r\n var urls = e.url.slice(-1);\r\n e.url = urls == \"/\" ? e.url + '' + id : e.url\r\n })\r\n }\r\n Promise.all(read.map(each => requestApi(createRequest(each, {}, params)))).then(resp => {\r\n const [accesscontrol, user] = resp\r\n setData(accesscontrol)\r\n setuser(user)\r\n })\r\n }\r\n }, [params.Id])\r\n\r\n useEffect(() => {\r\n if (getEnvVariable('ModuleKey') === 'WRS') {\r\n let read = [\r\n {\r\n url: getEnvVariable('MasterAdmin') + `/api/IPUsersAuthorizations/GetRequestByUserId/`+props.dataItem.userId ? props.dataItem.userId : props.dataItem.Id,\r\n type: 'get',\r\n // routeProps: [\r\n // {\r\n // name: \"Id\",\r\n // key: \"Id\",\r\n // },\r\n // ]\r\n }\r\n ]\r\n Promise.all(read.map(each => requestApi(createRequest(each, {}, params)))).then(resp => {\r\n const [reqAuthDetails] = resp\r\n setAuthDetails(reqAuthDetails)\r\n setRefresh(!refresh)\r\n })\r\n }\r\n }, [params.Id])\r\n\r\n const handleSave = () => {\r\n let url = options.read.filter(each => { if (each.type === 'post') return each })\r\n requestApi(createRequest(url[0], data, params)).then(resp => {\r\n if (resp)\r\n setData(data)\r\n })\r\n }\r\n\r\n const handleSubItems = (items, check) => {\r\n return items.map(each => {\r\n if (each && each.items && each.items.length > 0) {\r\n each.checked = check;\r\n handleSubItems(each.items, check)\r\n }\r\n else each.checked = check;\r\n return each\r\n })\r\n }\r\n\r\n /**\r\n * on click on group , selecting all the sub roles and counties\r\n */\r\n const checkGroupSection = (evt, index) => {\r\n evt.stopPropagation()\r\n let each = data[index];\r\n if (each && each.items && each.items.length > 0) {\r\n each.checked = !each.checked\r\n each.items = handleSubItems(each.items, each.checked);\r\n }\r\n else {\r\n each.checked = !each.checked\r\n }\r\n data[index] = each;\r\n setData(data);\r\n setRefresh(!refresh)\r\n }\r\n\r\n const checkRoleSection = (evt, index, parent) => {\r\n evt.stopPropagation()\r\n let each = data[parent]['items'][index];\r\n if (each && each.items && each.items.length > 0) {\r\n each.checked = !each.checked\r\n each.items = handleSubItems(each.items, each.checked);\r\n }\r\n else {\r\n each.checked = !each.checked\r\n }\r\n data[parent]['items'][index] = each;\r\n if (data[parent]) {\r\n if (data[parent]['items'].every(item => item.checked === true))\r\n data[parent].checked = true\r\n else data[parent].checked = false\r\n }\r\n setData(data);\r\n setRefresh(!refresh)\r\n }\r\n\r\n const handleCountyChange = (evt, parent, index) => {\r\n const { name, value } = evt.target\r\n let each = data[parent]['items'][index];\r\n let tempval = value.split(',');\r\n if (each && each.items && each.items.length > 0)\r\n each.items.map(item => {\r\n if (tempval.includes(item.id.toString())) {\r\n item.checked = true;\r\n }\r\n else item.checked = false\r\n })\r\n data[parent]['items'][index] = each;\r\n if (data[parent] && data[parent]['items'][index] && data[parent]['items'][index].items) {\r\n if (data[parent]['items'][index].items.every(item => item.checked === true)) {\r\n data[parent].checked = true\r\n data[parent]['items'][index].checked = true\r\n }\r\n else {\r\n data[parent].checked = false\r\n data[parent]['items'][index].checked = false\r\n }\r\n }\r\n setGroupIndeterminate({ [parent]: data[parent]['items'][index].items.some(item => item.checked === true) ? true : false })\r\n\r\n setData(data);\r\n setRefresh(!refresh)\r\n }\r\n\r\n const handleIndetermineGroupCheck = (group) => {\r\n let indeterminate = false\r\n if (group && group.items && group.items.length > 0) {\r\n indeterminate = group.items.some(each => {\r\n return each.checked === true\r\n })\r\n if (indeterminate === false) {\r\n indeterminate = group.items.some(each => {\r\n if (each && each.items && each.items.length > 0) {\r\n return each.items.some(eachItem => {\r\n return eachItem.checked === true\r\n })\r\n }\r\n })\r\n }\r\n return indeterminate\r\n }\r\n else return false\r\n }\r\n\r\n return <div className='col-12 py-1'>\r\n <Typography component={'title'}>{options.title || 'User Access Control'}</Typography>\r\n {refresh}\r\n {authDetails && <Accordion defaultExpanded={true}>\r\n <AccordionSummary\r\n style={{ backgroundColor: getEnvVariable('ModuleKey') === 'WRS' ? '#074078' : '#1976d2', color: 'white', maxHeight: '45px', minHeight: '45px' }}\r\n expandIcon={<ExpandMoreIcon color='inherit' style={{ color: 'white' }} />}\r\n aria-controls=\"panel1a-content\"\r\n id=\"panel1a-header\"\r\n >\r\n <Typography className={classes.heading}>Authorization Details : {\" \" + authDetails.FirstName + \" \" + authDetails.LastName} </Typography>\r\n </AccordionSummary>\r\n <AccordionDetails>\r\n <div className='col-12'>\r\n <div className='row'>\r\n <div className='col-6'><small className='text-secondary'>FirstName : </small> {\" \" + authDetails.FirstName}</div>\r\n <div className='col-6'><small className='text-secondary'>LastName : </small> {\" \" + authDetails.LastName}</div>\r\n </div>\r\n <div className='row col-12'><small className='text-secondary'>Subject : </small> {\" \" + authDetails.Subject}</div>\r\n <div className='row col-12'><small className='text-secondary'>Body : </small> {\" \" + authDetails.Body}</div>\r\n </div>\r\n </AccordionDetails>\r\n </Accordion>}\r\n {user && user.IsAdmin !== 'Y' && customProps && customProps.length <= 0 && <Fab className='float-end m-2' size='small' color='primary' onClick={handleSave}><SaveIcon /></Fab>}\r\n <div class=\"clearfix py-2\"></div>\r\n <div className={classes.root}>\r\n {data && data.length > 0 && (data || []).map((each, index) => {\r\n return <Accordion key={'parent-' + index}>\r\n <AccordionSummary\r\n style={{ backgroundColor: getEnvVariable('ModuleKey') === 'WRS' ? '#074078' : '#1976d2', color: 'white', maxHeight: '45px', minHeight: '45px' }}\r\n expandIcon={<ExpandMoreIcon color='inherit' style={{ color: 'white' }} />}\r\n aria-label=\"Expand\"\r\n aria-controls=\"additional-actions1-content\"\r\n id=\"additional-actions1-header\"\r\n >\r\n {user && user.IsAdmin !== 'Y' ? (customProps.length <= 0 ? <FormControlLabel\r\n\r\n aria-label=\"Acknowledge\"\r\n onFocus={(event) => event.stopPropagation()}\r\n onClick={(event) => checkGroupSection(event, index)}\r\n control={<Checkbox checked={each.checked || (each.items.every(item => item.checked === true) ? true : false)} color='inherit' style={{ color: 'white' }}\r\n indeterminate={each.items.every(item => item.checked === true) ? false :\r\n handleIndetermineGroupCheck(each) ? true : groupIndeterminate[index]}\r\n />}\r\n label={<small className='fw-bold '>{each.text}</small>}\r\n /> : <div className='fw-bold'>{each.text}</div>) : <div className='fw-bold'>{each.text}</div>}\r\n </AccordionSummary>\r\n <div className='col-12'>\r\n <div className='row fw-bold' >\r\n <div className=\" col-3\">Roles</div>\r\n <div className=\"col-7\" >{getEnvVariable('ModuleKey') === 'AMES' ? 'Regions' : 'Counties'}</div>\r\n </div>\r\n {/* style={{ color: 'white', backgroundColor: 'rgb(4 133 185)', }} */}\r\n </div>\r\n {each.items && each.items.length > 0 && (each.items || []).map((subeach, subindex) => {\r\n return <AccordionDetails key={'child-' + subindex}>\r\n <div className='row col-12 py-2'>\r\n {user && user.IsAdmin !== 'Y' ? (customProps.length <= 0 ? <div className='col-3'><FormControlLabel\r\n aria-label=\"Acknowledge\"\r\n onFocus={(event) => event.stopPropagation()}\r\n onClick={(event) => checkRoleSection(event, subindex, index)}\r\n control={<Checkbox checked={subeach.checked || subeach.items.every(item => item.checked === true)}\r\n style={{ color: 'white' }}\r\n indeterminate={subeach.items.every(item => item.checked === true) ? false :\r\n (subeach.items.some(item => item.checked === true) ? true : false)}\r\n />}\r\n label={subeach.text}\r\n /></div> : <div className='col'>{subeach.text}</div>) : <div className='col'>{subeach.text}</div>}\r\n {user && user.IsAdmin !== 'Y' ? (customProps.length <= 0 ? <div className='col-7' >\r\n <CheckboxesTags limitTags={2} value={(subeach.items.map(function (a) { if (a.checked === true) return a.id })).join(',') || ''}\r\n ismulti={true} items={subeach.items} handleFieldValue={(evt) => handleCountyChange(evt, index, subindex)} extraProps={{\r\n transformProps: {\r\n label: 'text',\r\n value: 'id'\r\n }\r\n }}\r\n />\r\n </div> : <div className='col-7' >{subeach.items.map(a => { if (a.checked === true) return <Chip label={a.text} className='ml-1' variant=\"outlined\" /> })}</div>) :\r\n <div className='col-7' >{subeach.items.map(a => { if (a.checked != null) return <Chip label={a.text} className='ml-1' variant=\"outlined\" /> })}</div>}\r\n </div>\r\n </AccordionDetails>\r\n })}\r\n </Accordion>\r\n })}\r\n </div>\r\n </div>\r\n}","import Button from '@material-ui/core/Button';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport React, { useEffect } from 'react';\r\nimport { getEnvVariable } from '../../../modules/environmentalList';\r\nimport { GetData } from '../helpers/requests';\r\nimport { useParams } from 'react-router-dom';\r\n\r\nconst StyledMenu = withStyles({\r\n paper: {\r\n border: '1px solid #d3d4d5',\r\n },\r\n})((props) => (\r\n <Menu\r\n elevation={0}\r\n getContentAnchorEl={null}\r\n anchorOrigin={{\r\n vertical: 'bottom',\r\n horizontal: 'center',\r\n }}\r\n transformOrigin={{\r\n vertical: 'top',\r\n horizontal: 'center',\r\n }}\r\n {...props}\r\n />\r\n));\r\n\r\nconst StyledMenuItem = withStyles((theme) => ({\r\n root: {\r\n '&:focus': {\r\n backgroundColor: theme.palette.primary.main,\r\n '& .MuiListItemIcon-root, & .MuiListItemText-primary': {\r\n color: theme.palette.common.white,\r\n },\r\n },\r\n },\r\n}))(MenuItem);\r\n\r\nexport default function CustomizedMenus(props) {\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n const signOptions = getEnvVariable('AuthorizationLogins');\r\n const params = useParams()\r\n\r\n useEffect(() => {\r\n if ((props && props.options && props.options.type === 'R') || (params && params.guid))\r\n window.location.replace(getEnvVariable('AuthorizationScreen') + 'forgot/resetpassword/' + params.guid)\r\n }, [params])\r\n\r\n\r\n const handleClick = (event) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const handleRoute = (each) => {\r\n let url = getEnvVariable('Auth') + '/api/UserAuth/AuthType/' + getEnvVariable(\"AccessPortal\");\r\n GetData(`${url}`).then(response => {\r\n if (response['OAuth'] === 'Y') {\r\n // localStorage.setItem('AccessPortal', each.AccessPortal || 'D')\r\n window.location.replace(each.AuthorizationPath)\r\n }\r\n })\r\n }\r\n\r\n \r\n\r\n return (\r\n <div >\r\n <Button\r\n aria-controls=\"customized-menu\"\r\n aria-haspopup=\"true\"\r\n style={{ color: 'inherit' }}\r\n onClick={handleClick}\r\n >\r\n Sign In\r\n </Button>\r\n <StyledMenu\r\n id=\"customized-menu\"\r\n anchorEl={anchorEl}\r\n // keepMounted\r\n open={Boolean(anchorEl)}\r\n onClose={handleClose}\r\n >\r\n {signOptions && signOptions.length > 0 && signOptions.map(each => {\r\n return <StyledMenuItem>\r\n <ListItemText primary={each.Name} onClick={() => handleRoute(each)} />\r\n </StyledMenuItem>\r\n })}\r\n </StyledMenu>\r\n </div>\r\n );\r\n}\r\n","\r\nconst grid = 8;\r\nexport const getSection = (count, offset) =>\r\n Array.from({ length: count }, (v, k) => k).map(k => ({\r\n Id: `Section-${k + offset}`,\r\n Name: `Section ${k + offset}`,\r\n fields: getFields(count+5,(k*count)+offset)\r\n }));\r\n\r\nexport const getFields = (count, offset) =>\r\n Array.from({ length: count }, (v, k) => k).map(k => ({\r\n Id: `Field-${k + offset}`,\r\n Name: `Field ${k + offset}`\r\n }));\r\n\r\nexport const getList = (state, droppableId) =>{\r\n if(state.droppables!=null && state.droppables.length>0){\r\n const sourcedroppables= state.droppables.filter(f=>f.dndId==droppableId);\r\n if(sourcedroppables!==null && sourcedroppables.length>0)\r\n return sourcedroppables[0].items;\r\n }\r\n return [];\r\n};\r\n\r\nexport const reorder = (list, startIndex, endIndex) => {\r\n const result = Array.from(list);\r\n const [removed] = result.splice(startIndex, 1);\r\n result.splice(endIndex, 0, removed);\r\n\r\n return result;\r\n};\r\n\r\nexport const move = (source, destination, droppableSource, droppableDestination) => {\r\n const sourceClone = Array.from(source);\r\n const destClone = Array.from(destination);\r\n const [removed] = sourceClone.splice(droppableSource.index, 1);\r\n destClone.splice(droppableDestination.index, 0, removed);\r\n const result = {};\r\n result[droppableSource.droppableId] = sourceClone || [];\r\n result[droppableDestination.droppableId] = destClone || [];\r\n return result;\r\n};\r\n\r\nexport const getSectionStyle = (isDragging, draggableStyle) => ({\r\n userSelect: 'none',\r\n\r\n border: '1px solid ' + (isDragging ? 'skyblue' : 'lightgrey'),\r\n //border:(isDragging ? '1px solid skyblue' : '0px'),\r\n background: isDragging ? 'skyblue' : 'none',\r\n ...draggableStyle\r\n});\r\n\r\nexport const getRowStyle = (isDragging, draggableStyle) => ({\r\n userSelect: 'none',\r\n borderBottom:(isDragging ? '1px solid skyblue' : '0px !important'),\r\n ...draggableStyle\r\n});\r\n\r\nexport const getRowFieldStyle = (isDragging, draggableStyle) => ({\r\n userSelect: 'none',\r\n border:(isDragging ? '1px solid skyblue' : '0px'),\r\n background: isDragging ? 'grey' : 'none',\r\n ...draggableStyle\r\n});\r\n\r\nexport const getFieldStyle = (isDragging, draggableStyle) => ({\r\n userSelect: 'none',\r\n //padding: grid * 2,/\r\n background: isDragging ? 'skyblue' : 'lightgrey',\r\n border:(isDragging ? '1px solid skyblue' : '0px'),\r\n ...draggableStyle\r\n});\r\n\r\n\r\nexport const getFieldComponentStyle = (isDragging, draggableStyle,isSectionField) => ({\r\n userSelect: 'none',\r\n //padding: grid * 2,/\r\n background: (isDragging ? 'skyblue' : (isSectionField ? 'none' : 'lightgrey')),\r\n border:(isDragging ? '2px solid skyblue' : (isSectionField ? '2px solid white' : '0px')),\r\n ...draggableStyle\r\n});\r\n\r\n\r\nexport const getListStyle = isDragging => ({\r\n border:(isDragging ? '1px solid skyblue' : '0px'),\r\n});\r\nexport const getNestedListStyle = isDragging => ({\r\n border:(isDragging ? '1px solid skyblue' : '0px'),\r\n});\r\n\r\n\r\nexport const getFieldListStyle = isDragging => ({\r\n borderBottom:(isDragging ? '1px solid skyblue' : '0px !important'),\r\n border:(isDragging ? '1px solid skyblue' : '1px dotted lightgrey') ,\r\n});\r\n\r\n\r\nexport function IsEqual(l,r) {\r\n return (l+\"\")=== (r+\"\");\r\n};\r\n\r\nexport function Clone(jsonObj) {\r\n return jsonObj!=null?JSON.parse(JSON.stringify(jsonObj)):{};//// Object.assign({},settings.row);\r\n};\r\n\r\nexport function getListClass(direction) {\r\n if(direction===\"NestedItemStyle\"){\r\n return `NestedItemStyle`;\r\n }\r\n else if(direction===\"sectionList\"){\r\n return `sectionList`;\r\n }else if(direction===\"NestedListStyle\"){\r\n return `NestedListStyle`;\r\n }\r\n\r\n else if(direction===\"sectionvertical\"){\r\n return `SectionVerticalList`;\r\n }\r\n else if(direction===\"vertical\"){\r\n return `VerticalList`;\r\n }else{\r\n return `HorizontalList`;\r\n }\r\n}\r\n\r\nexport function getFieldClass(direction) {\r\n if(direction===\"vertical\"){\r\n return `VerticalField`;\r\n }else{\r\n return `HorizontalField`;\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport CTextBox from '../../../form/ctextbox';\r\nimport CRadioGroup from '../../../form/cradiogroup';\r\nimport CCheckBoxGroup from '../../../form/ccheckboxgroup';\r\nimport CLabel from '../../../form/clabel';\r\nimport CCheckbox from '../../../form/cformcheckbox';\r\nimport CDateTime from '../../../form/materialpicker'\r\nimport CDropDown from '../../../form/cdropdown';\r\nimport CDate from '../../../form/materialdatepicker'\r\nimport CTime from '../../../form/materialtimepicker'\r\nimport CMultiDropdown from '../../../../controls/components/checkautocomplete'\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport SettingsIcon from '@material-ui/icons/Settings';\r\nimport { Button } from '@material-ui/core';\r\n\r\nclass FieldsConfig extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n options: this.props.options\r\n };\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n }\r\n\r\n render() {\r\n const { FieldName, section, field } = this.state.options\r\n const { OnSettings } = this.props\r\n const { FieldType } = field\r\n return (\r\n <span>\r\n <span className=\"fieldComponents\">\r\n {\r\n (FieldType === \"TB\" || FieldType === \"RT\" || FieldType === \"TBB\" ||\r\n FieldType === \"TA\" || FieldType === \"N\" || FieldType === \"DN\" || FieldType === \"P\" || FieldType === \"C\")\r\n && <CTextBox options={{ \"name\": FieldName, label: FieldName, initialvalue: \"\", disabled: true }} currentValue={{ value: \"\", error: \"\" }} />\r\n }{\r\n (FieldType === \"HM\" || FieldType === \"LB\" || FieldType === \"L\" || FieldType === \"ULB\" || FieldType === 'G') && <CLabel label={FieldName} name={FieldName} options={{ \"name\": FieldName, label: FieldName }} />\r\n }\r\n {\r\n (FieldType === \"RB\") && <CRadioGroup options={{ \"name\": FieldName, label: FieldName, value: \"1\", disabled: true, items: [{ \"options\": { \"label\": \"Option 1\", value: \"1\" } }, { \"options\": { \"label\": \"Option 2\", value: \"2\" } }] }} currentValue={{ value: \"\", error: \"\" }} />\r\n }\r\n {\r\n (FieldType === \"B\" || FieldType === \"RC\") && <CRadioGroup options={{ \"name\": FieldName, label: FieldName, value: \"N\", disabled: true, items: [{ \"options\": { \"label\": \"Yes\", value: \"Y\" } }, { \"options\": { \"label\": \"No\", value: \"N\" } }] }} currentValue={{ value: \"\", error: \"\" }} />\r\n }\r\n {\r\n (FieldType === \"CSC\") && <CCheckbox label={FieldName} options={{ \"name\": FieldName, value: \"N\", disabled: true, items: [{ \"options\": { \"label\": \"Yes\", value: \"Y\" } }, { \"options\": { \"label\": \"No\", value: \"N\" } }] }} currentValue={{ value: \"\", error: \"\" }} />\r\n }\r\n\r\n {\r\n (FieldType === \"CB\" || FieldType === \"CF\") && <CCheckBoxGroup options={{ \"name\": FieldName, label: FieldName, value: \"1\", disabled: true }} dropdownvalues={[{ \"options\": { \"label\": \"Option 1\", value: \"1\" } }, { \"options\": { \"label\": \"Option 2\", value: \"2\" } }]} currentValue={{ value: \"\", error: \"\" }} />\r\n }\r\n {\r\n (FieldType === \"DS\" || FieldType === \"CS\" || FieldType === \"CM\" || FieldType === \"AC\") && <CDropDown options={{ \"name\": FieldName, label: FieldName, initialvalue: \"1\", disabled: true, values: [{ \"name\": `select ${FieldName}`, value: \"1\" }] }} currentValue={{ value: \"1\", error: \"\" }} />\r\n }\r\n {\r\n (FieldType === \"DT\") && <CDateTime options={{ \"name\": FieldName, label: FieldName, initialvalue: \"1\", disabled: true }} value={new Date()} />\r\n }\r\n {\r\n (FieldType === \"D\") && <CDate options={{ \"name\": FieldName, label: FieldName, initialvalue: \"1\", disabled: true }} value={new Date()} />\r\n }\r\n {\r\n (FieldType === \"T\") && <CTime options={{ \"name\": FieldName, label: FieldName, initialvalue: \"1\", disabled: true }} value={new Date()} />\r\n }\r\n {\r\n (FieldType === \"DM\") && <CMultiDropdown name={FieldName} label={FieldName} value=\"1,2\" disabled={true} items={[{ 'name': `select ${FieldName} 1`, 'id': '1' }, { 'name': `field 2`, 'id': '2' }]} extraProps={{ transformProps: { label: 'name', value: 'id' } }} />\r\n }\r\n {\r\n (FieldType === \"BU\" || FieldType === \"RBT\" || FieldType === \"LB-BU\") && <Button variant='outlined' disabled={true}>{FieldName}</Button>\r\n }\r\n </span>\r\n <span className=\"fieldSettings m-2\" onClick={(ev) => OnSettings(ev, { ...section }, { ...field })} title=\"Settings\" > <IconButton aria-label=\"delete\" >\r\n <SettingsIcon fontSize=\"small\" />\r\n </IconButton></span>\r\n </span>\r\n );\r\n }\r\n}\r\n\r\nexport default FieldsConfig;","import * as React from 'react';\r\nimport { Draggable } from 'react-beautiful-dnd';\r\nimport * as DNDSettings from './util/dndSettings'\r\nimport FieldsConfig from './util/fieldsConfig'\r\n\r\nclass CRowDraggable extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isHovering: false\r\n }\r\n }\r\n OnMouseHover = () => {\r\n this.setState({ isHovering: true })\r\n }\r\n onMouseLeave = () => {\r\n this.setState({ isHovering: false })\r\n }\r\n\r\n render() {\r\n const { section, direction, dropclazzName, dragclazzName, splitName, field, draggableIndex, showFieldActions, OnSettings } = this.props;\r\n // const substring = (splitName === true && field.Name.length >= 200) ? field.Name.substring(0, 200) + \"...\" : field.Name;\r\n // const title = (splitName === true && field.Name.length >= 200) ? field.Name : \"\";\r\n return (\r\n <Draggable\r\n key={field.dndId}\r\n draggableId={`RowDG-${field.dndId} `}\r\n index={draggableIndex}\r\n className={dropclazzName}\r\n >\r\n {(rp, rs) => (\r\n <div\r\n onMouseEnter={this.OnMouseHover}\r\n onMouseLeave={this.onMouseLeave}\r\n ref={rp.innerRef}\r\n {...rp.draggableProps}\r\n {...rp.dragHandleProps}\r\n className={dragclazzName}\r\n title={field.Name}\r\n style={DNDSettings.getFieldComponentStyle(\r\n rs.isDragging,\r\n rp.draggableProps.style,\r\n showFieldActions\r\n )}>\r\n <div className=\"fieldActionsWrapper\">\r\n {showFieldActions && <FieldsConfig options={{ \"FieldType\": \"TB\", \"FieldName\": field.Name, section: section, field: field }} OnSettings={OnSettings} />}\r\n {!showFieldActions && field.Name}\r\n </div>\r\n {rp.placeholder}\r\n </div>\r\n )}\r\n </Draggable>\r\n );\r\n }\r\n}\r\nexport default CRowDraggable;\r\n","import * as React from 'react';\r\nimport * as DNDSettings from './util/dndSettings'\r\nimport { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd'; \r\n\r\nimport CRowDraggable from './cRowDraggable' \r\n/*\r\n { this.state.isHovering && <div className=\"actionPanel\">\r\n {row.canDrag && <span {...sdp.dragHandleProps} className=\"dragHandle\" ><Icon>open_with</Icon></span>} \r\n </div> }\r\n*/\r\nclass CRowDroppable extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isHovering: false\r\n }\r\n }\r\n OnMouseHover = () => {\r\n this.setState({ isHovering: !this.state.isHovering })\r\n }\r\n\r\n\r\n render() {\r\n const {section, row,sdp,direction,dropclazzName,OnMouseHover,OnSettings} = this.props;\r\n return (\r\n <Droppable \r\n key={row.dndId} \r\n droppableId={`SecDP-${row.dndId}`}\r\n direction={direction} type={row.dropType}>\r\n {(p, s) => (\r\n <div className=\"eps-test2\">\r\n <div ref={p.innerRef}\r\n className={dropclazzName}\r\n onMouseEnter={this.OnMouseHover}\r\n onMouseLeave={this.OnMouseHover}\r\n style={DNDSettings.getFieldListStyle(s.isDraggingOver)}> \r\n {row.fields && row.fields.map((field, index) => ( \r\n <div {...p.draggableProps} style={DNDSettings.getRowFieldStyle(p.isDragging)} > \r\n {field && <CRowDraggable section={section} direction={direction} dropclazzName={row.dropclazzName} splitName={row.splitName} dragclazzName={row.dragclazzName} field={field} draggableIndex={index} showFieldActions={row.showFieldActions} OnSettings={OnSettings}/>} \r\n </div>\r\n ))} \r\n {p.placeholder}\r\n </div>\r\n </div>\r\n )}\r\n </Droppable>\r\n );\r\n }\r\n}\r\n\r\nexport default CRowDroppable; ","import { Droppable } from \"react-beautiful-dnd\";\r\nimport CSectionDraggable from './cSectionDraggable';\r\nimport * as DNDSettings from './util/dndSettings';\r\n\r\nconst CSubSectionsContainer = ({ sectionConfig, mainSections, errors, direction, clazzName, wrapperWlazzName, getSubSections,\r\n droptype, isSectionsOpen, OnAddSubSection, OnAddRow, OnMoveDown, OnMoveUp, CanShowMoveUp, CanShowMoveDown, OnSectionSettings, OnSectionRemove, OnRowSettings }) =>\r\n\r\n < Droppable droppableId={`Sec-${droptype}`} type=\"section\" direction={direction} >\r\n\r\n <div>\r\n {(sp, ss) => (\r\n <div ref={sp.innerRef} className={clazzName}\r\n style={DNDSettings.getListStyle(ss.isDraggingOver)}>\r\n <div className={wrapperWlazzName}>\r\n {mainSections && mainSections.length > 0 && mainSections.map((section, index) => (\r\n section && <div><CSectionDraggable sectionConfig={sectionConfig} section={section} getSubSections={getSubSections} draggable={index} OnSectionSettings={OnSectionSettings} OnSectionRemove={OnSectionRemove} OnRowSettings={OnRowSettings} OnAddSubSection={OnAddSubSection} OnAddRow={OnAddRow} OnMoveDown={OnMoveDown} OnMoveUp={OnMoveUp}\r\n CanShowMoveUp={CanShowMoveUp} errors={errors} CanShowMoveDown={CanShowMoveDown} isSectionsOpen={isSectionsOpen} /></div>\r\n ))}\r\n {sp.placeholder}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </Droppable >\r\n\r\nexport default CSubSectionsContainer;","import * as React from 'react';\r\nimport { Droppable, Draggable } from 'react-beautiful-dnd';\r\nimport * as DNDSettings from './util/dndSettings'\r\nimport CRowDroppable from './cRowDroppable'\r\nimport CSubSectionsContainer from './cSubSectionsContainer'\r\n\r\nclass CSectionDroppable extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isHovering: false\r\n }\r\n }\r\n\r\n OnMouseHover = () => {\r\n this.setState({ isHovering: true })\r\n }\r\n onMouseLeave = () => {\r\n this.setState({ isHovering: false })\r\n }\r\n\r\n render() {\r\n const { section, sectionConfig, rows, dropclazzName, dragclazzName, droppable, dropType, OnRowSettings } = this.props;\r\n const { OnAddSubSection, sections, getSubSections, OnAddRow, OnSectionSettings, OnSectionRemove, clazzName, wrapperWlazzName, sectiondroptype, direction, OnMoveDown, OnMoveUp, CanShowMoveUp, CanShowMoveDown, errors, isSectionsOpen } = sectionConfig;\r\n const subSections = getSubSections(sections, section) || [];\r\n\r\n return (\r\n <div >\r\n <Droppable droppableId={`SecDP-${droppable}`} type={dropType}>\r\n {(sdp, sds) => (\r\n <div ref={sdp.innerRef}\r\n {...sdp.draggableProps}\r\n {...sdp.dragHandleProps}\r\n className={dropclazzName}\r\n style={DNDSettings.getNestedListStyle(sds.isDraggingOver)}>\r\n {rows && rows.length > 0 && rows.map((row, index) => (\r\n <div>\r\n <Draggable key={row.dndId} draggableId={`${row.dndId}`} index={index} isDragDisabled={row.canDrag === false}>\r\n {(sdp2, sds2) => (\r\n <div ref={sdp2.innerRef}\r\n {...sdp2.draggableProps}\r\n {...sdp2.dragHandleProps}\r\n className={dragclazzName}\r\n onMouseEnter={this.OnMouseHover}\r\n onMouseLeave={this.onMouseLeave}\r\n style={DNDSettings.getRowStyle(sds2.isDraggingOver, sdp2.draggableProps.style)}>\r\n <div>\r\n <CRowDroppable section={section} row={row} sdp={sdp2} dropclazzName={row.dropclazzName} dragclazzName={row.dragclazzName} OnSettings={OnRowSettings}\r\n direction={row.direction} />\r\n </div>\r\n {sdp2.placeholder}\r\n </div>\r\n )}\r\n </Draggable>\r\n </div>\r\n ))}\r\n {sdp.placeholder}\r\n </div>\r\n )}\r\n </Droppable>\r\n {subSections && subSections.length > 0 &&\r\n <div>\r\n\r\n < CSubSectionsContainer sectionConfig={sectionConfig} OnAddSubSection={OnAddSubSection} getSubSections={getSubSections} OnAddRow={OnAddRow}\r\n mainSections={subSections}\r\n OnSectionSettings={OnSectionSettings} OnRowSettings={OnRowSettings} OnSectionRemove={OnSectionRemove} droppableId={droppable}\r\n clazzName={clazzName} wrapperWlazzName={wrapperWlazzName} droptype={dropType} direction={direction} OnMoveDown={OnMoveDown} OnMoveUp={OnMoveUp}\r\n CanShowMoveUp={CanShowMoveUp} CanShowMoveDown={CanShowMoveDown} errors={errors} isSectionsOpen={isSectionsOpen} />\r\n </div>\r\n }\r\n </div>\r\n );\r\n }\r\n}\r\nexport default CSectionDroppable;\r\n\r\n\r\n","import Drawer from '@material-ui/core/Drawer';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport withWidth from '@material-ui/core/withWidth';\r\nimport React, { useCallback, useEffect, useState } from 'react';\r\nimport { formatQuery as Formatter } from 'react-querybuilder';\r\nimport { useParams } from 'react-router-dom';\r\nimport { getEnvVariable } from '../../../../../modules/environmentalList';\r\nimport Dropdown from '../../../../controls/components/dropdown';\r\nimport Header from '../../../../controls/components/header';\r\nimport Switch from '../../../../controls/components/switch';\r\nimport TextField from '../../../../controls/components/textbox';\r\nimport { GetData, PostData, PutData } from '../../../../controls/helpers/requests';\r\nimport { createRequest, requestApi } from '../../../../controls/helpers/rest';\r\nimport Static from './static';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n drawer: {\r\n flexShrink: 0\r\n },\r\n dragger: {\r\n width: \"7px\",\r\n cursor: \"ew-resize\",\r\n padding: \"4px 0 0\",\r\n borderTop: \"1px solid #ddd\",\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n bottom: 0,\r\n zIndex: 100,\r\n // backgroundColor: \"#f4f7f9\"\r\n }\r\n}));\r\n\r\n\r\n\r\nconst transformProps = {\r\n \"A\": true,\r\n \"I\": false,\r\n true: \"A\",\r\n false: \"I\"\r\n}\r\n\r\n\r\nconst defaultDrawerWidth = 900;\r\nconst minDrawerWidth = 700;\r\nconst maxDrawerWidth = window.innerWidth - 220;\r\nconst fullscreenwidth = window.innerWidth\r\nconst checkwidth = 960\r\n\r\nconst header = {\r\n name: \"header\",\r\n type: 'header',\r\n title: 'Business Rule',\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": \"Business Rules\", \"materialicon\": \"assignment_turned_in\", className: 'eps-breadcrumb-item ', class: 'text-light' },\r\n ]\r\n }\r\n ],\r\n actions: [\r\n {\r\n type: 'icon',\r\n icon: 'back',\r\n name: 'back',\r\n hideon: 'back',\r\n hidevalue: false\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'duplicate',\r\n name: 'createduplicate',\r\n hideon: 'edit',\r\n hidevalue: true\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'save',\r\n name: 'save',\r\n hideon: 'save',\r\n hidevalue: false\r\n },\r\n ],\r\n}\r\n\r\n\r\nfunction Rule(props) {\r\n const { item, section, businessrules } = props;\r\n const [result, setResult] = useState(item)\r\n const [fields, setFields] = useState([])\r\n const [uploaded, setUploaded] = useState(false)\r\n const [ruleTypeItems, setRuleTypeDropdown] = useState([])\r\n const [reload, setReload] = useState(false)\r\n const [queryError, setqueryError] = useState({ error: false, helperText: '' })\r\n const [nameError, setnameError] = useState({ error: false, helperText: '' })\r\n const [descError, setDescError] = useState({ error: false, helperText: '' })\r\n const [ruleError, setruleTypeError] = useState({ error: false, helperText: '' })\r\n const params = useParams();\r\n\r\n let screensize = (props.width == \"sm\" || props.width == \"xs\" || props.width == \"md\") ? false : true\r\n const [drawerWidth, setDrawerWidth] = useState((props.width == \"sm\" || props.width == \"xs\" || props.width == \"md\") ? fullscreenwidth : defaultDrawerWidth);\r\n const [fullscreen, setFullScreen] = useState(false)\r\n const [fullwidth, setFullWidth] = useState(fullscreenwidth)\r\n const [cloneVal, setCloneVal] = useState('')\r\n\r\n React.useEffect(() => {\r\n window.addEventListener(\"resize\", updateWidth);\r\n return () => window.removeEventListener(\"resize\", updateWidth);\r\n });\r\n\r\n\r\n const updateWidth = () => {\r\n if (window.innerWidth < checkwidth) {\r\n setDrawerWidth(window.innerWidth);\r\n }\r\n else {\r\n setDrawerWidth(defaultDrawerWidth)\r\n }\r\n };\r\n\r\n React.useEffect(() => {\r\n if (!screensize) {\r\n let width = window.innerWidth\r\n setDrawerWidth(width);\r\n setFullWidth(width)\r\n }\r\n else {\r\n setDrawerWidth(defaultDrawerWidth);\r\n // setFullWidth(defaultDrawerWidth)\r\n }\r\n }, [props.width]);\r\n\r\n\r\n const handleMouseDown = e => {\r\n document.addEventListener(\"mouseup\", handleMouseUp, true);\r\n document.addEventListener(\"mousemove\", handleMouseMove, true);\r\n };\r\n\r\n const handleMouseUp = () => {\r\n document.removeEventListener(\"mouseup\", handleMouseUp, true);\r\n document.removeEventListener(\"mousemove\", handleMouseMove, true);\r\n };\r\n\r\n const handleMouseMove = useCallback(e => {\r\n let newWidth =\r\n document.body.offsetWidth - (e.clientX - document.body.offsetLeft);\r\n // const newWidth = e.clientX - document.body.offsetLeft;\r\n if (newWidth > minDrawerWidth && newWidth < maxDrawerWidth) {\r\n setDrawerWidth(newWidth);\r\n }\r\n }, []);\r\n\r\n const handleBack = () => {\r\n props.handleClose()\r\n }\r\n\r\n useEffect(() => {\r\n let haskey = ''\r\n if (!result.Id && result.HashKey)\r\n haskey = `&HashKey=${result.HashKey}`\r\n const read = [\r\n {\r\n url: getEnvVariable('AdminConfig') + `/api/Domains/values?domainkey=BUSINESS_RULES_RULE_TYPE&domainid=0`,\r\n type: 'get'\r\n },\r\n {\r\n url: props.eachsection ? getEnvVariable('Application') + `/api/BusinessRules/Builder?SitePermitTypeId=${params.routeid}&sitePermitTypeSectionId=${props.section.Id}&businessRuleId=${result.Id || 0}${haskey}`\r\n : getEnvVariable('Application') + `/api/BusinessRules/Builder?SitePermitTypeId=${params.routeid}&businessRuleId=${result.Id || 0}${haskey}`,\r\n type: 'get'\r\n },\r\n ]\r\n Promise.all(read.map(each => requestApi(createRequest(each, {})))).then(response => {\r\n const [ruleset, fields] = response;\r\n setRuleTypeDropdown(ruleset)\r\n setFields(fields)\r\n })\r\n }, [uploaded])\r\n\r\n const handleFieldValue = (event) => {\r\n const { name, value } = event.target;\r\n if (name === 'Status')\r\n result[name] = event.target.checked ? 'A' : 'I'\r\n else if (name === 'EventType') {\r\n if (value === 'S') {\r\n result['NoticesIsAuto'] = 'Y'\r\n result['ReportIsAuto'] = 'Y'\r\n result['NotificationSettingsIsAuto'] = 'Y'\r\n result[name] = value\r\n }\r\n else {\r\n result['NoticesIsAuto'] = 'N'\r\n result['ReportIsAuto'] = 'N'\r\n result['NotificationSettingsIsAuto'] = 'N'\r\n result[name] = value\r\n }\r\n }\r\n else result[name] = value\r\n setResult(result)\r\n setReload(!reload)\r\n }\r\n const handleCloneItems = () => {\r\n let res = result\r\n res.query = res.JsonQueryStr !== '' ? JSON.parse(res.JsonQueryStr) : '';\r\n res.RuleType = res.RuleType ? res.RuleType : 'S';\r\n res.isCalcualtedQuery = 'Y'\r\n delete res['Id']\r\n delete res['RuleOrder']\r\n res.BusinessRuleFields.forEach(each=>{\r\n delete each['Id']\r\n delete each['BusinessRuleId']\r\n })\r\n setResult(res)\r\n // setCloneVal(value)\r\n setReload(!reload)\r\n\r\n }\r\n\r\n const handleDynamicResult = (dynResponse) => {\r\n let tempResult = result;\r\n if (dynResponse) {\r\n if (dynResponse.CvsDateItems && dynResponse.CvsDateItems.length > 0)\r\n tempResult['CustomDataClxn'] = dynResponse.CvsDateItems;\r\n if (dynResponse.HashKey) {\r\n tempResult['HashKey'] = dynResponse.HashKey\r\n }\r\n setResult(tempResult)\r\n setUploaded(!uploaded)\r\n }\r\n }\r\n\r\n const onError = (errors) => {\r\n let errorstate = false, errorval = ''\r\n if (errors[\"Name\"]) {\r\n if (Array.isArray(errors['Name'])) {\r\n errorstate = true\r\n errorval = errors['Name'][0]\r\n }\r\n else {\r\n errorstate = errors['Name'].error\r\n errorval = errors['Name'].errortext\r\n }\r\n setnameError({ error: errorstate, helperText: errorval })\r\n }\r\n if (errors[\"SqlQuery\"]) {\r\n if (Array.isArray(errors['SqlQuery'])) {\r\n errorstate = true\r\n errorval = errors['SqlQuery'][0]\r\n }\r\n else {\r\n errorstate = errors['SqlQuery'].error\r\n errorval = errors['SqlQuery'].errortext\r\n }\r\n setqueryError({ error: errorstate, helperText: errorval })\r\n }\r\n if (errors[\"JsonQueryStr\"]) {\r\n if (Array.isArray(errors['JsonQueryStr'])) {\r\n errorstate = true\r\n errorval = errors['JsonQueryStr'][0]\r\n }\r\n else {\r\n errorstate = errors['JsonQueryStr'].error\r\n errorval = errors['JsonQueryStr'].errortext\r\n }\r\n setqueryError({ error: errorstate, helperText: errorval })\r\n }\r\n if (errors[\"Description\"]) {\r\n if (Array.isArray(errors['Description'])) {\r\n errorstate = true\r\n errorval = errors['Description'][0]\r\n }\r\n else {\r\n errorstate = errors['Description'].error\r\n errorval = errors['Description'].errortext\r\n }\r\n setDescError({ error: errorstate, helperText: errorval })\r\n }\r\n }\r\n\r\n const handleSave = () => {\r\n let tempResult = result\r\n if (tempResult && tempResult.Name) {\r\n tempResult.JsonQueryStr = JSON.stringify(result.query) //tempResult.RuleType === 'S' ? : ''\r\n tempResult.SqlQuery = Formatter(result.query, 'sql') // tempResult.RuleType === 'S' ?: ''\r\n tempResult.IsTriggerAnotherRuleOnFailure = tempResult.IsTriggerAnotherRuleOnFailure === 'Y' ? 'Y' : 'N';\r\n tempResult.NoticesEventOn = 'N';\r\n tempResult.NoticesOnLoad = 'N';\r\n tempResult.NotificationSettingsEventOn = 'N';\r\n tempResult.NotificationSettingsOnLoad = 'N';\r\n tempResult.ProjectMessagesEventOn = 'N';\r\n tempResult.ProjectMessagesOnLoad = 'N';\r\n tempResult.NotificationSettingsIsAuto = tempResult.NotificationSettingsIsAuto ? tempResult.NotificationSettingsIsAuto : 'N';\r\n tempResult.NoticesIsAuto = tempResult.NoticesIsAuto ? tempResult.NoticesIsAuto : 'N';\r\n tempResult.ReportIsAuto = tempResult.ReportIsAuto ? tempResult.ReportIsAuto : 'N';\r\n if (!tempResult.Id) {\r\n tempResult.Status = 'A';\r\n let url = ''\r\n if (props.eachsection)\r\n url = getEnvVariable('AdminConfig') + `/api/BusinessRules/${params.routeid}/Add?sitePermitTypeSectionId=${props.section.Id}`\r\n else url = getEnvVariable('AdminConfig') + `/api/BusinessRules/${params.routeid}/Add`\r\n PostData(url, tempResult).then(res => {\r\n props.handleClose(false)\r\n }).catch(error => {\r\n error.then(err => {\r\n if (err) {\r\n tempResult.query = JSON.parse(tempResult.JsonQueryStr)\r\n setResult(tempResult)\r\n onError(err);\r\n }\r\n })\r\n })\r\n }\r\n else {\r\n let url = getEnvVariable('AdminConfig') + `/api/BusinessRules/${tempResult.Id}/Update`\r\n PutData(url, tempResult).then(res => {\r\n props.handleClose(false)\r\n }).catch(error => {\r\n error.then(err => {\r\n if (err) {\r\n tempResult.query = JSON.parse(tempResult.JsonQueryStr)\r\n setResult(tempResult)\r\n onError(err)\r\n }\r\n })\r\n })\r\n }\r\n }\r\n else {\r\n if (!result.Name || result.Name === undefined) {\r\n setnameError({ error: true, helperText: 'Name is required' })\r\n setReload(!reload)\r\n }\r\n }\r\n }\r\n\r\n\r\n const addOnsByName = { addOnsByName: { back: { onClick: handleBack }, save: { onClick: handleSave }, createduplicate: { onClick: handleCloneItems } } }\r\n let sharedProps = { edit: (result && result.Id) ? false : true }\r\n const classes = useStyles();\r\n return (\r\n <Drawer anchor=\"right\" open={true}\r\n disableEnforceFocus={true}\r\n disableAutoFocus={true}\r\n PaperProps={{ style: { width: fullscreen ? fullwidth : drawerWidth } }}\r\n >\r\n <div onMouseDown={e => handleMouseDown(e)} className={classes.dragger} />\r\n <Header {...header} {...addOnsByName} sharedProps={sharedProps} />\r\n <div className=\"col-sm-12\">\r\n {reload}\r\n\r\n <TextField label='Name' name='Name' value={(result && result.Name) || null} handleFieldValue={handleFieldValue} error={nameError.error} helperText={nameError.helperText} required={true} />\r\n <TextField label='Description' name='Description' value={(result && result.Description) || null} handleFieldValue={handleFieldValue} error={descError.error} helperText={descError.helperText} />\r\n <Switch label='Status' name=\"Status\" value={(result && result.Status) || null} handleFieldValue={handleFieldValue} extraProps={{\r\n transformProps: transformProps\r\n }} /><br />\r\n <Static result={result}\r\n handleFieldValue={handleFieldValue} handleDynamicResult={handleDynamicResult} fields={fields} section={section} error={queryError.error} helperText={queryError.helperText} />\r\n </div>\r\n </Drawer>\r\n )\r\n}\r\n\r\nexport default withWidth()(Rule)\r\n","import React, { useState, useEffect, useCallback } from 'react';\r\nimport { useParams } from 'react-router-dom';\r\nimport { GetData, DeleteRecord, PutData } from '../../../../controls/helpers/requests';\r\nimport SimpleGrid from '../../../Grid/cgrid'\r\nimport Drawer from '@material-ui/core/Drawer';\r\nimport Header from '../../../../controls/components/header';\r\nimport GridHeader from '../../../../controls/components/kendoheader';\r\nimport Rule from './rule';\r\nimport withWidth from '@material-ui/core/withWidth';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { getEnvVariable } from '../../../../../modules/environmentalList';\r\nimport { toDataSourceRequestString } from '@progress/kendo-data-query';\r\nconst defaultDrawerWidth = 1200;\r\nconst minDrawerWidth = 700;\r\nconst maxDrawerWidth = window.innerWidth - 220;\r\nconst fullscreenwidth = window.innerWidth\r\nconst checkwidth = 960\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n drawer: {\r\n flexShrink: 0\r\n },\r\n dragger: {\r\n width: \"7px\",\r\n cursor: \"ew-resize\",\r\n padding: \"4px 0 0\",\r\n borderTop: \"1px solid #ddd\",\r\n position: \"absolute\",\r\n top: 0,\r\n left: 5,\r\n bottom: 0,\r\n zIndex: 100,\r\n // backgroundColor: \"#f4f7f9\"\r\n }\r\n}));\r\n\r\n\r\nconst header = {\r\n name: \"header\",\r\n type: 'header',\r\n title: 'Business Rules',\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": \"Business Rules\", \"materialicon\": \"assignment_turned_in\", className: 'eps-breadcrumb-item ', class: 'text-light' },\r\n ]\r\n }\r\n ],\r\n actions: [\r\n {\r\n type: 'icon',\r\n icon: 'back',\r\n name: 'back',\r\n hideon: 'back',\r\n hidevalue: false\r\n },\r\n ],\r\n}\r\n\r\n\r\nconst kendoheader = {\r\n actions: [\r\n {\r\n type: 'fab',\r\n icon: 'clear',\r\n name: 'clear',\r\n color: 'primary',\r\n title: 'Clear Filters',\r\n menucolor: '#22a9b3',\r\n hideon: 'clear',\r\n hidevalue: false\r\n },\r\n {\r\n type: 'fab',\r\n icon: 'add',\r\n name: 'add',\r\n hideon: 'add',\r\n hidevalue: false,\r\n menucolor: '#22a9b3',\r\n title: 'Add Global Business Rule',\r\n color: 'primary',\r\n },\r\n\r\n ],\r\n}\r\n\r\nfunction ValidationRules(props) {\r\n const [items, setItems] = useState([])\r\n const [columns, setColumns] = useState([])\r\n const [pathKey, setPathKey] = useState([])\r\n const [total, setTotal] = useState(0)\r\n const [datastate, setDatastate] = useState({ skip: 0, take: 20 })\r\n const [item, setItem] = useState(null)\r\n const [reload, setReload] = useState(false)\r\n const params = useParams();\r\n const { eachsection, section, open } = props;\r\n\r\n let screensize = (props.width === \"sm\" || props.width === \"xs\" || props.width === \"md\") ? false : true\r\n const [drawerWidth, setDrawerWidth] = useState((props.width === \"sm\" || props.width === \"xs\" || props.width === \"md\") ? fullscreenwidth : defaultDrawerWidth);\r\n const [fullscreen, setFullScreen] = useState(false)\r\n const [fullwidth, setFullWidth] = useState(fullscreenwidth)\r\n\r\n React.useEffect(() => {\r\n window.addEventListener(\"resize\", updateWidth);\r\n setPathKey(\"/BusinessRules\")\r\n return () => window.removeEventListener(\"resize\", updateWidth);\r\n });\r\n\r\n\r\n const updateWidth = () => {\r\n if (window.innerWidth < checkwidth) {\r\n setDrawerWidth(window.innerWidth);\r\n }\r\n else {\r\n setDrawerWidth(defaultDrawerWidth)\r\n }\r\n };\r\n\r\n React.useEffect(() => {\r\n if (!screensize) {\r\n let width = window.innerWidth\r\n setDrawerWidth(width);\r\n setFullWidth(width)\r\n }\r\n else {\r\n setDrawerWidth(defaultDrawerWidth);\r\n // setFullWidth(defaultDrawerWidth)\r\n }\r\n }, [props.width]);\r\n\r\n\r\n const handleMouseDown = e => {\r\n document.addEventListener(\"mouseup\", handleMouseUp, true);\r\n document.addEventListener(\"mousemove\", handleMouseMove, true);\r\n };\r\n\r\n const handleMouseUp = () => {\r\n document.removeEventListener(\"mouseup\", handleMouseUp, true);\r\n document.removeEventListener(\"mousemove\", handleMouseMove, true);\r\n };\r\n\r\n const handleMouseMove = useCallback(e => {\r\n let newWidth =\r\n document.body.offsetWidth - (e.clientX - document.body.offsetLeft);\r\n // const newWidth = e.clientX - document.body.offsetLeft;\r\n if (newWidth > minDrawerWidth && newWidth < maxDrawerWidth) {\r\n setDrawerWidth(newWidth);\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n IntialLoad()\r\n }, [])\r\n\r\n const IntialLoad = (customDataState) => {\r\n let tempDatastate = customDataState ? customDataState : datastate\r\n let pathName = window.location.hash.replace('#/', '/')\r\n let queryStr = \"\"\r\n pathName = pathName + pathKey;\r\n if ((localStorage.getItem(pathName) !== null)) {\r\n let ds = JSON.parse(localStorage.getItem(pathName))\r\n queryStr = `${toDataSourceRequestString(ds)}`;\r\n setDatastate(ds)\r\n }\r\n else queryStr = toDataSourceRequestString(tempDatastate)\r\n const { routeid } = params;\r\n let gColumns = []\r\n let url = ''\r\n if (eachsection) {\r\n url = getEnvVariable('AdminConfig') + `/api/BusinessRules/${routeid}/All/Grid?sitePermitTypeSectionId=${section.Id}`\r\n }\r\n else url = getEnvVariable('AdminConfig') + `/api/BusinessRules/${routeid}/All/Grid`\r\n\r\n let urlPath = `${url}${(url.indexOf(\"?\") > -1) ? '&' : '?'}${queryStr}`;\r\n GetData(urlPath).then(kendoresponse => {\r\n //let response = (kendoresponse && kendoresponse.data) || []\r\n let response = ((kendoresponse && kendoresponse.data) || []).map(item => {\r\n item.Status = item.Status === 'A' ? 'Active' : 'Inactive'\r\n // item.RuleType = item.RuleType === 'S' ? 'Data' : 'Role'\r\n item.isCalcualtedQuery = 'Y'\r\n return item\r\n })\r\n setItems(response);\r\n if (response && response.length > 0) {\r\n (Object.getOwnPropertyNames(response[0])).map(col => {\r\n if (col === 'RuleOrder' || col === 'Status')//col === 'Id' || \r\n gColumns.push({ field: col, title: col, show: true, filtericon: true, width: 75, })\r\n else {\r\n if (col === 'Name')\r\n gColumns.push({ field: col, title: col, show: true, filtericon: true, width: 350, })\r\n }\r\n })\r\n gColumns.unshift({ field: 'Custom', title: '', show: true, width: 30, })\r\n setColumns(gColumns)\r\n setTotal(kendoresponse.total) \r\n }\r\n setDatastate(tempDatastate)\r\n setReload(!reload)\r\n })\r\n }\r\n const clearFilters = () => {\r\n let ds = {\r\n skip: 0, take: 20\r\n }\r\n let pathName = window.location.hash.replace('#/', '/')\r\n pathName = pathName + pathKey;\r\n if ((localStorage.getItem(pathName) !== null)) {\r\n localStorage.removeItem(pathName)\r\n // setDatastate(ds)\r\n IntialLoad(ds);\r\n }\r\n }\r\n const handleBack = () => {\r\n props.handleBackSlider(false)\r\n }\r\n\r\n const handleAdd = () => {\r\n let newItem = {}\r\n newItem['RuleType'] = 'S'\r\n newItem['Status'] = 'I'\r\n newItem['EventOn'] = 'OC'\r\n newItem['EventType'] = 'E'\r\n newItem['isCalcualtedQuery'] = 'Y'\r\n newItem['PreConditionCheck'] = 'V'\r\n setItem(newItem)\r\n }\r\n\r\n const addOnsByName = { addOnsByName: { back: { onClick: handleBack } } }\r\n\r\n const gridAddOnsByName = { addOnsByName: { add: { onClick: handleAdd }, clear: { onClick: clearFilters } } }\r\n\r\n const handleEdit = (dataItem) => {\r\n let url = getEnvVariable('AdminConfig') + `/api/BusinessRules/ById/${dataItem.Id}`\r\n GetData(url, '').then(res => {\r\n res.query = res.JsonQueryStr !== '' ? JSON.parse(res.JsonQueryStr) : '';\r\n res.RuleType = res.RuleType ? res.RuleType : 'S';\r\n res.isCalcualtedQuery = 'Y'\r\n setItem(res)\r\n setReload(!reload)\r\n })\r\n }\r\n\r\n const onUp = (dataItem) => {\r\n PutData(getEnvVariable('AdminConfig') + `/api/BusinessRules/${dataItem.Id}/UP`, dataItem).then(res => {\r\n IntialLoad()\r\n })\r\n }\r\n\r\n const onDown = (dataItem) => {\r\n PutData(getEnvVariable('AdminConfig') + `/api/BusinessRules/${dataItem.Id}/DOWN`, dataItem).then(res => {\r\n IntialLoad()\r\n })\r\n }\r\n\r\n const onDelete = (dataItem) => {\r\n DeleteRecord(getEnvVariable('AdminConfig') + `/api/BusinessRules/${dataItem.Id}`, '').then(res => {\r\n IntialLoad()\r\n })\r\n\r\n }\r\n\r\n const handleBackSlider = () => {\r\n setItem(null)\r\n IntialLoad()\r\n }\r\n\r\n const classes = useStyles();\r\n return (\r\n <div>\r\n {reload}\r\n <Drawer anchor=\"right\" open={open}\r\n disableEnforceFocus={true}\r\n disableAutoFocus={true}\r\n PaperProps={{ style: { width: fullscreen ? fullwidth : drawerWidth } }}\r\n >\r\n <div onMouseDown={e => handleMouseDown(e)} className={classes.dragger} />\r\n <Header {...header} {...addOnsByName} />\r\n {reload}\r\n <div className='col-12'>\r\n <GridHeader {...kendoheader} {...gridAddOnsByName} />\r\n {columns && columns.length > 0 ?\r\n <SimpleGrid\r\n onUp={onUp} handleEdit={handleEdit} datastate={datastate} total={total} allowPropsData={true}\r\n onDown={onDown} onDelete={onDelete} pathKey={pathKey} onCustomDataChange={(e) => IntialLoad(e)}\r\n data={items || []} columns={columns} useComp={true} sidepopupgridheight={true}\r\n options={{ headerProps: null, gridcolumns: columns }} />\r\n\r\n : \"No Business Rules available\"}\r\n </div>\r\n {item && Object.keys(item).length > 0 && <Rule businessrules={items} item={item} handleClose={handleBackSlider} eachsection={eachsection} section={section} handleBack={handleBack} />}\r\n </Drawer>\r\n </div>\r\n )\r\n}\r\n\r\nexport default withWidth()(ValidationRules)","import React, { Fragment } from 'react';\r\nimport { Draggable } from 'react-beautiful-dnd';\r\nimport * as DNDSettings from './util/dndSettings'\r\nimport CSectionDroppable from \"./cSectionDroppable\";\r\nimport ValidationsRules from './validationrules';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport SettingIcon from '@material-ui/icons/Settings';\r\nimport MoveUpIcon from '@material-ui/icons/ArrowUpward';\r\nimport MoveDownIcon from '@material-ui/icons/ArrowDownward';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport MoreVertIcon from '@material-ui/icons/Menu';\r\nimport BussinessIcon from '@material-ui/icons/AssignmentTurnedIn';\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport ExclamatoryIcon from '@material-ui/icons/ErrorOutline'\r\nconst StyledMenu = withStyles({\r\n paper: {\r\n border: '1px solid #d3d4d5',\r\n },\r\n})(props => (\r\n <Menu\r\n elevation={0}\r\n getContentAnchorEl={null}\r\n anchorOrigin={{\r\n vertical: 'bottom',\r\n horizontal: 'center',\r\n }}\r\n transformOrigin={{\r\n vertical: 'top',\r\n horizontal: 'center',\r\n }}\r\n {...props}\r\n />\r\n));\r\n\r\nconst StyledMenuItem = withStyles(theme => ({\r\n root: {\r\n '&:focus': {\r\n backgroundColor: theme.palette.primary.main,\r\n '& .MuiListItemIcon-root, & .MuiListItemText-primary': {\r\n color: theme.palette.common.white,\r\n },\r\n },\r\n },\r\n}))(MenuItem);\r\n\r\nclass CSectionDraggable extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n // isHovering: false,\r\n opened: this.props.isSectionsOpen,\r\n openValidate: false,\r\n anchorEl: null\r\n }\r\n }\r\n\r\n handleBackSlider = (back) => {\r\n this.setState({ openValidate: back })\r\n }\r\n\r\n\r\n handleClick = event => {\r\n this.setState({ anchorEl: event.currentTarget })\r\n };\r\n\r\n handleClose = () => {\r\n this.setState({ anchorEl: null })\r\n };\r\n\r\n\r\n render() {\r\n\r\n const { anchorEl } = this.state\r\n const { section, sectionConfig, availablelist, getSubSections, draggable, OnAddSubSection, OnAddRow, OnMoveDown, OnMoveUp, CanShowMoveUp, CanShowMoveDown, OnSectionSettings, OnRowSettings, OnSectionRemove, errors } = this.props;\r\n let sectionerror = errors ? (errors[section.dndId] ? errors[section.dndId] : null) : null;\r\n\r\n return (\r\n <div>\r\n <Draggable key={section.dndId} draggableId={`SecDG-${section.dndId}`} index={draggable} isDragDisabled={true}>\r\n {(sdp, sds) => (\r\n <div ref={sdp.innerRef}\r\n {...sdp.draggableProps}\r\n {...sdp.dragHandleProps}\r\n className={availablelist ? section.clazzName : \"m-1\"}\r\n style={DNDSettings.getSectionStyle(sds.isDragging, sdp.draggableProps.style)} >\r\n <div className={section.titleClazz} >\r\n <div className=\"row col-sm-12\">\r\n <div className=\"col-sm-3\"> {section.Name} {sectionerror && <span className=\"text-white bg-danger\" title=\"Error\" >\r\n <IconButton\r\n aria-label=\"more\"\r\n aria-controls=\"long-menu\"\r\n aria-haspopup=\"true\"\r\n color={'inherit'}\r\n >\r\n <ExclamatoryIcon />\r\n </IconButton></span>}\r\n </div>\r\n {section.dndId !== \"allfields\" && <div className=\"actionPanel col-sm-9\">\r\n <Fragment>\r\n <IconButton className='float-end mx-0'\r\n aria-label=\"more\"\r\n aria-controls=\"long-menu\"\r\n aria-haspopup=\"true\"\r\n onClick={this.handleClick}\r\n color={'inherit'}\r\n >\r\n <MoreVertIcon />\r\n </IconButton>\r\n <StyledMenu\r\n id=\"customized-menu\"\r\n anchorEl={anchorEl}\r\n keepMounted\r\n open={Boolean(anchorEl)}\r\n onClose={this.handleClose}\r\n >\r\n {section.canAddRows && <MenuItem style={{ color: '#f4511e' }} onClick={(ev) => this.setState({ anchorEl: null }, () => OnAddRow(ev, { ...section }))}>\r\n <ListItemIcon style={{ color: '#f4511e' }}>\r\n <AddIcon fontSize=\"small\" />\r\n </ListItemIcon>\r\n <ListItemText primary=\"Add Row\" />\r\n </MenuItem>}\r\n {CanShowMoveUp(section) && <MenuItem style={{ color: '#6200ea' }} onClick={(ev) => this.setState({ anchorEl: null }, () => OnMoveUp(ev, { ...section }))}>\r\n <ListItemIcon style={{ color: '#6200ea' }}>\r\n <MoveUpIcon fontSize=\"small\" />\r\n </ListItemIcon>\r\n <ListItemText primary=\"Move Up\" />\r\n </MenuItem>}\r\n {CanShowMoveDown(section) && <MenuItem style={{ color: '#2e7d32' }} onClick={(ev) => this.setState({ anchorEl: null }, () => OnMoveDown(ev, { ...section }))}>\r\n <ListItemIcon style={{ color: '#2e7d32' }}>\r\n <MoveDownIcon fontSize=\"small\" />\r\n </ListItemIcon>\r\n <ListItemText primary=\"Move Down\" />\r\n </MenuItem>}\r\n {section.showSettings && <StyledMenuItem style={{ color: '#3e2723' }} onClick={(ev) => this.setState({ anchorEl: null }, () => OnSectionSettings(ev, sectionerror, { ...section }))}>\r\n <ListItemIcon style={{ color: '#3e2723' }}>\r\n <SettingIcon fontSize=\"small\" />\r\n </ListItemIcon>\r\n <ListItemText primary=\"Settings\" />\r\n </StyledMenuItem>}\r\n {((section.showSettings && section.rows && section.rows.length > 0)) && <StyledMenuItem style={{ color: '#6a1b9a' }} onClick={(ev) => this.setState({ openValidate: true, anchorEl: null })} >\r\n <ListItemIcon style={{ color: '#6a1b9a' }}>\r\n <BussinessIcon fontSize=\"small\" />\r\n </ListItemIcon>\r\n <ListItemText primary=\"Business Rules\" />\r\n </StyledMenuItem>}\r\n {section.showSettings && <StyledMenuItem style={{ color: '#d50000' }} onClick={(ev) => this.setState({ anchorEl: null }, () => OnSectionRemove(ev, { ...section }))}>\r\n <ListItemIcon style={{ color: '#d50000' }}>\r\n <DeleteIcon fontSize=\"small\" />\r\n </ListItemIcon>\r\n <ListItemText primary=\"Delete\" />\r\n </StyledMenuItem>}\r\n </StyledMenu>\r\n </Fragment>\r\n </div>}\r\n </div>\r\n </div>\r\n {this.state.opened && <div><CSectionDroppable sectionConfig={sectionConfig} section={section} getSubSections={getSubSections} dropclazzName={section.dropclazzName}\r\n OnRowSettings={OnRowSettings} canDrag={section.canDrag} dragclazzName={section.dragclazzName} droppable={section.dndId} dropType={section.dropType}\r\n rows={section.rows} type={section.dndId} /></div>}\r\n {this.state.openValidate && <ValidationsRules section={section} eachsection={true} open={this.state.openValidate} handleBackSlider={this.handleBackSlider} />}\r\n {sdp.placeholder}\r\n </div>\r\n )\r\n }\r\n </Draggable>\r\n </div>\r\n );\r\n }\r\n}\r\nexport default CSectionDraggable;\r\n","import { Droppable } from \"react-beautiful-dnd\";\r\nimport CSectionDraggable from './cSectionDraggable';\r\nimport * as DNDSettings from './util/dndSettings';\r\n\r\n\r\nconst CSectionsContainer = ({ mainSections, OnAddSubSection, sections, errors, direction, clazzName, wrapperWlazzName, getSubSections, droptype, isSectionsOpen, OnAddRow, OnMoveDown, OnMoveUp, CanShowMoveUp, CanShowMoveDown, OnSectionSettings, OnSectionRemove, OnRowSettings }) =>\r\n <Droppable droppableId={`Sec-${droptype}`} type=\"section\" direction={direction}>\r\n {(sp, ss) => (\r\n <div ref={sp.innerRef} className={clazzName}\r\n style={DNDSettings.getListStyle(ss.isDraggingOver)}>\r\n <div className={wrapperWlazzName} >\r\n {mainSections && mainSections.map((section, index) => {\r\n if ((section.dndId === \"allfields\"))\r\n return <CSectionDraggable sectionConfig={{ OnAddSubSection, sections, getSubSections, OnAddRow, OnSectionSettings, OnSectionRemove, titleClazz: \"\", clazzName: \"sectionList\", wrapperWlazzName, droptype, direction, OnMoveDown, OnMoveUp, CanShowMoveUp, CanShowMoveDown, errors, isSectionsOpen }} section={section} draggable={index} OnSectionSettings={OnSectionSettings} OnSectionRemove={OnSectionRemove} OnRowSettings={OnRowSettings} OnAddSubSection={OnAddSubSection} OnAddRow={OnAddRow} OnMoveDown={OnMoveDown} OnMoveUp={OnMoveUp}\r\n CanShowMoveUp={CanShowMoveUp} errors={errors} CanShowMoveDown={CanShowMoveDown} isSectionsOpen={isSectionsOpen} availablelist={true} />\r\n }\r\n )}\r\n <div style={{ height: '75vh', overflow: 'auto' }}>\r\n {mainSections && mainSections.map((section, index) => {\r\n if ((section.dndId !== \"allfields\"))\r\n return <CSectionDraggable sectionConfig={{ OnAddSubSection, sections, getSubSections, OnAddRow, OnSectionSettings, OnSectionRemove, titleClazz: \"\", clazzName: \"sectionList\", wrapperWlazzName, droptype, direction, OnMoveDown, OnMoveUp, CanShowMoveUp, CanShowMoveDown, errors, isSectionsOpen }} section={section} draggable={index} OnSectionSettings={OnSectionSettings} OnSectionRemove={OnSectionRemove} OnRowSettings={OnRowSettings} OnAddSubSection={OnAddSubSection} OnAddRow={OnAddRow} OnMoveDown={OnMoveDown} OnMoveUp={OnMoveUp}\r\n CanShowMoveUp={CanShowMoveUp} errors={errors} CanShowMoveDown={CanShowMoveDown} isSectionsOpen={isSectionsOpen} />\r\n }\r\n )}\r\n </div>\r\n {sp.placeholder}\r\n </div>\r\n </div>\r\n )}\r\n </Droppable>\r\n\r\nexport default CSectionsContainer;","import * as React from 'react';\r\nimport { DragDropContext } from 'react-beautiful-dnd';\r\nimport CSectionsContainer from './cSectionsContainer'\r\n\r\n\r\nconst CBuildDragDropContext = ({ droppables, errors, config, getSubSections, onDragEnd, OnAddSubSection, OnAddRow, OnMoveDown, OnMoveUp, CanShowMoveUp, CanShowMoveDown, OnSectionSettings, OnRowSettings, OnSectionRemove }) =>\r\n <div className=\"mainDragDropContext col-sm-12 pt-1\" style={{ height: window.innerHeight - 115, overflow: 'auto' }}>\r\n <DragDropContext onDragEnd={onDragEnd}>\r\n <CSectionsContainer OnAddSubSection={OnAddSubSection} getSubSections={getSubSections} OnAddRow={OnAddRow} mainSections={config.mainSections} sections={config.sections} OnSectionSettings={OnSectionSettings} OnRowSettings={OnRowSettings} OnSectionRemove={OnSectionRemove} droppableId={config.droppable}\r\n clazzName={config.clazzName} wrapperWlazzName={config.wrapperWlazzName} droptype={config.droptype} direction={config.direction} OnMoveDown={OnMoveDown} OnMoveUp={OnMoveUp}\r\n CanShowMoveUp={CanShowMoveUp} CanShowMoveDown={CanShowMoveDown} errors={errors} isSectionsOpen={config.isSectionsOpen}\r\n />\r\n </DragDropContext>\r\n </div>\r\n\r\nexport default CBuildDragDropContext;\r\n","import { Component } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport CBuildDragDropContext from '../../core/modules/dnd/widgets/cBuildDragDropContext';\r\nimport * as DNDSettings from '../../core/modules/dnd/widgets/util/dndSettings';\r\n//import SitePermitsSectionsFields from './custommodules/sitepermittypes/sitepermitsectionsfields'\r\nimport Fab from '@material-ui/core/Fab';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport ValidateIcon from '@material-ui/icons/AssignmentTurnedIn';\r\nimport SaveIcon from '@material-ui/icons/Save';\r\n//import { postRecordData } from '../../rest';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport { snackbarMessage } from '../../core/actions';\r\n//import { PostData } from '../../form/formsapi';\r\nimport DefaultSettings from '../../core/controls/components/settings';\r\nimport { GetData, PostData } from '../../core/controls/helpers/requests';\r\nimport ValidationsRules from '../../core/modules/dnd/widgets/validationrules';\r\nimport FormHeader from '../../core/modules/form/cformheader';\r\n\r\nclass CBuildDND extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n sections: [],\r\n options: this.props.options,\r\n togglebackslider: false,\r\n errors: null\r\n }\r\n this.onDragEnd = this.onDragEnd.bind(this);\r\n this.OnAddRow = this.OnAddRow.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.startup(\r\n this.props.options\r\n );\r\n }\r\n\r\n startup = async (options) => {\r\n if (options) {\r\n const { crud, settings, allfields } = options;\r\n const { read } = crud;\r\n const id = this.props.match.params.routeid\r\n GetData(read.get.url + '/' + id + '/' + read.get.suburl).then(SectionFields => {\r\n if (SectionFields) {\r\n console.log(\"SectionFields,SectionFields\", SectionFields)\r\n const { availableFields, availableSections, sections } = SectionFields\r\n allfields.rows[0].fields = availableFields;\r\n let sectionData = [];\r\n if (sections != null) {\r\n let updatedsections = sections.map(sec => {\r\n let Rows = sec.rows.map(row => {\r\n return { ...settings.row, ...row };\r\n });\r\n let ssection = { ...sec.section, ...settings.section }\r\n let secrows = { ...ssection, rows: Rows }\r\n return secrows;\r\n });\r\n sectionData = updatedsections;\r\n }\r\n sectionData.unshift(allfields);\r\n this.setState({\r\n availableSections: availableSections,\r\n sections: sectionData,\r\n finalsection: sectionData\r\n });\r\n }\r\n }).catch(ex => {\r\n console.log(ex)\r\n })\r\n }\r\n }\r\n\r\n onError = errors => {\r\n console.log(errors);\r\n const { sections } = this.state;\r\n this.setState({ errors: errors, sections: sections })\r\n }\r\n\r\n saveSitePermits = () => {\r\n let saveresponse = this.beforeSave();\r\n const { crud, title } = this.props.options;\r\n const { AddUpdate } = crud;\r\n console.log(saveresponse, this.state.finalsection);\r\n if (saveresponse.datSave && saveresponse.datSave.length > 0) {\r\n let url = `${AddUpdate.url}` + this.props.match.params.routeid + '/AddOrUpdate';\r\n PostData(url, saveresponse.datSave).then(res => {\r\n this.startup(this.props.options)\r\n }).catch(error => {\r\n error.then(err => {\r\n if (err.errors) this.onError(err.errors)\r\n else this.onError(err)\r\n })\r\n })\r\n }\r\n else {\r\n if (DefaultSettings.getAlert() != null)\r\n DefaultSettings.getAlert().show(\"Please Add Sections and Fields to Save\", 'error');\r\n }\r\n }\r\n\r\n beforeSave = () => {\r\n let norows = false;\r\n let filteredSecctions = this.state.sections.filter(sec => {\r\n return sec.dndId !== \"allfields\"\r\n });\r\n\r\n let updatedSecctions = filteredSecctions.map(sec => {\r\n let secfields = {}\r\n let rowOrder = 1;\r\n if (sec.rows && sec.rows.length > 0) {\r\n let secrows = sec.rows.map(row => {\r\n row.RowOrder = rowOrder++;\r\n let colOrder = 1;\r\n let Fields = row.fields.map(field => {\r\n field.ColOrder = colOrder++;\r\n return field;\r\n });\r\n row.fields = Fields;\r\n return row;\r\n });\r\n secfields.rows = secrows;\r\n secfields.section = sec;\r\n return secfields;\r\n }\r\n else norows = true;\r\n });\r\n let datatosave = norows ? ({ datSave: false, sections: this.state.finalsection }) : ({ datSave: updatedSecctions, sections: this.state.finalsection })\r\n return datatosave;\r\n }\r\n\r\n onDragEnd(result) {\r\n let currentsectiondata = null\r\n if (!result.destination) {\r\n return;\r\n }\r\n const sourceIndex = result.source.index;\r\n const destIndex = result.destination.index;\r\n let sourceParentId = result.source.droppableId;\r\n let destParentId = result.destination.droppableId;\r\n if (sourceParentId)\r\n sourceParentId = sourceParentId.replace(\"SecDP-\", \"\").replace(\"SecDG-\", \"\").replace(\"RowDP-\", \"\").replace(\"RowDG-\", \"\");\r\n if (destParentId)\r\n destParentId = destParentId.replace(\"SecDP-\", \"\").replace(\"SecDG-\", \"\").replace(\"RowDP-\", \"\").replace(\"RowDG-\", \"\");\r\n if (result.type === \"section\") {\r\n const sections = DNDSettings.reorder(this.state.sections, sourceIndex, destIndex);\r\n\r\n this.setState({ sections, finalsection: sections });\r\n } else if (result.type === \"row\") {\r\n const sectionsubItemMap = this.state.sections.reduce((acc, item) => {\r\n acc[item.dndId] = item.rows;\r\n return acc;\r\n }, {});\r\n\r\n const sourcerows = sectionsubItemMap[sourceParentId] || [];\r\n const destrows = sectionsubItemMap[destParentId] || [];\r\n\r\n let newsections = [...this.state.sections];\r\n\r\n /** In this case rows are reOrdered inside same Parent */\r\n if (DNDSettings.IsEqual(sourceParentId, destParentId)) {\r\n const reorderedrows = DNDSettings.reorder(\r\n sourcerows,\r\n sourceIndex,\r\n destIndex\r\n );\r\n newsections = newsections.map(item => {\r\n if (DNDSettings.IsEqual(item.dndId, sourceParentId)) {\r\n item.rows = reorderedrows;\r\n }\r\n return item;\r\n });\r\n this.setState({\r\n sections: newsections,\r\n finalsection: this.state.sections\r\n });\r\n } else {\r\n let newSourcerows = [...sourcerows];\r\n const [draggedItem] = newSourcerows.splice(sourceIndex, 1);\r\n let newDestrows = [...destrows];\r\n newDestrows.splice(destIndex, 0, draggedItem);\r\n newsections = newsections.map(item => {\r\n if (DNDSettings.IsEqual(item.dndId, sourceParentId)) {\r\n item.rows = newSourcerows;\r\n } else if (DNDSettings.IsEqual(item.dndId, destParentId)) {\r\n item.rows = newDestrows;\r\n }\r\n return item;\r\n });\r\n this.setState({\r\n sections: newsections,\r\n finalsection: this.state.sections\r\n });\r\n }\r\n } else if (result.type === \"field\") {\r\n const sectionfieldsMap = this.state.sections.reduce((acc, item) => {\r\n item.rows.reduce((field, row) => {\r\n acc[row.dndId] = row.fields;\r\n }, {});\r\n return acc;\r\n }, {});\r\n const sourcerows = sectionfieldsMap[sourceParentId] || [];\r\n const destrows = sectionfieldsMap[destParentId] || [];\r\n let newsections = [...this.state.sections];\r\n /** In this case rows are reOrdered inside same Parent */\r\n if (DNDSettings.IsEqual(sourceParentId, destParentId)) {\r\n const reorderedrows = DNDSettings.reorder(\r\n sourcerows,\r\n sourceIndex,\r\n destIndex\r\n );\r\n newsections = newsections.map(section => {\r\n let rows = section.rows.map(row => {\r\n if (DNDSettings.IsEqual(row.dndId, sourceParentId)) {\r\n row.fields = reorderedrows;\r\n }\r\n })\r\n return section;\r\n });\r\n\r\n this.setState({\r\n sections: newsections,\r\n finalsection: this.state.sections\r\n });\r\n } else {\r\n let newSourcerows = [...sourcerows];\r\n const [draggedItem] = newSourcerows.splice(sourceIndex, 1);\r\n let newDestrows = [...destrows];\r\n newDestrows.splice(destIndex, 0, draggedItem);\r\n console.log(newDestrows)\r\n newsections = newsections.map(section => {\r\n let currentsection = false\r\n let rows = section.rows.map(row => {\r\n if (DNDSettings.IsEqual(row.dndId, sourceParentId)) {\r\n row.fields = newSourcerows;\r\n } else if (DNDSettings.IsEqual(row.dndId, destParentId)) {\r\n row.fields = newDestrows;\r\n currentsection = true\r\n }\r\n })\r\n if (currentsection) currentsectiondata = section\r\n return section;\r\n });\r\n this.setState({\r\n sections: newsections,\r\n finalsection: newsections\r\n }, () => {\r\n this.OnRowSettings(null, currentsectiondata, draggedItem)\r\n });\r\n }\r\n }\r\n }\r\n\r\n\r\n OnSectionSettings = (event, err, section) => {\r\n this.setState({\r\n selectedsection: section,\r\n togglebackslider: true,\r\n opensection: true,\r\n isNewSection: false,\r\n openfield: false,\r\n err: err\r\n })\r\n console.log('current selected section---', section)\r\n }\r\n\r\n OnRowSettings = (event, section, field) => {\r\n this.setState({\r\n selectedfield: field,\r\n togglebackslider: true,\r\n opensection: false,\r\n openfield: true,\r\n selectedsection: section\r\n })\r\n console.log('current selected field---', section, field)\r\n }\r\n\r\n\r\n\r\n OnAddSection = (event, parentSection) => {\r\n console.log('sectiondata--------------', this.state.sections)\r\n console.log('Available sectiondata--------------', this.state.availableSections)\r\n const { availableSections, sections } = this.state;\r\n let filteravailable = availableSections.filter(o => !sections.some(v => v.SectionId === o.SectionId));\r\n console.log(\"availavle+\" + filteravailable)\r\n this.setState(state => ({\r\n togglebackslider: true,\r\n opensection: true,\r\n openfield: false,\r\n isNewSection: true,\r\n selectedParentSection: parentSection,\r\n sections: [\r\n ...state.sections\r\n ],\r\n availableSections: filteravailable,\r\n finalsection: [\r\n ...state.sections\r\n ],\r\n }));\r\n }\r\n\r\n\r\n OnAddNewSection = (event, addedSection, selectedParentSection) => {\r\n let sectiondroppableid = `${btoa(Math.random())}`;\r\n const allsections = this.state.sections;\r\n const { settings } = this.state.options\r\n let newSection = { ...DNDSettings.Clone(settings.section), ...addedSection };\r\n newSection.DisplayOrder = Math.max.apply(Math, allsections.map(function (o) { return o.DisplayOrder || 0; })) + 1\r\n newSection.dndId = sectiondroppableid;\r\n if (selectedParentSection)\r\n newSection.parentDndId = selectedParentSection.dndId\r\n this.setState(state => ({\r\n selectedsection: newSection,\r\n togglebackslider: false,\r\n opensection: false,\r\n openfield: false,\r\n isNewSection: false,\r\n sections: [\r\n ...state.sections,\r\n { ...newSection }\r\n ],\r\n finalsection: [\r\n ...state.sections,\r\n { ...newSection }\r\n ],\r\n\r\n }));\r\n }\r\n\r\n OnAddRow = (event, section) => {\r\n let droppableid = `${btoa(Math.random())}`;\r\n const { settings } = this.state.options\r\n let newRow = DNDSettings.Clone(settings.row);\r\n newRow.dndId = droppableid;\r\n let newsections = this.state.sections.map(s => {\r\n if (DNDSettings.IsEqual(s.dndId, section.dndId)) {\r\n s.rows.push({ ...newRow });\r\n }\r\n return s;\r\n });\r\n this.setState({\r\n sections: newsections,\r\n finalsection: newsections\r\n });\r\n }\r\n\r\n OnSectionRemove = (event, section) => {\r\n //Getting section for all fields\r\n let allFieldssections = this.state.sections.filter(s => {\r\n return DNDSettings.IsEqual(s.dndId, \"allfields\");\r\n });\r\n //Adding deleting section fields to available fields\r\n if (allFieldssections != null) {\r\n let allFieldssectionsRowfields = allFieldssections[0].rows[0].fields\r\n section.rows.map(row => {\r\n row.fields.map(field => {\r\n allFieldssectionsRowfields.push(field)\r\n });\r\n });\r\n allFieldssections[0].rows[0].fields = allFieldssectionsRowfields\r\n }\r\n //deleting section\r\n let nondeletedsections = this.state.sections.filter(s => {\r\n return !DNDSettings.IsEqual(s.dndId, section.dndId);\r\n });\r\n //replacing updated available section\r\n /*\r\n let updatedsections = nondeletedsections.map(s => {\r\n if (DNDSettings.IsEqual(s.dndId, \"allfields\")) {\r\n return s;//allFieldssections;\r\n }\r\n return s;\r\n });\r\n */\r\n //Adding deleted section to available sections\r\n section.rows = [];\r\n let newavailableSections = this.state.availableSections;\r\n newavailableSections.push(section);\r\n this.setState({\r\n sections: nondeletedsections,\r\n finalsection: nondeletedsections,\r\n availableSections: newavailableSections\r\n });\r\n }\r\n\r\n\r\n mainSections = (sections) => {\r\n return sections.filter(sec => {\r\n return !sec.parentDndId\r\n });\r\n }\r\n\r\n getSubSections = (sections, parentSection) => {\r\n return sections.filter(sec => {\r\n if (sec.parentDndId)\r\n return sec.parentDndId == parentSection.dndId;\r\n });\r\n }\r\n\r\n CanShowMoveDown = (section) => {\r\n let upsections = this.state.sections.filter(s => {\r\n return DNDSettings.IsEqual(s.DisplayOrder, section.DisplayOrder + 1);\r\n });\r\n return upsections != null && upsections.length != 0;\r\n }\r\n\r\n OnMoveDown = (event, section) => {\r\n let upsections = this.state.sections.filter(s => {\r\n return DNDSettings.IsEqual(s.DisplayOrder, section.DisplayOrder + 1);\r\n });\r\n if (upsections == null || upsections.length == 0)\r\n return;\r\n let upsection = upsections[0];\r\n this.updateSectionOrder(upsection, section);\r\n }\r\n\r\n CanShowMoveUp = (section) => {\r\n let downsections = this.state.sections.filter(s => {\r\n return DNDSettings.IsEqual(s.DisplayOrder, section.DisplayOrder - 1);\r\n });\r\n return downsections != null && downsections.length != 0;\r\n }\r\n\r\n OnMoveUp = (event, section) => {\r\n let downsections = this.state.sections.filter(s => {\r\n return DNDSettings.IsEqual(s.DisplayOrder, section.DisplayOrder - 1);\r\n });\r\n if (downsections == null || downsections.length == 0)\r\n return;\r\n let downsection = downsections[0];\r\n this.updateSectionOrder(section, downsection);\r\n }\r\n\r\n updateSectionOrder = (upsection, downsection) => {\r\n let displayOrder = upsection.DisplayOrder;\r\n upsection.DisplayOrder = downsection.DisplayOrder;\r\n downsection.DisplayOrder = displayOrder;\r\n let updatedsections = this.state.sections.map(s => {\r\n if (DNDSettings.IsEqual(s.dndId, upsection.dndId)) {\r\n return downsection;\r\n }\r\n if (DNDSettings.IsEqual(s.dndId, downsection.dndId)) {\r\n return upsection;\r\n }\r\n return s;\r\n });\r\n this.setState({\r\n sections: updatedsections,\r\n finalsection: updatedsections\r\n });\r\n }\r\n\r\n\r\n handleBackSlider = (open) => (event) => {\r\n this.setState({\r\n togglebackslider: open\r\n })\r\n }\r\n\r\n getState = (settingsstate, type, selectedsection) => {\r\n console.log('settingsstate----', settingsstate, type, selectedsection)\r\n const { results } = settingsstate;\r\n if (type === 'field') {\r\n let updatedsec = this.state.sections\r\n updatedsec = updatedsec.map(sec => {\r\n return {\r\n ...sec, rows: sec.rows.map(row => {\r\n return {\r\n ...row, fields: row.fields.map(field => {\r\n if (DNDSettings.IsEqual(field.dndId, results.dndId)) {\r\n return { ...field, ...results }\r\n } else return field;\r\n })\r\n }\r\n })\r\n }\r\n });\r\n console.log(updatedsec)\r\n this.setState({\r\n sections: updatedsec,\r\n finalsection: updatedsec\r\n });\r\n }\r\n else if (type === 'newsection') {\r\n let updatedsections = this.state.sections.map(s => {\r\n if (DNDSettings.IsEqual(s.dndId, results.dndId)) {\r\n return results;\r\n }\r\n return s;\r\n });\r\n if (selectedsection) {\r\n selectedsection = { ...selectedsection, ...results }\r\n }\r\n this.setState({\r\n sections: updatedsections,\r\n finalsection: updatedsections,\r\n selectedsection: selectedsection\r\n });\r\n }\r\n else {\r\n let updatedsections = this.state.sections.map(s => {\r\n if (DNDSettings.IsEqual(s.dndId, results.dndId)) {\r\n return results;\r\n }\r\n return s;\r\n });\r\n this.setState({\r\n sections: updatedsections,\r\n finalsection: updatedsections\r\n });\r\n }\r\n }\r\n\r\n handleBack = () => {\r\n const { options } = this.props\r\n const { back } = options;\r\n const { routes } = back;\r\n if (Array.isArray(routes)) {\r\n let path = ''\r\n routes.forEach(each => {\r\n const { route, routeParams, matchProps } = each\r\n if (routeParams) {\r\n path += route + \"/\" + this.props.match.params[routeParams]\r\n }\r\n else if (matchProps) {\r\n path += route + \"/\" + this.props.results[matchProps]\r\n }\r\n else {\r\n path += route\r\n }\r\n })\r\n this.props.history.push(path)\r\n }\r\n }\r\n\r\n handleValidateBackSlider = () => {\r\n this.setState({ openValidate: false })\r\n }\r\n\r\n render() {\r\n const { options, compmap, components } = this.props\r\n const { availableSections, sections } = this.state\r\n const { dndconfig, styles, title, headerProps } = options\r\n let config = { mainSections: this.mainSections(this.state.sections), sections: this.state.sections, ...dndconfig };\r\n return (\r\n <div style={{ ...styles }} className=\"h-100 w-100\">\r\n {headerProps && <FormHeader title={'Section(s)'} savebutton={true} handleAdd={this.OnAddSection}\r\n addbutton={dndconfig.canAddSections ? true : false} handleSave={this.saveSitePermits} breadcrumbs={headerProps.breadcrumbs} custombutton={true} backbutton={headerProps.backbutton} handleBack={this.handleBack}\r\n handleCustom={() => this.setState({ openValidate: true })} customicon=\"assignment_turned_in\" customtitle = {'Bussiness Rules'}/>}\r\n {!headerProps && <div>\r\n <div className=\"row\">\r\n <div className=\"col-sm-12 \">\r\n <Fab onClick={this.saveSitePermits} className=\"float-right p-1\" title=\"Save Sections\" size=\"small\" color=\"secondary\" aria-label=\"save\" >\r\n <SaveIcon />\r\n </Fab>\r\n <span className=\"float-right p-1\" > </span>\r\n {dndconfig.canAddSections && <Fab onClick={this.OnAddSection} className=\"float-right p-1\" title=\"Add Section\" size=\"small\" color=\"secondary\" aria-label=\"add\" >\r\n <AddIcon />\r\n </Fab>\r\n }\r\n <span className=\"float-right p-1\" > </span>\r\n {\r\n this.state.sections && this.state.sections.length > 0 && <Fab onClick={() => this.setState({ openValidate: true })}\r\n className=\"float-right p-1\" title=\"All Sections Validation Rules\" size=\"small\" color=\"secondary\" aria-label=\"add\" >\r\n <ValidateIcon />\r\n </Fab>\r\n }\r\n </div>\r\n </div>\r\n </div>}\r\n <CBuildDragDropContext config={config} getSubSections={this.getSubSections} onDragEnd={this.onDragEnd} OnAddSection={this.OnAddSection}\r\n OnAddSubSection={this.OnAddSection} OnAddRow={this.OnAddRow} OnSectionSettings={this.OnSectionSettings} OnSectionRemove={this.OnSectionRemove}\r\n OnRowSettings={this.OnRowSettings} OnMoveDown={this.OnMoveDown} OnMoveUp={this.OnMoveUp} CanShowMoveUp={this.CanShowMoveUp}\r\n CanShowMoveDown={this.CanShowMoveDown} errors={this.state.errors}\r\n ></CBuildDragDropContext>\r\n {\r\n components.map(each => {\r\n const { options, type, key } = each\r\n const EachComp = compmap[type]\r\n return <EachComp key={key} {...each}\r\n compmap={compmap} sectionsettings={this.state.selectedsection} fieldsettings={this.state.selectedfield}\r\n togglebackslider={this.state.togglebackslider}\r\n handleBackSlider={this.handleBackSlider}\r\n getState={this.getState}\r\n opensection={this.state.opensection}\r\n openfield={this.state.openfield}\r\n isNewSection={this.state.isNewSection}\r\n err={this.state.err}\r\n sectionData={this.state.sections}\r\n availableSections={this.state.availableSections}\r\n OnAddNewSection={this.OnAddNewSection}\r\n selectedParentSection={this.state.selectedParentSection}\r\n />\r\n })\r\n }\r\n {this.state.openValidate && <ValidationsRules section={null} eachsection={false} open={this.state.openValidate} handleBackSlider={this.handleValidateBackSlider} />}\r\n\r\n </div>\r\n );\r\n }\r\n};\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage }, dispatch);\r\n}\r\nCBuildDND = connect(null, mapActions)(CBuildDND)\r\nexport default withRouter(CBuildDND);\r\n","import { getEnvVariable } from \"../../modules/environmentalList\";\r\n\r\nconst map = {\r\n \"type\": \"map\",\r\n \"key\": \"EPS_map_ADD\",\r\n \"order\": 32,\r\n \"options\": { \r\n \"mapkey\":\"EPS_map_ADD\",\r\n \"routes\": {\r\n \"route\": \"/\"\r\n },\r\n \"hastaxlotlayer\":\"N\",\r\n \"alignitem\": \"left\",\r\n \"widgets\": [\"Home\", \"Search\", \"Zoom\", \"Sketch\", \"Select\", \"BasemapGallery\", \"LayerList\",\"Measurement\",\"TaxlotSelector\", \"BufferCalc\", \"Print\",\"LayerFilter\",\"DatTable\"], // [\"Locate\", \"Home\", \"Search\", \"Zoom\", \"Measurement\", \"Draw\", \"Sketch\", \"BasemapGallery\", \"LayerList\", \"Bookmark\", \"SearchBookmark\"], \r\n \"basemap\": \"streets\",//\"streets\", \"satellite\", \"hybrid\", \"terrain\", \"topo\", \"gray\", \"dark-gray\", \"oceans\", \"national-geographic\", \"osm\", \"dark-gray-vector\", \"gray-vector\", \"streets-vector\", \"topo-vector\", \"streets-night-vector\", \"streets-relief-vector\", \"streets-navigation-vector\"\r\n \"viewProperties\": {\r\n // \"extent\": {\r\n // \"xmax\": -8057114.558988379,\r\n // \"xmin\": -8679311.969229413,\r\n // \"ymax\": 4872179.908902848,\r\n // \"ymin\": 4605567.554244282,\r\n // \"spatialReference\": 102100 \r\n // },\r\n \"zoom\": 12,\r\n \"center\": [-8368213.264108896,4738873.731573565],\r\n \"ui\": {\r\n \"components\": [\"attribution\"]// [\"compass\", \"attribution\"] // empty the UI, except for attribution\r\n }\r\n },\r\n \"printOptions\":{\r\n \"serviceURL\":\"http://development.delasoft.com:8443/arcgis/rest/services/Utilities/PrintingTools/GPServer/Export%20Web%20Map%20Task\" \r\n },\r\n \"searchOptions\": {\r\n \"State\": \"OR\"\r\n },\r\n \"zoomOptions\": {\r\n \"maxZoomed\": false,\r\n \"minZoomed\": false\r\n },\r\n \"drawOptions\": {\r\n \"Tools\": [\"point\", \"polyline\", \"polygon\", \"rectangle\", \"circle\"],//[\"point\", \"polyline\", \"polygon\", \"rectangle\", \"circle\"]\r\n \"AllowMultiple\":{\"Points\":false, \"Lines\":false,\"Polygons\":false},\r\n \"LayerIndex\": 1\r\n },\r\n 'searchbookmarks':{\r\n \"drawTool\":' Hello I ma me',\r\n \"url\":\"http://development.delasoft.com:9443/arcgis/rest/services/AWS_KEPT_Test/Bookmarks/FeatureServer/0\",\r\n \"defaultChoice\":'E',\r\n \"defaultName\":'Bookmark #',\r\n \"defaultSymbol\":{\r\n type: \"simple-fill\",\r\n outline: {\r\n style: \"dash\",\r\n miterLimit: 16,\r\n color: [0, 112, 255, 1]\r\n },\r\n color: [115, 223, 255, 0.24]\r\n },\r\n \"defaultMessage\":'Draw Box on Map for Bookmark',\r\n 'appname':'INQUERY',\r\n 'username':'13384'\r\n },\r\n 'tasks': {\r\n \"TaxParcels\": {\r\n \"url\": \"\",\r\n \"queryExpression\": \"1!=1\",//PIN = '433-6.18-12.00' //\"queryExpression\": \"PIN = '433-6.18-12.00'\",\r\n \"LayerIndex\":0\r\n }\r\n },\r\n \"LayerOptionsConfig\":\r\n {\r\n \"Category\": [\"F\"],\r\n \"MapType\": [\"A\",\"R\"] //A-Add Record,L-Landing,G-Grid,R-Record review \r\n }, \r\n \"LayerOptions\":[\r\n ],\r\n \"FeatureLayerListOptions\":[],\r\n \"CountyLayerOptions\":[ ],\r\n \"FeatureLayers\": {\r\n \"POINT\": getEnvVariable('ArcGIS')+`/rest/services/EPS/MasterTable_Geom_Service/FeatureServer/0`,\r\n \"MULTIPOINT\": getEnvVariable('ArcGIS')+`/rest/services/EPS/MasterTable_Geom_Service/FeatureServer/1`,\r\n \"LINE\": getEnvVariable('ArcGIS')+`/rest/services/EPS/MasterTable_Geom_Service/FeatureServer/2`,\r\n \"POLYGON\": getEnvVariable('ArcGIS')+`/rest/services/EPS/MasterTable_Geom_Service/FeatureServer/3`,\r\n \"LayerIndex\":2//For Adding GraphicsLayer\r\n },\r\n \"MasterLookupFields\":[],\r\n \"FieldsData\": [],\r\n \"MapSettings\": {},\r\n \"MultipleLocationData\":[], // Specific to KEPT project for stroing the multiple location data, if any.\r\n \"UserId\":\"1\"\r\n }\r\n};\r\n\r\nexport default map;","/**\r\n *********************************************************\r\n Description: Handles paper component. It is used only once where all the created applications are shown. This is a custom file and contains a dropdown and grid.\r\n When the value in the dropdown changes the grid is updated.\r\n Required props: type.\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\n\r\nimport Accordion from '@material-ui/core/Accordion';\r\nimport AccordionDetails from '@material-ui/core/AccordionDetails';\r\nimport AccordionSummary from '@material-ui/core/AccordionSummary';\r\nimport Chip from '@material-ui/core/Chip';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport Radio from '@material-ui/core/Radio';\r\nimport RadioGroup from '@material-ui/core/RadioGroup';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\r\nimport { toDataSourceRequestString, translateDataSourceResultGroups } from '@progress/kendo-data-query';\r\nimport { ExcelExport } from '@progress/kendo-react-excel-export';\r\nimport { Grid, GridColumn, GridColumnMenuFilter, GridToolbar } from '@progress/kendo-react-grid';\r\nimport { Splitter } from '@progress/kendo-react-layout';\r\nimport moment from 'moment';\r\nimport PropTypes from 'prop-types';\r\nimport React, { Component, Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { bindActionCreators } from 'redux';\r\nimport AddRecordMapJson from '../../../json/map/addrecordgridmap';\r\nimport MapJson from '../../../json/map/permitsgridmap';\r\nimport { getEnvVariable } from '../../../modules/environmentalList';\r\nimport { setRecordData } from '../../actions';\r\nimport DefaultSettings from '../../controls/components/settings';\r\nimport { GetData } from '../../controls/helpers/requests';\r\nimport { createRequest, requestApi } from '../../controls/helpers/rest';\r\nimport Map from '../../modules/map/map';\r\nimport GridHeader from '../Grid/cgridheader';\r\nimport { CustomColumnMenu } from '../Grid/customColumnMenu.jsx';\r\nimport { getAccessById, GetFetchProps, getToken } from '../header';\r\nimport Dialog from '../report/dialog';\r\nimport { GridFilters } from '../../controls/settings/grid/gridFilters.js';\r\nconst _ = require('lodash');\r\n\r\n\r\nconst styles = theme => ({\r\n root: {\r\n \"& .MuiFormLabel-root\": {\r\n lineHeight: 0,\r\n },\r\n \"& label + .MuiInput-formControl\": {\r\n marginTop: '6px',\r\n\r\n },\r\n \"& .MuiInputBase-input\": {\r\n fontSize: 8,\r\n padding: 0\r\n }\r\n },\r\n\r\n});\r\n\r\nconst dropdowntransformProps = {\r\n name: 'Name',\r\n value: 'Id'\r\n}\r\n\r\nclass FilteredNameHeader extends React.Component {\r\n render() {\r\n return (\r\n <a className=\"k-link\" onClick={this.props.onClick}>\r\n <span style={{ color: \"#1976d2\" }} className=\"k-icon k-i-filter\"></span>\r\n <span style={{ color: \"#1976d2\" }}>{this.props.title}</span>\r\n {this.props.children}\r\n </a>\r\n );\r\n }\r\n}\r\n\r\nclass NameHeader extends React.Component {\r\n render() {\r\n return (\r\n <a className=\"k-link\" onClick={this.props.onClick}>\r\n <span>{this.props.title}</span>\r\n {this.props.children}\r\n </a>\r\n );\r\n }\r\n}\r\n\r\n\r\nclass CPaper extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.mapsettings = this.props.addMapJson ? { ...AddRecordMapJson } : { ...MapJson }\r\n this.profile = null\r\n this.state = {\r\n submoduleKey: '',\r\n values: null,\r\n mapdata: [],\r\n value: '',\r\n add: true,\r\n initialdata: [],\r\n datagridcol: [],\r\n filteredfield: [],\r\n getviolationid: '',\r\n userrole: '',\r\n dataState: {\r\n skip: 0, take: 20\r\n },\r\n passDataState: {\r\n skip: 0, take: 20\r\n },\r\n allgridcols: null,\r\n pageable: {\r\n buttonCount: 2,\r\n info: true,\r\n type: 'numeric',\r\n previousNext: true,\r\n pageSizes: [10, 20, 30, 40, 50, 100],\r\n },\r\n panes: [\r\n { size: (this.props.SHOW_ON_TYPE ? (this.props.SHOW_ON_TYPE === 'G' ? '100%' : '0%') : `${getEnvVariable('RecordMapPercentage')}%`), collapsible: false },\r\n {},\r\n { size: (this.props.SHOW_ON_TYPE ? (this.props.SHOW_ON_TYPE !== 'G' ? '100%' : '0%') : `${100 - getEnvVariable('RecordMapPercentage')}%`), collapsible: false },\r\n ],\r\n nestedPanes: [\r\n { size: this.props.SHOW_ON_TYPE ? (this.props.SHOW_ON_TYPE === 'G' ? '100%' : '0%') : `${getEnvVariable('RecordMapPercentage')}%` },\r\n {},\r\n { size: (this.props.SHOW_ON_TYPE ? (this.props.SHOW_ON_TYPE !== 'G' ? '100%' : '0%') : `${100 - getEnvVariable('RecordMapPercentage')}%`), resizable: false },\r\n ],\r\n applicantinfo: this.props.header && this.props.header.recorddata && this.props.header.recorddata[\"Applicant Information\"] ? this.props.header.recorddata[\"Applicant Information\"] : null,\r\n helpertext: null,\r\n databykeysrecorddata: null,\r\n initialloadextrainfo: null,\r\n defaultId: '-1',\r\n permitTypeId: '-1'\r\n\r\n }\r\n }\r\n /**\r\n *********************************************************\r\n Description: Fetches the data for the dropdown. Handles the permission to create application based on the user rights.\r\n Required props: crud.read for the dropdown\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n\r\n\r\n componentDidMount() {\r\n // no static words\r\n let inthis = this\r\n if (inthis.props.isviolationgrid || inthis.props.options.hascustomselection || inthis.props.options.isViolation)\r\n inthis.otherModules();\r\n else inthis.initialLoad()\r\n\r\n }\r\n\r\n otherModules = () => {\r\n if (this.props.isviolationgrid) {\r\n const { options, components, accessPermissions } = this.props\r\n const secondcomponent = components[1]\r\n const crud = secondcomponent.options.crud;\r\n let getcolumns = crud.getcolumns\r\n requestApi(createRequest(getcolumns, {}, this.props.match.params)).then(results => {\r\n if (results && Array.isArray(results) && results.length > 0) {\r\n this.setState({ getviolationid: results[0].Id }, () => this.initialLoad())\r\n }\r\n\r\n })\r\n }\r\n if (this.props.options.hascustomselection || this.props.options.isViolation) {\r\n const { options, components, accessPermissions } = this.props\r\n const secondcomponent = components[1]\r\n const crud = secondcomponent.options.crud;\r\n let read = crud.checkread\r\n let datakeys = [{\r\n url: getEnvVariable('Application') + `/api/SitePermitSectionFieldsView/DataByKeys/{routeid}/{routeid1}`,\r\n \"routeProps\": [{\r\n name: \"routeid\",\r\n key: \"routeid\",\r\n },\r\n {\r\n name: \"routeid1\",\r\n key: \"routeid1\",\r\n }],\r\n type: 'post',\r\n alert: true,\r\n body: [\"COMPANY_ID\", \"PERMIT_NO\", \"FROM_COMPANY_ID\", \"RECORDS_REF\"]\r\n }]\r\n if (this.props.options.isViolation) {\r\n Promise.all(datakeys.map(each => requestApi(createRequest(each, each.body, this.props.match.params)))).then(datacustomkeys => {\r\n let data = datacustomkeys[0]\r\n this.setState({ databykeysrecorddata: data[0], initialloadextrainfo: { results: datacustomkeys[0][0] } });\r\n })\r\n }\r\n else {\r\n requestApi(createRequest({ ...read, ['alert']: false }, {}, this.props.match.params)).then(results => {\r\n let checkedlist = _.map(results, (value, key) => {\r\n if (this.props.options && this.props.options.isTransferGrid)\r\n return {\r\n PermitNo: value.TransferPermitNo,\r\n TransferPermitId: value.TransferPermitId,\r\n }\r\n else\r\n return {\r\n PermitNo: value.PermitNo,\r\n MasterTableId: value.MasterTableId,\r\n }\r\n });\r\n this.setState({\r\n checkedlist: checkedlist, dataState: {\r\n skip: 0, take: \"20\"\r\n },\r\n })\r\n Promise.all(datakeys.map(each => requestApi(createRequest(each, each.body, this.props.match.params)))).then(datacustomkeys => {\r\n let data = datacustomkeys[0]\r\n this.setState({ databykeysrecorddata: data[0], initialloadextrainfo: { results: datacustomkeys[0][0] } }, () => this.initialLoad());\r\n })\r\n\r\n })\r\n }\r\n }\r\n }\r\n\r\n initialLoad = () => {\r\n const { options, components, accessPermissions } = this.props\r\n const firstcomponent = components[0]\r\n const crud = firstcomponent.options.crud;\r\n let read = crud.read\r\n const { modulePermissions } = accessPermissions ? accessPermissions : {}\r\n if (this.props.options.hascustomselection) {\r\n this.setState({\r\n submoduleKey: this.props.match.params.key,\r\n dataState: {\r\n skip: 0, take: \"20\"\r\n },\r\n permitTypeId: '-1'\r\n }, () => {\r\n this.getIntialSitePermits()\r\n })\r\n }\r\n else if (this.props.customSubmodule) {\r\n this.setState({\r\n submoduleKey: this.props.match.params.id ? this.props.match.params.id : this.props.match.params.key,\r\n customSubmodule: this.props.customSubmodule || this.props.match.params.id,\r\n dataState: {\r\n skip: 0, take: \"20\"\r\n },\r\n permitTypeId: '-1'\r\n }, () => {\r\n this.getIntialSitePermits()\r\n })\r\n }\r\n else {\r\n requestApi(createRequest(read, {}, this.props.customSubmodule || this.props.match.params)).then(results => {\r\n this.mapIdstoSiteIds = {};\r\n let tempResults = results || []\r\n tempResults.unshift({ Id: -1, Name: 'All' })\r\n let defaultval = tempResults && tempResults.length > 0 && tempResults.find(i => i['IsDefault'] === 'Y' || i['isDefault'] === 'Y')\r\n let defid = defaultval && defaultval.Id ? defaultval.Id : '-1'\r\n this.setState({\r\n submoduleKey: this.props.match.params.id ? this.props.match.params.id : this.props.match.params.key,\r\n customSubmodule: this.props.customSubmodule || this.props.match.params.id,\r\n values: tempResults,\r\n defaultId: this.props.accessPermissions.portal === 'E' ? -1 : defid,\r\n dataState: {\r\n skip: 0, take: 20\r\n },\r\n permitTypeId: defid\r\n }, () => {\r\n this.getIntialSitePermits()\r\n })\r\n })\r\n }\r\n }\r\n reload = () => {\r\n const current = this.props.location.pathname;\r\n this.props.history.replace(`/reload`);\r\n setTimeout(() => {\r\n this.props.history.replace(current);\r\n });\r\n }\r\n\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n let previd = prevProps.match.params.id\r\n let presid = prevState.customSubmodule\r\n\r\n if (previd != presid && presid) {\r\n this.setState({ previd: presid });\r\n this.reload();\r\n }\r\n if (!this.props.options.simplegrid && (!this.props.options.hascustomselection && !this.props.customSubmodule && !this.props.applicantId &&\r\n (this.state.submoduleKey !== (this.props.match.params.id))) || (this.props.customSubmodule && (this.state.customSubmodule !== (this.props.customSubmodule))) ||\r\n (this.props.applicantId && (this.props.applicantId != prevProps.applicantId))) {\r\n this.initialLoad();\r\n }\r\n if (this.props.SHOW_ON_TYPE !== prevProps.SHOW_ON_TYPE) {\r\n this.setState({\r\n panes: [\r\n { size: (this.props.SHOW_ON_TYPE ? (this.props.SHOW_ON_TYPE === 'G' ? '100%' : '0%') : `${getEnvVariable('RecordMapPercentage')}%`), collapsible: false },\r\n {},\r\n { size: (this.props.SHOW_ON_TYPE ? (this.props.SHOW_ON_TYPE !== 'G' ? '100%' : '0%') : `${100 - getEnvVariable('RecordMapPercentage')}%`), collapsible: false },\r\n ],\r\n nestedPanes: [\r\n { size: this.props.SHOW_ON_TYPE ? (this.props.SHOW_ON_TYPE === 'G' ? '100%' : '0%') : `${getEnvVariable('RecordMapPercentage')}%` },\r\n {},\r\n { size: (this.props.SHOW_ON_TYPE ? (this.props.SHOW_ON_TYPE !== 'G' ? '100%' : '0%') : `${100 - getEnvVariable('RecordMapPercentage')}%`), resizable: false },\r\n ],\r\n })\r\n }\r\n }\r\n\r\n fetchData(dataState, urlGrid, exportData = false, isfilter = false) {\r\n //Filtering Application Grid Data Based on Usertype - Is In Travel Way for WRS\r\n if (this.state.radiovalue == \"ActionRequired\") {\r\n //urlGrid = getEnvVariable('Application') + '/api/Application/All/' + this.state.submoduleKey + '/ActionRequired/' + this.state.value\r\n }\r\n else if(this.state.radiovalue == \"MyInvolvement\")\r\n {\r\n //urlGrid = getEnvVariable('Application') + '/api/Application/All/' + this.state.submoduleKey + '/MyInvolvement/' + this.state.value\r\n \r\n }\r\n let access = this.props.accessPermissions;\r\n let userurl = getEnvVariable('MasterAdmin') + `/api/${getEnvVariable('ModuleKey')}InternalUser/${getEnvVariable('ModuleKey')}UserById/` + access.userId;\r\n let usertype = '';\r\n GetData(userurl)\r\n .then((res) => {\r\n if (res) {\r\n usertype = res.UserType;\r\n //this.state.userrole = res.UserType;\r\n }\r\n });\r\n let queryStr = this.props.customSubmodule ? 'filter=Application___StatusDesc~contains~%27Issued%27&page=1&pageSize=20' : `${toDataSourceRequestString(dataState)}`;\r\n if (exportData) {\r\n if (dataState.filter || dataState.sort) {\r\n let datastate = this.state.passDataState;\r\n delete datastate['skip']\r\n delete datastate['take']\r\n queryStr = `${toDataSourceRequestString(datastate)}`;\r\n }\r\n else queryStr = ''\r\n }\r\n // if (this.props.options.hascustomselection) {\r\n // queryStr = ''\r\n // }\r\n // Serialize the state\r\n const hasGroups = dataState.group && dataState.group.length;\r\n const { options, components, defaults, order, type, compmap, rules, accessPermissions, accessLevelPermissions, ...otherProps } = this.props;\r\n const { gridcolumns } = options\r\n const { routes, crud } = options\r\n let url = urlGrid;\r\n let urlPath = `${url}${localStorage.getItem('impersonate') && '?impersonateFor=' + localStorage.getItem('impersonate') + '&' || '?'}${queryStr}`;\r\n let hasfilterfields = [];\r\n hasfilterfields = this.state.filteredfield.map(field => {\r\n if (GridColumnMenuFilter.active(field, dataState.filter)) {\r\n return field;\r\n }\r\n })\r\n const init = {\r\n method: 'GET', ...GetFetchProps(),\r\n };\r\n let allgridcols = []\r\n GetData(urlPath)\r\n .then((res) => {\r\n if (res && res.data) {\r\n let { data, total } = res;\r\n // if(getEnvVariable('ModuleKey') === 'WRS')\r\n // {\r\n // if(access.isAdmin == \"N\" && usertype != \"D\")\r\n // {\r\n // if(usertype == \"C\" || usertype == \"CC\")\r\n // {\r\n // data = data.filter(e=>e.IS_IN_TRAVEL_WAY === 'N');\r\n // }\r\n // else {\r\n // data = data.filter(e=>e.IS_IN_TRAVEL_WAY === 'Y')\r\n // }\r\n // }\r\n // }\r\n let mapdata = data.map(res => {\r\n return res.Id\r\n })\r\n\r\n if (this.props.options.hascustomselection) {\r\n data = data.map(dataItem => Object.assign({ CustomSelection: this.state.checkedlist.some(x => x['Id'] ? x['Id'] === dataItem[\"Id\"] : (this.props.options.isTransferGrid && x['PermitNo'] === dataItem[\"Permit No\"]) || x['MasterTableId'] === dataItem[\"Id\"]) ? true : false, customselectiondisabled: (this.state.checkedlist.length > this.props.options.checkBoxEnableCount && !this.state.checkedlist.some(x => x['Id'] ? x['Id'] === dataItem[\"Id\"] : x['MasterTableId'] === dataItem[\"Id\"]) ? true : false) }, dataItem))\r\n }\r\n if (this.props.hascheckbox) {\r\n data = data.map(dataItem => Object.assign({ hascheckboxselection: false }, dataItem))\r\n }\r\n let tempdata = data.map(dataItem => {\r\n if (dataItem) {\r\n dataItem = { ...dataItem, selected: false }\r\n return dataItem\r\n }\r\n })\r\n if (this.state.value === '') {\r\n tempdata.forEach(res => {\r\n if (res.CreatedOn) {\r\n res.CreatedOn = res.CreatedOn !== null ? moment(res.CreatedOn).format('MM/DD/YYYY hh:mm:ss A') : \"\"\r\n } if (res.UpdatedOn) {\r\n res.UpdatedOn = res.UpdatedOn !== null ? moment(res.UpdatedOn).format('MM/DD/YYYY hh:mm:ss A') : \"\"\r\n }\r\n })\r\n\r\n }\r\n this.setState({\r\n filteredfield: dataState && dataState.filter != null ? hasfilterfields : [],\r\n data: hasGroups ? translateDataSourceResultGroups(tempdata) : tempdata,\r\n total,\r\n dataState: this.state.changedDataState ? this.state.dataState : dataState,\r\n changedDataState: false,\r\n mapdata: mapdata, userrole : usertype\r\n }, () => {\r\n if (this.props.attachparamgridkey && !isfilter) { //report\r\n let existingReportsURL = getEnvVariable('Report') + `/api/Reports/Default/${this.props.attachparamgridkey ? this.props.match.params.id + this.props.gridkey : this.props.gridkey}`\r\n GetData(existingReportsURL, null, null, false).then(res => {\r\n if (res && res.Id > 0) {\r\n if (DefaultSettings.getAlert() != null && alert)\r\n DefaultSettings.getAlert().show('Default filters applied to the grid', 'info');\r\n this.loadReportFilter(this, res.Id)\r\n }\r\n })\r\n }\r\n if (exportData) {\r\n this._export.save(this.state.data, this.state.datagridcol);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n getIntialSitePermits = () => {\r\n if (this.props.options.hascustomselection) {\r\n this.getGridColumns(this.state.initialloadextrainfo && this.state.initialloadextrainfo.results && this.state.initialloadextrainfo.results['COMPANY_ID'] &&\r\n this.state.initialloadextrainfo.results['COMPANY_ID'] ? this.state.databykeysrecorddata['COMPANY_ID']\r\n : this.state.initialloadextrainfo && this.state.initialloadextrainfo.results && this.state.initialloadextrainfo.results['FROM_COMPANY_ID'] &&\r\n this.state.initialloadextrainfo.results['FROM_COMPANY_ID'] ? this.state.databykeysrecorddata['FROM_COMPANY_ID'] : this.state.defaultId);\r\n // this.getGridColumns('-1');\r\n }\r\n else if (this.props.options && this.props.options.isViolation) {\r\n this.getGridColumns(this.state.initialloadextrainfo && this.state.initialloadextrainfo.results && this.state.initialloadextrainfo.results['RECORDS_REF'] &&\r\n this.state.initialloadextrainfo.results['RECORDS_REF'] ? this.state.databykeysrecorddata['RECORDS_REF'] : this.state.defaultId);\r\n }\r\n else {\r\n this.getGridColumns(this.state.defaultId);\r\n }\r\n\r\n // change to kendo grid format like cgrid\r\n }\r\n /**\r\n *********************************************************\r\n Description: Handles the double click on the grid row. Opens the created application for review.\r\n Required props: update prop on the grid components with link prop.\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n rowRender = (trElement, dataItem) => {\r\n const { value } = this.state\r\n const { options, components, compmap } = this.props\r\n const [firstcomponent, secondcomponent] = components\r\n const selected = dataItem.dataItem.selected;\r\n const green = { backgroundColor: \"rgb(255, 229,124,0.32)\" };\r\n const trProps = {\r\n ...trElement.props,\r\n style: selected ? green : null,\r\n onDoubleClick: () => {\r\n let routeidval = getEnvVariable('RecordRouteId')\r\n const pushLink = secondcomponent.options.crud.update.link.link + '/' + this.state.submoduleKey + '/' + dataItem.dataItem[routeidval] + '/' + dataItem.dataItem.Id\r\n this.props.history.replace(`${pushLink}`)\r\n }\r\n };\r\n\r\n return React.cloneElement(trElement, { ...trProps }, trElement.props.children);\r\n }\r\n\r\n getGridColumns = (value) => {\r\n let add = this.props.options.hascustomselection ? true : getAccessById(value);\r\n const { options, components, compmap } = this.props\r\n const [firstcomponent, secondcomponent] = components;\r\n // use separate file for the val not in copaper\r\n let val = this.props.isviolationgrid === true ? this.state.getviolationid : this.props.options.hascustomselection && this.props && this.props.match && this.props.match.params && this.props.match.params.routeid ? this.props.match.params.routeid : this.props.options && this.props.options.isViolation && this.props && this.props.match && this.props.match.params && this.props.match.params.routeid ? this.props.match.params.routeid : value\r\n const urlPath = getEnvVariable('Application') + '/api/SitePermitSectionFieldsView/GridFields/' + `${this.props.customSubmodule ? this.state.customSubmodule : this.state.submoduleKey}` + '/' + (val);\r\n const urlGridPath = this.props.istransfer && this.props.applicantId && this.props.istransfer === 'Y' ?\r\n getEnvVariable('Application') + `/api/Application/TransferPermits/${this.state.submoduleKey}/${this.props.applicantId}` :\r\n this.props.isrevision && this.props.applicantId && this.props.isrevision === 'Y' ?\r\n getEnvVariable('Application') + `/api/Application/RevisionPermits/${this.state.submoduleKey}/${this.props.applicantId}` :\r\n secondcomponent.options.crud.read.url + `${this.props.customSubmodule ?\r\n this.state.customSubmodule : this.state.submoduleKey}` + `${this.props.accessPermissions.portal == 'E' ? '/' : getEnvVariable('ModuleKey') == \"WRS\" ? (this.props.accessPermissions.isAdmin == \"Y\" ? '/' : '/ActionRequired/') : (getEnvVariable('ModuleKey') == 'FORWARD' && this.props.match.params && this.props.match.params.id == 'INQUIRIES') ? '/' : '/ActionRequired/'}` + `${this.props.isviolationgrid == true ? this.state.initialloadextrainfo.results['PERMIT_NO'] : value}`\r\n const init = {\r\n method: 'GET', ...GetFetchProps()\r\n\r\n };\r\n GetData(urlPath)\r\n .then((data) => {\r\n let dataarr = data;\r\n // only one check box handle in grid if it is dual\r\n if (this.props.options.hascustomselection) {\r\n let customselectionobj = { columnName: \"CustomSelection\", fieldName: \"CustomSelection\" }\r\n dataarr.unshift(customselectionobj);\r\n }\r\n if (this.props.hascheckbox) {\r\n let hascheckboxselections = { columnName: \"hascheckboxselection\", fieldName: \"hascheckboxselection\" }\r\n dataarr.unshift(hascheckboxselections);\r\n }\r\n let tempdatarr = dataarr.map(m => { //get words from json not here -- no static values\r\n m.show = true; // anyther name changes\r\n m.title = this.props && this.props.match && this.props.match.params && this.props.match.params.id === 'VIOLATIONS' ? 'Violation Number' : m.columnName\r\n m.title = m.columnName;\r\n m.filter = m.uiFieldTypeComponent ? GridFilters(m.uiFieldTypeComponent) : 'text'\r\n return m\r\n })\r\n this.setState({\r\n value: value,\r\n add: add,\r\n datagridcol: tempdatarr\r\n });\r\n }).catch(err => {\r\n console.log('err-------------------', err)\r\n });\r\n this.setState({ radiovalue: (this.props.accessPermissions.isAdmin === 'Y' && getEnvVariable('ModuleKey') === 'WRS') || (getEnvVariable('ModuleKey') == 'FORWARD' && this.props.match.params && this.props.match.params.id == 'INQUIRIES') ? 'All' : 'ActionRequired', urlPath: urlGridPath }, () => {\r\n this.fetchData(this.state.dataState, urlGridPath)\r\n })\r\n }\r\n\r\n /**\r\n *********************************************************\r\n Description: Handles the change in dropdown values.\r\n Required props: event. Add button is controlled by the permissions\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n\r\n handleFieldChange = (event) => {\r\n const { name, value } = event.target\r\n const siteId = this.mapIdstoSiteIds[value];\r\n const { options, components, compmap } = this.props\r\n const [firstcomponent, secondcomponent] = components\r\n this.getGridColumns(value)\r\n this.setState({ permitTypeId: value });\r\n }\r\n\r\n\r\n /**\r\n *********************************************************\r\n Description: Columns modify and save to report.\r\n Required props: event. Add button is controlled by the permissions\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n onColumnsSubmit = (columnsState) => {\r\n this.setState({\r\n datagridcol: columnsState\r\n });\r\n }\r\n\r\n onColumnsInitialSubmit = (columnsState) => {\r\n this.setState({\r\n allgridcols: columnsState\r\n });\r\n }\r\n\r\n saveReport = (cols) => {\r\n console.log(\"save report is clicked\", cols);\r\n let valueref = this.state.value\r\n const { options, components, compmap } = this.props\r\n const [firstcomponent, secondcomponent] = components\r\n const urlPath = getEnvVariable('Application') + '/api/SitePermitSectionFieldsView/GridFields/' + this.state.submoduleKey + '/' + (valueref) + `${localStorage.getItem('impersonate') ? '?impersonateFor=' + localStorage.getItem('impersonate') : ''}`;\r\n const urlGridPath = secondcomponent.options.crud.read.url + this.state.submoduleKey + '/' + valueref\r\n let gridoptions = {\r\n excel: {\r\n fileName: \"Excel.xlsx\",\r\n allPages: true,\r\n },\r\n withdatastateformat: this.state.dataState,\r\n dataSource: {\r\n type: \"webapi\",\r\n transport: {\r\n read: {\r\n url: urlGridPath,\r\n headers: this.headers,\r\n columnurl: urlPath,\r\n datastate: `${toDataSourceRequestString(this.state.passDataState)}`,\r\n }\r\n },\r\n change: () => {\r\n },\r\n pageSize: 20,\r\n total: this.state.data ? this.state.data.length : this.state.initialdata.length,\r\n skip: 0,\r\n take: 20,\r\n serverPaging: true,\r\n serverSorting: true,\r\n serverFiltering: true,\r\n serverGrouping: true,\r\n serverAggregates: true,\r\n schema: {\r\n data: \"data\",\r\n total: \"total\",\r\n errors: \"errors\"\r\n }\r\n },\r\n change: () => this.onChange(),\r\n pageable: {\r\n refresh: true,\r\n buttonCount: 2,\r\n pageSizes: [10, 20, 30, 40, 50, 100],\r\n },\r\n dataBound: () => this.onLoad(),\r\n selectable: 'single row',\r\n columnMenu: true,\r\n sortable: true,\r\n //filterable: true,\r\n resizable: true,\r\n // height: props.height || $(document).height() - 160,\r\n scrollable: true,\r\n reorderable: true,\r\n // groupable: { footer: 'visible' },\r\n columns: (this.state.datagridcol || []).filter(each => {\r\n if (each.show)\r\n return { ...each, width: each.width || 200, filterable: each.filterable || { multi: true, search: true } }\r\n }),\r\n noRecords: {\r\n template: \"<p class='lead'>No data available.</p>\"\r\n },\r\n }\r\n console.log(\"settings\" + JSON.stringify(gridoptions))\r\n this.setState({ savereprt: true, kendoStructure: JSON.stringify(gridoptions) })\r\n }\r\n\r\n\r\n handleDataStateChange = (changeEvent) => {\r\n const { options, components, compmap } = this.props;\r\n let filterkey = this.props.location.pathname;\r\n let localStorageFilter = JSON.parse(localStorage.getItem(filterkey)) ? JSON.parse(localStorage.getItem(filterkey)) : {};\r\n localStorageFilter.filter = changeEvent.dataState.filter;\r\n let tempDataState = _.merge(localStorageFilter, changeEvent.dataState)\r\n const [firstcomponent, secondcomponent] = components\r\n const url = secondcomponent.options.crud.read.url + `${this.props.customSubmodule ? this.state.customSubmodule : this.state.submoduleKey}`\r\n const urlGridPath = this.state.radiovalue === 'All' ? url + '/' + this.state.value : this.state.radiovalue === \"MyInvolvement\" ? url + '/MyInvolvement/' + this.state.value : this.state.radiovalue === \"ActionRequired\" ? url + '/ActionRequired/' + this.state.value : ('');\r\n const changeDataState = Object.assign({}, tempDataState);\r\n const duplicate = JSON.parse(JSON.stringify(tempDataState))\r\n let changedDataState = false;\r\n if (changeDataState.filter) {\r\n changedDataState = true\r\n changeDataState.filter.filters.map(fil => {\r\n fil.filters.map(filt => {\r\n // filt.field = filt.field.replace(\"?\", \"\")\r\n filt.field = filt.field.replace(/\\s/g, \"___\")\r\n filt.value = isNaN(Number(filt.value)) ? filt.value : parseInt(filt.value)\r\n filt.operator = filt.operator\r\n })\r\n })\r\n }\r\n if (changeDataState.sort) {\r\n changedDataState = true\r\n changeDataState.sort.map(sor => {\r\n sor.field = sor.field.replace(/\\s/g, \"___\")\r\n })\r\n }\r\n localStorage.setItem(filterkey, JSON.stringify(changeDataState))\r\n this.setState({ urlPath: urlGridPath, dataState: duplicate, changedDataState: changedDataState, passDataState: changeDataState }, () => {\r\n this.fetchData(changeDataState, urlGridPath);\r\n })\r\n\r\n }\r\n\r\n columnProps(field) {\r\n if (!this.state.filteredfield.includes(field)) {\r\n if (this.isColumnActive(field, this.state.dataState)) {\r\n this.setState({ filteredfield: [...this.state.filteredfield, field] })\r\n }\r\n }\r\n\r\n }\r\n\r\n isColumnActive(field, dataState) {\r\n return GridColumnMenuFilter.active(field, dataState.filter)\r\n }\r\n\r\n /*Radio Button\r\n *********************************************************\r\n Description: Displays the grid based on involvment and action required as per the sitepermit id and all\r\n Required props: event. Add button is controlled by the permissions\r\n limitations : N/A\r\n *********************************************************\r\n */\r\n handleRadioChange = (event) => {\r\n\r\n let urlPath = getEnvVariable('Application') + '/api/Application/All/' + this.state.submoduleKey + '/ActionRequired' + `${localStorage.getItem('impersonate') ? '?impersonateFor=' + localStorage.getItem('impersonate') : ''}`;\r\n let siteval = this.state.value ? '/' + this.state.value : ''\r\n if (event.target.value === 'All') {\r\n urlPath = getEnvVariable('Application') + '/api/Application/All/' + this.state.submoduleKey + siteval + `${localStorage.getItem('impersonate') ? '?impersonateFor=' + localStorage.getItem('impersonate') : ''}`\r\n }\r\n if (event.target.value === 'ActionRequired') {\r\n urlPath = getEnvVariable('Application') + '/api/Application/All/' + this.state.submoduleKey + '/ActionRequired' + siteval + `${localStorage.getItem('impersonate') ? '?impersonateFor=' + localStorage.getItem('impersonate') : ''}`\r\n }\r\n if (event.target.value === 'MyInvolvement') {\r\n urlPath = getEnvVariable('Application') + '/api/Application/All/' + this.state.submoduleKey + '/MyInvolvement' + siteval + `${localStorage.getItem('impersonate') ? '?impersonateFor=' + localStorage.getItem('impersonate') : ''}`\r\n }\r\n let dataState = {\r\n skip: 0, take: 20\r\n }\r\n const changeDataState = Object.assign({}, dataState);\r\n const duplicate = JSON.parse(JSON.stringify(this.state.dataState))\r\n let changedDataState = false\r\n if (changeDataState.filter) {\r\n changedDataState = true\r\n changeDataState.filter.filters.map(fil => {\r\n fil.filters.map(filt => {\r\n filt.field = filt.field.replace(/\\s/g, \"___\")\r\n })\r\n })\r\n }\r\n if (changeDataState.sort) {\r\n changedDataState = true\r\n changeDataState.sort.map(sor => {\r\n sor.field = sor.field.replace(/\\s/g, \"___\")\r\n })\r\n }\r\n this.setState({ urlPath: urlPath, radiovalue: event.target.value, dataState: duplicate, changedDataState: changedDataState }, () => {\r\n this.fetchData(changeDataState, urlPath)\r\n })\r\n }\r\n\r\n selectionChange = (event) => {\r\n let selectData = this.state.value !== '' ? this.state.data : this.state.initialdata\r\n const data = selectData.map(item => {\r\n if (item.Id === event.dataItem.Id) {\r\n item.selected = !event.dataItem.selected;\r\n }\r\n return item;\r\n });\r\n let selectionmapdata = data.filter(res => {\r\n if (res.selected)\r\n return res.Id\r\n })\r\n selectionmapdata = selectionmapdata.map(res => {\r\n return res.Id\r\n })\r\n if (this.props.selectedMapData && this.props.customSubmodule)\r\n this.props.selectedMapData(selectionmapdata)\r\n if (this.state.value !== '') {\r\n this.setState({ data, selectionmapdata: selectionmapdata });\r\n }\r\n else\r\n this.setState({ initialdata: data, selectionmapdata: selectionmapdata });\r\n\r\n }\r\n\r\n\r\n headerSelectionChange = (event) => {\r\n let selectData = this.state.value !== '' ? this.state.data : this.state.initialdata\r\n const checked = event.syntheticEvent.target.checked;\r\n const data = selectData.map(item => {\r\n item.selected = checked;\r\n return item;\r\n });\r\n let selectionmapdata = data.filter(res => {\r\n if (res.selected)\r\n return res.Id\r\n })\r\n selectionmapdata = selectionmapdata.map(res => {\r\n return res.Id\r\n })\r\n if (this.state.value !== '') {\r\n this.setState({ data, selectionmapdata: selectionmapdata });\r\n }\r\n else\r\n this.setState({ initialdata: data, selectionmapdata: selectionmapdata });\r\n\r\n }\r\n\r\n handleSeclectionfromMap = (ids) => {\r\n // here comes the map ids to select\r\n const { data, initialdata } = this.state;\r\n let mapresdata = []\r\n if (this.state.value !== '') {\r\n mapresdata = data\r\n }\r\n else mapresdata = initialdata\r\n ids.map(id => {\r\n mapresdata.map(dataItem => {\r\n if (dataItem.Id === id) {\r\n dataItem.selected = true\r\n }\r\n })\r\n })\r\n if (this.state.value !== '') {\r\n this.setState({ data: mapresdata });\r\n }\r\n else\r\n this.setState({ initialdata: mapresdata });\r\n }\r\n\r\n\r\n clearFilters = () => {\r\n const { options, components, compmap } = this.props\r\n const [firstcomponent, secondcomponent] = components\r\n let urlGridPath = secondcomponent.options.crud.read.url + this.state.submoduleKey + '/ActionRequired/' + this.state.value\r\n let dataState = {\r\n skip: 0, take: 20\r\n }\r\n if (this.props.location.pathname)\r\n localStorage.removeItem(this.props.location.pathname);\r\n //let modulekey= getEnvVariable('ModuleKey');\r\n this.setState({ hasDefaultReport: false, filteredfield: [], dataState: dataState})\r\n // radiovalue: radioval}, () =>{\r\n // if (this.state.radiovalue && this.state.radiovalue === \"All\") {\r\n // urlGridPath = secondcomponent.options.crud.read.url + this.state.submoduleKey + '/' + this.state.value\r\n // }\r\n // this.fetchData(dataState, urlGridPath, false, true);\r\n // })\r\n if (this.state.radiovalue && this.state.radiovalue === \"All\") {\r\n urlGridPath = secondcomponent.options.crud.read.url + this.state.submoduleKey + '/' + this.state.value\r\n } else if (this.state.radiovalue ) {\r\n urlGridPath = secondcomponent.options.crud.read.url + this.state.submoduleKey + '/' + this.state.radiovalue + '/'+ this.state.value\r\n }\r\n this.fetchData(dataState, urlGridPath, false, true);\r\n }\r\n\r\n _export;\r\n _grid;\r\n export = (action) => {\r\n let urlGrid = this.state.urlPath\r\n let dataState = this.state.dataState\r\n let queryStr = `${toDataSourceRequestString(dataState)}`;\r\n if (dataState.filter || dataState.sort) {\r\n let datastate = this.state.passDataState;\r\n delete datastate['skip']\r\n delete datastate['take']\r\n queryStr = `${toDataSourceRequestString(datastate)}`;\r\n }\r\n else queryStr = ''\r\n const hasGroups = dataState.group && dataState.group.length;\r\n const { options, components, defaults, order, type, compmap, rules, accessPermissions, accessLevelPermissions, ...otherProps } = this.props;\r\n const { gridcolumns } = options\r\n const { routes, crud } = options\r\n let url = urlGrid;\r\n let urlPath = `${url}${localStorage.getItem('impersonate') && '?impersonateFor=' + localStorage.getItem('impersonate') + '&' || '?'}${queryStr}`;\r\n let hasfilterfields = [];\r\n hasfilterfields = this.state.filteredfield.map(field => {\r\n if (GridColumnMenuFilter.active(field, dataState.filter)) {\r\n return field;\r\n }\r\n })\r\n const init = {\r\n method: 'GET', ...GetFetchProps()\r\n };\r\n let allgridcols = []\r\n if (action === 'filterall') {\r\n\r\n if (this.state.total > 1000) {\r\n if (DefaultSettings.getAlert() != null)\r\n DefaultSettings.getAlert().show('The total results are more than 1000. Please apply a filter to reduce the number of results before exporting.', 'warning');\r\n } else {\r\n GetData(urlPath)\r\n .then(result => {\r\n result.data.map(res => {\r\n if (res.CreatedOn) {\r\n res.CreatedOn = res.CreatedOn !== null ? moment(res.CreatedOn).format('MM/DD/YYYY hh:mm:ss A ') : \"\"\r\n } if (res.UpdatedOn) {\r\n res.UpdatedOn = res.UpdatedOn !== null ? moment(res.UpdatedOn).format('MM/DD/YYYY hh:mm:ss A') : \"\"\r\n }\r\n if (res.LoginDate) {\r\n res.LoginDate = res.LoginDate !== null ? moment(res.LoginDate).format('MM/DD/YYYY hh:mm:ss A') : \"\"\r\n } if (res.NoticeDate) {\r\n res.NoticeDate = res.NoticeDate !== null ? moment(res.NoticeDate).format('MM/DD/YYYY hh:mm:ss A') : \"\"\r\n }\r\n })\r\n this._export.save(result, this._grid.columns);\r\n })\r\n }\r\n }\r\n else {\r\n this._export.save(this.state.data, this._grid.columns);\r\n }\r\n }\r\n\r\n loadReportFilter(inthis, id, view) {\r\n let existingReportsURL = getEnvVariable('Report') + `/api/Reports/Report?id=${id}`\r\n GetData(existingReportsURL).then(res => {\r\n if (res) {\r\n let opts = JSON.parse(res.ReportJsonQueryStr)\r\n let newdatastateval = opts.withdatastateformat\r\n\r\n let columnsinfo = opts.columns.flatMap(i => i.fieldName)\r\n let hasfilterfields = []\r\n hasfilterfields = columnsinfo.map(field => {\r\n if (GridColumnMenuFilter.active(field, newdatastateval.filter)) {\r\n return field;\r\n }\r\n })\r\n let url = opts.dataSource.transport.read.url;\r\n let columnurl = opts.dataSource.transport.read.columnurl;\r\n let queryStr = opts.dataSource.transport.read.datastate || null;\r\n let gridoptions = JSON.parse(res.ReportJsonQueryStr)\r\n this.loadReportFilterGridColumns(columnurl, url, queryStr, gridoptions, hasfilterfields, res, view)\r\n }\r\n }).catch(ex => {\r\n console.log(ex)\r\n })\r\n }\r\n\r\n\r\n loadReportFilterGridColumns = (urlPath, urlGridPath, queryStr, gridoptions, hasfilterfields, res, view) => {\r\n console.log(urlPath, urlGridPath, queryStr, gridoptions)\r\n GetData(urlPath)\r\n .then((data) => {\r\n data.map(m => {\r\n m.show = true;\r\n m.title = m.columnName\r\n })\r\n this.setState({\r\n // value: value,\r\n // add: add,\r\n datagridcol: data,\r\n filteredfield: hasfilterfields,\r\n // dataState: newdatastateval,\r\n });\r\n }).catch(err => {\r\n console.log('err-------------------', err)\r\n });\r\n this.setState({ radiovalue: (this.props.accessPermissions.isAdmin == 'Y' && getEnvVariable('ModuleKey') == 'WRS') || (getEnvVariable('ModuleKey') == 'FORWARD' && this.props.match.params && this.props.match.params.id == 'INQUIRIES') ? 'All' : 'ActionRequired' }, () => {\r\n this.loadReportFilterFetchData(queryStr, urlGridPath, gridoptions, hasfilterfields, res, view)\r\n })\r\n }\r\n\r\n\r\n loadReportFilterFetchData(queryStr, urlGrid, gridoptions, hasfilterfields, res, view) {\r\n const { options, components, defaults, order, type, compmap, rules, accessPermissions, accessLevelPermissions, ...otherProps } = this.props;\r\n let url = urlGrid;\r\n let urlPath = url\r\n let queryStrdefault = ((res.IsDefault === \"Y\" && (this.props && this.props.accessPermissions && this.props.accessPermissions.name === res.OwnerName)) || view === true) ? `${queryStr}` : `${toDataSourceRequestString(this.state.dataState)}`;\r\n if (queryStrdefault)\r\n urlPath = `${url}?${queryStrdefault}`;\r\n // if (queryStr)\r\n // urlPath = `${url}?${queryStr}`;\r\n GetData(urlPath)\r\n .then(({ data, total }) => {\r\n\r\n let mapdata = data.map(res => {\r\n return res.Id\r\n })\r\n data = data.map(dataItem => Object.assign({ selected: false }, dataItem))\r\n if (this.state.value === '') {\r\n data.map(res => {\r\n if (res.CreatedOn) {\r\n res.CreatedOn = res.CreatedOn !== null ? moment(res.CreatedOn).format('MM/DD/YYYY hh:mm:ss A') : \"\"\r\n } if (res.UpdatedOn) {\r\n res.UpdatedOn = res.UpdatedOn !== null ? moment(res.UpdatedOn).format('MM/DD/YYYY hh:mm:ss A') : \"\"\r\n }\r\n })\r\n }\r\n this.setState({\r\n filteredfield: hasfilterfields,\r\n data: data,\r\n total,\r\n changedDataState: false,\r\n mapdata: mapdata,\r\n savereprt: false,\r\n ...gridoptions\r\n });\r\n });\r\n }\r\n\r\n onSplitterChange = (event) => {\r\n this.setState({\r\n panes: event.newState\r\n });\r\n }\r\n\r\n onNestedChange = (event) => {\r\n this.setState({\r\n nestedPanes: event.newState\r\n });\r\n }\r\n\r\n handleCustomCheckBox = (e, props) => {\r\n // change this code\r\n let finaldata = this.state.data.map((element) => {\r\n if (this.props.istransfer && this.props.applicantId && this.props.istransfer === 'Y') {\r\n if (element.Id === props.dataItem.Id) {\r\n return { ...element, hascheckboxselection: !element.hascheckboxselection }\r\n }\r\n else {\r\n return { ...element, hascheckboxselection: element.hascheckboxselection }\r\n }\r\n }\r\n else {\r\n if (element.Id === props.dataItem.Id) {\r\n return { ...element, hascheckboxselection: true }\r\n }\r\n else {\r\n return { ...element, hascheckboxselection: false }\r\n\r\n }\r\n }\r\n })\r\n this.setState({ data: finaldata })\r\n if ((this.props.istransfer || this.props.isrevision) && this.props.applicantId && (this.props.istransfer === 'Y' || this.props.isrevision)) {\r\n this.props.checkBoxData(finaldata)\r\n }\r\n\r\n if (this.props.selectedMapData && this.props.customSubmodule)\r\n this.props.selectedMapData(props.dataItem)\r\n if (this.props.selectedMapData && this.props.isrevision)\r\n this.props.selectedMapData(props.dataItem)\r\n }\r\n\r\n handleCheckBox = (e, props, deleteitem) => {\r\n // change this function do not limit to tranfer flow or any other flow\r\n // before edit\r\n let checkedarray = [...this.state.checkedlist]\r\n let inthis = this;\r\n if (props.dataItem.CustomSelection || deleteitem) {\r\n _.remove(checkedarray, function (n) {\r\n if (inthis.props.options.isTransferGrid && n.TransferPermitId) {\r\n return n.TransferPermitId === props.dataItem.Id;\r\n }\r\n else if (n.MasterTableId) {\r\n return n.MasterTableId === props.dataItem.Id;\r\n }\r\n return n.Id === props.dataItem.Id;\r\n });\r\n }\r\n else {\r\n checkedarray.push(props.dataItem)\r\n }\r\n let elementsIndex = this.state.data.findIndex(element => element[\"Id\"] === props.dataItem[\"Id\"])\r\n let newArray = [...this.state.data]\r\n if (elementsIndex > -1)\r\n newArray[elementsIndex] = { ...newArray[elementsIndex], CustomSelection: !newArray[elementsIndex].CustomSelection, customselectiondisabled: false }\r\n this.setState({\r\n data: newArray,\r\n checkedlist: checkedarray,\r\n helpertext: null\r\n }, () => this.handleDisableCheckbox());\r\n }\r\n\r\n handleDisableCheckbox = () => {\r\n // let selected = this.state.data.filter(element => element.CustomSelection === true)\r\n let newArray = this.state.data.map((element) => {\r\n if (this.state.checkedlist.length > this.props.options.checkBoxEnableCount) {\r\n if (element.CustomSelection) {\r\n return element\r\n }\r\n else {\r\n return { ...element, customselectiondisabled: true }\r\n }\r\n }\r\n else {\r\n return { ...element, customselectiondisabled: false }\r\n }\r\n })\r\n this.setState({\r\n data: newArray,\r\n });\r\n\r\n }\r\n\r\n handleBack = () => {\r\n const { options } = this.props\r\n const { back } = options;\r\n const { routes } = back;\r\n if (Array.isArray(routes)) {\r\n let path = ''\r\n routes.forEach(each => {\r\n const { route, routeParams, matchProps } = each\r\n if (routeParams) {\r\n path += route + \"/\" + this.props.match.params[routeParams]\r\n }\r\n else if (matchProps) {\r\n path += route + \"/\" + this.props.results[matchProps]\r\n }\r\n else {\r\n path += route\r\n }\r\n })\r\n this.props.history.push(path)\r\n }\r\n }\r\n\r\n\r\n handleSave = () => {\r\n const { options, components, accessPermissions } = this.props;\r\n let index = components.findIndex(x => x.isLoad === true);\r\n const secondcomponent = this.props && this.props.options && this.props.options.hascustomselection && this.props.options.hascustomselection ? components[1] : components[index]\r\n const crud = secondcomponent.options.crud;\r\n let update = crud.update\r\n if (this.state.checkedlist.length < this.props.options.checkBoxEnableCount) {\r\n this.setState({ helpertext: this.props.options.helpertext })\r\n }\r\n else {\r\n var newArray = this.state.checkedlist.map((element) => {\r\n if (this.props.options && this.props.options.isTransferGrid)\r\n return { TransferPermitId: element.TransferPermitId ? element.TransferPermitId : element.Id, Checked: true }\r\n else\r\n return { MasterTableId: element.MasterTableId ? element.MasterTableId : element.Id, Checked: true }\r\n })\r\n requestApi(createRequest(update, newArray, this.props.match.params)).then(results => {\r\n })\r\n }\r\n }\r\n\r\n handleAdd = () => {\r\n this.setState({})\r\n }\r\n\r\n gridview = () => {\r\n const { options, components, compmap, accessPermissions, accessLevelPermissions } = this.props\r\n const [firstcomponent, secondcomponent] = components\r\n const FirstComp = compmap[firstcomponent.type]\r\n const { value, add, datagridcol, initialdata, allgridcols, radiovalue, isExport, dataState } = this.state\r\n let selectData = this.state.data\r\n let verticalsplitterorientaion = getEnvVariable('GridMapOrientation') == 'H' ? true : false\r\n let nestedpanesize = window.innerHeight * parseFloat(this.state.nestedPanes[0].size) / 100\r\n let exportExcelName = this.state.submoduleKey + 'RECORDS.xlsx'\r\n let accessfrom = getEnvVariable('ConfigType') == 'R' ? 'moduleRegionAccess' : getEnvVariable('ConfigType') == 'D' ? 'moduleDistrictAccess' : 'moduleSiteAccess'\r\n let roleaccess = this.props.accessPermissions && this.props.accessPermissions[accessfrom] && this.props.accessPermissions.moduleDistrictAccess ? Object.values(this.props.accessPermissions[accessfrom]).includes('Add') ? 'CanAdd' : Object.values(this.props.accessPermissions[accessfrom]).includes('Update') ? 'CanEdit' : Object.values(this.props.accessPermissions[accessfrom]).includes('Read') ? 'CanRead' : 'CanAdd' : 'CanAdd'\r\n let portal = this.props.accessPermissions ? this.props.accessPermissions.portal : null\r\n let isAdmin = this.props.accessPermissions && this.props.accessPermissions.isAdmin ? this.props.accessPermissions.isAdmin : 'N'\r\n let canAdd = isAdmin == 'Y' ? true : (!roleaccess || !portal) ? true : portal == \"I\" && roleaccess == \"CanAdd\" ? true : (portal == \"E\") ? true : false\r\n let canEdit = isAdmin == 'Y' ? true : (!roleaccess || !portal) ? true : portal == \"I\" && roleaccess == \"CanEdit\" ? true : (portal == \"E\") ? true : false\r\n let canRead = (!roleaccess || !portal) ? true : portal == \"I\" && roleaccess == \"CanRead\" ? true : (portal == \"E\") ? true : false\r\n let gridDataState = { ...this.state.dataState, take: this.state.pageable.pageSizes.includes(this.state.dataState['take']) ? this.state.dataState.take : \"All\" }\r\n let gridPageable = { ...this.state.pageable, ['info']: this.state.pageable.pageSizes.includes(this.state.dataState['take']) && typeof (this.state.dataState['take']) == 'number' ? true : false }\r\n\r\n return (\r\n <div>\r\n {this.props.options.hascustomselection && <Accordion defaultExpanded>\r\n <AccordionSummary\r\n expandIcon={<ExpandMoreIcon />}\r\n aria-controls=\"panel1c-content\"\r\n id=\"panel1c-header\"\r\n >\r\n <div >\r\n <Typography>Selected Records</Typography>\r\n </div>\r\n </AccordionSummary>\r\n <AccordionDetails >\r\n <div>\r\n {this.state.checkedlist && this.state.checkedlist.map((menu, index) => {\r\n let x = {}\r\n x.dataItem = {}\r\n x.dataItem.Id = this.props.options && this.props.options.isTransferGrid && menu.TransferPermitId ?\r\n menu.TransferPermitId : menu.MasterTableId ? menu.MasterTableId : menu.Id\r\n x.dataItem.PermitNo = menu.PermitNo ? menu.PermitNo : menu[\"Permit No\"]\r\n return <Chip key={index} disabled={(localStorage.getItem('stagedetails') != \"Not_Submitted\" &&\r\n localStorage.getItem('stagedetails') != \"Additional_Information_Required\") ? true : (canAdd || canEdit) ? false : true}\r\n label={x.dataItem.PermitNo} onDelete={(e) => this.handleCheckBox(e, x, true)} />\r\n })}\r\n </div>\r\n </AccordionDetails>\r\n </Accordion>}\r\n <ExcelExport\r\n data={this.state.data}\r\n fileName={exportExcelName}\r\n ref={exporter => this._export = exporter}\r\n className=\"cpaper-excel\"\r\n >\r\n {this.state.helpertext && <FormHelperText error><b>{this.state.helpertext}</b></FormHelperText>}\r\n <Grid\r\n reorderable\r\n pageable={gridPageable}\r\n total={this.state.total}\r\n data={selectData}\r\n {...gridDataState}\r\n onDataStateChange={this.handleDataStateChange}\r\n onRowClick={this.handleRowClick}\r\n rowRender={!this.props.options.hascustomselection && !this.props.customSubmodule && this.rowRender}\r\n style={{ height: this.props.options.hascustomselection ? (window.innerHeight - 250) : this.props.customSubmodule ? (window.innerHeight - 200) : (this.props.istransfer == \"Y\" || this.props.isrevision == 'Y') ? (window.innerHeight - 350) : verticalsplitterorientaion ? (nestedpanesize - 80) : (window.innerHeight - 110) }}\r\n resizable\r\n selectedField=\"selected\"\r\n onSelectionChange={this.selectionChange}\r\n onHeaderSelectionChange={this.headerSelectionChange}\r\n ref={grid => this._grid = grid}\r\n >\r\n {getEnvVariable('AccessPortal') === 'I' && !((this.props.istransfer || this.props.isrevision) && this.props.applicantId &&\r\n (this.props.istransfer == 'Y' || this.props.isrevision == 'Y')) && !this.props.options.hascustomselection && !(this.props.hidegridtools &&\r\n this.props.hidegridtools.length > 0 &&\r\n this.props.hidegridtools.includes(this.props.match.params.id)) && !this.props.customSubmodule && !this.props.options.simplegrid &&\r\n <GridToolbar >\r\n <div className=\"col pl-2\">\r\n {getEnvVariable('ModuleKey') !== 'AMES' && getEnvVariable('ModuleKey') !== 'WRS' && <div className=\"col-sm-10 col-md-5 pl-4 pt-1 m-3 dropdown-list\">\r\n <FirstComp {...firstcomponent.options} handleFieldChange={this.handleFieldChange} value={this.state.value}\r\n dropdownvalues={this.state.values} transformProps={dropdowntransformProps} showdefault={true} />\r\n </div>}\r\n {/* Design Fix for radio buttons */}\r\n {getEnvVariable('ModuleKey') !== 'AMES' && <div className=\"col-sm-10 col-md-7 col-lg-10 m-3 actions\">\r\n <FormControl component=\"fieldset\" >\r\n {(getEnvVariable('ModuleKey') == 'FORWARD' && this.props.match.params && this.props.match.params.id == 'INQUIRIES') ? '' : (\r\n <RadioGroup aria-label=\"actions\" name=\"actions\" value={radiovalue ? radiovalue : (this.props.accessPermissions.isAdmin === 'Y' && getEnvVariable('ModuleKey') === 'WRS') ? 'All' : 'ActionRequired'} onChange={this.handleRadioChange}>\r\n <div>\r\n <FormControlLabel value=\"ActionRequired\" control={<Radio size=\"small\" />} label={<span style={{ fontSize: '12px' }}>{getEnvVariable('ModuleKey') == 'WRS' ? 'Assigned to me' : 'Action Required'}</span>} />\r\n <FormControlLabel value=\"MyInvolvement\" control={<Radio size=\"small\" />} label={<span style={{ fontSize: '12px' }}>{getEnvVariable('ModuleKey') == 'WRS' ? 'Cleared/Closed/Cancelled' : 'My Involvement'}</span>} />\r\n {this.state.userrole !== 'C' ? (<FormControlLabel value=\"All\" control={<Radio size=\"small\" />} label={<span style={{ fontSize: '12px' }}>All</span>} />) : ('')}\r\n </div>\r\n </RadioGroup>\r\n )}\r\n </FormControl>\r\n </div>}\r\n\r\n </div>\r\n </GridToolbar>}\r\n {(!this.props.options.hascustomselection && !this.props.hascheckbox) && <GridColumn\r\n className=\"selected\"\r\n field=\"selected\"\r\n width=\"75px\"\r\n headerSelectionValue={\r\n selectData && selectData.length > 0 && selectData.findIndex(dataItem => dataItem.selected === false) === -1\r\n\r\n } />}\r\n {datagridcol && datagridcol.length > 0 && datagridcol.map((each, index) => {\r\n if (each.fieldName === 'Status') {\r\n if (each.show) return <GridColumn key={index} cell={this.handleStatusStyle} columnMenu={\r\n props =>\r\n <CustomColumnMenu\r\n {...props}\r\n columns={datagridcol}\r\n saveReport={this.saveReport}\r\n onColumnsSubmit={this.onColumnsSubmit}\r\n />} />\r\n }\r\n\r\n else if (each.fieldName === 'hascheckboxselection') {\r\n if (each.show) return <GridColumn {...each} width={'75px'} field={each.fieldName} title={''} key={index} filter='boolean'\r\n cell={props => <td>\r\n <input type=\"checkbox\" checked={props.dataItem[each.fieldName]} onChange={(e) => this.handleCustomCheckBox(e, props)} />\r\n </td>}\r\n columnMenu={\r\n props =>\r\n <CustomColumnMenu\r\n {...props}\r\n columns={datagridcol}\r\n saveReport={this.saveReport}\r\n onColumnsSubmit={this.onColumnsSubmit}\r\n />} />\r\n }\r\n else if (each.fieldName == 'CustomSelection') {\r\n if (each.show) return <GridColumn {...each} width={'75px'} field={each.fieldName} title={''} key={index} filter='boolean'\r\n cell={props => <td>\r\n <input type=\"checkbox\" checked={props.dataItem[each.fieldName]} disabled={(localStorage.getItem('stagedetails') != \"Not_Submitted\" && localStorage.getItem('stagedetails') != \"Additional_Information_Required\") ? true : props.dataItem['customselectiondisabled'] ? true : (canAdd || canEdit) ? false : true} onChange={(e) => this.handleCheckBox(e, props)} />\r\n </td>}\r\n columnMenu={\r\n props =>\r\n <CustomColumnMenu\r\n {...props}\r\n columns={datagridcol}\r\n saveReport={this.saveReport}\r\n onColumnsSubmit={this.onColumnsSubmit}\r\n />} />\r\n }\r\n else if (each.fieldName == 'Id') {\r\n each.show = false;\r\n if (each.show) return <GridColumn\r\n title={isExport ? each.title : <span className={GridColumnMenuFilter.active(each.field, (dataState && dataState.filter)) ? 'text-primary' : ''}>{each.title}</span>}\r\n {...each} width={'200px'} field={each.fieldName} key={index} columnMenu={ // in title props.match.params.key == violations ? violation number\r\n props =>\r\n <CustomColumnMenu\r\n {...props}\r\n columns={datagridcol}\r\n saveReport={this.saveReport}\r\n onColumnsSubmit={this.onColumnsSubmit}\r\n />} />\r\n } \r\n else {\r\n if (each.show) return <GridColumn title={isExport ? each.title : <span className={GridColumnMenuFilter.active(each.field, (dataState && dataState.filter)) ? 'text-primary' : ''}>{each.title}</span>}\r\n {...each} width={'250px'} field={each.fieldName} key={index}\r\n columnMenu={\r\n props =>\r\n <CustomColumnMenu\r\n {...props}\r\n columns={datagridcol}\r\n saveReport={this.saveReport}\r\n onColumnsSubmit={this.onColumnsSubmit}\r\n />} />\r\n }\r\n\r\n })}\r\n\r\n </Grid>\r\n </ExcelExport>\r\n </div>\r\n )\r\n }\r\n\r\n mapview = () => {\r\n const { classes } = this.props;\r\n const { options, components, compmap, accessPermissions, accessLevelPermissions, hidemapview } = this.props\r\n const [firstcomponent, secondcomponent] = components\r\n const { value, add, datagridcol, initialdata, allgridcols, hideMap, mapdata, selectionmapdata, permitTypeId } = this.state\r\n let verticalsplitterorientaion = getEnvVariable('GridMapOrientation') === 'H' ? true : false\r\n let mapnestedpanesize = window.innerHeight - (window.innerHeight * parseFloat(this.state.nestedPanes[0].size) / 100)\r\n let accessfrom = getEnvVariable('ConfigType') === 'R' ? 'moduleRegionAccess' : getEnvVariable('ConfigType') === 'D' ? 'moduleDistrictAccess' : 'moduleSiteAccess'\r\n let roleaccess = this.props.accessPermissions[accessfrom] ? Object.values(this.props.accessPermissions[accessfrom]).includes('Add') ? 'CanAdd' : Object.values(this.props.accessPermissions[accessfrom]).includes('Update') ? 'CanEdit' : 'CanRead' : 'CanRead'\r\n let portal = this.props.accessPermissions.portal\r\n let canAdd = portal === \"I\" && roleaccess === \"CanAdd\" ? true : (portal === \"E\") ? true : false\r\n let canEdit = portal === \"I\" && roleaccess === \"CanEdit\" ? true : (portal === \"E\") ? true : false\r\n let canRead = portal === \"I\" && roleaccess === \"CanRead\" ? true : (portal === \"E\") ? true : false\r\n return (\r\n <div id={verticalsplitterorientaion ? \"hicons\" : \"vicons\"}>\r\n {this.state.submoduleKey && <Map mapdata={mapdata} selectiondata={selectionmapdata} {...this.mapsettings}\r\n handleSeclectionfromMap={this.handleSeclectionfromMap}\r\n isGridView={true}\r\n canEdit={this.props.canEdit || this.props.addMapJson}\r\n addMapJson={this.props.addMapJson}\r\n SubModuleKey={this.state.submoduleKey}\r\n onSaveorUpdateMapResponse={this.props.onSaveorUpdateMapResponse}\r\n height={this.props.customSubmodule ? (window.innerHeight - 200) : (this.props.istransfer === \"Y\" || this.props.isrevision === \"Y\") ? (window.innerHeight - 350) : verticalsplitterorientaion ? (mapnestedpanesize - 75) : (window.innerHeight - 120)}\r\n handlelayerFilter={this.handlelayerFilter}\r\n customMapHeight={250}\r\n fields={this.state.fields}\r\n permitTypeId={permitTypeId}\r\n layerCustomFilters={this.props.customSubmodule}\r\n />\r\n }\r\n </div>\r\n )\r\n }\r\n handlelayerFilter = (query) => {\r\n console.log(\"here it is\" + query)\r\n }\r\n\r\n render() {\r\n // console.log(this.props.dynamicKey)\r\n const { classes } = this.props;\r\n const { options, components, compmap, accessPermissions, accessLevelPermissions, hidemapview } = this.props\r\n const [firstcomponent, secondcomponent] = components\r\n const { value, add, datagridcol, initialdata, allgridcols, hideMap, mapdata, selectionmapdata, isExport } = this.state\r\n let verticalsplitterorientaion = getEnvVariable('GridMapOrientation') == 'H' ? true : false\r\n let mapnestedpanesize = window.innerHeight - (window.innerHeight * parseFloat(this.state.nestedPanes[0].size) / 100)\r\n let accessfrom = getEnvVariable('ConfigType') == 'R' ? 'moduleRegionAccess' : getEnvVariable('ConfigType') == 'D' ? 'moduleDistrictAccess' : 'moduleSiteAccess'\r\n let roleaccess = this.props.accessPermissions[accessfrom] ? Object.values(this.props.accessPermissions[accessfrom]).includes('Add') ? 'CanAdd' : Object.values(this.props.accessPermissions[accessfrom]).includes('Update') ? 'CanEdit' : 'CanRead' : 'CanRead'\r\n let portal = this.props.accessPermissions.portal\r\n let isAdmin = this.props.accessPermissions && this.props.accessPermissions.isAdmin ? this.props.accessPermissions.isAdmin : 'N'\r\n let canAdd = isAdmin == 'Y' ? true : portal == \"I\" && roleaccess == \"CanAdd\" ? true : (portal == \"E\") ? true : false\r\n let canEdit = isAdmin == 'Y' ? true : portal == \"I\" && roleaccess == \"CanEdit\" ? true : (portal == \"E\") ? true : false\r\n let canRead = portal == \"I\" && roleaccess == \"CanRead\" ? true : (portal == \"E\") ? true : false\r\n return (\r\n <div key={this.props.dynamicKey} className={(this.props.options.hascustomselection || this.props.options.simplegrid) ? \"\" : \"col w-100 h-90\"}>\r\n <div>\r\n {!this.props.customSubmodule && <GridHeader initialloadextrainfo={this.state.initialloadextrainfo} accessPermissions={accessPermissions}\r\n accessLevelPermissions={accessLevelPermissions}\r\n // use separate file and return true or false\r\n headerProps={((this.props.options.hascustomselection || this.props.options.simplegrid) ? secondcomponent.options.customselectionheaderProps :\r\n (this.props.istransfer || this.props.isrevision) && (this.props.istransfer == \"Y\" || this.props.isrevision == \"Y\") ?\r\n secondcomponent.options.Transfer : secondcomponent.options.submodulekeyheader ?\r\n secondcomponent.options[this.state.submoduleKey] : this.state.submoduleKey === \"INQUIRY\" ?\r\n secondcomponent.options.inquiryheaderProps : secondcomponent.options.applicationheaderProps)} add={add} saveReport={this.saveReport}\r\n clearFilters={() => this.clearFilters()} export={(evt) => {\r\n this.setState({ isExport: true }, () => {\r\n this.export(evt)\r\n })\r\n }}\r\n handleBack={this.handleBack} handleSave={this.handleSave} />}\r\n {initialdata &&\r\n // <ReactResizeDetector handleWidth handleHeight>\r\n // {({ width, height }) =>\r\n <Fragment>\r\n {(hideMap || hidemapview) && this.gridview()}\r\n {!this.props.SHOW_ON_TYPE && (!hideMap && !hidemapview) && < Splitter\r\n style={{ height: window.innerHeight - 100 }}\r\n panes={verticalsplitterorientaion ? this.state.nestedPanes : this.state.panes}\r\n onChange={verticalsplitterorientaion ? this.onNestedChange : this.onSplitterChange}\r\n orientation={verticalsplitterorientaion ? 'vertical' : 'horizontal'}\r\n >\r\n <div className=\"pane-content\">\r\n {this.gridview()}\r\n </div>\r\n <div className=\"pane-content\">\r\n <div id={verticalsplitterorientaion ? \"hicons\" : \"vicons\"}>\r\n {this.mapview()}\r\n </div>\r\n </div>\r\n </Splitter>}\r\n {this.props.SHOW_ON_TYPE && this.props.SHOW_ON_TYPE === 'G' && (!hideMap && !hidemapview) && <div className=\"pane-content\">\r\n {this.gridview()}\r\n </div>}\r\n {this.props.SHOW_ON_TYPE && this.props.SHOW_ON_TYPE === 'M' && (!hideMap && !hidemapview) && <div id={verticalsplitterorientaion ? \"hicons\" : \"vicons\"}>\r\n {this.mapview()}\r\n </div>}\r\n </Fragment>\r\n // }\r\n // </ReactResizeDetector>\r\n }\r\n </div>\r\n {\r\n this.state.savereprt && <Dialog results={{ ReportJsonQueryStr: this.state.kendoStructure }} {...this.props.options.savedreports} compmap={compmap} close={() => this.setState({ savereprt: false })}\r\n gridkey={this.props.attachparamgridkey ? this.props.match.params.id + this.props.gridkey : this.props.gridkey} open={this.state.savereprt} iscgrid={true}\r\n accessPermissions={this.props.accessPermissions}\r\n loadReport={(id, view) => this.loadReportFilter(this, id, view)}\r\n />\r\n }\r\n </div >\r\n );\r\n }\r\n\r\n}\r\n\r\nCPaper.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n};\r\n\r\nconst mapProps = (state) => {\r\n return state\r\n}\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ setRecordData }, dispatch);\r\n}\r\n\r\nCPaper = connect(mapProps, mapActions)(CPaper)\r\nexport default withStyles(styles)(withRouter(CPaper));","\r\nexport const GridFilters = (key) => {\r\n let type = 'text'\r\n switch (key) {\r\n case \"bigint\":/* bigint of Number Validation*/\r\n type = 'numeric'\r\n break;\r\n case \"P\":/* MasterFields:P-Percentage*/\r\n type = 'numeric'\r\n break;\r\n case \"DN\":/* MasterFields:DN-Decimal Number*/\r\n case \"C\":/* MasterFields:C-Currency*/\r\n type = 'numeric'\r\n break;\r\n case \"int\":/* int of Number Validation*/\r\n case \"real\":/* real of Number Validation*/\r\n case \"N\":/* MasterFields:N-Number*/\r\n type = 'numeric'\r\n break;\r\n case \"char\":/*char of String Validation*/\r\n case \"varchar\":/*varchar of String Validation*/\r\n case \"nvarchar\":/*nvarchar of String Validation*/\r\n case \"TB\":/*MasterFields:TB-TextBox*/\r\n case \"TA\":/*MasterFields:TA-Text Area (Multi Line)*/\r\n case \"RB\":/*MasterFields:RB-Radio Buttons (Single Choice)*/\r\n case \"RC\":/*MasterFields:RC-Radio Buttons (Yes/No)*/\r\n case \"CB\":/*MasterFields:CB- Check boxes (Multiple Choice)*/\r\n case \"B\":/* MasterFields:B-Binary (Yes/No)*/\r\n case \"DS\":/* MasterFields:DS-Dropdown (Single Choice)*/\r\n case \"DM\":/* MasterFields:DM-Dropdown (Multiple Choice)*/\r\n case \"RT\":/* MasterFields:RT-RichText (Allows Formatting)*/\r\n case \"CM\":/* MasterFields:CM-Combo Box (Multiple Value Input)*/\r\n case \"CF\":/* MasterFields:CF-Check Box Field*/\r\n type = 'text'\r\n break;\r\n case \"date\":/* Date Validation*/\r\n case \"DT\":/* MasterFields:DT-Date And Time*/\r\n type = 'date'\r\n break;\r\n case \"D\": /* MasterFields:D - Date Only(No Time)*/\r\n type = 'date'\r\n break;\r\n case \"T\":/* MasterFields:T- Time Only (No Date)*/\r\n type = 'date'\r\n break;\r\n case \"varbinary\":/* varbinary of blob Validation*/\r\n type = 'boolean'\r\n break;\r\n default:\r\n break; \r\n }\r\n return type\r\n}","import { Button, Fab, IconButton } from \"@material-ui/core\"\r\nimport React, { useState, useCallback, useEffect } from \"react\"\r\nimport Drawer from '@material-ui/core/Drawer';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport SaveIcon from '@material-ui/icons/Save';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Toolbar from '@material-ui/core/Toolbar';\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 Typography from '@material-ui/core/Typography';\r\nimport PropTypes from 'prop-types';\r\nimport TextBox from \"../textbox\";\r\nimport Dropdown from \"../dropdown\";\r\nimport { getEnvVariable } from \"../../../../modules/environmentalList\";\r\nimport { createRequest, requestApi } from \"../../helpers/rest\";\r\nimport ChevronLeftIcon from '@material-ui/icons/ChevronLeft';\r\n\r\n\r\nfunction TabPanel(props) {\r\n const { children, value, index, ...other } = props;\r\n\r\n return (\r\n <div\r\n role=\"tabpanel\"\r\n hidden={value !== index}\r\n id={`simple-tabpanel-${index}`}\r\n aria-labelledby={`simple-tab-${index}`}\r\n {...other}\r\n >\r\n {value === index && (\r\n <Box p={3}>\r\n <Typography>{children}</Typography>\r\n </Box>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nTabPanel.propTypes = {\r\n children: PropTypes.node,\r\n index: PropTypes.any.isRequired,\r\n value: PropTypes.any.isRequired,\r\n};\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\n\r\nconst defaultDrawerWidth = 900;\r\nconst minDrawerWidth = 700;\r\nconst maxDrawerWidth = window.innerWidth - 220;\r\nconst fullscreenwidth = window.innerWidth\r\nconst checkwidth = 960\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n grow: {\r\n flexGrow: 1,\r\n },\r\n drawer: {\r\n flexShrink: 0\r\n },\r\n dragger: {\r\n width: \"7px\",\r\n cursor: \"ew-resize\",\r\n padding: \"4px 0 0\",\r\n borderTop: \"1px solid #ddd\",\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n bottom: 0,\r\n zIndex: 100,\r\n // backgroundColor: \"#f4f7f9\"\r\n }\r\n}));\r\n\r\nexport default function LayerAuthorization(props) {\r\n\r\n const [sidePopUp, setSidepopup] = useState(false);\r\n let screensize = (props.width === \"sm\" || props.width === \"xs\" || props.width === \"md\") ? false : true\r\n const [drawerWidth, setDrawerWidth] = useState((props.width === \"sm\" || props.width === \"xs\" || props.width === \"md\") ? fullscreenwidth : defaultDrawerWidth);\r\n const [fullscreen, setFullScreen] = useState(false)\r\n const [fullwidth, setFullWidth] = useState(fullscreenwidth)\r\n const [value, setValue] = React.useState(0);\r\n const [data, setData] = React.useState(null);\r\n const [authList, setAuthList] = React.useState(null);\r\n const [typeList, settypeList] = useState([])\r\n const [refresh, setRefresh] = useState(false)\r\n\r\n React.useEffect(() => {\r\n window.addEventListener(\"resize\", updateWidth);\r\n return () => window.removeEventListener(\"resize\", updateWidth);\r\n });\r\n\r\n const updateWidth = () => {\r\n if (window.innerWidth < checkwidth) {\r\n setDrawerWidth(window.innerWidth);\r\n }\r\n else {\r\n setDrawerWidth(defaultDrawerWidth)\r\n }\r\n };\r\n\r\n React.useEffect(() => {\r\n if (!screensize) {\r\n let width = window.innerWidth\r\n setDrawerWidth(width);\r\n setFullWidth(width)\r\n }\r\n else {\r\n setDrawerWidth(defaultDrawerWidth);\r\n // setFullWidth(defaultDrawerWidth)\r\n }\r\n }, [props.width]);\r\n\r\n\r\n const handleMouseDown = e => {\r\n document.addEventListener(\"mouseup\", handleMouseUp, true);\r\n document.addEventListener(\"mousemove\", handleMouseMove, true);\r\n };\r\n\r\n const handleMouseUp = () => {\r\n document.removeEventListener(\"mouseup\", handleMouseUp, true);\r\n document.removeEventListener(\"mousemove\", handleMouseMove, true);\r\n };\r\n\r\n const handleMouseMove = useCallback(e => {\r\n let newWidth =\r\n document.body.offsetWidth - (e.clientX - document.body.offsetLeft);\r\n // const newWidth = e.clientX - document.body.offsetLeft;\r\n if (newWidth > minDrawerWidth && newWidth < maxDrawerWidth) {\r\n setDrawerWidth(newWidth);\r\n }\r\n }, []);\r\n\r\n\r\n const handleChange = (event, newValue) => {\r\n setValue(newValue);\r\n if (newValue === 0) {\r\n GetLatestData()\r\n }\r\n };\r\n\r\n const changeTab = () => {\r\n setValue(0);\r\n setData(null);\r\n GetLatestData()\r\n }\r\n\r\n const GetLatestData = () => {\r\n const business = [\r\n {\r\n url: getEnvVariable('Admin') + `/api/LayerAuthentication/All`,\r\n type: 'get'\r\n }\r\n ]\r\n Promise.all(business.map(each => requestApi(createRequest(each, {}, null)).catch(error => { return error; }))).then(resp => {\r\n const [authorization] = resp\r\n setAuthList(authorization)\r\n setRefresh(!refresh)\r\n })\r\n\r\n }\r\n\r\n useEffect(() => {\r\n const business = [\r\n {\r\n url: getEnvVariable('Admin') + `/api/Domains/values?domainkey=TOKEN_TYPES`,\r\n type: 'get'\r\n }\r\n ]\r\n Promise.all(business.map(each => requestApi(createRequest(each, {}, null)).catch(error => { return error; }))).then(resp => {\r\n const [types] = resp;\r\n settypeList(types);\r\n GetLatestData()\r\n })\r\n }, [])\r\n\r\n\r\n const onAuthChange = (evt) => {\r\n const { name, value } = evt.target\r\n let temp = authList.find(each => each.Id === value)\r\n setData(temp)\r\n setRefresh(!refresh)\r\n }\r\n\r\n const classes = useStyles();\r\n return <>\r\n {refresh}\r\n <Button size=\"small\" variant=\"contained\" color=\"primary\" onClick={() => { setSidepopup(!sidePopUp) }}>Token</Button>\r\n <Drawer anchor={'right'} open={sidePopUp} onClose={() => { setSidepopup(!sidePopUp) }}\r\n disableEnforceFocus={true}\r\n disableAutoFocus={true}\r\n disableBackdropClick\r\n color=\"primary\"\r\n PaperProps={{ style: { width: fullscreen ? fullwidth : drawerWidth } }} >\r\n <div onMouseDown={e => handleMouseDown(e)} className={classes.dragger} />\r\n <div className={classes.root}>\r\n <AppBar position=\"static\">\r\n <Toolbar variant=\"dense\">\r\n Authorizations\r\n <div className={classes.grow} />\r\n <IconButton\r\n edge=\"end\"\r\n aria-label=\"account of current user\"\r\n onClick={() => { setSidepopup(!sidePopUp) }}\r\n color=\"inherit\"\r\n >\r\n <ChevronLeftIcon />\r\n </IconButton>\r\n </Toolbar>\r\n </AppBar>\r\n <Tabs value={value} onChange={handleChange} aria-label=\"simple tabs example\" variant=\"fullWidth\">\r\n <Tab label=\"Select Authorization\" {...a11yProps(0)} />\r\n <Tab label=\"Create Authorization\" {...a11yProps(1)} />\r\n </Tabs>\r\n <TabPanel value={value} index={0}>\r\n <Dropdown className=\"col-10\" label={'Authorizations'} value={(data && data.Id) || ''} handleFieldValue={onAuthChange} items={authList} name={'Authorizations'} extraProps={{\r\n transformProps: {\r\n label: 'AuthenticationName',\r\n value: 'Id'\r\n }\r\n }} />\r\n <div className=\"pt-4\" />\r\n {data && Object.keys(data).length > 0 && <Authorization data={data} typeList={typeList} />}\r\n </TabPanel>\r\n <TabPanel value={value} index={1}>\r\n <Authorization typeList={typeList} changeTab={changeTab}/>\r\n </TabPanel>\r\n </div>\r\n </Drawer>\r\n </>\r\n}\r\n\r\nfunction Authorization(props) {\r\n const { data = {}, typeList = [], changeTab } = props\r\n const [result, setResult] = useState(data)\r\n const [refresh, setRefresh] = useState(false)\r\n\r\n useEffect(() => {\r\n if (result && data && (result.Id !== data.Id)) {\r\n setResult(data)\r\n setRefresh(!refresh)\r\n }\r\n }, [data])\r\n\r\n const onChange = (evt) => {\r\n const { name, value } = evt.target\r\n let temp = result;\r\n temp[name] = value\r\n setResult(temp)\r\n setRefresh(!refresh)\r\n }\r\n\r\n const handleSave = () => {\r\n let business = []\r\n if (result && result.Id) {\r\n business = [\r\n {\r\n url: getEnvVariable('Admin') + `/api/LayerAuthentication/Update`,\r\n type: 'put'\r\n }\r\n ]\r\n }\r\n else business = [\r\n {\r\n url: getEnvVariable('Admin') + `/api/LayerAuthentication/Add`,\r\n type: 'post'\r\n }\r\n ]\r\n result['Status'] = 'A'\r\n Promise.all(business.map(each => requestApi(createRequest(each, result, null)).catch(error => { return error; }))).then(resp => {\r\n const [types] = resp;\r\n if (result && !result.Id) {\r\n changeTab()\r\n }\r\n\r\n })\r\n }\r\n\r\n return <>\r\n {refresh}\r\n <Fab className='float-right py-1' size='small' color='primary' onClick={handleSave}><SaveIcon /></Fab>\r\n <TextBox className=\"col-10\" label={'Name'} value={result.AuthenticationName} handleFieldValue={onChange} name={'AuthenticationName'} />\r\n <Dropdown className=\"col-10\" label={'Type'} value={result.AuthenticationType} handleFieldValue={onChange} items={typeList} name={'AuthenticationType'} extraProps={{\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Value'\r\n }\r\n }} />\r\n {result.AuthenticationType === \"T\" && <TextBox className=\"col-10\" label={'Token'} value={result.Token} handleFieldValue={onChange} name={'Token'} />}\r\n {result.AuthenticationType === \"U\" && <>\r\n <TextBox className=\"col-10\" label={'MapUrl'} value={result.MapUrl} handleFieldValue={onChange} name={'MapUrl'} />\r\n <TextBox className=\"col-10\" label={'UserName'} value={result.UserName} handleFieldValue={onChange} name={'UserName'} />\r\n <TextBox className=\"col-10\" label={'Password'} value={result.Password} handleFieldValue={onChange} name={'Password'} />\r\n </>\r\n }\r\n {/* <Switch label={'Status'} /> */}\r\n </>\r\n}","/**\r\n *********************************************************\r\n Description:map all the components.\r\n Required props: N/A.\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\n\r\nimport Skeleton from '@material-ui/lab/Skeleton';\r\nimport React, { Component, lazy, Suspense } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport AutocompletePopover from '../core/controls/components/autocompletepopover';\r\nimport AutocompleteTags from '../core/controls/components/autocompletetags';\r\nimport card from '../core/controls/components/card';\r\nimport Customlayerfiltertype from '../core/controls/components/custom/adminlayer';\r\nimport AutocompleteTagsNotification from '../core/controls/components/custom/autocompletetagsnotification';\r\nimport CompanyAccessControl from '../core/controls/components/custom/companyaccesscontrol';\r\nimport CustomLabelExpression from '../core/controls/components/custom/labelexpression';\r\nimport MultipleSelect from '../core/controls/components/custom/multipleselect';\r\nimport PhaseTypes from '../core/controls/components/custom/phasetypes';\r\nimport SubModuleSelection from '../core/controls/components/custom/submoduleselection';\r\nimport IframeView from '../core/controls/components/iframe';\r\nimport Otp from '../core/controls/components/otpinput';\r\nimport Backdrop from '../core/modules/backdrop';\r\nimport Form from '../core/modules/form';\r\n//import AutoComplete from '../core/modules/form/cautocomplete';\r\nimport Button from '../core/modules/form/cbutton';\r\nimport CheckBox from '../core/modules/form/ccheckbox';\r\nimport CheckBoxGroup from '../core/modules/form/ccheckboxgroup';\r\nimport ConfirmDialog from '../core/modules/form/cconfirmationpopup';\r\nimport DateTimePicker from '../core/modules/form/cdatetimepicker';\r\nimport Date_MonthPicker from '../core/controls/components/date_daymonth.js';\r\nimport Divider from '../core/modules/form/cdivider';\r\nimport DropDown from '../core/modules/form/cdropdown';\r\nimport DropDownWithAdd from '../core/modules/form/cdropdownwithaddnewitem';\r\nimport DualListBox from '../core/modules/form/cduallistbox';\r\nimport FormAutoComplete from '../core/modules/form/cformautocomplete';\r\nimport FormButton from '../core/modules/form/cformbutton';\r\nimport FormCheckBox from '../core/modules/form/cformcheckbox';\r\nimport FormColorPicker from '../core/modules/form/cformcolorpicker';\r\nimport FormDiscussionPanel from '../core/modules/form/cformdiscussionpanel';\r\nimport FormDropDown from '../core/modules/form/cformdropdown';\r\nimport FormFieldsGroup from '../core/modules/form/cformfieldsgroup';\r\nimport InputFieldHidden from '../core/modules/form/cforminputhidden';\r\nimport FormMultiDualListBox from '../core/modules/form/cformmultiduallistbox';\r\nimport PhoneExtn from '../core/modules/form/cformphnextntext';\r\nimport PhoneText from '../core/modules/form/cformphonetext';\r\nimport FormSwitch from '../core/modules/form/cformswitch';\r\nimport FormText from '../core/modules/form/cformtext';\r\nimport FormTextField from '../core/modules/form/cformtextbox';\r\nimport GeneralPaper from '../core/modules/form/cgeneralpaper';\r\nimport CLabel from '../core/modules/form/clabel';\r\nimport Link from '../core/modules/form/clink';\r\nimport MultiDualListBox from '../core/modules/form/cmultiduallistbox';\r\nimport MultiDualListBox2 from '../core/modules/form/cmultiduallistbox2';\r\nimport MultiSelect from '../core/modules/form/cmultiselect';\r\nimport NoticeTextTemplate from '../core/modules/form/cnoticetexttemplate';\r\nimport CNumberFormat from '../core/modules/form/cnumberformats';\r\nimport Radio from '../core/modules/form/cradio';\r\nimport RadioGroup from '../core/modules/form/cradiogroup';\r\nimport Scheduler from '../core/modules/form/cscheduler';\r\nimport SectionsCard from '../core/modules/form/csectionscard';\r\nimport SignUpForm from '../core/modules/form/csignupform';\r\nimport SimpleLink from '../core/modules/form/csimplelink';\r\nimport SlidingPage from '../core/modules/form/cslidingpage';\r\nimport Switch from '../core/modules/form/cswitches';\r\nimport Tab from '../core/modules/form/ctabs';\r\nimport Text from '../core/modules/form/ctext';\r\nimport TextBox from '../core/modules/form/ctextbox';\r\nimport ToggleButton from '../core/modules/form/ctogglebutton';\r\nimport TreeView from '../core/modules/form/ctreeview';\r\nimport Upload from '../core/modules/form/cupload';\r\nimport CustomArcgisMultiselect from '../core/modules/form/customArcgisMultiselect';\r\nimport CustomLayerTemplate from '../core/modules/form/customlayertemplate';\r\nimport DiscussionsForm from '../core/modules/form/discussionsform';\r\nimport KeyboardDatePickerExample from '../core/modules/form/materialdatepicker';\r\nimport MaterialDateTimePicker from '../core/modules/form/materialpicker';\r\nimport InlineTimePickerDemo from '../core/modules/form/materialtimepicker';\r\nimport MultiSelectAutoComplete from '../core/modules/form/multidropdown';\r\nimport InterchangableGrid from '../core/modules/Grid/cinterchangablegrid';\r\nimport SimpleGrid from '../core/modules/Grid/csimplegrid';\r\nimport Header from '../core/modules/header/index';\r\nimport Sidebar from '../core/modules/sidebar/sidebar';\r\nimport PopUpButton from '../core/modules/viewport/cpopup';\r\n\r\nimport InvoiceSettings from '../custommodules/invoicesettings/invoicesettings';\r\n\r\nimport ImageUpload from '../custommodules/newentrancepermit/imageupload';\r\n//import Reports from '../modules/reports/index.js';\r\nimport CustomStandardDescOfConstruction from '../custommodules/sitepermittypes/standarddescofconstruction';\r\n//import NotificationTemplate from '../core/modules/form/cnotificationTemplate'; -- not used\r\nimport CustomTermsConditions from '../custommodules/sitepermittypes/termsandconditions';\r\nimport FileAttachments from '../modules/attachments/attachments';\r\nimport FileImages from '../modules/attachments/images';\r\n//import AccessControl from '../core/modules/form/caccesscontrol';\r\nimport GridButton from '../modules/buttons/GridButton';\r\n\r\nimport CTemplateLoader from '../modules/form/ctemplateloader';\r\nimport CRoutingTreeView from '../modules/form/routingtreeview';\r\nimport FileUpload from '../modules/Uploads/FileUpload';\r\n//import Backdrop from '../core/modules/backdrop';\r\n\r\n////////\r\nimport PageNotFound from '../core/modules/systemmessages/404issue';\r\nimport Logout from '../core/modules/systemmessages/logout';\r\nimport UnAuthorize from '../core/modules/systemmessages/unauthorize';\r\n//Component imports\r\nimport Banner from '../core/modules/viewport/banner';\r\nimport Content from '../core/modules/viewport/content';\r\n//import PopUpButton from '../core/modules/viewport/cpopup';\r\nimport { setLogin } from '../core/security/actions';\r\nimport AssociatedApplicants from '../custommodules/applicant/associatedapplicants';\r\nimport CompanyIframeCheck from '../custommodules/applicant/iframe';\r\nimport Billing from '../custommodules/billing/billingform';\r\nimport CompanyBilling from '../custommodules/billing/ownerbilling';\r\n//import InvoiceSettings from '../custommodules/invoicesettings/invoicesettings';\r\nimport MasterFieldsList from '../custommodules/masterfields/masterfieldlist';\r\nimport EPSNewApplication from '../custommodules/newentrancepermit/index_wrs';\r\n//import ImageUpload from '../custommodules/newentrancepermit/imageupload';\r\nimport NewApplicationInspection from '../custommodules/newentrancepermit/inspections';\r\nimport NewApplicationMap from '../custommodules/newentrancepermit/map';\r\nimport TaxParcelBtn from '../custommodules/newentrancepermit/taxparcelbutton';\r\nimport UsersNContacts from '../custommodules/newentrancepermit/usersNcontacts';\r\nimport EPSNotifications from '../custommodules/notifications/epsnotifications';\r\nimport EPSSectionsFields from '../custommodules/sitepermittypes/sitepermitsectionsfields';\r\n//import Reports from '../modules/reports/index.js';\r\n//import CustomStandardDescOfConstruction from '../custommodules/sitepermittypes/standarddescofconstruction';\r\n//import NotificationTemplate from '../core/modules/form/cnotificationTemplate'; -- not used\r\n//import CustomTermsConditions from '../custommodules/sitepermittypes/termsandconditions';\r\nimport ApplicationStatus from '../core/modules/applicationstatus';\r\nimport DescOfConstructionGrid from '../json/sitepermittypes/descofconsgrid';\r\nimport Administration from '../modules/administration';\r\n//import FileAttachments from '../modules/attachments/attachments';\r\n//import KeptFileAttachments from '../modules/attachments/attachments_kept';\r\n//import FileImages from '../modules/attachments/images';\r\n//import AccessControl from '../core/modules/form/caccesscontrol';\r\n//import GridButton from '../modules/buttons/GridButton';\r\nimport SystemStatistics from '../modules/dashboard/dashboardchart';\r\nimport Billingbr from '../modules/dnd/billingbr';\r\nimport CustomConfig from '../modules/dnd/configcustom';\r\n//import CRoutingTreeView from '../modules/form/croutingtreeview';\r\n//import CTemplateLoader from '../modules/form/ctemplateloader';\r\nimport NoticeCommon from '../modules/notices/commonnotices';\r\nimport Notices from '../modules/notices/notices';\r\nimport NotificationSettings from '../modules/notificationsettings/notificationsettings';\r\nimport NS from '../modules/notificationsettings/ns';\r\nimport NsPopUp from '../modules/notificationsettings/nspopup';\r\nimport NSTemplate from '../modules/notificationsettings/nstemplate';\r\nimport OwnerRegistration from '../modules/ownerregistration/OwnerRegistration';\r\nimport Consultant from '../modules/registrationrequest/consultant';\r\nimport RegistrationRequestApproval from '../modules/registrationrequest/requestapproval';\r\n//import FileUpload from '../modules/Uploads/FileUpload';\r\nimport AddWorkFlow from '../modules/workflow/addworkflow';\r\nimport WorkFlow from '../modules/workflow/workflow';\r\nimport WorkFlowUse from '../modules/workflow/workflowuse';\r\nimport UserAccessControl from '../core/controls/components/custom/useraccesscontrol'\r\nimport AuthenticationLogin from '../core/controls/components/authenticationlogin'\r\n//import Map from '../core/modules/map/map';\r\n// import FormContainer from '../core/modules/form/cform';\r\nimport CBuildDND from '../modules/dnd/cbuilddnd';\r\n//import Dashboard from '../modules/dashboard/dashboardGrid';\r\n//import Editor from '../core/modules/form/cwysiwyg';\r\n//import Grid from '../core/modules/Grid/cgrid';\r\nimport Paper from '../core/modules/form/cpaper';\r\nimport LayerAuthorization from '../core/controls/components/custom/layerauthorization';\r\nconst Grid = lazy(() => import('../core/modules/Grid/cgrid'));\r\nconst Editor = lazy(() => import('../core/modules/form/cwysiwyg'));\r\nconst Dashboard = lazy(() => import('../modules/dashboard/dashboardGrid'));\r\n//const Paper = lazy(() => import('../core/modules/form/cpaper'));\r\n\r\n// const SignUpForm = lazy(() => import('../core/modules/form/csignupform'));\r\n// const Sidebar = lazy(() => import('../core/modules/sidebar/sidebar'));\r\n\r\n//const CBuildDND = lazy(() => import('../modules/dnd/cbuilddnd'));\r\nconst Map = lazy(() => import('../core/modules/map/map'));\r\nconst FormContainer = lazy(() => import('../core/modules/form/cform'));\r\n//import AViewPort from '../core/modules/viewport/aviewport';\r\n\r\nconst AViewPort = lazy(() => import('../core/modules/viewport/aviewport'));\r\n//const Modules = lazy(() => import(\"./moduleimports\"));\r\n\r\nconst compmap = {\r\n ns: NS,//M\r\n addworkflow: AddWorkFlow,//M\r\n administration: Administration,//M\r\n applicationstatus: ApplicationStatus,//M\r\n banner: Banner, //M\r\n billing: Billing,//M\r\n billingbr: Billingbr,//M\r\n cnoticetexttemplate: NoticeTextTemplate,//M\r\n companybilling: CompanyBilling,//M\r\n companyiframe: CompanyIframeCheck,//M\r\n configcomp: CustomConfig,//M\r\n dashboard: Dashboard, //M\r\n descofconsgrid: DescOfConstructionGrid,//M\r\n discussionsform: DiscussionsForm,//M\r\n 'eps-masterfieldslist': MasterFieldsList,//M\r\n 'eps-newapplication': EPSNewApplication,//M\r\n 'eps-newapplication-inspection': NewApplicationInspection,//M\r\n 'eps-notifications': EPSNotifications,//M\r\n epssectionsfields: EPSSectionsFields,//M\r\n header: Header, //M\r\n logout: Logout, //M\r\n newApplicationMap: NewApplicationMap,//M\r\n noticecommon: NoticeCommon,//M\r\n notices: Notices,//M\r\n notificationsettings: NotificationSettings,//M\r\n nspopup: NsPopUp,//M\r\n nstemplate: NSTemplate,//M\r\n OwnerRegistration: OwnerRegistration,//M\r\n pagenotfound: PageNotFound, //M\r\n phasetypes: PhaseTypes,//M\r\n scheduler: Scheduler,//M\r\n signupform: SignUpForm, //M\r\n submoduleselection: SubModuleSelection,//M\r\n systemstatistics: SystemStatistics,//M\r\n taxparcelbutton: TaxParcelBtn,//M\r\n unauthorize: UnAuthorize, //M\r\n usersncontacts: UsersNContacts,//M\r\n workflow: WorkFlow,//M\r\n workflowuse: WorkFlowUse,//M\r\n sitepermitdnd: CBuildDND,//M\r\n registrationrequestapproval: RegistrationRequestApproval,//M\r\n drawer: Sidebar,//L\r\n paper: Paper,//L\r\n popupbutton: PopUpButton,//L\r\n slidingbutton: SlidingPage,//L\r\n content: Content, // L\r\n // autocomplete: AutoComplete, //C\r\n autocompletepopover: AutocompletePopover, //C\r\n button: Button,//C\r\n card: card,//C\r\n cautocompletetags: AutocompleteTags,//C\r\n cautocompletetagsnotification: AutocompleteTagsNotification,//C\r\n cconfirmpopup: ConfirmDialog,//C\r\n cformautocomplete: FormAutoComplete,//C\r\n cformcolorpicker: FormColorPicker,//C\r\n cformdiscussionspanel: FormDiscussionPanel,//C\r\n cformphoneextn: PhoneExtn,//C\r\n cformphonetext: PhoneText,//C\r\n cformtext: FormText,//C\r\n checkbox: CheckBox,//C\r\n checkboxgroup: CheckBoxGroup,//C\r\n clabel: CLabel,//C\r\n cnumberFormat: CNumberFormat,//C\r\n colorpicker: FormTextField,//C\r\n companyaccesscontrol: CompanyAccessControl,//C\r\n confirmationpopupbutton: PopUpButton,//C\r\n ctab: Tab,//C\r\n customArcgisMultiselect: CustomArcgisMultiselect,//CM\r\n customlabelexpression: CustomLabelExpression,//CM\r\n customlayerfiltertype: Customlayerfiltertype,//CM\r\n customlayertemplate: CustomLayerTemplate,//CM\r\n customTermsandConditions: CustomTermsConditions,//CM\r\n // keptfileattachments: KeptFileAttachments,//CM\r\n invoicesettings: InvoiceSettings,//CM\r\n map: Map,//CM\r\n standarddescofconstruction: CustomStandardDescOfConstruction,//CM\r\n date: DateTimePicker,//C\r\n 'date-material': KeyboardDatePickerExample,//C\r\n 'datetime-local': MaterialDateTimePicker,//C\r\n datetimetext: Text,//C\r\n datemonth:Date_MonthPicker,\r\n divider: Divider,//C\r\n dropdown: DropDown,//C\r\n dropdownwithadd: DropDownWithAdd,//C\r\n dtext: Text,//C\r\n duallistbox: DualListBox,//C\r\n dynamiclayoutform: Form,//C\r\n editor: Editor,//C\r\n etext: Text,//C\r\n fileattachments: FileAttachments,//C\r\n fileimages: FileImages,//C\r\n fileupload: FileUpload,//C\r\n form: Form,//C\r\n formbutton: FormButton,//C\r\n formcheckbox: FormCheckBox,//C\r\n formcontainer: FormContainer,//C\r\n formdropdown: FormDropDown,//C\r\n formdropdownwithadd: DropDownWithAdd,//C\r\n formfieldsgroup: FormFieldsGroup,//C\r\n formmultiduallistbox: FormMultiDualListBox,//C\r\n formswitch: FormSwitch,//C\r\n formtextbox: FormTextField,//C\r\n generalpaper: GeneralPaper,//C\r\n grid: Grid,//C\r\n gridbutton: GridButton,//C\r\n historydate: Text,//C\r\n historyuser: Text,//C\r\n iframe: IframeView,//C\r\n imageupload: ImageUpload,//C\r\n infotext: Text,//C\r\n inputFieldHidden: InputFieldHidden,//C\r\n interchangablegrid: InterchangableGrid,//C\r\n link: Link,//C\r\n multiduallistbox: MultiDualListBox,//C\r\n multiduallistbox2: MultiDualListBox2,//C\r\n multipleslect: MultipleSelect,//C\r\n multiselect: MultiSelect,//C\r\n multiselectautocomplete: MultiSelectAutoComplete,//C\r\n navbutton: Button,//C\r\n navformbutton: FormButton,//C\r\n navlink: Link,//C\r\n routelink: Link,\r\n otp: Otp,//C\r\n radio: Radio,//C\r\n radiogroup: RadioGroup,//C\r\n routingtreeview: CRoutingTreeView,//C\r\n simplegrid: SimpleGrid,//C\r\n simplelink: SimpleLink,//C\r\n sectionscard: SectionsCard,//C\r\n switch: Switch,//C\r\n templateloader: CTemplateLoader,//C\r\n text: Text,//C\r\n textbox: TextBox,//C\r\n time: DateTimePicker,//C\r\n 'time-material': InlineTimePickerDemo,//C\r\n togglebutton: ToggleButton,//C\r\n toggleicon: ToggleButton,//C\r\n treeview: TreeView,//C\r\n upload: Upload,//C\r\n associatedapplicants: AssociatedApplicants,\r\n regisconsultants: Consultant,\r\n accessControl: UserAccessControl,\r\n layerauth: LayerAuthorization,\r\n authenticationlogin:AuthenticationLogin\r\n\r\n}\r\n\r\nexport const compmapReducer = (state = compmap, action) => {\r\n\r\n switch (action.type) {\r\n case 'PASS_COMPMAP':\r\n return state\r\n default:\r\n return state\r\n }\r\n}\r\n\r\n\r\nclass SignInViewPortWrapper extends Component {\r\n render() {\r\n return (\r\n <Suspense fallback={<div className=\"col\">\r\n <Backdrop open={true} />\r\n <Skeleton variant=\"text\" width='100%' height={50} />\r\n <Skeleton variant=\"rect\" width='100%' height={800} />\r\n <Skeleton variant=\"text\" width='100%' height={50} />\r\n </div>}>\r\n <AViewPort compmap={compmap} accessPermissions={this.props.accessPermissions}\r\n accessLevelPermissions={this.props.accessLevelPermissions}\r\n AccessPortal={this.props.AccessPortal} {...this.props} />\r\n </Suspense>\r\n\r\n )\r\n\r\n }\r\n}\r\n\r\n\r\nconst mapProps = (state) => {\r\n return { user: state.authentication.user }\r\n}\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ setLogin }, dispatch);\r\n}\r\n\r\nSignInViewPortWrapper = connect(mapProps, mapActions)(SignInViewPortWrapper);\r\nexport default SignInViewPortWrapper;\r\n","import React, { useState, useEffect } from 'react';\r\nimport IframeView from '../../core/controls/components/iframe';\r\nimport { getEnvVariable } from '../../modules/environmentalList';\r\nimport { useParams } from 'react-router-dom';\r\n\r\nexport default function CompanyIframeCheck({ options, extra }) {\r\n let params = useParams();\r\n return <div>\r\n <IframeView props={{ ...options}}\r\n extra={extra || '/indemnity/' + getEnvVariable('AccessPortal') + '/' +\r\n (params.Id !== 'null'\r\n ? params.Id\r\n : localStorage.getItem('profile') &&\r\n JSON.parse(localStorage.getItem('profile')).modulePermissions[0].companyId) +\r\n '/indemnities'\r\n }\r\n />\r\n </div>\r\n}","import React from 'react';\r\nimport Icon from '@material-ui/core/Icon';\r\nimport Button from '@material-ui/core/Button';\r\n\r\nexport default function Unauthorize() {\r\n const user = JSON.parse(localStorage.getItem('profile')).name\r\n\r\n\r\n return (\r\n <div className=\"eps-content-center \" >\r\n <div className=\"row\">\r\n <div className=\"col-sm-5\">\r\n <div className=\"text-center eps-content-center\">\r\n <Icon className=\"text-center \" style={{ fontSize: '12rem', color: 'red' }}>search_off</Icon></div>\r\n </div>\r\n <div className=\"col-sm-7\">\r\n <h1 className=\"text-center\" style={{ fontSize: '15rem' }}> 404 </h1>\r\n <h2 className=\"text-secondary text-center\">{`PAGE NOT FOUND`} </h2>\r\n <div className=\"text-center p-2\">\r\n <small> Please return to the homepage <Button variant=\"contained\" size=\"small\" color=\"primary\" href='#' target=\"_self\" >Home</Button></small>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n );\r\n}\r\n","import React from 'react';\r\nimport Icon from '@material-ui/core/Icon';\r\nimport Button from '@material-ui/core/Button';\r\n\r\nexport default function Unauthorize() {\r\n const user = JSON.parse(localStorage.getItem('profile')) || null\r\n localStorage.clear();\r\n\r\n\r\n return (\r\n <div className=\"eps-content-center \" >\r\n <div className=\"text-center eps-img-unauthorize\">\r\n <Icon className=\"text-center \" style={{ fontSize: '10rem', color: 'red' }}>hourglass_bottom</Icon></div>\r\n <h1 className=\"text-center\"> Your Session has Expired </h1>\r\n {user && user.name && <h5 className=\"text-secondary text-center\">{`Please login into your ${user && user.name}`} </h5>}\r\n <div className=\"text-center p-2\">\r\n <Button variant=\"contained\" size=\"small\" color=\"primary\" href='#' target=\"_self\" >Login</Button>\r\n </div>\r\n </div>\r\n\r\n );\r\n}\r\n","import React, { useState, useEffect } from 'react'\r\nimport Select from '@material-ui/core/Select';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport TextField from '@material-ui/core/TextField';\r\n\r\nexport default function CustomLayerTemplate({ dataoptions, name, label, transformProps, edit, value, handleFieldChange,dropdownvalues }) {\r\n let fieldName = dataoptions && dataoptions[transformProps.label] && dataoptions[transformProps.label] !== '' && dataoptions[transformProps.label].split(',') || []\r\n const [render, setRender] = useState(false)\r\n const [propVal, setval] = useState([])\r\n\r\n const isMatch = (temp, fieldName) => {\r\n let ismatched = false;\r\n temp.map(res => {\r\n if (res.fieldName === fieldName) {\r\n ismatched = true\r\n }\r\n })\r\n return ismatched\r\n }\r\n\r\n useEffect(() => {\r\n try {\r\n if (value && JSON.parse(value) !== '')\r\n setval(JSON.parse(value))\r\n // else setval([])\r\n }\r\n catch (ex) {\r\n console.log(ex)\r\n }\r\n }, [value])\r\n\r\n useEffect(() => {\r\n let parseVal = value && JSON.parse(value)\r\n let tempval = parseVal === '' ? [] : parseVal\r\n if (tempval && fieldName && fieldName.length > 0 && (fieldName.length === tempval.length || fieldName.length > tempval.length)) {\r\n fieldName.map((field, index) => {\r\n let tempMatch = isMatch(tempval, field)\r\n if (tempval && (tempval.length === 0 || !tempMatch))\r\n tempval.push({ 'id': (tempval.length + 1) || index, 'fieldName': field, 'label': field || null })\r\n })\r\n handleFieldChange({ target: { name: name, value: JSON.stringify(tempval) || '', checked: false } })\r\n }\r\n else if (fieldName && tempval && fieldName.length < tempval.length) {\r\n let newtempval = tempval.filter(function (item) { return fieldName.indexOf(item.fieldName) > -1 });\r\n handleFieldChange({ target: { name: name, value: JSON.stringify(newtempval) || '', checked: false } })\r\n }\r\n else {\r\n handleFieldChange({ target: { name: name, value: '', checked: false } })\r\n }\r\n setRender(!render)\r\n }, [dataoptions && dataoptions[transformProps.label]])\r\n\r\n\r\n const handleChange = (e, Id) => {\r\n let parseVal = value && JSON.parse(value)\r\n let tempVal = parseVal === '' ? [] : parseVal\r\n tempVal && tempVal.length > 0 && tempVal.map(res => {\r\n if (res.id === Id) {\r\n res[e.target.name] = e.target.value\r\n }\r\n })\r\n handleFieldChange({ target: { name: name, value: JSON.stringify(tempVal) || '', checked: false } })\r\n }\r\n\r\n\r\n console.log(label, propVal)\r\n return (\r\n <div>\r\n {render}\r\n <small className=\"fw-bold\">{label}</small>\r\n <div className=\"row\">\r\n <div className=\"col-sm-6\">\r\n {propVal && propVal.length > 0 && propVal.map((res, index) => {\r\n return <Select\r\n className=\"col-sm-12\"\r\n value={res.fieldName}\r\n disabled={!edit ? true : false}\r\n name={'fieldName'}\r\n onChange={(e) => handleChange(e, index + 1)}\r\n >\r\n {fieldName && fieldName.length > 0 && fieldName.map(drop => {\r\n return <MenuItem value={drop}>{drop}</MenuItem>\r\n })}\r\n </Select>\r\n })}\r\n </div>\r\n <div className=\"col-sm-6\">\r\n {propVal && propVal.length > 0 && propVal.map((res, index) => {\r\n return <TextField\r\n className=\"col-sm-12\"\r\n value={res.label}\r\n disabled={!edit ? true : false}\r\n name={'label'}\r\n onChange={(e) => handleChange(e, index + 1)}\r\n />\r\n })}\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n\r\n}","import Button from '@material-ui/core/Button';\r\nimport { Fragment, useEffect, useState } from 'react';\r\nimport { useParams } from 'react-router-dom';\r\nimport MultiAdd from '../../core/controls/components/multiadd';\r\nimport { PostData } from '../../core/controls/helpers/requests';\r\nimport { createRequest, requestApi } from '../../core/controls/helpers/rest';\r\nimport { getEnvVariable } from '../../modules/environmentalList';\r\nimport S3NativeUpload from '../../modules/Uploads/S3NativeUpload';\r\n\r\nconst extraProps = {\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Value'\r\n },\r\n}\r\n\r\nexport default function AssociatedApplicants(props) {\r\n const [nonassociated, setNonassociated] = useState([])\r\n const [associatedResult, setAssociatedResult] = useState([])\r\n const [openUpload, setOpenUpload] = useState(false)\r\n const [reference, setReference] = useState(null)\r\n const [reload, setReload] = useState(false)\r\n const [information, setInformation] = useState(props.dataItem)\r\n const params = useParams()\r\n\r\n useEffect(() => {\r\n localStorage.removeItem('reference')\r\n getAll()\r\n }, [])\r\n\r\n const getAll = () => {\r\n const dropLists = [\r\n {\r\n url: getEnvVariable('MasterAdmin') + `/api/ExternalUsersConsultant/AllNonAssociated/${getEnvVariable('ModuleKey')}?ConsultantCompanyId=${params.Id ? params.Id : (information && information.CompanyId)}`,//${company.OfficalUserId}`,\r\n type: 'get'\r\n },\r\n {\r\n url: getEnvVariable('MasterAdmin') + `/api/ExternalUsersConsultant/allAssociated?ConsultantCompanyId=${params.Id ? params.Id : (information && information.CompanyId)}`,//${company.OfficalUserId}`,\r\n type: 'get'\r\n },\r\n ]\r\n Promise.all(dropLists.map(each => requestApi(createRequest(each, {}, null)).catch(error => { return error; }))).then(response => {\r\n const [nonassociate, associate] = response;\r\n // if (Object.keys(nonassociate).length > 0) {\r\n // let mapData = Object.keys(nonassociate).map(each => {\r\n // return { Name: nonassociate[each], Value: each }\r\n // }) || []\r\n setAssociatedResult(associate)\r\n setNonassociated(nonassociate)\r\n setReference(null);\r\n setReload(!reload)\r\n\r\n // }\r\n })\r\n }\r\n\r\n\r\n const handleUpdate = (result) => {\r\n let newData = result\r\n newData['RequestFileReference'] = reference ? JSON.stringify(reference) : newData['RequestFileReference'];\r\n const update = [\r\n {\r\n url: getEnvVariable('MasterAdmin') + `/api/ExternalUsersConsultant/StatusUpdateForInternal/${getEnvVariable('ModuleKey')}/${newData.RequestStatus}`,\r\n type: 'put',\r\n }\r\n ]\r\n Promise.all(update.map(each => requestApi(createRequest(each, newData, null)).catch(error => { return error; }))).then(response => {\r\n if (response) {\r\n setReference(null);\r\n localStorage.removeItem('reference')\r\n getAll();\r\n }\r\n\r\n })\r\n }\r\n\r\n\r\n const handleDelete = (newData) => {\r\n const del = [\r\n {\r\n url: getEnvVariable('MasterAdmin') + `/api/ExternalUsersConsultant/DeleteForInternal/${getEnvVariable('ModuleKey')}/${newData.CompanyId}/${newData.ConsultantCompanyId}`,\r\n type: 'get',\r\n }\r\n ]\r\n Promise.all(del.map(each => requestApi(createRequest(each, {}, null)).catch(error => { return error; }))).then(response => {\r\n if (response) {\r\n setReference(null);\r\n localStorage.removeItem('reference')\r\n getAll();\r\n }\r\n })\r\n }\r\n\r\n const handleSave = (result) => {\r\n let data = result\r\n data['RequestFileReference'] = (reference && JSON.stringify(reference)) || '';\r\n data['ConsultantCompanyId'] = params.Id || (information && information.CompanyId) || null\r\n\r\n const addupdate = [\r\n {\r\n url: getEnvVariable('MasterAdmin') + `/api/ExternalUsersConsultant/RequestFor${getEnvVariable('AccessPortal') === 'I' ? 'Internal' :\r\n 'External'}/${getEnvVariable('ModuleKey')}`,\r\n type: 'post',\r\n }\r\n ]\r\n Promise.all(addupdate.map(each => requestApi(createRequest(each, data, null)).catch(error => { return error; }))).then(response => {\r\n if (response) {\r\n localStorage.removeItem('reference')\r\n getAll();\r\n }\r\n })\r\n }\r\n\r\n\r\n const handleDownload = (dataItemTemp) => {\r\n let dataItem = JSON.parse(dataItemTemp)\r\n if (dataItem) {\r\n let obj = {\r\n 'fileReference': dataItem.FileReference, 'contentType': dataItem.ContentType, \"folder\": \"Attachments\",\r\n 'fileName': dataItem.FileName\r\n }\r\n let url = getEnvVariable('Application') + `/api/FileSystem/${params.Id}/DownloadRef`\r\n PostData(url, obj, true).then(response => {\r\n setReference(null);\r\n localStorage.removeItem('reference')\r\n if (response && response.FileId) {\r\n if (dataItem.ContentType === \"pdf\") {\r\n let downloadurl = getEnvVariable('Application') + `/api/FileSystem/View/${response.FileId}`\r\n window.open(downloadurl, '_blank')//.focus();\r\n }\r\n else {\r\n\r\n let downloadurl = getEnvVariable('Application') + `/api/FileSystem/Downloadcontent/${response.FileId}`\r\n window.open(downloadurl, '_blank')//.focus();\r\n }\r\n }\r\n }).catch(ex => {\r\n console.log(ex)\r\n })\r\n }\r\n\r\n }\r\n\r\n const handleUploads = (rowData, upload) => {\r\n if (associatedResult && associatedResult.length > 0) {\r\n let dataItemTemp = associatedResult.map(each => {\r\n if (rowData.CompanyId === each.CompanyId) {\r\n rowData['RequestFileReference'] = JSON.stringify(upload[0])\r\n return rowData\r\n }\r\n else return each\r\n });\r\n setAssociatedResult(dataItemTemp)\r\n }\r\n localStorage.setItem('reference', JSON.stringify(upload[0]))\r\n setReference(upload[0])\r\n setReload(!reload)\r\n }\r\n\r\n const getReference = (rowData) => {\r\n if ((rowData && !rowData.RequestFileReference) || localStorage.getItem('reference')) {\r\n let ref = JSON.parse(localStorage.getItem('reference'))\r\n return ref && ref.FileName;\r\n }\r\n else if (rowData && rowData.RequestFileReference) {\r\n return (JSON.parse(rowData.RequestFileReference) || {}).FileName\r\n }\r\n else return null\r\n }\r\n\r\n return <Fragment >\r\n {reload}\r\n {(getEnvVariable(\"AccessPortal\") === 'E' &&\r\n JSON.parse(localStorage.getItem('profile')).isConsultant === 'Y' && information.IsOfficial === 'Y') && <small className='col-12'>Please use the <a style={{ textDecoration: 'underline' }}\r\n href='https://transportation.ky.gov/Organizational-Resources/Forms/TC%2016-4.pdf' target=\"_blank\">{getEnvVariable('ModuleKey')} Link </a>\r\n to download the form\r\n </small>}\r\n {(getEnvVariable('AccessPortal') === 'I') && <small className='col-12'>Please use the <a style={{ textDecoration: 'underline' }}\r\n href='https://transportation.ky.gov/Organizational-Resources/Forms/TC%2016-4.pdf' target=\"_blank\"> {getEnvVariable('ModuleKey')} Link </a>\r\n to download the form\r\n </small>}\r\n <div className='col px-2'>\r\n <MultiAdd\r\n className='col'\r\n edit={getEnvVariable('AccessPortal') === 'I' ? true : (getEnvVariable(\"AccessPortal\") === 'E' &&\r\n JSON.parse(localStorage.getItem('profile')).isConsultant === 'Y' && information.IsOfficial === 'Y') ? true : false}\r\n // isDelete={getEnvVariable('AccessPortal') === 'I' ? true : false}\r\n customsave={true}\r\n toolbar={true}\r\n isUpdate={getEnvVariable('AccessPortal') === 'I' ? true : false}\r\n handleUpdate={handleUpdate}\r\n // handleDelete={handleDelete}\r\n handleSave={handleSave}\r\n columns={[\r\n {\r\n title: 'Name', field: 'CompanyId', lookup: nonassociated, width: 120,\r\n editable: getEnvVariable('AccessPortal') === 'I' ? 'onAdd' : (getEnvVariable(\"AccessPortal\") === 'E' && JSON.parse(localStorage.getItem('profile')).isConsultant === 'Y' && information.IsOfficial === 'Y') ? 'onAdd' : 'never',\r\n validate: (row) => (row.CompanyId || \"\").length !== 0,\r\n render: rowData => rowData && rowData['CompanyId'] &&\r\n <span>\r\n {((getEnvVariable(\"AccessPortal\") === 'E' && JSON.parse(localStorage.getItem('profile')).isConsultant === 'Y') || getEnvVariable(\"AccessPortal\") === 'I') ? (rowData['Companies'] && rowData['Companies']['Name'])\r\n : (rowData && (rowData['ConsultantCompany'] && rowData['ConsultantCompany']['Name']))}\r\n </span>,\r\n },\r\n {\r\n title: 'Document(s)', width: 300,\r\n field: 'RequestFileReference', editable: getEnvVariable('AccessPortal') === 'I' ? 'always' : (getEnvVariable(\"AccessPortal\") === 'E' &&\r\n JSON.parse(localStorage.getItem('profile')).isConsultant === 'Y' && information.IsOfficial === 'Y') ? 'always' : 'never',\r\n validate: rowData => {\r\n if (getEnvVariable(\"AccessPortal\") === 'E' && (rowData && localStorage.getItem('reference') === null))\r\n if (rowData['RequestFileReference'] === undefined)\r\n return { isValid: false, helperText: \"Please Upload Document\" };\r\n return true\r\n },\r\n render: rowData => rowData && rowData['RequestFileReference'] &&\r\n <span >\r\n <Button autoFocus onClick={() => handleDownload(rowData['RequestFileReference'])} color=\"primary\" >\r\n {rowData ? (rowData['RequestFileReference'] !== \"null\" && (JSON.parse(rowData['RequestFileReference'] || {})).FileName)\r\n : getReference(rowData) || ''\r\n }</Button>\r\n </span>,\r\n editComponent: props =>\r\n (props.rowData &&\r\n <small>{getReference(props.rowData) ? <div>{getReference(props.rowData)}\r\n {getEnvVariable(\"AccessPortal\") === 'I' && < S3NativeUpload title={'Replace Document'}\r\n refid={(params && params.Id) ? params.Id : (information && information.CompanyId)} uploadType=\"A\" isCustom={true}\r\n handleUploads={(upload) => handleUploads(props.rowData, upload)} multiple={false}\r\n reference={reference || JSON.parse(localStorage.getItem('reference'))}\r\n handleDownload={() => handleDownload(props.rowData['RequestFileReference'], 'download')} isButton={true}\r\n />} </div> : < S3NativeUpload title={'Upload Document'} refid={(params && params.Id) ? params.Id : (information && information.CompanyId)}\r\n uploadType=\"A\" isCustom={true}\r\n handleUploads={(upload) => handleUploads(props.rowData, upload)} multiple={false}\r\n reference={reference || JSON.parse(localStorage.getItem('reference'))}\r\n handleDownload={() => handleDownload(props.rowData['RequestFileReference'], 'download')} isButton={true}/>}\r\n </small>\r\n )\r\n },\r\n {\r\n title: 'Request Status', width: 100,\r\n field: 'RequestStatus', lookup: { 'A': 'Approved', 'P': 'Pending', 'D': 'Denied', }, editable: getEnvVariable('AccessPortal') === 'I' ? 'onUpdate' : 'never'\r\n },\r\n ]}\r\n value={associatedResult || []}\r\n />\r\n </div>\r\n </Fragment >\r\n}","import { getEnvVariable } from \"../../../modules/environmentalList\"\r\n\r\nconst ProposedLandUse = {\r\n \"type\": \"popup\",\r\n \"key\": \"ProposedLandUse\",\r\n \"name\": \"ProposedLandUse\",\r\n anchor: 'right',\r\n open: false,\r\n aliases: {\r\n open: 'addOpen'\r\n },\r\n sharedValues: ['open'],\r\n container: {\r\n values: { save: false, back: false, fullscreen: false, },\r\n mapValues: {\r\n header: [\r\n { key: 'exitfullscreen', name: 'exitfullscreen' },\r\n { key: 'fullscreen', name: 'fullscreen' },\r\n ],\r\n AddProposedLandUse: [{ key: 'save', name: 'save' },\r\n { key: 'exitfullscreen', name: 'exitfullscreen' },\r\n { key: 'fullscreen', name: 'fullscreen' },]\r\n },\r\n // sharedValues: ['save', 'edit'],\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [{\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'header',\r\n type: 'div',\r\n className: 'col-12 ',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12',\r\n }\r\n }],\r\n\r\n },\r\n\r\n\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'AddProposedLandUse',\r\n type: 'div',\r\n className: 'col-12 pl-4',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12 pl-4',\r\n }\r\n }],\r\n\r\n },\r\n ]\r\n },\r\n\r\n components: {\r\n header: {\r\n name: \"header\",\r\n type: 'header',\r\n title: 'Proposed Land Use',\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": \"Add Proposed Land Use\", \"materialicon\": \"eject\", className: 'eps-breadcrumb-item ', class: 'text-light' },\r\n ]\r\n }\r\n ],\r\n layout: {},\r\n actions: [\r\n {\r\n type: 'icon',\r\n icon: 'back',\r\n name: 'back',\r\n hideon: 'back',\r\n hidevalue: false,\r\n title: 'Back'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'save',\r\n name: 'save',\r\n hideon: 'save',\r\n hidevalue: false,\r\n title: 'Save Proposed Land Use'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'fullscreen',\r\n name: 'fullscreen',\r\n hidevalue: false,\r\n title: 'FullScreen'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'exitfullscreen',\r\n name: 'exitfullscreen',\r\n hideon: 'fullscreen',\r\n hidevalue: false,\r\n title: 'Exit FullScreen'\r\n }\r\n ],\r\n\r\n\r\n },\r\n AddProposedLandUse: {\r\n \"type\": \"form\",\r\n \"key\": \"AddProposedLandUse\",\r\n \"name\": \"AddProposedLandUse\",\r\n aliases: {\r\n save: 'save',\r\n },\r\n \"routeParams\": { replace: 'proposedlanduse', param: 'Id', routeName: 'id' },\r\n sharedValues: ['save', 'exitfullscreen', 'fullscreen'],\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'ProposedHeader',\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n }\r\n }],\r\n\r\n },\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'UsageNotes',\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n }\r\n }],\r\n\r\n },\r\n {\r\n order: 2,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'LandUse',\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8'\r\n }\r\n }]\r\n },\r\n {\r\n order: 3,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'Unit',\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n }\r\n },]\r\n },\r\n {\r\n order: 4,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'LandUseADT',\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8'\r\n }\r\n },]\r\n },\r\n {\r\n order: 5,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'Id',\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8'\r\n }\r\n },]\r\n },\r\n {\r\n order: 6,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'PropertyGroupID',\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8'\r\n }\r\n },]\r\n },\r\n ],\r\n },\r\n values: {\r\n UsageNotes: '',\r\n LandUse: '',\r\n Unit: null,\r\n LandUseADT: '',\r\n portal: getEnvVariable('AccessPortal') === 'E' ? 'N' : 'Y',\r\n PropertyGroupID: '',\r\n ProposedHeader:''\r\n },\r\n dataAttributes: {\r\n LandUse: {},\r\n\r\n },\r\n \"components\": {\r\n ProposedHeader: {\r\n \"type\": \"label\",\r\n \"key\": \"ProposedHeader\",\r\n \"label\": \"Proposed Land Use\",\r\n \"name\": \"ProposedHeader\",\r\n\r\n },\r\n UsageNotes: {\r\n \"type\": \"textfield\",\r\n \"key\": \"UsageNotes\",\r\n \"label\": \"Usage Notes\",\r\n \"name\": \"UsageNotes\",\r\n },\r\n LandUse: {\r\n \"type\": \"dropdown\",\r\n \"key\": \"LandUse\",\r\n \"label\": \"Land Use \",\r\n \"name\": \"LandUse\",\r\n extraProps: {\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Value',\r\n //default: 'IsDefault'\r\n },\r\n dataAttributes: [\r\n {\r\n key: 'data-calculatedvalue',\r\n name: 'CalculatedValue'\r\n }\r\n ]\r\n }\r\n },\r\n Unit: {\r\n \"type\": \"textfield\",\r\n \"key\": \"unit\",\r\n \"label\": \"Unit Count\",\r\n name: \"Unit\",\r\n \"extraProps\": {\r\n \"type\": \"number\"\r\n }\r\n\r\n },\r\n LandUseADT: {\r\n \"type\": \"domainCalVal\",\r\n \"key\": \"LandUseADT\",\r\n \"label\": \"Land Use ADT\",\r\n name: \"LandUseADT\",\r\n disabled: true,\r\n \"extraProps\": {\r\n \"type\": \"number\"\r\n }\r\n },\r\n Id: {\r\n \"type\": \"textfield\",\r\n \"key\": \"Id\",\r\n \"label\": \"Land Use ID\",\r\n name: \"Id\",\r\n disabled: true,\r\n \"extraProps\": {\r\n \"type\": \"number\"\r\n }\r\n },\r\n PropertyGroupID: {\r\n \"type\": \"textfield\",\r\n \"key\": \"PropertyGroupID\",\r\n \"label\": \"Property Group ID\",\r\n name: \"PropertyGroupID\",\r\n disabled: true,\r\n \"extraProps\": {\r\n \"type\": \"number\"\r\n }\r\n },\r\n },\r\n mapActionsToEffects: {\r\n 'onLoad': {\r\n init: {\r\n rules: [{\r\n run: {\r\n valid: [{\r\n type: 'load',\r\n name: 'LandUse',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin')+`/api/Domains/values?domainkey=PROPOSEDLANDUSE`,\r\n type: 'get',\r\n saveAs: {\r\n key: 'items'\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n type: 'load',\r\n name: 'LandUseADT',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin')+`/api/Domains/values?domainkey=PROPOSEDLANDUSE`,\r\n type: 'get',\r\n saveAs: {\r\n key: 'items'\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n type: 'validations', //http://development.delasoft.com:8443/AMES-application/api/ProposedLandUse/5864/Add\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('Application')+`/api/ProjectMessages/RulesByName?name=modulemaster.proposedlanduse`,\r\n type: 'get'\r\n }\r\n ],\r\n transformProps: {\r\n removesubfieldname: 'AMESMODULEMASTER.PROPOSEDLANDUSE_'\r\n }\r\n },\r\n {\r\n type: 'businessrules',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Application') + `/api/BusinessRules/Grid/modulemaster.proposedlanduse`,\r\n type: 'get',\r\n }\r\n ],\r\n },\r\n // {\r\n // type: 'loadValues',\r\n // name: 'LandUse',\r\n // loadtransformProps: {\r\n // label: 'Name',\r\n // value: 'Value',\r\n // defaultCondition: 'IsDefault',\r\n // checkDefaultValue: 'Y',\r\n // savetype: 'add'\r\n // },\r\n // initialdataAttributes: {\r\n // CalculatedValue: 'calculatedvalue',\r\n // Value: 'value',\r\n // }\r\n // },\r\n ]\r\n }\r\n }]// 1 intital load\r\n },\r\n 'exitfullscreen': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'exitfullscreen',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'fullscreen': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'fullscreen',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'GLOBAL': {\r\n rules: [\r\n // {\r\n // run: {\r\n // valid: [\r\n // {\r\n // type: 'loadValues',\r\n // name: 'LandUse',\r\n // loadtransformProps: {\r\n // label: 'Name',\r\n // value: 'Value',\r\n // defaultCondition: 'IsDefault',\r\n // checkDefaultValue: 'Y',\r\n // savetype: 'add'\r\n // },\r\n // initialdataAttributes: {\r\n // CalculatedValue: 'calculatedvalue',\r\n // Value: 'value',\r\n // }\r\n // },\r\n // ]\r\n // },\r\n // },\r\n {\r\n canOverwrite: false,\r\n check: [\r\n {\r\n condition: \"AND\",\r\n rules: [\r\n { name: \"LandUse\", type: \">\", value: \"0\", rules: [] },\r\n { name: \"LandUse\", type: \"=\", value: \"20\", rules: [] },\r\n { name: \"Unit\", type: \"is not null\", rules: [] }\r\n ]\r\n }\r\n ],\r\n fields: [\"LandUse\"],\r\n run: {\r\n\r\n inValid: [\r\n { type: \"prop\", name: \"Unit\", required: true, disabled: false },\r\n { type: \"prop\", name: \"UsageNotes\", required: false, disabled: false },\r\n\r\n ],\r\n // type: \"uncheck\",\r\n valid: [\r\n { type: \"prop\", name: \"Unit\", required: false, disabled: false },\r\n { type: \"prop\", name: \"UsageNotes\", required: true, disabled: false },\r\n\r\n ],\r\n\r\n },\r\n uncheck: true\r\n },\r\n {\r\n canOverwrite: false,\r\n check: [\r\n {\r\n condition: \"AND\",\r\n rules: [\r\n { name: \"portal\", type: \"=\", value: \"N\", rules: [] },\r\n ]\r\n }\r\n ],\r\n fields: [\"portal\"],\r\n ruleOrder: 0,\r\n run: {\r\n\r\n inValid: [\r\n { type: \"prop\", name: \"LandUseADT\", disabled: true, isVisible: true },\r\n { type: \"prop\", name: \"PropertyGroupID\", disabled: true, isVisible: true },\r\n { type: \"prop\", name: \"Id\", disabled: true, isVisible: true },\r\n ],\r\n // type: \"uncheck\",\r\n valid: [\r\n { type: \"prop\", name: \"LandUseADT\", disabled: true, isVisible: false },\r\n { type: \"prop\", name: \"PropertyGroupID\", disabled: true, isVisible: false },\r\n { type: \"prop\", name: \"Id\", disabled: true, isVisible: false },\r\n ],\r\n\r\n },\r\n uncheck: true\r\n },\r\n ]\r\n },\r\n },\r\n 'onChange': {\r\n 'GLOBAL': {\r\n rules: [\r\n // {\r\n // canOverwrite: false,\r\n // check: [\r\n // {\r\n // condition: \"AND\",\r\n // rules: [\r\n // { name: \"LandUse\", type: \"is not null\", rules: [] },\r\n // { name: \"portal\", type: \"=\", value: 'Y', rules: [] }\r\n // ]\r\n // }\r\n // ],\r\n // fields: [\"LandUse\", 'Unit'],\r\n // run: {\r\n // valid: [{\r\n // type: 'calculate',\r\n // name: 'LandUseADT',\r\n // attr: 'calculatedvalue',\r\n // operands: 'LandUse',\r\n // quotient: 'Unit',\r\n // operator: '*',\r\n // hasValue: true,\r\n // valueType: 'D',\r\n // isVisible: true,disabled:true\r\n\r\n // }],\r\n // inValid: [{\r\n // type: 'calculate',\r\n // name: 'LandUseADT',\r\n // attr: 'calculatedvalue',\r\n // operands: 'LandUse',\r\n // quotient: 'Unit',\r\n // operator: '*',\r\n // hasValue: true,\r\n // valueType: 'D',\r\n // isVisible: false,disabled:true\r\n\r\n // }\r\n // ]\r\n // },\r\n // },\r\n // {\r\n // canOverwrite: false,\r\n // check: [\r\n // {\r\n // condition: \"AND\",\r\n // rules: [\r\n // { name: \"Unit\", type: \"is not null\", rules: [] },\r\n // { name: \"LandUse\", type: \"is not null\", rules: [] },\r\n // { name: \"portal\", type: \"=\", value: 'Y', rules: [] }\r\n // ]\r\n // }\r\n // ],\r\n // fields: [\"LandUse\", 'Unit'],\r\n // run: {\r\n // valid: [{\r\n // type: 'calculate',\r\n // name: 'LandUseADT',\r\n // attr: 'calculatedvalue',\r\n // operands: 'LandUse',\r\n // quotient: 'Unit',\r\n // operator: '*',\r\n // hasValue: true,\r\n // valueType: 'D',\r\n // isVisible: true,disabled:true\r\n\r\n // }],\r\n // inValid: [{\r\n // type: 'calculate',\r\n // name: 'LandUseADT',\r\n // attr: 'calculatedvalue',\r\n // operands: 'LandUse',\r\n // quotient: 'Unit',\r\n // operator: '*',\r\n // hasValue: true,\r\n // valueType: 'D',\r\n // isVisible: false,disabled:true\r\n\r\n // }\r\n // ]\r\n // },\r\n // },\r\n {\r\n canOverwrite: false,\r\n check: [\r\n {\r\n condition: \"AND\",\r\n rules: [\r\n { name: \"LandUse\", type: \">\", value: \"0\", rules: [] },\r\n { name: \"LandUse\", type: \"=\", value: \"20\", rules: [] },\r\n ]\r\n }\r\n ],\r\n fields: [\"LandUse\"],\r\n ruleOrder: 0,\r\n run: {\r\n\r\n inValid: [\r\n { type: \"prop\", name: \"Unit\", required: true, disabled: false },\r\n { type: \"prop\", name: \"UsageNotes\", required: false, disabled: false },\r\n\r\n ],\r\n // type: \"uncheck\",\r\n valid: [\r\n { type: \"prop\", name: \"Unit\", required: false, disabled: false },\r\n { type: \"prop\", name: \"UsageNotes\", required: true, disabled: false },\r\n\r\n ],\r\n\r\n },\r\n uncheck: true\r\n },\r\n ],\r\n fields: [\r\n 'Unit', 'LandUse'\r\n ]\r\n },\r\n },\r\n 'afterSave': {\r\n 'save': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'save',// http://development.delasoft.com:8443/AMES-application/api/Property/20120/Add\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('Application')+`/api/ProposedLandUse/{routeid1}/Add`,\r\n type: 'post',\r\n \"matchProps\": [{\r\n name: \"routeid1\",\r\n key: \"routeid1\",\r\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 ProposedLandUse\r\n","import { getEnvVariable } from \"../../../modules/environmentalList\"\r\n\r\nconst ViewProposedLandUse = {\r\n \"type\": \"popup\",\r\n \"key\": \"ViewProposedLandUse\",\r\n \"name\": \"ViewProposedLandUse\",\r\n anchor: 'right',\r\n open: false,\r\n aliases: {\r\n open: 'editOpen'\r\n },\r\n sharedValues: ['open'],\r\n container: {\r\n closepopup: true,\r\n closepopupval: 'proposedlanduse',\r\n \"addRoute\": true,\r\n 'removelayout': 'ViewProposedLandUse',\r\n values: { editInfo: null, edit: false, createduplicate: false, fullscreen: false, back: false, allgriddata: null, navigation: null },\r\n mapValues: {\r\n header: [\r\n { key: 'edit', name: 'edit' },\r\n { key: 'exitfullscreen', name: 'exitfullscreen' },\r\n { key: 'fullscreen', name: 'fullscreen' },\r\n { key: 'createduplicate', name: 'createduplicate' },\r\n { key: 'allgriddata', name: 'allgriddata' },\r\n ],\r\n ViewProposedLand: [\r\n { key: 'editInfo', name: 'editInfo' },\r\n { key: 'allgriddata', name: 'allgriddata' },\r\n { key: 'save', name: 'save' },\r\n { key: 'saveduplicate', name: 'saveduplicate' },\r\n { key: 'edit', name: 'edit' },\r\n { key: 'exitfullscreen', name: 'exitfullscreen' },\r\n { key: 'fullscreen', name: 'fullscreen' },\r\n { key: 'createduplicate', name: 'createduplicate' },\r\n { key: 'back', name: 'back' },\r\n { key: 'navigation', name: 'navigation' },]\r\n },\r\n // sharedValues: ['save', 'edit'],\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [{\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'header',\r\n type: 'div',\r\n className: 'col-12 ',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12',\r\n }\r\n }],\r\n\r\n },\r\n\r\n\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'ViewProposedLand',\r\n type: 'div',\r\n className: 'col-12 pl-4',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12 pl-4',\r\n }\r\n }],\r\n\r\n },\r\n ]\r\n },\r\n\r\n components: {\r\n header: {\r\n name: \"header\",\r\n type: 'header',\r\n title: 'Proposed Land Use',\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": \"View/Edit Proposed Land Use\", \"appendval\": \"UsageNotes\", \"materialicon\": \"landscape\", className: 'eps-breadcrumb-item ', class: 'text-light' },\r\n ]\r\n }\r\n ],\r\n layout: {},\r\n actions: [\r\n {\r\n type: 'icon',\r\n icon: 'back',\r\n name: 'back',\r\n hideon: 'back',\r\n hidevalue: false,\r\n title: 'Back'\r\n },\r\n\r\n {\r\n type: 'icon',\r\n icon: 'edit',\r\n name: 'edit',\r\n hideon: 'createduplicate',\r\n hideanother: 'edit',\r\n hidevalue: true,\r\n title: 'Edit Proposed Land Use'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'duplicate',\r\n name: 'createduplicate',\r\n hideon: 'edit',\r\n hideanother: 'createduplicate',\r\n hidevalue: true,\r\n title: 'Clone Proposed Land Use'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'save',\r\n name: 'save',\r\n hideon: 'edit',\r\n hidevalue: false,\r\n title: 'Save Proposed Land Use'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'save',\r\n name: 'saveduplicate',\r\n hideon: 'createduplicate',\r\n hidevalue: false,\r\n title: 'Save Proposed Land Use'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'previtem',\r\n name: 'previtem',\r\n hideon: 'previtem',\r\n hidevalue: false,\r\n title: 'Previous Item'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'nextitem',\r\n name: 'nextitem',\r\n hideon: 'nextitem',\r\n hidevalue: false,\r\n title: 'Next Item'\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'fullscreen',\r\n name: 'fullscreen',\r\n title: 'FullScreen',\r\n hidevalue: false,\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'exitfullscreen',\r\n name: 'exitfullscreen',\r\n hideon: 'fullscreen',\r\n title: 'Exit FullScreen',\r\n hidevalue: false\r\n },\r\n {\r\n type: 'icon',\r\n icon: 'history',\r\n name: 'history',\r\n title: 'History',\r\n hideon: 'history',\r\n hidevalue: false,\r\n historyurl: {\r\n title: \"Proposed Land Use History\",\r\n url: getEnvVariable('Application') + `/api/ProposedLandUse/history/{Id}?`,\r\n \"routeProps\": [{ name: \"id\", key: \"Id\", },],\r\n type: 'get',\r\n saveAs: { key: 'data' }\r\n }\r\n },\r\n\r\n ],\r\n\r\n\r\n },\r\n ViewProposedLand: {\r\n \"type\": \"form\",\r\n initRun: true,\r\n \"key\": \"ViewProposedLand\",\r\n \"name\": \"ViewProposedLand\",\r\n aliases: {\r\n 'editInfo': 'editInfo',\r\n 'allgriddata': 'allgriddata',\r\n 'navigateItem': 'navigateItem',\r\n 'edit': 'edit'\r\n },\r\n sharedValues: ['editInfo', 'allgriddata', 'navigateItem', 'navigation', 'edit', 'save', 'createduplicate', 'exitfullscreen', 'fullscreen', 'back'],\r\n validationMapKeys: [],\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'ProposedHeader',\r\n type: 'div',\r\n className: 'col-12',\r\n sub: {\r\n type: 'div',\r\n className: 'col-12',\r\n }\r\n }],\r\n\r\n },\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'UsageNotes',\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n }\r\n }],\r\n\r\n },\r\n\r\n {\r\n order: 1,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'LandUse',\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8'\r\n }\r\n },\r\n\r\n ]\r\n },\r\n {\r\n order: 2,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'Unit',\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8'\r\n }\r\n },\r\n\r\n ]\r\n },\r\n {\r\n order: 3,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'LandUseADT',\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8'\r\n }\r\n },]\r\n },\r\n {\r\n order: 4,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'Id',\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8'\r\n }\r\n },]\r\n },\r\n {\r\n order: 5,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'PropertyGroupID',\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-10 col-lg-8'\r\n }\r\n },]\r\n },\r\n {\r\n order: 6,\r\n type: 'div',\r\n className: 'row',\r\n components: [{\r\n name: 'CreatedOn',\r\n type: 'div',\r\n className: 'col-md-12 col-lg-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-12 col-lg-6'\r\n }\r\n },\r\n {\r\n name: 'CreatedByName',\r\n type: 'div',\r\n className: 'col-md-12 col-lg-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-12 col-lg-6'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n order: 7,\r\n type: 'div',\r\n className: 'row',\r\n components: [\r\n {\r\n name: 'UpdatedOn',\r\n type: 'div',\r\n className: 'col-md-12 col-lg-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-12 col-lg-6'\r\n }\r\n },\r\n {\r\n name: 'UpdatedByName',\r\n type: 'div',\r\n className: 'col-md-12 col-lg-6',\r\n sub: {\r\n type: 'div',\r\n className: 'col-md-12 col-lg-6'\r\n }\r\n },]\r\n },\r\n ]\r\n },\r\n values: {\r\n UsageNotes: '',\r\n LandUse: '',\r\n Unit: 0,\r\n LandUseADT: '',\r\n Id: '',\r\n PropertyGroupID: '',\r\n UpdatedByName: '',\r\n CreatedByName: '',\r\n UpdatedOn: '',\r\n CreatedOn: '',\r\n UpdatedBy: '',\r\n CreatedBy: '',\r\n editInfo: null,\r\n allgriddata: null,\r\n navigation: null,\r\n portal: getEnvVariable('AccessPortal') === 'E' ? 'N' : 'Y',\r\n ProposedHeader: ''\r\n },\r\n //doubt\r\n dataAttributes: {\r\n LandUse: {},\r\n\r\n },\r\n\r\n \"components\": {\r\n ProposedHeader: {\r\n \"type\": \"label\",\r\n \"key\": \"ProposedHeader\",\r\n \"label\": \"Proposed Land Use\",\r\n \"name\": \"ProposedHeader\",\r\n // disabled: true,\r\n changefieldto: \"label\",\r\n\r\n },\r\n UsageNotes: {\r\n \"type\": \"label\",\r\n \"key\": \"UsageNotes\",\r\n \"label\": \"Usage Notes\",\r\n \"name\": \"UsageNotes\",\r\n // disabled: true,\r\n changefieldto: \"textfield\",\r\n\r\n },\r\n LandUse: {\r\n \"type\": \"label\",\r\n \"key\": \"LandUse\",\r\n \"label\": \"Land Use \",\r\n \"name\": \"LandUse\",\r\n changefieldto: \"dropdown\",\r\n // disabled: true,\r\n\r\n extraProps: {\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Value',\r\n\r\n },\r\n dataAttributes: [\r\n {\r\n key: 'data-calculatedvalue',\r\n name: 'CalculatedValue'\r\n }\r\n ]\r\n }\r\n },\r\n Unit: {\r\n \"type\": \"label\",\r\n \"key\": \"unit\",\r\n \"label\": \"Unit Count\",\r\n name: \"Unit\",\r\n \"xtype\": \"number\",\r\n // disabled: true,\r\n changefieldto: \"textfield\",\r\n\r\n },\r\n LandUseADT: {\r\n \"type\": \"label\",\r\n \"key\": \"LandUseADT\",\r\n \"label\": \"Land Use ADT\",\r\n name: \"LandUseADT\",\r\n \"xtype\": \"number\",\r\n disabled: true,\r\n changefieldto: \"domainCalVal\",\r\n\r\n },\r\n Id: {\r\n \"type\": \"label\",\r\n \"key\": \"Id\",\r\n \"label\": \"Land Use ID\",\r\n name: \"Id\",\r\n disabled: true,\r\n changefieldto: \"textfield\"\r\n },\r\n PropertyGroupID: {\r\n \"type\": \"label\",\r\n \"key\": \"PropertyGroupID\",\r\n \"label\": \"Property Group ID\",\r\n name: \"PropertyGroupID\",\r\n //\"xtype\": \"number\",\r\n disabled: true,\r\n changefieldto: \"textfield\",\r\n\r\n },\r\n CreatedOn: {\r\n \"type\": \"label\",\r\n \"key\": \"CreatedOn\",\r\n \"label\": \"Created On\",\r\n name: \"CreatedOn\",\r\n\r\n changefieldto: \"label\",\r\n },\r\n CreatedByName: {\r\n \"type\": \"label\",\r\n \"key\": \"CreatedByName\",\r\n \"label\": \"Created By\",\r\n name: \"CreatedByName\",\r\n\r\n changefieldto: \"label\",\r\n },\r\n UpdatedOn: {\r\n \"type\": \"label\",\r\n \"key\": \"UpdatedOn\",\r\n \"label\": \"Updated On\",\r\n name: \"UpdatedOn\",\r\n\r\n changefieldto: \"label\",\r\n },\r\n UpdatedByName: {\r\n \"type\": \"label\",\r\n \"key\": \"UpdatedByName\",\r\n \"label\": \"Updated By\",\r\n name: \"UpdatedByName\",\r\n\r\n changefieldto: \"label\",\r\n },\r\n\r\n },\r\n mapActionsToEffects: {\r\n 'onLoad': {\r\n 'init': {\r\n rules: [{\r\n run:\r\n {\r\n valid: [\r\n { // add and edit\r\n type: 'load',\r\n name: 'LandUse',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin') + `/api/Domains/values?domainkey=PROPOSEDLANDUSE`,\r\n type: 'get',\r\n saveAs: {\r\n key: 'items'\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n type: 'load',\r\n name: 'LandUseADT',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Admin') + `/api/Domains/values?domainkey=PROPOSEDLANDUSE`,\r\n type: 'get',\r\n saveAs: {\r\n key: 'items'\r\n }\r\n }\r\n ]\r\n },\r\n\r\n {\r\n type: 'validations', //http://development.delasoft.com:8443/AMES-application/api/ProposedLandUse/5864/Add\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('Application') + `/api/ProjectMessages/RulesByName?name=modulemaster.proposedlanduse`,\r\n type: 'get'\r\n }\r\n ],\r\n transformProps: {\r\n removesubfieldname: 'AMESMODULEMASTER.EXISTINGLANDUSE_'\r\n }\r\n },\r\n {\r\n type: 'businessrules',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Application') + `/api/BusinessRules/Grid/modulemaster.proposedlanduse`,\r\n type: 'get',\r\n }\r\n ],\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n 'GLOBAL': {\r\n rules: [\r\n\r\n {\r\n canOverwrite: false,\r\n check: [\r\n {\r\n condition: \"AND\",\r\n rules: [\r\n { name: \"portal\", type: \"=\", value: \"N\", rules: [] },\r\n ]\r\n }\r\n ],\r\n fields: [\"Unit\"],\r\n ruleOrder: 0,\r\n run: {\r\n\r\n inValid: [\r\n { type: \"prop\", name: \"LandUseADT\", disabled: true, isVisible: true },\r\n { type: \"prop\", name: \"PropertyGroupID\", disabled: true, isVisible: true },\r\n { type: \"prop\", name: \"Id\", disabled: true, isVisible: true },\r\n ],\r\n // type: \"uncheck\",\r\n valid: [\r\n { type: \"prop\", name: \"LandUseADT\", disabled: true, isVisible: false },\r\n { type: \"prop\", name: \"PropertyGroupID\", disabled: true, isVisible: false },\r\n { type: \"prop\", name: \"Id\", disabled: true, isVisible: false },\r\n ],\r\n\r\n },\r\n uncheck: true\r\n },\r\n\r\n ]\r\n },\r\n },\r\n 'onChange': {\r\n 'navigation': {\r\n rules: [{\r\n run:\r\n {\r\n valid: [\r\n {\r\n type: 'initial', //http://development.delasoft.com:8443/AMES-application/api/ProposedLandUse/5864/Add\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Application') + `/api/ProposedLandUse/{routeid1}/proposedLandUse/{Id}`,\r\n key: 'save',\r\n \"matchProps\": [\r\n {\r\n name: \"routeid1\",\r\n key: \"routeid1\",\r\n },\r\n {\r\n name: \"navigation.Id\",\r\n key: \"Id\",\r\n }\r\n ],\r\n type: 'get',\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n 'edit': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'edit',\r\n\r\n },\r\n {\r\n type: 'loadValues',\r\n name: 'LandUse',\r\n loadtransformProps: {\r\n label: 'Name',\r\n value: 'Value',\r\n defaultCondition: 'IsDefault',\r\n checkDefaultValue: 'Y',\r\n savetype: 'update'\r\n },\r\n initialdataAttributes: {\r\n CalculatedValue: 'calculatedvalue',\r\n Value: 'value',\r\n }\r\n },\r\n\r\n ]\r\n }\r\n },\r\n\r\n ]\r\n },\r\n 'exitfullscreen': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'exitfullscreen',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'fullscreen': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'fullscreen',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'createduplicate': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'createduplicate',\r\n\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n\r\n 'GLOBAL': {\r\n rules: [\r\n // {\r\n // canOverwrite: false,\r\n // check: [\r\n // {\r\n // condition: \"AND\",\r\n // rules: [\r\n // { name: \"Unit\", type: \"is not null\", rules: [] },\r\n // { name: \"portal\", type: \"=\", value: 'Y', rules: [] },\r\n // { name: \"LandUse\", type: \"is not null\", rules: [] }\r\n // ]\r\n // }\r\n // ],\r\n // fields: [\"LandUse\", 'Unit'],\r\n // run: {\r\n // valid: [{\r\n // type: 'calculate',\r\n // name: 'LandUseADT',\r\n // attr: 'calculatedvalue',\r\n // operands: 'LandUse',\r\n // quotient: 'Unit',\r\n // operator: '*',\r\n // hasValue: true,\r\n // valueType: 'D',\r\n // isVisible: true,disabled:true\r\n\r\n // }],\r\n // inValid: [{\r\n // type: 'calculate',\r\n // name: 'LandUseADT',\r\n // attr: 'calculatedvalue',\r\n // operands: 'LandUse',\r\n // quotient: 'Unit',\r\n // operator: '*',\r\n // hasValue: true,\r\n // valueType: 'D',\r\n // isVisible: false,disabled:true\r\n\r\n // }\r\n // ]\r\n // },\r\n // },\r\n\r\n {\r\n canOverwrite: false,\r\n check: [\r\n {\r\n condition: \"AND\",\r\n rules: [\r\n { name: \"LandUse\", type: \">\", value: \"0\", rules: [] },\r\n { name: \"LandUse\", type: \"=\", value: \"20\", rules: [] },\r\n ]\r\n }\r\n ],\r\n fields: [\"LandUse\"],\r\n ruleOrder: 0,\r\n run: {\r\n\r\n inValid: [\r\n { type: \"prop\", name: \"Unit\", required: true, disabled: false },\r\n { type: \"prop\", name: \"UsageNotes\", required: false, disabled: false },\r\n\r\n ],\r\n // type: \"uncheck\",\r\n valid: [\r\n { type: \"prop\", name: \"Unit\", required: false, disabled: false },\r\n { type: \"prop\", name: \"UsageNotes\", required: true, disabled: false },\r\n\r\n ],\r\n\r\n },\r\n uncheck: true\r\n },\r\n ],\r\n fields: [\r\n 'Unit', 'LandUse'\r\n ]\r\n },\r\n\r\n },\r\n\r\n 'afterSave': {\r\n 'saveduplicate': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'save',\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('Application') + `/api/ProposedLandUse/{routeid1}/Add`,\r\n type: 'post',\r\n \"matchProps\": [{\r\n name: \"routeid1\",\r\n key: \"routeid1\",\r\n }]\r\n }\r\n ],\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'save': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'save',// http://development.delasoft.com:8443/AMES-application/api/Property/23123/Add\r\n \"read\": [\r\n {\r\n \"url\": getEnvVariable('Application') + `/api/ProposedLandUse/{routeid1}/Update/{Id}`,\r\n type: 'put',\r\n \"matchProps\": [{\r\n name: \"routeid1\",\r\n key: \"routeid1\",\r\n },\r\n {\r\n name: \"Id\",\r\n key: \"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\n }\r\n },\r\n\r\n }\r\n}\r\n\r\nexport default ViewProposedLandUse\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n// const ViewProposedLand = {\r\n// \"type\": \"form\",\r\n// \"key\": \"ViewProposedLand\",\r\n// \"name\": \"ViewProposedLand\",\r\n\r\n// layout: {\r\n// group: [\r\n// {\r\n// order: 0,\r\n// type: 'div',\r\n// className: 'row',\r\n// components: [{\r\n// name: 'TaxLotType',\r\n// type: 'div',\r\n// className: 'col-4',\r\n// sub: {\r\n// type: 'div',\r\n// className: 'col-4',\r\n// }\r\n// }],\r\n\r\n// },\r\n\r\n// {\r\n// order: 1,\r\n// type: 'div',\r\n// className: 'row',\r\n// components: [{\r\n// name: 'TownShip',\r\n// type: 'div',\r\n// className: 'col-2',\r\n// sub: {\r\n// type: 'div',\r\n// className: 'col-2'\r\n// }\r\n// },\r\n// {\r\n// name: 'Range',\r\n// type: 'div',\r\n// className: 'col-2',\r\n// sub: {\r\n// type: 'div',\r\n// className: 'col-2',\r\n// }\r\n// },\r\n// {\r\n// name: 'Section',\r\n// type: 'div',\r\n// className: 'col-2',\r\n// sub: {\r\n// type: 'div',\r\n// className: 'col-2'\r\n// }\r\n// },\r\n// {\r\n// name: 'ViewProposedLand',\r\n// type: 'div',\r\n// className: 'col-2',\r\n// sub: {\r\n// type: 'div',\r\n// className: 'col-2'\r\n// }\r\n// },]\r\n// },\r\n// {\r\n// order: 2,\r\n// type: 'div',\r\n// className: 'row',\r\n// components: [{\r\n// name: 'IsGivenEasement',\r\n// type: 'div',\r\n// className: 'col-2',\r\n// sub: {\r\n// type: 'div',\r\n// className: 'col-2'\r\n// }\r\n// },\r\n// {\r\n// name: 'IsSiteEasement',\r\n// type: 'div',\r\n// className: 'col-2',\r\n// sub: {\r\n// type: 'div',\r\n// className: 'col-2'\r\n// }\r\n// },\r\n// {\r\n// name: 'IsBoundaryCorrect',\r\n// type: 'div',\r\n// className: 'col-3',\r\n// sub: {\r\n// type: 'div',\r\n// className: 'col-3'\r\n// }\r\n// },]\r\n// },\r\n// ],\r\n// },\r\n// values: {\r\n// TaxLotType: '',\r\n// TownShip: '',\r\n// Range: '',\r\n// Section: '',\r\n// ViewProposedLand: '',\r\n// IsGivenEasement: '',\r\n// IsSiteEasement: '',\r\n// IsBoundaryCorrect: ''\r\n// },\r\n\r\n// \"components\": {\r\n// TaxLotType: {\r\n// \"type\": \"dropdown\",\r\n// \"key\": \"TaxLotType\",\r\n// \"label\": \"Requester Tax Lot Type\",\r\n// \"name\": \"TaxLotType\",\r\n// \"crud\": {\r\n// \"read\": {\r\n// \"get\": {\r\n// \"url\": getEnvVariable('Admin')+`/api/Domains/values?domainkey=REQUESTED_TAX_LOT_TYPE`\r\n// }\r\n// }\r\n// },\r\n// extraProps: {\r\n// transformProps: {\r\n// label: 'Name',\r\n// value: 'Value'\r\n// },\r\n// }\r\n// },\r\n// TownShip: {\r\n// \"type\": \"textfield\",\r\n// \"key\": \"TownShip\",\r\n// \"label\": \"TownShip\",\r\n// \"name\": \"TownShip\",\r\n// },\r\n// Range: {\r\n// \"type\": \"textfield\",\r\n// \"key\": \"Range\",\r\n// \"label\": \"Range\",\r\n// \"name\": \"Range\",\r\n// },\r\n// Section: {\r\n// \"type\": \"textfield\",\r\n// \"key\": \"Section\",\r\n// \"label\": \"Section\",\r\n// \"name\": \"Section\",\r\n// },\r\n// ViewProposedLand: {\r\n// \"type\": \"textfield\",\r\n// \"key\": \"ViewProposedLand\",\r\n// \"label\": \"ViewProposedLand\",\r\n// \"name\": \"ViewProposedLand\",\r\n// },\r\n// IsGivenEasement: {\r\n// \"type\": \"checkbox\",\r\n// \"key\": \"IsGivenEasement\",\r\n// \"label\": \"Give Easement\",\r\n// \"name\": \"IsGivenEasement\",\r\n// extraProps: {\r\n// transformProps: {\r\n// N: false,\r\n// Y: true,\r\n// 'true': 'Y',\r\n// 'false': 'N'\r\n// },\r\n// }\r\n// },\r\n// IsSiteEasement: {\r\n// \"type\": \"checkbox\",\r\n// \"key\": \"IsSiteEasement\",\r\n// \"label\": \"Site Easement\",\r\n// \"name\": \"IsSiteEasement\",\r\n// extraProps: {\r\n// transformProps: {\r\n// N: false,\r\n// Y: true,\r\n// 'true': 'Y',\r\n// 'false': 'N'\r\n// },\r\n// }\r\n// },\r\n// IsBoundaryCorrect: {\r\n// \"type\": \"checkbox\",\r\n// \"key\": \"IsBoundaryCorrect\",\r\n// \"label\": \"Boundary Correct\",\r\n// \"name\": \"IsBoundaryCorrect\",\r\n// extraProps: {\r\n// transformProps: {\r\n// N: false,\r\n// Y: true,\r\n// 'true': 'Y',\r\n// 'false': 'N'\r\n// },\r\n// }\r\n// },\r\n// },\r\n// mapActionsToEffects: {\r\n// init: {\r\n// rules: [{\r\n// run:\r\n// {\r\n// valid: [{\r\n// type: 'load',\r\n// name: 'TaxLotType',\r\n// \"read\": [\r\n// {\r\n// url: getEnvVariable('Admin')+`/api/Domains/values?domainkey=REQUESTED_TAX_LOT_TYPE`,\r\n// type: 'get',\r\n// saveAs: {\r\n// key: 'items'\r\n// }\r\n// }\r\n// ]\r\n// }\r\n// ]\r\n// }\r\n// }]\r\n// },\r\n// }\r\n// }\r\n\r\n// export default ViewProposedLand\r\n","import { getEnvVariable } from '../../../modules/environmentalList';\r\nimport ProposedLandUse from './newproposedlanduse';\r\nimport ViewProposedLandUse from './vieweditproposedlanduse';\r\nconst ProposedLandUseGrid = {\r\n \"title\": \"Proposed Land Use\",\r\n \"type\": \"grid\",\r\n \"key\": \"ProposedLandUseGrid\",\r\n \"gridkey\": 'ProposedLandUseGrid',\r\n \"name\": \"ProposedLandUseGrid\",\r\n \"addRoute\": true,\r\n \"routeParams\": { replace: 'proposedlanduse', param: 'Id', routeName: 'id' },\r\n \"hasreport\": true,\r\n values: {\r\n addOpen: false,\r\n editOpen: false,\r\n editInfo: null,\r\n allgriddata: null,\r\n reportOpen: false,\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null,\r\n load: false,\r\n navigateItem: null,\r\n navigation: null,\r\n },\r\n sharedValues: ['addOpen', 'editOpen', 'editInfo', 'allgriddata', 'navigateItem', 'navigation', 'loadreportfilter', 'ReportJsonQueryStr', 'reportOpen'],\r\n aliases: {\r\n addOpen: 'addOpen',\r\n editOpen: 'editOpen',\r\n editInfo: 'editInfo',\r\n navigateItem: 'navigateItem',\r\n allgriddata: 'allgriddata',\r\n navigation: 'navigation',\r\n reportOpen: 'reportOpen',\r\n loadreportfilter: 'loadreportfilter',\r\n ReportJsonQueryStr: 'ReportJsonQueryStr'\r\n },\r\n headerProps: {\r\n title: \"Proposed Land Use\",\r\n components: [\r\n // {\r\n // type: 'breadcrumbs',\r\n // items: [\r\n // {\r\n // \"link\": \"Proposed Land Use\", \"materialicon\": \"eject\", className: 'eps-breadcrumb-item ', class: 'text-light'\r\n // }\r\n // ],\r\n // }\r\n ],\r\n\r\n actions: [\r\n\r\n {\r\n type: 'fab',\r\n icon: 'clear',\r\n name: 'clear',\r\n color: 'primary',\r\n title: 'Clear Filters',\r\n menucolor: '#22a9b3',\r\n hideon: 'clear',\r\n hidevalue: false\r\n },\r\n\r\n {\r\n type: 'menu',\r\n icon: 'excel',\r\n name: 'excel',\r\n color: 'primary',\r\n title: 'Export to Excel',\r\n menucolor: '#c90685',\r\n hideon: 'excel',\r\n hidevalue: false,\r\n items: [{\r\n name: 'Export Current Page',\r\n action: 'filtercurrent'\r\n },\r\n {\r\n name: 'Export All Pages',\r\n action: 'filterall'\r\n }\r\n ]\r\n },\r\n // {\r\n // type: 'fab',\r\n // icon: 'reports',\r\n // name: 'reports',\r\n // color: 'primary',\r\n // title: 'Save Report',\r\n // menucolor: '#C85A54',\r\n // hideon: 'reports',\r\n // hidevalue: false\r\n // },\r\n {\r\n type: 'fab',\r\n icon: 'add',\r\n name: 'add',\r\n color: 'primary',\r\n hideon: 'addButton',\r\n hidevalue: true,\r\n title: 'Add Proposed Land Use',\r\n menucolor: '#36088a'\r\n },\r\n\r\n ]\r\n },\r\n \"columns\": [\r\n {\r\n \"title\": \"Land Use\",\r\n \"field\": \"LandUseDesc\",\r\n \"show\": true,\r\n \"width\": 180\r\n },\r\n {\r\n \"title\": \"Units\",\r\n \"field\": \"Unit\",\r\n \"show\": true,\r\n format: \"{0:n2}\",\r\n \"width\": 120,\r\n format: \"{0:n2}\",\r\n \"filter\": \"numeric\"\r\n },\r\n {\r\n \"title\": \"Land Use ADT\",\r\n \"field\": \"LandUseADT\",\r\n \"show\": getEnvVariable('AccessPortal') == 'E' ? false : true,\r\n \"width\": 220,\r\n format: \"{0:n2}\",\r\n \"filter\": \"numeric\"\r\n },\r\n {\r\n \"title\": \"Usage Note\",\r\n \"field\": \"UsageNotes\",\r\n \"show\": true,\r\n \"width\": 200\r\n },\r\n {\r\n \"title\": \"Created By\",\r\n \"field\": \"CreatedByName\",\r\n \"show\": true,\r\n \"width\": 185\r\n },\r\n {\r\n \"title\": \"Created On\",\r\n \"field\": \"CreatedOn\",\r\n \"show\": true,\r\n \"width\": 185,\r\n filter: \"date\",\r\n format: \"{0:d}\",\r\n convert: \"MM/DD/YYYY hh:mm:ss A\"\r\n },\r\n {\r\n \"title\": \"Updated By\",\r\n \"field\": \"UpdatedByName\",\r\n \"show\": true,\r\n \"width\": 185\r\n },\r\n {\r\n \"title\": \"Updated On\",\r\n \"field\": \"UpdatedOn\",\r\n \"show\": true,\r\n \"width\": 185,\r\n filter: \"date\",\r\n format: \"{0:d}\",\r\n convert: \"MM/DD/YYYY hh:mm:ss A\"\r\n },\r\n\r\n ],\r\n displayName: 'editInfo',\r\n allgriddata: 'allgriddata',\r\n navigateItem: 'navigateItem',\r\n navigation: 'navigation',\r\n loadreportfilter: 'loadreportfilter',\r\n ReportJsonQueryStr: 'ReportJsonQueryStr',\r\n navigateItem: 'navigateItem',\r\n mapActionsToEffects: {\r\n load: {\r\n rules: [{\r\n run: {\r\n valid: [{\r\n type: 'grid',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Application') + `/api/ProposedLandUse/{routeid1}/Grid?`,\r\n \"matchProps\": [{\r\n name: \"routeid1\",\r\n key: \"routeid1\",\r\n }],\r\n type: 'get',\r\n saveAs: {\r\n key: 'data'\r\n }\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n\r\n addOpen: {\r\n rules: [{\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"addOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n run: {\r\n valid: [{\r\n type: 'grid',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Application')+`/api/ProposedLandUse/{routeid1}/Grid?`,\r\n \"matchProps\": [{\r\n name: \"routeid1\",\r\n key: \"routeid1\",\r\n }],\r\n type: 'get',\r\n saveAs: {\r\n key: 'data'\r\n }\r\n }\r\n ]\r\n },\r\n ]\r\n\r\n }\r\n }]\r\n },\r\n editOpen: {\r\n rules: [{\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"editOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n run: {\r\n valid: [{\r\n type: 'grid',\r\n \"read\": [\r\n {\r\n url: getEnvVariable('Application') + `/api/ProposedLandUse/{routeid1}/Grid?`,\r\n \"matchProps\": [{\r\n name: \"routeid1\",\r\n key: \"routeid1\",\r\n }],\r\n type: 'get',\r\n saveAs: {\r\n key: 'data'\r\n }\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n }]\r\n },\r\n 'add': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'value',\r\n key: 'addOpen',\r\n result: true\r\n },\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'display': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'value',\r\n key: 'editOpen',\r\n result: true\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'editInfo',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'allgriddata',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'navigateItem',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'navigation',\r\n },\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'report': {\r\n rules: [\r\n {\r\n run: {\r\n valid: [\r\n {\r\n type: 'value',\r\n key: 'reportOpen',\r\n result: true\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'loadreportfilter',\r\n },\r\n {\r\n type: 'resultvalue',\r\n name: 'ReportJsonQueryStr',\r\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 ProposedLandUseReport = {\r\n type: 'popup',\r\n key: 'ProposedLandUseReport',\r\n name: 'ProposedLandUseReport',\r\n\r\n anchor: 'right',\r\n open: false,\r\n aliases: {\r\n open: 'reportOpen'\r\n },\r\n sharedValues: ['open', 'loadreportfilter', 'ReportJsonQueryStr'],\r\n container: {\r\n values: {\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null\r\n },\r\n mapValues: {\r\n Report: [\r\n {\r\n key: 'ReportJsonQueryStr',\r\n name: 'ReportJsonQueryStr'\r\n },\r\n {\r\n key: 'loadreportfilter',\r\n name: 'loadreportfilter'\r\n },\r\n ],\r\n },\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: '',\r\n components: [\r\n {\r\n name: 'Report'\r\n },\r\n ]\r\n }\r\n ]\r\n\r\n },\r\n components: {\r\n Report: {\r\n \"type\": \"form\",\r\n \"key\": \"Report\",\r\n \"name\": \"Report\",\r\n aliases: {\r\n\r\n },\r\n sharedValues: ['ReportJsonQueryStr', 'loadreportfilter'],\r\n values: {\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null\r\n },\r\n mapActionsToEffects: {},\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: '',\r\n components: [{\r\n name: 'ReportJsonQueryStr',\r\n type: 'div',\r\n\r\n },\r\n {\r\n name: 'loadreportfilter',\r\n type: 'div',\r\n\r\n }],\r\n\r\n },\r\n ],\r\n },\r\n \"components\": {\r\n \"ReportJsonQueryStr\": {\r\n \"type\": \"gridreport\",\r\n \"gridkey\": 'ProposedLandUseGrid',\r\n },\r\n },\r\n }\r\n }\r\n }\r\n}\r\n\r\nconst ProposedLandContainer = {\r\n type: 'container',\r\n key: 'proposedlandcontainer',\r\n values: {\r\n addOpen: false,\r\n editOpen: false,\r\n editInfo: null,\r\n allgriddata: null,\r\n navigateItem: null,\r\n navigation: null,\r\n loadreportfilter: null,\r\n ReportJsonQueryStr: null,\r\n reportOpen: false,\r\n },\r\n mapValues: {\r\n ProposedLandUse: [\r\n {\r\n key: 'addOpen',\r\n name: 'open'\r\n }\r\n ],\r\n ViewProposedLandUse: [\r\n {\r\n key: 'editOpen',\r\n name: 'open'\r\n },\r\n {\r\n key: 'editInfo',\r\n name: 'editInfo'\r\n },\r\n {\r\n key: 'navigateItem',\r\n name: 'navigateItem'\r\n },\r\n {\r\n key: 'allgriddata',\r\n name: 'allgriddata'\r\n },\r\n {\r\n key: 'navigation',\r\n name: 'navigation'\r\n },\r\n ],\r\n ProposedLandUseGrid: [\r\n {\r\n key: 'editOpen',\r\n name: 'editOpen'\r\n },\r\n {\r\n key: 'addOpen',\r\n name: 'addOpen'\r\n },\r\n {\r\n key: 'reportOpen',\r\n name: 'reportOpen'\r\n },\r\n {\r\n key: 'ReportJsonQueryStr',\r\n name: 'ReportJsonQueryStr'\r\n },\r\n {\r\n key: 'loadreportfilter',\r\n name: 'loadreportfilter'\r\n },\r\n ],\r\n ProposedLandUseReport: [\r\n {\r\n key: 'reportOpen',\r\n name: 'open'\r\n },\r\n {\r\n key: 'loadreportfilter',\r\n name: 'loadreportfilter'\r\n },\r\n {\r\n key: 'ReportJsonQueryStr',\r\n name: 'ReportJsonQueryStr'\r\n },\r\n\r\n ]\r\n },\r\n mapActionsToEffects: {\r\n 'addOpen': {\r\n rules: [\r\n {\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"addOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n uncheck: true,\r\n run: {\r\n valid: [\r\n // {\r\n // type: 'removelayout',\r\n // name: 'ProposedLandUse',\r\n // }\r\n\r\n ],\r\n inValid: [\r\n {\r\n type: 'addlayout',\r\n name: 'ProposedLandUse',\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'editOpen': {\r\n rules: [\r\n {\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"editOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n uncheck: true,\r\n run: {\r\n valid: [\r\n {\r\n type: 'removelayout',\r\n name: 'ViewProposedLandUse',\r\n }\r\n\r\n ],\r\n inValid: [\r\n {\r\n type: 'addlayout',\r\n name: 'ViewProposedLandUse',\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n 'reportOpen': {\r\n rules: [\r\n {\r\n check: [\r\n {\r\n condition: 'AND',\r\n rules: [\r\n {\r\n \"name\": \"reportOpen\",\r\n \"type\": \"!=\",\r\n \"value\": true,\r\n \"rules\": []\r\n }\r\n ]\r\n }\r\n ],\r\n uncheck: true,\r\n run: {\r\n valid: [\r\n // {\r\n // type: 'removelayout',\r\n // name: 'ProposedLandUseReport',\r\n // }\r\n\r\n ],\r\n inValid: [\r\n {\r\n type: 'addlayout',\r\n name: 'ProposedLandUseReport',\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n },\r\n layout: {\r\n group: [\r\n {\r\n order: 0,\r\n type: 'div',\r\n className: 'row',\r\n components: [\r\n {\r\n name: 'ProposedLandUseGrid'\r\n },\r\n // {\r\n // name: 'ProposedLandUse'\r\n // },\r\n // {\r\n // name: 'ViewProposedLandUse'\r\n // },\r\n ]\r\n }\r\n ]\r\n\r\n },\r\n components: {\r\n ProposedLandUseGrid: ProposedLandUseGrid,\r\n ProposedLandUse: ProposedLandUse,\r\n ViewProposedLandUse: ViewProposedLandUse,\r\n ProposedLandUseReport: ProposedLandUseReport\r\n }\r\n}\r\n\r\n\r\nexport default ProposedLandContainer\r\n","import React, { Fragment } from 'react';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport FormGroup from '@material-ui/core/FormGroup';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormHelperText from '@material-ui/core/FormHelperText'\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport Box from '@material-ui/core/Box';\r\nimport DefaultSettings from './settings';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n \"& .MuiTypography-body1\": {\r\n //color: 'rgba(0, 0, 0, 0.54)',\r\n fontSize: 12,\r\n fontWeight: 'bold'\r\n },\r\n \"& .MuiSvgIcon-root\": {\r\n height: '1 rem'\r\n },\r\n\r\n\r\n }\r\n}));\r\n\r\n\r\nconst defaults = {\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Value'\r\n }\r\n}\r\n\r\nexport default function CheckBox(props) {\r\n const { value, handleFieldValue, extraProps, shareProps, tooltip, contexthelp, required, className, disabled, error, ...otherProps } = props\r\n const { name, label, helperText, items, fullWidth, ...hiddenProps } = otherProps\r\n let { transformProps } = extraProps || {}\r\n transformProps = transformProps || defaults.transformProps\r\n let selecteditem = []\r\n let fieldval = (value === 'Y' || value === true) ? true : false;\r\n let fieldname = value ? (transformProps ? transformProps[value] : value) : false\r\n if (items && items.length > 0) {\r\n selecteditem = items && (items || []).filter((each) => {\r\n return (each[transformProps.value]) === value\r\n })\r\n fieldval = selecteditem && selecteditem.length > 0 && selecteditem[0].value || 'N'\r\n fieldname = selecteditem && selecteditem.length > 0 && selecteditem[0].name || false\r\n }\r\n const classes = useStyles();\r\n let tlabel = (tooltip || contexthelp) ? <div style={{ fontWeight: 'bold', color: props.errors ? 'red' : disabled ? disabled : 'black', fontSize: '0.8rem' }}> {label} < Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em', color: '#007bff' }} onClick={(evt) => contexthelp ?\r\n DefaultSettings.showDrawer(contexthelp) : evt.preventDefault()} />\r\n </Tooltip> </div> : label;\r\n return (\r\n <Box className={className}>\r\n <FormControl fullWidth={fullWidth ? fullWidth : false} error={error} required={required} className={classes.root}>\r\n <FormGroup >\r\n <FormControlLabel\r\n control={<Checkbox\r\n value={fieldval}\r\n checked={selecteditem && selecteditem.length > 0 ? (fieldname === 'true' || ((fieldname === 'Yes') ? true : false)) :\r\n (fieldname || ((fieldval === \"N\" || fieldval === false) ? false : true))}\r\n onChange={(evt) => {\r\n handleFieldValue({ target: { value: evt.target.value, name: name, checked: evt.target.checked }, currentTarget: { dataset: null } })\r\n }}\r\n name={name}\r\n color={disabled ? '' : 'primary'}\r\n className={classes.root}\r\n />\r\n }\r\n style={{\r\n //color: 'rgba(0, 0, 0, 0.54)',\r\n fontSize: 12\r\n }}\r\n label={tlabel}\r\n className={classes.root}\r\n disabled={disabled}\r\n {...hiddenProps}\r\n />\r\n\r\n </FormGroup >\r\n {helperText && <FormHelperText>{helperText}</FormHelperText>}\r\n </FormControl>\r\n </Box>\r\n )\r\n}","/**\r\n *********************************************************\r\n Description: Switch component.\r\n Required props: type, value\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\nimport React, { Component, Fragment } from 'react';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Switch from '@material-ui/core/Switch';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport FormHelperText from '@material-ui/core/FormHelperText'\r\nimport { green, red } from '@material-ui/core/colors';\r\nimport FormControl from '@material-ui/core/FormControl';\r\n\r\nconst styles = {\r\n root: {\r\n flexGrow: 1,\r\n },\r\n};\r\n\r\nconst GreenSwitch = withStyles({\r\n switchBase: {\r\n color: red[800],\r\n '&$checked': {\r\n color: green[700],\r\n },\r\n '&$checked + $track': {\r\n backgroundColor: green[700],\r\n },\r\n },\r\n checked: {},\r\n track: {},\r\n})(Switch);\r\n\r\nconst FormSwitch = (props) => {\r\n const { handleFieldValue, value, name, error, label, extraProps, disabled, edit, conditions, helperText, LabeltransformProps } = props;\r\n const {transformProps} = extraProps\r\n let disabledstatus = conditions && conditions.enable ? conditions.enable : disabled;\r\n const handlefieldchange = (e) => {\r\n const { name, checked } = e.target\r\n let value = transformProps[checked]\r\n const { dataset } = e.currentTarget;\r\n handleFieldValue({ target: { name: name, value: value, checked: checked }, currentTarget: { dataset: dataset } })\r\n }\r\n return (\r\n <Fragment>\r\n <FormControl required={props.required} error={error || false}>\r\n <FormControlLabel\r\n control={\r\n <GreenSwitch\r\n checked={value ? (transformProps ? transformProps[value] : value) : false}\r\n onChange={handlefieldchange}\r\n name={name}\r\n disabled={disabledstatus || false}\r\n />\r\n }\r\n label={<span style={{ fontSize: '12px' }}>{value ? (LabeltransformProps ? LabeltransformProps[value] : (label || '')) : label}</span>}\r\n />\r\n {helperText && <FormHelperText>{helperText}</FormHelperText>}\r\n </FormControl>\r\n </Fragment>\r\n );\r\n}\r\n\r\n\r\nexport default withStyles(styles)(FormSwitch);","import React, { Component } from 'react';\r\nimport { getEnvVariable } from '../../../modules/environmentalList';\r\nimport { GetData } from '../form/formsapi';\r\nimport Template from './index';\r\n\r\nclass CTemplate extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n mentions: [],\r\n noticetypementions: [],\r\n attachmentsmentions:[],\r\n sidebartablementions: [],\r\n loadtemplate: false,\r\n reports:[],\r\n reportsval:''\r\n }\r\n this.TemplateForm = React.createRef()\r\n }\r\n\r\n componentWillMount() {\r\n this.loadDropDownData();\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState, snapshot) {\r\n // Typical usage (don't forget to compare props):\r\n //console.log('template didupdate---------------', prevProps, prevState, this.state, this.props)\r\n if (this.props !== prevProps) {\r\n if (this.state.mentions !== prevState.mentions || this.props.templateId != prevProps.templateId)\r\n setTimeout(() => {\r\n this.loadDropDownData();\r\n }, 200)\r\n if (this.props.sideBarTables && Array.isArray(this.props.sideBarTables) && this.props.sideBarTables.length > 0 && this.props.isadmin && this.props.sideBarTables !== prevProps.sideBarTables) {\r\n this.loadSideBarTableColumns();\r\n }\r\n }\r\n }\r\n\r\n loadSideBarTableColumns() {\r\n const { moduleId, sitePermitTypeId } = this.props;\r\n let tables = this.props.sideBarTables\r\n let url = \"\"\r\n tables.forEach(element => {\r\n url = url + 'table=' + element.name + '&';\r\n });\r\n var sourceURL = getEnvVariable('Application') + \"/api/Application/Fields/\" + sitePermitTypeId + \"?\" + url;\r\n GetData(sourceURL, \"\").then(results => {\r\n if (results && results.length > 0) {\r\n this.setState({\r\n mentions: results //results.map(res => { return { label: res.Label } })\r\n })\r\n }\r\n })\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n getRecordsPromise_old(sourceURL, type) {\r\n return new Promise((resolve, reject) => {\r\n (GetData(sourceURL, \"\").then(results => {\r\n resolve(results)\r\n if (type == 'mentions') {\r\n if (results && results.length > 0) {\r\n this.setState({\r\n mentions: results\r\n }, () => { resolve(results) })\r\n }\r\n\r\n }\r\n else if (type == 'noticetypementions') {\r\n if (results && results.length > 0) {\r\n let mapresults = results.map(a => { return { Value: a.Name, Key: a.TemplateId } });\r\n this.setState({\r\n noticetypementions: mapresults\r\n })\r\n\r\n }\r\n }\r\n\r\n else if (type == 'attachmentsmentions'){\r\n if (results && results.length > 0){\r\n let mapattach = results.map(a => { return { Value: a.Name, Key: a.Id } });\r\n this.setState({\r\n attachmentsmentions: mapattach\r\n })\r\n }\r\n }\r\n\r\n }))\r\n })\r\n }\r\n\r\n\r\n GetDataPromise = (sourceURL) => {\r\n return new Promise((resolve, reject) => {\r\n GetData(sourceURL, \"\").then(results => {\r\n if (results)\r\n resolve(results)\r\n\r\n }).catch(ex => {\r\n resolve([])\r\n })\r\n })\r\n }\r\n\r\n loadDropDownData() {\r\n const { moduleId, sitePermitTypeId } = this.props;\r\n //console.log(sitePermitTypeId)\r\n //moduleId === 'APPLICATIONS' &&\r\n let arr = []\r\n if (sitePermitTypeId > 0) {\r\n var sourceURL = getEnvVariable('Application') + \"/api/Application/Fields/\" + sitePermitTypeId;\r\n var sourceURL1 = getEnvVariable('Admin') + `/api/NoticeTypes/all/${sitePermitTypeId}`;\r\n var sourceURL2 = getEnvVariable('Report') + `/api/Reports/All`;\r\n var sourceURL3 = getEnvVariable('Admin') + `/api/AttachmentType/All/Active`;\r\n\r\n arr.push(this.GetDataPromise(sourceURL))\r\n arr.push(this.GetDataPromise(sourceURL1))\r\n arr.push(this.GetDataPromise(sourceURL2))\r\n arr.push(this.GetDataPromise(sourceURL3))\r\n Promise.all(arr).then((values) => {\r\n if (Array.isArray(values)) {\r\n let mentionsval = values[0]\r\n let noticetypementionsval = values[1]\r\n let attachmentsVal = values[3]\r\n let allreports = values[2]\r\n let mapresults = noticetypementionsval.map(a => { return { Value: a.Name, Key: a.TemplateId } });\r\n let mapattach = attachmentsVal.map(a => { return { Value: a.Name, Key: a.Id } }); //TemplateId\r\n let reportsmapresults = allreports.map(a => { return { Value: a.Title, Key: a.Id } });\r\n this.setState({\r\n noticetypementions: mapresults, mentions: mentionsval, loadtemplate: true, reports: reportsmapresults, attachmentsmentions: mapattach\r\n })\r\n }\r\n });\r\n\r\n\r\n\r\n // arr.push(this.getRecordsPromise(sourceURL, 'mentions'))\r\n\r\n // arr.push(this.getRecordsPromise(sourceURL1, 'noticetypementions'))\r\n // Promise.all(arr).then((values) => {\r\n // console.log(values);\r\n // });\r\n\r\n } else if (moduleId === 'PERMITS' && sitePermitTypeId > 0) {\r\n var sourceURL = getEnvVariable('Permit') + \"/api/Permit/Fields/\" + sitePermitTypeId;\r\n arr.push(this.GetDataPromise(sourceURL1))\r\n\r\n GetData(sourceURL, \"\").then(results => {\r\n //console.log(results);\r\n if (results && results.length > 0) {\r\n this.setState({\r\n mentions: results, loadtemplate: true\r\n })\r\n }\r\n })\r\n }\r\n else {\r\n this.setState({\r\n loadtemplate: true,\r\n requiredProps: {\r\n ...this.state.requiredProps,\r\n mentions: []\r\n }\r\n })\r\n }\r\n }\r\n\r\n\r\n\r\n /*Dropdown values to be populating.*/\r\n //mentions = [{ 'key': 'name', 'value': 'name' }, { 'key': 'lname', 'value': 'lname' }]\r\n\r\n /*Pass this data only you required to replace the content.*/\r\n /*entryData = {\r\n name: 'I am first name',\r\n lname: 'Im last ....'\r\n };*\r\n\r\n\r\n /*This is your call back. Recive the response after saving/updating the data*/\r\n callBack = (data) => {\r\n console.log(data)\r\n this.setState({ save: false }, () => {\r\n this.props.handleTemplateId(data);\r\n })\r\n }\r\n\r\n\r\n\r\n\r\n /**\r\n * mentions: Dropdown valus for the editor. If not required pass this as null\r\n * isAdmin: When saving the notice from administration. Parentid prop will be 0 for this.\r\n * id: Pass the load the data. Default value 0 loads the empty editor.\r\n * parentid: If passed, loads the existing data based on the passing value.\r\n * callBack: All the responses will be returned here.\r\n * entryData: This is the replacing data. Its an object.\r\n * isEnabled: enables the document\r\n * canDownload: Download options availble for the user.\r\n * hasSubject: If subject text box is required, true.\r\n * subject: subject text\r\n *\r\n * */\r\n\r\n\r\n saveTemplate = () => {\r\n this.setState({ save: true })\r\n }\r\n\r\n GetTemplateFormats = () => {\r\n this.setState({ templateFormats: true })\r\n }\r\n\r\n setSubject = (data) => {\r\n this.setState({ subject: data.subject })\r\n }\r\n\r\n\r\n setAttachment = (data) => {\r\n this.setState({ attachments: data.attachments })\r\n }\r\n setReportsVal = (data) => {\r\n this.setState({ reportsval: data.reportsval })\r\n }\r\n\r\n render() {\r\n let parentFields = this.props.fields || []\r\n if (this.state.mentions && this.state.mentions.length > 0) {\r\n let tempmentions = this.state.mentions.map(res => { return { name: res.Value, label: res.Label } })\r\n parentFields = [...parentFields, ...tempmentions]\r\n }\r\n return (\r\n this.state.loadtemplate && <Template ref={this.TemplateForm}\r\n mentions={this.state.mentions}\r\n isAdmin={this.props.isadmin}\r\n id={this.props.templateId || 0}\r\n parentid={this.props.parentid || 0}\r\n callBack={(data) => { this.callBack(data) }}\r\n entryData={this.props.entryData || null}\r\n isEnabled={this.props.isEnabled == false ? false : true}\r\n canDownload={true}\r\n hasSubject={this.props.hasSubject || false}\r\n save={this.state.save || false}\r\n showhistory={this.props.showHistory}\r\n templateFormats={this.state.templateFormats}\r\n //hasSubject={(this.props.isadmin === true && this.props.isEnabled === true) ? true : false}\r\n hideattachments={this.props.hideAttachments || false}\r\n templateFormatsCallBack={this.props.templateFormatsCallBack}\r\n noticetypementions={this.state.noticetypementions}\r\n //attachments={this.state.attachmentsmentions}\r\n fields={parentFields || []}//{parentFields.push(this.state.mentions) || []}\r\n setSubject={this.setSubject}\r\n setAttachment={this.setAttachment}\r\n subject={this.state.subject}\r\n attachments={this.state.attachmentsmentions}\r\n fullheight={this.props.fullheight}\r\n disabled={this.props.disabled}\r\n reports={this.state.reports}\r\n showReports={true}\r\n reportsval = {this.state.reportsval}\r\n setReportsVal = {this.setReportsVal}\r\n refId={this.props.refId}\r\n refType={this.props.refType}\r\n />\r\n\r\n );\r\n }\r\n\r\n componentDidCatch(error, info) {\r\n console.log(error);\r\n }\r\n}\r\n\r\nexport default CTemplate;","/**\r\n *********************************************************\r\n Description: handles the request to getdata, post data or put data from the service.\r\n Required props: url is required for all the functions.\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\n\r\nimport axios from \"axios\";\r\nimport { getToken, GetFetchProps } from \"../header\";\r\n\r\n\r\n\r\nexport const GetData = (url, queryval) =>\r\n fetch(`${url + queryval}`, {\r\n method: 'GET',\r\n ...GetFetchProps()\r\n })\r\n .then(response => {\r\n if (response.ok) {\r\n return response.json()\r\n }\r\n else {\r\n throw response.json();\r\n }\r\n })\r\n\r\n\r\nexport const PostData = (url, bodyval) => {\r\n return fetch((`${url}`), {\r\n method: 'POST',\r\n ...GetFetchProps(),\r\n body: JSON.stringify(bodyval)\r\n\r\n }).then(response => {\r\n if (response.ok) { console.log('ok response', response); return response.json() }\r\n else {\r\n throw response.json();\r\n }\r\n //return response.json()\r\n })\r\n}\r\n\r\nexport const PostDataNoBody = (url) => {\r\n return fetch((`${url}`), {\r\n method: 'POST',\r\n ...GetFetchProps(),\r\n }).then(response => {\r\n if (response.ok) { console.log('ok response', response); return response.json() }\r\n else {\r\n throw response.json();\r\n }\r\n //return response.json()\r\n })\r\n}\r\n\r\nexport const PostFormData = (url, bodyval) => {\r\n let formData = new URLSearchParams();\r\n const bodyvalkeys = Object.keys(bodyval)\r\n bodyvalkeys.forEach(each => {\r\n formData.set(each, bodyval[each])\r\n })\r\n\r\n return fetch((`${url}`), {\r\n method: 'POST',\r\n ...GetFetchProps(),\r\n body: formData\r\n\r\n }).then(response => {\r\n if (response.ok) { console.log('ok response', response); return response.json() }\r\n else {\r\n throw response.json();\r\n }\r\n //return response.json()\r\n })\r\n}\r\n\r\nexport const PutData = (url, bodyval) => {\r\n if (bodyval) {\r\n return fetch((`${url}`), {\r\n method: 'PUT',\r\n ...GetFetchProps(),\r\n body: JSON.stringify(bodyval)\r\n\r\n }).then(response => {\r\n if (response.ok) { console.log('ok response', response); return response.json() }\r\n else {\r\n throw response.json();\r\n }\r\n //return response.json()\r\n })\r\n }\r\n else {\r\n return fetch((`${url}`), {\r\n method: 'PUT',\r\n ...GetFetchProps(),\r\n body: {}\r\n\r\n }).then(response => {\r\n if (response.ok) { console.log('ok response', response); return response.json() }\r\n else {\r\n throw response.json();\r\n }\r\n //return response.json()\r\n })\r\n }\r\n // else {\r\n // return fetch((`${url}`), {\r\n // method: 'PUT',\r\n // headers: {\r\n // //'Content-Type': 'application/x-www-form-urlencoded',\r\n // 'Authorization': token || '',\r\n //\r\n // }\r\n\r\n // }).then(response => response.json()).catch(res => res)\r\n // }\r\n\r\n}\r\n\r\nexport const PutFormData = (url, bodyval) => {\r\n let formData = new URLSearchParams();\r\n const bodyvalkeys = bodyval && Object.keys(bodyval)\r\n bodyvalkeys && bodyvalkeys.forEach(each => {\r\n formData.set(each, JSON.stringify(bodyval[each]))\r\n })\r\n if (bodyval) {\r\n return fetch((`${url}`), {\r\n method: 'PUT',\r\n ...GetFetchProps(),\r\n body: JSON.stringify(bodyval)\r\n\r\n }).then(response => {\r\n if (response.ok) { console.log('ok response', response); return response.json() }\r\n else {\r\n throw response.json();\r\n }\r\n //return response.json()\r\n })\r\n }\r\n else {\r\n return fetch((`${url}`), {\r\n method: 'PUT',\r\n ...GetFetchProps(),\r\n body: {}\r\n\r\n }).then(response => {\r\n if (response.ok) { console.log('ok response', response); return response.json() }\r\n else {\r\n throw response.json();\r\n }\r\n //return response.json()\r\n })\r\n }\r\n // else {\r\n // return fetch((`${url}`), {\r\n // method: 'PUT',\r\n // headers: {\r\n // //'Content-Type': 'application/x-www-form-urlencoded',\r\n // 'Authorization': token || '',\r\n //\r\n // }\r\n\r\n // }).then(response => response.json()).catch(res => res)\r\n // }\r\n\r\n}\r\n// export const UpdateRecord = (route, record) => {\r\n// return axios.put(`${api}/${route}`, record, {\r\n// headers: {\r\n// 'Content-Type': 'application/json'\r\n// }\r\n// }).then(res => res.data).catch(ex => { throw ex })\r\n// }\r\n\r\nexport const DeleteRecord = (url, queryval) =>\r\n fetch(`${url + queryval}`, {\r\n method: 'DELETE',\r\n ...GetFetchProps(),\r\n }).then(response => {\r\n if (response.ok) {\r\n return response.json()\r\n }\r\n else {\r\n throw response.json();\r\n }\r\n })\r\n","import { getEnvVariable } from \"../../modules/environmentalList\"\r\n\r\nconst newsavedreportstypes = {\r\n \"type\": \"formcontainer\",\r\n \"key\": \"reporttypesnewform\",\r\n \"options\": {\r\n \"totalcolumns\": 2,\r\n \"totalrows\": 4,\r\n \"alignitem\": \"center\",\r\n \"name\": \"savedreport\",\r\n \"title\": \"Save Report\",\r\n\r\n \"crud\": {\r\n \"update\": {\r\n \"post\": {\r\n \"url\": getEnvVariable('Admin')+`/api/reportType/Add`,\r\n \"newroute\": {\r\n \"route\": \"/Administration/reporttypes\",\r\n \"matchProps\": {\r\n \"value\": \"Id\"\r\n }\r\n }\r\n }\r\n }\r\n },\r\n \"validations\": {\r\n get: {\r\n \"url\": getEnvVariable('Admin')+`/api/ProjectMessages/RulesByName?name=Module.reports`\r\n },\r\n transformProps: {\r\n name: 'Key',\r\n subfieldname: getEnvVariable('ModuleKey')+'MODULE.REPORTS_'\r\n }\r\n\r\n }\r\n },\r\n \"components\": [\r\n // {\r\n // \"type\": \"formdropdown\",\r\n // \"key\": \"sitepermitsite\",\r\n // \"options\": {\r\n // \"row\": 0,\r\n // \"col\": 0,\r\n // \"width\": 12,\r\n // \"label\": \"Report Group\",\r\n // \"name\": \"MasterId\",\r\n // crud: {\r\n // read: {\r\n // get: {\r\n // url: getEnvVariable('Report')+`/ReportMaster/All`,\r\n\r\n // }\r\n // }\r\n // },\r\n // defaultValue: 7,\r\n // \"transformProps\": {\r\n // \"value\": \"Id\",\r\n // \"name\": \"Name\"\r\n // }, \"disabled\": true,\r\n // conditions: {\r\n // enable: true,\r\n // }\r\n // }\r\n // },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"reporttypename\",\r\n \"options\": {\r\n \"row\": 1,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"label\": \"Report Name\",\r\n \"name\": \"Name\",\r\n required: true\r\n }\r\n },\r\n // {\r\n // \"type\": \"formtextbox\",\r\n // \"key\": \"reporttypKey\",\r\n // \"options\": {\r\n // \"row\": 1,\r\n // \"col\": 0,\r\n // \"width\": 12,\r\n // \"label\": \"Key\",\r\n // \"name\": \"Key\"\r\n // }\r\n // },\r\n\r\n // {\r\n // \"type\": \"formtextbox\",\r\n // \"key\": \"templateTitle\",\r\n // \"options\": {\r\n // \"row\": 2,\r\n // \"col\": 0,\r\n // \"width\": 12,\r\n // \"label\": \"Title\",\r\n // \"name\": \"Title\"\r\n // }\r\n // },\r\n\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"description\",\r\n \"options\": {\r\n \"row\": 2,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"label\": \"Description\",\r\n \"name\": \"Description\",\r\n \"multiline\": true\r\n }\r\n },\r\n // {\r\n // \"type\": \"formtextbox\",\r\n // \"key\": \"templateJsonQuery\",\r\n // \"options\": {\r\n // \"row\": 4,\r\n // \"col\": 0,\r\n // \"width\": 12,\r\n // \"label\": \"ReportJsonQueryStr\",\r\n // \"name\": \"ReportJsonQueryStr\",\r\n // \"multiline\": true\r\n // }\r\n // },\r\n // {\r\n // \"type\": \"formswitch\",\r\n // \"key\": \"reportwitch\",\r\n // \"options\": {\r\n // \"row\": 5,\r\n // \"col\": 0,\r\n // \"width\": 12,\r\n // \"label\": \"Status\",\r\n // \"name\": \"Status\",\r\n // initialvalue: 'I',\r\n // \"transformProps\": {\r\n // \"A\": true,\r\n // \"I\": false,\r\n // \"true\": \"A\",\r\n // \"false\": \"I\"\r\n // }\r\n // }\r\n // }\r\n ]\r\n}\r\n\r\nexport default newsavedreportstypes","export default class DefaultSettings {\r\n\r\n static drawer = null;\r\n static loader = null;\r\n static alert = null;\r\n static notice = null;\r\n static confirmation = null;\r\n\r\n static setLoader(item) {\r\n this.loader = item\r\n }\r\n\r\n static getLoader() {\r\n return this.loader;\r\n }\r\n\r\n static setAlert(item) {\r\n this.alert = item\r\n }\r\n\r\n static setConfirmation(item) {\r\n this.confirmation = item\r\n }\r\n\r\n\r\n static getAlert() {\r\n return this.alert;\r\n }\r\n\r\n static setDrawer(element) {\r\n this.drawer = element\r\n }\r\n\r\n static showDrawer(url) {\r\n if (this.drawer !== null) {\r\n this.drawer.opendrawer(url)\r\n }\r\n }\r\n static showAlert(message, variant) {\r\n if (this.alert !== null) {\r\n this.alert.show(message, variant);\r\n }\r\n }\r\n\r\n static setNotices(item) {\r\n this.notice = item\r\n }\r\n\r\n static showNotice(id, isAuto, values, info) {\r\n if (this.notice !== null) {\r\n console.log(id, isAuto, values)\r\n this.notice.openNotice(id, isAuto, values, info)\r\n }\r\n }\r\n\r\n static showNotify(notify, isAuto, values, info) {\r\n if (this.notice !== null) {\r\n this.notice.openNotification(notify, isAuto, values, info)\r\n }\r\n }\r\n\r\n static displayConfirmation(message) {\r\n if (this.confirmation !== null) {\r\n this.confirmation.show(message);\r\n }\r\n }\r\n\r\n}","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Button from '@material-ui/core/Button';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport DynamicFeedIcon from '@material-ui/icons/DynamicFeed';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n container: {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n },\r\n\r\n formControl: {\r\n margin: theme.spacing(1),\r\n minWidth: 120,\r\n maxWidth: 300,\r\n },\r\n\r\n}));\r\n\r\nexport default function DialogSelect(props) {\r\n const [anchorEl, setAnchorEl] = React.useState(props.open);\r\n const open = Boolean(anchorEl);\r\n let arr = (props.sidebaritemsinfo && props.sidebaritemsinfo.options.items) || []\r\n let checkboxitems = arr.map(x => x.key);\r\n let obj = {}\r\n for (const element of checkboxitems) {\r\n obj[element] = \"N\"\r\n }\r\n const [cloneitems, setCloneItems] = React.useState(obj);\r\n\r\n const handleChange = (event) => {\r\n setCloneItems({ ...cloneitems, [event.target.name]: event.target.checked == true ? \"Y\" : \"N\" });\r\n };\r\n\r\n const handleClick = (event) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const handleOk = () => {\r\n setAnchorEl(null);\r\n props.onClick(cloneitems)\r\n }\r\n\r\n const ITEM_HEIGHT = 48;\r\n\r\n if (props.onClick !== \"hidedisplay\") {\r\n return (\r\n <div>\r\n <IconButton\r\n aria-label=\"more\"\r\n aria-controls=\"long-menu\"\r\n aria-haspopup=\"true\"\r\n onClick={handleClick}\r\n color={\"inherit\"}\r\n >\r\n <DynamicFeedIcon fontSize=\"small\" />\r\n </IconButton>\r\n <Menu\r\n id=\"long-menu\"\r\n anchorEl={anchorEl}\r\n disableBackdropClick\r\n keepMounted\r\n open={open}\r\n onClose={handleClose}\r\n PaperProps={{\r\n style: {\r\n maxHeight: ITEM_HEIGHT * 4.5,\r\n width: '20ch',\r\n },\r\n }}\r\n >\r\n <Button onClick={handleClose} color=\"primary\">\r\n Cancel\r\n </Button>\r\n <Button onClick={handleOk} color=\"primary\">\r\n Ok\r\n </Button>\r\n {arr.map(each => {\r\n return (\r\n <FormControlLabel className=\"pt-2\"\r\n control={<Checkbox checked={cloneitems[each.key] == \"N\" ? false : true} onChange={handleChange} name={each.key} />}\r\n label={<span style={{ fontSize: '14px' }}>{each.title}</span>}\r\n />\r\n )\r\n })}\r\n </Menu>\r\n </div>\r\n );\r\n }\r\n else {\r\n return null\r\n }\r\n}\r\n","/**\r\n *********************************************************\r\n Description: Date and Time component. The value this component receives is in\r\n MM/DD/YYYY hh:mm:ss format which needs to be converted.Format required by the component is YYYY-MM-DDThh:mm. Moment is used to convert to this format.\r\n Required props: type,value.\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\n\r\nimport React, { Fragment, Component } from 'react';\r\nimport moment from 'moment';\r\nimport { DateTimePicker, KeyboardDatePicker, KeyboardDateTimePicker, MuiPickersUtilsProvider } from \"@material-ui/pickers\";\r\nimport MomentUtils from '@date-io/moment';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { useState } from 'react';\r\nimport { useEffect } from 'react';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n \"& label\": {\r\n color: \"white\"\r\n },\r\n \"& .MuiInput-underline:before\": {\r\n borderBottomColor: \"white\"\r\n },\r\n \"& .MuiInput-underline:after\": {\r\n borderBottomColor: \"white\"\r\n },\r\n \"& .MuiInputBase-input\": {\r\n color: \"white\",\r\n fontSize: 11\r\n },\r\n \"& .MuiInputBase-root\": {\r\n color: \"white\",\r\n fontSize: 11\r\n },\r\n \"& .MuiIconButton-root\": {\r\n color: \"white\",\r\n },\r\n \"& .MuiFormLabel-root\": {\r\n color: \"white\",\r\n fontSize: 11\r\n },\r\n \"& .MuiSvgIcon-root\": {\r\n color: \"white\",\r\n fontSize: 16\r\n },\r\n \"& .MuiInput-formControl\": {\r\n marginTop: 4\r\n }\r\n\r\n }\r\n}));\r\n\r\nexport default function DateTimePickerComp(props) {\r\n const classes = useStyles();\r\n const { value, handleFieldValue, name, extraProps, shareProps, ...otherProps } = props\r\n const { label, xtype, fullWidth, tooltip, FieldProps, onAsOfDateChanged, HeaderFieldProps, ...otherConfigs } = otherProps;\r\n let val = ((value === null) || (value === undefined) || (value === '')) ? '' : value;\r\n val = val ? moment(val).format('MM/DD/YYYY hh:mm:ss') : '';\r\n const [range, setRange] = useState({})\r\n const [reload, setReload] = useState(false)\r\n\r\n let currentDate = false;\r\n let passDate = false;\r\n let futureDate = false;\r\n let fieldprops = null;\r\n let headerfieldprops = HeaderFieldProps || null;\r\n\r\n if (FieldProps) {\r\n fieldprops = JSON.parse(FieldProps)\r\n currentDate = fieldprops['CurrentDefaultDate'];\r\n if (currentDate && value === '') {\r\n val = new Date()\r\n }\r\n if (fieldprops['AllowDate'] === 'CD') {\r\n passDate = true;\r\n futureDate = true;\r\n }\r\n else if (fieldprops['AllowDate'] === 'PD') {\r\n passDate = false;\r\n futureDate = true;\r\n }\r\n else if (fieldprops['AllowDate'] === 'FD') {\r\n passDate = true;\r\n futureDate = false;\r\n }\r\n }\r\n else if (headerfieldprops) {\r\n if (headerfieldprops['AllowDate'] === 'PD') {\r\n passDate = false;\r\n futureDate = true;\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (passDate) {\r\n range['maxDate'] = (val === '' ? new Date() : new Date(val))\r\n setRange(range)\r\n setReload(!reload)\r\n }\r\n else if (futureDate) {\r\n range['minDate'] = (val === '' ? new Date() : new Date(val));\r\n setRange(range)\r\n setReload(!reload)\r\n }\r\n }, [])\r\n\r\n let tlabel = tooltip ? <Fragment> {label} < Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em' }} />\r\n </Tooltip> </Fragment> : label;\r\n if(handleFieldValue === \"hidedisplay\") {\r\n return null\r\n }\r\n else {\r\n return (\r\n <div className={name}>\r\n <MuiPickersUtilsProvider utils={MomentUtils}>\r\n <KeyboardDateTimePicker\r\n cancelLabel=\"Cancel\"\r\n okLabel=\"OK\"\r\n disableToolbar\r\n variant=\"dialog\"\r\n //color='inherit'\r\n ampm={false}\r\n value={((val === '') ? new Date() : val) || null} //currentDate\r\n disablePast={passDate}\r\n disableFuture={futureDate}\r\n onChange={(e) => handleFieldValue(e)}\r\n label={tlabel}\r\n name={name}\r\n {...range}\r\n {...otherConfigs}\r\n {...extraProps}\r\n format=\"MM/DD/YYYY hh:mm:ss\"\r\n className={classes.root}\r\n />\r\n </MuiPickersUtilsProvider>\r\n </div>\r\n )\r\n }\r\n}","import { AppBar, Toolbar } from \"@material-ui/core\"\r\nimport Typography from '@material-ui/core/Typography'\r\nimport withWidth from '@material-ui/core/withWidth'\r\nimport React, { Fragment } from \"react\"\r\nimport { withRouter } from 'react-router-dom'\r\nimport LeftSideBar from '../../../custommodules/newentrancepermit/applicationdrawer'\r\nimport { ExternalApplicationSidebar } from '../../../json/newapplication/externalapplicationsidebar'\r\nimport { NewApplicationSidebar } from '../../../json/newapplication/newapplicationsidebar'\r\nimport { getEnvVariable } from '../../../modules/environmentalList'\r\nimport CloneItems from \"../components/cloneitemspopup\"\r\nimport DateTimePicker from './custom/datetimepicker'\r\nimport BreadCrumb from './breadcrumbs'\r\nimport Button from './buttons'\r\nimport Icon from './icons'\r\nimport Text from './text'\r\nimport Fab from './fab'\r\nconst _ = require('lodash');\r\n\r\nconst fieldTypes = {\r\n breadcrumbs: BreadCrumb,\r\n text: Text,\r\n icon: Icon,\r\n button: Button,\r\n datetime: DateTimePicker,\r\n clonemenu: CloneItems,\r\n fab: Fab\r\n}\r\n\r\nconst expressionFormats = {\r\n appendslash: \"${label} : ${value} /\",\r\n default: \"${label} : ${value}\",\r\n beforeslash: \"/ ${label} : ${value}\"\r\n}\r\n\r\nconst Header = ((props) => {\r\n const { components, labelitems, actions, addOnsByName, buttons, sharedProps, hassidebartabs, style, fieldValues, fieldProps = {} } = props\r\n let openMenuDisplay = (props.width === \"sm\" || props.width === \"xs\") ? false : true\r\n const [openMenu, setOpenMenu] = React.useState(openMenuDisplay);\r\n let type = props && props.accessPermissions ? (props.accessPermissions.configType == 'S' ? props.accessPermissions.moduleSiteAccess : props.accessPermissions.configType == 'R' ? props.accessPermissions.moduleRegionAccess : props.accessPermissions.moduleDistrictAccess) : null\r\n let roleaccess = props.accessPermissions && type ?\r\n Object.values(type).includes('Add') ? 'CanAdd' :\r\n Object.values(type).includes('Update') ? 'CanEdit' :\r\n Object.values(type).includes('Read') ? 'CanRead' : 'CanAdd' : 'CanAdd'\r\n let portal = props.accessPermissions ? props.accessPermissions.portal : null\r\n let isAdmin = props.accessPermissions && props.accessPermissions.isAdmin ? props.accessPermissions.isAdmin : 'N' \r\n let canAdd = isAdmin == 'Y' ? true : (!roleaccess || !portal) ? true : portal === \"I\" && roleaccess === \"CanAdd\" ? true : (portal === \"E\") ? true : false\r\n let canEdit = isAdmin == 'Y' ? true : (!roleaccess || !portal) ? true : portal === \"I\" && roleaccess === \"CanEdit\" ? true : (portal === \"E\") ? true : false\r\n let canRead = (!roleaccess || !portal) ? true : portal === \"I\" && roleaccess === \"CanRead\" ? true : (portal === \"E\") ? true : false\r\n React.useEffect(() => {\r\n setOpenMenu(openMenuDisplay);\r\n }, [props.width]);\r\n\r\n\r\n const handleBreadcrumbMenu = event => {\r\n // setMobileBreadcrumbAnchorEl(event.currentTarget); --correct: ununsed assignemnt\r\n // setOpenMenuList(true) --correct: ununsed assignemnt\r\n };\r\n\r\n if (!openMenu) {\r\n return (\r\n <Fragment>\r\n <AppBar position=\"sticky\" color={style ? '' : 'secondary'} style={style} elevation={0}>\r\n <Toolbar variant=\"dense\" >\r\n <div className=\"col-sm-12 col-xs-12 m-1 grid-actions\">\r\n <div className=\"col row\">\r\n {components && components.map(each => {\r\n const { type, name, items, ...otherProps } = each\r\n const EachComp = fieldTypes[type]\r\n let arr = items ? _.chunk(items, _.findLastIndex(items)) : null\r\n if (type === 'breadcrumbs' && arr && arr.length > 1) {\r\n return (\r\n <div className=\"row col-sm-11 pl-1 breadcrumbs\">\r\n <EachComp items={arr[1]} {...addOnsByName[name]} handleBreadcrumbMenu={handleBreadcrumbMenu} moreicon={true} fieldValues={fieldValues} fieldProps={fieldProps}\r\n sharedProps={sharedProps} />\r\n </div>\r\n )\r\n }\r\n else return <div><EachComp fieldProps={fieldProps} items={items} {...addOnsByName[name]} sharedProps={sharedProps} fieldValues={fieldValues} /></div>\r\n })}\r\n <div className='flex-grow-1' />\r\n {labelitems && labelitems[0].items.map(each => {\r\n const { name, value, customname } = each\r\n if (props && props[value] && addOnsByName[value]) {\r\n if (customname) {\r\n let ExpressionType = each.exptype ? expressionFormats[each.exptype] : expressionFormats['default']\r\n let labelreplace = ExpressionType.replace(\"${label}\", props[name]);\r\n let valuereplace = labelreplace.replace(\"${value}\", props[value]);\r\n return <Typography variant=\"body2\" gutterBottom>{valuereplace} </Typography>\r\n }\r\n else {\r\n let ExpressionType = each.exptype ? expressionFormats[each.exptype] : expressionFormats['default']\r\n let labelreplace = ExpressionType.replace(\"${label}\", name);\r\n let valuereplace = labelreplace.replace(\"${value}\", props[value]);\r\n return <Typography variant=\"body2\" gutterBottom>{valuereplace} </Typography>\r\n }\r\n }\r\n else if (hassidebartabs && localStorage.getItem(value)) {\r\n let valuedata = localStorage.getItem(value)\r\n if (each.trimvalue) {\r\n valuedata = (valuedata.length > 12 ? `${(valuedata).substring(0, 12)}...` : `${valuedata}`)\r\n }\r\n let ExpressionType = each.exptype ? expressionFormats[each.exptype] : expressionFormats['default']\r\n let labelreplace = ExpressionType.replace(\"${label}\", name);\r\n let valuereplace = labelreplace.replace(\"${value}\", valuedata);\r\n return <Typography variant=\"body2\" gutterBottom>{valuereplace} </Typography>\r\n }\r\n else return null\r\n\r\n })}\r\n <div className='flex-grow-1' />\r\n {actions.map(each => {\r\n const { type, hidecondition, name,haseditrecord, hasrolebasedcondition, ...otherProps } = each\r\n const EachComp = fieldTypes[type]\r\n if ( haseditrecord && canRead ) \r\n {\r\n return null \r\n } \r\n if (hasrolebasedcondition && !(canAdd )) {\r\n return null\r\n }\r\n if (hidecondition) {\r\n let condition = null;\r\n hidecondition.forEach(element => {\r\n const { section, FieldKey, FieldValue, accessPortal, dataItemName, dataItemValue, prevcondition, routeparams } = element\r\n if (accessPortal) {\r\n condition = prevcondition && prevcondition === 'or' && condition === true ? true : prevcondition === 'and'\r\n && condition === false ? false : (props.accessPermissions.portal === accessPortal) ? true : false\r\n }\r\n });\r\n if (condition) {\r\n return null\r\n }\r\n else {\r\n return <EachComp {...otherProps} name={name} sidebaritemsinfo={props.sidebaritemsinfo}\r\n {...addOnsByName[name]} sharedProps={sharedProps} fieldValues={fieldValues} fieldProps={fieldProps} />\r\n }\r\n }\r\n if (each.name === 'fullscreen' || each.name === 'exitfullscreen') {\r\n return null\r\n }\r\n\r\n else\r\n return <EachComp {...otherProps} name={name} sidebaritemsinfo={props.sidebaritemsinfo}\r\n {...addOnsByName[name]} sharedProps={sharedProps} fieldValues={fieldValues} fieldProps={fieldProps} />\r\n })}\r\n\r\n </div>\r\n </div>\r\n </Toolbar>\r\n </AppBar >\r\n {hassidebartabs &&\r\n <LeftSideBar {...(props.AccessPortal === 'E') ? ExternalApplicationSidebar[getEnvVariable('ModuleKey') + props.match.params.key] : NewApplicationSidebar[getEnvVariable('ModuleKey') + props.match.params.key]}>\r\n </LeftSideBar>}\r\n </Fragment>\r\n )\r\n }\r\n else {\r\n return (\r\n <Fragment>\r\n <AppBar position=\"sticky\" color={style ? '' : 'secondary'} style={style} elevation={0}>\r\n <Toolbar variant=\"dense\">\r\n {components.map(each => {\r\n const { type, name, ...otherProps } = each\r\n const EachComp = fieldTypes[type]\r\n return <div><EachComp {...otherProps} {...addOnsByName[name]} sharedProps={sharedProps} /></div>\r\n })}\r\n <div className='flex-grow-1' />\r\n {labelitems && labelitems[0].items.map(each => {\r\n const { name, value, customname, trimvalue } = each\r\n if (props && props[value] && addOnsByName[value]) {\r\n let valuedata = props[value]\r\n if (trimvalue) {\r\n valuedata = (props[value].length > 12 ? `${(props[value]).substring(0, 12)}...` : `${props[value]}`)\r\n\r\n }\r\n if (customname) {\r\n let ExpressionType = each.exptype ? expressionFormats[each.exptype] : expressionFormats['default']\r\n let labelreplace = ExpressionType.replace(\"${label}\", props[name]);\r\n let valuereplace = labelreplace.replace(\"${value}\", valuedata);\r\n return <Typography variant=\"body2\" gutterBottom>{valuereplace} </Typography>\r\n }\r\n else {\r\n let ExpressionType = each.exptype ? expressionFormats[each.exptype] : expressionFormats['default']\r\n let labelreplace = ExpressionType.replace(\"${label}\", name);\r\n let valuereplace = labelreplace.replace(\"${value}\", valuedata);\r\n return <Typography variant=\"body2\" gutterBottom>{valuereplace} </Typography>\r\n }\r\n }\r\n else if (hassidebartabs && localStorage.getItem(value)) {\r\n let valuedata = localStorage.getItem(value)\r\n if (each.trimvalue) {\r\n valuedata = (valuedata.length > 12 ? `${(valuedata).substring(0, 12)}...` : `${valuedata}`)\r\n }\r\n let ExpressionType = each.exptype ? expressionFormats[each.exptype] : expressionFormats['default']\r\n let labelreplace = ExpressionType.replace(\"${label}\", name);\r\n let valuereplace = labelreplace.replace(\"${value}\", valuedata);\r\n return <Typography variant=\"body2\" gutterBottom>{valuereplace} </Typography>\r\n }\r\n else return null\r\n\r\n })}\r\n <div className='flex-grow-1' />\r\n {buttons && buttons.map(each => {\r\n const { type, name, ...props } = each\r\n const EachComp = fieldTypes[type]\r\n return <EachComp {...props} {...addOnsByName[name]} />\r\n })}\r\n {actions.map(each => {\r\n const { type, hidecondition, name,haseditrecord, hasrolebasedcondition, ...otherProps } = each\r\n const EachComp = fieldTypes[type]\r\n if (haseditrecord && canRead) {\r\n return null\r\n }\r\n if (hasrolebasedcondition && !(canAdd )) {\r\n return null\r\n }\r\n if (hidecondition) {\r\n let condition = null;\r\n hidecondition.forEach(element => {\r\n const { section, FieldKey, FieldValue, accessPortal, dataItemName, dataItemValue, prevcondition, routeparams } = element\r\n if (accessPortal) {\r\n condition = prevcondition && prevcondition === 'or' && condition === true ? true : prevcondition === 'and' && condition === false ? false : (props.accessPermissions.portal === accessPortal) ? true : false\r\n }\r\n });\r\n if (condition) {\r\n return null\r\n }\r\n else {\r\n return <EachComp {...otherProps} name={name} sidebaritemsinfo={props.sidebaritemsinfo} {...addOnsByName[name]} sharedProps={sharedProps} fieldValues={fieldValues} fieldProps={fieldProps}/>\r\n }\r\n }\r\n else return <EachComp {...otherProps} name={name} sidebaritemsinfo={props.sidebaritemsinfo} {...addOnsByName[name]} sharedProps={sharedProps} fieldValues={fieldValues} fieldProps={fieldProps}/>\r\n })}\r\n\r\n </Toolbar>\r\n </AppBar>\r\n {hassidebartabs &&\r\n <LeftSideBar {...((props.AccessPortal === 'E' || props && props.accessPermissions && props.accessPermissions.portal === 'E')) ? ExternalApplicationSidebar[getEnvVariable('ModuleKey') + props.match.params.key] : NewApplicationSidebar[getEnvVariable('ModuleKey') + props.match.params.key]}>\r\n </LeftSideBar>}\r\n </Fragment>\r\n )\r\n\r\n }\r\n}\r\n)\r\nexport default withWidth()(withRouter(Header));","import { loadModules } from 'esri-loader';\r\n//import { GeometryEngineTask } from '../util/geometryEngineTask';\r\nimport { QueryTaskExecuteWithrelation, QueryTaskExecuteBufferWithrelation } from '../util/queryTask';\r\n\r\n\r\n\r\n/**\r\n * GIS fetch lookup using features\r\n * @param {*} features\r\n * @param {*} domainlookupdata\r\n */\r\nexport function GISLookupTask(config, features, domainlookupdata) {\r\n console.log('GIS lookup fields for query *********', domainlookupdata)\r\n let geometries = [];\r\n\r\n //caluclating only on the single geom, need to change for multiple\r\n geometries.push(features)\r\n return new Promise((resolve, reject) => {\r\n if (domainlookupdata && domainlookupdata.length > 0) {\r\n let allPromises = [];\r\n\r\n domainlookupdata.forEach(function (domainitem) {\r\n let FieldKey = domainitem.FieldKey;\r\n let NameReference = domainitem.NameReference;\r\n let NameFormat = domainitem.NameFormat;\r\n let ValueReference = domainitem.ValueReference;\r\n let ValueFormat = domainitem.ValueFormat;\r\n let ServiceUrl = domainitem.ServiceUrl;\r\n let eachpromise = new Promise((resolve, reject) => {\r\n let gisFeatureLayer = { url:ServiceUrl, Token: domainitem.Token, TokenExpiration: domainitem.TokenExpiration }; \r\n let queryExpression = \"1=1\";\r\n let inputgeom;\r\n\r\n //verify geometries and get the center if multiple\r\n if (geometries && geometries.length > 1) {\r\n inputgeom = geometries[0];\r\n } else {\r\n inputgeom = geometries[0];\r\n }\r\n QueryTaskExecuteBufferWithrelation(gisFeatureLayer, queryExpression, config.viewProperties.extent.spatialReference, inputgeom).then(\r\n response => {\r\n let gisResponse = {}\r\n //Check isMultiple Names\r\n let isMultiNames = false;\r\n let isMultiValues = false;\r\n let refs = NameReference ? NameReference.split(',') : [];\r\n let valefs = ValueReference ? ValueReference.split(',') : [];\r\n\r\n if (NameReference) {\r\n if (refs && refs.length > 1)\r\n isMultiNames = true;\r\n }\r\n if (ValueReference) {\r\n if (valefs && valefs.length > 1)\r\n isMultiValues = true;\r\n }\r\n if (response && response.features && response.features.length > 0) {\r\n let resposnsattr = response.features[0].attributes;\r\n gisResponse.FieldKey = FieldKey;\r\n gisResponse.NameReferenceValue = (isMultiNames && NameFormat) ? GetFormatVal(resposnsattr, NameFormat, refs) : resposnsattr[NameReference]; //resposnsattr[NameReference];\r\n gisResponse.ValueReferenceValue = (isMultiValues && ValueFormat) ? GetFormatVal(resposnsattr, ValueFormat, valefs) : resposnsattr[ValueReference];\r\n }\r\n resolve(gisResponse);\r\n },\r\n error => {\r\n console.log(error);\r\n resolve({});\r\n }\r\n )\r\n\r\n\r\n });\r\n\r\n allPromises.push(eachpromise);\r\n })\r\n\r\n\r\n Promise.all(allPromises).then((data) => {\r\n let responseData = {}\r\n if (data && data.length > 0) {\r\n data.forEach(function (domainitem) {\r\n responseData[domainitem.FieldKey] = domainitem.ValueReferenceValue;\r\n })\r\n }\r\n console.log(data)\r\n resolve(responseData);\r\n });\r\n } else {\r\n console.log({ error: 'No geometries found to gis lookup task' })\r\n resolve({});\r\n }\r\n })\r\n}\r\n\r\nfunction GetFormatVal(attributes, namereference, arrnamereference) {\r\n if (Array.isArray(arrnamereference) && namereference) {\r\n arrnamereference.forEach(ref => {\r\n try {\r\n namereference = namereference.replace('${' + ref + '}', attributes[ref])\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n });\r\n }\r\n return namereference;\r\n}\r\n\r\n/**\r\n * GIS fetch lookup using geometries\r\n * @param {*} features\r\n * @param {*} domainlookupdata\r\n */\r\nexport function GISLookupTaskWithGeom(config, geometries, domainlookupdata) {\r\n console.log('GISLookupTaskWithGeom-------', geometries,domainlookupdata);\r\n let UIFieldType = {}\r\n return new Promise((resolve, reject) => {\r\n if (domainlookupdata && domainlookupdata.length > 0) {\r\n let allPromises = [];\r\n //let initialBuffer = 100; //Meter caluclation\r\n let initialBuffer = (config && config.GISLookupBuffer) ? config.GISLookupBuffer : 1 ; //Meter caluclation\r\n domainlookupdata.forEach(function (domainitem) {\r\n UIFieldType[domainitem.FieldKey] = domainitem.UIFieldTypeComponent\r\n let FieldKey = domainitem.FieldKey;\r\n let NameReference = domainitem.NameReference;\r\n let ValueReference = domainitem.ValueReference;\r\n let ServiceUrl = domainitem.ServiceUrl;\r\n let FieldIsBuffer = domainitem.FieldIsBuffer;\r\n let FieldBufferDistance = domainitem.FieldBufferDistance;\r\n let FieldBufferUnits = domainitem.FieldBufferUnits;\r\n let Token = domainitem.Token || null;\r\n let TokenExpiration = domainitem.TokenExpiration || null;\r\n let NameFormat = domainitem.NameFormat;\r\n let ValueFormat = domainitem.ValueFormat;\r\n\r\n let eachpromise = new Promise((resolve, reject) => {\r\n let gisFeatureLayer = {\r\n url : ServiceUrl,\r\n Token: Token,\r\n TokenExpiration: TokenExpiration\r\n }\r\n let queryExpression = \"1=1\";\r\n let inputgeom = {};\r\n if (geometries && geometries.length > 1) {\r\n inputgeom.geometry = geometries[0];\r\n } else {\r\n inputgeom.geometry = geometries[0];\r\n }\r\n\r\n QueryTaskExecuteBufferWithrelation(gisFeatureLayer, queryExpression, config.viewProperties.extent.spatialReference, inputgeom, FieldBufferDistance, FieldBufferUnits).then(\r\n response => {\r\n let gisResponse = {}\r\n let isMultiNames = false;\r\n let isMultiValues = false;\r\n\r\n let refs = NameReference ? NameReference.split(',') : [];\r\n let valefs = ValueReference ? ValueReference.split(',') : [];\r\n if (NameReference) {\r\n if (refs && refs.length > 1)\r\n isMultiNames = true;\r\n }\r\n if (ValueReference) {\r\n if (valefs && valefs.length > 1)\r\n isMultiValues = true;\r\n }\r\n\r\n if (response && response.features && response.features.length > 0) {\r\n let resposnsattr = response.features[0].attributes;\r\n try {\r\n gisResponse.FieldKey = FieldKey;\r\n gisResponse.NameReferenceValue = (isMultiNames && NameFormat) ? GetFormatVal(resposnsattr, NameFormat, refs) : resposnsattr[NameReference]; //resposnsattr[NameReference];\r\n gisResponse.ValueReferenceValue = (isMultiValues && ValueFormat) ? GetFormatVal(resposnsattr, ValueFormat, valefs) : resposnsattr[ValueReference];\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n //check buffer with db value\r\n resolve(gisResponse);\r\n } else if (FieldIsBuffer && FieldIsBuffer == 'Y') {\r\n try {\r\n gisResponse.FieldKey = FieldKey;\r\n gisResponse.NameReferenceValue = null;\r\n gisResponse.ValueReferenceValue = null;\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n //check buffer with db value\r\n resolve(gisResponse);\r\n } else {\r\n let buffertimeresponse = {\r\n ...domainitem,\r\n BufferTime: true,\r\n BufferDistance: initialBuffer\r\n }\r\n DomainLookupWithinBufferDistance(config, buffertimeresponse, inputgeom).then(function (result) {\r\n resolve(result);\r\n });\r\n }\r\n }, error => {\r\n console.log(error);\r\n reject({ \"error\": error });\r\n })\r\n });\r\n allPromises.push(eachpromise);\r\n })\r\n return Promise.all(allPromises).then((data) => {\r\n console.log('GIS lookup completed *********', data)\r\n let responseData = {}\r\n if (data && data.length > 0) {\r\n data.forEach(function (domainitem) {\r\n // responseData[domainitem.FieldKey] = domainitem.ValueReferenceValue ?\r\n // (UIFieldType[domainitem.FieldKey] === 'TB' ? domainitem.NameReferenceValue : domainitem.ValueReferenceValue.toString().trim()) : \"\";\r\n responseData[domainitem.FieldKey] = domainitem.ValueReferenceValue ? domainitem.ValueReferenceValue.toString().trim() : \"\";\r\n if (domainitem.FieldKey === \"TOWNSHIP\" && domainitem.NameReferenceValue) {\r\n let resultreference = domainitem.NameReferenceValue.split(\" \")\r\n if (resultreference && resultreference.length > 1) {\r\n responseData[\"TOWNSHIP\"] = resultreference[0]\r\n responseData[\"RANGE\"] = resultreference[1]\r\n //FieldKey: \"TOWNSHIP\"\r\n //NameReferenceValue: \"T35S R04W\"\r\n //ValueReferenceValue: \"035\"\r\n }\r\n }\r\n })\r\n }\r\n console.log(responseData)\r\n resolve(responseData);\r\n });\r\n\r\n } else {\r\n resolve({});\r\n }\r\n\r\n })\r\n}\r\n\r\nfunction DomainLookupWithinBufferDistance(config, domainitem, inputgeom) {\r\n // console.log(domainitem);\r\n //console.log('Re query with buffer----------------------------', domainitem);\r\n let FieldKey = domainitem.FieldKey;\r\n let NameReference = domainitem.NameReference;\r\n let NameFormat = domainitem.NameFormat;\r\n let ValueReference = domainitem.ValueReference;\r\n let ValueFormat = domainitem.ValueFormat;\r\n let ServiceUrl = domainitem.ServiceUrl;\r\n let buffer = domainitem.BufferDistance;\r\n\r\n return new Promise((resolve, reject) => {\r\n let gisFeatureLayer = {}\r\n gisFeatureLayer.url = ServiceUrl;\r\n\r\n let queryExpression = \"1=1\";\r\n\r\n QueryTaskExecuteBufferWithrelation(gisFeatureLayer, queryExpression, config.viewProperties.extent.spatialReference, inputgeom, buffer, \"feet\").then(\r\n response => {\r\n let gisResponse = {}\r\n\r\n let isMultiNames = false;\r\n let isMultiValues = false;\r\n let refs = NameReference ? NameReference.split(',') : [];\r\n let valefs = ValueReference ? ValueReference.split(',') : [];\r\n if (NameReference) {\r\n if (refs && refs.length > 1)\r\n isMultiNames = true;\r\n }\r\n if (ValueReference) {\r\n if (valefs && valefs.length > 1)\r\n isMultiValues = true;\r\n }\r\n\r\n if (response && response.features && response.features.length > 0) {\r\n let resposnsattr = response.features[0].attributes;\r\n try {\r\n gisResponse.FieldKey = FieldKey;\r\n gisResponse.NameReferenceValue = (isMultiNames && NameFormat) ? GetFormatVal(resposnsattr, NameFormat, refs) : resposnsattr[NameReference]; //resposnsattr[NameReference];\r\n gisResponse.ValueReferenceValue = (isMultiValues && ValueFormat) ? GetFormatVal(resposnsattr, ValueFormat, valefs) : resposnsattr[ValueReference];\r\n\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n //check buffer with db value\r\n resolve(gisResponse);\r\n } else {\r\n let buffertimeresponse = {\r\n ...domainitem,\r\n BufferTime: true,\r\n BufferDistance: buffer * 2\r\n }\r\n DomainLookupWithinBufferDistance(config, buffertimeresponse, inputgeom).then(function (result) {\r\n resolve(result);\r\n });\r\n }\r\n\r\n },\r\n error => {\r\n console.log(error);\r\n resolve({})\r\n //reject({ \"error\": error });\r\n })\r\n\r\n });\r\n\r\n}","import { getToken, GetFetchProps } from \"../header\";\r\n\r\n\r\n\r\nexport const asyncgetData = async (url) => {\r\n return await fetch(`${url}`, {\r\n method: 'GET',\r\n ...GetFetchProps()\r\n }).then(res => res.json()).catch(ex => ex);\r\n}\r\n\r\nexport const getData = (url) => {\r\n return fetch(`${url}`, {\r\n method: 'GET',\r\n ...GetFetchProps()\r\n }).then(res => res.json()).catch(ex => ex);\r\n}\r\n\r\nexport const postData = (url) => {\r\n let record = {}\r\n return fetch(`${url}`, {\r\n method: 'POST',\r\n ...GetFetchProps(),\r\n body: JSON.stringify(record)\r\n }).then(res => res.json()).catch(ex => ex);\r\n}\r\n\r\nexport const postRecordData = (url, record) => {\r\n return fetch(`${url}`, {\r\n method: 'POST',\r\n ...GetFetchProps(),\r\n body: JSON.stringify(record)\r\n }).then(res => {\r\n if (res.ok) { return res.json() }\r\n else {\r\n throw res.json();\r\n }\r\n }).catch(ex => ex);\r\n}\r\n\r\n\r\nexport const putRecordData = (url, record) => {\r\n return fetch(`${url}`, {\r\n method: 'PUT',\r\n ...GetFetchProps(),\r\n body: JSON.stringify(record)\r\n }).then(res => res.json()).catch(ex => ex);\r\n}\r\n\r\nexport const deleteData = (url) => {\r\n return fetch(`${url}`, {\r\n method: 'DELETE',\r\n ...GetFetchProps(),\r\n }).then(res => res.json()).catch(ex => ex);\r\n}","/** \r\n *********************************************************\r\n Description: Intermeditiary component between cform.js and createsubform in utilities.js for handling the form layout and updating the field values.\r\n Required props: N/A.\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\nimport React, { Component, Fragment } from 'react';\r\nimport { createSubFormLayout } from './utilities'\r\n\r\n\r\nclass CSubForm extends Component {\r\n state = {\r\n memoizeLayout: null\r\n }\r\n componentDidMount() {\r\n this.setMemoizeLayout()\r\n }\r\n\r\n setMemoizeLayout(){\r\n const { changedFieldName, ...otherProps } = this.props\r\n this.setState({\r\n memoizeLayout: createSubFormLayout(otherProps)\r\n })\r\n }\r\n\r\n componentDidUpdate(prevProps,prevState){ \r\n if(prevProps.dataItem && Object.entries(prevProps.dataItem).toString() !== Object.entries(this.props.dataItem).toString()) {\r\n this.setMemoizeLayout()\r\n }\r\n }\r\n \r\n render() {\r\n \r\n const { memoizeLayout } = this.state\r\n const { changedFieldName, ...otherProps } = this.props\r\n return <Fragment> \r\n {memoizeLayout && memoizeLayout(changedFieldName)}\r\n </Fragment>\r\n }\r\n\r\n\r\n}\r\n\r\nexport default CSubForm;","import { Tooltip } from '@material-ui/core';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport Radio from '@material-ui/core/Radio';\r\nimport RadioGroup from '@material-ui/core/RadioGroup';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport React from 'react';\r\nimport DefaultSettings from './settings';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport { getColor } from '../../controls/components/custom/customcolor';\r\n\r\nconst defaults = {\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Value'\r\n }\r\n}\r\n\r\nexport default function RadioButtonsGroup(props) {\r\n const { value = '', handleFieldValue, extraProps, required, error, shareProps, tooltip, contexthelp, className, row, disabled, IsSelectable, ...otherProps } = props\r\n const { label, helperText, items, name, fullWidth, ...otherConfigs } = otherProps\r\n const { transformProps } = extraProps || {}\r\n let radioVal = value;\r\n const isDisabled = (each) => {\r\n if (each.IsSelectable)\r\n return each.IsSelectable === 'Y' ? false : true\r\n else return false\r\n }\r\n\r\n return (\r\n <FormControl className={className ? className : \"col-sm-12 w-100\"} required={required} error={error} {...otherConfigs} disabled={disabled}>\r\n <InputLabel style={{ fontWeight: 'bold', color: required ? getColor() : (error ? 'red' : 'black') }} shrink> {label}{tooltip && <Tooltip title={tooltip ? tooltip : null}\r\n placement=\"bottom-start\" ><HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em', color: '#007bff', marginRight: 5 }} onClick={(evt) => contexthelp ?\r\n DefaultSettings.showDrawer(contexthelp) : evt.preventDefault()} />\r\n </Tooltip>}</InputLabel> \r\n\r\n <RadioGroup className=\"text-secondary\" value={radioVal} name={name} onChange={handleFieldValue} row={row == false ? row : true} >\r\n {\r\n items && items.map((each, index) => {\r\n const { label, value } = transformProps ? transformProps : defaults.transformProps\r\n const name = each[label]\r\n const key = each[value]\r\n return <FormControlLabel\r\n disabled={disabled ? disabled : isDisabled(each)}\r\n key={key}\r\n value={key}\r\n control={<Radio color={disabled ? \"#808080\" : \"primary\"} />}\r\n label={<span style={{ fontSize: '12px' }}>{name}</span>}\r\n labelPlacement=\"end\"\r\n />\r\n })\r\n }\r\n </RadioGroup>\r\n {helperText && <FormHelperText>{helperText}</FormHelperText>}\r\n\r\n </FormControl>\r\n );\r\n}","/**\r\n *********************************************************\r\n Description: Contains different validations\r\n Required props: text or value.\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\nexport const isRequired = (value, required, message) => {\r\n if (required === 'Y') {\r\n if ((value == null) || (value === '')) return message\r\n return null\r\n }\r\n else return null\r\n\r\n}\r\n\r\nexport const minLength = (text, length, message) => {\r\n if (!text || (text.length < length))\r\n return message\r\n return null\r\n}\r\n\r\nexport const maxLength = (text, length, message) => {\r\n if (text && (text.length > length))\r\n return message\r\n return null\r\n}\r\n\r\nexport const isPercentage = (value, percent, message) => {\r\n if (value >= 0 && value < 1) return null\r\n else return message\r\n}\r\n\r\nexport const isRange = (value, range, message, min, max) => {\r\n let values = Number(value)\r\n // if (values >= min && values <= max && !hasInvalidChars(value)) return null\r\n if (values >= min && values <= max) return null\r\n else return message\r\n\r\n}\r\nexport const stringLength = (value, range, message, min, max) => {\r\n if (value.length >= min && value.length <= max) return null\r\n else return message\r\n}\r\n\r\n\r\nexport const isNumber = (value, num, message) => {\r\n //console.log('parseFloat(value)',parseFloat(value))\r\n const exp = isNaN(Number(value))\r\n //check or invalid chars\r\n if (exp)\r\n return message\r\n return null;\r\n}\r\n\r\nexport const isString = (value, str, message) => {\r\n const letters = /^[A-Za-z]+$/;\r\n if (value.match(letters)) {\r\n return null;\r\n }\r\n else return message\r\n}\r\n\r\nexport const leadingorTrailing = (value, str, message) => {\r\n let strlength = value.length\r\n if (value == \"\" && value.charAt(0) != \" \" || value.charAt(strlength -1) != \" \") {\r\n return null;\r\n }\r\n else return message\r\n}\r\n\r\nexport const isInteger = (value, int, message) => {\r\n const convertval = Number(value)\r\n const val = Number.isInteger(convertval)\r\n if (val) return null\r\n else return message\r\n}\r\n\r\nexport const regExp = (value, exp, message) => {\r\n\r\n let newreg = new RegExp(exp)\r\n if (value != null && value != \"\" && !newreg.test(value))\r\n return message\r\n return null\r\n}\r\n\r\n\r\nexport const zipCode = (value, zip, message) => {\r\n let exp = /(^\\d{5}$)|(^\\d{5}-\\d{4}$)/\r\n if (value != null && value != \"\" && !exp.test(value))\r\n return message\r\n return null\r\n}\r\n\r\nexport const zipCode4 = (value, zip, message) => {\r\n let exp = /(^\\d{4}$)|(^\\d{4}-\\d{3}$)/\r\n if (value != null && value != \"\" && !exp.test(value))\r\n return message\r\n return null\r\n}\r\n\r\n\r\nexport const emailAddress = (text, email, message) => {\r\n let exp = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n if (text != null && text != \"\" && !exp.test(text)) {\r\n return message\r\n }\r\n return null\r\n}\r\n\r\nexport const date = (value, date, message) => {\r\n let exp = new RegExp(\"^((0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01])[- /.](19|20)?[0-9]{2})*$\");\r\n if (!exp.test(value))\r\n return message\r\n return null;\r\n}\r\n\r\nexport const ipAddress = (ipaddress, addr, message) => {\r\n let exp = (/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(ipaddress))\r\n if (!exp)\r\n return message\r\n return null;\r\n}\r\nexport const urlData = (urlValue, url, message) => {\r\n let exp = new RegExp(\"^(http[s]?:\\\\/\\\\/(www\\\\.)?|ftp:\\\\/\\\\/(www\\\\.)?|(www\\\\.)?){1}([0-9A-Za-z-\\\\.@:%_\\+~#=]+)+((\\\\.[a-zA-Z]{2,3})+)(/(.)*)?(\\\\?(.)*)?\");\r\n if (!exp.test(urlValue))\r\n return message\r\n return null;\r\n}\r\nexport const phoneMask = (value, phone, message) => {\r\n let exp = new RegExp('(', /[0-9]/, /\\d/, /\\d/, ')', ' ', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, /\\d/);\r\n if (!exp.test(value))\r\n return message\r\n return null;\r\n}\r\n\r\nexport const editorLength = (value, range, message, min, max) => {\r\n value = atob(value).length\r\n if (value >= min && value <= max) return null\r\n else return message\r\n}\r\n\r\n\r\nexport const formatPhoneNumber = (phoneNumberString) => {\r\n var cleaned = ('' + phoneNumberString).replace(/\\D/g, '');\r\n var match = cleaned.match(/^(\\d{3})(\\d{3})(\\d{4})$/);\r\n if (match) {\r\n return '(' + match[1] + ') ' + match[2] + '-' + match[3];\r\n }\r\n return null;\r\n}","\r\nimport { isRequired as IsRequired } from './validate'\r\nimport { isNumber as IsNumber } from './validate'\r\nimport { minLength as MinLength } from './validate'\r\nimport { maxLength as maxLength } from './validate'\r\nimport { isPercentage as IsPercentage } from './validate'\r\nimport { isString as IsString } from './validate'\r\nimport { regExp as RegExpression } from './validate'\r\nimport { isRange as IsRange } from './validate'\r\nimport { urlData as urlData } from './validate'\r\nimport { phoneMask as phoneMask } from './validate'\r\nimport { isInteger as isInteger } from './validate'\r\nimport { stringLength as stringLength } from './validate'\r\nimport { editorLength as editorLength } from './validate'\r\nimport { date as date } from './validate'\r\nimport { leadingorTrailing as leadingorTrailing } from './validate'\r\n\r\nconst validationrules = {\r\n Type: {\r\n R: {\r\n IsRequired: IsRequired\r\n },\r\n D: {\r\n Mask: {\r\n P: IsPercentage,\r\n BI: IsNumber,\r\n DN: IsNumber,\r\n I: IsNumber,\r\n R: IsNumber,\r\n N: IsNumber,\r\n C: IsNumber,\r\n VC: IsString,\r\n NVC: IsString,\r\n L: IsNumber,\r\n int: isInteger,\r\n datetime2: date\r\n //nvarchar: IsString\r\n }\r\n },\r\n L: {\r\n Minlen: MinLength,\r\n Maxlen: maxLength,\r\n },\r\n X: {\r\n RegExp: RegExpression\r\n },\r\n G: {\r\n IsRange: IsRange\r\n },\r\n // M: {\r\n // Mask: phoneMask\r\n // },\r\n U: {\r\n Url: urlData\r\n },\r\n Z: {\r\n Str: stringLength\r\n },\r\n Y: {\r\n EStr: editorLength // Editor Count\r\n },\r\n S: {\r\n leadingorTrailing : leadingorTrailing\r\n }\r\n }\r\n}\r\n\r\n/** \r\n *********************************************************\r\n Description: Handles validations. Validations are verified until an error is found.\r\n Required props: validations, fieldvalues.\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\n\r\nexport const globalvalidate = (validations, fieldValues) => {\r\n const errors = {}\r\n // const fieldvalidationskeys = Object.keys(validations)\r\n // // let requiredfields = {}\r\n // fieldvalidationskeys.forEach(each => {\r\n // // requiredfields[each] = validations[each].find(each=>{\r\n // // return each.IsRequired === 'Y'\r\n // // })\r\n // validations[each].sort((a, b) => a.Order - b.Order)\r\n // })\r\n const validationskeys = Object.keys(validations).map(each => each.toUpperCase())\r\n const fieldValueskeys = Object.keys(fieldValues)\r\n const uppercasefieldValueskeys = fieldValueskeys.map(each => each.toUpperCase())\r\n validationskeys.forEach(each => {\r\n const index = uppercasefieldValueskeys.indexOf(each)\r\n const fieldName = fieldValueskeys[index]\r\n const eachfieldvalidations = validations[fieldName]\r\n if (eachfieldvalidations) {\r\n const requiredRule = eachfieldvalidations.filter(r => r.Type == \"R\");\r\n const isRequired = (requiredRule != null && requiredRule.length > 0)\r\n eachfieldvalidations.some(e => {\r\n const fieldValue = fieldValues[fieldName]\r\n if (fieldName && ((!fieldValue && isRequired) || (fieldValue))) {\r\n errors[fieldName] = globaleachvalidate(fieldName, e, fieldValue)\r\n if (errors[fieldName].error) return true\r\n\r\n }\r\n\r\n })\r\n }\r\n })\r\n return errors\r\n}\r\n/** \r\n *********************************************************\r\n Description: Handles one validation based on type. \r\n Required props: fieldName, validation, fieldValue.\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\n\r\nconst globaleachvalidate = (fieldName, validation, fieldValue) => {\r\n let errortext = ''\r\n let error = false\r\n const validationtype = validation.Type\r\n let validationtypevariants\r\n let callvalidationfn\r\n if (validation.Type === 'D') {\r\n validationtypevariants = validationrules['Type'][validationtype].Mask\r\n callvalidationfn = validation.Mask\r\n if (validationtypevariants[callvalidationfn]) {\r\n errortext = validationtypevariants[callvalidationfn](fieldValue, validation['Mask'][callvalidationfn], validation.Message)\r\n if (errortext) {\r\n return {\r\n error: true,\r\n errortext: errortext\r\n }\r\n }\r\n else {\r\n return {\r\n error: error,\r\n errortext: errortext\r\n }\r\n }\r\n }\r\n }\r\n if (validation.Type === 'L') {\r\n validationtypevariants = validationrules['Type'][validationtype]\r\n if (validation.Maxlen > 0) callvalidationfn = 'Maxlen'\r\n if (validation.Minlen > 0) callvalidationfn = 'Minlen'\r\n\r\n }\r\n if (validation.Type === 'R') {\r\n validationtypevariants = validationrules['Type'][validationtype]\r\n callvalidationfn = 'IsRequired'\r\n\r\n }\r\n if (validation.Type === 'G') {\r\n validationtypevariants = validationrules['Type'][validationtype]\r\n callvalidationfn = 'IsRange'\r\n\r\n }\r\n if (validation.Type === 'U') {\r\n validationtypevariants = validationrules['Type'][validationtype]\r\n callvalidationfn = 'Url'\r\n\r\n }\r\n if (validation.Type === 'X') {\r\n validationtypevariants = validationrules['Type'][validationtype]\r\n callvalidationfn = 'RegExp'\r\n\r\n }\r\n if (validation.Type === 'Y') {\r\n validationtypevariants = validationrules['Type'][validationtype]\r\n callvalidationfn = 'EStr'\r\n }\r\n if (validation.Type === 'Z') {\r\n validationtypevariants = validationrules['Type'][validationtype]\r\n callvalidationfn = 'Str'\r\n }\r\n if (validation.Type === 'S') {\r\n validationtypevariants = validationrules['Type'][validationtype]\r\n callvalidationfn = 'leadingorTrailing'\r\n\r\n }\r\n if (validationtypevariants) {\r\n // const validationtypekeys = Object.keys(validationtypevariants)\r\n //error = validationtypekeys.some(each => {\r\n if (validationtypevariants[callvalidationfn]) {\r\n let callvalidationAttr = callvalidationfn\r\n if (callvalidationfn === 'RegExp')\r\n callvalidationAttr = 'Mask';\r\n errortext = validationtypevariants[callvalidationfn](fieldValue, validation[callvalidationAttr], validation.Message, validation.Minlen, validation.Maxlen)\r\n if (errortext) {\r\n return {\r\n error: true,\r\n errortext: errortext\r\n }\r\n }\r\n }\r\n //})\r\n }\r\n return {\r\n error: error,\r\n errortext: errortext\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n/** \r\n *********************************************************\r\n currently not used anywhere. hanldes validations from json\r\n *********************************************************\r\n**/\r\n\r\nexport const validate = (validations, fieldValues) => {\r\n if (Array.isArray(validations)) {\r\n const errors = {}\r\n const fieldNames = Object.keys(validations)\r\n fieldNames.forEach(fieldName => {\r\n const error = eachvalidate(fieldName, validations[fieldName], fieldValues[fieldName])\r\n errors[fieldName] = error\r\n })\r\n return errors\r\n }\r\n else {\r\n const keys = Object.keys(validations)\r\n const fieldName = keys[0]\r\n return eachvalidate(fieldName, validations[fieldName], fieldValues)\r\n }\r\n\r\n\r\n}\r\n\r\n\r\n/** \r\n *********************************************************\r\n currently not used anywhere. hanldes validations from json\r\n *********************************************************\r\n**/\r\n\r\n\r\nconst eachvalidate = (fieldName, validations, fieldvalue) => {\r\n let errortexts = ''\r\n let error = false\r\n const validationkeys = Object.keys(validations)\r\n validationkeys.forEach(each => {\r\n if (validationrules[each]) {\r\n if (each === 'Type') {\r\n const validationtype = validationrules['Type'][validations['Type']]\r\n if (validationtype) {\r\n const errortext = validationtype(fieldvalue)\r\n if (errortext) {\r\n error = true\r\n errortexts += errortext\r\n }\r\n }\r\n\r\n }\r\n else {\r\n const errortext = validationrules[each](fieldvalue, validations[each])\r\n if (errortext) {\r\n error = true\r\n errortexts += errortext\r\n }\r\n }\r\n }\r\n })\r\n\r\n return {\r\n error: error,\r\n errortext: errortexts\r\n }\r\n}\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport InputBase from '@material-ui/core/InputBase';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\n\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n padding: '2px 4px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n width: 450,\r\n },\r\n // input: {\r\n // marginLeft: theme.spacing(4),\r\n // flex: 1,\r\n // },\r\n\r\n}));\r\n\r\nexport default function CustomizedInputBase(props) {\r\n const classes = useStyles();\r\n\r\n return (\r\n <div className = \"ms-3\" >\r\n <Paper className={classes.root}>\r\n <SearchIcon />\r\n <InputBase\r\n // className={classes.input}\r\n placeholder=\"Search\"\r\n value={props.search}\r\n onChange={props.handleSearchChange}\r\n />\r\n </Paper>\r\n </div>\r\n );\r\n}\r\n","import React, { useState, useEffect } from 'react'\r\nimport Drawer from '@material-ui/core/Drawer';\r\nimport HowToVoteIcon from '@material-ui/icons/HowToVote';\r\nimport Fab from '@material-ui/core/Fab';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport KeyboardBackspaceIcon from '@material-ui/icons/KeyboardBackspace';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport { useHistory, useParams } from \"react-router-dom\";\r\nimport Button from '@material-ui/core/Button';\r\nimport { getEnvVariable } from '../../../../modules/environmentalList';\r\nimport { requestApi, createRequest } from '../../helpers/rest';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\nimport Card from \"@material-ui/core/Card\";\r\nimport CardMedia from \"@material-ui/core/CardMedia\";\r\nimport CardContent from \"@material-ui/core/CardContent\";\r\nimport Divider from \"@material-ui/core/Divider\";\r\nimport Badge from '@material-ui/core/Badge';\r\n\r\n\r\n\r\nconst styles = muiBaseTheme => ({\r\n card: {\r\n width: 220,\r\n margin: \"10px\",\r\n transition: \"0.3s\",\r\n boxShadow: \"0 8px 40px -12px rgba(0,0,0,0.3)\",\r\n \"&:hover\": {\r\n boxShadow: \"0 16px 70px -12.125px rgba(0,0,0,0.3)\"\r\n },\r\n display: \"inline-block\",\r\n textAlign: \"center\"\r\n\r\n },\r\n media: {\r\n paddingTop: \"56.25%\"\r\n },\r\n content: {\r\n textAlign: \"left\",\r\n padding: muiBaseTheme.spacing.unit * 1,\r\n \"&:last-child\": {\r\n paddingBottom: 0\r\n }\r\n },\r\n divider: {\r\n margin: 0\r\n },\r\n heading: {\r\n fontWeight: \"bold\"\r\n },\r\n subheading: {\r\n lineHeight: 1.8\r\n },\r\n});\r\n\r\nconst minDrawerWidth = 700;\r\n\r\nfunction RegistrationDashboardDrawer(props) {\r\n const { classes } = props;\r\n const [state, setState] = React.useState(false);\r\n const [count, setCount] = React.useState({});\r\n const [totalCount, setTotalCount] = React.useState(0);\r\n let history = useHistory();\r\n const params = useParams();\r\n let arr = localStorage.getItem('submodule') && JSON.parse(localStorage.getItem('submodule')) ? JSON.parse(localStorage.getItem('submodule')) : []\r\n const toggleDrawer = (open) => (event) => {\r\n if (\r\n event &&\r\n event.type === 'keydown' &&\r\n (event.key === 'Tab' || event.key === 'Shift')\r\n ) {\r\n return;\r\n }\r\n\r\n setState(open);\r\n };\r\n\r\n useEffect(() => {\r\n const read = [\r\n {\r\n url: getEnvVariable('MasterAdmin') + `/api/CompanyInternal/RegistrationRequest/` + getEnvVariable('ModuleKey') + `/GetPending` + `${localStorage.getItem('impersonate') ? '?impersonateFor=' + localStorage.getItem('impersonate'):''}`,\r\n type: 'get'\r\n },\r\n ]\r\n Promise.all(read.map(each => requestApi(createRequest(each, {})))).then(response => {\r\n const [data] = response;\r\n let submodulearr = arr.map(each => {\r\n return { key: each.key }\r\n })\r\n let finalarr = {}\r\n submodulearr.forEach(element => {\r\n const arr = data.filter(data => data.key == element.key);\r\n finalarr[element.key] = arr && arr.length > 0 ? arr.length : 0\r\n });\r\n\r\n setCount(finalarr)\r\n let sum = 0;\r\n arr.forEach(element => {\r\n sum += finalarr[element.key]\r\n });\r\n setTotalCount(sum);\r\n })\r\n }, [])\r\n\r\n\r\n\r\n const goToRegistrationRequest = (e) => {\r\n history.push('/Administration/registrationrequest');\r\n }\r\n\r\n return (\r\n <div className=\"pl-6 pt-2\">\r\n <React.Fragment key={'right'}>\r\n <Badge badgeContent={totalCount} max={1000000000000}\r\n color=\"error\">\r\n <Fab size=\"small\" color=\"primary\" aria-label=\"Pending Registration Request\" className=\"float-right\" title=\"Pending Registration Request\"><HowToVoteIcon onClick={toggleDrawer(true)} fontSize=\"small\" /></Fab>\r\n </Badge>\r\n <Drawer\r\n anchor=\"right\"\r\n open={state}\r\n onClose={toggleDrawer(false)}\r\n onOpen={toggleDrawer(true)}\r\n PaperProps={{ style: { width: minDrawerWidth } }}\r\n >\r\n <AppBar position=\"static\" color='secondary'>\r\n <Toolbar variant=\"dense\">\r\n <div className=\"row float-right\">\r\n <Typography variant=\"subtitle1\" component=\"div\" sx={{ flexGrow: 1 }}>\r\n Registration Requests\r\n </Typography>\r\n </div>\r\n </Toolbar>\r\n </AppBar>\r\n <Button color=\"primary\" variant=\"text\" aria-label=\"Go to Registration Request\" className=\"float-right\" title=\"Go to Registration Request\" onClick={(e) => goToRegistrationRequest(e)} startIcon={<HowToVoteIcon />}>Go to registration requests</Button>\r\n <div className='pt-5'></div>\r\n {/* <Card componentlist={invoiceSummary} /> */}\r\n {arr.map(each => {\r\n return (\r\n <div className={classes.card}>\r\n <Card >\r\n <CardMedia />\r\n <CardContent className={classes.content}>\r\n <Typography\r\n className={\"MuiTypography--subheading\"}\r\n variant={\"caption\"}\r\n display=\"block\"\r\n >\r\n {each.title ? each.title : each.DisplayName}\r\n </Typography>\r\n <Typography variant=\"button\" display=\"block\" gutterBottom>\r\n {count[each.key]}\r\n </Typography>\r\n </CardContent>\r\n </Card>\r\n </div>\r\n )\r\n })}\r\n </Drawer>\r\n </React.Fragment>\r\n </div>\r\n );\r\n}\r\n\r\nRegistrationDashboardDrawer = withStyles(styles)(RegistrationDashboardDrawer);\r\nexport default (withRouter)(RegistrationDashboardDrawer);","import { AppBar, Toolbar } from \"@material-ui/core\";\r\nimport Divider from '@material-ui/core/Divider';\r\nimport Materialicon from '@material-ui/core/Icon';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport withWidth from '@material-ui/core/withWidth';\r\nimport MoreIcon from '@material-ui/icons/MoreVert';\r\nimport React from 'react';\r\nimport { connect, useDispatch } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { bindActionCreators } from 'redux';\r\nimport LeftSideBar from '../../../custommodules/newentrancepermit/applicationdrawer';\r\nimport { ExternalApplicationSidebar } from '../../../json/newapplication/externalapplicationsidebar';\r\nimport { NewApplicationSidebar } from '../../../json/newapplication/newapplicationsidebar';\r\nimport { getEnvVariable } from '../../../modules/environmentalList';\r\nimport { snackbarMessage } from '../../actions';\r\nimport { conditionsHandle } from '../../modules/form/conditions';\r\nimport SearchTextBox from '../components/custom/searchtextbox';\r\nimport BreadCrumb from './breadcrumbs';\r\nimport Button from './buttons';\r\nimport RegistrationRequestNav from './custom/registrationrequestnav';\r\nimport Fab from './fab';\r\nimport Icon from './icons';\r\nimport Menus from './menu';\r\nimport Text from './text';\r\nconst _ = require('lodash');\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n split: {\r\n height: '100%',\r\n width: '40%',\r\n position: 'fixed',\r\n },\r\n left: {\r\n left: 0,\r\n },\r\n right: {\r\n right: 0,\r\n }\r\n}));\r\n\r\nconst fieldTypes = {\r\n text: Text,\r\n icon: Icon,\r\n button: Button,\r\n fab: Fab,\r\n breadcrumbs: BreadCrumb,\r\n searchtextbox: SearchTextBox,\r\n menu: Menus,\r\n registrationrequestnav: RegistrationRequestNav\r\n}\r\nconst expressionFormats = {\r\n appendslash: \"${label} : ${value} /\",\r\n default: \"${label} : ${value}\",\r\n}\r\nfunction KendoHeader(props) {\r\n const { title, actions, initialloadextrainfo, hassidebartabs, addOnsByName, components, extracomponent, extraactions, extracomponents, reportapplied, sharedProps } = props;\r\n let openMenuDisplay = (props.width == \"sm\" || props.width == \"xs\" || props.width == \"md\") ? false : true\r\n const [openMenu, setOpenMenu] = React.useState(openMenuDisplay);\r\n const [openMenuList, setOpenMenuList] = React.useState(openMenuDisplay);\r\n const [mobileMoreAnchorEl, setMobileMoreAnchorEl] = React.useState(null);\r\n const [mobileMoreAnchorEld, setMobileMoreAnchorEld] = React.useState(null);\r\n const [mobileBreadcrumbAnchorEl, setMobileBreadcrumbAnchorEl] = React.useState(null);\r\n const isBreadcrumbMenu = Boolean(mobileBreadcrumbAnchorEl);\r\n const isMobileMenuOpen = Boolean(mobileMoreAnchorEl);\r\n const isMobileSubMenuOpen = Boolean(mobileMoreAnchorEld);\r\n const classes = useStyles();\r\n const dispatch = useDispatch();\r\n let configtypeAccess = props && props.accessPermissions ? props.accessPermissions.configType == 'R' ? props.accessPermissions.moduleRegionAccess : props.accessPermissions.configType == 'D' ? props.accessPermissions.moduleDistrictAccess : props.accessPermissions.moduleSiteAccess : false\r\n\r\n let roleaccess = configtypeAccess && configtypeAccess ? Object.values(configtypeAccess).includes('Add') ? 'CanAdd' : Object.values(configtypeAccess).includes('Update') ? 'CanEdit' : 'CanRead' : 'CanRead'\r\n\r\n let portal = props.accessPermissions ? props.accessPermissions.portal : null;\r\n let isAdmin = props.accessPermissions && props.accessPermissions.isAdmin ? props.accessPermissions.isAdmin : 'N'\r\n let canAdd = isAdmin == 'Y' ? true : !roleaccess && !portal ? true : portal == \"I\" && roleaccess == \"CanAdd\" ? true : (portal == \"E\") ? true : false\r\n let canEdit = isAdmin == 'Y' ? true : !roleaccess && !portal ? true : portal == \"I\" && roleaccess == \"CanEdit\" ? true : (portal == \"E\") ? true : false\r\n let canRead = !roleaccess && !portal ? true : portal == \"I\" && roleaccess == \"CanRead\" ? true : (portal == \"E\") ? true : false\r\n\r\n React.useEffect(() => {\r\n setOpenMenu(openMenuDisplay);\r\n handleMobileMenuClose();\r\n }, [props.width]);\r\n\r\n\r\n const handleMobileMenuOpen = (event, name) => {\r\n setMobileMoreAnchorEl(event.currentTarget);\r\n };\r\n const handleBreadcrumbMenu = event => {\r\n setMobileBreadcrumbAnchorEl(event.currentTarget);\r\n setOpenMenuList(true)\r\n };\r\n\r\n const handleMobileMenuClose = () => {\r\n setMobileMoreAnchorEl(null);\r\n setMobileBreadcrumbAnchorEl(null);\r\n };\r\n\r\n const handleMobileSubMenuOpen = (event, name) => {\r\n setMobileMoreAnchorEld(event.currentTarget);\r\n }\r\n\r\n const handleMobileSubMenuClose = () => {\r\n setMobileMoreAnchorEld(null);\r\n }\r\n\r\n const navigatebreadcrumbmenu = (href) => {\r\n let path = ''\r\n if (href && href.routes) {\r\n if (Array.isArray(href.routes)) {\r\n href.routes.forEach(each => {\r\n const { route, routeParams, matchProps } = each\r\n if (routeParams) {\r\n path += route + \"/\" + props.match.params[routeParams]\r\n }\r\n else if (matchProps) {\r\n path += route + \"/\" + props.results[matchProps] //correct: results ??? results[matchProps]\r\n }\r\n else {\r\n path += route\r\n }\r\n })\r\n }\r\n }\r\n else {\r\n path = href\r\n }\r\n props.history.push(path)\r\n }\r\n if (props.hideinmenu !== true && !openMenu) {\r\n return (\r\n <div className=\"\">\r\n {hassidebartabs && <AppBar position=\"sticky\" color='secondary'>\r\n {components && components.map(each => {\r\n const { type, name, items, ...otherProps } = each\r\n const EachComp = fieldTypes[type]\r\n let arr = items ? _.chunk(items, _.findLastIndex(items)) : null\r\n if (type == 'breadcrumbs' && arr && arr.length > 1) {\r\n return (\r\n <div className=\"row col-sm-11 pl-1 breadcrumbs\">\r\n <EachComp items={arr[1]} {...addOnsByName[name]} handleBreadcrumbMenu={handleBreadcrumbMenu} moreicon={true} sharedProps={sharedProps} />\r\n <Menu\r\n anchorEl={mobileBreadcrumbAnchorEl}\r\n anchorOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n open={isBreadcrumbMenu}\r\n onClose={handleMobileMenuClose}\r\n >\r\n {arr[0].map(each => {\r\n return (\r\n <div >\r\n < MenuItem onClick={(e) => navigatebreadcrumbmenu(each.menuhref ? each.menuhref : each.href)}>\r\n <Materialicon style={{ color: \"#130080\" }}>{each.materialicon}</Materialicon>\r\n <Typography className=\"pl-3\" style={{ color: \"#130080\" }} variant={'body2'}>{each.link}</Typography>\r\n </MenuItem>\r\n <Divider />\r\n </div>\r\n )\r\n })}\r\n </Menu>\r\n </div>\r\n )\r\n }\r\n else return <div><EachComp items={items} {...addOnsByName[name]} sharedProps={sharedProps} /></div>\r\n })}\r\n {extracomponents && initialloadextrainfo && initialloadextrainfo.results && <div className='flex-grow-1' />}\r\n {extracomponents && initialloadextrainfo && initialloadextrainfo.results && extracomponents.map(each => {\r\n if (initialloadextrainfo.results[each.value]) {\r\n let valuedata = initialloadextrainfo.results[each.value]\r\n if (each.trimvalue) {\r\n valuedata = (initialloadextrainfo.results[each.value].length > 16 ? `${(initialloadextrainfo.results[each.value]).substring(0, 16)}...` : `${initialloadextrainfo.results[each.value]}`)\r\n\r\n }\r\n let ExpressionType = each.exptype ? expressionFormats[each.exptype] : expressionFormats['default']\r\n let labelreplace = ExpressionType.replace(\"${label}\", each.label);\r\n let valuereplace = labelreplace.replace(\"${value}\", valuedata);\r\n\r\n return <Typography variant=\"body2\" gutterBottom>{valuereplace} </Typography>\r\n }\r\n return null\r\n })}\r\n <div className='flex-grow-1' />\r\n {extraactions && extraactions.map(each => {\r\n const { type, name, title, changecolor, hidecondition, hideconditionvalue, hasrolebasedcondition, ...otherProps } = each\r\n const EachComp = fieldTypes[type]\r\n return <EachComp {...otherProps} name={name} changecolor={changecolor} reportapplied={reportapplied} title={title} {...addOnsByName[name]} sharedProps={sharedProps} matchparams={props.match.params} />\r\n })}\r\n </AppBar>}\r\n {hassidebartabs &&\r\n <LeftSideBar {...((props.AccessPortal == 'E') || (props.accessPermissions && props.accessPermissions.portal == 'E')) ? ExternalApplicationSidebar[getEnvVariable('ModuleKey') + props.match.params.key] : NewApplicationSidebar[getEnvVariable('ModuleKey') + props.match.params.key]}>\r\n </LeftSideBar>\r\n }\r\n\r\n <div className=\"col-sm-12 col-xs-12 mt-1 grid-actions row\">\r\n {!extracomponents && components && components.map(each => {\r\n const { type, name, items, ...otherProps } = each\r\n const EachComp = fieldTypes[type]\r\n let arr = items ? _.chunk(items, _.findLastIndex(items)) : null\r\n if (type == 'breadcrumbs' && arr && arr.length > 1) {\r\n return (\r\n <div className=\"row col-sm-11 pl-1 breadcrumbs\">\r\n <EachComp items={arr[1]} {...addOnsByName[name]} handleBreadcrumbMenu={handleBreadcrumbMenu} moreicon={true} sharedProps={sharedProps} />\r\n <Menu\r\n anchorEl={mobileBreadcrumbAnchorEl}\r\n anchorOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n open={isBreadcrumbMenu}\r\n onClose={handleMobileMenuClose}\r\n >\r\n {arr[0].map(each => {\r\n return (\r\n <div >\r\n < MenuItem onClick={(e) => navigatebreadcrumbmenu(each.menuhref ? each.menuhref : each.href)}>\r\n <Materialicon style={{ color: \"#130080\" }}>{each.materialicon}</Materialicon>\r\n <Typography className=\"pl-3 m-3\" style={{ color: \"#130080\" }} variant={'body2'}>{each.link}</Typography>\r\n </MenuItem>\r\n <Divider />\r\n </div>\r\n )\r\n })}\r\n </Menu>\r\n </div>\r\n )\r\n }\r\n else return <div><EachComp items={items} {...addOnsByName[name]} sharedProps={sharedProps} /></div>\r\n })}\r\n <div className='flex-grow-1' />\r\n {actions && actions.length > 0 && !props.hideinmenu && <IconButton aria-haspopup=\"true\" title=\"More Items\" onClick={handleMobileMenuOpen} color=\"inherit\">\r\n <MoreIcon />\r\n </IconButton>}\r\n <Menu\r\n anchorEl={mobileMoreAnchorEl}\r\n anchorOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n open={isMobileMenuOpen}\r\n onClose={handleMobileMenuClose}\r\n >\r\n {actions && actions.map(each => {\r\n const { type, name, menucolor, hideon, hidevalue, hidecondition, hasrolebasedcondition, hideinexternal, hideconditionvalue, items, ...otherProps } = each\r\n let onClickEvents = addOnsByName[name]\r\n if (hasrolebasedcondition && !canAdd) {\r\n return null\r\n }\r\n if (hideinexternal && getEnvVariable('AccessPortal') === 'E') {\r\n return null\r\n }\r\n if (hidecondition && initialloadextrainfo && initialloadextrainfo.results) {\r\n let condition = null;\r\n condition = conditionsHandle({ ...props, \"options\": { \"hidecondition\": hidecondition } }, initialloadextrainfo.results)\r\n let adminuser = props && props.accessPermissions && (props.accessPermissions.isAdmin == \"Y\" || props.accessPermissions.isSuperAdmin == \"Y\") ? true : false\r\n if (!adminuser && condition && condition.condition) {\r\n return null\r\n }\r\n else {\r\n return (\r\n <div className={name}>\r\n < MenuItem onClick={(onClickEvents && onClickEvents.onClick) ? onClickEvents.onClick : ''} >\r\n <Icon icon={each.icon} menudisplay={true} color={menucolor} />\r\n <Typography className=\"pl-3\" variant={'body'} >{otherProps.title}</Typography>\r\n </MenuItem>\r\n <Divider />\r\n </div>\r\n )\r\n }\r\n }\r\n else if (sharedProps && (sharedProps[hideon] === hidevalue)) {\r\n return null\r\n }\r\n else if (hideconditionvalue && getEnvVariable('AccessPortal') === 'E' && JSON.parse(localStorage.getItem('externallock') == \"Y\")) {\r\n return null\r\n }\r\n else {\r\n if (type == \"menu\") {\r\n return (\r\n <div className={name}>\r\n < MenuItem onClick={handleMobileSubMenuOpen} >\r\n <Icon icon={each.icon} onClick={(e) => handleMobileSubMenuOpen(e)} menudisplay={true} color={menucolor} />\r\n <Typography className=\"pl-3\" variant={'body'} >{otherProps.title}</Typography>\r\n </MenuItem>\r\n {isMobileSubMenuOpen && <Menu\r\n anchorEl={mobileMoreAnchorEld}\r\n anchorOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n open={isMobileSubMenuOpen}\r\n onClose={handleMobileSubMenuClose}\r\n >\r\n {items && items.map(eachs => {\r\n return (\r\n <div >\r\n < MenuItem onClick={(onClickEvents && onClickEvents.onClick) ? (e) => onClickEvents.onClick(eachs.action) : ''} >\r\n <Typography className=\"pl-3\" variant={'body'} >{eachs.name}</Typography>\r\n </MenuItem>\r\n <Divider />\r\n </div>\r\n )\r\n })}\r\n </Menu>}\r\n <Divider />\r\n </div>\r\n )\r\n }\r\n else {\r\n return (\r\n <div className={name}>\r\n < MenuItem onClick={(onClickEvents && onClickEvents.onClick) ? onClickEvents.onClick : ''} >\r\n <Icon icon={each.icon} menudisplay={true} color={menucolor} />\r\n <Typography className=\"pl-3\" variant={'body'} >{otherProps.title}</Typography>\r\n </MenuItem>\r\n <Divider />\r\n </div>\r\n )\r\n }\r\n\r\n }\r\n })\r\n }\r\n </Menu>\r\n {extracomponent && <div className='flex-grow-1' />}\r\n {extracomponent && extracomponent.map(each => {\r\n const { type, name, title, ...otherProps } = each\r\n const EachComp = fieldTypes[type]\r\n return <EachComp {...otherProps} name={name} title={title} {...addOnsByName[name]} handleSearchChange={props.handleSearchChange} search={props.search} sharedProps={sharedProps} />\r\n })}\r\n </div>\r\n </div>\r\n )\r\n }\r\n else {\r\n return (\r\n <>\r\n {hassidebartabs &&\r\n <AppBar position=\"sticky\" color='secondary'>\r\n <Toolbar variant=\"dense\">\r\n {components && components.map(each => {\r\n const { type, name, ...otherProps } = each\r\n const EachComp = fieldTypes[type]\r\n return <div className={type}><EachComp {...otherProps} {...addOnsByName[name]} sharedProps={sharedProps} /></div>\r\n })}\r\n {extracomponents && initialloadextrainfo && initialloadextrainfo.results && <div className='flex-grow-1' />}\r\n {extracomponents && initialloadextrainfo && initialloadextrainfo.results && extracomponents.map(each => {\r\n if (initialloadextrainfo.results[each.value]) {\r\n let valuedata = initialloadextrainfo.results[each.value]\r\n if (each.trimvalue) {\r\n valuedata = (initialloadextrainfo.results[each.value].length > 16 ? `${(initialloadextrainfo.results[each.value]).substring(0, 16)}...` : `${initialloadextrainfo.results[each.value]}`)\r\n\r\n }\r\n let ExpressionType = each.exptype ? expressionFormats[each.exptype] : expressionFormats['default']\r\n let labelreplace = ExpressionType.replace(\"${label}\", each.label);\r\n let valuereplace = labelreplace.replace(\"${value}\", valuedata);\r\n return <Typography variant=\"body2\" gutterBottom>{valuereplace} </Typography>\r\n }\r\n return null\r\n })}\r\n <div className='flex-grow-1' />\r\n {extraactions && extraactions.map(each => {\r\n const { type, name, title, changecolor, hidecondition, hideconditionvalue, hasrolebasedcondition, ...otherProps } = each\r\n const EachComp = fieldTypes[type]\r\n return <EachComp {...otherProps} name={name} changecolor={changecolor} reportapplied={reportapplied} title={title} {...addOnsByName[name]} sharedProps={sharedProps} matchparams={props.match.params} />\r\n })}\r\n </Toolbar></AppBar>\r\n }\r\n {hassidebartabs &&\r\n <LeftSideBar {...((props.AccessPortal == 'E') || ( props.accessPermissions && props.accessPermissions.portal == 'E')) ? ExternalApplicationSidebar[getEnvVariable('ModuleKey') + props.match.params.key] : NewApplicationSidebar[getEnvVariable('ModuleKey') + props.match.params.key]}>\r\n </LeftSideBar>\r\n }\r\n <div className=\"d-flex my-1\" style={{ marginRight: '20px', marginLeft: '10px' }}>\r\n {!extracomponents && components &&\r\n <div>\r\n {components.map(each => {\r\n const { type, name, ...otherProps } = each\r\n const EachComp = fieldTypes[type]\r\n return <div className={type}><EachComp {...otherProps} {...addOnsByName[name]} sharedProps={sharedProps} /></div>\r\n })}\r\n </div>}\r\n {actions &&\r\n <div className=\"ms-auto\">\r\n <div className=\"row\" style={{ marginRight: '5px' }}>\r\n {actions.map(each => {\r\n const { type, name, title, changecolor, hidecondition, hideconditionvalue, hasrolebasedcondition, hideinexternal, ...otherProps } = each\r\n if (hasrolebasedcondition && !canAdd) {\r\n return null\r\n }\r\n if (hidecondition && initialloadextrainfo && initialloadextrainfo.results) {\r\n let condition = null;\r\n condition = conditionsHandle({ ...props, \"options\": { \"hidecondition\": hidecondition } }, initialloadextrainfo.results)\r\n let adminuser = props && props.accessPermissions && (props.accessPermissions.isAdmin == \"Y\" || props.accessPermissions.isSuperAdmin == \"Y\") ? true : false\r\n if (!adminuser && condition && condition.condition) {\r\n return null\r\n }\r\n }\r\n if (hideinexternal && getEnvVariable('AccessPortal') === 'E') {\r\n return null\r\n }\r\n //temp fix\r\n if (hideconditionvalue && getEnvVariable('AccessPortal') === 'E' && JSON.parse(localStorage.getItem('externallock') == \"Y\")) {\r\n return null\r\n }\r\n const EachComp = fieldTypes[type]\r\n return <EachComp {...otherProps} name={name} changecolor={changecolor} reportapplied={reportapplied} title={title} {...addOnsByName[name]} sharedProps={sharedProps} matchparams={props.match.params} />\r\n })}\r\n </div>\r\n </div>}\r\n {/* {extracomponent && <div className='flex-grow-1' />} */}\r\n {extracomponent && extracomponent.map(each => {\r\n const { type, name, title, ...otherProps } = each\r\n const EachComp = fieldTypes[type]\r\n return <EachComp {...otherProps} name={name} title={title} {...addOnsByName[name]} handleSearchChange={props.handleSearchChange} search={props.search} sharedProps={sharedProps} />\r\n })}\r\n </div>\r\n </>\r\n )\r\n }\r\n}\r\n\r\n\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage }, dispatch);\r\n}\r\n\r\nKendoHeader = connect(null, mapActions)(KendoHeader)\r\nexport default withWidth()(withRouter(KendoHeader));","import React from 'react';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Fab from './fab';\r\n\r\nexport default function SimpleMenu(props) {\r\n const { icon, type, title, color, name, items, onClick, ...otherProps } = props\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n\r\n const handleClick = (event) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleClose = (evt, action) => {\r\n setAnchorEl(null);\r\n if (action === 'filterall' || action == 'filtercurrent')\r\n onClick(action)\r\n };\r\n\r\n return (\r\n <div className='col m-0 p-0'>\r\n <Fab className={name} title={title ? title : ''} color={color ? color : \"inherit\"} icon={icon} onClick={handleClick} {...otherProps}>\r\n Open Menu\r\n </Fab>\r\n <Menu\r\n id=\"simple-menu\"\r\n anchorEl={anchorEl}\r\n keepMounted\r\n open={Boolean(anchorEl)}\r\n onClose={handleClose}\r\n >\r\n {items.map(each => { return <MenuItem onClick={(evt) => handleClose(evt, each.action)}>{each.name}</MenuItem> })}\r\n </Menu>\r\n </div>\r\n );\r\n}\r\n","import * as React from 'react';\r\nimport Button from '@material-ui/core/Button';\r\nimport Icon from '@material-ui/core/Icon';\r\n\r\nclass ErrorHandler extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { error: null, errorInfo: null };\r\n }\r\n\r\n componentDidCatch(error, errorInfo) {\r\n this.setState({\r\n error: error,\r\n errorInfo: errorInfo\r\n });\r\n }\r\n\r\n render() {\r\n if (this.state.errorInfo) {\r\n return (\r\n <div className=\"eps-content-center\">\r\n <div className=\"text-center \">\r\n <Icon className=\"text-center \" color=\"primary\" style={{ fontSize: '9rem' }}>live_help</Icon></div>\r\n <h1 className=\"text-center\"> Contact Support Team </h1>\r\n <div className=\"text-center p-2\">\r\n <Button variant=\"contained\" size=\"small\" color=\"primary\" target=\"_self\" onClick={() => { window.location.replace('#'); window.location.reload() }}>Home</Button>\r\n </div>\r\n </div>\r\n );\r\n }\r\n // Render children if there's no error\r\n return this.props.children;\r\n }\r\n}\r\n\r\nexport default ErrorHandler; "," /** \r\n *********************************************************\r\n deprecated\r\n *********************************************************\r\n **/ \r\nexport function delcomp(components,items) {\r\n return components.filter(each => {\r\n const founditem = items.find(e => {\r\n return e.key === each.key\r\n })\r\n if (!founditem) return true\r\n else return false\r\n })\r\n}\r\n\r\nexport function addcomp(components,items) {\r\n return components.concat(items)\r\n}\r\n\r\n\r\nexport function updatecomp() {\r\n\r\n}"," /** \r\n *********************************************************\r\n deprecated\r\n *********************************************************\r\n **/ \r\n\r\nimport { addcomp, delcomp, updatecomp} from './utilities'\r\n\r\nconst adminformReducer =(state = null, action)=> {\r\n const items = action.message\r\n switch (action.type) {\r\n case 'ADMINFORM_STATUS_SAVE':\r\n return { ...state, ...items }\r\n case 'ADMINFORM_STATUS_DEL':\r\n return { ...state, components: delcomp(state.components, items) }\r\n case 'ADMINFORM_STATUS_ADD':\r\n return { ...state, components: addcomp(state.components, items) }\r\n case 'ADMINFORM_STATUS_UPDATE':\r\n return { ...state }\r\n default:\r\n return state\r\n\r\n }\r\n}\r\n\r\nexport default adminformReducer","\r\nimport { addcomp, delcomp, updatecomp } from './utilities'\r\n\r\nconst headerReducer = (state = null, action) => {\r\n const items = action.message\r\n switch (action.type) {\r\n case 'HEADER_STATUS_SAVE':\r\n return { ...state, ...items }\r\n case 'HEADER_STATUS_DEL':\r\n return { ...state, components: delcomp(state.components, items) }\r\n case 'HEADER_STATUS_ADD':\r\n return { ...state, components: addcomp(state.components, items) }\r\n case 'HEADER_STATUS_UPDATE':\r\n return { ...state }\r\n case 'NOTIFICATIONS':\r\n return { ...state, notifications: action.notifications }\r\n case 'OPEN_TOUR':\r\n return { ...state, isTourOpen: action.isTourOpen }\r\n case 'CLOSE_TOUR':\r\n return { ...state, isTourOpen: action.isTourOpen }\r\n case 'WORKFLOW_RELOAD':\r\n return { ...state, workflowreload: action.workflowreload }\r\n case 'RECORDS_PREVVALUE':\r\n return { ...state, recordssetvalue: action.recordssetvalue }\r\n case 'UNSAVED_DATA':\r\n return { ...state, unsaveddata: action.unsaveddata, initialdata: action.initialdata }\r\n case 'PROJMESSAGES':\r\n let messages = {}\r\n action.projmessages.forEach(e => messages[e.Key] = e.Message)\r\n return { ...state, projmessages: messages }\r\n case 'PASSTAB_DATA':\r\n return { ...state, passtabdata: action.passtabdata, initialdata: action.initialdata }\r\n case 'RECORD_DATA':\r\n return { ...state, recordidinfo: action.recordidinfo, recorddata: action.recorddata }\r\n case 'RESET_VALUES':\r\n return { ...state, resetval: action.isreset }\r\n case 'ONEVENT_STATUS_TRANS':\r\n return { ...state, onEventTransition: action.onEventTransition }\r\n case 'ONEVENT_SHOW_ERRORS':\r\n return { ...state, onEventshowError: action.onEventshowError }\r\n case 'TRIGGER_ONLOAD_SAVE':\r\n return { ...state, onTriggerSave: action.onTriggerSave }\r\n case 'SITE_PERMIT_TYPE_STATUS':\r\n return { ...state, onSitePermitTypesStatus: action.onSitePermitTypesStatus}\r\n case 'TRIGGER_AFTER_SAVE':\r\n return { ...state, onTirggerAfterSave: action.onTirggerAfterSave}\r\n default:\r\n return state\r\n\r\n }\r\n}\r\n\r\nexport default headerReducer","\r\nconst sidebarReducer = (state = null, action) => {\r\n switch (action.type) {\r\n case 'STORE_MODULES_DATA':\r\n return { ...state, ['modules']: action.modules }\r\n case 'BUSINESS_RULES_ONEVENT':\r\n return { ...state, ['effects']: action.effects }\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default sidebarReducer","\r\nconst snackbarReducer = (state = null, action) => {\r\n\r\n switch (action.type) {\r\n case 'SNACKBAR_MESSAGE':\r\n return { ...state, snackbarmessage: action.snackmessage, snackbarmessageType: action.snackbarmessageType }\r\n\r\n default:\r\n return state\r\n\r\n }\r\n}\r\n\r\nexport default snackbarReducer","\r\n\r\nconst confirmationReducer = (state = null, action) => {\r\n\r\n switch (action.type) {\r\n case 'CONFIRMATION':\r\n return { ...state, onSubmit: action.onyes, onClose: action.onno, description: action.description, value: action.value }\r\n\r\n default:\r\n return state\r\n\r\n }\r\n}\r\n\r\nexport default confirmationReducer","/**\r\n *********************************************************\r\n deprecated\r\n *********************************************************\r\n**/\r\nimport { combineReducers } from 'redux'\r\nimport authentication from '../security/authentication'\r\nimport { compmapReducer } from '../../wrappers/viewport'\r\nimport adminformReducer from './adminform'\r\nimport headerReducer from './header'\r\nimport sidebarReducer from './sidebar'\r\nimport snackbar from './snackbar'\r\nimport confirmation from './confirmation'\r\n\r\nexport default combineReducers({\r\n header: headerReducer,\r\n sidebar: sidebarReducer,\r\n adminform: adminformReducer,\r\n authentication: authentication,\r\n snackbar: snackbar,\r\n compmapvalues: compmapReducer,\r\n confirmation: confirmation\r\n})\r\n\r\n","import { createTheme } from '@material-ui/core/styles';\r\n\r\nconst colors = {\r\n white: '#fafafa !important',\r\n}\r\nexport const theme = createTheme({\r\n palette: {\r\n // primary: index\r\n },\r\n typography: {\r\n fontFamily: [\r\n 'Montserrat', 'sans-serif'\r\n ].join(','),\r\n subheading: {\r\n fontFamily: [\r\n 'Montserrat', 'sans-serif',\r\n ].join(',')\r\n },\r\n h6: {\r\n color: \"inherit\"\r\n }\r\n },\r\n overrides: {\r\n MuiToolbar :{\r\n dense: {\r\n minHeight: '43px !Important' \r\n }\r\n },\r\n MuiCssBaseline: {\r\n '@global': {\r\n '*::-webkit-scrollbar': {\r\n // width: '0.6em',\r\n // height: '0.45em'\r\n },\r\n '*::-webkit-scrollbar-track': {\r\n '-webkit-box-shadow': 'inset 0 0 6px rgba(0,0,0,0.00)'\r\n },\r\n '*::-webkit-scrollbar-thumb': {\r\n backgroundColor: 'rgba(0,0,0,.5)',\r\n outline: '1px solid slategrey'\r\n },\r\n }\r\n },\r\n MuiDrawer: {\r\n\r\n },\r\n MuiFab: {\r\n secondary: {\r\n backgroundColor: '#1976d2 !important'\r\n },\r\n\r\n },\r\n MuiButton: {\r\n text: {\r\n textTransform: 'none',\r\n },\r\n containedPrimary: {\r\n color: '#fafafa !important',\r\n backgroundColor: '#074078 !important'\r\n },\r\n\r\n root: {\r\n textTransform: 'none'\r\n }\r\n },\r\n // MuiIconButton: {\r\n // /* colorSecondary: {\r\n // backgroundColor: '#212529 !important'\r\n // }*/\r\n // },\r\n MuiIcon: {\r\n root: {\r\n lineHeight: 'initial'\r\n }\r\n },\r\n\r\n MuiCheckbox: {\r\n colorPrimary: {\r\n color: '#1976d2 !important',\r\n },\r\n colorSecondary: {\r\n color: '#1976d2 !important',\r\n }\r\n },\r\n // MuiSwitch: {\r\n // colorPrimary: {\r\n // color: '#1976d2 !important',\r\n // },\r\n // colorSecondary: {\r\n // color: '#1976d2 !important',\r\n // }\r\n // },\r\n MuiAppBar: {\r\n colorPrimary: {\r\n color: colors.white,\r\n backgroundColor: '#212529 !important'\r\n },\r\n colorSecondary: {\r\n color: colors.white,\r\n backgroundColor: '#1976d2 !important'\r\n },\r\n colorDefault: {\r\n //color: '#fafafa !important',\r\n color: colors.white,\r\n backgroundColor: '#42a5f5 !important'\r\n }\r\n },\r\n MuiTypography: {\r\n colorPrimary: {\r\n color: '#074078'\r\n },\r\n colorSecondary: {\r\n color: '#1f1d1d !important'\r\n },\r\n section:{\r\n color: '#ffffff !important'\r\n }\r\n\r\n },\r\n MuiFormControl: {\r\n root: {\r\n zIndex: 'auto'\r\n }\r\n },\r\n MuiExpansionPanel: {\r\n root: {\r\n MuiExpanded: false\r\n }\r\n },\r\n MuiInputBase: {\r\n root: {\r\n marginTop: '0px',\r\n color: 'grey'\r\n }\r\n },\r\n MuiInputLabel: {\r\n formControl: {\r\n marginTop: '0px'\r\n }\r\n },\r\n // MuiInput:{\r\n // formControl: {\r\n // marginTop: '1px !important'\r\n // }\r\n // },\r\n MuiLinearProgress: {\r\n root: {\r\n height: 5\r\n }\r\n },\r\n MuiTab: {\r\n root: {\r\n 'text-transform': 'capitalize'\r\n }\r\n },\r\n MuiIconButton: {\r\n root: {\r\n padding: '3px'\r\n },\r\n colorPrimary: {\r\n color: '#074078 !important',\r\n },\r\n },\r\n MuiAccordionDetails: {\r\n root: {\r\n padding: '0px'\r\n }\r\n },\r\n MuiFormLabel: {\r\n root: {\r\n color: 'black',\r\n fontWeight: 'bold'\r\n },\r\n asterisk: {\r\n color: 'red',\r\n }\r\n },\r\n MuiMenu: {\r\n paper: {\r\n maxHeight: '250px'\r\n }\r\n }\r\n }\r\n});\r\n\r\nexport const aps_theme = createTheme({\r\n palette: {\r\n // primary: index\r\n },\r\n typography: {\r\n fontFamily: [\r\n 'Montserrat', 'sans-serif'\r\n ].join(','),\r\n subheading: {\r\n fontFamily: [\r\n 'Montserrat', 'sans-serif',\r\n ].join(',')\r\n },\r\n h6: {\r\n color: \"inherit\"\r\n }\r\n },\r\n overrides: {\r\n MuiCssBaseline: {\r\n '@global': {\r\n '*::-webkit-scrollbar': {\r\n // width: '0.6em',\r\n // height: '0.45em'\r\n },\r\n '*::-webkit-scrollbar-track': {\r\n '-webkit-box-shadow': 'inset 0 0 6px rgba(0,0,0,0.00)'\r\n },\r\n '*::-webkit-scrollbar-thumb': {\r\n backgroundColor: 'rgba(0,0,0,.5)',\r\n outline: '1px solid slategrey'\r\n },\r\n }\r\n },\r\n MuiDrawer: {\r\n \r\n },\r\n // added for WRS landing page -Vijaya\r\n MuiToolbar :{\r\n dense: {\r\n minHeight: '43px !Important' \r\n }\r\n },\r\n MuiFab: {\r\n secondary: {\r\n backgroundColor: '#1976d2 !important'\r\n },\r\n\r\n },\r\n MuiButton: {\r\n text: {\r\n textTransform: 'none',\r\n },\r\n containedPrimary: {\r\n color: '#fafafa !important',\r\n backgroundColor: '#074078 !important'\r\n },\r\n\r\n root: {\r\n textTransform: 'none'\r\n }\r\n },\r\n MuiIconButton: {\r\n /* colorSecondary: {\r\n backgroundColor: '#212529 !important'\r\n }*/\r\n },\r\n MuiIcon: {\r\n root: {\r\n lineHeight: 'initial'\r\n }\r\n },\r\n\r\n MuiCheckbox: {\r\n colorPrimary: {\r\n color: '#1976d2 !important',\r\n },\r\n colorSecondary: {\r\n color: '#1976d2 !important',\r\n }\r\n },\r\n // MuiSwitch: {\r\n // colorPrimary: {\r\n // color: '#1976d2 !important',\r\n // },\r\n // colorSecondary: {\r\n // color: '#1976d2 !important',\r\n // }\r\n // },\r\n MuiAppBar: {\r\n colorPrimary: {\r\n color: colors.white,\r\n backgroundColor: '#212529 !important'\r\n },\r\n colorSecondary: {\r\n color: colors.white,\r\n backgroundColor: '#3E7044 !important'\r\n },\r\n colorDefault: {\r\n //color: '#fafafa !important',\r\n color: colors.white,\r\n backgroundColor: '#42a5f5 !important'\r\n }\r\n },\r\n MuiTypography: {\r\n colorPrimary: {\r\n color: '#074078'\r\n },\r\n colorSecondary: {\r\n color: '#1f1d1d !important'\r\n },\r\n section: {\r\n color: '#ffffff !important'\r\n }\r\n\r\n },\r\n MuiFormControl: {\r\n root: {\r\n zIndex: 'auto'\r\n }\r\n },\r\n MuiExpansionPanel: {\r\n root: {\r\n MuiExpanded: false\r\n }\r\n },\r\n MuiInputBase: {\r\n root: {\r\n marginTop: '0px',\r\n color: 'grey'\r\n }\r\n },\r\n MuiInputLabel: {\r\n formControl: {\r\n marginTop: '0px'\r\n },\r\n asterisk:{\r\n color: 'red',\r\n }\r\n },\r\n // MuiInput:{\r\n // formControl: {\r\n // marginTop: '1px !important'\r\n // }\r\n // },\r\n MuiLinearProgress: {\r\n root: {\r\n height: 5\r\n }\r\n },\r\n MuiTab: {\r\n root: {\r\n 'text-transform': 'capitalize'\r\n }\r\n },\r\n MuiIconButton: {\r\n root: {\r\n padding: '3px'\r\n },\r\n colorPrimary: {\r\n color: '#074078 !important',\r\n },\r\n },\r\n MuiAccordionDetails: {\r\n root: {\r\n padding: '0px'\r\n }\r\n },\r\n MuiFormLabel: {\r\n root: {\r\n color: 'black',\r\n fontWeight: 'bold'\r\n }\r\n },\r\n MuiMenu: {\r\n paper: {\r\n maxHeight: '250px'\r\n }\r\n }\r\n }\r\n});\r\n\r\nexport const wrs_theme = createTheme({\r\n palette: {\r\n // primary: index\r\n },\r\n typography: {\r\n fontFamily: [\r\n 'Montserrat', 'sans-serif'\r\n ].join(','),\r\n subheading: {\r\n fontFamily: [\r\n 'Montserrat', 'sans-serif',\r\n ].join(',')\r\n },\r\n h6: {\r\n color: \"inherit\"\r\n }\r\n },\r\n overrides: {\r\n MuiCssBaseline: {\r\n '@global': {\r\n '*::-webkit-scrollbar': {\r\n width: '0.8em',\r\n height: '0.9em'\r\n },\r\n '*::-webkit-scrollbar-track': {\r\n '-webkit-box-shadow': 'inset 0 0 6px rgba(0,0,0,0.00)'\r\n },\r\n '*::-webkit-scrollbar-thumb': {\r\n backgroundColor: '#074078 !important',//'rgba(0,0,0,.5)',\r\n outline: '1px solid #074078'\r\n },\r\n }\r\n },\r\n MuiDrawer: {\r\n paper: {\r\n overflow: 'hidden'\r\n }\r\n },\r\n MuiFab: {\r\n secondary: {\r\n backgroundColor: '#1976d2 !important'\r\n },\r\n\r\n },\r\n MuiToolbar :{\r\n dense: {\r\n minHeight: '43px !Important' \r\n }\r\n },\r\n MuiButton: {\r\n text: {\r\n textTransform: 'none',\r\n },\r\n containedPrimary: {\r\n color: '#fafafa !important',\r\n backgroundColor: '#074078 !important'\r\n },\r\n\r\n root: {\r\n textTransform: 'none'\r\n }\r\n },\r\n // MuiIconButton: {\r\n // /* colorSecondary: {\r\n // backgroundColor: '#212529 !important'\r\n // }*/\r\n // },\r\n MuiIcon: {\r\n root: {\r\n lineHeight: 'initial'\r\n }\r\n },\r\n MuiRadio: {\r\n colorPrimary: {\r\n color: '#074078 !important',\r\n },\r\n colorSecondary: {\r\n color: '#074078 !important',\r\n }\r\n },\r\n MuiCheckbox: {\r\n colorPrimary: {\r\n color: '#074078 !important',\r\n },\r\n colorSecondary: {\r\n color: '#074078 !important',\r\n }\r\n },\r\n MuiToolbar :{\r\n dense: {\r\n minHeight: '43px !Important' \r\n }\r\n },\r\n MuiFab: {\r\n primary: {\r\n backgroundColor: '#074078 !important',\r\n color: 'white !important'\r\n },\r\n secondary: {\r\n backgroundColor: '#074078 !important',\r\n color: 'white !important'\r\n }\r\n },\r\n // MuiSwitch: {\r\n // colorPrimary: {\r\n // color: '#1976d2 !important',\r\n // },\r\n // colorSecondary: {\r\n // color: '#1976d2 !important',\r\n // }\r\n // },\r\n MuiAppBar: {\r\n colorPrimary: {\r\n color: colors.white,\r\n backgroundColor: '#074078 !important'\r\n },\r\n colorSecondary: {\r\n color: colors.white,\r\n backgroundColor: '#074078 !important'\r\n },\r\n colorDefault: {\r\n //color: '#fafafa !important',\r\n color: colors.white,\r\n backgroundColor: '#074078 !important'\r\n }\r\n },\r\n MuiTypography: {\r\n colorPrimary: {\r\n color: '#074078'\r\n },\r\n colorSecondary: {\r\n color: '#1f1d1d !important'\r\n },\r\n section: {\r\n color: '#ffffff !important'\r\n }\r\n // colorPrimary: { color: '#0076A5 !important' }\r\n\r\n },\r\n // MuiTab: {\r\n // textColorPrimary: {\r\n // MuiSelected: { color: '#0076A5 !important' }\r\n // }\r\n // },\r\n MuiBox: {\r\n root: {\r\n padding: '20px !important'\r\n }\r\n },\r\n MuiFormControl: {\r\n root: {\r\n zIndex: 'auto'\r\n },\r\n },\r\n MuiExpansionPanel: {\r\n root: {\r\n MuiExpanded: false\r\n }\r\n },\r\n MuiInputBase: {\r\n root: {\r\n marginTop: '0px',\r\n color: 'grey'\r\n }\r\n },\r\n MuiInputLabel: {\r\n formControl: {\r\n marginTop: '0px'\r\n },\r\n asterisk:{\r\n color:'red'\r\n }\r\n },\r\n // MuiInput:{\r\n // formControl: {\r\n // marginTop: '1px !important'\r\n // }\r\n // },\r\n MuiLinearProgress: {\r\n root: {\r\n height: 5\r\n }\r\n },\r\n MuiTab: {\r\n root: {\r\n 'text-transform': 'capitalize'\r\n }\r\n },\r\n MuiIconButton: {\r\n root: {\r\n padding: '3px'\r\n },\r\n colorPrimary: {\r\n color: '#074078 !important',\r\n },\r\n },\r\n MuiAccordionDetails: {\r\n root: {\r\n padding: '0px'\r\n }\r\n },\r\n MuiFormLabel: {\r\n root: {\r\n color: 'black',\r\n fontWeight: 'bold'\r\n },\r\n asterisk:{\r\n color:'red'\r\n }\r\n\r\n },\r\n MuiMenu: {\r\n paper: {\r\n maxHeight: '250px'\r\n }\r\n },\r\n }\r\n});\r\n","import CssBaseline from '@material-ui/core/CssBaseline';\r\nimport { MuiThemeProvider } from '@material-ui/core/styles';\r\nimport React, { lazy, Suspense } from \"react\";\r\nimport { createRoot } from 'react-dom/client';\r\nimport { Provider } from 'react-redux';\r\nimport { applyMiddleware, createStore } from 'redux';\r\nimport thunk from 'redux-thunk';\r\nimport ErrorHandler from './core/modules/ErrorHandler';\r\nimport reducers from './core/reducers';\r\nimport { getEnvVariable } from \"./modules/environmentalList\";\r\nimport { theme, aps_theme, wrs_theme } from './styles/material-theme';\r\n\r\nconst store = createStore(reducers, applyMiddleware(thunk));\r\n\r\nfunction component(id, classes) {\r\n var element = document.createElement('div');\r\n element.setAttribute(\"id\", id);\r\n classes.forEach(e => element.classList.add(e))\r\n return element;\r\n};\r\n\r\nfunction GetApp(moduleKey) {\r\n if (moduleKey === 'AMES')\r\n return lazy(() => import('./app/App_AMES'))\r\n if (moduleKey === 'WRS')\r\n return lazy(() => import('./app/App_WRS'))\r\n}\r\n\r\nfunction GetTheme(moduleKey) {\r\n if (moduleKey === 'AMES')\r\n return theme\r\n else if (moduleKey === 'WRS')\r\n return wrs_theme\r\n else return theme\r\n}\r\n\r\nconst MaterialTheme = GetTheme(getEnvVariable('ModuleKey'))\r\nconst App = GetApp(getEnvVariable('ModuleKey'));\r\n\r\n\r\ndocument.body.appendChild(component('ames-backdrop', ['ames-class']));\r\nconst container = document.getElementById('root');\r\nconst root = createRoot(container);\r\n\r\nroot.render(\r\n <MuiThemeProvider theme={MaterialTheme}>\r\n <CssBaseline>\r\n <ErrorHandler>\r\n <Provider store={store}>\r\n <Suspense fallback={<div ></div>}>\r\n <App />\r\n </Suspense>\r\n </Provider>\r\n </ErrorHandler>\r\n </CssBaseline>\r\n </MuiThemeProvider>\r\n);\r\n\r\n\r\n\r\n","import { toDataSourceRequestString } from '@progress/kendo-data-query';\r\nimport { DeleteRecord, GetData, PostData, PostFormData, PutData } from './requests';\r\n\r\nexport const createRequest = (request, results, routeValues) => {\r\n let ids = [];\r\n let tempBody = null\r\n if (request) {\r\n const { type, url, routeProps, matchProps, initialloadextrainfoProps, body, replaceBody, customBody, alert, message, word, condition, alternateUrl, loaderMessage, ...otherProps } = request;\r\n let tempUrl = url;\r\n if (type === 'post' && replaceBody) {\r\n tempBody = createBody(body, matchProps, results, word)\r\n if (condition) {\r\n let isTrue = condition.every(each => {\r\n if (each.value === each.name.split(\".\").reduce((res, prop) => { return res && res[prop] }, tempBody[0],))\r\n return true\r\n })\r\n if (isTrue) {\r\n tempUrl = alternateUrl;\r\n }\r\n }\r\n return { url: tempUrl, body: tempBody[0], type: type, id: ids, alert: alert, message: message, loaderMessage: loaderMessage }\r\n\r\n }\r\n else {\r\n ids = ids.concat(createIds(routeProps, routeValues))\r\n ids = ids.concat(createIds(matchProps, results))\r\n if (results && results.initialloadextrainfo && results.initialloadextrainfo.results) {\r\n ids = ids.concat(createIds(initialloadextrainfoProps, results.initialloadextrainfo.results))\r\n }\r\n if (condition) {\r\n let isTrue = condition.every(each => {\r\n if (each.value === each.name.split(\".\").reduce((res, prop) => { return res && res[prop] }, results))\r\n return true\r\n })\r\n if (isTrue) {\r\n tempUrl = alternateUrl;\r\n }\r\n }\r\n return { url: tempUrl, body: customBody ? body : results, type: type, id: ids, alert: alert, message: message, loaderMessage: loaderMessage }\r\n }\r\n\r\n }\r\n else return null\r\n}\r\n\r\nexport const createGridRequest = (request, results, routeValues, extras) => {\r\n let ids = []\r\n let queryStr = ''\r\n if (request) {\r\n const { type, url, alternateUrl, condition, routeProps, matchProps, alert, message, body, word, removeObjParams, replaceBody, isNotQueryStr, verify, loaderMessage, ...otherProps } = request\r\n let tempUrl = url\r\n if (type === 'post' && replaceBody) {\r\n let tempBody = createBody(body, matchProps, results, word);\r\n if (removeObjParams && removeObjParams.length > 0) {\r\n removeObjParams.map(each => {\r\n delete tempBody[0][each]\r\n })\r\n }\r\n if (condition) {\r\n let isTrue = condition.every(each => {\r\n if (each.value === each.name.split(\".\").reduce((res, prop) => { return res && res[prop] }, tempBody[0],))\r\n return true\r\n })\r\n if (isTrue) {\r\n tempUrl = alternateUrl;\r\n }\r\n }\r\n return { url: tempUrl, body: tempBody[0], type: type, id: ids, alert: alert, message: message, loaderMessage: loaderMessage }\r\n }\r\n else {\r\n ids = ids.concat(createIds(routeProps, routeValues))\r\n ids = ids.concat(createIds(matchProps, results))\r\n queryStr = !isNotQueryStr ? `${toDataSourceRequestString(extras)}` : '';\r\n if (removeObjParams && removeObjParams.length > 0) {\r\n removeObjParams.map(each => {\r\n delete results[each]\r\n })\r\n }\r\n if (condition) {\r\n let tempBody = (verify && results[verify] ? results : body) || results;\r\n let isTrue = condition.every(each => {\r\n if (each.value === each.name.split(\".\").reduce((res, prop) => { return res && res[prop] }, tempBody))\r\n return true\r\n })\r\n if (isTrue) {\r\n tempUrl = alternateUrl;\r\n }\r\n }\r\n return { url: tempUrl + queryStr, body: (verify && results[verify] ? results : body) || results, type: type, id: ids, alert: alert, message: message, loaderMessage: loaderMessage }\r\n }\r\n }\r\n else return null\r\n}\r\n\r\nexport const createBody = (body, props, results, word) => {\r\n if (Array.isArray(props)) {\r\n return props && props.length > 0 && props.map(each => {\r\n const { key, name } = each;\r\n let temp = name.split(\".\").reduce((res, prop) => { return res && res[prop] }, results)\r\n return { [`${word}`]: temp };\r\n })\r\n }\r\n else return body\r\n}\r\n\r\nexport const createIds = (props, results) => {\r\n if (Array.isArray(props)) {\r\n return props.map(each => {\r\n const { key, name, removeSpace } = each;\r\n let temp = name.split(\".\").reduce((res, prop) => { return res && res[prop] }, results)\r\n return { key: key, value: removeSpace ? temp.replace(/\\s/g, '') : temp } //name.split(\".\").reduce((res, prop) => { return res && res[prop] }, results)\r\n })\r\n }\r\n else return []\r\n}\r\n\r\nexport const requestApi = (request, customAlert = false) => {\r\n if (request) {\r\n let {\r\n type,\r\n body,\r\n url, //query part of url\r\n id, alert, message, loaderMessage\r\n } = request\r\n\r\n id && id.forEach(each => {\r\n const { key, value } = each\r\n if (url) url = `${url.replace(`{${key}}`, value)}`;\r\n });\r\n\r\n switch (type) {\r\n case 'get':\r\n return GetData(url, alert, message, true, loaderMessage)\r\n case 'put':\r\n return PutData(url, body, alert = customAlert, message, loaderMessage)\r\n case 'post':\r\n return PostData(url, body, alert, message, loaderMessage)\r\n case 'postfromdata':\r\n return PostFormData(url, body)\r\n case 'delete':\r\n return DeleteRecord(url)\r\n default:\r\n return true\r\n }\r\n }\r\n else return null\r\n}","\r\nimport { getEnvVariable } from '../../../modules/environmentalList';\r\nimport { getBasePath, GetFetchProps, GetHeaders, getProfile } from '../../modules/header';\r\nimport DefaultSettings from '../components/settings';\r\n//import { lensPath } from 'ramda';\r\n\r\n// const Insert503 = (url) => {\r\n// if (localStorage.getItem('503')) {\r\n// let items = JSON.parse(localStorage.getItem('503'));\r\n// if (items[url]) {\r\n// items[url] = items[url] + 1;\r\n// }\r\n// else {\r\n// items[url] = 1;\r\n// }\r\n// localStorage.setItem('503', JSON.stringify(items))\r\n// return items[url]\r\n// }\r\n// else {\r\n// let items = {}\r\n// items[url] = 1;\r\n// localStorage.setItem('503', JSON.stringify(items))\r\n// return items[url]\r\n// }\r\n// }\r\n\r\n// const Delete503 = (url) => {\r\n// if (localStorage.getItem('503')) {\r\n// let items = JSON.parse(localStorage.getItem('503'))\r\n// if (items[url]) {\r\n// delete items[url]\r\n// localStorage.setItem('503', JSON.stringify(items))\r\n// }\r\n// }\r\n// }\r\n\r\n\r\nexport const asyncgetData = async (url, isLoader = true) => {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().add();\r\n try {\r\n const response = await fetch(`${url}`, {\r\n method: 'GET',\r\n ...GetFetchProps()\r\n })\r\n if (response.status === 401 || response.status === 403) {\r\n if (response.status === 401) {\r\n window.location.replace(getEnvVariable('AuthorizationScreen') + 'user/logout');;\r\n throw response.json();\r\n }\r\n else console.error(response)\r\n }\r\n if (response.status > 200) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n //if (DefaultSettings.getAlert() != null)\r\n // DefaultSettings.getAlert().show('Error Occurred,Please contact Admin', 'error');\r\n }\r\n const data = await response.json();\r\n if (data) {\r\n if (DefaultSettings.getLoader() != null && isLoader)\r\n DefaultSettings.getLoader().remove();\r\n return data\r\n }\r\n } catch (error) {\r\n if (DefaultSettings.getLoader() != null && isLoader)\r\n DefaultSettings.getLoader().remove();\r\n throw error;\r\n }\r\n}\r\n\r\nexport const GetData = async (url, alert = false, message = '', isLoader = true, loaderMessage = '') => {\r\n if (DefaultSettings.getLoader() != null && isLoader)\r\n DefaultSettings.getLoader().add(loaderMessage);\r\n try {\r\n const response = await fetch(`${url}`, {\r\n method: 'GET',\r\n ...GetFetchProps()\r\n })\r\n if (response.status === 400) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n if (DefaultSettings.getAlert() != null)\r\n DefaultSettings.getAlert().show(\"Verify Validations/Errors\" || 'Error Occurred', 'error');\r\n throw response.json();\r\n }\r\n if (response.status === 401 || response.status === 403) {\r\n if (response.status === 401) {\r\n window.location.replace(getEnvVariable('AuthorizationScreen') + 'user/logout');;\r\n throw response.json();\r\n }\r\n else console.error(response)\r\n }\r\n if (response.status > 200) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n //if (DefaultSettings.getAlert() != null)\r\n // DefaultSettings.getAlert().show('Error Occurred,Please contact Admin', 'error');\r\n }\r\n const data = await response.json();\r\n if (data && response.status === 200) {\r\n if (DefaultSettings.getLoader() != null && isLoader)\r\n DefaultSettings.getLoader().remove();\r\n if (DefaultSettings.getAlert() != null && alert)\r\n DefaultSettings.getAlert().show(message, 'success');\r\n return data\r\n }\r\n } catch (error) {\r\n if (DefaultSettings.getLoader() != null && isLoader)\r\n DefaultSettings.getLoader().remove();\r\n throw error;\r\n }\r\n}\r\n\r\n\r\n\r\nexport const PostData = async (url, bodyval, alert = false, message = 'Saved Successfully') => {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().add();\r\n try {\r\n const response = await fetch((`${url}`), {\r\n method: 'POST',\r\n ...GetFetchProps(),\r\n body: JSON.stringify(bodyval)\r\n\r\n })\r\n if (response.status === 400) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n if (DefaultSettings.getAlert() != null)\r\n DefaultSettings.getAlert().show(\"Verify Validations/Errors\" || 'Error Occurred', 'error');\r\n throw response.json();\r\n }\r\n if (response.status === 401 || response.status === 403) {\r\n if (response.status === 401) {\r\n window.location.replace(getEnvVariable('AuthorizationScreen') + 'user/logout');;\r\n throw response.json();\r\n }\r\n else console.error(response)\r\n }\r\n if (response.status > 200) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n //if (DefaultSettings.getAlert() != null)\r\n // DefaultSettings.getAlert().show('Error Occurred,Please contact Admin', 'error');\r\n }\r\n const data = await response.json();\r\n if (data && response.status === 200) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n if (DefaultSettings.getAlert() != null && !alert)\r\n DefaultSettings.getAlert().show(message, 'success');\r\n return data\r\n }\r\n } catch (error) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n throw error;\r\n }\r\n}\r\nexport const PostDataNoBody = async (url, message = 'Saved Successfully') => {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().add();\r\n try {\r\n const response = await fetch((`${url}`), {\r\n method: 'POST',\r\n ...GetFetchProps()\r\n })\r\n if (response.status === 400) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n if (DefaultSettings.getAlert() != null)\r\n DefaultSettings.getAlert().show(\"Verify Validations/Errors\" || 'Error Occurred', 'error');\r\n throw response.json();\r\n }\r\n if (response.status === 401 || response.status === 403) {\r\n if (response.status === 401) {\r\n window.location.replace(getEnvVariable('AuthorizationScreen') + 'user/logout');;\r\n throw response.json();\r\n }\r\n else console.error(response)\r\n }\r\n if (response.status > 200) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n }\r\n const data = await response.json();\r\n if (data && response.status === 200) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n if (DefaultSettings.getAlert() != null && alert)\r\n DefaultSettings.getAlert().show(message, 'success');\r\n return data\r\n }\r\n } catch (error) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n throw error;\r\n }\r\n}\r\n\r\nexport const PostFormData = async (url, bodyval, noHeader = false) => {\r\n let formData = new URLSearchParams();\r\n const bodyvalkeys = Object.keys(bodyval)\r\n bodyvalkeys.forEach(each => {\r\n formData.set(each, bodyval[each])\r\n })\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().add();\r\n try {\r\n const response = await fetch((`${url}`), {\r\n method: 'POST',\r\n ...GetFetchProps(true, noHeader),\r\n body: formData\r\n })\r\n if (response.status === 400) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n // if (DefaultSettings.getAlert() != null)\r\n // DefaultSettings.getAlert().show(\"Verify Validations/Errors\" || 'Error Occurred', 'error');\r\n throw response.json();\r\n }\r\n if (response.status === 401 || response.status === 403) {\r\n if (response.status === 401) {\r\n window.location.replace(getEnvVariable('AuthorizationScreen') + 'user/logout');;\r\n throw response.json();\r\n }\r\n else console.error(response)\r\n }\r\n if (response.status > 200) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n }\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n if (data) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n return data\r\n }\r\n }\r\n } catch (error) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n throw error;\r\n }\r\n}\r\n\r\nexport const PutData = async (url, bodyval, alert = false, message = 'Updated Successfully') => {\r\n if (bodyval) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().add();\r\n try {\r\n const response = await fetch((`${url}`), {\r\n method: 'PUT',\r\n ...GetFetchProps(),\r\n body: JSON.stringify(bodyval)\r\n\r\n })\r\n if (response.status === 400) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n if (DefaultSettings.getAlert() != null)\r\n DefaultSettings.getAlert().show(\"Verify Validations/Errors\" || 'Error Occurred', 'error');\r\n throw response.json();\r\n }\r\n if (response.status === 401 || response.status === 403) {\r\n if (response.status === 401) {\r\n window.location.replace(getEnvVariable('AuthorizationScreen') + 'user/logout');;\r\n throw response.json();\r\n }\r\n else console.error(response)\r\n }\r\n if (response.status > 200) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n if (DefaultSettings.getAlert() != null)\r\n DefaultSettings.getAlert().show('Error Occurred,Please contact Admin', 'error');\r\n }\r\n const data = await response.json();\r\n if (data) {\r\n localStorage.setItem('SaveCurrentRecord', 'N')\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n if (DefaultSettings.getAlert() != null && !alert)\r\n DefaultSettings.getAlert().show(message || 'Updated Successfully', 'success');\r\n return data\r\n }\r\n } catch (error) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n throw error;\r\n }\r\n }\r\n else {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().add();\r\n try {\r\n const response = await fetch((`${url}`), {\r\n method: 'PUT',\r\n ...GetFetchProps(),\r\n body: {}\r\n })\r\n if (response.status === 400) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n if (DefaultSettings.getAlert() != null)\r\n DefaultSettings.getAlert().show(\"Verify Validations/Errors\" || 'Error Occurred', 'error');\r\n throw response.json();\r\n }\r\n if (response.status === 401 || response.status === 403) {\r\n if (response.status === 401) {\r\n window.location.replace(getEnvVariable('AuthorizationScreen') + 'user/logout');;\r\n throw response.json();\r\n }\r\n else console.error(response)\r\n }\r\n if (response.status > 200) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n if (DefaultSettings.getAlert() != null)\r\n DefaultSettings.getAlert().show('Error Occurred,Please contact Admin', 'error');\r\n }\r\n const data = await response.json();\r\n if (data) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n if (DefaultSettings.getAlert() != null && alert)\r\n DefaultSettings.getAlert().show(message, 'success');\r\n return data\r\n }\r\n } catch (error) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n }\r\n }\r\n}\r\n\r\nexport const PutFormData = async (url, bodyval, message = \"Updated Successfully\") => {\r\n let formData = new URLSearchParams();\r\n const bodyvalkeys = bodyval && Object.keys(bodyval)\r\n bodyvalkeys && bodyvalkeys.forEach(each => {\r\n formData.set(each, JSON.stringify(bodyval[each]))\r\n })\r\n if (bodyval) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().add();\r\n try {\r\n const response = await fetch((`${url}`), {\r\n method: 'PUT',\r\n mode: 'cors',\r\n headers: {\r\n ...GetHeaders(),\r\n },\r\n credentials: 'include',\r\n body: JSON.stringify(bodyval)\r\n\r\n })\r\n if (response.status === 401 || response.status === 403) {\r\n if (response.status === 401) {\r\n window.location.replace(getEnvVariable('AuthorizationScreen') + 'user/logout');;\r\n throw response.json();\r\n }\r\n else console.error(response)\r\n }\r\n const data = await response.json();\r\n if (data) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n if (DefaultSettings.getAlert() != null && alert)\r\n DefaultSettings.getAlert().show(message, 'success');\r\n return data\r\n }\r\n } catch (error) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n throw error;\r\n }\r\n }\r\n else {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().add();\r\n try {\r\n const response = await fetch((`${url}`), {\r\n method: 'PUT',\r\n credentials: 'include',\r\n headers: {\r\n ...GetHeaders(),\r\n },\r\n body: {}\r\n })\r\n if (response.status === 401 || response.status === 403) {\r\n if (response.status === 401) {\r\n window.location.replace(getEnvVariable('AuthorizationScreen') + 'user/logout');;\r\n throw response.json();\r\n }\r\n else console.error(response)\r\n }\r\n const data = await response.json();\r\n if (data) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n if (DefaultSettings.getAlert() != null && alert)\r\n DefaultSettings.getAlert().show(message, 'success');\r\n return data\r\n }\r\n } catch (error) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n }\r\n }\r\n}\r\n\r\nexport const DeleteRecord = async (url, queryval = '', bodyval = {}, message = \"Deleted Successfully\") => {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().add();\r\n try {\r\n const response = await fetch(`${url + queryval}`, {\r\n method: 'DELETE',\r\n ...GetFetchProps(),\r\n body: JSON.stringify(bodyval)\r\n })\r\n if (response.status === 400) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n if (DefaultSettings.getAlert() != null)\r\n DefaultSettings.getAlert().show(\"Verify Validations/Errors\" || 'Error Occurred', 'error');\r\n throw response.json();\r\n }\r\n if (response.status === 401 || response.status === 403) {\r\n if (response.status === 401) {\r\n window.location.replace(getEnvVariable('AuthorizationScreen') + 'user/logout');;\r\n throw response.json();\r\n }\r\n else console.error(response)\r\n }\r\n if (response.status > 200) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n }\r\n const data = await response.json();\r\n if (data) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n if (DefaultSettings.getAlert() != null && alert)\r\n DefaultSettings.getAlert().show(message, 'success');\r\n return data\r\n }\r\n } catch (error) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n throw error;\r\n }\r\n}\r\n\r\nexport const OldPostMutiFormData = async (url, bodyval, alert = false, noHeader = false, message = '') => {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().add();\r\n try {\r\n const response = await fetch((`${url}`), {\r\n method: 'POST',\r\n ...GetFetchProps(false, noHeader),\r\n body: bodyval\r\n\r\n })\r\n if (response.status === 401 || response.status === 403) {\r\n if (response.status === 401) {\r\n window.location.replace(getEnvVariable('AuthorizationScreen') + 'user/logout');;\r\n throw response.json();\r\n }\r\n else console.error(response)\r\n }\r\n if (response.status > 200) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n }\r\n const data = await response.json();\r\n if (data) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n if (DefaultSettings.getAlert() != null && !alert)\r\n DefaultSettings.getAlert().show(message || 'Saved Successfully', 'success');\r\n return data\r\n }\r\n } catch (error) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n throw error;\r\n }\r\n}\r\n\r\nexport const PostMutiFormData = async (url, bodyval, alert = false, noHeader = false, message = '') => {\r\n\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().add();\r\n try {\r\n const response = await fetch((`${url}`), {\r\n method: 'POST',\r\n ...GetFetchProps(false, noHeader),\r\n body: bodyval\r\n\r\n })\r\n if (response.status === 401 || response.status === 403) {\r\n if (response.status === 401) {\r\n window.location.replace(getEnvVariable('AuthorizationScreen') + 'user/logout');;\r\n throw response.json();\r\n }\r\n else console.error(response)\r\n }\r\n if (response.status > 200) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n }\r\n const data = await response.json();\r\n if (data) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n if (DefaultSettings.getAlert() != null && alert)\r\n DefaultSettings.getAlert().show(\"Saved Successfully\", 'success');\r\n return data\r\n }\r\n } catch (error) {\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n throw error;\r\n }\r\n}\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Stepper from '@material-ui/core/Stepper';\r\nimport Step from '@material-ui/core/Step';\r\nimport StepLabel from '@material-ui/core/StepLabel';\r\nimport Button from '@material-ui/core/Button';\r\nimport Typography from '@material-ui/core/Typography';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n root: {\r\n width: '100%',\r\n },\r\n button: {\r\n marginRight: theme.spacing(1),\r\n },\r\n instructions: {\r\n marginTop: theme.spacing(1),\r\n marginBottom: theme.spacing(1),\r\n },\r\n}));\r\n\r\n\r\n\r\n\r\n\r\nexport default function LinearStepper(props) {\r\n const { steps, sections } = props\r\n const classes = useStyles();\r\n const [activeStep, setActiveStep] = React.useState(0);\r\n\r\n const handleNext = () => {\r\n setActiveStep(prevActiveStep => prevActiveStep + 1);\r\n };\r\n\r\n const handleBack = () => {\r\n setActiveStep(prevActiveStep => prevActiveStep - 1);\r\n };\r\n\r\n const handleReset = () => {\r\n setActiveStep(0);\r\n };\r\n\r\n return (\r\n <div className={classes.root}>\r\n <Stepper activeStep={activeStep}>\r\n {steps.map((label, index) => {\r\n return (\r\n <Step key={label} >\r\n <StepLabel >{label}</StepLabel>\r\n </Step>\r\n );\r\n })}\r\n </Stepper>\r\n <div>\r\n {activeStep === steps.length ? (\r\n <div>\r\n <Typography className={classes.instructions}>\r\n All steps completed - you're finished\r\n </Typography>\r\n <Button onClick={handleReset} className={classes.button}>\r\n Reset\r\n </Button>\r\n </div>\r\n ) : (\r\n <div>\r\n {sections[activeStep]}\r\n <div className='mt-5'>\r\n <Button disabled={activeStep === 0} onClick={handleBack} className={classes.button}>\r\n Back\r\n </Button>\r\n <Button\r\n variant=\"contained\"\r\n color=\"primary\"\r\n onClick={handleNext}\r\n className={classes.button}\r\n >\r\n {activeStep === steps.length - 1 ? 'Finish' : 'Next'}\r\n </Button>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n}","import React, { forwardRef, useImperativeHandle, useState, useRef, forwarRef } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport SwipeableViews from 'react-swipeable-views';\r\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Tabs from '@material-ui/core/Tabs';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Box from '@material-ui/core/Box';\r\nimport { layoutTypes } from './types'\r\nimport { handleActionsToEffects } from '../effects/effects'\r\nimport { fieldTypes, hookTypes } from '../helpers/fieldtypes'\r\n\r\nfunction TabPanel(props) {\r\n const { children, value, index, ...other } = props;\r\n\r\n return (\r\n <div\r\n role=\"tabpanel\"\r\n hidden={value !== index}\r\n id={`full-width-tabpanel-${index}`}\r\n aria-labelledby={`full-width-tab-${index}`}\r\n {...other}\r\n >\r\n {value === index && (\r\n <Box p={3} className=\"my-2\" >\r\n <div>{children}</div>\r\n </Box>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\n\r\n\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n backgroundColor: theme.palette.background.paper,\r\n // width: 500,\r\n },\r\n}));\r\n\r\nexport default function TabComponent(props) {\r\n const classes = useStyles();\r\n const theme = useTheme();\r\n const [value, setValue] = useState(0);\r\n const tabRef = useRef(null)\r\n const { sections, steps, errorSections } = props\r\n\r\n const handleChange = (event, newValue) => {\r\n setValue(newValue);\r\n };\r\n\r\n const handleChangeIndex = (index) => {\r\n setValue(index);\r\n };\r\n\r\n\r\n\r\n\r\n return (\r\n <div className={classes.root}>\r\n <AppBar position=\"static\" color=\"inherit\">\r\n <Tabs\r\n value={value}\r\n onChange={handleChange}\r\n indicatorColor=\"primary\"\r\n textColor=\"primary\"\r\n variant=\"fullWidth\"\r\n >\r\n {sections && sections.map((tab, index) => {\r\n return <Tab label={steps[index]} style={{ backgroundColor: errorSections[steps[index]] === true ? '' : '', color: errorSections[steps[index]] === true ? '' : 'rgba(0, 0, 0, 0.54)' }} />\r\n })}\r\n </Tabs>\r\n </AppBar>\r\n <SwipeableViews\r\n style={{ height: window.innerHeight - 140 }}\r\n axis={theme.direction === 'rtl' ? 'x-reverse' : 'x'}\r\n index={value}\r\n onChangeIndex={handleChangeIndex}\r\n >\r\n {sections && sections.map((tab, index) => {\r\n return <TabPanel value={value} index={index} dir={theme.direction}>\r\n {tab}\r\n </TabPanel>\r\n })}\r\n </SwipeableViews>\r\n </div>\r\n )\r\n}\r\n","import React, { Fragment, useEffect } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Accordion from '@material-ui/core/Accordion';\r\nimport AccordionDetails from '@material-ui/core/AccordionDetails';\r\nimport AccordionSummary from '@material-ui/core/AccordionSummary';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\r\nimport { withRouter } from 'react-router-dom';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport DefaultSettings from '../components/settings';\r\nimport { getEnvVariable } from '../../../modules/environmentalList';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n root: {\r\n width: '100%',\r\n marginBottom: theme.spacing(2),\r\n },\r\n\r\n accordion: {\r\n border: '1px solid #ccc', // Add a border to the Accordion\r\n borderRadius: theme.spacing(1),\r\n marginBottom: theme.spacing(1), // Adjust the margin between Accordions\r\n },\r\n\r\n heading: {\r\n fontSize: theme.typography.pxToRem(16),\r\n flexBasis: '63.33%',\r\n flexShrink: 0,\r\n color: 'rgb(13, 71, 161)',\r\n fontWeight: 400\r\n },\r\n error: {\r\n fontSize: theme.typography.pxToRem(16),\r\n flexBasis: '33.33%',\r\n flexShrink: 0,\r\n color: '#fafafa',\r\n fontWeight: 400\r\n },\r\n secondaryHeading: {\r\n fontSize: theme.typography.pxToRem(15),\r\n color: theme.palette.text.secondary,\r\n },\r\n}));\r\n\r\nfunction Accordions(props) {\r\n const { steps, view, sections, SectionContext, sectionKeysData, errorSections, hideSections } = props\r\n const classes = useStyles();\r\n const SectionName = getEnvVariable('ModuleKey')=='WRS'? `Summary Section` : `Record Information`\r\n return (\r\n <div className={classes.root}>\r\n {sections.map((section, index) => {\r\n if (hideSections.includes(steps[index])) {\r\n return null\r\n }\r\n return <Accordion\r\n key={index}\r\n className={`${classes.accordion} ${steps[index]} ms-1`}\r\n defaultExpanded={\r\n section.length > 0 &&\r\n sectionKeysData &&\r\n sectionKeysData[section[0].props.SectionKey] === true\r\n }\r\n >\r\n <AccordionSummary\r\n style={{backgroundColor: errorSections[steps[index]] === true ? '#f44336' : '#358ecc' }}\r\n expandIcon={<ExpandMoreIcon />}\r\n >\r\n <Typography style={{ color: 'white'}} className={errorSections[steps[index]] === true ? classes.error :\r\n classes.heading}>{steps[index] === 'Header' ? SectionName : steps[index]} \r\n {SectionContext && steps[index] && SectionContext[steps[index]] &&\r\n < Tooltip title={SectionContext[steps[index]] ? SectionContext[steps[index]].SectionDescription : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em', color: '#ffffff' }} onClick={() => DefaultSettings.showDrawer(SectionContext[steps[index]].SectionContextHelp)} />\r\n </Tooltip>}\r\n </Typography>\r\n </AccordionSummary>\r\n <div className=\"col-sm-12 m-1\">\r\n {section.map((eachsec, idx) => {\r\n return <AccordionDetails key={idx} className={eachsec.props.className}>\r\n <div className=\"col-sm-12 m-1\">{eachsec}</div>\r\n </AccordionDetails>\r\n })}\r\n </div>\r\n </Accordion>\r\n })}\r\n </div>\r\n );\r\n}\r\nexport default withRouter(Accordions)","import { createLayout } from './layout'\r\nimport Stepper from './stepper'\r\nimport Tabs from './tabs'\r\nimport Panel from './panel';\r\n\r\n//arrangement- placemnets. (not componenets) // containers (popup , card, paper)\r\nexport const layoutTypes = {\r\n default: createLayout,\r\n stepper: Stepper,\r\n tab: Tabs,\r\n panel: Panel,\r\n}","import React from 'react'\r\nimport { DIV } from '../helpers/native'\r\n\r\nconst deafultTypes = {\r\n div: DIV\r\n}\r\n\r\nexport const createLayout = ({ layout, fields }) => {\r\n const { group } = layout || {}\r\n return (group || []).map((each, index) => {\r\n const { order, type, components, ...otherProps } = each\r\n return <div {...otherProps} key={order || index}>\r\n {components.map((each, index) => {\r\n const { name, sub, group, type, ...otherLayoutProps } = each\r\n // console.log('comp', fields[name])\r\n if (fields) {\r\n // remove sub code and remove sub from json. sub is for nesting div's which seems to be rare\r\n if (sub) {\r\n const { type, key, className, ...otherProps } = sub\r\n const { props } = fields[name]\r\n return <div className={className + ' ' + props.className} {...otherProps} key={key || index} >\r\n {fields[name]}\r\n </div>\r\n }\r\n else if (group) {\r\n const { type, key, className, ...otherProps } = each\r\n return <div className={className} {...otherProps} key={key || index}>\r\n <div className='border border-primary'>\r\n {createLayout({ layout: each, fields: fields })}\r\n </div>\r\n </div>\r\n\r\n }\r\n else\r\n if (type) {\r\n const EachComp = deafultTypes[type]\r\n return <div {...otherProps}>\r\n {fields[name]}\r\n </div>\r\n }\r\n else return fields[name]\r\n }\r\n else return null\r\n\r\n })}\r\n </div>\r\n })\r\n\r\n}","import React, { useReducer, useEffect, useRef, useState, Fragment } from 'react';\r\nimport { layoutTypes } from '../layout/types'\r\nimport { handleActionsToEffects } from '../effects/effects'\r\nimport { fieldTypes, hookTypes } from '../helpers/fieldtypes'\r\nimport useDeepCompareEffect from 'use-deep-compare-effect'\r\nimport isEqual from 'lodash/isEqual'\r\nimport { groupByType } from '../helpers/components'\r\nimport { useHistory, useParams } from 'react-router-dom';\r\n\r\n//container only maintains layout change\r\nfunction handleFieldChange(state, action) {\r\n const { type, ...otherProps } = action\r\n if (type === 'updates') {\r\n const { updates } = otherProps\r\n const { name, value, type, addlayout, removelayout } = updates\r\n // const { addlayout, removelayout } = updates\r\n let newstate = state\r\n if (addlayout) {\r\n newstate = addlayout.reduce((accum, each) => {\r\n const { name } = each\r\n return {\r\n ...accum, fieldProps: accum.fieldProps, fieldsLayout: {\r\n ...accum.fieldsLayout,\r\n group: accum.fieldsLayout.group.concat([\r\n {\r\n order: accum.fieldsLayout.group.length,\r\n type: 'div',\r\n className: 'row',\r\n components: [\r\n {\r\n name: name\r\n }\r\n ]\r\n }\r\n ])\r\n }\r\n }\r\n }, newstate)\r\n }\r\n if (removelayout) {\r\n newstate = removelayout.reduce((accum, each) => {\r\n const { name } = each\r\n return {\r\n ...accum, fieldProps: accum.fieldProps, fieldsLayout: {\r\n ...accum.fieldsLayout,\r\n group: accum.fieldsLayout.group.filter(each => {\r\n const { components } = each\r\n const compExists = components.find(e => e.name === name)\r\n if (compExists) return false\r\n else return true\r\n })\r\n }\r\n }\r\n }, newstate)\r\n }\r\n if (value) {\r\n value.forEach(each => {\r\n const { key, result } = each\r\n state = { ...state, sharedValues: { ...state.sharedValues, [key]: result } }\r\n })\r\n return newstate = { ...state }\r\n }\r\n return newstate\r\n }\r\n if (type === 'value') {\r\n const { name, value, changevalue } = otherProps\r\n if (changevalue) {\r\n return { ...state, sharedValues: { ...state['sharedValues'], [name]: value, [changevalue]: !value } }\r\n }\r\n return { ...state, sharedValues: { ...state['sharedValues'], [name]: value } }\r\n }\r\n /*** for click on next item, it will change shared values and usedeepcompare effect of shared values\r\n will be executed and then the same pattern of add layout will be followed taking new edit info values **/\r\n if (type === 'navigatenextitem') {\r\n const { name, value, subname } = otherProps\r\n let checkval = otherProps.name\r\n let completedata = Array.isArray(otherProps.value) ? otherProps.value : (otherProps.value && otherProps.value.data ? otherProps.value.data : [])\r\n let indexdata = state.sharedValues[checkval] ? state.sharedValues[checkval] : state.sharedValues[subname]\r\n let currentItem = completedata.indexOf(indexdata)\r\n let nextitemindex = currentItem + 1\r\n let nextItem = completedata[nextitemindex]\r\n if (nextitemindex < completedata.length) {\r\n return { ...state, sharedValues: { ...state['sharedValues'], [checkval]: nextItem, [subname]: nextItem, } }\r\n }\r\n }\r\n\r\n /*** for click on previous item, it will change shared values and usedeepcompare effect of shared values\r\n will be executed and then the same pattern of add layout will be followed taking new edit info values **/\r\n if (type === 'navigateprevitem') {\r\n const { name, value, subname } = otherProps\r\n let checkval = otherProps.name\r\n let completedata = Array.isArray(otherProps.value) ? otherProps.value : (otherProps.value && otherProps.value.data ? otherProps.value.data : [])\r\n let indexdata = state.sharedValues[checkval] ? state.sharedValues[checkval] : state.sharedValues[subname]\r\n let currentItem = completedata.indexOf(indexdata)\r\n let previtemindex = currentItem - 1\r\n let prevItem = completedata[previtemindex]\r\n if (previtemindex >= 0) {\r\n return { ...state, sharedValues: { ...state['sharedValues'], [name]: prevItem, [subname]: prevItem } }\r\n }\r\n }\r\n\r\n\r\n if (type === 'values') {\r\n const { values } = otherProps\r\n values.forEach(each => {\r\n const { name, value } = each\r\n state = { ...state, sharedValues: { ...state['sharedValues'], [name]: value } }\r\n })\r\n return state\r\n }\r\n if (type === 'customfields') {\r\n const { layout, components } = otherProps\r\n const { group, ...othersLayout } = layout\r\n return {\r\n ...state, fieldProps: { ...state.fieldProps, ...components }, fieldsLayout: {\r\n ...state.fieldsLayout, ...othersLayout,\r\n group: state.fieldsLayout.group.concat(group).reduce((acc, current) => {\r\n const x = acc.find(item => item.order === current.order);\r\n if (!x) {\r\n return acc.concat([current]);\r\n } else {\r\n const { position, components } = current\r\n x.components.splice(position, 0, ...components)\r\n return acc;\r\n }\r\n }, [])\r\n }\r\n }\r\n }\r\n return state\r\n}\r\n\r\n\r\nexport default function useContainer(props) {\r\n const { components, layout, values, mapValues, mapActionsToEffects, actions, handleScreenWidth, addRoute, reload = false, removelayout = false } = props\r\n const { layoutType } = layout\r\n const history = useHistory();\r\n let params = useParams();\r\n let sharedProps = props.sharedProps || {}\r\n const [fields, dispatchFieldsChange] = useReducer(\r\n handleFieldChange,\r\n { fieldProps: components, conditions: mapActionsToEffects, fieldsLayout: layout, sharedValues: { ...values, ...sharedProps } }\r\n )\r\n\r\n const { fieldProps, fieldsLayout, conditions, sharedValues } = fields\r\n const prevState = useRef(fields)\r\n const handleSave = () => {\r\n dispatchFieldsChange({\r\n type: 'value',\r\n name: 'save',\r\n value: true\r\n })\r\n }\r\n\r\n const handleSaveDuplicate = () => {\r\n dispatchFieldsChange({\r\n type: 'value',\r\n name: 'saveduplicate',\r\n value: true\r\n })\r\n }\r\n\r\n const handleEdit = () => {\r\n dispatchFieldsChange({\r\n type: 'value',\r\n name: 'edit',\r\n value: true\r\n })\r\n }\r\n\r\n const handleDuplicate = () => {\r\n dispatchFieldsChange({\r\n type: 'value',\r\n name: 'createduplicate',\r\n value: true\r\n })\r\n }\r\n /**method for clicking next item */\r\n const NavigatenextItem = () => {\r\n dispatchFieldsChange({\r\n type: 'navigatenextitem',\r\n name: 'navigation',\r\n subname: 'subnavigation',\r\n value: sharedProps['allgriddata']\r\n })\r\n }\r\n\r\n /**method for clicking previous item */\r\n const NavigateprevItem = () => {\r\n dispatchFieldsChange({\r\n type: 'navigateprevitem',\r\n name: 'navigation',\r\n subname: 'subnavigation',\r\n value: sharedProps['allgriddata']\r\n })\r\n }\r\n\r\n const handleBack = (isAdd = false) => {\r\n localStorage.setItem('BusinessRules', JSON.stringify([]))\r\n if (props.backtorecord) {\r\n let loc = history.location.pathname\r\n let path = loc.substring(0, loc.lastIndexOf(\"/\"))\r\n let finalpath = path.substring(0, path.lastIndexOf(\"/\"))\r\n history.push(finalpath)\r\n }\r\n else if (props.backtoapplicationsteps) {\r\n if (isAdd === true) {\r\n let loc = history.location.pathname\r\n history.push(loc)\r\n }\r\n else {\r\n let loc = history.location.pathname\r\n for (let index = 0; index < props.backtoapplicationsteps; index++) {\r\n loc = loc.substring(0, loc.lastIndexOf(\"/\"))\r\n }\r\n history.push(loc)\r\n }\r\n\r\n }\r\n else if (props.closepopup && props.closepopupval) {\r\n let loc = history.location.pathname\r\n let path = loc.substring(0, loc.lastIndexOf(\"/\"))\r\n let lastSlash = loc.lastIndexOf(\"/\");\r\n let lastSlashVal = loc.substring(lastSlash + 1);\r\n if (path.includes(props.closepopupval)) {\r\n actions && actions.toggleDrawer()\r\n history.push(path)\r\n }\r\n else if (lastSlashVal == props.closepopupval) {\r\n actions && actions.toggleDrawer()\r\n history.push(loc)\r\n }\r\n }\r\n else if (addRoute) {\r\n if (removelayout) {\r\n dispatchFieldsChange({\r\n type: 'updates',\r\n updates: {\r\n removelayout: [{ 'name': removelayout }]\r\n }\r\n })\r\n }\r\n actions && actions.toggleDrawer()\r\n history.goBack()\r\n }\r\n // else if (reload) {\r\n // history.go(0)\r\n // }\r\n else {\r\n //if (!isAdd)\r\n setTimeout(() => {\r\n actions && actions.toggleDrawer()\r\n }, 1000)\r\n\r\n }\r\n\r\n }\r\n\r\n const handleFullScreen = () => {\r\n dispatchFieldsChange({\r\n type: 'value',\r\n name: 'fullscreen',\r\n value: true,\r\n changevalue: 'exitfullscreen'\r\n })\r\n handleScreenWidth && handleScreenWidth('fullscreen')\r\n }\r\n\r\n const handleExitFullScreen = () => {\r\n dispatchFieldsChange({\r\n type: 'value',\r\n name: 'exitfullscreen',\r\n value: true,\r\n changevalue: 'fullscreen'\r\n })\r\n handleScreenWidth && handleScreenWidth('exitfullscreen')\r\n }\r\n\r\n const handleCustomActions = (e, name) => {\r\n if (mapActionsToEffects && mapActionsToEffects[name]) {\r\n handleEffectUpdates(\r\n handleActionsToEffects({\r\n conditions: (mapActionsToEffects[name])\r\n })\r\n )\r\n }\r\n\r\n }\r\n\r\n useDeepCompareEffect(() => {\r\n dispatchFieldsChange({\r\n type: 'values',\r\n values: Object.keys(sharedProps).map(each => {\r\n return {\r\n name: each,\r\n value: sharedProps[each]\r\n }\r\n })\r\n })\r\n }, [sharedProps])\r\n\r\n\r\n const handleEffectUpdates = (res) => {\r\n if (res)\r\n Promise.all(res).then(results => {\r\n dispatchFieldsChange({\r\n type: 'updates',\r\n updates: groupByType(results)\r\n })\r\n })\r\n }\r\n\r\n useDeepCompareEffect(() => {\r\n const prevsharedValues = prevState.current.sharedValues\r\n const status = isEqual(prevsharedValues, sharedValues)\r\n if (!status && sharedValues && Object.keys(sharedValues).length > 0) {\r\n const unEqualProps = Object.keys(sharedValues).filter(each => sharedValues[each] != prevsharedValues[each])\r\n if (unEqualProps)\r\n (unEqualProps || []).forEach(each => {\r\n if (conditions && conditions[each]) {\r\n handleEffectUpdates(\r\n handleActionsToEffects({\r\n fieldValues: { ...sharedValues, ...params },\r\n conditions: conditions[each]\r\n })\r\n )\r\n }\r\n if (conditions && (conditions[each] && conditions[each].add)) {\r\n dispatchFieldsChange({\r\n type: 'values',\r\n values: [{\r\n name: each,\r\n value: sharedValues[each]\r\n }]\r\n })\r\n }\r\n if (each == 'navigation' || each == 'subnavigation') {\r\n props.sharedProps && props.sharedProps.navigateItem && props.sharedProps.navigateItem(sharedValues[each])\r\n }\r\n })\r\n }\r\n prevState.current = fields\r\n\r\n }, [sharedValues])\r\n\r\n\r\n\r\n const addons = {\r\n dispatchSharedValueChange: dispatchFieldsChange,\r\n handleBack: handleBack,\r\n addOnsByName: { // change handle custom and remove duplicates\r\n save: { onClick: handleSave }, history: { onClick: (e) => handleCustomActions(e, 'history') },\r\n saveduplicate: { onClick: handleSaveDuplicate }, edit: { onClick: handleEdit }, createduplicate: { onClick: handleDuplicate },\r\n back: { onClick: handleBack }, previtem: { onClick: NavigateprevItem }, nextitem: { onClick: NavigatenextItem },\r\n fullscreen: { onClick: handleFullScreen }, exitfullscreen: { onClick: handleExitFullScreen }\r\n }\r\n }\r\n\r\n const componentsCreation = (fieldNames) => {\r\n const temp = fieldNames.reduce((accum, each) => {\r\n try {\r\n const { type, custom, name, ...otherProps } = fieldProps[each]\r\n const passProps = (mapValues[name] || []).reduce((sum, each) => {\r\n const { key, name } = each\r\n sum[name] = sharedValues[key]\r\n return sum\r\n }, {})\r\n\r\n if (fieldTypes[type]) {\r\n const EachComp = fieldTypes[type];\r\n accum[each] = <EachComp {...addons} {...otherProps} sharedProps={passProps} accessPermissions={props.accessPermissions} routeparams={params} />\r\n }\r\n else if (hookTypes[type]) {\r\n const temp = hookTypes[type]({ ...otherProps, ...addons, sharedProps: passProps, accessPermissions: props.accessPermissions, routeparams: params, actions: actions })\r\n accum[each] = temp[0]\r\n }\r\n else if (custom) accum[each] = type\r\n return accum\r\n }\r\n catch (ex) { console.log(ex); return \"n/a\" }\r\n }, {})\r\n return temp\r\n }\r\n\r\n return [\r\n <Fragment>\r\n {layoutType && layoutTypes[layoutType] ?\r\n layoutTypes[layoutType]({\r\n layout: fieldsLayout,\r\n fields: componentsCreation(Object.keys(fieldProps))\r\n\r\n }) :\r\n layoutTypes.default({\r\n layout: fieldsLayout,\r\n fields: componentsCreation(Object.keys(fieldProps))\r\n })\r\n }\r\n </Fragment>\r\n ]\r\n\r\n\r\n}\r\n\r\n","/**\r\n *********************************************************\r\n Description: Grid header component. Handles creation of new records. Changes the route when the add icon is clicked\r\n Required props: N/A.\r\n limitations : N/A.\r\n *********************************************************\r\n**/\r\n\r\nimport React, { Fragment, useEffect, useState, useCallback } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport withWidth from '@material-ui/core/withWidth';\r\nimport KendoHeader from '../../controls/components/kendoheader';\r\nimport { getEnvVariable } from '../../../modules/environmentalList';\r\n\r\nconst CGridHeader = ((props) => {\r\n\r\n const [openSlide, setOpenSlide] = useState(false);\r\n const { headerProps, actions, compmap, components, title, icon, accessPermissions, accessLevelPermissions,\r\n materialicon, add, breadcrumbs, backbutton, customprops, customId, customAdd } = props\r\n const { isAdmin } = accessPermissions ? accessPermissions : {}\r\n const hidereport = getEnvVariable('AccessPortal') === \"E\" ? true : false\r\n const addaccessPermissions = getEnvVariable('AccessPortal') === \"I\" ? (isAdmin ? (isAdmin === 'Y') : null) : (true)\r\n\r\n const CreateNewRecord = (options) => (event) => {\r\n const { crud } = options\r\n const { create } = crud\r\n const { link } = create;\r\n if (link && Array.isArray(link)) {\r\n let pushLink = '';\r\n link.forEach(each => {\r\n const { link, matchProps } = each\r\n pushLink += link + (matchProps ? (props.match.params[matchProps.value] && ('/' + props.match.params[matchProps.value])) : '');\r\n link && props.history.replace(`${pushLink}`)\r\n })\r\n }\r\n else if (link.type === 'sublink') {\r\n props.history.push(`${props.location.pathname}${link.link}`)\r\n }\r\n else {\r\n link && props.history.push(`${link.link}`)\r\n }\r\n\r\n }\r\n\r\n const handleAdd = () => {\r\n if (customAdd)\r\n props.handleAdd()\r\n else setOpenSlide(true)\r\n // props.handleFormGrid()\r\n }\r\n const handleSlide = (open) => {\r\n setOpenSlide(open)\r\n props.handleSlide()\r\n }\r\n\r\n\r\n return (\r\n <div >\r\n {headerProps && <KendoHeader initialloadextrainfo = {props.initialloadextrainfo} accessPermissions={accessPermissions} {...headerProps} reportapplied={props.reportapplied} {...{\r\n addOnsByName: {\r\n add: {\r\n onClick:\r\n headerProps.addtype === 'CreateNewRecord' ? CreateNewRecord(headerProps.addactions[0].options) : handleAdd\r\n }, excel: { onClick: props.export }, reports: { onClick: props.saveReport }, clear: { onClick: props.clearFilters }, back: { onClick: props.handleBack }, save: { onClick: props.handleSave }\r\n }\r\n }} />}\r\n {\r\n openSlide && components && components.map((each, index) => {\r\n const EachComp = compmap[each.type]\r\n return <Fragment key={index.toString()}><EachComp initialloadextrainfo = {props.initialloadextrainfo} className={each.key} {...each} key={each.key} handleSlide={handleSlide} addSubGrid={true} compmap={compmap} accessPermissions={accessPermissions}\r\n accessLevelPermissions={accessLevelPermissions} customprops={customprops} customId={customId} /></Fragment>\r\n })\r\n }\r\n </div>\r\n\r\n );\r\n\r\n}\r\n\r\n)\r\nexport default withWidth()(withRouter(CGridHeader));\r\n","import React from 'react';\r\nimport { RequestTaskExecute } from '../../modules/map/util/geometryEngineTask';\r\nimport { DeleteRecord, GetData, PostData, PostFormData, PutData, OldPostMutiFormData } from '../../controls/helpers/requests';\r\n\r\n/**\r\n *********************************************************\r\n Deprecated\r\n *********************************************************\r\n**/\r\nexport const checkcomp = (value, rules, evname, Passer) => {\r\n const { events } = rules\r\n return passcomp(value, events[evname], Passer)\r\n}\r\n\r\n/**\r\n *********************************************************\r\n Deprecated\r\n *********************************************************\r\n**/\r\n\r\nconst passcomp = (targetval, values, Passer) => {\r\n let allpasses = []\r\n if (values) {\r\n if (values.length > 0) {\r\n const foundval = values.find(each => {\r\n const { value } = each.value\r\n return targetval === value\r\n })\r\n if (foundval) {\r\n const { scope } = foundval\r\n if (scope.length > 0) {\r\n scope.forEach((each, index) => {\r\n const { action, addupdate, save, del, style } = each\r\n if (Passer) {\r\n allpasses.push(<Passer type={action} message={addupdate || save || del || style} key={index + 'passer'} />)\r\n }\r\n })\r\n }\r\n }\r\n }\r\n else {\r\n const { scope } = values\r\n if (scope.length > 0) {\r\n scope.forEach((each, index) => {\r\n const { action, addupdate, save, del, style } = each\r\n if (Passer) {\r\n allpasses.push(<Passer type={action} message={addupdate || save || del || style} key={index + 'passer'} />)\r\n }\r\n })\r\n }\r\n }\r\n\r\n }\r\n return allpasses\r\n\r\n}\r\nexport const requestApiFormData = (rest, id, results, formdata, alert = false, message) => {\r\n const { get, post, put, remove, geom } = rest ? rest : {}\r\n if (post) {\r\n const requestparams = postDataFetch(post, results)\r\n let requestUrl = post.url\r\n\r\n if (id && Array.isArray(id) && (post.matchProps || post.routeProps || post.customProps || post.customextraProps) && Array.isArray(post.matchProps || post.routeProps || post.customProps || post.customextraProps)) {\r\n requestUrl += post.urlpath\r\n id.forEach(each => {\r\n const { key, value } = each;\r\n requestUrl = `${requestUrl.replace(`{${key}}`, value)}`;\r\n })\r\n }\r\n else if (id && !Array.isArray(id) && (post.matchProps || post.routeProps || post.customProps || post.customextraProps)) {\r\n (post.matchProps || post.routeProps || post.customProps || post.customextraProps) && id && (requestUrl += '/' + id)\r\n }\r\n\r\n if (formdata) return OldPostMutiFormData(requestUrl, formdata, alert)\r\n else return OldPostMutiFormData(requestUrl, formdata, alert, message)\r\n }\r\n}\r\n/**\r\n *********************************************************\r\n Description: handles the requests: get,post,put. In the request, if there is a matchProps or routeProps, we replace the matching keys in the url\r\n with values of results that matches the results prop or id.\r\n Required props: rest. It should have get,post,put key whose value is an object. This value is used to generate the url.\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\n\r\nexport const requestApi = (rest, id, results, formdata, alert = false, message) => {\r\n const { get, post, put, remove, geom } = rest ? rest : {}\r\n const del = rest ? rest.delete : null\r\n if (get) {\r\n const requestparams = getDataFetch(get, id, results)\r\n return GetData(get.url + requestparams)\r\n }\r\n if (post) {\r\n const requestparams = postDataFetch(post, results)\r\n let requestUrl = post.url\r\n\r\n if (id && Array.isArray(id) && (post.matchProps || post.routeProps || post.customProps || post.customextraProps) && Array.isArray(post.matchProps || post.routeProps || post.customProps || post.customextraProps)) {\r\n requestUrl += post.urlpath\r\n id.forEach(each => {\r\n const { key, value } = each;\r\n requestUrl = `${requestUrl.replace(`{${key}}`, value)}`;\r\n })\r\n }\r\n else if (id && !Array.isArray(id) && (post.matchProps || post.routeProps || post.customProps || post.customextraProps)) {\r\n (post.matchProps || post.routeProps || post.customProps || post.customextraProps) && id && (requestUrl += '/' + id)\r\n }\r\n\r\n if (formdata) return PostFormData(requestUrl, requestparams, alert)\r\n else return PostData(requestUrl, requestparams, alert, message)\r\n }\r\n if (put && results) {\r\n const requestparams = putDataFetch(put, results)\r\n var requestUrl = put.url;\r\n\r\n if (Array.isArray(id) && (put.matchProps || put.routeProps || put.customProps || put.passingProps) && Array.isArray(put.matchProps || put.routeProps || put.customProps)) {\r\n requestUrl += put.urlpath\r\n id.forEach(each => {\r\n const { key, value } = each;\r\n requestUrl = `${requestUrl.replace(`{${key}}`, value)}`;\r\n })\r\n }\r\n else if (!Array.isArray(id) && put.matchProps) {\r\n (put.matchProps || put.routeProps) && id && (requestUrl += '/' + id)\r\n }\r\n else if (put.customProps) {\r\n (put.customProps) && id && (requestUrl += '/' + id)\r\n }\r\n\r\n return PutData(requestUrl, requestparams, alert,message)\r\n }\r\n if (geom) {\r\n return RequestTaskExecute(geom.url)\r\n }\r\n\r\n if (remove && results) {\r\n const requestparams = removeDataFetch(remove, id, results)\r\n return DeleteRecord(remove.url, requestparams)\r\n }\r\n\r\n\r\n}\r\n\r\n/**\r\n *********************************************************\r\n Description: Generates the post request url. In the request, if there is a body, replaces the matching keys with values from results or else results are embedded\r\n in the body.\r\n Required props: post.\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\n\r\nconst postDataFetch = (post, results) => {\r\n let bodyrequest = {}\r\n const { body } = post\r\n if (body && (body.length > 0)) {\r\n body.forEach(each => {\r\n if (each.value || results) bodyrequest[each.key] = each.value || results\r\n if (each.fieldName) bodyrequest[each.key] = results[each.fieldName]\r\n })\r\n }\r\n else {\r\n bodyrequest = results\r\n }\r\n return bodyrequest\r\n}\r\n\r\n/**\r\n *********************************************************\r\n Description: Generates the post request url. In the request, if there is a body, replaces the matching keys with values from results or else results are embedded\r\n in the body.\r\n Required props: post.\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\n\r\nconst putDataFetch = (put, results) => {\r\n let bodyrequest = {}\r\n const { body } = put\r\n if (body && (body.length > 0)) {\r\n if (body.every(each => {\r\n return !each.formName\r\n })) {\r\n body.forEach(each => {\r\n if (each.value || results) bodyrequest[each.key] = each.value || results\r\n if (each.fieldName) bodyrequest[each.key] = results[each.fieldName]\r\n })\r\n }\r\n else {\r\n // if (fetchData) {\r\n // fetchData(rest)\r\n // }\r\n }\r\n }\r\n else {\r\n bodyrequest = results\r\n }\r\n\r\n return bodyrequest\r\n}\r\n\r\n/**\r\n *********************************************************\r\n Description: Generates the get request url.In the request, if there is a matchProps or routeProps or extraProps, we replace the matching keys in the url\r\n with values of results that matches the results prop or id. Query handles the query parameters by replacing keys with values from results.\r\n Suburl is part of the url where\r\n some values are inserted before it.\r\n Required props: post.\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\nconst removeDataFetch = (remove, id, results) => {\r\n let getrequestparams = ''\r\n const { query, matchProps, gridProps, routeProps, extraProps, suburl, urlpath, subquery } = remove\r\n if (urlpath) getrequestparams = urlpath\r\n if (matchProps || routeProps || extraProps) {\r\n if (Array.isArray(id)) {\r\n id.forEach(each => {\r\n const { key, value } = each\r\n //let parameterNameregex = new RegExp('{' + key + '}');\r\n //getrequestparams = getrequestparams.replace(parameterNameregex, value);\r\n getrequestparams = `${getrequestparams.replace(`{${key}}`, value)}`;\r\n })\r\n }\r\n else {\r\n if (id && !Array.isArray(id)) getrequestparams = getrequestparams + '/' + id\r\n else {\r\n if (results) getrequestparams = getrequestparams + '/' + results[matchProps.value]\r\n }\r\n }\r\n }\r\n if (gridProps) {\r\n if (results) getrequestparams = getrequestparams + '/' + results[gridProps.value]\r\n }\r\n if (subquery) {\r\n if (results) getrequestparams = getrequestparams + '?' + subquery.name + '=' + results[subquery.value]\r\n }\r\n\r\n if (suburl) {\r\n getrequestparams = getrequestparams + suburl\r\n }\r\n if (query) {\r\n getrequestparams += '?'\r\n query.forEach((each, index) => {\r\n if (index === 0) {\r\n if (each.value) getrequestparams += each.key + '=' + each.value\r\n if (each.fieldName && results) getrequestparams += each.key + '=' + results[each.fieldName]\r\n }\r\n else {\r\n if (each.value !== undefined) getrequestparams += '&' + each.key + '=' + each.value\r\n if (each.fieldName && results) getrequestparams += '&' + each.key + '=' + results[each.fieldName]\r\n }\r\n })\r\n }\r\n\r\n return getrequestparams\r\n}\r\n\r\n\r\n/**\r\n *********************************************************\r\n Description: Generates the get request url.In the request, if there is a matchProps or routeProps or extraProps, we replace the matching keys in the url\r\n with values of results that matches the results prop or id. Query handles the query parameters by replacing keys with values from results. Suburl is part of the url where\r\n some values are inserted before it.\r\n Required props: post.\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\n\r\nconst getDataFetch = (get, id, results) => {\r\n let getrequestparams = ''\r\n const { query, matchProps, gridProps, routeProps, extraProps, customProps, passingProps, customextraProps, initialloadextrainfoProps, suburl, urlpath, subquery } = get\r\n if (urlpath) getrequestparams = urlpath\r\n if (matchProps || routeProps || extraProps || customProps || customextraProps || passingProps || initialloadextrainfoProps) {\r\n if (Array.isArray(id)) {\r\n id.forEach(each => {\r\n const { key, value } = each\r\n //let parameterNameregex = new RegExp('{' + key + '}');\r\n //getrequestparams = getrequestparams.replace(parameterNameregex, value);\r\n getrequestparams = `${getrequestparams.replace(`{${key}}`, value)}`;\r\n })\r\n }\r\n else {\r\n if (id && !Array.isArray(id)) getrequestparams = getrequestparams + '/' + id\r\n else {\r\n if (results && matchProps) getrequestparams = getrequestparams + '/' + results[matchProps.value]\r\n if (results && !matchProps) getrequestparams = getrequestparams + '/' + results['Id']\r\n }\r\n }\r\n }\r\n if (gridProps) {\r\n if (Array.isArray(id)) {\r\n id.forEach(each => {\r\n const { key, value } = each\r\n getrequestparams = `${getrequestparams.replace(`{${key}}`, value)}`;\r\n })\r\n }\r\n else {\r\n if (id && !Array.isArray(id)) getrequestparams = getrequestparams + '/' + id\r\n else {\r\n if (results) getrequestparams = getrequestparams + '/' + results[gridProps.value]\r\n }\r\n }\r\n }\r\n if (subquery) {\r\n if (results) getrequestparams = getrequestparams + '?' + subquery.name + '=' + results[subquery.value]\r\n }\r\n\r\n if (suburl) {\r\n getrequestparams = getrequestparams + suburl\r\n }\r\n if (query) {\r\n getrequestparams += '?'\r\n query.forEach((each, index) => {\r\n if (index === 0) {\r\n if (each.value) getrequestparams += each.key + '=' + each.value\r\n if (each.fieldName && results) getrequestparams += each.key + '=' + results[each.fieldName]\r\n }\r\n else {\r\n if (each.value !== undefined) getrequestparams += '&' + each.key + '=' + each.value\r\n if (each.fieldName && results) getrequestparams += '&' + each.key + '=' + results[each.fieldName]\r\n }\r\n })\r\n }\r\n\r\n return getrequestparams\r\n}\r\n\r\n\r\n\r\nconst initvalues = {\r\n formdropdown: '',\r\n formtextbox: '',\r\n formcheckbox: false,\r\n radio: false,\r\n text: '',\r\n dtext: ''\r\n}\r\nconst fieldtransformProps = {\r\n formcheckbox: {\r\n key: 'checked'\r\n },\r\n text: {\r\n key: 'text'\r\n },\r\n dtext: {\r\n key: 'text'\r\n },\r\n formdropdown: {\r\n key: 'value'\r\n },\r\n formtextbox: {\r\n key: 'value'\r\n },\r\n popupbutton: {\r\n key: 'label'\r\n }\r\n}\r\nconst formstyles = {\r\n formcontainer: {\r\n //margin: 15\r\n },\r\n formrow: {\r\n margin: 10\r\n },\r\n\r\n itemrow: {\r\n margin: 0\r\n }\r\n}\r\n\r\nconst hidestyles = {\r\n formcontainer: {\r\n //margin: 15\r\n },\r\n formrow: {\r\n //margin: 10\r\n },\r\n\r\n itemrow: {\r\n margin: 0\r\n }\r\n}\r\n/**\r\n *********************************************************\r\n Description: handles form layout generation and updates the field values based on name and value.\r\n receivevalues is used by child component to receive values from parent.\r\n cacheColProps is used to save the configurations of each child component. The name is used as key and configuration details are the properties.\r\n cache is an array which contains all the rows.\r\n Required props: commap,components, options. Within the components array there are subcomponents and the properties type, options are required. name is required within the\r\n subcomponent options prop.\r\n limitations : Can be used to hide or disable but cannot be used to insert rows.\r\n *********************************************************\r\n**/\r\n\r\nexport const createSubFormLayout = (props) => {\r\n const { components, compmap, options, type, handleFieldChange, results, effects, res, ...otherProps } = props\r\n const { totalrows, totalcolumns, items, className, styles } = options ? options : {}\r\n const allComponents = components\r\n let cache = [], cacheColProps = {}, cacheRowProps = [], itemslen = 0, allRows = [], cacheHiddenRowProps = [], hideMargin = false, customclassName = ''\r\n if (items) itemslen = items.length\r\n const rows = totalrows || (allComponents.length + itemslen)\r\n let hidemarginRow = {}\r\n allComponents.forEach((each, index) => {\r\n const { type, options, order, key, hidemargin, customClassName = '' } = each\r\n const { width, name, initialvalue, values, receiveValues, ...otherOptions } = options\r\n const show = effects ? (effects[name] ? (effects[name].show ? 'block' : 'none') : 'block') : 'block'\r\n const hide = effects ? (effects[name] ? (effects[name].hide ? 'none' : 'block') : 'none') : 'block'\r\n const load = effects ? (effects[name] ? (effects[name].load ? effects[name].load : null) : null) : null\r\n const divstyle = {\r\n display: show\r\n }\r\n hideMargin = hidemargin || false;\r\n customclassName = customClassName || ''\r\n let dispClassName = ''\r\n if (show === 'block') dispClassName += ' d-block'\r\n if (show === 'none') dispClassName += ' d-none'\r\n const { styles } = options\r\n const compClassName = options.className ? options.className : ''\r\n const formControlsConfigs = {}, storeFormControlInitValues = {}\r\n formControlsConfigs[name] = { name: name, type: type, ...otherOptions }\r\n if (results) {\r\n storeFormControlInitValues[name] = {\r\n ...results[name]\r\n }\r\n }\r\n else {\r\n storeFormControlInitValues[name] = {\r\n value: (initialvalue || initvalues[type]),\r\n error: false,\r\n touched: 0,\r\n dropdownvalues: values ? values : null\r\n }\r\n }\r\n\r\n let extraProps = {}\r\n receiveValues && receiveValues.forEach(each => {\r\n const { paramname, valuefromparent } = each\r\n extraProps[paramname] = res[valuefromparent]\r\n })\r\n\r\n const EachComp = compmap[type]\r\n const compwidth = width ? ('col-sm-' + width) : 'col-sm-12'\r\n const row = totalrows ? (options.row === 0 ? 0 : (options.row || (order - 1) || index)) : ((order - 1) || index)\r\n\r\n\r\n cache[row] || (cache[row] = [])\r\n\r\n cacheColProps[name] = {\r\n ...each,\r\n ...otherProps,\r\n comprow: row,\r\n compcol: cache[row].length,\r\n className: compwidth + ' ' + compClassName,\r\n compmap: compmap,\r\n handleFieldChange: handleFieldChange,\r\n ...formControlsConfigs[name],\r\n ...storeFormControlInitValues[name],\r\n key: key,\r\n style: customclassName ? null : { ...styles },\r\n extraProps: { ...extraProps }\r\n }\r\n hidemarginRow[row] = hideMargin ? true : false\r\n const { className, ...compAttr } = cacheColProps[name]\r\n cache[row].push(\r\n <div className={className + cacheColProps[name].display + dispClassName} key={key}>\r\n <EachComp {...compAttr} />\r\n </div>\r\n )\r\n\r\n if (cache[row].length === 1) {\r\n if (dispClassName === ' d-none') {\r\n cacheHiddenRowProps[row] = {\r\n className: 'row d-none'\r\n }\r\n }\r\n }\r\n else {\r\n cacheHiddenRowProps[row] = {\r\n className: 'row ' + customClassName\r\n }\r\n }\r\n })\r\n\r\n for (let currentrow = 0; currentrow <= rows; currentrow++) {\r\n const rowProps = {\r\n className: ' row', key: 'fieldrow' + currentrow,\r\n style: hidemarginRow[currentrow] ? null : hideMargin ? hidestyles.formrow : formstyles.formrow, ...cacheHiddenRowProps[currentrow]\r\n }\r\n cacheRowProps[currentrow] = rowProps\r\n allRows.push(\r\n <div {...rowProps}>\r\n {cache[currentrow]}\r\n </div>\r\n )\r\n }\r\n\r\n /**\r\n *********************************************************\r\n Description: Memoization function. Return a functions which when called returns a new layout with update values of form fields. In react, since the children\r\n are an array, positions and properties of each child are mapped against names. When the value in a form field changes, mapped postion and properties are fetched and\r\n updated with new values.\r\n Required props: fieldNames is an array. FieldNames contains the changed field values and name is required to update.\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n\r\n return (fieldNames) => {\r\n if (fieldNames && fieldNames.length > 0) {\r\n fieldNames.forEach(changedFieldName => {\r\n const { name, value, effect, ...otherFieldProps } = changedFieldName\r\n if (name && name != \"undefined\") {\r\n const compProps = cacheColProps[name]\r\n // console.log(compProps && compProps.type)\r\n const EachComp = compProps && compProps.type ? compmap[compProps.type] : console.log(\"here is the issue in utilities \" + compProps, compProps.type)\r\n const { comprow, compcol, key, ...otherCompProps } = compProps\r\n let rowProps = cacheRowProps[comprow]\r\n\r\n cacheColProps[name] = {\r\n ...cacheColProps[name],\r\n ...otherFieldProps\r\n }\r\n let { className, ...compAttr } = cacheColProps[name]\r\n\r\n let rowDisplayProps = ' '\r\n\r\n if (cache[comprow].length === 1) {\r\n rowDisplayProps = cacheColProps[name] && cacheColProps[name].display &&\r\n (cacheColProps[name].display).includes(\"d-none\") ? `row d-none` : `row ` + cacheColProps[name].customClassName\r\n // if (dispClassName === ' d-none') {\r\n // cacheHiddenRowProps[row] = {\r\n // className: 'row d-none'\r\n // }\r\n // }\r\n }\r\n else {\r\n rowDisplayProps = \"row \" + cacheColProps[name].customClassName\r\n }\r\n\r\n\r\n rowProps = { ...rowProps, className: rowDisplayProps }\r\n cache[comprow][compcol] = <div className={className + cacheColProps[name].display} key={key}>\r\n <EachComp key={key} {...compAttr} value={value} />\r\n </div>\r\n\r\n\r\n allRows[comprow] = <div {...rowProps}>\r\n {cache[comprow]}\r\n </div>\r\n }\r\n })\r\n }\r\n return <div>{allRows}</div>\r\n }\r\n\r\n}\r\n","import ProposedLandContainer from '../../../controls/jsons/proposedlanduse/proposedlandusegrid';\r\nimport { requestApi } from './utilities';\r\n\r\nexport const handlecustomCondition = async (propvalues) => {\r\n let condition = null;\r\n let resultsdata = null;\r\n let urldata = propvalues.options && propvalues.options.crud && propvalues.options.crud.customcondition ? propvalues.options.crud.customcondition : null\r\n if (urldata) {\r\n let ids = []\r\n let requesturl = urldata.url\r\n if (urldata.matchProps || urldata.routeProps) {\r\n const tempsaveprops = urldata.matchProps || urldata.routeProps\r\n tempsaveprops.forEach(each => {\r\n const { value } = each\r\n ids.push({ key: value, value: propvalues.match.params[value] })\r\n })\r\n }\r\n ids.forEach(each => {\r\n const { key, value } = each;\r\n requesturl = `${requesturl.replace(`{${key}}`, value)}`;\r\n })\r\n requesturl = {[urldata.type] : {\"url\" : requesturl}}\r\n await requestApi(requesturl, null, urldata.body, null, true).then(results => {\r\n resultsdata = results[0]\r\n condition = conditionsHandle(propvalues, results[0]) .condition \r\n })\r\n }\r\n else {\r\n condition = conditionsHandle(propvalues).condition\r\n }\r\n return {\"condition\" : condition, \"results\" : resultsdata }\r\n}\r\n\r\nexport const conditionsHandle = (propdata, reqdata) => {\r\n let condition = null;\r\n propdata.options.hidecondition && propdata.options.hidecondition.forEach(element => {\r\n const { prevcondition, Name, Value, getfrom, notEquals } = element\r\n let getdatafrom = getfrom == \"localstorage\" ? 'localstorage' : getfrom == \"requestdata\" ? reqdata : getfrom == \"accessPermissions\" ? propdata.accessPermissions : getfrom == \"dataItem\" ? propdata.dataItem : getfrom == \"params\" && propdata && propdata.match && propdata.match.params? propdata.match.params : null\r\n if (getdatafrom) {\r\n condition = prevcondition && prevcondition == 'or' && condition == true ? true : prevcondition == 'and' && condition == false ? false : (notEquals ? (getfrom == \"localstorage\" ? localStorage.getItem(Name) != Value : getdatafrom[Name] != Value) : (getfrom == \"localstorage\" ? localStorage.getItem(Name) == Value : getdatafrom[Name] == Value)) ? true : false\r\n }\r\n });\r\n return {\"condition\" : condition}\r\n}","/**\r\n *********************************************************\r\n Description: Number Textbox component. .\r\n Required props: type,value.\r\n limitations : N/A.\r\n *********************************************************\r\n**/\r\n\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport { NumericTextBox } from '@progress/kendo-react-inputs';\r\nimport React, { Fragment, useEffect, useState } from 'react';\r\nimport DefaultSettings from './settings';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport InputAdornment from '@material-ui/core/InputAdornment';\r\n\r\nexport default function NumberFormat(props) {\r\n const { handleFieldValue, error, changefieldto, extraProps, disabled, required, name, id, edit, options, tooltip, contexthelp, className, xtype,\r\n ...otherProps } = props\r\n const { label, type, format, helperText, min = null, max = null, fullWidth, ...otherConfigs } = otherProps;\r\n const [value, setValue] = useState(props.value)\r\n const [hold, setHold] = useState(null)\r\n // let val = ((value === null) || (value === undefined) || (value === '')) ? 0 : (!isNaN(value) ? value : 0);\r\n let pvalue = 0\r\n let numberType = xtype || changefieldto\r\n if (changefieldto === 'P') {\r\n pvalue = value !== 0 ? (!isNaN(value) ? value : 0) : 0\r\n }\r\n\r\n useEffect(() => {\r\n if (value !== props.value)\r\n setValue(props.value)\r\n }, [props.value])\r\n\r\n const handleFieldChange = (e, runBussinessRule = true) => {\r\n let evtVal = numberType === 'N' ? parseInt(e.target.value) : e.target.value\r\n handleFieldValue({\r\n target: {\r\n name: name,\r\n value: (e.target.value && runBussinessRule) ? setRange(evtVal) : evtVal,\r\n //.toString().match('^-?\\\\d+(?:\\.\\\\d{0,' + (format || -1) + '})?')[0]) : null,//e.target.value> Number(e.target.props.value)? Number(e.target.props.value)+1: e.target.value<Number(e.target.props.value)?e.target.value:e.target.value,\r\n checked: false\r\n },\r\n currentTarget: { dataset: null }\r\n }, runBussinessRule)\r\n }\r\n\r\n const setRange = (tar = 0) => {\r\n let target = tar === '' ? null : tar\r\n let result = null;\r\n if (tar === null)\r\n result = null\r\n else if ((min === null && max === null) || (min === undefined && max === undefined)) {\r\n if (Number(target) === null)\r\n result = null\r\n else if (target === null)\r\n result = null\r\n else\r\n result = Number(target)\r\n }\r\n else if (min !== null && max !== null) {\r\n if (min < 0) {\r\n result = target\r\n }\r\n else if (Number(target) >= min && Number(target) <= max) {\r\n result = Number(target)\r\n }\r\n else if (target === \"\") {\r\n result = null\r\n }\r\n else if (Number(target) === 0) {\r\n result = Number(target)\r\n }\r\n else result = value\r\n }\r\n else if (min !== null && max === null) {\r\n if (Number(target) === null)\r\n result = null\r\n else if (target === null)\r\n result = null\r\n else if (Number(target) >= min)\r\n result = Number(target)\r\n else result = min\r\n }\r\n else if (min === null && max !== null) {\r\n if (Number(target) === null)\r\n result = null\r\n else if (Number(target) <= max)\r\n result = Number(target)\r\n else result = value || null\r\n }\r\n\r\n else result = value || null\r\n return result\r\n }\r\n\r\n let tlabel = (tooltip || contexthelp) ? <Fragment> {label} < Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em', color: '#007bff' }} onClick={() => DefaultSettings.showDrawer(contexthelp)} />\r\n </Tooltip> </Fragment> : label;\r\n return (\r\n <>\r\n {numberType === 'DN' && <TextField\r\n className='pt-2'\r\n label={tlabel}\r\n type=\"number\"\r\n error={error} required={required}\r\n fullWidth={fullWidth ? fullWidth : true}\r\n helperText={helperText}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n inputProps={{ min: min, max: max }}\r\n disabled={disabled || false}\r\n value={value ? (!isNaN(value) ? value.toString().match('^-?\\\\d+(?:\\.\\\\d{0,' + (format || -1) + '})?')[0] : null) : null}\r\n onChange={(e) => handleFieldChange(e, true)}\r\n onBlur={(e) => handleFieldChange(e, false)}\r\n {...otherConfigs}\r\n />}\r\n {numberType === 'N' && <TextField\r\n className='pt-2'\r\n type=\"number\"\r\n // format={'n0'}\r\n error={error} required={required}\r\n fullWidth={fullWidth ? fullWidth : true}\r\n label={tlabel}\r\n // className='pt-2'\r\n value={value ? (!isNaN(value) ? parseInt(value) : '') : null}\r\n disabled={disabled || false}\r\n onChange={(e) => handleFieldChange(e, false)}\r\n onBlur={(e) => handleFieldChange(e, true)}\r\n\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n inputProps: { min: min, max: max }\r\n }}\r\n name={name}\r\n helperText={helperText}\r\n {...otherConfigs}\r\n {...extraProps}\r\n />}\r\n {numberType === 'P' &&\r\n <TextField\r\n label={tlabel}\r\n inputProps={{\r\n endAdornment: <InputAdornment position=\"end\">%</InputAdornment>,\r\n inputProps: { min: min, max: max }\r\n }}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n type=\"number\"\r\n error={error} required={required}\r\n fullWidth={fullWidth ? fullWidth : true}\r\n helperText={helperText}\r\n className='pt-2 text-secondary'\r\n disabled={disabled || false}\r\n value={pvalue ? parseInt(value) : null}\r\n onChange={(e) => handleFieldValue({\r\n target: {\r\n name: name,\r\n value: setRange(Number(e.target.value)),//e.target.value > Number(e.target.props.value) ? Number(e.target.props.value) + 1 : e.target.value < Number(e.target.props.value) ? e.target.value : e.target.value,\r\n checked: false\r\n },\r\n currentTarget: { dataset: null }\r\n })}\r\n onBlur={(e) => handleFieldValue({\r\n target: {\r\n name: name,\r\n value: setRange(Number(e.target.value)),//e.target.value > Number(e.target.props.value) ? Number(e.target.props.value) + 1 : e.target.value < Number(e.target.props.value) ? e.target.value : e.target.value,\r\n checked: false\r\n },\r\n currentTarget: { dataset: null }\r\n }, false)}\r\n {...otherConfigs}\r\n />\r\n }\r\n {numberType === 'C' && <TextField\r\n label={tlabel}\r\n inputProps={{\r\n startAdornment: <InputAdornment position=\"start\">$</InputAdornment>,\r\n inputProps: { min: (min || 0), max: max }\r\n }}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n type=\"number\"\r\n error={error} required={required}\r\n fullWidth={fullWidth ? fullWidth : true}\r\n helperText={helperText}\r\n className='text-secondary'\r\n disabled={disabled || false}\r\n value={value ? (!isNaN(value) ? value.toString().match('^-?\\\\d+(?:\\.\\\\d{0,' + (format || -1) + '})?')[0] : 0) : null}\r\n onChange={(e) => handleFieldValue({\r\n target: {\r\n name: name,\r\n value: setRange(e.target.value.toString().match('^-?\\\\d+(?:\\.\\\\d{0,' + (format || -1) + '})?')[0]),//e.target.value > Number(e.target.props.value) ? Number(e.target.props.value) + 1 : e.target.value < Number(e.target.props.value) ? e.target.value : e.target.value,\r\n checked: false\r\n },\r\n currentTarget: { dataset: null }\r\n })}\r\n onBlur={(e) => handleFieldValue({\r\n target: {\r\n name: name,\r\n value: setRange(e.target.value.toString().match('^-?\\\\d+(?:\\.\\\\d{0,' + (format || -1) + '})?')[0]),//e.target.value > Number(e.target.props.value) ? Number(e.target.props.value) + 1 : e.target.value < Number(e.target.props.value) ? e.target.value : e.target.value,\r\n checked: false\r\n },\r\n currentTarget: { dataset: null }\r\n }, false)}\r\n {...otherConfigs}\r\n />}\r\n {/* {helperText && <FormHelperText>{helperText}</FormHelperText>} */}\r\n </>\r\n )\r\n}","import MaterialTable from '@material-table/core';\r\nimport { Button, Tooltip, Typography } from '@material-ui/core';\r\nimport { green, pink, teal } from '@material-ui/core/colors';\r\nimport Fab from '@material-ui/core/Fab';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport Icon from '@material-ui/core/Icon';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport moment from 'moment';\r\nimport { Fragment } from \"react\";\r\nimport WorkflowUse from \"../../../modules/workflow/workflowuse\";\r\nimport CircularStatic from './daystimer';\r\nimport DefaultSettings from './settings';\r\nimport Editor from '../../modules/form/cwysiwyg'\r\nconst _ = require('lodash');\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n display: 'flex',\r\n '& > *': {\r\n margin: theme.spacing(1),\r\n },\r\n },\r\n pink: {\r\n color: theme.palette.getContrastText(pink[500]),\r\n backgroundColor: pink[500],\r\n },\r\n green: {\r\n color: '#fff',\r\n backgroundColor: green[500],\r\n },\r\n teal: {\r\n color: theme.palette.getContrastText(teal[500]),\r\n backgroundColor: teal[500],\r\n },\r\n}));\r\n\r\n\r\nexport default function Label(props) {\r\n const { value, handleFieldValue, handleButtonClick, extraProps, subname, shareProps, type, error, required, tooltip, contexthelp, changefieldto, color, changeTypefieldto, ...otherProps } = props\r\n const { label, helperText, name, items, xtype, fullWidth, ismultiple, datedisplay, disabled, isIcon, displayonedit, icon, className, variant, format, style, ...otherConfigs } = otherProps\r\n let { transformProps, nested, columns } = extraProps || {}\r\n let hidelabel = (name === 'UpdatedByName' || name === 'CreatedByName' || name === 'UpdatedOn' || name === 'CreatedOn') ? true : false\r\n let checktype = props && props.sharedProps && props.sharedProps.createduplicate && hidelabel ?\r\n 'hidedisplay' : datedisplay ? 'historydate' : (type ? type : (changefieldto || changeTypefieldto))\r\n let val = ((value === null) || (value === undefined) || (value === '')) ? 0 : value;\r\n let labelval = ((value === null) || (value === undefined) || (value === '')) ? '' : value\r\n let finallabel = label\r\n let dateFormat = extraProps && extraProps.dateFormat ? extraProps.dateFormat : \"MM/DD/YYYY\"\r\n let dateMonthFormat = extraProps && extraProps.dateFormat ? extraProps.dateFormat : \"MM/DD\"\r\n \r\n let allitems = []\r\n\r\n\r\n if (items && Array.isArray(items)) {\r\n if (subname)\r\n allitems = items[subname]\r\n else allitems = items\r\n }\r\n else if (items && typeof items === 'object') {\r\n if (subname && Array.isArray(items[subname]))\r\n allitems = items[subname]\r\n else allitems.push(items)\r\n }\r\n else allitems = items;\r\n\r\n if (name === 'CreatedOn' || name === 'UpdatedOn') {\r\n labelval = value ? moment(value, \"YYYY-MM-DDTHH:mm:ss\").format(\"MM/DD/YYYY hh:mm:ss A\") : '';\r\n }\r\n if (name === 'UpdatedOn' || name === 'UpdatedBy' || name === 'UpdatedByName') {\r\n finallabel = ((value === null) || (value === undefined) || (value === '')) ? '' : label\r\n }\r\n\r\n let checkedval\r\n if (checktype === 'CF' || 'checkbox') {\r\n checkedval = value ? (value === 'Y' ? 'Yes' : 'No') : ''\r\n }\r\n\r\n let dateval = ((value === null) || (value === undefined) || (value === '')) ? '' : value\r\n if (checktype === 'date') dateval = dateval ? moment(dateval).format(dateFormat) : dateval\r\n if (checktype === 'datemonth') dateval = dateval ? moment(dateval).format(\"MM/DD\") : '';\r\n if (checktype === 'time') dateval = dateval ? moment(dateval, \"HH:mm:ss\").format(\"hh:mm A\") : '';\r\n if (checktype === 'timer') dateval = dateval ? moment(dateval, \"HH:mm:ss\").format(\"hh:mm A\") : '';\r\n if (checktype === 'datetimepicker') dateval = dateval ? moment(dateval, \"MM/DD/YYYY hh:mm:ss A\").format(\"MM/DD/YYYY hh:mm:ss A\") : '';\r\n\r\n\r\n let pvalue = 0\r\n if (xtype === 'P') {\r\n pvalue = value !== 0 ? value : 0\r\n }\r\n if (xtype === 'C') {\r\n let cformat = format ? format > 100 ? 2 : format : 2\r\n val = '$' + parseFloat(val).toFixed(cformat)\r\n }\r\n if (xtype === 'DN' || checktype === 'domainCalVal') {\r\n let cformat = format ? format > 100 ? 2 : format : 2\r\n val = parseFloat(val).toFixed(cformat)\r\n }\r\n if (xtype === 'P') {\r\n val = val + '%';\r\n }\r\n\r\n let displayname;\r\n if (transformProps) {\r\n if ((ismultiple || checktype === 'CB') && val && val !== '') {\r\n val = val && val.split(',');\r\n let valarray = (allitems || []).filter(function (item) { return val.indexOf((item[transformProps.value]).toString()) > -1 });\r\n displayname = (_.map(valarray, transformProps.label)).join(', ')\r\n } else {\r\n const selected = allitems && allitems.find(each => {\r\n if (value === null) {\r\n return null\r\n }\r\n else if (value && !isNaN(value) && (each[transformProps.alternatevalue] === Number(value))) {\r\n return each[transformProps.alternatevalue] === Number(value)\r\n }\r\n else if (value && (each[transformProps.alternatevalue] === value)) {\r\n return each[transformProps.alternatevalue] === value\r\n }\r\n else if (typeof value === 'number' && each[transformProps.value])\r\n return each[transformProps.value] === value\r\n else return (each[transformProps.value] && each[transformProps.value].toString()) === value\r\n })\r\n if (selected) {\r\n if (nested) {\r\n displayname = selected[nested][transformProps.label]\r\n }\r\n\r\n else displayname = selected[transformProps.label]\r\n }\r\n else displayname = (allitems && allitems.length > 0) ? '' : value\r\n }\r\n }\r\n else {\r\n if (checktype !== 'TM' && checktype !== 'domainCalVal')\r\n if (Array.isArray(value)) {\r\n displayname = value && value.length > 0 ? value.join(', ') : value\r\n }\r\n else displayname = (allitems && allitems.length > 0 && value && ((allitems.find(each => each.value.toString() === value.toString()) || {}).name)) || value\r\n }\r\n // if(label === 'Status'){\r\n // console.log(displayname)\r\n // }\r\n switch (checktype) {\r\n case 'customLabel':\r\n return (\r\n <FormControl fullWidth={fullWidth ? fullWidth : true} error={error} required={required}>\r\n <Fragment>\r\n <Typography variant={'caption'} color={color ? color : \"#007bff\"} className=\"fw-bold\">{finallabel} \r\n </Typography> </Fragment>\r\n\r\n </FormControl>\r\n )\r\n case 'DS':\r\n case 'AC':\r\n case 'RB':\r\n case 'RG':\r\n case 'CB':\r\n case 'dropdown':\r\n case 'checkboxgroup':\r\n case 'radiogroup':\r\n case 'autocomplete':\r\n case 'B':\r\n case 'LB':\r\n case 'DM':\r\n case 'checkauto':\r\n\r\n return (\r\n <FormControl fullWidth={fullWidth ? fullWidth : true} error={error} required={required}>\r\n {\r\n tooltip && <Fragment> <Typography variant={'caption'} className=\"fw-bold\" >{label} \r\n < Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.6em', color: '#007bff' }} onClick={(evt) => contexthelp ?\r\n DefaultSettings.showDrawer(contexthelp) : evt.preventDefault()} />\r\n </Tooltip>\r\n </Typography>\r\n </Fragment>\r\n }\r\n {\r\n !tooltip && <Fragment> <Typography className=\"fw-bold\" variant={'caption'} >{label} </Typography> </Fragment>\r\n }\r\n <Typography variant={'body2'} className=\"text-secondary\" >{displayname}</Typography>\r\n {helperText && <FormHelperText>{helperText}</FormHelperText>}\r\n </FormControl>\r\n )\r\n case 'hidedisplay':\r\n return null\r\n case 'date':\r\n case 'time':\r\n case 'timer':\r\n case 'datetimepicker':\r\n case 'datelabel':\r\n case 'datemonth':\r\n case 'D':\r\n return <Fragment>\r\n <div > <Typography variant={'caption'} className=\"fw-bold\" >{label} </Typography>\r\n <Typography variant={'body2'} className=\"text-secondary\" >{dateval || ''} </Typography>\r\n </div>\r\n </Fragment > \r\n case 'DT':\r\n return <Fragment>\r\n <div > <Typography variant={'caption'} className=\"fw-bold\" >{label} </Typography>\r\n <Typography variant={'body2'} className=\"text-secondary\" >{dateval || ''} </Typography>\r\n </div>\r\n </Fragment > \r\n case 'numberformat':\r\n case 'domainCalVal':\r\n return (\r\n <div>\r\n {tooltip && <Fragment> <Typography variant={'caption'} className=\"fw-bold\">{label} </Typography> \r\n < Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.6em', color: '#007bff' }} onClick={(evt) => contexthelp ? DefaultSettings.showDrawer(contexthelp) : evt.preventDefault()} />\r\n </Tooltip> <Typography variant={'body2'} className=\"text-secondary\">{val} </Typography> </Fragment>}\r\n {!tooltip && <Fragment><Typography variant={'caption'} className=\"fw-bold\">{label} </Typography>\r\n <Typography variant={'body2'} className=\"text-secondary\" >{val} </Typography> </Fragment>}\r\n </div>\r\n )\r\n case 'CF':\r\n case 'CSC':\r\n case 'checkbox':\r\n return (\r\n <FormControl fullWidth={fullWidth ? fullWidth : true} error={error} required={required}>\r\n {tooltip && <Fragment> <Typography variant={'caption'} className=\"fw-bold\" >{label} \r\n <Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.6em', color: '#007bff' }} onClick={(evt) => contexthelp ? DefaultSettings.showDrawer(contexthelp) : evt.preventDefault()} />\r\n </Tooltip> </Typography> </Fragment>\r\n }\r\n {!tooltip && <Fragment>\r\n <Typography variant={'caption'} className=\"fw-bold\">{label} \r\n </Typography> </Fragment>\r\n }\r\n <Typography variant={'body2'} className=\"text-secondary\" >{checkedval} </Typography>\r\n {helperText && <FormHelperText>{helperText}</FormHelperText>}\r\n </FormControl>\r\n )\r\n case 'multiadd':\r\n return (\r\n <FormControl fullWidth={fullWidth ? fullWidth : true} error={error} required={required}>\r\n <MaterialTable\r\n title=\"\"\r\n // style={{ height: '250px', overflow: 'auto' }}\r\n columns={columns}\r\n data={value}\r\n options={{\r\n search: false,\r\n // paging: false,\r\n emptyRowsWhenPaging: true,\r\n toolbar: false\r\n }}\r\n />\r\n {helperText && <FormHelperText>{helperText}</FormHelperText>}\r\n </FormControl>\r\n )\r\n case 'button':\r\n case 'LB-BU':\r\n case 'RBT':\r\n if (displayonedit) {\r\n return null\r\n }\r\n else if (isIcon) {\r\n return <Fab onClick={handleButtonClick} name={name} title={label} disabled={true} {...otherConfigs}>\r\n < Icon > {icon}</Icon >\r\n </Fab >\r\n }\r\n else return (\r\n <div>\r\n <Button\r\n color={'default'}\r\n variant={'outlined'}\r\n disabled\r\n // onClick={handleButtonClick}\r\n >\r\n {label}\r\n </Button>\r\n {tooltip && <Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.6em', color: '#007bff' }} onClick={(evt) => contexthelp ? DefaultSettings.showDrawer(contexthelp) : evt.preventDefault()} />\r\n </Tooltip>}\r\n {helperText && <FormHelperText>{helperText}</FormHelperText>}\r\n </div>\r\n )\r\n case 'historydate':\r\n return (\r\n <FormControl fullWidth={fullWidth ? fullWidth : true} error={error} required={required}>\r\n <Fragment>\r\n <Typography variant={'caption'} className=\"fw-bold\">{finallabel} {labelval}\r\n </Typography>\r\n </Fragment>\r\n {/* <Typography variant={'caption'} className=\"text-secondary\" >{labelval} </Typography> */}\r\n </FormControl>\r\n )\r\n case 'toggle':\r\n {\r\n let showvalue = 'In-Active';\r\n if (transformProps[value] === 'Y' || value === \"Y\") showvalue = 'Yes';\r\n if (transformProps[value] === 'N' || value === \"N\") showvalue = 'No';\r\n if (transformProps[value] === 'A' || value === \"A\") showvalue = 'Active';\r\n if (transformProps[value] === 'I' || value === \"I\") showvalue = 'In-Active';\r\n return <Fragment>\r\n <div > <Typography variant={'caption'} className=\"fw-bold\">{label} \r\n </Typography> <Typography variant={'body2'} className=\"text-secondary\" >\r\n {showvalue} </Typography>\r\n </div>\r\n </Fragment >\r\n }\r\n case 'BU':\r\n return \"\"\r\n case 'TM':\r\n return <CircularStatic extraProps={extraProps} tooltip={tooltip} error={error} required={required} contexthelp={contexthelp} value={value} view={true} label={label} />\r\n case 'workflowuse': return (\r\n <WorkflowUse {...props} />\r\n )\r\n case 'L':\r\n case 'link':\r\n return (\r\n <div style={{ color: '#007bff', fontSize: '12px' }} onClick={() => { window.open(value, '_blank').focus(); }} className=\"pointer\" > <u>{label} </u> </div>\r\n )\r\n case 'editor':\r\n return (\r\n <FormControl className={className} fullWidth={fullWidth ? fullWidth : true} error={error} required={required}>\r\n <Editor name={name} edit={false} value={value} label={label} />\r\n </FormControl>\r\n )\r\n case 'SGN':\r\n case 'Signature':\r\n return (value ? <img src={value} /> : null)\r\n case 'SH':\r\n return (\r\n <FormControl className={className} color={'red'} fullWidth={fullWidth ? fullWidth : true} error={error} required={required}>\r\n {tooltip && <Fragment> <Typography variant={'caption'} className=\"fw-bold\" style={{color: '#074078' }}>{finallabel} \r\n <Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.6em', color: '#007bff' }} onClick={(evt) => contexthelp ? DefaultSettings.showDrawer(contexthelp) : evt.preventDefault()} />\r\n </Tooltip> </Typography> </Fragment>\r\n }\r\n {!tooltip && <Fragment>\r\n <Typography variant={'caption'} style={{color: '#074078' }} className=\"fw-bold\" >{finallabel} \r\n </Typography> </Fragment>\r\n }\r\n <Typography variant={'caption'} className=\"text-primary\" style={{ overflowWrap: 'break-word' }}>{labelval} </Typography>\r\n {helperText && <FormHelperText>{helperText}</FormHelperText>}\r\n </FormControl>\r\n ) \r\n case 'phoneformat':\r\n case 'textfield':\r\n case 'TA':\r\n default:\r\n return (\r\n <FormControl className={className} fullWidth={fullWidth ? fullWidth : true} error={error} required={required}>\r\n {tooltip && <Fragment> <Typography variant={'caption'} className=\"fw-bold\" style={style}>{finallabel} \r\n <Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.6em', color: '#007bff' }} onClick={(evt) => contexthelp ? DefaultSettings.showDrawer(contexthelp) : evt.preventDefault()} />\r\n </Tooltip> </Typography> </Fragment>\r\n }\r\n {!tooltip && <Fragment>\r\n <Typography variant={'caption'} className=\"fw-bold\" >{finallabel} \r\n </Typography> </Fragment>\r\n }\r\n <Typography variant={'body2'} className=\"text-secondary\" style={{ overflowWrap: 'break-word' }}>{transformProps ? displayname : labelval} </Typography>\r\n {helperText && <FormHelperText>{helperText}</FormHelperText>}\r\n </FormControl>\r\n )\r\n }\r\n}\r\n\r\n\r\n","import { getEnvVariable } from \"../../../modules/environmentalList\";\r\nimport { GetData } from \"./requests\";\r\n\r\nexport const downloadNoticeData = (id) => {\r\n const pdfurl = getEnvVariable('TemplateAPI') + `/api/Template/PDF/${id}`;\r\n GetData(pdfurl).then(data => {\r\n if (data) {\r\n var contentPDF = data.fileContentPDF;\r\n var filename = 'Notice_' + data.id + '.pdf';\r\n handleFileDownload(contentPDF, filename);\r\n }\r\n })\r\n}\r\n\r\n\r\nexport const handleFileDownload = (contentPDF, filename) => {\r\n var url = \"data:pdf;base64,\" + contentPDF;\r\n GetData(url)\r\n .then(res => res.blob())\r\n .then(function (blob) {\r\n var a = document.createElement(\"a\");\r\n document.body.appendChild(a);\r\n a.style = \"display: none\";\r\n var url = window.URL.createObjectURL(blob);\r\n a.href = url;\r\n a.download = filename;\r\n a.click();\r\n window.URL.revokeObjectURL(url);\r\n })\r\n}","import { getEnvVariable } from '../../../modules/environmentalList';\r\nimport DefaultSettings from '../../controls/components/settings';\r\nimport { SetApplicationFieldsData } from '../map/eps/multipleLocationServices';\r\nimport { requestApi } from './utilities';\r\nconst _ = require('lodash');\r\n\r\n\r\nexport const handlecustommultiplelocation = async (gisdistrictid, sitepermittypeid) => {\r\n let configtypedomains = {\r\n \"get\": {\r\n url: getEnvVariable('Admin') + `/api/Districts/` + getEnvVariable('ModuleKey') + `/All/Active`,\r\n }\r\n }\r\n let configtypedropdown = {\r\n url: getEnvVariable('AdminConfig') + `/api/SitePermitTypesConfig/${sitepermittypeid}/All`\r\n }\r\n let isvalid = null;\r\n await requestApi({ get: configtypedropdown }, '').then(res => {\r\n let selectedconfigtypes = res ? _.map(res, 'DistrictId') : []\r\n isvalid = selectedconfigtypes\r\n })\r\n return isvalid;\r\n}\r\n\r\nexport const handlecustommultiplelocationreq = async (isvalid, gisdistrictid) => {\r\n let configtypedomains = {\r\n \"get\": {\r\n url: getEnvVariable('Admin') + `/api/Districts/` + getEnvVariable('ModuleKey') + `/All/Active`,\r\n }\r\n }\r\n let validres = null;\r\n await requestApi(configtypedomains, '').then(res => {\r\n let savedconfigitems = isvalid\r\n let domainres = res.map(x => savedconfigitems.includes(Number(x.Id)) ? x : false);\r\n var availabledistricts = domainres.filter(Boolean);\r\n validres = availabledistricts.filter(a => a.ArcGISBoundaryId == gisdistrictid);\r\n return validres\r\n })\r\n return validres;\r\n}\r\n\r\nexport const handlePrimaryCheck = async (e, props, routes, checked) => {\r\n\r\n let isvalid = await handlecustommultiplelocation(props.dataItem.District, routes.routeid)\r\n let validation = await handlecustommultiplelocationreq(isvalid, props.dataItem.District)\r\n if (checked && validation.length > 0) {\r\n if (getEnvVariable('ModuleKey') == \"KEPT\")\r\n if (DefaultSettings.getAlert() != null && alert)\r\n DefaultSettings.getAlert().show(`Please wait Primary location is changing`, 'info');\r\n let refid = routes.routeid1, permittypeid = routes.routeid;\r\n //callback function ()\r\n SetApplicationFieldsData(permittypeid, refid, props.dataItem, validation).then(ref => { })\r\n }\r\n else if (checked == false) {\r\n if (DefaultSettings.getAlert() != null && alert)\r\n DefaultSettings.getAlert().show(`At least one primary should be checked to update primary location`, 'info');\r\n }\r\n else {\r\n if (DefaultSettings.getAlert() != null && alert)\r\n DefaultSettings.getAlert().show(`Selected Primary location is out of boundaries`, 'error')\r\n }\r\n}","/**\r\n *********************************************************\r\n Description: Handles grid component.\r\n Required props: type.\r\n limitations : just displays the grid data. on double click on the row changes the route.\r\n *********************************************************\r\n**/\r\n\r\nimport { Divider, Icon } from '@material-ui/core';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward';\r\nimport ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\r\nimport ColorIcon from '@material-ui/icons/Brightness1';\r\nimport ClearIcon from '@material-ui/icons/Clear';\r\nimport CreateIcon from '@material-ui/icons/Create';\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport DownloadIcon from '@material-ui/icons/GetApp';\r\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\r\nimport { groupBy, process, toDataSourceRequestString, translateDataSourceResultGroups } from '@progress/kendo-data-query';\r\nimport {\r\n setExpandedState,\r\n setGroupIds\r\n} from \"@progress/kendo-react-data-tools\";\r\nimport { ExcelExport } from '@progress/kendo-react-excel-export';\r\nimport { Grid, GridColumn, GridColumnMenuFilter } from '@progress/kendo-react-grid';\r\nimport { number } from 'mathjs';\r\nimport moment from 'moment';\r\nimport React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { bindActionCreators } from 'redux';\r\nimport { getEnvVariable } from '../../../modules/environmentalList';\r\nimport { setRecordData, snackbarMessage } from '../../actions';\r\nimport { getOptions } from '../../controls/components/savegridreport';\r\nimport { downloadNoticeData } from '../../controls/helpers/actions';\r\nimport { GetData } from '../../controls/helpers/requests';\r\nimport { requestApi as newRequestApi } from '../../controls/helpers/rest';\r\nimport { handlecustomCondition } from '../../modules/form/conditions';\r\nimport { handlePrimaryCheck } from '../../modules/form/customlocationvalidation';\r\nimport FormHeader from '../form/cformheader';\r\nimport { requestApi } from '../form/utilities';\r\nimport { getToken } from '../header';\r\nimport Dialog from '../report/dialog';\r\nimport GridHeader from './cgridheader';\r\nimport { CustomColumnMenu } from './customColumnMenu.jsx';\r\nconst _ = require('lodash');\r\n\r\n\r\nconst processWithGroups = (data, group) => {\r\n const newDataState = groupBy(data, group);\r\n setGroupIds({\r\n data: newDataState,\r\n group: group,\r\n });\r\n return newDataState;\r\n};\r\n\r\n\r\nclass CGrid extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.token = getToken()\r\n this.state = {\r\n dataState: this.props.dataState || { skip: 0, take: 20 },\r\n data: this.props.useComp ? this.props.data.slice(0, 20 + 0) : [],\r\n total: !this.props.useComp ? 0 : (this.props.total || this.props.data.length),\r\n exportdata: false,\r\n columns: this.props.options && this.props.options.gridcolumns,\r\n pageable: {\r\n buttonCount: 2,\r\n info: true,\r\n type: 'numeric',\r\n pageSizes: [10, 20, 30, 40, 50, 100],\r\n previousNext: true\r\n },\r\n passDataItem: null,\r\n presentItemIndex: null,\r\n available: false,\r\n rowselected: null,\r\n setMinWidth: false,\r\n gridCurrent: 0,\r\n hasDefaultReport: false,\r\n anchorEl: null,\r\n filteredfield: [],\r\n rowrenderedslide: false,\r\n initialloadextrainfo: null,\r\n collapsedState: [],\r\n\r\n };\r\n }\r\n minGridWidth = 0;\r\n /**\r\n *********************************************************\r\n Description: Handles the double click on the grid row. Update prop on the json is used to generate the link and change the route\r\n Required props: grid needs to have data.\r\n limitations : only double click event is handled.\r\n *********************************************************\r\n**/\r\n\r\n //group start\r\n handleGroupChange = (event) => {\r\n const newDataState = processWithGroups((this.props.data || []), event.group);\r\n this.setState({\r\n result: newDataState,\r\n group: event.group,\r\n });\r\n };\r\n\r\n expandChange = (event) => {\r\n const item = event.dataItem;\r\n\r\n if (item.groupId) {\r\n const newCollapsedIds = !event.value\r\n ? [...this.state.collapsedState, item.groupId]\r\n : this.state.collapsedState.filter(\r\n (groupId) => groupId !== item.groupId\r\n );\r\n this.setState({\r\n collapsedState: newCollapsedIds,\r\n });\r\n }\r\n };\r\n //group end\r\n\r\n\r\n rowRender = (trElement, dataItem) => {\r\n const { options, compmap, accessPermissions, accessLevelPermissions } = this.props\r\n const { crud, sidebar, components, stopRowClick, custompropsvalue } = options\r\n const { create, update, read } = crud || {}\r\n // const del = crud.delete\r\n const nocolor = { fontWeight: \"normal\", fontStyle: 'normal' };\r\n const green = { fontWeight: \"bold\", fontStyle: 'italic' };\r\n\r\n const trProps = {\r\n ...trElement.props,\r\n style: this.state.rowselected && ((dataItem.dataItem === this.state.rowselected) || (dataItem === this.state.rowselected) || (dataItem && dataItem.dataItem && dataItem.dataItem.Id && dataItem.dataItem.Id === this.state.rowselected.Id)) ? green : nocolor,\r\n onDoubleClick: () => {\r\n if (stopRowClick) {\r\n return;\r\n }\r\n if (sidebar) {\r\n let checkindexeddata = this.state.data\r\n let checkindexdata = Array.isArray(checkindexeddata) ? checkindexeddata : checkindexeddata.data\r\n let idx = checkindexdata.indexOf(dataItem.dataItem);\r\n if (localStorage.getItem('griddataItem') !== null) {\r\n localStorage.removeItem('griddataItem')\r\n }\r\n // if (this.props.location.pathname === '/Administration/applicationtypes') {\r\n // localStorage.setItem('griddataItem', JSON.stringify(dataItem.dataItem));\r\n // }\r\n if (this.props.custompropsvalue || custompropsvalue) {\r\n let pathname = this.props.location.pathname\r\n this.props.match.params.Id = dataItem[this.props.custompropsvalue || custompropsvalue] || dataItem.dataItem[this.props.custompropsvalue || custompropsvalue]\r\n pathname = pathname + '/' + this.props.match.params.Id;\r\n this.props.history.push(pathname);\r\n }\r\n this.setState({ currentDataItem: dataItem, presentItemIndex: idx, openSlide: true, rowselected: dataItem.dataItem, rowrenderedslide: true })\r\n\r\n }\r\n else {\r\n\r\n if (this.props.useComp) {\r\n this.props.handleEdit(dataItem.dataItem)\r\n }\r\n else if (update) {\r\n let pushLink = ''\r\n const { link, matchProps, type } = update.link\r\n if (Array.isArray(update.link)) {\r\n update.link.forEach(each => {\r\n const { link, matchProps } = each\r\n pushLink += link + '/' + (this.props.match.params[matchProps.value] ?\r\n this.props.match.params[matchProps.value] : dataItem.dataItem[matchProps.value])\r\n\r\n })\r\n }\r\n else {\r\n if (matchProps) pushLink += link + '/' + dataItem.dataItem[matchProps.value]\r\n }\r\n this.props.history.push(`${pushLink}`)\r\n }\r\n }\r\n },\r\n };\r\n return React.cloneElement(trElement, { ...trProps }, trElement.props.children);\r\n }\r\n\r\n componentDidMount() {\r\n this.DidMount();\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState,) {\r\n const { dataState } = this.state;\r\n if ((prevProps.data !== this.props.data) && this.props.useComp || (prevProps.total !== this.props.total)) {\r\n this.setState({\r\n data: this.props.allowPropsData ? this.props.data :\r\n this.props.data.slice(dataState.skip, dataState.take + dataState.skip), total: this.props.total\r\n })\r\n }\r\n }\r\n\r\n async DidMount() {\r\n const { useComp, gridkey, options } = this.props;\r\n const { crud } = options\r\n //const { recordinfo } = crud\r\n if (crud && crud.customcondition) {\r\n let initialloadextrainfodata = await handlecustomCondition(this.props)\r\n this.setState({ initialloadextrainfo: initialloadextrainfodata })\r\n }\r\n if (this.props && this.props.options && this.props.options.crud && this.props.options.crud.recordinfo && !(this.props.header && this.props.header.recordidinfo && this.props.header.recordidinfo === this.props.match.params.routeid1)) {\r\n const { get, transPropsurl } = this.props.options.crud.recordinfo\r\n const { routeProps, } = get\r\n let url = get.url;\r\n let id;\r\n routeProps.forEach(each => {\r\n const { key } = each\r\n id = routeProps ? this.props.match.params[key] : null\r\n url = `${url.replace(`{${key}}`, id)}`\r\n\r\n })\r\n GetData(url).then(res => {\r\n this.props.setRecordData(this.props.match.params.routeid1, res);\r\n })\r\n }\r\n this.grid = document.querySelector('.k-grid');\r\n window.addEventListener('resize', this.handleResize);\r\n // if (useComp) this.props.columns.map(item => this.minGridWidth += item.width);\r\n this.props.options.gridcolumns.map(item => this.minGridWidth += item.width)\r\n this.setState({\r\n gridCurrent: this.grid.offsetWidth,\r\n setMinWidth: this.grid.offsetWidth < this.minGridWidth\r\n });\r\n this.loadDefaultsGridData();\r\n // let subgrid = this.props && this.props.options && this.props.options.childGrid ? true : false\r\n // if ((localStorage.getItem(this.props.location.pathname) !== null) && !subgrid && !useComp) {\r\n // this.loadDefaultsGridData();\r\n // }\r\n }\r\n\r\n intialLoadData = () => {\r\n //Fetch grid persistance for the current logged in user\r\n const { options } = this.props\r\n let existingReportsURL = getEnvVariable('Report') + `/api/Reports/Default/${this.props.attachparamgridkey ? this.props.match.params.key + this.props.gridkey : this.props.gridkey}`\r\n GetData(existingReportsURL, null, null, false).then(res => {\r\n if (res && res.Id > 0) {\r\n this.setState({ hasDefaultReport: true }, () => {\r\n // if (DefaultSettings.getAlert() != null && alert)\r\n // DefaultSettings.getAlert().show('Default filters applied to the grid','success');\r\n this.loadReportFilter(this, res.Id)\r\n })\r\n }\r\n })\r\n }\r\n\r\n LoadGrid = (noReportFilter) => {\r\n let subgrid = this.props && this.props.options && this.props.options.childGrid ? true : false\r\n if (!this.props.useComp && noReportFilter) {\r\n this.loadDefaultsGridData();\r\n }//(localStorage.getItem(this.props.location.pathname) !== null) &&\r\n else {\r\n if (!subgrid) {\r\n this.intialLoadData()\r\n }\r\n }\r\n }\r\n\r\n loadDefaultsGridData() {\r\n let datastate = null\r\n let subgrid = this.props && this.props.options && this.props.options.childGrid ? true : false\r\n let pathName = this.props.location.pathname\r\n if (this.props.pathKey)\r\n pathName = pathName + this.props.pathKey;\r\n if ((localStorage.getItem(pathName) !== null) && !subgrid) {\r\n datastate = JSON.parse(localStorage.getItem(pathName))\r\n }\r\n else datastate = this.state.dataState\r\n this.fetchData(datastate);\r\n }\r\n\r\n /**\r\n *********************************************************\r\n Description: For responsive grid based on broswer size\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n\r\n handleResize = () => {\r\n if (this.grid.offsetWidth < this.minGridWidth && !this.state.setMinWidth) {\r\n this.setState({\r\n setMinWidth: true\r\n });\r\n } else if (this.grid.offsetWidth > this.minGridWidth) {\r\n this.setState({\r\n gridCurrent: this.grid.offsetWidth,\r\n setMinWidth: false\r\n });\r\n }\r\n }\r\n\r\n // setWidth = (minWidth) => {\r\n // let width = this.state.setMinWidth ? minWidth :\r\n // minWidth + (this.state.gridCurrent - this.minGridWidth) / this.props.options.gridcolumns.length;\r\n // return width;\r\n // }\r\n\r\n setWidth = (title) => {\r\n if (title) {\r\n const baseWidthPerCharacter = 13; // This is an arbitrary value; adjust based on your font\r\n const standardWidth = 200; // Standard width for titles with less than 10 characters\r\n const titleLength = title.length;\r\n const calculatedWidth = titleLength >= 15 ? titleLength * baseWidthPerCharacter : standardWidth;\r\n return calculatedWidth\r\n }\r\n // let width = minWidth ? minWidth : (window.innerWidth / columns.length);\r\n // return width;\r\n }\r\n\r\n\r\n handleRowClick = (gridRowClickEvent) => {\r\n }\r\n handleDataPageState = () => {\r\n let deepCopy = _.cloneDeep(this.state.dataState);\r\n deepCopy.skip = 0\r\n deepCopy.take = this.state.total\r\n return deepCopy\r\n }\r\n\r\n handleDataStateChange = (changeEvent) => {\r\n if (this.props.useComp) {\r\n const { childGrid } = this.props.options\r\n let dataState = changeEvent.dataState\r\n\r\n this.setState({\r\n data: process(this.props.data, dataState),\r\n dataState: dataState\r\n }, () => {\r\n if (changeEvent.dataState && changeEvent.dataState.filter && !childGrid) {\r\n let filterkey = this.props.location.pathname\r\n if (this.props.pathKey)\r\n filterkey = filterkey + this.props.pathKey;\r\n localStorage.setItem(filterkey, JSON.stringify(changeEvent.dataState))\r\n }\r\n if (this.props.onCustomDataChange) {\r\n this.props.onCustomDataChange(changeEvent.dataState)\r\n }\r\n });\r\n\r\n }\r\n else {\r\n const { childGrid } = this.props.options\r\n let exportdata = changeEvent.dataState && changeEvent.dataState.filter ? true : false;\r\n if (changeEvent.dataState && changeEvent.dataState.filter && !childGrid) {\r\n let filterkey = this.props.location.pathname\r\n if (this.props.pathKey)\r\n filterkey = filterkey + this.props.pathKey;\r\n localStorage.setItem(filterkey, JSON.stringify(changeEvent.dataState))\r\n }\r\n else {\r\n if (!childGrid) {\r\n let filterkey = this.props.location.pathname\r\n if (this.props.pathKey)\r\n filterkey = filterkey + this.props.pathKey;\r\n localStorage.removeItem(filterkey);\r\n }\r\n }\r\n this.setState({ dataState: changeEvent.dataState, exportdata: exportdata });\r\n\r\n // delete changeEvent.dataState['group']\r\n this.fetchData(changeEvent.dataState, true);\r\n }\r\n }\r\n\r\n\r\n /**\r\n *********************************************************\r\n Description: Handles the coloring of the status column\r\n Required props: grid needs to have data.\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\n\r\n\r\n\r\n handleGridForm = (name, transformProps) => (event) => {\r\n const val = name ? name.split(\".\").reduce((res, prop) => { return res && res[prop] }, event.dataItem) : null;\r\n return <td>{transformProps[val]}</td>\r\n }\r\n\r\n /**\r\n *********************************************************\r\n Description: Handles the date transformation\r\n Required props: N/A\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\n handleDate = (name) => (event) => {\r\n let newDate = new Date(event.dataItem[event.field]);\r\n if (event.field === 'LoginDate') {\r\n let wTime = newDate.toLocaleString('en-US', { hour: 'numeric', minute: 'numeric', hour12: true });\r\n return <td>{moment(newDate).format('MM/DD/YYYY hh:mm:ss A') + ' ' + wTime}</td>\r\n }\r\n return <td>{moment(newDate).format('MM/DD/YYYY hh:mm:SS A')}</td>\r\n }\r\n /**\r\n *********************************************************\r\n Description: Handles the color transformation\r\n Required props: N/A\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n handleColor = (event) => {\r\n return <td>{event.dataItem[event.field] ? <ColorIcon style={{ color: event.dataItem[event.field] }} fontSize=\"small\" /> : \"\"}</td>\r\n }\r\n\r\n /**\r\n *********************************************************\r\n Description: Handles the data for the grid. creates the url to fetch either with query or without query.\r\n Required props: options, components. Within options crud.read is needed to fetch data.\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\n\r\n fetchData(dataState, isfilter = false) {\r\n isfilter = !isfilter ? dataState.filter != null : isfilter\r\n const queryStr = `${toDataSourceRequestString(dataState)}`; // Serialize the state\r\n const hasGroups = dataState.group && dataState.group.length;\r\n const { options, components, defaults, order, type, compmap, rules, accessPermissions, accessLevelPermissions, dataItem, ...otherProps } = this.props;\r\n const { gridcolumns } = options\r\n const { routes, crud } = options\r\n const { read, gridread, create, update, domain } = crud || {}\r\n // const del = crud.delete\r\n const { get, transPropsurl } = read || gridread || {}\r\n const { routeProps, matchProps, noquery, hidepath, parentIdValue, customProps, isLSProfile } = get ? get : {}\r\n let url = (get && get.url) || null;\r\n let id;\r\n let hasfilterfields = [];\r\n hasfilterfields = this.props && this.props.options && this.props.options.childGrid ? this.state.filteredfield.map(field => {\r\n if (GridColumnMenuFilter.active(field, dataState.filter)) {\r\n return field;\r\n }\r\n }) : []\r\n if (url) {\r\n if (Array.isArray(routeProps)) {\r\n routeProps.forEach(each => {\r\n const { value } = each\r\n if (hidepath) {\r\n id = this.props.accessPermissions.userId\r\n }\r\n else id = routeProps ? this.props.match.params[value] : null\r\n url = `${url.replace(`{${value}}`, id)}`\r\n\r\n })\r\n }\r\n else if (isLSProfile) {\r\n id = JSON.parse(localStorage.getItem('profile'))[isLSProfile];\r\n url = `${get.url.replace(`{Id}`, id)}`;\r\n }\r\n else if (Array.isArray(customProps)) {\r\n customProps.forEach(each => {\r\n const { value, custom } = each\r\n if (custom) {\r\n id = dataItem[custom]\r\n url = `${url.replace(`{${custom}}`, id)}`\r\n }\r\n else {\r\n id = customProps ? this.props.match.params[value] : null\r\n url = `${url.replace(`{${value}}`, id)}`\r\n }\r\n })\r\n }\r\n else if (parentIdValue) {\r\n id = this.props.parentId\r\n url = `${url.replace(`{${parentIdValue.value}}`, id)}`\r\n }\r\n else if (routeProps) {\r\n if (hidepath) {\r\n id = this.props.accessPermissions.userId\r\n }\r\n else\r\n id = routeProps ? this.props.match.params[routeProps.value] : null\r\n url = `${get.url.replace(`{${routeProps.value}}`, id)}`;\r\n }\r\n else if (customProps) {\r\n if (hidepath) {\r\n id = this.props.accessPermissions.userId\r\n }\r\n else\r\n id = customProps ? dataItem[get.customProps.value] || dataItem.Id : null\r\n url = `${get.url.replace(`{${customProps.value}}`, id)}`;\r\n };\r\n\r\n let urlPath;\r\n if (noquery) {\r\n urlPath = routeProps ? `${url}?${queryStr}` :\r\n `${url}${(url.indexOf(\"?\") > -1) ? '&' : '?'}${queryStr}`;\r\n }\r\n else {\r\n urlPath = routeProps ? `${url}${(url.indexOf(\"?\") > -1) ? '&' : '?'}${queryStr}` :\r\n `${url}${(url.indexOf(\"?\") > -1) ? '&' : '?'}${queryStr}`;\r\n\r\n }\r\n GetData(urlPath).then((res) => {\r\n if (res && res.data) {\r\n const { data, total } = res\r\n if (data) {\r\n data.map(res => {\r\n if (this.props.options.htmlconvert && this.props.options.htmlconvert.includes(res.FieldLabel)) {\r\n let convertOldValue = atob(res.OldValue);\r\n let convertNewValue = atob(res.NewValue);\r\n let regex = /(<([^>]+)>)/ig;\r\n res.OldValue = convertOldValue.replace(regex, \"\");\r\n res.NewValue = convertNewValue.replace(regex, \"\");\r\n }\r\n if (res.NewValue) {\r\n res.NewValue = res.NewValueDesc && res.NewValueDesc !== null ? res.NewValueDesc : moment(res.NewValue).format('MM/DD/YYYY') === 'Invalid date' ? res.NewValue : moment(res.NewValue).format('MM/DD/YYYY')\r\n }\r\n if (res.OldValue) {\r\n res.OldValue = res.OldValueDesc && res.OldValueDesc !== null ? res.OldValueDesc : moment(res.OldValue).format('MM/DD/YYYY') === 'Invalid date' ? res.OldValue : moment(res.OldValue).format('MM/DD/YYYY')\r\n }\r\n if (res.CreatedOn) {\r\n res.CreatedOn = res.CreatedOn !== null ? moment(res.CreatedOn).format('MM/DD/YYYY hh:mm:ss A') : \"\"\r\n } if (res.UpdatedOn) {\r\n res.UpdatedOn = res.UpdatedOn !== null ? moment(res.UpdatedOn).format('MM/DD/YYYY hh:mm:ss A') : \"\"\r\n }\r\n if (res.LoginDate) {\r\n res.LoginDate = res.LoginDate !== null ? moment(res.LoginDate).format('MM/DD/YYYY hh:mm:ss A') : \"\"\r\n } if (res.NoticeDate) {\r\n res.NoticeDate = res.NoticeDate !== null ? moment(res.NoticeDate).format('MM/DD/YYYY') : \"\"\r\n }\r\n })\r\n }\r\n this.setState({\r\n passDataItem: this.props.dataItem, filteredfield: dataState && dataState.filter != null ? hasfilterfields : [], data: hasGroups ? translateDataSourceResultGroups(data) : data, total, dataState\r\n }, () => {\r\n if (!isfilter)\r\n this.LoadGrid(false)\r\n if (this.props.match.params && this.props.match.params.Id && this.props.custompropsvalue) {\r\n let dataItemObj\r\n if (this.props.options && this.props.options.selectdataitem) {\r\n let selectedDataItem = _.find(data, { [this.props.custompropsvalue]: Number(this.props.match.params.Id) });\r\n dataItemObj = selectedDataItem ? selectedDataItem : { [this.props.custompropsvalue]: Number(this.props.match.params.Id) };\r\n }\r\n else {\r\n dataItemObj = this.props.checkLocation && this.props.location && this.props.location.state && Object.keys(this.props.location.state).length > 0 ?\r\n { [this.props.custompropsvalue]: Number(this.props.match.params.Id), ['Status']: this.props.location.state.User.Status } :\r\n { [this.props.custompropsvalue]: Number(this.props.match.params.Id) }\r\n }\r\n\r\n this.setState({ currentDataItem: dataItemObj, openSlide: true })\r\n }\r\n\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n onClearColumnsSubmit = () => {\r\n this.setState({\r\n columns: this.props && this.props.options && this.props.options.gridcolumns,\r\n data: this.state.data\r\n });\r\n }\r\n\r\n onColumnsSubmit = (columnsState) => {\r\n this.setState({\r\n columns: columnsState,\r\n data: this.state.data\r\n });\r\n }\r\n /**\r\n *********************************************************\r\n Description: save the grid component as new report.\r\n Required props: options, components. Within options gridcolumns are set to columns in state whicha re needed to create columns.\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n\r\n saveReport = (cols) => {\r\n const { options } = this.props\r\n const { crud } = options\r\n const { read } = crud\r\n let url = read.get.url\r\n let gridoptions = getOptions(this.state.data, this.state.columns, this.state.dataState, url);\r\n this.setState({ savereprt: true, gridoptions: JSON.stringify(gridoptions) })\r\n }\r\n\r\n\r\n /**\r\n *********************************************************\r\n Description: Excel export for all the grids.\r\n Required props: N/A\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n _export;\r\n _grid;\r\n export = (action) => {\r\n const { options } = this.props\r\n const { crud } = options\r\n const { read, gridread } = crud\r\n const { get } = read || gridread\r\n const { routeProps, matchProps, noquery, hidepath, parentIdValue, customProps } = get ? get : {}\r\n let url = get.url;\r\n let exportalldatastate = action == 'filterall' ? this.handleDataPageState() : null\r\n const queryStr = exportalldatastate ? `${toDataSourceRequestString(exportalldatastate)}` : `${toDataSourceRequestString(this.state.dataState)}`; // Serialize the state\r\n let id;\r\n if (Array.isArray(routeProps)) {\r\n routeProps.forEach(each => {\r\n const { value } = each\r\n if (hidepath) {\r\n id = this.props.accessPermissions.userId\r\n }\r\n else id = routeProps ? this.props.match.params[value] : null\r\n url = `${url.replace(`{${value}}`, id)}`\r\n\r\n })\r\n }\r\n else if (Array.isArray(customProps)) {\r\n customProps.forEach(each => {\r\n const { value, custom } = each\r\n if (custom === 'Type') {\r\n id = this.props.dataItem[\"Type\"]\r\n url = `${url.replace(`{${custom}}`, id)}`\r\n }\r\n else if (custom) {\r\n id = this.props.dataItem[\"Id\"]\r\n url = `${url.replace(`{${custom}}`, id)}`\r\n }\r\n else {\r\n id = customProps ? this.props.match.params[value] : null\r\n url = `${url.replace(`{${value}}`, id)}`\r\n }\r\n })\r\n }\r\n else if (parentIdValue) {\r\n id = this.props.parentId\r\n url = `${url.replace(`{${parentIdValue.value}}`, id)}`\r\n }\r\n else if (routeProps) {\r\n if (hidepath) {\r\n id = this.props.accessPermissions.userId\r\n }\r\n else\r\n id = routeProps ? this.props.match.params[routeProps.value] : null\r\n url = `${get.url.replace(`{${routeProps.value}}`, id)}`;\r\n }\r\n else if (customProps) {\r\n id = customProps ? this.props.dataItem[customProps.value || \"Id\"] : null\r\n url = `${get.url.replace(`{${customProps.value}}`, id)}`;\r\n }\r\n let urlPath\r\n if (queryStr) {\r\n urlPath = routeProps ? `${url}?${queryStr}` :\r\n `${url}?${queryStr}`;\r\n }\r\n else {\r\n urlPath = routeProps ? `${url}` :\r\n `${url}`;\r\n\r\n }\r\n if (action === 'filterall') {\r\n\r\n let tempString = urlPath\r\n GetData(tempString).then(result => {\r\n \r\n result.data.map(res => {\r\n if (res.CreatedOn) {\r\n res.CreatedOn = res.CreatedOn !== null ? moment(res.CreatedOn).format('MM/DD/YYYY hh:mm:ss A ') : \"\"\r\n } if (res.UpdatedOn) {\r\n res.UpdatedOn = res.UpdatedOn !== null ? moment(res.UpdatedOn).format('MM/DD/YYYY hh:mm:ss A') : \"\"\r\n }\r\n if (res.LoginDate) {\r\n res.LoginDate = res.LoginDate !== null ? moment(res.LoginDate).format('MM/DD/YYYY hh:mm:ss A') : \"\"\r\n } if (res.NoticeDate) {\r\n res.NoticeDate = res.NoticeDate !== null ? moment(res.NoticeDate).format('MM/DD/YYYY') : \"\"\r\n }\r\n if (res.Body) {\r\n let bodyval = res.Body !== null ? atob(res.Body) : \"\"\r\n res.Body = bodyval.replace(/<\\/?[^>]+(>|$)/g, \"\")\r\n }\r\n })\r\n this._export.save(result, this._grid.columns);\r\n })\r\n }\r\n else {\r\n let exportdata = this.state.data.data\r\n let tempData = exportdata && exportdata.map(res => {\r\n if (res.Body) {\r\n let bodyval = res.Body !== null ? atob(res.Body) : \"\"\r\n res.Body = bodyval.replace(/<\\/?[^>]+(>|$)/g, \"\")\r\n return res\r\n }\r\n else return res;\r\n })\r\n this._export.save(tempData, this._grid.columns);\r\n }\r\n }\r\n\r\n\r\n columnProps(field) {\r\n if (!this.state.filteredfield.includes(field)) {\r\n if (this.isColumnActive(field, this.state.dataState)) {\r\n this.setState({ filteredfield: [...this.state.filteredfield, field] })\r\n }\r\n }\r\n }\r\n\r\n isColumnActive(field, dataState) {\r\n return GridColumnMenuFilter.active(field, dataState.filter)\r\n }\r\n\r\n handleSlide = () => {\r\n if ((localStorage.getItem('griddataItem') !== null) && !this.props.options.nonautoopen) {\r\n localStorage.removeItem('griddataItem')\r\n }\r\n this.setState({ openSlide: false, currentDataItem: null, rowselected: null }, () => {\r\n if (!this.props.match.params && !this.props.match.params.Id && !this.props.custompropsvalue) {\r\n this.LoadGrid(true);\r\n }\r\n else if (this.props.match.params && !(this.props.match.params.Id || this.props.match.params.id)) {\r\n this.LoadGrid(true);\r\n }\r\n else if (this.props.match.params && (this.props.match.params.Id || this.props.match.params.id) && this.props.custompropsvalue) {\r\n let dataItemObj = { [this.props.custompropsvalue]: Number(this.props.match.params.id || this.props.match.params.Id) };\r\n this.setState({ currentDataItem: dataItemObj, openSlide: false, rowrenderedslide: false }, () => {\r\n let pathname = this.props.location.pathname\r\n if (this.props && this.props.match && this.props.match.params && (this.props.match.params.Id || this.props.match.params.id)) {\r\n // this.props.match.params.Id = undefined\r\n pathname = pathname.substring(0, pathname.lastIndexOf(\"/\"))\r\n }\r\n this.props.history.push(pathname)\r\n this.LoadGrid(true);\r\n })\r\n }\r\n else if (this.props.match.params && this.props.match.params.Id && !this.props.custompropsvalue) {\r\n this.LoadGrid(true);\r\n }\r\n })\r\n }\r\n\r\n // for handling next item in sliding page\r\n onNextClick = (dataItemVal) => {\r\n this.setState({ rowselected: dataItemVal })\r\n if (this.props.custompropsvalue) {\r\n let pathname = this.props.location.pathname\r\n this.props.match.params.Id = dataItemVal[this.props.custompropsvalue] || dataItemVal.dataItemVal[this.props.custompropsvalue]\r\n pathname = pathname.substring(0, pathname.lastIndexOf(\"/\"))\r\n pathname = pathname + '/' + this.props.match.params.Id;\r\n this.props.history.push(pathname);\r\n }\r\n this.rowRender({ props: { children: '' } }, dataItemVal)\r\n }\r\n\r\n // for handling prev item in sliding page\r\n onPrevClick = (dataItemVal) => {\r\n this.setState({ rowselected: dataItemVal })\r\n if (this.props.custompropsvalue) {\r\n let pathname = this.props.location.pathname\r\n this.props.match.params.Id = dataItemVal[this.props.custompropsvalue] || dataItemVal.dataItemVal[this.props.custompropsvalue]\r\n pathname = pathname.substring(0, pathname.lastIndexOf(\"/\"))\r\n pathname = pathname + '/' + this.props.match.params.Id;\r\n this.props.history.push(pathname);\r\n }\r\n this.rowRender({ props: { children: '' } }, dataItemVal)\r\n }\r\n\r\n\r\n HTMLCell = (props) => {\r\n return <td >{this.isHTML(atob(props.dataItem[props.field])) ?\r\n <div dangerouslySetInnerHTML={{ __html: atob(props.dataItem[props.field]) }} /> : props.dataItem[props.field]} </td>\r\n }\r\n\r\n HTMLCellSize = (props) => {\r\n try {\r\n return props && props.dataItem[props.field] && this.isHTML(atob(props.dataItem[props.field])) ?\r\n <td> <div dangerouslySetInnerHTML={{ __html: atob(props.dataItem[props.field]).replace(/(<([^>]+)>)/g, \"\") }} /> </td> : <td>{props.dataItem[props.field]} </td>\r\n }\r\n catch (ex) {\r\n return <td>{props.dataItem[props.field]}</td>\r\n }\r\n }\r\n\r\n\r\n //Handling only for the notices download. Extend this if required\r\n downloadCell = (props) => {\r\n if (props.rowType === \"groupHeader\") {\r\n return null;\r\n }\r\n if (props.dataItem && props.dataItem.TemplateId)\r\n return <td > <DownloadIcon onClick={() => downloadNoticeData(props.dataItem.TemplateId)} /> </td>\r\n else return <td > <DownloadIcon onClick={() => this.handleActionEvents(props.dataItem)} /> </td>\r\n\r\n }\r\n\r\n NoDataDisplay = (props, field) => {\r\n if (props.rowType === \"groupHeader\") {\r\n return null;\r\n }\r\n if (props.dataItem[field] === null || props.dataItem[field] === '') {\r\n return <td style={{ color: '#adabaa' }}> N/A </td>\r\n }\r\n return <td > {props.dataItem[field]} </td>\r\n\r\n }\r\n\r\n /**\r\n *********************************************************\r\n Description: Handle Back to navigate to custom and history screen\r\n Required props: back url\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n handleBack = () => {\r\n const { options } = this.props\r\n const { back } = options;\r\n const { routes } = back;\r\n if (Array.isArray(routes)) {\r\n let path = ''\r\n routes.forEach(each => {\r\n const { route, routeParams, matchProps } = each\r\n if (routeParams) {\r\n path += route + \"/\" + this.props.match.params[routeParams]\r\n }\r\n else if (matchProps) {\r\n path += route + \"/\" + this.props.results[matchProps] //--correct:unused\r\n }\r\n else {\r\n path += route\r\n }\r\n })\r\n this.props.history.push(path)\r\n }\r\n }\r\n\r\n\r\n deleteCell = (props) => {\r\n if (props.rowType === \"groupHeader\") {\r\n return null;\r\n }\r\n return <td >\r\n <DeleteIcon onClick={() => this.handleActionEvents(props)} fontSize=\"small\" style={{ cursor: 'pointer' }} />\r\n </td>\r\n }\r\n\r\n customcell = (dataitem) => {\r\n const { dataItem } = dataitem\r\n const { anchorEl, selecteddataItem } = this.state;\r\n // if (props.rowType === \"groupHeader\") {\r\n // return null;\r\n // }\r\n return <td >\r\n <div className=\"row col-2\" key={dataItem.Id}>\r\n <div className='col-sm-1'>\r\n <IconButton onClick={(event) => this.setState({ anchorEl: event.currentTarget, selecteddataItem: dataItem })} className='float-right'>\r\n <MoreVertIcon />\r\n </IconButton>\r\n <div className='clearfix' />\r\n <Menu anchorEl={anchorEl} open={Boolean(anchorEl)} onClose={() => { this.setState({ anchorEl: null }) }}>\r\n {this.props.handleEdit && <MenuItem style={{ margin: \"auto\" }} onClick={() => { this.setState({ anchorEl: null }, () => this.props.handleEdit(selecteddataItem)) }}>\r\n <ListItemIcon>\r\n <CreateIcon />\r\n </ListItemIcon>\r\n <ListItemText inset primary=\"Edit\" />\r\n </MenuItem>}\r\n <Divider />\r\n {this.props.onUp && <MenuItem onClick={() => { this.setState({ anchorEl: null }, () => this.props.onUp(selecteddataItem)) }}>\r\n <ListItemIcon>\r\n <ArrowUpwardIcon />\r\n </ListItemIcon>\r\n <ListItemText inset primary=\"Move Up\" /></MenuItem>}\r\n <Divider />\r\n {this.props.onDown && <MenuItem onClick={() => { this.setState({ anchorEl: null }, () => this.props.onDown(selecteddataItem)) }}>\r\n <ListItemIcon>\r\n <ArrowDownwardIcon />\r\n </ListItemIcon>\r\n <ListItemText inset primary=\"Move Down\" /></MenuItem>}\r\n <Divider />\r\n {this.props.onDelete && <MenuItem onClick={() => { this.setState({ anchorEl: null }, () => this.props.onDelete(selecteddataItem)) }}>\r\n <ListItemIcon>\r\n <ClearIcon />\r\n </ListItemIcon>\r\n <ListItemText inset primary=\"Remove\" /></MenuItem>}\r\n </Menu>\r\n </div>\r\n </div>\r\n </td>\r\n }\r\n\r\n\r\n isHTML(str) {\r\n try {\r\n var doc = new DOMParser().parseFromString(str, \"text/html\");\r\n return Array.from(doc.body.childNodes).some(node => node.nodeType === 1);\r\n }\r\n catch (ex) {\r\n return str;\r\n }\r\n }\r\n\r\n clearFilters = () => {\r\n\r\n let dataState = {\r\n skip: 0, take: 20\r\n }\r\n this.onClearColumnsSubmit();\r\n let pathname = this.props.location.pathname\r\n if (this.props.pathKey)\r\n pathname = pathname + this.props.pathKey;\r\n if (pathname)\r\n localStorage.removeItem(pathname);\r\n this.setState({ hasDefaultReport: false, filteredfield: [], dataState: dataState })\r\n\r\n if (this.props.pathKey) {\r\n this.props.clearFilters()\r\n } else {\r\n this.fetchData(dataState, true);\r\n\r\n }\r\n }\r\n\r\n setPercentage = (width, percentage) => {\r\n return Math.round(width / 100) * percentage;\r\n }\r\n\r\n /******************************************\r\n * Load saved reports or grid filters\r\n *\r\n */\r\n loadReportFilter(inthis, id) {\r\n let existingReportsURL = getEnvVariable('Report') + `/api/Reports/Report?id=${id}`\r\n GetData(existingReportsURL).then(res => {\r\n if (res) {\r\n //let gridOptions = JSON.parse(res.ReportJsonQueryStr);\r\n let opts = JSON.parse(res.ReportJsonQueryStr)\r\n let gridurl = opts.dataSource.transport.read.url;\r\n let newdatastateval = opts.withdatastateformat\r\n\r\n let columnsinfo = opts.columns.flatMap(i => i.field)\r\n let hasfilterfields = []\r\n hasfilterfields = columnsinfo.map(field => {\r\n if (GridColumnMenuFilter.active(field, newdatastateval.filter)) {\r\n return field;\r\n }\r\n })\r\n let ids = []\r\n ids = Object.entries(this.props.match.params)\r\n ids.forEach(each => {\r\n const key = each[0];\r\n const value = each[1]\r\n gridurl = `${gridurl.replace(`{${key}}`, value)}`;\r\n })\r\n let url = gridurl;\r\n let queryStr = opts.dataSource.transport.read.datastate || null;\r\n if (queryStr)\r\n url = `${url}${queryStr}`\r\n\r\n GetData(url).then(res1 => {\r\n if (res1 && res1.data) {\r\n let gridoptions = JSON.parse(res.ReportJsonQueryStr);\r\n res1.data.map(res => {\r\n if (res.CreatedOn) {\r\n res.CreatedOn = res.CreatedOn !== null ? moment(res.CreatedOn).format('MM/DD/YYYY hh:mm:ss A ') : \"\"\r\n } if (res.UpdatedOn) {\r\n res.UpdatedOn = res.UpdatedOn !== null ? moment(res.UpdatedOn).format('MM/DD/YYYY hh:mm:ss A') : \"\"\r\n }\r\n if (res.LoginDate) {\r\n res.LoginDate = res.LoginDate !== null ? moment(res.LoginDate).format('MM/DD/YYYY hh:mm:ss A') : \"\"\r\n } if (res.NoticeDate) {\r\n res.NoticeDate = res.NoticeDate !== null ? moment(res.NoticeDate).format('MM/DD/YYYY') : \"\"\r\n }\r\n })\r\n inthis.setState({\r\n filteredfield: newdatastateval && newdatastateval.filter != null ? hasfilterfields : [],\r\n savereprt: false, kendoStructure: res.ReportJsonQueryStr, data: res1, total: res1.total, dataState: gridoptions.withdatastateformat, ...gridoptions\r\n }, () => {\r\n if (this.props.match.params && this.props.match.params.Id && this.props.custompropsvalue) {\r\n let dataItemObj = { [this.props.custompropsvalue]: Number(this.props.match.params.Id) };\r\n this.setState({ currentDataItem: dataItemObj, openSlide: true })\r\n }\r\n })\r\n }\r\n })\r\n }\r\n }).catch(ex => {\r\n console.log(ex)\r\n })\r\n }\r\n\r\n handleCheckBox = (e, props) => {\r\n if (props.field === 'IsPrimary') handlePrimaryCheck(e, props, this.props.match.params, e.target.checked);\r\n else this.handleActionEvents(props.dataItem);\r\n }\r\n\r\n handleActionEvents = (props) => {\r\n Promise.all((props.field.request || []).map(each => requestApi(newRequestApi(each, props, null)))).then(res => {\r\n this.fetchData(this.state.dataState, true);\r\n })\r\n }\r\n\r\n\r\n cellRender = (td, props) => {\r\n if (td && td.props.children && props.rowType === \"groupHeader\") {\r\n let children = (\r\n <span>\r\n {td.props.children.props.children}\r\n </span>\r\n );\r\n return React.cloneElement(td, td.props, children);\r\n }\r\n return td;\r\n };\r\n\r\n handleRefresh = () => {\r\n if (this.props.dataItem && this.props.dataItem.Key) {\r\n let key = this.props.dataItem && this.props.dataItem.Key\r\n let url = getEnvVariable('Admin') + `/api/Domains/RefreshDomain/${key}`\r\n GetData(url, true, 'Refreshing Cache is Successful').then(res => {\r\n console.log(\"refresh cache\")\r\n })\r\n }\r\n }\r\n\r\n /**\r\n *********************************************************\r\n Description: renders the grid component.\r\n Required props: options, components. Within options gridcolumns are needed to create columns.\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n render() {\r\n const { options, defaults, order, type, compmap, rules, accessPermissions, accessLevelPermissions, parentId, customId, hideEdit, hideEditCheckVal,\r\n key, ...otherProps } = this.props;\r\n const { headerProps = {}, sidebar, gridstyle, formgrid, addcomponents, components, sidepopupgridheight, extragridinfo, conditions, extrainfo, customHeight } = options || {};\r\n const { columns, openSlide, dataState, isExport = false } = this.state;\r\n let accessfrom = getEnvVariable('ConfigType') === 'R' ? 'moduleRegionAccess' : getEnvVariable('ConfigType') === 'D' ? 'moduleDistrictAccess' : 'moduleSiteAccess'\r\n let roleaccess = this.props.accessPermissions && this.props.accessPermissions[accessfrom] && this.props.accessPermissions[accessfrom] ? Object.values(this.props.accessPermissions[accessfrom]).includes('Add') ? 'CanAdd' : Object.values(this.props.accessPermissions[accessfrom]).includes('Update') ? 'CanEdit' : Object.values(this.props.accessPermissions[accessfrom]).includes('Read') ? 'CanRead' : 'CanAdd' : 'CanAdd'\r\n let portal = this.props.accessPermissions ? this.props.accessPermissions.portal : null\r\n let isAdmin = this.props.accessPermissions && this.props.accessPermissions.isAdmin ? this.props.accessPermissions.isAdmin : 'N'\r\n let canAdd = isAdmin == 'Y' ? true : (!roleaccess || !portal) ? true : portal === \"I\" && roleaccess === \"CanAdd\" ? true : (portal === \"E\") ? true : false\r\n let canEdit = isAdmin == 'Y' ? true : (!roleaccess || !portal) ? true : portal === \"I\" && roleaccess === \"CanEdit\" ? true : (portal === \"E\") ? true : false\r\n let canRead =(!roleaccess || !portal) ? true : portal === \"I\" && roleaccess === \"CanRead\" ? true : (portal === \"E\") ? true : false;\r\n // let gridDataState = { ...this.state.dataState, take: this.state.pageable.pageSizes.includes(this.state.dataState['take']) ? this.state.dataState.take : 'All' }\r\n // let gridPageable = { ...this.state.pageable, ['info']: this.state.pageable.pageSizes.includes(this.state.dataState['take']) ? true : false }\r\n return (\r\n <React.Fragment >\r\n {/* <ReactResizeDetector handleWidth handleHeight>\r\n {({ width, height }) => */}\r\n < div className='col' >\r\n {!formgrid && !this.props.useComp && <GridHeader initialloadextrainfo={this.state.initialloadextrainfo} headerProps={headerProps}\r\n reportapplied={this.state.hasDefaultReport} compmap={compmap} accessPermissions={accessPermissions} accessLevelPermissions={accessLevelPermissions}\r\n dataItem={this.props.dataItem ? this.props.dataItem : null} clearFilters={this.clearFilters} saveReport={this.saveReport}\r\n export={(evt) => {\r\n this.setState({ isExport: true }, () => {\r\n this.export(evt)\r\n })\r\n }}\r\n backbutton={headerProps.backbutton} handleBack={this.handleBack}\r\n addrecord={this.addrecord} components={addcomponents} handleFormGrid={this.intialLoadData} sidebar={sidebar} handleSlide={this.handleSlide}\r\n customprops={parentId} customId={customId} />}\r\n {\r\n formgrid && <FormHeader {...headerProps} accessPermissions={accessPermissions} accessLevelPermissions={accessLevelPermissions}\r\n components={addcomponents} handleFormGrid={this.intialLoadData} dataItem={this.state.passDataItem ? this.state.passDataItem : this.props.dataItem} handleBack={this.handleBack} handleCustomBack={this.props.handleCustomBack}\r\n sidebar={sidebar} compmap={compmap} title={headerProps.title} handleSlide={this.handleSlide} addbutton={hideEdit ?\r\n (this.props.edit ? true : false) : true} customprops={parentId} customId={customId}\r\n handleRefresh={this.handleRefresh} refreshbutton={this.props.dataItem && this.props.dataItem['DomainType'] &&\r\n this.props.dataItem['DomainType'] === 'A' ? headerProps.refreshbutton : null}\r\n clearFilters={this.clearFilters} saveReport={this.saveReport} export={(evt) => {\r\n this.setState({ isExport: true }, () => {\r\n this.export(evt)\r\n })\r\n }}\r\n reportbutton={headerProps.reportbutton} excelbutton={headerProps.excelbutton} filterbutton={headerProps.filterbutton} />\r\n }\r\n <ExcelExport\r\n data={this.state.data}\r\n fileName={(headerProps && headerProps.title && `${headerProps.title}.xlsx`) || 'ExcelFile.xlsx'}\r\n ref={exporter => this._export = exporter}\r\n >\r\n <Grid\r\n reorderable\r\n sortable={true}\r\n onPageChange={this.pageChange}\r\n total={this.state.total}\r\n pageable={this.state.pageable}\r\n cellRender={this.cellRender}\r\n data={this.state.data}\r\n {...this.state.dataState}\r\n onDataStateChange={this.handleDataStateChange}\r\n onRowClick={(options && !options.disablerender) && (!this.props.useComp || this.props.enablerender) && this.handleRowClick}\r\n rowRender={(options && !options.disablerender) && (!this.props.useComp || this.props.enablerender) && this.rowRender}\r\n style={sidepopupgridheight ? { height: window.innerHeight - 220, width: 'w-90' } :\r\n (gridstyle ? { height: '550px', width: 'w-90' } :\r\n { height: customHeight ? customHeight + 'px' : window.innerHeight - 125, width: 'w-90' })}\r\n resizable\r\n ref={grid => this._grid = grid}\r\n groupable={options && options.initialGroup && options.initialGroup.length > 0 ? true : false} group={options && options.initialGroup || []} onExpandChange={this.expandChange} expandField=\"expanded\"\r\n >\r\n {columns && columns.map((each, index) => {\r\n const { name, transformProps, date } = each\r\n if (each.fieldtype && each.fieldtype === 'Checkbox')\r\n return <GridColumn {...each} filter={each.filter} title={isExport ? each.title : <span className={GridColumnMenuFilter.active(each.field, (dataState && dataState.filter)) ? 'text-primary' : ''}>{each.title}</span>}\r\n width={this.setWidth(each.title)} key={index}\r\n cell={props =>\r\n props.rowType === \"groupHeader\" ? null :\r\n <td>\r\n <input type=\"checkbox\" disabled={each.hidecondition ?\r\n handlecustomCondition({ 'options': { 'hidecondition': each.hidecondition } }).condition : (canAdd || canEdit) ?\r\n false : true}\r\n checked={props.dataItem[each.field] === 'Y'} onChange={(e) => this.handleCheckBox(e, props, each.field)} />\r\n </td>}\r\n columnMenu={\r\n props =>\r\n <CustomColumnMenu\r\n {...props}\r\n columns={columns}\r\n saveReport={this.saveReport}\r\n onColumnsSubmit={this.onColumnsSubmit}\r\n />\r\n } />\r\n else if ((each.field === 'CreatedOn' || each.field === 'LoginDate' || each.field === 'NoticeDate') && each.show)\r\n return <GridColumn {...each} key={index} width={this.setWidth(each.title)} filter={'date'}\r\n title={isExport ? each.title : <span className={GridColumnMenuFilter.active(each.field, (dataState && dataState.filter)) ? 'text-primary' : ''}>{each.title}</span>}\r\n columnMenu={ //cell={this.handleDate(date)} format={'0:MM-dd-yyyy'}\r\n props =>\r\n <CustomColumnMenu\r\n {...props}\r\n columns={columns}\r\n saveReport={this.saveReport}\r\n onColumnsSubmit={this.onColumnsSubmit}\r\n />\r\n } />\r\n else if ((each.field === 'UpdatedOn' || each.field === 'UpdatedByName') && each.show)\r\n return <GridColumn {...each} filter={each.field === 'UpdatedOn' ? 'date' : each.filter}\r\n title={isExport ? each.title : <span className={GridColumnMenuFilter.active(each.field, (dataState && dataState.filter)) ? 'text-primary' : ''}>{each.title}</span>} key={index}\r\n width={this.setWidth(each.title)} cell={e => this.NoDataDisplay(e, each.field)} columnMenu={ //cell={this.handleDate(date)} format={'0:MM-dd-yyyy'}\r\n props =>\r\n <CustomColumnMenu\r\n {...props}\r\n columns={columns}\r\n saveReport={this.saveReport}\r\n onColumnsSubmit={this.onColumnsSubmit}\r\n />\r\n } />\r\n else if ((each.field === 'Color' || each.field === 'HighlightColor' || each.field === 'LayerColor') && each.show)\r\n return <GridColumn {...each} filter={each.filter} title={isExport ? each.title : <span className={GridColumnMenuFilter.active(each.field, (dataState && dataState.filter)) ? 'text-primary' : ''}>{each.title}</span>} width={this.setWidth(each.title)} key={index} cell={this.handleColor}\r\n columnMenu={\r\n props =>\r\n <CustomColumnMenu\r\n {...props}\r\n columns={columns}\r\n saveReport={this.saveReport}\r\n onColumnsSubmit={this.onColumnsSubmit}\r\n />\r\n } />\r\n else if ((each.field === 'Body') && each.isHTMLcolumn && each.show)\r\n return <GridColumn {...each} filter={each.filter} title={isExport ? each.title : <span className={GridColumnMenuFilter.active(each.field, (dataState && dataState.filter)) ? 'text-primary' : ''}>{each.title}</span>} key={index} width={this.setWidth(each.title)} cell={this.HTMLCell} columnMenu={\r\n props =>\r\n <CustomColumnMenu\r\n hidefilter={true}\r\n {...props}\r\n columns={columns}\r\n saveReport={this.saveReport}\r\n onColumnsSubmit={this.onColumnsSubmit}\r\n />\r\n } />\r\n\r\n else if ((each.field === 'Body' || each.field === 'BobyStr' || each.field === 'StandardComments' || each.field === 'NotificationBody' || each.field === 'OldValue' || each.field === 'NewValue') && each.encoded)\r\n return <GridColumn {...each} filter={each.filter} encoded={each.encoded} title={<span className={GridColumnMenuFilter.active(each.field, (dataState && dataState.filter)) ? 'text-primary' : ''}>{each.title}</span>} key={index} width={this.setWidth(each.title)} cell={this.HTMLCellSize} columnMenu={\r\n props =>\r\n <CustomColumnMenu\r\n hidefilter={true}\r\n {...props}\r\n columns={columns}\r\n saveReport={this.saveReport}\r\n onColumnsSubmit={this.onColumnsSubmit}\r\n />\r\n } />\r\n else if ((each.field === 'Download') && each.show && each.isdownload)\r\n return <GridColumn {...each} title={isExport ? each.title : <span className={GridColumnMenuFilter.active(each.field, (dataState && dataState.filter)) ? 'text-primary' : ''}>{each.title}</span>} key={index} cell={this.downloadCell}\r\n />\r\n else if ((each.field === 'Delete') && each.show && each.isdelete)\r\n return <GridColumn {...each} title={isExport ? each.title : <span className={GridColumnMenuFilter.active(each.field, (dataState && dataState.filter)) ? 'text-primary' : ''}>{each.title}</span>}\r\n key={index} width={this.setWidth(each.title)} cell={this.deleteCell} />\r\n\r\n else if ((each.field === 'Custom') && each.show)\r\n return <GridColumn {...each} key={index} width={this.setWidth(each.title)} cell={this.customcell} title={isExport ? each.title : <span className={GridColumnMenuFilter.active(each.field, (dataState && dataState.filter)) ? 'text-primary' : ''}>{each.title}</span>} />\r\n else\r\n if (each.show) return <GridColumn {...each} title={isExport ? each.title : <span className={GridColumnMenuFilter.active(each.field, (dataState && dataState.filter)) ? 'text-primary' : ''}>{each.title}</span>} width={this.setWidth(each.title)} filter={each.filter} key={index} columnMenu={\r\n props =>\r\n <CustomColumnMenu\r\n {...props}\r\n columns={columns}\r\n saveReport={this.saveReport}\r\n onColumnsSubmit={this.onColumnsSubmit}\r\n />\r\n } />\r\n }\r\n // }\r\n )}\r\n </Grid>\r\n </ExcelExport>\r\n </div>\r\n {/* }\r\n </ReactResizeDetector> */}\r\n {\r\n this.state.savereprt && <Dialog results={{ ReportJsonQueryStr: this.state.gridoptions }}\r\n compmap={compmap} close={() => this.setState({ savereprt: false })} open={this.state.savereprt}\r\n gridkey={this.props.attachparamgridkey ? this.props.match.params.key + this.props.gridkey : this.props.gridkey} accessPermissions={accessPermissions} iscgrid={true}\r\n loadReport={(id) => this.loadReportFilter(this, id)} />\r\n }\r\n {\r\n openSlide && components && components.map(each => {\r\n const EachComp = compmap[each.type]\r\n return <EachComp {...each} initialloadextrainfo={this.state.initialloadextrainfo} key={each.key} handleSlide={this.handleSlide} onNextClick={this.onNextClick} onPrevClick={this.onPrevClick} compmap={compmap}\r\n accessPermissions={accessPermissions} accessLevelPermissions={accessLevelPermissions}\r\n dataItem={this.state.rowrenderedslide && options.extrainfoobj ?\r\n { [options.extrainfoobj]: { ...this.state.currentDataItem.dataItem }, ...this.state.passDataItem } : extragridinfo ?\r\n { ...this.state.currentDataItem.dataItem, RefId: this.state.passDataItem[extrainfo] }\r\n : this.state.currentDataItem.dataItem || this.state.currentDataItem} parentId={parentId} customId={customId} completedata={this.state.data}\r\n presentItemIndex={this.state.presentItemIndex} selectedrow={this.state.rowselected}\r\n rowrenderedslide={this.state.rowrenderedslide} handleCustomBack={this.props.handleCustomBack} />\r\n })\r\n }\r\n </React.Fragment >\r\n );\r\n }\r\n}\r\n\r\nconst mapProps = (state) => {\r\n return state\r\n}\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage, setRecordData }, dispatch);\r\n}\r\n\r\nCGrid = connect(mapProps, mapActions)(CGrid)\r\nexport default withRouter(CGrid)","export const AUTHORIZE = 'AUTHORIZE';\r\nexport const LOGOUT = 'LOGOUT';\r\nexport const PROFILE = 'PROFILE';\r\n\r\nexport const setLogin = (user) => {\r\n return {\r\n type: AUTHORIZE,\r\n user\r\n }\r\n}\r\n\r\nexport const setProfile = (profile) => {\r\n return {\r\n type: PROFILE,\r\n profile\r\n }\r\n}\r\n\r\nexport const logOut = (user) => {\r\n return {\r\n type: LOGOUT,\r\n user\r\n }\r\n}\r\n","import React, { Component, Fragment } from 'react';\r\nimport LinearProgress from '@material-ui/core/LinearProgress';\r\nimport { withStyles } from '@material-ui/core/styles';\r\n\r\nconst styles = theme => ({\r\n\r\n linearColorPrimary: {\r\n backgroundColor: '#28a745',\r\n },\r\n linearBarColorPrimary: {\r\n backgroundColor: '#3dc05b',\r\n },\r\n});\r\n\r\nclass ProgressBar extends Component {\r\n\r\n state = {\r\n completed: 0,\r\n buffer: 0,\r\n }\r\n\r\n timer = null\r\n\r\n start = () => {\r\n this.timer = setInterval(this.progress, 500);\r\n }\r\n\r\n progress = () => {\r\n const { completed } = this.state;\r\n if (completed <= 90) {\r\n const diff = Math.random() * 10;\r\n const diff2 = Math.random() * 10;\r\n this.setState({ completed: completed + diff, buffer: completed + diff + diff2 });\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n clearInterval(this.timer);\r\n }\r\n\r\n stop = () => {\r\n clearInterval(this.timer);\r\n }\r\n\r\n complete = () => {\r\n this.stop();\r\n this.animate();\r\n\r\n }\r\n\r\n /* animate = () => {\r\n if (this.state.completed <= 100)\r\n this.setState(prevState => ({ completed: prevState.completed + 1, buffer: prevState.buffer + 1 }), this.animate)\r\n else\r\n this.setState({ completed: 0, buffer: 0 });\r\n }*/\r\n\r\n animate = () => {\r\n this.setState({ completed: 0, buffer: 0 });\r\n }\r\n\r\n render() {\r\n const { completed, buffer } = this.state;\r\n const { classes } = this.props;\r\n return (\r\n <Fragment>\r\n {buffer > 0 && (\r\n <LinearProgress className={this.props.className} classes={{\r\n colorPrimary: classes.linearColorPrimary,\r\n barColorPrimary: classes.linearBarColorPrimary,\r\n }} variant=\"buffer\" value={completed} valueBuffer={buffer} />\r\n )}\r\n </Fragment>\r\n )\r\n }\r\n\r\n}\r\n\r\nexport default withStyles(styles)(ProgressBar);","\r\n\r\nimport WRS8443ExternalJSON from '../env/WRS/WRS-8443-external.json';\r\nimport WRS8443InternalJSON from '../env/WRS/WRS-8443-internal.json';\r\nimport WRS8446ExternalJSON from '../env/WRS/WRS-8446-external.json';\r\nimport WRS8446InternalJSON from '../env/WRS/WRS-8446-internal.json';\r\nimport WRS8543ExternalJSON from '../env/WRS/WRS-8543-external.json';\r\nimport WRS8543InternalJSON from '../env/WRS/WRS-8543-internal.json';\r\nimport WRS9443ExternalJSON from '../env/WRS/WRS-9443-external.json';\r\nimport WRS9443InternalJSON from '../env/WRS/WRS-9443-internal.json';\r\nimport WRS9446ExternalJSON from '../env/WRS/WRS-9446-external.json';\r\nimport WRS9446InternalJSON from '../env/WRS/WRS-9446-internal.json';\r\nimport WRS9543ExternalJSON from '../env/WRS/WRS-9543-external.json';\r\nimport WRS9543InternalJSON from '../env/WRS/WRS-PROD-internal.json';\r\nimport WRSUATExternalJSON from '../env/WRS/WRS-UAT-external.json';\r\nimport WRSUATInternalJSON from '../env/WRS/WRS-UAT-internal.json';\r\nimport WRSPRODInternalJSON from '../env/WRS/WRS-PROD-internal.json'\r\n\r\nexport const getEnvVariable = (envVariable) => {\r\n const ENV_PROFILE = process.env.REACT_APP_PROFILE || 'WRS-PROD-internal'//'aps-local-internal' //'SAC-9444-internal'//\r\n if (envVariable)\r\n switch (ENV_PROFILE) {\r\n //WRS\r\n case 'WRS-8443-internal':\r\n return WRS8443InternalJSON[envVariable]\r\n case 'WRS-8443-external':\r\n return WRS8443ExternalJSON[envVariable]\r\n case 'WRS-9443-internal':\r\n return WRS9443InternalJSON[envVariable]\r\n case 'WRS-9443-external':\r\n return WRS9443ExternalJSON[envVariable]\r\n case 'WRS-8446-internal':\r\n return WRS8446InternalJSON[envVariable]\r\n case 'WRS-8446-external':\r\n return WRS8446ExternalJSON[envVariable]\r\n case 'WRS-9446-internal':\r\n return WRS9446InternalJSON[envVariable]\r\n case 'WRS-9446-external':\r\n return WRS9446ExternalJSON[envVariable]\r\n case 'WRS-UAT-internal':\r\n return WRSUATInternalJSON[envVariable]\r\n case 'WRS-UAT-external':\r\n return WRSUATExternalJSON[envVariable]\r\n case 'WRS-PROD-internal':\r\n return WRS9543InternalJSON[envVariable]\r\n case 'WRS-9543-external':\r\n return WRS9543ExternalJSON[envVariable]\r\n case 'WRS-8543-internal':\r\n return WRS8543InternalJSON[envVariable]\r\n case 'WRS-8543-external':\r\n return WRS8543ExternalJSON[envVariable]\r\n case 'WRS-PROD-internal':\r\n return WRSPRODInternalJSON[envVariable]\r\n default: return WRS8443InternalJSON[envVariable]\r\n }\r\n}","\r\nimport React, { Fragment } from 'react';\r\nimport {\r\n GridColumnMenuSort,\r\n GridColumnMenuFilter, GridColumnMenuItemGroup, GridColumnMenuItem, GridColumnMenuItemContent\r\n} from '@progress/kendo-react-grid';\r\n\r\nexport class CustomColumnMenu extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n columns: this.props.columns,\r\n columnsExpanded: false,\r\n filterExpanded: false\r\n };\r\n }\r\n\r\n onToggleColumn = (id) => {\r\n this.setState({\r\n columns: this.state.columns.map((column, idx) => {\r\n return idx === id ? { ...column, show: !column.show } : column;\r\n })\r\n });\r\n }\r\n\r\n onReset = (event) => {\r\n event.preventDefault();\r\n const allColumns = this.props.columns.map(col => {\r\n return {\r\n ...col,\r\n show: true\r\n };\r\n });\r\n\r\n this.setState({ columns: allColumns }, () => this.onSubmit());\r\n }\r\n\r\n onSubmit = (event) => {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n this.props.onColumnsSubmit(this.state.columns);\r\n if (this.props.onCloseMenu) {\r\n this.props.onCloseMenu();\r\n }\r\n }\r\n\r\n onMenuItemClick = () => {\r\n const value = !this.state.columnsExpanded;\r\n this.setState({\r\n columnsExpanded: value,\r\n filterExpanded: value ? false : this.state.filterExpanded\r\n });\r\n }\r\n\r\n saveReport = (e) => {\r\n console.log(e)\r\n this.props.saveReport(this.state.columns);\r\n }\r\n\r\n onFilterExpandChange = (value) => {\r\n this.setState({\r\n filterExpanded: value,\r\n columnsExpanded: value ? false : this.state.columnsExpanded\r\n });\r\n }\r\n\r\n render() {\r\n const oneVisibleColumn = this.state.columns.filter(c => c.show).length === 1;\r\n\r\n return (\r\n <div>\r\n <GridColumnMenuSort {...this.props} />\r\n <GridColumnMenuFilter\r\n {...this.props}\r\n onExpandChange={this.onFilterExpandChange}\r\n expanded={this.state.filterExpanded}\r\n />\r\n {/* <GridColumnMenuItemGroup>\r\n <GridColumnMenuItem\r\n title={'Save Report'}\r\n iconClass={'k-i-save'}\r\n onClick={this.saveReport}\r\n />\r\n </GridColumnMenuItemGroup> */}\r\n <GridColumnMenuItemGroup>\r\n <GridColumnMenuItem\r\n title={'Columns'}\r\n iconClass={'k-i-columns'}\r\n onClick={() => {\r\n this.setState({\r\n columnsExpanded: !this.state.columnsExpanded,\r\n filterExpanded: !this.state.columnsExpanded ? false : this.state.filterExpanded\r\n })\r\n }}\r\n />\r\n <GridColumnMenuItemContent show={this.state.columnsExpanded}>\r\n <div className={'k-column-list-wrapper'}>\r\n <form onSubmit={this.onSubmit} onReset={this.onReset}>\r\n <div className={'k-column-list'}>\r\n {this.state.columns.map((column, idx) =>\r\n (\r\n <div key={idx} className={'k-column-list-item'}>\r\n <span>\r\n <input\r\n id={`column-visiblity-show-${idx}`}\r\n className=\"k-checkbox\"\r\n type=\"checkbox\"\r\n readOnly={true}\r\n disabled={column.show && oneVisibleColumn}\r\n checked={column.show}\r\n onClick={() => { this.onToggleColumn(idx); }}\r\n />\r\n <label\r\n htmlFor={`column-visiblity-show-${idx}`}\r\n className=\"k-checkbox-label\"\r\n style={{ userSelect: 'none' }}\r\n >\r\n {column.title}\r\n </label>\r\n </span>\r\n </div>\r\n )\r\n )}\r\n </div>\r\n <div className={'k-columnmenu-actions'}>\r\n <button type={'reset'} className={'k-button'}>Reset</button>\r\n <button className={'k-button k-primary'}>Save</button>\r\n\r\n </div>\r\n </form>\r\n </div>\r\n </GridColumnMenuItemContent>\r\n </GridColumnMenuItemGroup>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n","import MomentUtils from '@date-io/moment';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport { KeyboardDatePicker, MuiPickersUtilsProvider } from \"@material-ui/pickers\";\r\nimport moment from \"moment\";\r\nimport React, { Fragment, useEffect, useState } from \"react\";\r\nimport DefaultSettings from './settings';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\n\r\nexport default function DatePicker(props) {\r\n const { name, options, value, handleFieldValue, edit, required, disabled,hasPadding, extraProps, error, helperText, contexthelp, allowedValues = [], ...otherProps } = props\r\n const { label, xtype, fullWidth, tooltip, FieldProps, fieldProps, noofdays,...otherConfigs } = otherProps;\r\n let val = ((value === null) || (value === undefined) || (value === '')) ? '' : value;\r\n const [range, setRange] = useState({})\r\n const [reload, setReload] = useState(false)\r\n let dateFormat = extraProps && extraProps.dateFormat ? extraProps.dateFormat : \"MM/DD/YYYY\"\r\n val = val ? moment(val).format(\"MM/DD/YYYY\") : '';\r\n let currentDate = 'N';\r\n let pastDate = false;\r\n let futureDate = false;\r\n let currdate = false;\r\n let fieldprops = null;\r\n let fieldAllowedProps = null;\r\n if (fieldProps || FieldProps || (allowedValues && allowedValues.length === 1)) {\r\n fieldprops = FieldProps && JSON.parse(FieldProps)\r\n fieldAllowedProps = (allowedValues && allowedValues.length === 1) ? JSON.parse(allowedValues[0]) : null\r\n currentDate = ((fieldprops && (fieldprops['CurrentDefaultDate'] === true || fieldprops['CurrentDefaultDate'] === 'Y')) ||\r\n (fieldAllowedProps && fieldAllowedProps['CurrentDefaultDate'] === 'Y')) ? 'Y' : 'N';\r\n if (fieldprops && fieldprops['AllowDate'] === 'CD') {\r\n pastDate = true;\r\n futureDate = true;\r\n }\r\n else if ((fieldprops && fieldprops['AllowDate'] === 'PD') && currentDate == 'Y') {\r\n pastDate = true;\r\n futureDate = false;\r\n currdate = true;\r\n }\r\n else if (fieldprops && fieldprops['AllowDate'] === 'PD') {\r\n pastDate = true;\r\n futureDate = false;\r\n }\r\n else if ((fieldprops && fieldprops['AllowDate'] === 'FD') || (fieldProps && fieldProps[name] && fieldProps[name]['AllowDate'] === 'FD')) {\r\n pastDate = false;\r\n futureDate = true;\r\n }\r\n if (currentDate === 'Y' && val === '') {\r\n let convertMoment = moment(new Date(), 'MM/DD/YYYY').format('MM/DD/YYYY')\r\n let events = { target: { value: convertMoment, name: name, checked: false }, currentTarget: { dataset: null } }\r\n handleFieldValue(events);\r\n }\r\n }\r\n useEffect(() => {\r\n if (pastDate && currdate) {\r\n range['maxDate'] = (new Date())\r\n setRange(range)\r\n setReload(!reload)\r\n }\r\n else if (pastDate) {\r\n range['maxDate'] = (val === '' ? new Date() : new Date(val))\r\n setRange(range)\r\n setReload(!reload)\r\n }\r\n else if (futureDate) {\r\n range['minDate'] = (val === '' ? new Date() : new Date(val));\r\n setRange(range)\r\n setReload(!reload)\r\n }\r\n else if (noofdays)\r\n {\r\n var someDate = new Date();\r\n var numberOfDaysToAdd = noofdays;\r\n var result = someDate.setDate(someDate.getDate() + numberOfDaysToAdd);\r\n console.log(new Date(result))\r\n range['maxDate'] = new Date(result) ;\r\n setRange(range)\r\n setReload(!reload)\r\n\r\n }\r\n }, [])\r\n\r\n\r\n return (\r\n <Fragment>\r\n {reload}\r\n <FormControl className={name} fullWidth={fullWidth ? fullWidth : true} required={required} error={error} disabled={disabled || false} hasPadding={hasPadding || false} >\r\n <InputLabel style={{ fontWeight: 'bold', color: error ? 'red' : 'black', paddingLeft: props.hasPadding ? '14px' : '0px'}} shrink>{label}{tooltip &&\r\n <Tooltip title={tooltip ? tooltip : null}\r\n placement=\"bottom-start\" ><HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em', color: '#007bff', marginLeft: 5 }}\r\n onClick={(evt) => contexthelp ?\r\n DefaultSettings.showDrawer(contexthelp) : evt.preventDefault()} />\r\n </Tooltip>} </InputLabel>\r\n <div className='pt-3'></div>\r\n <MuiPickersUtilsProvider utils={MomentUtils} >\r\n <KeyboardDatePicker\r\n //views={['day', 'month']}\r\n disabled={disabled || false}\r\n hasPadding={hasPadding || false} \r\n //clearable\r\n error={error}\r\n variant=\"filled\"\r\n InputProps={{\r\n style: {\r\n height: 23.5\r\n }\r\n }}\r\n ampm={false}\r\n value={((currentDate === 'Y' && !val && val != \"\") ? new Date() : (val === '' || val === 'Invalid date' ? null : val)) || null}\r\n {...range}\r\n onChange={(e) => handleFieldValue({ target: { value: e ? moment(e, dateFormat).format(dateFormat) : null, name: name, checked: false, }, currentTarget: { dataset: null } })}\r\n name={name}\r\n {...otherConfigs}\r\n format={dateFormat}\r\n\r\n />\r\n </MuiPickersUtilsProvider>\r\n {helperText && <FormHelperText>{helperText}</FormHelperText>}\r\n </FormControl>\r\n </Fragment >\r\n );\r\n}","import FormControl from '@material-ui/core/FormControl';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport Input from '@material-ui/core/Input';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useEffect, useState } from \"react\";\r\nimport MaskedInput from 'react-text-mask';\r\nimport DefaultSettings from './settings';\r\n\r\n\r\n\r\nfunction TextMaskCustom(props) {\r\n const { inputRef, ...other } = props;\r\n\r\n return (\r\n <MaskedInput\r\n {...other}\r\n ref={ref => {\r\n inputRef(ref ? ref.inputElement : null);\r\n }}\r\n mask={['(', /[1-9]/, /\\d/, /\\d/, ')', ' ', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, /\\d/]}\r\n placeholderChar={'\\u2000'}\r\n showMask\r\n guide={false}\r\n />\r\n );\r\n}\r\n\r\nTextMaskCustom.propTypes = {\r\n inputRef: PropTypes.func.isRequired,\r\n\r\n};\r\n\r\n\r\n\r\nexport default function PhoneFormat(props) {\r\n const { value, handleFieldValue, extraProps, error, required, shareProps, tooltip, contexthelp, ...otherProps } = props\r\n const { label, name, helperText, fullWidth, disabled, ...otherConfigs } = otherProps;\r\n const [currentVal, setCurrentVal] = useState(value)\r\n\r\n useEffect(() => {\r\n setCurrentVal(value)\r\n }, [value])\r\n return (\r\n <FormControl fullWidth error={error} required={required} >\r\n <InputLabel style={{ fontWeight: 'bold', color: error ? 'red' : 'black' }} shrink>{label}{tooltip && <Tooltip title={tooltip ? tooltip : null}\r\n placement=\"bottom-start\" ><HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em',color: '#007bff' }} onClick={(evt) => contexthelp ? DefaultSettings.showDrawer(contexthelp) : evt.preventDefault()} />\r\n </Tooltip>}</InputLabel>\r\n <Input\r\n name={name}\r\n value={currentVal}\r\n onChange={(evt) => { setCurrentVal(evt.target.value) }}\r\n id=\"formatted-text-mask-input\"\r\n required={required}\r\n inputComponent={TextMaskCustom}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n onBlur={() => {\r\n handleFieldValue({ target: { value: currentVal, name: name, checked: false }, currentTarget: { dataset: null } })\r\n }}\r\n disabled={disabled || false}\r\n />\r\n {helperText && <FormHelperText >{helperText}</FormHelperText>}\r\n </FormControl>\r\n );\r\n}\r\n","import { getEnvVariable } from '../../../../modules/environmentalList';\r\n//import { requestApi } from '../../form/utilities'\r\nimport { createRequest, requestApi } from '../../../controls/helpers/rest';\r\nimport {GetLookUpValues} from './lookupDataTaskKEPT'\r\n\r\nexport function SaveMultipleLocationsSingle(data, id) {\r\n return new Promise((resolve, reject) => {\r\n console.log('Saving multiple location information ', data, id) \r\n let datakeys = [{\r\n url: getEnvVariable('Application') + `/api/MultipleLocation/${id}/AddMultiple`,\r\n \"routeProps\": [],\r\n type: 'post',\r\n alert: true,\r\n body: [data]\r\n }]\r\n Promise.all(datakeys.map(each => requestApi(createRequest(each, each.body, null)))).then(multiplelocationdata => {\r\n console.log(multiplelocationdata, ' Saved')\r\n resolve(multiplelocationdata)\r\n }).catch(error => {\r\n console.error('Error in saving multiple locations')\r\n console.log(error);\r\n reject(error)\r\n })\r\n })\r\n}\r\n\r\nexport function SaveMultipleLocations(data, id) {\r\n return new Promise((resolve, reject) => {\r\n console.log('Saving multiple location information ', data, id)\r\n if (Array.isArray(data) && data.length > 0) {\r\n let datakeys = [{\r\n url: getEnvVariable('Application') + `/api/MultipleLocation/${id}/AddMultiple`,\r\n \"routeProps\": [],\r\n type: 'post',\r\n alert: true,\r\n body: data\r\n }]\r\n Promise.all(datakeys.map(each => requestApi(createRequest(each, each.body, null)))).then(multiplelocationdata => {\r\n console.log(multiplelocationdata, ' Saved')\r\n resolve(multiplelocationdata)\r\n }).catch(error => {\r\n console.error('Error in saving multiple locations')\r\n console.log(error);\r\n reject(error)\r\n })\r\n }\r\n resolve({})\r\n }) \r\n}\r\n\r\nexport function UpdateMultipleLocations(id, refid, data) {\r\n return new Promise((resolve, reject) => {\r\n console.log('Saving multiple location information ', data, id)\r\n let datakeys = [{\r\n url: getEnvVariable('Application') + `/api/MultipleLocation/${refid}/Update/${id}`,\r\n \"routeProps\": [],\r\n type: 'put',\r\n alert: true,\r\n body: data\r\n }]\r\n Promise.all(datakeys.map(each => requestApi(createRequest(each, each.body, null)))).then(multiplelocationdata => {\r\n console.log(multiplelocationdata, ' Saved')\r\n resolve(multiplelocationdata)\r\n }).catch(error => {\r\n console.error('Error in updating multiple locations')\r\n console.log(error);\r\n reject(error)\r\n }) \r\n }) \r\n}\r\n\r\nexport function DeleteMultipleLocations(objctids, id) {\r\n return new Promise((resolve, reject) => {\r\n console.log('Deleting multiple location information ', objctids)\r\n if (Array.isArray(objctids) && objctids.length > 0) {\r\n let datakeys = [{\r\n url: getEnvVariable('Application') + `/api/MultipleLocation/${id}/Delete`,\r\n \"routeProps\": [],\r\n type: 'post',\r\n alert: false,\r\n body: objctids\r\n }]\r\n Promise.all(datakeys.map(each => requestApi(createRequest(each, each.body, null)))).then(multiplelocationdata => {\r\n console.log(multiplelocationdata, ' Saved')\r\n resolve(multiplelocationdata)\r\n }).catch(error => {\r\n console.error('Error in saving multiple locations')\r\n console.log(error);\r\n reject(error)\r\n })\r\n }\r\n resolve({})\r\n })\r\n}\r\n\r\nexport function SetLocationIsPrimary(parentid, id) {\r\n return new Promise((resolve, reject) => {\r\n console.log('Setting primary for the location id ', parentid, id)\r\n let datakeys = [{\r\n url: getEnvVariable('Application') + `/api/MultipleLocation/${parentid}/SetPrimary/${id}/Y`,\r\n \"routeProps\": [],\r\n type: 'get',\r\n //alert: true \r\n }]\r\n Promise.all(datakeys.map(each => requestApi(createRequest(each, {}, null)))).then(multiplelocationdata => {\r\n console.log(multiplelocationdata, ' Saved')\r\n resolve(multiplelocationdata)\r\n }).catch(error => {\r\n console.error('Error in saving multiple locations')\r\n console.log(error);\r\n reject(error)\r\n })\r\n })\r\n}\r\n\r\nexport function SetApplicationFieldsData(sitepermittypeid, refid, rowdata,validation){\r\n return new Promise((resolve, reject) => {\r\n let ref = GetRecordValuesFromPrimaryLocation(rowdata);\r\n ref['LATITUDE'] = rowdata.GeomLatitude\r\n ref['LONGITUDE'] = rowdata.GeomLongitude\r\n ref['DISTRICT_ID'] = validation[0].Id\r\n \r\n\r\n UpdateApplicationGISFields(sitepermittypeid, refid, ref).then(appres => { \r\n SetLocationIsPrimary(refid,rowdata.Id).then(locdata => {\r\n console.log(locdata);\r\n resolve(locdata)\r\n })\r\n })\r\n })\r\n}\r\n\r\nexport function GetRouteIndexDefinition(index, rtq){\r\n try {\r\n let rtqsplitter = rtq.split('-');\r\n if(rtqsplitter.length > 0){\r\n return rtqsplitter[index].trim()\r\n }\r\n } catch (error) { }\r\n return \"\"\r\n}\r\n\r\nexport function StringTruncate(num, length){\r\n try {\r\n return num.toFixed(length)\r\n } catch (error) {\r\n \r\n }\r\n return num;\r\n}\r\n\r\nexport function GetRecordValuesFromPrimaryLocation(rowdata){ \r\n const regex = new RegExp(\"^0+(?!$)\",'g');\r\n let routeuniquenumberval = rowdata.RouteUniqueNumber\r\n if(rowdata.RouteUniqueNumber) {\r\n routeuniquenumberval = (GetRouteIndexDefinition(2, rowdata.RouteUniqueNumber)).toString()\r\n routeuniquenumberval = routeuniquenumberval.replaceAll(regex, \"\");\r\n }\r\n let ref = { }\r\n ref['LATITUDE_ROAD_POSITION'] = rowdata.Latitude\r\n ref['LONGITUDE_ROAD_POSTION'] = rowdata.Longitude \r\n ref['APPROX_YARD_SIZE_BASED_ON_MAP_IN_ACRES_'] = StringTruncate(rowdata.GeomArea,4) \r\n ref['ROAD_CLASS'] = rowdata.FunctionalClassValue\r\n ref['BEGINNING_MILE_POINT'] = rowdata.MilePoint\r\n ref['ROUTE_UNIQUE_NUMBER'] = rowdata.RouteUniqueNumber \r\n ref['COUNTY'] = rowdata.CountyName\r\n ref['ROUTE_NAME'] = rowdata.Routename\r\n //ref['DISTRICT_ID'] = rowdata.District\r\n //ref['ROUTE_TYPE'] = GetRouteIndexDefinition(1, rowdata.RouteUniqueNumber)\r\n ref['ROUTE_NUMBER'] = GetRouteIndexDefinition(2, rowdata.RouteUniqueNumber)\r\n ref['ROUTE_SECTION'] = GetRouteIndexDefinition(1, rowdata.RouteUniqueNumber) +' '+ routeuniquenumberval \r\n return ref;\r\n}\r\n\r\nexport function SetApplicationFieldsData_WITHGIS(sitepermittypeid, refid, rowdata){\r\n return new Promise((resolve, reject) => {\r\n GetGISFieldsData(sitepermittypeid, {X: rowdata.X, Y:rowdata.Y}).then(ref =>{\r\n ref['LATITUDE_ROAD_POSITION'] = rowdata.Latitude\r\n ref['LONGITUDE_ROAD_POSTION'] = rowdata.Longitude\r\n ref['LATITUDE'] = rowdata.GeomLatitude\r\n ref['LONGITUDE'] = rowdata.GeomLongitude\r\n ref['APPROX_YARD_SIZE_BASED_ON_MAP_IN_ACRES_'] = StringTruncate(rowdata.GeomArea,4) \r\n ref['ROAD_CLASS'] = rowdata.FunctionalClassValue\r\n ref['BEGINNING_MILE_POINT'] = rowdata.MilePoint\r\n ref['ROUTE_UNIQUE_NUMBER'] = rowdata.RouteUniqueNumber\r\n // ref['DISTRICT_ID'] = rowdata.District\r\n UpdateApplicationGISFields(sitepermittypeid, refid, ref).then(appres => { \r\n SetLocationIsPrimary(refid,rowdata.Id).then(locdata => {\r\n console.log(locdata);\r\n resolve(locdata)\r\n })\r\n })\r\n })\r\n })\r\n} \r\n\r\nexport function UpdateApplicationGISFields(sitepermittypeid, refid, data){\r\n return new Promise((resolve, reject) => {\r\n let datakeys = [{\r\n url: getEnvVariable('Application') + `/api/Application/UpdateFields/${sitepermittypeid}/${refid}`,\r\n type: 'put',\r\n alert: true,\r\n body: data\r\n }]\r\n Promise.all(datakeys.map(each => requestApi(createRequest(each, each.body, null)))).then(appresults => {\r\n resolve(appresults)\r\n }).catch(error => {\r\n console.error('Error in saving multiple locations')\r\n console.log(error);\r\n reject(error)\r\n }) \r\n })\r\n}\r\n\r\nexport function GetGISFieldsData(sitepermittypeid, coordinates) {\r\n return new Promise((resolve, reject) => {\r\n let datakeys = [{\r\n url: getEnvVariable('Application') + `/api/SitePermitSectionFieldsView/AllFieldsGroupBySection/${sitepermittypeid}`,\r\n \"routeProps\": [],\r\n type: 'get' \r\n }]\r\n Promise.all(datakeys.map(each => requestApi(createRequest(each, each.body, null)))).then(totalsections => {\r\n console.log(totalsections, ' Get');\r\n let sectionKeys = Object.keys(totalsections);\r\n let sections = totalsections;\r\n let GISDomainLookupFields = [];\r\n let GISLookupData = []\r\n sectionKeys.forEach((each, index) => {\r\n let allSectionNames = Object.keys(sections[each])\r\n allSectionNames.map((sectionname,inx) =>{ \r\n sections[each][sectionname].sort((a, b) => a.FieldRowDisplayOrder - b.FieldRowDisplayOrder).map((section, i) => {\r\n const { FieldKey, Key, FieldValue, FieldName, FieldDisplayName, UIFieldTypeComponent, FieldDescription,\r\n SectionName, SectionKey, FieldDecimalPlace, FieldContextHelp,FieldRowDisplayOrder, FieldColDisplayOrder, \r\n FieldMin, FieldMax, IsHidden, FieldFetchDomainKey, FieldFetchGeomType, IsLabel, IsInternal, \r\n FieldIsSpellCheck, FieldDomainKey, FieldProps, FieldIsBuffer, FieldBufferDistance, FieldBufferUnits } = section;\r\n if (FieldFetchDomainKey) {\r\n let eachDomainLookup = {\r\n FieldFetchDomainKey: FieldFetchDomainKey,\r\n FieldFetchGeomType: FieldFetchGeomType,\r\n FieldKey: FieldKey,\r\n FieldIsBuffer: FieldIsBuffer,\r\n FieldBufferDistance: FieldBufferDistance,\r\n FieldBufferUnits: FieldBufferUnits,\r\n UIFieldTypeComponent: UIFieldTypeComponent\r\n }\r\n GISDomainLookupFields.push(eachDomainLookup);\r\n //GISKeys[FieldKey] = each.FieldFetchDomainKey\r\n }\r\n })\r\n }) \r\n })\r\n console.log(GISDomainLookupFields);\r\n let allkeys = GISDomainLookupFields.map(each => each.FieldFetchDomainKey);\r\n GetGISFieldsDomainLookup(allkeys).then((results) => {\r\n GISDomainLookupFields.forEach(function (master) {\r\n results[0].forEach(function (domain) {\r\n if (domain.Layer && domain.Layer.Url && master.FieldFetchDomainKey === domain.Key) {\r\n let obj = {\r\n 'Id': domain.Id, //MasterField\r\n 'ServiceUrl': domain.Layer.Url, //Domain\r\n 'FieldKey': master.FieldKey, //Masterfield\r\n 'NameReference': domain.NameReference,//Domain\r\n 'ValueReference': domain.ValueReference, //Domain,\r\n 'FieldFetchGeomType': master.FieldFetchGeomType,\r\n 'FieldIsBuffer': master.FieldIsBuffer,\r\n 'FieldBufferDistance': master.FieldBufferDistance,\r\n 'FieldBufferUnits': master.FieldBufferUnits,\r\n 'UIFieldTypeComponent': master.UIFieldTypeComponent, //-- Feild UI type for tectbox only name should come\r\n }\r\n GISLookupData.push(obj)\r\n }\r\n });\r\n });\r\n console.log(GISLookupData);\r\n //Send for fetching fields data\r\n GetLookUpValues(coordinates, GISLookupData).then(lookupres => {\r\n console.log(lookupres);\r\n resolve(lookupres);\r\n })\r\n })\r\n \r\n }).catch(error => {\r\n console.error('Error in saving multiple locations')\r\n console.log(error);\r\n reject(error)\r\n }) \r\n })\r\n}\r\n\r\nexport function GetGISFieldsDomainLookup(keys){\r\n return new Promise((resolve, reject) => {\r\n let datakeys = [{\r\n url: getEnvVariable('Application') + '/api/Domains/Keys?domaintype=A',\r\n type: 'post',\r\n alert: true,\r\n body: keys\r\n }]\r\n Promise.all(datakeys.map(each => requestApi(createRequest(each, each.body, null)))).then(domainlookup => {\r\n resolve(domainlookup)\r\n }).catch(error => {\r\n console.error('Error in saving multiple locations')\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","export class MapConstants {\r\n constructor() {\r\n const line_Color = \"#005517\";\r\n const line_Size = \"2\";\r\n const lineSelected_Size = \"4\";\r\n const lineSymbolColor = \"#ea1515\";\r\n const polygonFillSymbolColor = \"#f5f29f\";\r\n const polygonFillSymbolColorSecondary = \"#81dfff\";\r\n const polygonNoFillSymbolColor = \"#00dfff\";\r\n const pointSymbolColor = \"#cc0000\";\r\n this.SRID = \"\";\r\n\r\n this.PointSymbol = {\r\n type: \"picture-marker\", // autocasts as new PictureMarkerSymbol()\r\n url: \"http://static.arcgis.com/images/Symbols/Basic/RedStickpin.png\",\r\n width: \"32px\",\r\n height: \"32px\"\r\n };\r\n this.PointSymbolHidden = {\r\n type: \"picture-marker\", // autocasts as new PictureMarkerSymbol()\r\n url: \"http://static.arcgis.com/images/Symbols/Basic/RedStickpin.png\",\r\n width: \"1px\",\r\n height: \"1px\"\r\n };\r\n\r\n this.PointSymbol = {\r\n type: \"picture-marker\", // autocasts as new PictureMarkerSymbol()\r\n url: \"http://static.arcgis.com/images/Symbols/Basic/RedStickpin.png\",\r\n width: \"32px\",\r\n height: \"32px\"\r\n };\r\n\r\n this.ExistingPointSymbol = {\r\n type: \"picture-marker\", // autocasts as new PictureMarkerSymbol()\r\n url: \"http://static.arcgis.com/images/Symbols/Basic/GreenStickpin.png\",\r\n width: \"32px\",\r\n height: \"32px\"\r\n };\r\n\r\n this.LineSymbol = {\r\n type: \"simple-line\",\r\n color: lineSymbolColor,\r\n width: line_Size + \"px\",\r\n style: \"solid\"\r\n };\r\n\r\n this.LineSelectedSymbol = {\r\n type: \"simple-line\",\r\n color: lineSymbolColor,\r\n width: lineSelected_Size + \"px\",\r\n style: \"solid\"\r\n };\r\n this.PolygonSymbol = {\r\n type: \"simple-fill\",\r\n color: polygonFillSymbolColor,\r\n style: \"none\",\r\n outline: this.LineSymbol\r\n };\r\n\r\n this.PolygonFillSymbol = {\r\n type: \"simple-fill\",\r\n color: [255, 255, 153, 0.5], //polygonFillSymbolColor,\r\n style: \"solid\",\r\n outline: this.LineSymbol\r\n };\r\n\r\n\r\n this.PolygonNoFillSymbol = {\r\n type: \"simple-fill\",\r\n style: \"solid\",\r\n //color: polygonNoFillSymbolColor,\r\n outline: this.LineSymbol\r\n };\r\n\r\n this.PolygonFillSymbolSecondary = {\r\n type: \"simple-fill\",\r\n color: [129, 223, 255, 0.5], //polygonFillSymbolColorSecondary,\r\n style: \"solid\",\r\n outline: this.LineSymbol\r\n };\r\n\r\n this.PolygonFillSymbolReset = {\r\n type: \"simple-fill\",\r\n color: [132, 186, 245, 0.01],\r\n style: \"solid\",\r\n outline: {\r\n color: \"orange\",\r\n width: 1\r\n }\r\n };\r\n this.labelClass = {\r\n symbol: {\r\n type: \"text\",\r\n color: [256, 0, 0, 0.01],// from map settings\r\n haloColor: \"black\",\r\n font: {\r\n family: \"Playfair Display\",\r\n size: 12,\r\n weight: \"normal\"\r\n }\r\n },\r\n labelPlacement: \"above-center\",\r\n /*labelExpressionInfo: { from map settings\r\n expression: \"$feature.Provincienaam\"\r\n }*/\r\n }\r\n this.greenFlagsymbol = {\r\n type: \"picture-marker\", // autocasts as new SimpleMarkerSymbol()\r\n \"url\": \"http://static.arcgis.com/images/Symbols/Basic/GreenFlag.png\",\r\n \"width\": \"32px\",\r\n \"height\": \"32px\"\r\n };\r\n\r\n this.getDefaultSymbols = {\r\n \"point\": this.PointSymbol,\r\n \"multipoint\": this.PointSymbol,\r\n \"polyline\": this.LineSelectedSymbol,\r\n \"polygon\": this.PolygonFillSymbol\r\n }\r\n }\r\n getSVGPointSymbolWrapper = (linecolor, fillColor, size, outlineWidth) => {\r\n //return color\r\n // return {\r\n // type: \"simple-marker\", // autocasts as new SimpleMarkerSymbol()\r\n // style: \"circle\", color: linecolor, size: \"10px\", // \r\n // outline: { // autocasts as new SimpleLineSymbol() \r\n // color: linecolor, width: 3 // points\r\n // }\r\n // }\r\n return {\r\n type: \"simple-marker\", // autocasts as new SimpleMarkerSymbol()\r\n color:fillColor,\r\n size: size || 18,\r\n outline: {\r\n // autocasts as new SimpleLineSymbol()\r\n width: outlineWidth || 0.5,\r\n color: linecolor,\r\n },\r\n path:\r\n \"M24.00505,12.31835c-3.7701,0-6.81,3.05-6.81,6.81c0,0.14,0.01,0.28,0.0199,0.42 c0.03,0.56,0.13,1.12,0.31,1.66c0.1701,0.53,0.4,1.03,0.71,1.5c0.0201,0.03,0.2101,0.3,0.5,0.74c0,0,0,0,0.01,0.01 c1.3,1.96,4.73,7.09,4.75,7.12c0.24,0.36,0.7701,0.36,1.0101,0c0.01-0.02,0.0299-0.04,0.0399-0.05 c0.07-0.11,5.11-7.66,5.2701-7.89c0.0399-0.07,0.0899-0.14,0.13-0.21c0.2699-0.46,0.4699-0.95,0.6099-1.46 c0.17-0.6,0.25-1.22,0.25-1.84C30.80495,15.36835,27.75505,12.31835,24.00505,12.31835z M24.17495,22.57835 c-1.5,0.09-2.7899-1.05-2.89-2.55c-0.0899-1.5,1.0501-2.79,2.5401-2.88c1.5-0.1,2.8,1.04,2.8899,2.54 C26.80495,21.18835,25.67495,22.47835,24.17495,22.57835z\",\r\n };\r\n }\r\n\r\n getSVGPointtSymbol = () => {\r\n return this.getSVGPointSymbolWrapper(\"green\", \"green\", 22, .8)\r\n }\r\n\r\n\r\n getSVGHighlighPointtSymbol = () => {\r\n return this.getSVGPointSymbolWrapper(\"red\", \"red\", 22, .8)\r\n }\r\n getHighlightsymbol = (subModuleKey, type, attributes, layerConfig) => {\r\n if (layerConfig && layerConfig.KEY == \"CenterGeomService\" && (subModuleKey == \"COLLISION\" || subModuleKey == \"INVESTIGATION\"))\r\n return this.getSVGPointSymbolWrapper((attributes.Permit_Color || layerConfig.LayerColor), (attributes.StatusColor || layerConfig.HighlightColor), 22, .8)\r\n return this.getsymbolsByLayerConfig(type, layerConfig);\r\n }\r\n getsymbol = (type, isHighlight, layerConfig) => {\r\n\r\n return this.getDefaultSymbols[type];\r\n }\r\n getsymbolsByLayerConfig = (type, layerConfig) => {\r\n const lc_line_Size = \"2\";\r\n const lc_lineSelected_Size = \"7\";\r\n const lc_lineSymbolColor = layerConfig.HighlightColor || \"#ea1515\";\r\n const lc_polygonFillSymbolColor = layerConfig.LayerColor || \"#f5f29f\";\r\n const lc_polygonFillSymbolColorSecondary = layerConfig.LayerColor || \"#81dfff\";\r\n const lc_polygonNoFillSymbolColor = layerConfig.HighlightColor || \"#00dfff\";\r\n const lc_pointSymbolColor = layerConfig.HighlightColor || \"#cc0000\";\r\n let lc_PointSymbol = {//this.getSVGPointSymbolWrapper(\"red\",\"red\",22,.8)\r\n type: \"picture-marker\", // autocasts as new PictureMarkerSymbol()\r\n url: \"http://static.arcgis.com/images/Symbols/Basic/RedStickpin.png\",\r\n width: \"32px\",\r\n height: \"32px\"\r\n };\r\n\r\n let lc_ExistingPointSymbol = {\r\n type: \"picture-marker\", // autocasts as new PictureMarkerSymbol()\r\n url: \"http://static.arcgis.com/images/Symbols/Basic/GreenStickpin.png\",\r\n width: \"32px\",\r\n height: \"32px\"\r\n }\r\n let lc_LineSymbol = {\r\n type: \"simple-line\",\r\n color: lc_lineSymbolColor,\r\n width: lc_line_Size + \"px\",\r\n style: \"solid\"\r\n };\r\n\r\n let lc_LineSelectedSymbol = {\r\n type: \"simple-line\",\r\n color: lc_lineSymbolColor,\r\n width: lc_lineSelected_Size + \"px\",\r\n style: \"solid\"\r\n };\r\n let lc_PolygonSymbol = {\r\n type: \"simple-fill\",\r\n color: lc_polygonFillSymbolColor,\r\n style: \"none\",\r\n outline: lc_LineSymbol\r\n };\r\n\r\n let lc_PolygonFillSymbol = {\r\n type: \"simple-fill\",\r\n color: [255, 255, 153, 0.5], //polygonFillSymbolColor,\r\n style: \"solid\",\r\n outline: lc_LineSymbol\r\n };\r\n\r\n\r\n let lc_PolygonNoFillSymbol = {\r\n type: \"simple-fill\",\r\n style: \"solid\",\r\n //color: polygonNoFillSymbolColor,\r\n outline: lc_LineSymbol\r\n };\r\n\r\n let lc_PolygonFillSymbolSecondary = {\r\n type: \"simple-fill\",\r\n color: [129, 223, 255, 0.5], //polygonFillSymbolColorSecondary,\r\n style: \"solid\",\r\n outline: lc_LineSymbol\r\n };\r\n\r\n let lc_PolygonFillSymbolReset = {\r\n type: \"simple-fill\",\r\n color: [132, 186, 245, 0.01],\r\n style: \"solid\",\r\n outline: {\r\n color: \"orange\",\r\n width: 1\r\n }\r\n }\r\n let lc_labelClass = {\r\n symbol: {\r\n type: \"text\",\r\n color: [256, 0, 0, 0.01],// from map settings\r\n haloColor: \"black\",\r\n font: {\r\n family: \"Playfair Display\",\r\n size: 12,\r\n weight: \"normal\"\r\n }\r\n },\r\n labelPlacement: \"above-center\",\r\n /*labelExpressionInfo: { from map settings\r\n expression: \"$feature.Provincienaam\"\r\n }*/\r\n };\r\n\r\n let lc_getDefaultSymbols = {\r\n \"point\": lc_PointSymbol,\r\n \"multipoint\": lc_PointSymbol,\r\n \"polyline\": lc_LineSelectedSymbol,\r\n \"polygon\": lc_PolygonFillSymbol\r\n }\r\n return lc_getDefaultSymbols[type];\r\n }\r\n};\r\n\r\n","import React, { Fragment } from \"react\";\r\nimport Draft, { SelectionState } from \"draft-js\";\r\nimport createHighlightPlugin from 'draft-js-highlight-plugin';\r\nimport \"./crichtexteditor.css\";\r\nimport FormHeader from './cformheader';\r\nimport draftToHtml from 'draftjs-to-html';\r\nimport htmlToDraft from 'html-to-draftjs';\r\nimport { Typography } from \"@material-ui/core\";\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport Input from '@material-ui/core/Input';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport PrintIcon from '@material-ui/icons/Print';\r\nimport IconButton from '@material-ui/core/IconButton';\r\n\r\nconst highlightPlugin = createHighlightPlugin({\r\n background: 'purple',\r\n color: 'yellow',\r\n border: '1px solid black',\r\n});\r\n\r\nconst { Editor, EditorState, RichUtils, getDefaultKeyBinding, convertToRaw, convertFromRaw, convertFromHTML, ContentState, Modifier } = Draft;\r\n\r\n\r\nclass CRichTextEditor extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n displayhelpertextdata: null,\r\n helpertextdata: false,\r\n value: //.props.value ?\r\n // EditorState.createWithContent(this.props.value) :\r\n EditorState.createEmpty()\r\n };\r\n this.focus = () => this.refs.editor.focus();\r\n }\r\n\r\n handleKeyCommand = (command, value) => {\r\n const newState = RichUtils.handleKeyCommand(value, command);\r\n if (newState) {\r\n this.onChange(newState);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n mapKeyToEditorCommand = (e) => {\r\n if (e.keyCode === 9 /* TAB */) {\r\n const newEditorState = RichUtils.onTab(\r\n e,\r\n this.state.value,\r\n 4 /* maxDepth */\r\n );\r\n if (newEditorState !== this.state.value) {\r\n this.onChange(newEditorState);\r\n }\r\n return;\r\n }\r\n return getDefaultKeyBinding(e);\r\n }\r\n\r\n toggleBlockType = (blockType) => {\r\n this.onChange(RichUtils.toggleBlockType(this.state.value, blockType));\r\n }\r\n\r\n toggleInlineStyle = (inlineStyle) => {\r\n this.onChange(\r\n RichUtils.toggleInlineStyle(this.state.value, inlineStyle)\r\n );\r\n }\r\n\r\n onChange = (value) => {\r\n this.setState({ value })\r\n }\r\n\r\n // onChange = (value) => {\r\n // const currentContent = value.getCurrentContent();\r\n // const currentContentLength = currentContent.getPlainText('').length\r\n // if (currentContentLength > 4000) {\r\n // console.log(currentContentLength)\r\n // }\r\n // else {\r\n // this.setState({ value }, () => {\r\n // if (!this.props.form) {\r\n // this.handleFieldChange();\r\n // }\r\n // })\r\n // }\r\n // }\r\n\r\n handleFieldChange = () => {\r\n if (!this.props.form) {\r\n let finalval = '';\r\n let val = ''\r\n const { handleFieldChange, name, id, edit, options, ...otherProps } = this.props;\r\n if (this.state.value !== '') {\r\n val = draftToHtml(convertToRaw(this.state.value.getCurrentContent()));\r\n console.log(val)\r\n finalval = btoa(unescape(encodeURIComponent(val)))\r\n }\r\n let events = { target: { value: finalval, name: name, checked: false }, currentTarget: {} }\r\n\r\n if (this.props && this.props.options && this.props.options.checkvalidation) {\r\n // var regex = '/(<([^>]+)>)/'\r\n var hasText = val.replace(/<\\s*br[^>]?>/, '\\n').replace(/(<([^>]+)>)/g, \"\").replace(/( )/g, \"\").replace(/(\\n)/g, \"\").length;\r\n // manipulate val\r\n events = hasText == 0 ? { target: { value: null, name: name, checked: false }, currentTarget: {} } : { target: { value: finalval, name: name, checked: false }, currentTarget: {} }\r\n }\r\n this.props.handleFieldChange(events);\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n const { value } = this.props;\r\n if (prevProps.value !== this.props.value) {\r\n if (value) {\r\n let tempval = value;\r\n // if (value.startsWith(\"PHA+\") || value.startsWith(\"data:\")||value.startsWith(\"PGgx\")) {\r\n tempval = escape(window.atob(value))\r\n // }\r\n let val = htmlToDraft(decodeURIComponent(tempval));\r\n //let val = htmlToDraft(decodeURIComponent(escape(window.atob(value))));\r\n let state = ContentState.createFromBlockArray(val.contentBlocks,\r\n value.entityMap);\r\n const newState = EditorState.createWithContent(state)\r\n this.setState({ value: EditorState.moveFocusToEnd(newState) })\r\n }\r\n else this.setState({ value: EditorState.createEmpty() })\r\n }\r\n }\r\n\r\n\r\n componentDidMount() {\r\n const { value } = this.props;\r\n if (value) {\r\n let val = htmlToDraft(decodeURIComponent(escape(window.atob(value))));\r\n let state = ContentState.createFromBlockArray(val.contentBlocks,\r\n value.entityMap);\r\n const newState = EditorState.createWithContent(state)\r\n this.setState({ value: EditorState.moveFocusToEnd(newState) })\r\n }\r\n else this.setState({ value: EditorState.createEmpty() })\r\n }\r\n\r\n getResult = () => {\r\n const { value } = this.state;\r\n if (value.getCurrentContent().getPlainText().trim().length > 0) {\r\n let finalval = draftToHtml(convertToRaw(value.getCurrentContent()))\r\n return btoa(unescape(encodeURIComponent(finalval)));\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n\r\n clearResult() {\r\n let value = this.state.value;\r\n let contentState = value.getCurrentContent();\r\n const firstBlock = contentState.getFirstBlock();\r\n const lastBlock = contentState.getLastBlock();\r\n const allSelected = new SelectionState({\r\n anchorKey: firstBlock.getKey(),\r\n anchorOffset: 0,\r\n focusKey: lastBlock.getKey(),\r\n focusOffset: lastBlock.getLength(),\r\n hasFocus: true\r\n })\r\n contentState = Modifier.removeRange(contentState, allSelected, 'backward');\r\n value = EditorState.push(value, contentState, 'remove-range');\r\n this.setState({ value });\r\n }\r\n\r\n handleParseData = () => {\r\n const { value } = this.state;\r\n let finalval = draftToHtml(convertToRaw(value.getCurrentContent()))\r\n return <div>{this.htmlEntities(finalval)}</div>\r\n }\r\n\r\n htmlEntities = (str) => {\r\n return <div dangerouslySetInnerHTML={{ __html: str }} />\r\n }\r\n\r\n printDiv = () => {\r\n let mywindow = window.open('', 'PRINT', 'height=650,width=900,top=100,left=150');\r\n // for title --mywindow.document.write(`<html><head><title>${title}</title>`);\r\n //mywindow.document.write(`<html><head><title>${title}</title>`);\r\n let val = draftToHtml(convertToRaw(this.state.value.getCurrentContent()));\r\n mywindow.document.write(`<html><head><title></title>`);\r\n mywindow.document.write('</head><body >');\r\n mywindow.document.write(val);\r\n mywindow.document.write('</body></html>');\r\n\r\n mywindow.document.close(); // necessary for IE >= 10\r\n mywindow.focus(); // necessary for IE >= 10*/\r\n\r\n mywindow.print();\r\n // mywindow.close();\r\n // return true;\r\n }\r\n render() {\r\n const { value } = this.state;\r\n\r\n // If the user changes block type before entering any text, we can\r\n // either style the placeholder or hide it. Let's just hide it now.\r\n let className = \"RichEditor-editor\";\r\n var contentState = value.getCurrentContent();\r\n if (!contentState.hasText()) {\r\n if (\r\n contentState\r\n .getBlockMap()\r\n .first()\r\n .getType() !== \"unstyled\"\r\n ) {\r\n className += \" RichEditor-hidePlaceholder\";\r\n }\r\n }//\r\n const { handleFieldChange, name, label, id, edit, options, tooltip, required, error, helperText, ...otherProps } = this.props;\r\n if (edit == false) {\r\n let result = this.handleParseData()\r\n return (\r\n <div >\r\n {tooltip && <Fragment><Typography variant={'caption'} className=\"fw-bold\">{label}< Tooltip title={tooltip ? tooltip : null} arrow placement=\"bottom-start\" ><HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em' }} />\r\n </Tooltip></Typography> <Typography variant={'inherit'} className=\"eps-content-wrap text-secondary\" color={'textPrimary'}>{result}</Typography></Fragment>}\r\n {!tooltip && <Fragment><Typography variant={'caption'} className=\"fw-bold\">{label}</Typography> <Typography className=\"eps-content-wrap text-secondary\" variant={'inherit'} color={'textPrimary'}>{result}</Typography></Fragment>}\r\n </div>\r\n )\r\n }\r\n else return (\r\n <Fragment>\r\n {name && tooltip && <div className=\"text-secondary pt-1 pb-1\" >{label}< Tooltip title={tooltip ? tooltip : null} arrow placement=\"bottom-start\" ><HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em' }} />\r\n </Tooltip></div>}\r\n {name && !tooltip && <div className=\"text-secondary pt-1 pb-1\" ><InputLabel shrink={true} required={required} error={error}>{label}</InputLabel></div>}\r\n <div className=\"RichEditor-root text-secondary\">\r\n <BlockStyleControls\r\n editorState={value}\r\n onToggle={this.toggleBlockType}\r\n />\r\n <InlineStyleControls\r\n editorState={value}\r\n onToggle={this.toggleInlineStyle}\r\n />\r\n {this.props.readonlyandprint && <IconButton className=\"float-right\" color=\"inherit\" onClick={this.printDiv} aria-label=\"close\">\r\n <PrintIcon />\r\n </IconButton>}\r\n <div className={className} onClick={this.focus}>\r\n <Editor\r\n blockStyleFn={getBlockStyle}\r\n customStyleMap={styleMap}\r\n editorState={value}\r\n handleKeyCommand={this.handleKeyCommand}\r\n keyBindingFn={this.mapKeyToEditorCommand}\r\n onChange={this.onChange}\r\n onBlur={()=>this.handleFieldChange()}\r\n ref=\"editor\"\r\n spellCheck={true}\r\n plugins={[highlightPlugin]}\r\n readOnly={this.props.readonlyandprint ? true : false}\r\n />\r\n </div>\r\n </div>\r\n {helperText && <FormHelperText error={error}>{helperText}</FormHelperText>}\r\n {this.state.helpertextdata && <FormHelperText error={true}>{this.state.displayhelpertextdata}</FormHelperText>}\r\n </Fragment>\r\n );\r\n }\r\n}\r\n\r\n\r\n\r\nexport default CRichTextEditor;\r\n// Custom overrides for \"code\" style.\r\nconst styleMap = {\r\n CODE: {\r\n backgroundColor: \"rgba(0, 0, 0, 0.05)\",\r\n fontFamily: '\"Inconsolata\", \"Menlo\", \"Consolas\", monospace',\r\n fontSize: 16,\r\n padding: 2\r\n }\r\n};\r\nfunction getBlockStyle(block) {\r\n switch (block.getType()) {\r\n case \"blockquote\":\r\n return \"RichEditor-blockquote\";\r\n default:\r\n return null;\r\n }\r\n}\r\nclass StyleButton extends React.Component {\r\n constructor() {\r\n super();\r\n this.onToggle = e => {\r\n e.preventDefault();\r\n this.props.onToggle(this.props.style);\r\n };\r\n }\r\n render() {\r\n let className = \"RichEditor-styleButton\";\r\n if (this.props.active) {\r\n className += \" RichEditor-activeButton\";\r\n }\r\n return (\r\n <span className={className} onMouseDown={this.onToggle}>\r\n {this.props.label}\r\n </span>\r\n );\r\n }\r\n}\r\nconst BLOCK_TYPES = [\r\n { label: \"H1\", style: \"header-one\" },\r\n { label: \"H2\", style: \"header-two\" },\r\n { label: \"H3\", style: \"header-three\" },\r\n { label: \"H4\", style: \"header-four\" },\r\n { label: \"H5\", style: \"header-five\" },\r\n { label: \"H6\", style: \"header-six\" },\r\n { label: \"Blockquote\", style: \"blockquote\" },\r\n { label: \"UL\", style: \"unordered-list-item\" },\r\n { label: \"OL\", style: \"ordered-list-item\" },\r\n { label: \"Code Block\", style: \"code-block\" }\r\n];\r\nconst BlockStyleControls = props => {\r\n const { editorState } = props;\r\n const selection = editorState.getSelection();\r\n const blockType = editorState\r\n .getCurrentContent()\r\n .getBlockForKey(selection.getStartKey())\r\n .getType();\r\n return (\r\n <div className=\"RichEditor-controls\">\r\n {BLOCK_TYPES.map(type => (\r\n <StyleButton\r\n key={type.label}\r\n active={type.style === blockType}\r\n label={type.label}\r\n onToggle={props.onToggle}\r\n style={type.style}\r\n />\r\n ))}\r\n </div>\r\n );\r\n};\r\nvar INLINE_STYLES = [\r\n { label: \"Bold\", style: \"BOLD\" },\r\n { label: \"Italic\", style: \"ITALIC\" },\r\n { label: \"Underline\", style: \"UNDERLINE\" },\r\n { label: \"Monospace\", style: \"CODE\" }\r\n];\r\nconst InlineStyleControls = props => {\r\n const currentStyle = props.editorState.getCurrentInlineStyle();\r\n\r\n return (\r\n <div className=\"RichEditor-controls\">\r\n {INLINE_STYLES.map(type => (\r\n <StyleButton\r\n key={type.label}\r\n active={currentStyle.has(type.style)}\r\n label={type.label}\r\n onToggle={props.onToggle}\r\n style={type.style}\r\n />\r\n ))}\r\n </div>\r\n );\r\n};\r\n\r\n\r\n","import React, { useEffect, useReducer, useRef, useState } from 'react';\r\nimport { useHistory, useParams } from \"react-router-dom\";\r\nimport useDeepCompareEffect from 'use-deep-compare-effect';\r\nimport { handleActionsToEffects } from '../effects/effects';\r\nimport { fieldValidate } from '../helpers/checkers';\r\nimport { groupByType } from '../helpers/components';\r\nimport { fieldTypes } from '../helpers/fieldtypes';\r\nimport { layoutTypes } from '../layout/types';\r\nimport { objectConversion } from '../wrappers/helpers/converters';\r\nimport { Evaluate } from '../effects/calculate';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { unsavedData } from '../../actions';\r\nimport { setResetValue } from '../../actions';\r\n\r\nconst _ = require('lodash');\r\n\r\nconst checkBoxTransformProps = {\r\n N: false,\r\n Y: true,\r\n 'true': 'Y',\r\n 'false': 'N'\r\n\r\n}\r\n\r\n\r\nfunction handleFieldChange(state, action) {\r\n const { type, ...otherProps } = action\r\n if (type === 'init') {\r\n const { values } = otherProps\r\n return { ...state, fieldValues: { ...values } }\r\n }\r\n if (type === 'value') {\r\n const { name, value, dataAttr } = otherProps\r\n return {\r\n ...state, fieldValues: { ...state.fieldValues, [name]: value },\r\n // dataAttr: { ...state.dataAttr, [name]: dataAttr } \r\n }\r\n }\r\n if (type === 'prop') {\r\n const { name, value, dataAttr } = otherProps\r\n let newstate = { ...state }\r\n newstate = {\r\n ...state, fieldProps: { ...state.fieldProps, [otherProps.name]: { ...state.fieldProps[otherProps.name], ...otherProps.value } },\r\n // dataAttr: { ...state.dataAttr, [otherProps.name]: dataAttr }\r\n }\r\n return newstate\r\n }\r\n if (type === 'props') {\r\n const fields = otherProps\r\n let newstate = { ...state }\r\n fields.forEach(each => {\r\n newstate = { ...newstate, fieldProps: { ...state.fieldProps, [each]: { ...state.fieldProps[each], ...otherProps[each] } } }\r\n })\r\n return newstate\r\n }\r\n if (type === 'inital') {\r\n const resultskeys = Object.keys(state.fieldValues)\r\n resultskeys.forEach(each => {\r\n state = { ...state, fieldValues: { ...state.fieldValues, [each]: otherProps.updates[each] } }\r\n })\r\n return state\r\n }\r\n if (type === 'required') {\r\n // const { fields } = otherProps\r\n const resultskeys = Object.keys(otherProps.fields)\r\n resultskeys.forEach(each => {\r\n state = { ...state, fieldProps: { ...state.fieldProps, [each]: { ...state.fieldProps[each], ...otherProps.fields[each] } } }\r\n })\r\n return state\r\n }\r\n if (type === 'validations') {\r\n state = { ...state, validations: { ...otherProps } }\r\n return state\r\n }\r\n if (type === 'bussinessrules') {\r\n return { ...state, conditions: { ...state.conditions, ...otherProps } }\r\n }\r\n\r\n if (type === 'values') {\r\n const { values } = otherProps\r\n return { ...state, fieldValues: { ...state.fieldValues, ...values } }\r\n }\r\n if (type === 'updates') {\r\n let newstate = { ...state }\r\n const { updates } = otherProps;\r\n const { prop, value, layout, initial, clearList, validations, required, businessrules, loadDefaultValues, edit, createduplicate, error, nestedlist, nestedlistArray,\r\n nestedlistArrayValues, nesteddropdownArray, savesuccess, domainmapper, appendextravalues, getLocalStorageData, BRActivity, BRHiddenState } = updates\r\n // if (getLocalStorageData) {\r\n // console.log(state.fieldValues)\r\n // state = {\r\n // ...state, fieldValues: getLocalStorageData[0].result, loadAfterPreInit: true\r\n // }\r\n // newstate = { ...state }\r\n // }\r\n if (prop) {\r\n prop.forEach(each => {\r\n const { name, ...otherPropProperties } = each\r\n if (otherPropProperties && otherPropProperties.hasOwnProperty('allowedValues') && otherPropProperties.allowedValues.length > 0) {\r\n let transformValue = (state.fieldProps[name].extraProps.transformProps && state.fieldProps[name].extraProps.transformProps.value) || 'value';\r\n const defaultItems = state.fieldProps[name].defaultItems && state.fieldProps[name].defaultItems.length > 0 ? state.fieldProps[name].defaultItems : (state.fieldProps[name].items || [])\r\n const filterItems = ((state.fieldProps[name].defaultItems && state.fieldProps[name].defaultItems) || state.fieldProps[name].items).filter(function (item) {\r\n return otherPropProperties.allowedValues.indexOf((item[transformValue]).toString()) > -1\r\n })\r\n state = {\r\n ...state, fieldProps: {\r\n ...state.fieldProps, [name]: {\r\n ...state.fieldProps[name],\r\n items: filterItems || [],\r\n defaultItems: defaultItems || []\r\n\r\n }\r\n },\r\n }\r\n // state = {\r\n // ...state, fieldProps: {\r\n // ...state.fieldProps, [name]: {\r\n // ...state.fieldProps[name],\r\n // items: state.fieldProps[name].hasFilter ? filterItems || [] : (state.fieldProps[name].defaultItems && state.fieldProps[name].defaultItems.length > 0) ? defaultItems : state.fieldProps[name].items,\r\n // defaultItems: defaultItems || []\r\n // }\r\n // },\r\n // }\r\n newstate = { ...state }\r\n }\r\n if (otherPropProperties && otherPropProperties.hasOwnProperty('hasValue') && otherPropProperties.hasValue && (otherPropProperties.valueType === 'D' || otherPropProperties.valueType === 'C')) {\r\n\r\n state = {\r\n ...state, fieldProps: { ...state.fieldProps, [name]: { ...state.fieldProps[name], ...otherPropProperties, className: 'd-block', } },\r\n fieldValues: {\r\n ...state.fieldValues, [name]:\r\n otherPropProperties.valueType === 'D' ?\r\n otherPropProperties.value === '' ? '' : (otherPropProperties.value || (otherPropProperties.disabled ? 'Y' : 'N')) :\r\n otherPropProperties.valueType === 'C' ? Evaluate(otherPropProperties.value, state.fieldValues, otherPropProperties.currentrefIds, otherPropProperties.dynamicData)\r\n : state.fieldValues[name]\r\n }\r\n }\r\n newstate = { ...state }\r\n }\r\n if (otherPropProperties && otherPropProperties.hasOwnProperty('isVisible')) {\r\n if (!otherPropProperties.isVisible)\r\n state = {\r\n ...state, fieldProps: { ...state.fieldProps, [name]: { ...state.fieldProps[name], ...otherPropProperties, className: 'd-none' } },\r\n }\r\n\r\n else state = {\r\n ...state, fieldProps: { ...state.fieldProps, [name]: { ...state.fieldProps[name], ...otherPropProperties, className: 'd-block' } },\r\n }\r\n newstate = { ...state }\r\n }\r\n if (name === 'domainitems') {\r\n let tempDomains = {};\r\n if (otherPropProperties && otherPropProperties.domainitems)\r\n tempDomains = otherPropProperties.domainitems\r\n else tempDomains = otherPropProperties\r\n let listKeys = Object.keys(tempDomains)\r\n for (let i = 0; i < listKeys.length; i++) {\r\n if (state.fieldProps[listKeys[i]])\r\n state = {\r\n ...state, fieldProps: {\r\n ...state.fieldProps, [listKeys[i]]: {\r\n ...state.fieldProps[listKeys[i]],\r\n items: tempDomains[listKeys[i]] || []\r\n }\r\n },\r\n }\r\n }\r\n newstate = { ...state }\r\n }\r\n else {\r\n state = {\r\n ...state, fieldProps: { ...state.fieldProps, [name]: { ...state.fieldProps[name], ...otherPropProperties } },\r\n }\r\n newstate = { ...state }\r\n }\r\n })\r\n }\r\n if (loadDefaultValues) {\r\n loadDefaultValues.forEach(each => {\r\n const { defaultCondition, value, checkDefaultValue, savetype } = each.transformProps\r\n let allItems = (state.fieldProps && state.fieldProps[each.name].items) ? state.fieldProps[each.name].items : null\r\n let defaultval\r\n if (savetype === 'add' && defaultCondition && value && checkDefaultValue && allItems && allItems.length) {\r\n defaultval = allItems.find(i => i[defaultCondition] === checkDefaultValue)\r\n }\r\n if (savetype === 'update' && value && allItems && allItems.length && state.fieldValues) {\r\n defaultval = allItems.find(i => i.Value === state.fieldValues[each.name])\r\n }\r\n if (defaultval) {\r\n if (each.datasetval) {\r\n let items = each.datasetval\r\n let dataAttrVal = {}\r\n for (let key in items) {\r\n let itemkey = items[key]\r\n let itemval = defaultval[key]\r\n dataAttrVal[itemkey] = itemval\r\n }\r\n state = {\r\n ...state, fieldValues: { ...state.fieldValues, [each.name]: defaultval[value] },\r\n dataAttr: { ...state.dataAttr, [each.name]: dataAttrVal },\r\n }\r\n newstate = { ...state }\r\n }\r\n else {\r\n state = {\r\n ...state, fieldValues: { ...state.fieldValues, [each.name]: defaultval[value] }\r\n }\r\n newstate = { ...state }\r\n }\r\n }\r\n }\r\n )\r\n }\r\n if (domainmapper) {\r\n domainmapper.forEach(each => {\r\n const { name } = each;\r\n let items = each[name] ? { items: each[name] } : { items: [] }\r\n state = {\r\n ...state, fieldProps: { ...state.fieldProps, [name]: { ...state.fieldProps[name], ...items, className: 'd-block', } }, fieldValues: { ...state.fieldValues, [name]: (each[name] && each[name].length > 0) ? each[name][0].name : '' },\r\n }\r\n\r\n })\r\n newstate = { ...state }\r\n\r\n }\r\n if (appendextravalues) {\r\n appendextravalues.forEach(each => {\r\n const { name, getdatafrom } = each;\r\n let disablekey = each[getdatafrom] ? each[getdatafrom] : []\r\n state = {\r\n ...state, fieldProps: { ...state.fieldProps, [name]: { ...state.fieldProps[name], disablekey: disablekey, className: 'd-block', } }, fieldValues: { ...state.fieldValues, [name]: (each[name] && each[name].length > 0) ? each[name][0].name : '' },\r\n }\r\n\r\n })\r\n newstate = { ...state }\r\n\r\n }\r\n\r\n if (edit || createduplicate) {\r\n const resultskeys = Object.keys(state.fieldProps)\r\n resultskeys.map(name => {\r\n state = {\r\n ...state, fieldProps: {\r\n ...state.fieldProps, [name]: {\r\n ...state.fieldProps[name], type: state.fieldProps[name].changefieldto ?\r\n state.fieldProps[name].changefieldto : 'label', edit: true\r\n }\r\n },\r\n }\r\n })\r\n newstate = { ...state }\r\n\r\n }\r\n if (initial && initial.length > 0 && state && state.fieldValues) {\r\n let resultskeys = Object.keys(state.fieldValues)\r\n let initalfieldValues = state.fieldValues\r\n initial.forEach(init => {\r\n if (init) {\r\n resultskeys.forEach(each => {\r\n let value = init[each] ? init[each] : objectConversion(init, each)\r\n state = { ...state, fieldValues: { ...state.fieldValues, [each]: ((value || value === 0) && value !== ' ') ? value : initalfieldValues[each] } } //each.split(\".\").reduce((res, prop) => { return res && res[prop] }, initialdata)\r\n })\r\n initalfieldValues = state.fieldValues;\r\n newstate = { ...state }\r\n }\r\n })\r\n }\r\n if (value) {\r\n value.forEach(each => {\r\n const { key, result, resultKey } = each\r\n state = { ...state, fieldValues: { ...state.fieldValues, [key]: resultKey ? state.fieldValues[resultKey] : result.value } }\r\n })\r\n newstate = { ...state }\r\n }\r\n if (BRActivity) {\r\n newstate = { ...state, ['triggerBRActivity']: false }\r\n }\r\n if (nestedlist) {\r\n const { items, name, otherProps } = nestedlist[0]\r\n const { mapNameList, nested, subnested } = otherProps\r\n name.forEach(each => {\r\n const { key, value } = each\r\n state = { ...state, fieldValues: { ...state.fieldValues, [each]: subnested ? items[nested][subnested][mapNameList[each]] : items[nested][mapNameList[each]] } }\r\n })\r\n newstate = { ...state }\r\n }\r\n if (nesteddropdownArray) {\r\n nesteddropdownArray.forEach(eachitem => {\r\n const { name, value, ...otherPropProperties } = eachitem\r\n name.forEach(each => {\r\n state = {\r\n ...state, fieldValues: { ...state.fieldValues, [each]: value ? value : state.fieldValues[each] }, fieldProps: { ...state.fieldProps, [each]: { ...state.fieldProps[each], ...otherPropProperties, className: 'd-block', } },\r\n }\r\n newstate = { ...state }\r\n })\r\n })\r\n }\r\n if (nestedlistArray) {\r\n const { items, name, otherProps } = nestedlistArray[0]\r\n const { mapNameList, nested } = otherProps\r\n name.forEach(each => {\r\n const { key, value } = each\r\n newstate = { ...newstate, fieldValues: { ...newstate.fieldValues, [each]: items[0][mapNameList[each]] } }\r\n })\r\n }\r\n\r\n if (nestedlistArrayValues) {\r\n const { items, name, itemfilterval, otherProps } = nestedlistArrayValues[0]\r\n const { mapNameList, nested, subnested } = otherProps\r\n let itemslist;\r\n if (items && items.length > 0 && itemfilterval && newstate && newstate.fieldValues && newstate.fieldValues[itemfilterval]) {\r\n itemslist = itemfilterval ? _.find(items, { 'Id': newstate.fieldValues[itemfilterval] }) : items[0]\r\n }\r\n else if (items && !Array.isArray(items)) {\r\n itemslist = items\r\n }\r\n itemslist && name.forEach(each => {\r\n const { key, value, nestedname, name, nonnested } = each\r\n let nestedvalue = nestedname ? nestedname : (nested ? nested : null)\r\n if (name && nonnested) {\r\n newstate = { ...newstate, fieldValues: { ...newstate.fieldValues, [name]: itemslist[mapNameList[name]] } }\r\n }\r\n else if (name) {\r\n newstate = { ...newstate, fieldValues: { ...newstate.fieldValues, [name]: nestedvalue ? itemslist[nestedvalue][mapNameList[name]] : itemslist[mapNameList[name]] } }\r\n }\r\n else if (subnested) {\r\n newstate = { ...newstate, fieldValues: { ...newstate.fieldValues, [each]: nestedvalue ? itemslist[nestedvalue][subnested][mapNameList[each]] : itemslist[subnested][mapNameList[each]] } }\r\n }\r\n else\r\n newstate = { ...newstate, fieldValues: { ...newstate.fieldValues, [each]: nestedvalue ? itemslist[nestedvalue][mapNameList[each]] : itemslist[mapNameList[each]] } }\r\n })\r\n }\r\n\r\n if (savesuccess) {\r\n let values = state.fieldValues\r\n if (savesuccess[0] && savesuccess[0].fieldValues)\r\n values = savesuccess[0].fieldValues\r\n if (state.fieldValues['edit']) {\r\n const resultskeys = Object.keys(state.fieldProps)\r\n resultskeys.map(name => {\r\n state = {\r\n ...state, fieldProps: {\r\n ...state.fieldProps, [name]: {\r\n ...state.fieldProps[name], value: values[name],\r\n type: (state.fieldProps[name].customField || (savesuccess[0] && savesuccess[0].noEdit)) ?\r\n state.fieldProps[name].type : 'label', helperText: '', error: false,\r\n edit: (savesuccess[0] && savesuccess[0].noEdit) ? true : false\r\n }\r\n }, triggerBRActivity: savesuccess[0] ? true : false\r\n }\r\n })\r\n newstate = {\r\n ...state, back: state.fieldValues['back'] && state.fieldValues['back'] === true ? true : false,\r\n fieldValues: {\r\n ...state.fieldValues, ...values, ['save']: false,\r\n ['edit']: (savesuccess[0] && savesuccess[0].noEdit) ? true : false\r\n }, triggerBRActivity: savesuccess[0] ? true : false\r\n }\r\n // dispatch(saveFindings(values))\r\n }\r\n else if (state.fieldValues['createduplicate']) {\r\n newstate = { ...state, back: true }\r\n }\r\n else {\r\n let data = savesuccess && savesuccess.length > 0 && savesuccess[0].fieldValues || {}\r\n data = _.merge(state.fieldValues, data)\r\n newstate = {\r\n ...state, addData: { ...state.fieldValues, ...data }, fieldValues: {\r\n ...data, ['save']: false, ['edit']: true,\r\n }, back: savesuccess && savesuccess.length > 0 && savesuccess[0].back === false ? false : true, triggerBRActivity: savesuccess[0] ? true : false\r\n }\r\n }\r\n }\r\n if (error) {\r\n let fielderrors = error[0].error\r\n if (fielderrors && fielderrors.errors) {\r\n fielderrors = fielderrors.errors\r\n }\r\n let errorKeys = Object.keys(fielderrors);\r\n errorKeys.forEach(err => {\r\n state = {\r\n ...state, fieldProps: { ...state.fieldProps, [err]: { ...state.fieldProps[err], error: true, helperText: fielderrors[err][0] } },\r\n }\r\n newstate = { ...state }\r\n })\r\n newstate = { ...newstate, fieldValues: { ...newstate.fieldValues, ['save']: false } }\r\n }\r\n if (validations) {\r\n if (Array.isArray(validations)) {\r\n validations.map(valids => {\r\n if (valids['validations']) {\r\n let fieldValidationsData = _.isEmpty(state.fieldValidations) ? valids['validations'] : { ...state.fieldValidations, ...valids['validations'] }\r\n state = {\r\n ...state, fieldValidations: fieldValidationsData\r\n }\r\n newstate = { ...state }\r\n }\r\n // if (valids['validations']) {\r\n // state = { ...state, fieldValidations: valids['validations'] }\r\n // newstate = { ...state }\r\n // }\r\n if (valids['required']) {\r\n valids['required'].forEach(each => {\r\n let name = (state.validationRequiredMapKeys && state.validationRequiredMapKeys[each]) || each;\r\n if (state.fieldProps[name])\r\n state = { ...state, fieldProps: { ...state.fieldProps, [name]: { ...state.fieldProps[name], required: true } } }\r\n })\r\n newstate = { ...state, requiredFields: valids['required'] }\r\n }\r\n if (valids['tooltip']) {\r\n if (Object.keys(valids['tooltip']).length > 0)\r\n Object.keys(valids['tooltip']).forEach(each => {\r\n state = { ...state, fieldProps: { ...state.fieldProps, [each]: { ...state.fieldProps[each], tooltip: valids['tooltip'][each] } } }\r\n })\r\n newstate = { ...state }\r\n }\r\n if (valids['contexthelp']) {\r\n if (Object.keys(valids['contexthelp']).length > 0)\r\n Object.keys(valids['contexthelp']).forEach(each => {\r\n state = { ...state, fieldProps: { ...state.fieldProps, [each]: { ...state.fieldProps[each], contexthelp: valids['contexthelp'][each] } } }\r\n })\r\n newstate = { ...state }\r\n }\r\n })\r\n }\r\n else {\r\n state = { ...state, fieldValidations: validations }\r\n newstate = { ...state }\r\n }\r\n\r\n }\r\n if (businessrules) {\r\n newstate = {\r\n ...state, conditions: {\r\n ...state.conditions, ['afterSave']: {\r\n ...state.conditions['afterSave'], ...businessrules[0]['afterSave']\r\n },\r\n ['onChange']: {\r\n ...state.conditions['onChange'], ...businessrules[0]['onChange']\r\n }, ['onLoad']: {\r\n ...state.conditions['onLoad'], ...businessrules[0]['onLoad']\r\n },\r\n ['auto']: { ...state.conditions['auto'], ...businessrules[0]['auto'] },\r\n ['onEvent']: { ...state.conditions['onEvent'], ...businessrules[0]['onEvent'] },\r\n ['info']: { ...state.conditions['info'], ...businessrules[0]['info'] },\r\n }\r\n }\r\n }\r\n if (BRHiddenState) {\r\n if (BRHiddenState && BRHiddenState[0]) {\r\n localStorage.setItem('RecordHiddenState', JSON.stringify(Object.values(BRHiddenState[0])))\r\n }\r\n }\r\n if (required) {\r\n required.forEach(each => {\r\n let name = (state.validationRequiredMapKeys && state.validationRequiredMapKeys[each]) || each\r\n state = { ...state, fieldProps: { ...state.fieldProps, [name]: { ...state.fieldProps[name], required: true } } }\r\n })\r\n newstate = { ...state, requiredFields: required }\r\n }\r\n if (clearList) {\r\n state = { ...state, fieldValues: { ...state.initialFieldValues } }\r\n return state\r\n }\r\n if (layout) {\r\n }\r\n if (newstate)\r\n return newstate\r\n else return state\r\n }\r\n\r\n if (type === 'customfields') {\r\n const { layout, components } = otherProps\r\n const { group, ...othersLayout } = layout\r\n return {\r\n ...state, fieldProps: { ...state.fieldProps, ...components }, fieldsLayout: {\r\n ...state.fieldsLayout, ...othersLayout,\r\n group: state.fieldsLayout.group.concat(group).reduce((acc, current) => {\r\n const x = acc.find(item => item.order === current.order);\r\n if (!x) {\r\n return acc.concat([current]);\r\n } else {\r\n const { position, components } = current\r\n x.components.splice(position, 0, ...components)\r\n return acc;\r\n }\r\n }, [])\r\n }\r\n }\r\n }\r\n\r\n}\r\n\r\n\r\nexport default function useForm(props) {\r\n const { key, components, layout, values, initRun, removeValues, removereduxValues, nestedValues, aliases, mapActionsToEffects, extraProps, dispatchSharedValueChange, validations, required, validationRequiredMapKeys,\r\n routeParams, noParams, dispatchhandleSave } = props //dataAttributes\r\n const { crud } = extraProps || {}\r\n const layoutType = layout.type\r\n const sharedProps = props.sharedProps || {}\r\n const sharedValues = props.sharedValues || []\r\n const prevState = useRef(sharedProps)\r\n const dispatch = useDispatch()\r\n const unsaveddata = useSelector(state => state.header && state.header.unsaveddata);\r\n const parentRecordVals = useSelector(state => state.sidebar && state.sidebar.modules);\r\n const [prevFieldvalues, setPrevFeildValues] = useState(values);\r\n const resetval = useSelector(state => state.header && state.header.resetval);\r\n const [currValue, setCurrValue] = useState(null)\r\n // let counterval\r\n //const getstoreresults = useSelector(state => state.initialresults)\r\n //render before\r\n\r\n const [fields, dispatchFieldsChange] = useReducer(\r\n handleFieldChange,\r\n {\r\n fieldValues: values, initialFieldValues: values, fieldProps: components, fieldsLayout: layout, fieldValidations: validations || {}, requiredFields: required || [], conditions: mapActionsToEffects, back: false,\r\n validationRequiredMapKeys: validationRequiredMapKeys, triggerBRActivity: false,\r\n // dataAttr: dataAttributes, \r\n addData: null\r\n }\r\n )\r\n const errors = useRef(false)\r\n const currentField = useRef('')\r\n let history = useHistory();\r\n let params = useParams();\r\n const counter = useRef(0)\r\n const { back, addData, fieldValues, fieldProps, fieldsLayout, fieldValidations, conditions, triggerBRActivity } = fields //dataAttr\r\n\r\n useDeepCompareEffect(() => {\r\n // dispatch(unsavedData(key, fieldValues, ))\r\n let updatedSharedValues = sharedValues.reduce((accum, each) => {\r\n accum[each] = fieldValues[each]\r\n return accum\r\n }, {})\r\n dispatch(unsavedData({ unsaveddata: fieldValues, initialdata: unsaveddata && unsaveddata.initialdata && !(_.isEmpty(unsaveddata.initialdata)) ? { ...unsaveddata.initialdata, ...sharedProps } : fieldValues }))\r\n // if (!initialdata) {\r\n\r\n // }\r\n //const names = currentField.current\r\n const names = Object.keys(updatedSharedValues)\r\n if (counter.current > 0 && names.length > 0 && dispatchSharedValueChange) {\r\n dispatchSharedValueChange({\r\n type: 'values',\r\n values: names.map(each => {\r\n return {\r\n name: aliases[each] || each,\r\n value: updatedSharedValues[each]\r\n }\r\n })\r\n })\r\n }\r\n counter.current++\r\n // currentField.current = []\r\n }, [fieldValues])\r\n\r\n useEffect(() => {\r\n if (triggerBRActivity) {\r\n handleEffectUpdates(\r\n handleActionsToEffects({\r\n fieldValues: { ...fieldValues, ...params },\r\n conditions: (conditions.afterSave['businessrulesactivity']),\r\n })\r\n )\r\n }\r\n }, [triggerBRActivity])\r\n\r\n\r\n useDeepCompareEffect(() => {\r\n try {\r\n if (sharedProps && Object.keys(sharedProps).length > 0)\r\n dispatchFieldsChange({\r\n type: 'updates',\r\n updates: {\r\n value: Object.keys(sharedProps).map(each => {\r\n return {\r\n key: each,\r\n result: {\r\n value: sharedProps[each]\r\n }\r\n }\r\n })\r\n }\r\n })\r\n }\r\n catch (ex) {\r\n console.error(\"console error in section\" + ex)\r\n }\r\n }, [sharedProps])\r\n\r\n // useEffect(() => {\r\n // if (conditions && conditions.onLoad && conditions.onLoad['init']) { // dependency and bussiness rules checking\r\n // handleEffectUpdates(\r\n // handleActionsToEffects({\r\n // fieldValues: { ...fieldValues, ...sharedProps, ...params },\r\n // conditions: (conditions.onLoad['init']),\r\n // global: conditions.onLoad.GLOBAL,\r\n // })\r\n // )\r\n // }\r\n // // counterval = 1;\r\n // }, [])\r\n\r\n\r\n // need to remove the code here and extend the functionality function\r\n useEffect(() => {\r\n let oldconditionsarr = [];\r\n let newconditionarr = [];\r\n for (let key in mapActionsToEffects.onLoad) {\r\n oldconditionsarr.push(key);\r\n };\r\n for (let key in conditions.onLoad) {\r\n newconditionarr.push(key);\r\n };\r\n let oldvalues = newconditionarr.filter(x => !oldconditionsarr.includes(x));\r\n for (let i = 0; i < oldvalues.length; i++) {\r\n let onloadname = oldvalues[i]\r\n if (conditions && conditions.onLoad && conditions.onLoad[onloadname]) { // dependency and bussiness rules checking\r\n handleEffectUpdates(\r\n handleActionsToEffects({\r\n fieldValues: { ...fieldValues, ...sharedProps, ...params },\r\n conditions: (conditions.onLoad[onloadname]),\r\n global: conditions.onLoad.GLOBAL,\r\n })\r\n )\r\n }\r\n }\r\n // counterval = 1;\r\n }, [conditions.onLoad])\r\n\r\n\r\n useDeepCompareEffect(() => {\r\n let sharedkeys = [];\r\n let prevStateShaedProps = prevState.current\r\n let tempConditions = conditions && conditions.onChange || {};\r\n let reduxVals = {}\r\n if (tempConditions && (sharedProps['save'] !== prevStateShaedProps['save'])) {\r\n if (fieldValues['GetParentValues']) {\r\n /** GetParentValues: should be add to jsons to data ( applicant, compnay) get from parent data */\r\n reduxVals = parentRecordVals\r\n }\r\n sharedkeys.push('save');\r\n tempConditions = conditions.afterSave;\r\n if (tempConditions)\r\n tempConditions['GLOBAL'] = conditions.afterSave.GLOBAL;\r\n }\r\n else if (sharedProps['saveduplicate'] === true) {\r\n sharedkeys.push('saveduplicate');\r\n tempConditions = conditions.afterSave\r\n }\r\n else if (sharedProps['edit'] === true || sharedProps['createduplicate'] === true) {\r\n let prevStateProps = Object.keys(sharedProps).filter(each => sharedProps[each] != prevStateShaedProps[each])\r\n sharedkeys = (prevStateProps)\r\n }\r\n else sharedkeys = Object.keys(sharedProps)\r\n sharedkeys && sharedkeys.map(share => {\r\n if (tempConditions && tempConditions[share] && (sharedProps[share] !== false)) {\r\n let sendvalues = noParams ? { ...fieldValues, ...sharedProps } : { ...fieldValues, ...sharedProps, ...params }\r\n let proceed = true;\r\n if (sharedProps[share] && (share === 'save' || share === 'saveduplicate')) {\r\n proceed = !saveFields();\r\n if (!proceed) {\r\n counter.current = 0\r\n let names = share === 'saveduplicate' ? ['saveduplicate'] : ['save']\r\n dispatchSharedValueChange({\r\n type: 'values',\r\n values: names.map(each => {\r\n return {\r\n name: each,\r\n value: false\r\n }\r\n })\r\n })\r\n dispatchFieldsChange({\r\n type: 'value',\r\n name: share,\r\n value: sendvalues[share],\r\n // dataAttr: dataAttr\r\n })\r\n }\r\n\r\n let tempsendvalues = share === 'saveduplicate' ? { ...fieldValues, ...sharedProps, ...params, IsDuplicate: \"Y\" } :\r\n (noParams ? { ...fieldValues, ...sharedProps } : { ...fieldValues, ...sharedProps, ...params })\r\n sendvalues = tempsendvalues;\r\n if (nestedValues) {\r\n for (const [key, value] of Object.entries(nestedValues)) {\r\n let keyval = { [key]: {} }\r\n value.forEach(element => {\r\n keyval[key][element] = sendvalues[element]\r\n });\r\n sendvalues = { ...tempsendvalues, ...keyval }\r\n }\r\n\r\n }\r\n if (removeValues) {\r\n removeValues.forEach(fields => {\r\n delete sendvalues[fields]\r\n })\r\n }\r\n if (removereduxValues) {\r\n removereduxValues.forEach(fields => {\r\n delete reduxVals[fields]\r\n })\r\n }\r\n }\r\n proceed && handleEffectUpdates(\r\n handleActionsToEffects({\r\n fieldValues: {\r\n ...sendvalues, ...reduxVals\r\n },\r\n conditions: (sharedProps[share] || share === props.tempconditions) ? tempConditions[share] : [],\r\n global: (!sharedProps[share] || fieldValues['RunAfterSave']) ? (tempConditions && tempConditions.GLOBAL) : [],\r\n extras: { runEvents: (tempConditions[share] && tempConditions[share].runEvents) || fieldValues['RunAfterSave'] ? true : false, } // based on onload and onsave\r\n })\r\n )\r\n }\r\n })\r\n prevState.current = sharedProps;\r\n }, [sharedProps])\r\n\r\n const handleEffectUpdates = (res) => {\r\n if (res)\r\n Promise.all(res).then(results => {\r\n dispatchFieldsChange({\r\n type: 'updates',\r\n updates: groupByType(results)\r\n })\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n if (addData)\r\n if (routeParams && routeParams.replace) {\r\n history.push(routeParams.replace + '/' + addData.Id)\r\n }\r\n else {\r\n props.handleBack(true)\r\n }\r\n }, [addData])\r\n\r\n useEffect(() => {\r\n if (back)\r\n props.handleBack(true)\r\n }, [back])\r\n\r\n useEffect(() => {\r\n if (key) {\r\n localStorage.setItem('TOUR_KEY', key)\r\n }\r\n if (conditions && conditions.onLoad && conditions.onLoad['init']) { // dependency and bussiness rules checking\r\n let reduxVals = {}\r\n if (fieldValues['GetParentValues']) {\r\n /** GetParentValues: should be add to jsons to data ( applicant, compnay) get from parent data */\r\n reduxVals = parentRecordVals\r\n }\r\n handleEffectUpdates(\r\n handleActionsToEffects({\r\n fieldValues: { ...fieldValues, ...sharedProps, ...params, ...reduxVals },\r\n conditions: (conditions.onLoad['init']),\r\n extras: { ...params }\r\n })\r\n )\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (resetval) {\r\n const { name, isReset } = resetval\r\n if (isReset) {\r\n let tempConditions = _.cloneDeep(conditions)\r\n let values = []\r\n Object.keys(fieldValues).map(each => {\r\n if (fieldValues[each] !== prevFieldvalues[each])\r\n values.push({\r\n key: each,\r\n result: {\r\n value: prevFieldvalues[each]\r\n }\r\n })\r\n })\r\n if (name && conditions) {\r\n // let sectionname = fieldsinSection ? fieldsinSection[currValue] : currValue;\r\n let eachCondition = (conditions.onChange[name] && conditions.onChange[name].fields) || null;\r\n let globalCondition = (conditions.onChange.GLOBAL && conditions.onChange.GLOBAL.fields) || null;\r\n\r\n //each filter\r\n let filterEachRules = [];\r\n // eslint-disable-next-line no-unused-expressions\r\n tempConditions.onChange[name] && tempConditions.onChange[name].rules.map(each => {\r\n if (each.fields && each.fields.includes(currValue)) {\r\n filterEachRules.push(each)\r\n }\r\n }) || [];\r\n let OnCondition = tempConditions.onChange[name] || {};\r\n OnCondition['rules'] = filterEachRules;\r\n // Global filter\r\n let filterGlobalRules = [];\r\n tempConditions.onChange.GLOBAL && tempConditions.onChange.GLOBAL.rules.map(each => {\r\n if (each.fields && each.fields.includes(currValue)) {\r\n filterGlobalRules.push(each)\r\n }\r\n })\r\n let OnGlbalCondition = tempConditions.onChange.GLOBAL || {};\r\n OnGlbalCondition['rules'] = filterGlobalRules;\r\n if ((eachCondition && eachCondition.includes(currValue)) || (globalCondition && globalCondition.includes(currValue))) {\r\n handleEffectUpdates(\r\n handleActionsToEffects({\r\n fieldValues: { ...prevFieldvalues, ...params },\r\n conditions: OnCondition || [],\r\n global: OnGlbalCondition,\r\n }))\r\n }\r\n }\r\n dispatch(setResetValue({}))\r\n dispatchFieldsChange({\r\n type: 'updates',\r\n updates: {\r\n value: values,\r\n }\r\n })\r\n }\r\n }\r\n }, [resetval && resetval.isReset])\r\n\r\n const handleFieldValue = (e) => {\r\n const { name, value, checked } = e.target\r\n const { dataset } = e && e.currentTarget ? e.currentTarget : { dataset: null };\r\n let tempConditions = _.cloneDeep(conditions)\r\n const val = handleValue(name, value, checked)\r\n const errorObj = fieldValidate(fieldValidations[name], val)\r\n dispatch(unsavedData({ unsaveddata: { ...fieldValues, [name]: value }, initialdata: unsaveddata.initialdata }))\r\n if (!errorObj) {\r\n dispatchFieldsChange({\r\n type: 'prop',\r\n name: name,\r\n value: {\r\n error: null,\r\n helperText: null\r\n },\r\n // dataAttr: dataset\r\n })\r\n }\r\n if (errorObj) {\r\n if (errorObj.error)\r\n errors.current = true\r\n // else {\r\n // errors.current = false\r\n // }\r\n\r\n dispatchFieldsChange({\r\n type: 'prop',\r\n name: name,\r\n value: {\r\n error: errorObj.error,\r\n helperText: errorObj.errorText\r\n },\r\n // dataAttr: dataset\r\n })\r\n }\r\n errors.current = false;\r\n dispatch(setResetValue({ name: name, isReset: null }))\r\n if ((conditions && conditions.onChange && conditions.onChange[name] && conditions.onChange[name].fields) || (conditions && conditions.onChange && conditions.onChange.GLOBAL && conditions.onChange.GLOBAL.fields)) {\r\n setPrevFeildValues(fieldValues);\r\n let eachCondition = (conditions.onChange[name] && conditions.onChange[name].fields) || null;\r\n let globalCondition = (conditions.onChange.GLOBAL && conditions.onChange.GLOBAL.fields) || null;\r\n\r\n //each filter\r\n let filterEachRules = [];\r\n // eslint-disable-next-line no-unused-expressions\r\n tempConditions.onChange[name] && tempConditions.onChange[name].rules.map(each => {\r\n if (each.fields && each.fields.includes(name)) {\r\n filterEachRules.push(each)\r\n }\r\n }) || [];\r\n let OnCondition = tempConditions.onChange[name] || {};\r\n OnCondition['rules'] = filterEachRules;\r\n // Global filter\r\n let filterGlobalRules = [];\r\n tempConditions.onChange.GLOBAL && tempConditions.onChange.GLOBAL.rules.map(each => {\r\n if (each.fields && each.fields.includes(name)) {\r\n filterGlobalRules.push(each)\r\n }\r\n })\r\n let OnGlbalCondition = tempConditions.onChange.GLOBAL || {};\r\n OnGlbalCondition['rules'] = filterGlobalRules;\r\n\r\n if ((eachCondition && eachCondition.includes(name)) || (globalCondition && globalCondition.includes(name))) {\r\n errors.current = false\r\n currentField.current = name\r\n handleEffectUpdates(\r\n handleActionsToEffects({\r\n fieldValues: { ...fieldValues, ...params, [name]: val },\r\n conditions: OnCondition || [],\r\n global: OnGlbalCondition,\r\n extras: { [name]: dataset, runEvents: true },//dataAttr: { ...dataAttr, [name]: dataset }, \r\n onEvent: name !== 'save' ? (conditions.onEvent && conditions.onEvent.GLOBAL) : {},\r\n info: conditions.info ? conditions.info : null\r\n })\r\n )\r\n }\r\n dispatchFieldsChange({\r\n type: 'value',\r\n name: name,\r\n value: val\r\n })\r\n }\r\n\r\n //const val = handleValue(name, value, checked)\r\n dispatchFieldsChange({\r\n type: 'value',\r\n name: name,\r\n value: val,\r\n // dataAttr: dataset\r\n })\r\n }\r\n\r\n const handleButtonClick = (e, callRequest) => {\r\n const { name } = e.currentTarget\r\n let proceed = true;\r\n if (conditions && conditions.onChange && conditions.onChange[name]) {\r\n counter.current++\r\n if (name === 'save' || name === 'IsLocked' || callRequest)\r\n proceed = !saveFields();\r\n let sendvalues = fieldValues\r\n if (removeValues) {\r\n removeValues.forEach(fields => {\r\n delete sendvalues[fields]\r\n })\r\n }\r\n proceed && handleEffectUpdates(\r\n handleActionsToEffects({\r\n fieldValues: { ...sendvalues, ...sharedProps, ...params },\r\n conditions: conditions.onChange[name] || [],\r\n extras: { runEvents: true, },\r\n onEvent: name !== 'save' ? (conditions.onEvent && conditions.onEvent[name]) : {},\r\n info: conditions.info ? conditions.info : null\r\n })\r\n )\r\n }\r\n }\r\n\r\n\r\n\r\n const handleValue = (name, value, checked) => {\r\n // const { type } = components[name]\r\n // switch (type) {\r\n const { changefieldto, type, custom } = components[name]\r\n let changeType = changefieldto || type\r\n switch (changeType) {\r\n case 'checkbox':\r\n return checkBoxTransformProps[checked.toString()]\r\n default:\r\n return value\r\n }\r\n }\r\n\r\n\r\n //custom components (editor/ multiselect)\r\n function setCustomFields(customprops) {\r\n dispatchFieldsChange({\r\n type: 'customfields',\r\n ...customprops\r\n })\r\n }\r\n\r\n //custom components (editor/ multiselect)\r\n const updateForm = (res) => {\r\n dispatchFieldsChange({\r\n type: 'updates',\r\n updates: res\r\n })\r\n }\r\n\r\n //use set additionals\r\n const setInitialFieldValues = (res) => {\r\n dispatchFieldsChange({\r\n type: 'inital',\r\n updates: res[0]\r\n\r\n })\r\n }\r\n\r\n const setBussinessrules = (res) => {\r\n dispatchFieldsChange({\r\n type: 'bussinessrules',\r\n ...res\r\n })\r\n }\r\n\r\n const saveFields = () => {\r\n let errorlist = {};\r\n let saveStatus = false\r\n if (errors.current)\r\n console.log('Please Fix errors')\r\n else {\r\n let fields = Object.keys(fieldProps)\r\n const errorFields = fields.filter(each => {\r\n if (fieldProps[each].required) {\r\n if (fieldValues[each] && fieldValues[each] !== '') {\r\n if (fieldProps[each].error) {\r\n saveStatus = true\r\n return true\r\n }\r\n else {\r\n return false\r\n }\r\n }\r\n else {\r\n saveStatus = true\r\n return true\r\n }\r\n }\r\n if (fieldProps[each].error) {\r\n saveStatus = true\r\n return true\r\n }\r\n else return false\r\n })\r\n errorFields.map(each => {\r\n let errorfield = fieldProps[each]\r\n let errorfieldlabel = errorfield.label\r\n if (!(fieldProps && fieldProps[each] && fieldProps[each].error) && fieldProps[each].required) {\r\n return errorlist[each] = {\r\n error: true,\r\n helperText: `${errorfieldlabel} is Required`,\r\n }\r\n }\r\n else {\r\n return errorlist[each] = {\r\n error: true,\r\n helperText: fieldProps[each].helperText ? fieldProps[each].helperText : '',\r\n }\r\n }\r\n\r\n })\r\n dispatchFieldsChange({\r\n type: 'required',\r\n fields: errorlist\r\n })\r\n }\r\n return saveStatus\r\n }\r\n\r\n const handleRowClick = (e, data) => {\r\n const { name, value, checked } = e.target\r\n if (conditions[name]) {\r\n // currentField.current = name\r\n handleEffectUpdates(\r\n handleActionsToEffects({\r\n fieldValues: { ...fieldValues },\r\n conditions: conditions[name],\r\n extras: { ...data }\r\n })\r\n )\r\n }\r\n }\r\n\r\n\r\n const componentsCreation = (fieldNames, values) => {\r\n if (fieldProps)\r\n try {\r\n return fieldNames.reduce((accum, each) => {\r\n // console.log(each)\r\n if (fieldProps[each]) {\r\n const { type, custom, ...otherProps } = fieldProps[each]\r\n if (custom) {\r\n const EachComp = type\r\n accum[each] = <EachComp {...otherProps} value={values[each]} />\r\n }\r\n else {\r\n const EachComp = fieldTypes[type]\r\n if (type) {\r\n accum[each] = <EachComp {...otherProps} value={values[each]} handleFieldValue={handleFieldValue} handlerowClick={handleRowClick} sharedProps={sharedProps} accessPermissions={props.accessPermissions}\r\n loadReport={sharedProps.loadreportfilter} back={props.addOnsByName['back']} routeparams={props.routeparams}// 'gridreport'\r\n handleButtonClick={handleButtonClick} fieldValues={values} fieldProps={fieldProps}//'button'\r\n />\r\n return accum\r\n }\r\n else {\r\n console.log(\"type is missing\" + type, each)\r\n }\r\n }\r\n }\r\n }, {})\r\n }\r\n catch (ex) {\r\n console.log(\"exception \" + ex)\r\n }\r\n }\r\n\r\n useEffect(\r\n () => {\r\n if (!initRun) {\r\n handleEffectUpdates(\r\n handleActionsToEffects({\r\n fieldValues: { ...fieldValues },\r\n conditions: {},\r\n global: (conditions && conditions.GLOBAL) || [],\r\n extras: { runEvents: false, }\r\n })\r\n )\r\n }\r\n }, [conditions])\r\n\r\n return [\r\n <div>\r\n {layoutType && layoutTypes[layoutType] ?\r\n layoutTypes[layoutType]({\r\n layout: fieldsLayout,\r\n fields: componentsCreation(Object.keys(fieldProps), fieldValues)\r\n }) :\r\n layoutTypes.default({\r\n layout: fieldsLayout,\r\n fields: componentsCreation(Object.keys(fieldProps), fieldValues)\r\n })\r\n }\r\n </div>,\r\n fieldValues,\r\n fieldProps,\r\n setCustomFields,\r\n updateForm,\r\n setInitialFieldValues,\r\n saveFields,\r\n setBussinessrules,\r\n ]\r\n\r\n}","/**\r\n *********************************************************\r\n Description: Handles grid component.\r\n Required props: type.\r\n limitations : just displays the grid data. on double click on the row changes the route.\r\n *********************************************************\r\n**/\r\n\r\nimport { process } from '@progress/kendo-data-query';\r\nimport { ExcelExport } from '@progress/kendo-react-excel-export';\r\nimport { Grid, GridColumn, GridColumnMenuFilter } from '@progress/kendo-react-grid';\r\nimport isEqual from 'lodash/isEqual';\r\nimport moment from 'moment';\r\nimport React, { useEffect, useReducer, useRef, useState } from 'react';\r\nimport { useHistory, useLocation, useParams, withRouter } from 'react-router-dom';\r\nimport useDeepCompareEffect from 'use-deep-compare-effect';\r\nimport { handlecustomCondition } from '../../modules/form/conditions';\r\nimport { getOptions, loadreportdata } from '../components/savegridreport';\r\nimport { handleActionsToEffects } from '../effects/effects';\r\nimport { groupByType } from '../helpers/components';\r\nimport { CustomColumnMenu } from './customColumnMenu.jsx';\r\nimport GridHeader from './kendoheader';\r\nimport DefaultSettings from './settings';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { getEnvVariable } from '../../../modules/environmentalList';\r\nconst _ = require('lodash');\r\n\r\n\r\nfunction handleFieldChange(state, action) {\r\n const { type, ...otherProps } = action\r\n if (type === 'sharedValues') {\r\n const { sharedValues } = otherProps\r\n const newstate = { ...state, sharedValues: sharedValues }\r\n return newstate\r\n }\r\n if (type === 'updates') {\r\n let newstate = { ...state }\r\n const { updates } = otherProps\r\n const { prop, grid, gridExport, columnProps, value, datastate, layout, validations, required, businessrules, isexport } = updates\r\n if (prop) {\r\n prop.forEach(each => {\r\n const { name, value, result, hasValue, disabled, ...otherProps } = each;\r\n if (hasValue) {\r\n state = { ...state, fieldValues: { ...state.fieldValues, [name]: value || (disabled ? 'Y' : 'N') }, ...otherProps }\r\n }\r\n state = { ...state, ...otherProps }\r\n })\r\n newstate = { ...state }\r\n }\r\n\r\n if (grid || gridExport) {\r\n let gridVal = grid || gridExport\r\n gridVal.forEach(each => {\r\n const { data, value, ...otherProps } = each;\r\n if (data && !_.isEmpty(data)) {\r\n let tempData = []\r\n if (data && data.value)\r\n tempData = data.value.data\r\n else if (data && data.Message) {\r\n tempData = [];\r\n // if (DefaultSettings.getAlert() != null)\r\n // DefaultSettings.getAlert().show('No Results are Found', 'info');\r\n }\r\n\r\n else tempData = data && (data.data ? data.data : (Array.isArray(data) ? data : []));\r\n let convertList = {};\r\n let columns = newstate.gridColumns;\r\n columns.map(res => {\r\n if (res.convert)\r\n convertList[res.field] = res.convert\r\n })\r\n\r\n let convertListKeys = Object.keys(convertList);\r\n convertListKeys && convertListKeys.length > 0 && convertListKeys.forEach(listKeys => {\r\n if (data && data.data && data.data.length > 0 || (Array.isArray(data) && data.length > 0)) {\r\n tempData.map(list => {\r\n if (list[listKeys]) {\r\n //need to change according to case for now date is added\r\n list[listKeys] = moment(list[listKeys]).format(convertList[listKeys])\r\n }\r\n if (list.NewValue) {\r\n list.NewValue = list.NewValueDesc && list.NewValueDesc !== null ? list.NewValueDesc : list.NewValue\r\n }\r\n if (list.OldValue) {\r\n list.OldValue = list.OldValueDesc && list.OldValueDesc !== null ? list.OldValueDesc : list.OldValue\r\n }\r\n })\r\n }\r\n })\r\n if (data) {\r\n if (grid) {\r\n newstate = { ...newstate, ['data']: tempData, ['total']: data.total ? data.total : (data.value && data.value.total ? data.value.total : tempData.length), isexport: (state.fieldValues.exportaction === 'Y' || state.fieldValues.exportaction == true) ? true : false }\r\n }\r\n else {\r\n newstate = { ...newstate, ['exportdata']: tempData, isexport: (state.fieldValues.exportaction === 'Y' || state.fieldValues.exportaction == true) ? true : false }\r\n }\r\n }\r\n }\r\n\r\n\r\n })\r\n\r\n }\r\n if (columnProps) {\r\n const { value } = columnProps\r\n newstate = { ...newstate, gridColumns: value }\r\n }\r\n if (datastate) {\r\n newstate = { ...state, dataState: datastate, data: state.data && state.data.data ? process(state.data.data, datastate) : process(state.data, datastate) }\r\n // return newstate\r\n }\r\n if (value) {\r\n value.forEach(each => {\r\n const { key, result } = each\r\n newstate = { ...newstate, fieldValues: { ...newstate.fieldValues, [key]: result } }\r\n })\r\n // newstate = { ...newstate } //return newstate = { ...state }\r\n }\r\n if (isexport) {\r\n newstate = { ...state, isexport: false, }\r\n // return newstate\r\n }\r\n return newstate\r\n }\r\n return state\r\n}\r\n\r\nconst defaults = {\r\n mapActionsToEffects: {}\r\n}\r\n\r\n// const DetailComponent = (props) => {\r\n// const data = props.dataItem.details;\r\n\r\n// if (data) {\r\n// return (\r\n// <Grid data={data}>\r\n// <GridColumn field=\"ProductID\" title=\"Product ID\" width=\"120px\" />\r\n// <GridColumn field=\"ProductName\" title=\"Product Name\" />\r\n// <GridColumn field=\"UnitPrice\" title=\"Unit Price\" format=\"{0:c}\" />\r\n// </Grid>\r\n// );\r\n// }\r\n\r\n// return (\r\n// <div\r\n// style={{\r\n// height: \"50px\",\r\n// width: \"100%\",\r\n// }}\r\n// >\r\n// <div\r\n// style={{\r\n// position: \"absolute\",\r\n// width: \"100%\",\r\n// }}\r\n// >\r\n// <div className=\"k-loading-image\" />\r\n// </div>\r\n// </div>\r\n// );\r\n// };\r\nfunction useGrid(props) {\r\n const { key, columns, gridkey, title, mapActionsToEffects, displayName, navigation, subnavigation, allgriddata, navigateItem,\r\n loadreportfilter, ReportJsonQueryStr, aliases, values, dispatchSharedValueChange, addRoute,\r\n routeParams, headerProps, customizedheight, subgrid, customsubgrid, nosubgridrouting, ...otherProps } = { ...defaults, ...props };\r\n const [component, setComponent] = useState(null)\r\n const [setMinWidth, setSetMinWidth] = useState(false)\r\n const [gridCurrent, setGridCurrent] = useState(0)\r\n const [rowSelected, setRowSelected] = useState(null)\r\n const [hasDefaultReport, setHasDefaultReport] = useState(false)\r\n const [filteredfield, setFilteredField] = useState([])\r\n const [initialloadextrainfo, setInitialloadextrainfo] = useState(null)\r\n const currentField = useRef([])\r\n const _export = useRef(null)\r\n const _grid = useRef(null)\r\n const counter = useRef(0)\r\n let minGridWidth = 0;\r\n let grid;\r\n const sharedProps = props.sharedProps || {}\r\n const sharedValues = props.sharedValues || []\r\n const history = useHistory()\r\n const location = useLocation();\r\n const params = useParams();\r\n const parentRecordVals = useSelector(state => state.sidebar && state.sidebar.modules);\r\n\r\n const [fields, dispatchFieldsChange] = useReducer(\r\n handleFieldChange,\r\n {\r\n gridColumns: columns, total: 0, data: [], exportdata: [], dataState: { skip: 0, take: 20 }, fieldValues: values,\r\n conditions: mapActionsToEffects, isexport: false,\r\n pageable: {\r\n buttonCount: 2,\r\n info: true,\r\n type: 'numeric',\r\n pageSizes: [10, 20, 30, 40, 50, 100],\r\n previousNext: true\r\n }\r\n }\r\n )\r\n\r\n const prevState = useRef(fields)\r\n const { gridColumns, data, total, dataState, fieldValues, conditions, pageable, isexport, exportdata } = fields\r\n\r\n\r\n useDeepCompareEffect(() => {\r\n const updatedSharedValues = sharedValues.reduce((accum, each) => {\r\n accum[each] = fieldValues[each]\r\n return accum\r\n }, {})\r\n const names = Object.keys(updatedSharedValues)\r\n if (counter.current > 0 && names.length > 0 && dispatchSharedValueChange) {\r\n dispatchSharedValueChange({\r\n type: 'values',\r\n values: names.map(each => {\r\n return {\r\n name: aliases[each] || each,\r\n value: updatedSharedValues[each]\r\n }\r\n })\r\n })\r\n }\r\n counter.current++\r\n }, [fieldValues])\r\n\r\n useDeepCompareEffect(() => {\r\n let filterkey = gridkey\r\n let tempExtras = (localStorage.getItem(filterkey) && JSON.parse(localStorage.getItem(filterkey))) || { skip: 0, take: 20 }\r\n const prevfieldValues = prevState.current.fieldValues\r\n const status = isEqual(prevfieldValues, fieldValues)\r\n if (!status) {\r\n const unEqualProps = Object.keys(fieldValues).filter(each => fieldValues[each] != prevfieldValues[each])\r\n unEqualProps.forEach(each => {\r\n if (conditions[each])\r\n handleEffectUpdates(\r\n handleActionsToEffects({\r\n fieldValues: { ...fieldValues, ...props.match.params, }, //...prevfieldValues,\r\n conditions: conditions[each],\r\n extras: tempExtras\r\n })\r\n )\r\n })\r\n }\r\n prevState.current = fields\r\n }, [fieldValues])\r\n\r\n useDeepCompareEffect(() => {\r\n let sharedkeys = Object.keys(sharedProps);\r\n let filterkey = gridkey\r\n let tempExtras = (localStorage.getItem(filterkey) && JSON.parse(localStorage.getItem(filterkey))) || { skip: 0, take: 20 }\r\n if (sharedProps['editOpen'] === undefined)\r\n setRowSelected(null)\r\n sharedkeys && sharedkeys.map(share => {\r\n if (mapActionsToEffects && mapActionsToEffects[share] && (sharedProps[share])) {\r\n if (addRoute && subgrid && sharedProps['navigation'] && sharedProps['navigation'][routeParams.param]) {\r\n let loc = location.pathname\r\n let final = loc.substring(0, loc.lastIndexOf(\"/\"))\r\n props.history.push(final + '/' + sharedProps['navigation'][routeParams.param])\r\n }\r\n handleEffectUpdates(\r\n handleActionsToEffects({\r\n fieldValues: { ...fieldValues, ...sharedProps, ...props.match.params },\r\n conditions: mapActionsToEffects[share],\r\n extras: tempExtras\r\n })\r\n )\r\n if (share === 'load' || share === 'loadtemp') {\r\n dispatchSharedValueChange({\r\n type: 'value',\r\n name: share,\r\n value: false\r\n })\r\n }\r\n }\r\n })\r\n }, [sharedProps])\r\n\r\n useDeepCompareEffect(() => {\r\n dispatchFieldsChange({\r\n type: 'updates',\r\n updates: {\r\n value: Object.keys(sharedProps).map(each => {\r\n return {\r\n key: each,\r\n result: sharedProps[each]\r\n }\r\n })\r\n }\r\n })\r\n }, [sharedProps])\r\n\r\n\r\n useEffect(() => {\r\n grid = document.querySelector('.k-grid');\r\n window.addEventListener('resize', handleResize);\r\n gridColumns.map(item => minGridWidth += item.width);\r\n setGridCurrent(grid.offsetWidth)\r\n setSetMinWidth(grid.offsetWidth < minGridWidth)\r\n if (props.hascustomcondition) {\r\n hascustomconditionLoad();\r\n }\r\n initialLoad();\r\n }, [])\r\n\r\n const hascustomconditionLoad = async () => {\r\n let initialloadextrainfodata = await handlecustomCondition({ ...props, 'options': { 'crud': { customcondition: props.customcondition } } })\r\n setInitialloadextrainfo(initialloadextrainfodata)\r\n }\r\n\r\n const initialLoad = async (id) => {\r\n if (!subgrid) {\r\n const { match } = props;\r\n let filterkey = gridkey\r\n let tempExtras = (localStorage.getItem(filterkey) && JSON.parse(localStorage.getItem(filterkey))) ||\r\n { skip: 0, take: 20 }\r\n let url = match.url;\r\n if (routeParams && (url.substr(url.lastIndexOf(\"/\") + 1) !== routeParams.replace)) {\r\n let final = url.substring(0, url.lastIndexOf(\"/\"))\r\n //props.history.push(final)\r\n }\r\n console.log(\"load\")\r\n if (mapActionsToEffects && mapActionsToEffects['load']) { // dependency and bussiness rules checking\r\n handleEffectUpdates(\r\n handleActionsToEffects({\r\n fieldValues: { ...fieldValues, ...props.match.params, ...sharedProps, },\r\n conditions: [],\r\n global: (mapActionsToEffects['load']) || [],\r\n extras: tempExtras// props.hasreport ? filtereddatastate :\r\n })\r\n )\r\n }\r\n }\r\n if (customsubgrid) {\r\n console.log(\"custom\")\r\n if (mapActionsToEffects && mapActionsToEffects['load']) { // dependency and bussiness rules checking\r\n handleEffectUpdates(\r\n handleActionsToEffects({\r\n fieldValues: { ...fieldValues, ...props.match.params, ...sharedProps, },\r\n conditions: [],\r\n global: (mapActionsToEffects['load']) || [],\r\n extras: { skip: 0, take: 20 }\r\n })\r\n )\r\n }\r\n }\r\n if (props.hasreport) {\r\n let initalReqDataState = { skip: 0, take: 20 }\r\n let reportinfo = await loadreportdata(props.attachparamgridkey && props.match && props.match.params && props.match.params.key ? props.match.params.key +\r\n props.gridkey : props.gridkey, id)\r\n if (reportinfo) {\r\n let filtereddatastate = reportinfo && reportinfo.columnsdata ? reportinfo.datastate : reportinfo\r\n let columnsinfo = reportinfo && reportinfo.columnsdata ? reportinfo.columnsdata.flatMap(i => i.field) : null\r\n let hasfilterfields = reportinfo && reportinfo.columnsdata && filtereddatastate.filter ? columnsinfo.map(field => {\r\n if (GridColumnMenuFilter.active(field, filtereddatastate.filter)) {\r\n return field;\r\n }\r\n }) : []\r\n if (filtereddatastate) {\r\n dispatchFieldsChange({\r\n type: 'updates',\r\n updates: {\r\n datastate: filtereddatastate\r\n }\r\n })\r\n }\r\n setFilteredField(hasfilterfields);\r\n // if (DefaultSettings.getAlert() != null && alert)\r\n // DefaultSettings.getAlert().show('Please wait Default filter is applying to the grid', 'success');\r\n if (filtereddatastate && filtereddatastate.toString() !== initalReqDataState.toString()) {\r\n console.log(\"filtereddatastate\")\r\n if (mapActionsToEffects && mapActionsToEffects['load']) { // dependency and bussiness rules checking\r\n handleEffectUpdates(\r\n handleActionsToEffects({\r\n fieldValues: { ...fieldValues, ...props.match.params, ...sharedProps, },\r\n conditions: [],\r\n global: (mapActionsToEffects['load']) || [],\r\n extras: filtereddatastate\r\n })\r\n )\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n const handleResize = () => {\r\n if (grid.offsetWidth < minGridWidth && !setMinWidth) {\r\n setSetMinWidth(true)\r\n } else if (grid.offsetWidth > minGridWidth) {\r\n setGridCurrent(grid.offsetWidth);\r\n setSetMinWidth(false)\r\n }\r\n }\r\n\r\n // const setWidth = (minWidth) => {\r\n // let width = setMinWidth ? minWidth :\r\n // minWidth + (gridCurrent - minGridWidth) / gridColumns.length;\r\n // return width;\r\n // }\r\n\r\n const setWidth = (title) => {\r\n if (title) {\r\n const baseWidthPerCharacter = 13; // This is an arbitrary value; adjust based on your font\r\n const standardWidth = 200; // Standard width for titles with less than 10 characters\r\n const titleLength = title.length;\r\n const calculatedWidth = titleLength >= 15 ? titleLength * baseWidthPerCharacter : standardWidth;\r\n return calculatedWidth\r\n }\r\n // let width = minWidth ? minWidth : (window.innerWidth / columns.length);\r\n // return width;\r\n }\r\n\r\n\r\n const handleEffectUpdates = (res) => {\r\n if (res)\r\n Promise.all(res).then(results => {\r\n dispatchFieldsChange({\r\n type: 'updates',\r\n updates: groupByType(results)\r\n })\r\n })\r\n }\r\n\r\n const navigateItems = (newitem) => {\r\n setRowSelected(newitem)\r\n rowRender({ props: { children: '' } }, newitem, true)\r\n }\r\n\r\n const rowRender = (trElement, gridItem, navigate) => {\r\n const nocolor = { fontWeight: \"normal\", fontStyle: 'normal' };\r\n const green = { fontWeight: \"bold\", fontStyle: 'italic' };\r\n if (navigate && gridItem && addRoute && !subgrid && !nosubgridrouting) {\r\n let url = history.location.pathname.substring(0, history.location.pathname.lastIndexOf(\"/\"))\r\n if (gridItem.dataItem) {\r\n history.push(url + '/' + gridItem.dataItem[routeParams.param])\r\n }\r\n else {\r\n history.push(url + '/' + gridItem[routeParams.param])\r\n }\r\n };\r\n const trProps = {\r\n ...trElement.props,\r\n style: rowSelected && ((gridItem.dataItem === rowSelected) || (gridItem === rowSelected)) ? green : nocolor,\r\n onDoubleClick: () => {\r\n if (mapActionsToEffects && mapActionsToEffects['display']) { // dependency and bussiness rules checking\r\n localStorage.setItem('BusinessRules', JSON.stringify([]))\r\n counter.current++\r\n setRowSelected(gridItem.dataItem)\r\n if (addRoute && !subgrid) {\r\n history.push(routeParams.replace + '/' + gridItem.dataItem[routeParams.param])\r\n }\r\n handleEffectUpdates(\r\n handleActionsToEffects({\r\n //allgriddata stores complete grid data (in that particular page)\r\n fieldValues: {\r\n ...fieldValues, ...sharedProps, \"initialloadextrainfo\": initialloadextrainfo && initialloadextrainfo.results ?\r\n initialloadextrainfo.results : null, [displayName]: gridItem.dataItem, [navigation]: gridItem.dataItem,\r\n [subnavigation]: gridItem.dataItem, [allgriddata]: data, [navigateItem]: navigateItems, ...props.match.params\r\n },\r\n conditions: (mapActionsToEffects['display'])\r\n })\r\n )\r\n }\r\n }\r\n };\r\n return React.cloneElement(trElement, { ...trProps }, trElement.props.children);\r\n }\r\n\r\n useDeepCompareEffect(() => {\r\n if (params && routeParams && params[routeParams.routeName] && !rowSelected && data && data.length > 0)\r\n if (mapActionsToEffects && mapActionsToEffects['display']) {\r\n let rowData = data.find(each => each.Id.toString() === params[routeParams.routeName])\r\n if (!rowData || (rowData && !rowData.Id)) {\r\n initialLoad()\r\n }\r\n else {\r\n setTimeout(() => {\r\n // eslint-disable-next-line no-unused-expressions\r\n handleEffectUpdates(\r\n handleActionsToEffects({\r\n fieldValues: {\r\n ...fieldValues, ...sharedProps, [displayName]: rowData,\r\n [navigation]: rowData, [subnavigation]: rowData,\r\n [allgriddata]: data, [navigateItem]: navigateItems, ...props.match.params\r\n },\r\n conditions: (mapActionsToEffects['display'])\r\n })\r\n ), 2000\r\n })\r\n }\r\n }\r\n }, [params, data])\r\n\r\n const onColumnsSubmit = (columnsState) => {\r\n dispatchFieldsChange({\r\n type: 'updates',\r\n updates: {\r\n columnProps:\r\n { value: columnsState }\r\n }\r\n })\r\n }\r\n\r\n const onClearColumnsSubmit = () => {\r\n dispatchFieldsChange({\r\n type: 'updates',\r\n updates: {\r\n columnProps:\r\n { value: columns }\r\n }\r\n })\r\n }\r\n\r\n const handleDataStateChange = (changeEvent) => {\r\n let exportdata = changeEvent.dataState && changeEvent.dataState.filter ? true : false;\r\n if (changeEvent.dataState) {\r\n let filterkey = gridkey\r\n localStorage.setItem(filterkey, JSON.stringify(changeEvent.dataState))\r\n }\r\n else {\r\n let filterkey = gridkey\r\n localStorage.removeItem(filterkey);\r\n }\r\n let allcolumns = props && props.columns ? props.columns.flatMap(i => i.field) : null\r\n let hasfilterfields = [];\r\n hasfilterfields = exportdata && allcolumns ? allcolumns.map(field => {\r\n if (GridColumnMenuFilter.active(field, changeEvent.dataState.filter)) {\r\n return field;\r\n }\r\n }) : []\r\n dispatchFieldsChange({\r\n type: 'updates',\r\n updates: {\r\n datastate: changeEvent.dataState\r\n }\r\n })\r\n if (mapActionsToEffects && mapActionsToEffects['load']) { // dependency and bussiness rules checking\r\n console.log(\"datastate\")\r\n handleEffectUpdates(\r\n handleActionsToEffects({\r\n fieldValues: { ...props.match.params, ...sharedProps },\r\n conditions: [],\r\n global: (mapActionsToEffects['load']) || [],\r\n extras: changeEvent.dataState\r\n })\r\n )\r\n }\r\n setFilteredField(hasfilterfields)\r\n }\r\n\r\n const clearFilters = () => {\r\n let dataState = {\r\n skip: 0, take: 20\r\n }\r\n if (gridkey)\r\n localStorage.removeItem(gridkey);\r\n //this.fetchData(dataState);\r\n onClearColumnsSubmit();\r\n dispatchFieldsChange({\r\n type: 'updates',\r\n updates: {\r\n datastate: dataState\r\n\r\n }\r\n })\r\n console.log(\"clear\")\r\n if (mapActionsToEffects && mapActionsToEffects['load']) { // dependency and bussiness rules checking\r\n handleEffectUpdates(\r\n handleActionsToEffects({\r\n fieldValues: props.match.params, ...sharedProps,\r\n conditions: [],\r\n global: (mapActionsToEffects['load']) || [],\r\n extras: dataState\r\n })\r\n )\r\n }\r\n setFilteredField([]);\r\n setHasDefaultReport(false)\r\n }\r\n\r\n\r\n const handleAdd = () => {\r\n if (mapActionsToEffects && mapActionsToEffects['add']) { // dependency and bussiness rules checking\r\n // let initialloadextrainforesults = {initialloadextrainfo : initialloadextrainfo && initialloadextrainfo.results ? initialloadextrainfo.results : null}\r\n counter.current++\r\n handleEffectUpdates(\r\n handleActionsToEffects({\r\n fieldValues: { ...fieldValues, ...sharedProps, ...props.match.params, initialloadextrainfo },\r\n conditions: (mapActionsToEffects['add'])\r\n })\r\n )\r\n }\r\n\r\n }\r\n\r\n const handleReport = () => {\r\n let datastateval = dataState.value ? dataState.value : dataState\r\n let gridOptions = getOptions(data, columns, datastateval);\r\n if (mapActionsToEffects && mapActionsToEffects['report']) {\r\n counter.current++\r\n handleEffectUpdates(\r\n handleActionsToEffects({\r\n fieldValues: { ...fieldValues, ...sharedProps, ...props.match.params, ReportJsonQueryStr: gridOptions, loadreportfilter: initialLoad },\r\n conditions: (mapActionsToEffects['report'])\r\n })\r\n )\r\n }\r\n }\r\n\r\n const handleBack = () => {\r\n const { match, backnavigation } = props\r\n let url = match.url\r\n let final = url\r\n if (backnavigation) {\r\n for (let i = 1; i <= backnavigation; i++) {\r\n final = final.substring(0, final.lastIndexOf(\"/\"))\r\n props.history.push(final)\r\n }\r\n }\r\n else {\r\n final = url.substring(0, url.lastIndexOf(\"/\"))\r\n props.history.push(final)\r\n }\r\n }\r\n\r\n const handleDataPageState = () => {\r\n let deepCopy = _.cloneDeep(dataState);\r\n deepCopy.skip = 0;\r\n deepCopy.take = fields.total;\r\n const { skip, total, take, ...otherstate } = deepCopy;\r\n return deepCopy\r\n }\r\n\r\n useEffect(() => {\r\n if (isexport)\r\n if (_export.current !== null) {\r\n _export.current.save(exportdata, _grid.current.columns);\r\n }\r\n\r\n dispatchFieldsChange({\r\n type: 'updates',\r\n updates: {\r\n isexport: true\r\n }\r\n })\r\n dispatchFieldsChange({\r\n type: 'updates',\r\n updates: {\r\n prop: [{\r\n type: 'prop',\r\n name: 'exportaction',\r\n hasValue: true,\r\n value: false,\r\n }]\r\n }\r\n })\r\n }, [isexport])\r\n\r\n const NoDataDisplay = (props, field) => {\r\n if (props.dataItem[field] == null || props.dataItem[field] == '') {\r\n return <td style={{ color: '#adabaa' }}> N/A </td>\r\n }\r\n return <td > {props.dataItem[field]} </td>\r\n\r\n }\r\n\r\n const handleExport = (actiontype) => {\r\n if (mapActionsToEffects && mapActionsToEffects['load']) { // dependency and bussiness rules checking\r\n dispatchFieldsChange({\r\n type: 'updates',\r\n updates: {\r\n prop: [{\r\n type: 'prop',\r\n name: 'exportaction',\r\n hasValue: true,\r\n value: true,\r\n }]\r\n }\r\n })\r\n handleEffectUpdates(\r\n handleActionsToEffects({\r\n fieldValues: { ...props.match.params },\r\n conditions: [],\r\n global: (mapActionsToEffects['load']) || [],\r\n extras: actiontype === 'filterall' ? handleDataPageState() : dataState,\r\n kendoProps: true\r\n })\r\n )\r\n }\r\n }\r\n // let gridDataState = { ...dataState, take: pageable.pageSizes.includes(dataState['take']) ? dataState.take : 'All' }\r\n // let gridPageable = { ...pageable, ['info']: pageable.pageSizes.includes(dataState['take']) ? true : false }\r\n let reduxVals = {}\r\n if (fieldValues['GetParentValues']) {\r\n /** GetParentValues: should be add to jsons to data ( applicant, compnay) get from parent data */\r\n reduxVals = parentRecordVals\r\n }\r\n\r\n const getHeight = () => {\r\n if (history && history.location.pathname.includes('Records'))\r\n return window.innerHeight - 175\r\n else return window.innerHeight - 125\r\n }\r\n return [\r\n <div className=\"col-12\">\r\n {headerProps && <GridHeader {...headerProps} initialloadextrainfo={initialloadextrainfo}\r\n reportapplied={hasDefaultReport} {...{\r\n addOnsByName: {\r\n add: { onClick: handleAdd }, excel: { onClick: handleExport },\r\n clear: { onClick: clearFilters }, back: { onClick: handleBack }, reports: { onClick: handleReport }\r\n }\r\n }}\r\n sharedProps={{ ...fieldValues, ...reduxVals }} accessPermissions={props.accessPermissions}\r\n\r\n />}\r\n <ExcelExport\r\n data={data}\r\n fileName={title || 'ExcelFile.xlsx'}\r\n ref={_export}\r\n >\r\n <Grid\r\n sortable={true}\r\n reorderable\r\n style={(otherProps && otherProps.style) ? otherProps.style : {\r\n height: props.customizedheight ?\r\n window.innerHeight - props.customizedheight : getHeight(),\r\n width: 'w-90'\r\n }}\r\n resizable\r\n data={data}\r\n total={total}\r\n rowRender={rowRender}\r\n pageable={pageable}\r\n {...dataState}\r\n onDataStateChange={handleDataStateChange}\r\n ref={_grid}\r\n //// detail={props.detail ? DetailComponent : false}\r\n // expandField={\"expanded\"}\r\n // onExpandChange={expandChange}\r\n >\r\n {gridColumns && gridColumns.length > 0 && gridColumns.map((each, index) => {\r\n if (each.hideinexternal && getEnvVariable('AccessPortal') == 'E') {\r\n return null\r\n }\r\n else if (each.show && (each.field == 'UpdatedOn' || each.field == 'UpdatedByName')) return <GridColumn {...each}\r\n filter={each.filter} title={isexport ? each.title : <span className={GridColumnMenuFilter.active(each.field, (dataState && dataState.filter)) ? 'text-primary' : ''}>{each.title}</span>} key={index} width={setWidth(each.title)} cell={e => NoDataDisplay(e, each.field)}\r\n columnMenu={\r\n props =>\r\n <CustomColumnMenu\r\n {...props}\r\n columns={gridColumns}\r\n onColumnsSubmit={onColumnsSubmit}\r\n />\r\n } />\r\n else if (each.show) return <GridColumn {...each} filter={each.filter} key={index} width={setWidth(each.title)}\r\n title={isexport ? each.title : <span className={GridColumnMenuFilter.active(each.field, (dataState && dataState.filter)) ? 'text-primary' : ''}>{each.title}</span>} columnMenu={\r\n props =>\r\n <CustomColumnMenu\r\n {...props}\r\n columns={gridColumns}\r\n onColumnsSubmit={onColumnsSubmit}\r\n />\r\n } />\r\n })}\r\n </Grid>\r\n </ExcelExport>\r\n </div>\r\n ]\r\n}\r\n\r\n\r\nexport default withRouter(useGrid)\r\n\r\n","/**\r\n *********************************************************\r\n Description: Creates drawer on the left side. Needs to be modified to make it generic.\r\n Required props: Used internally by other components.\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\nimport { AppBar, Toolbar } from \"@material-ui/core\";\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport SendIcon from '@material-ui/icons/Send';\r\nimport React, { Component, Fragment } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { getEnvVariable } from '../../../../modules/environmentalList';\r\nimport ProgressBar from '../../../modules/progress-bar';\r\nimport Template from '../../../modules/template/template';\r\nimport { createRequest, requestApi } from '../../helpers/rest';\r\n\r\nclass NotificationEditor extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n open: this.props.openNotificationSlide,\r\n subject: '',\r\n recordDetails: [],\r\n eventDetails: [],\r\n internalNotificationTemplate: {},\r\n externalNotificationTemplate: {},\r\n isNotificationSent: false,\r\n confirmOpen: false,\r\n hasError: false,\r\n isSuccess: false\r\n }\r\n this.TemplateForm = React.createRef()\r\n }\r\n\r\n componentDidMount() {\r\n this.getLatestRecordDataDictionary();\r\n }\r\n\r\n\r\n getLatestRecordDataDictionary() {\r\n //this.progressBar.start()\r\n let siteid = this.props.history ? this.props.match.params.routeid : this.props.sitepermittypeid\r\n let recordid = this.props.history ? this.props.match.params.routeid1 : this.props.recordid\r\n // let applicationdataurl = getEnvVariable('Application')+`/api/Application/FieldValues/${siteid}/${recordid}`\r\n\r\n let applicationdataurl = {\r\n url: getEnvVariable('Application')+`/api/Application/FieldValues/${siteid}/${recordid}`,\r\n type: 'get',\r\n // alert: true,\r\n // loader: true\r\n }\r\n requestApi(createRequest(applicationdataurl)).then(results => {\r\n if (results) {\r\n this.setState({\r\n recordDetails: results\r\n }, () => {\r\n if (this.props.isFieldValueChange && this.props.isFieldValueChange === true) {\r\n this.getLastUpdatedFieldRecords()\r\n } else {\r\n this.getPossibleNotifications()\r\n }\r\n })\r\n }\r\n\r\n })\r\n }\r\n\r\n getLastUpdatedFieldRecords() {\r\n let newurl = {\r\n url: getEnvVariable('Application')+`/api/application/lastUpdatedRecordFields/${this.props.sitepermittypeid}/${this.props.recordid}`,\r\n type: 'get',\r\n // alert: true,\r\n // loader: true\r\n }\r\n // let newurl = getEnvVariable('Application')+`/api/application/lastUpdatedRecordFields/${this.props.sitepermittypeid}/${this.props.recordid}`;\r\n //requestApi({ get: { url: newurl, routeProps: {} } }, null)\r\n requestApi(createRequest(newurl)).then(results => {\r\n if (results) {\r\n this.setState({\r\n eventDetails: results\r\n }, () => this.getPossibleNotifications())\r\n }\r\n })\r\n }\r\n\r\n getPossibleNotifications() {\r\n let siteid = this.props.history ? this.props.match.params.routeid : this.props.sitepermittypeid\r\n let recordid = this.props.history ? this.props.match.params.routeid1 : this.props.recordid\r\n\r\n let getPossibleNotificationURL = getEnvVariable('Hangfire')+`/api/NotificationTrigger/PossibleNotifications`\r\n let eventDetails = {\r\n SubModuleKey: \"APPLICATIONS\",\r\n SitePermitTypeId: siteid,\r\n EventId: recordid,\r\n EventOnKey: this.props.eventonkey || 'FIELD_VALUE_CHANGE',//'FIELD_VALUE_CHANGE',\r\n EventDetails: this.state.eventDetails,\r\n DataDictionary: this.state.recordDetails,\r\n }\r\n let requrl = {\r\n url: getEnvVariable('Hangfire')+`/api/NotificationTrigger/PossibleNotifications`,\r\n type: 'post',\r\n alert: true,\r\n }\r\n // requestApi({ post: { url: getPossibleNotificationURL, routeProps: {} } }, null, eventDetails)\r\n\r\n requestApi(createRequest(requrl, eventDetails)).then(results => {\r\n if (results && results.length > 0) {\r\n let internal = results.filter(a => a.UseType == \"I\")[0]\r\n let external = results.filter(a => a.UseType == \"E\")[0]\r\n this.setState({\r\n internalNotificationTemplate: internal,\r\n externalNotificationTemplate: external\r\n });\r\n //this.progressBar.complete()\r\n } else {\r\n this.setState({ hasError: true });\r\n }\r\n })\r\n }\r\n\r\n handleClose = () => {\r\n if (!this.state.isNotificationSent) {\r\n this.setState({ confirmOpen: true })\r\n } else {\r\n this.setState({ open: false })\r\n }\r\n\r\n }\r\n\r\n handleSave = () => {\r\n this.TemplateForm.current.GetTemplateFormats();\r\n }\r\n\r\n templateEditorSave(returnid) {\r\n // Not required, not saving template records\r\n }\r\n\r\n templateFormatsCallBack(inthis, template) {\r\n // debugger\r\n console.log(template);\r\n inthis.triggerManualNotification(template)\r\n }\r\n\r\n triggerManualNotification(templateformat) {\r\n //let siteid = this.props.history ? this.props.match.params.routeid : this.props.sitepermittypeid\r\n let recordid = this.props.history ? this.props.match.params.routeid1 : this.props.recordid\r\n\r\n let url = getEnvVariable('Hangfire')+`/api/NotificationTrigger/RaiseManualEventNotifications`\r\n\r\n let NotificationTemplateModel = [];\r\n let internal = this.state.internalNotificationTemplate\r\n if (internal && internal.NotificationSettingId && internal.NotificationSettingId > 0) {\r\n internal.NotificationSubject = templateformat.subject;\r\n internal.NotificationContentHTML = templateformat.fileContentHTML;\r\n internal.RefId = recordid;\r\n NotificationTemplateModel.push(this.state.internalNotificationTemplate)\r\n }\r\n let reqtriggerurl = {\r\n url: getEnvVariable('Hangfire')+`/api/NotificationTrigger/RaiseManualEventNotifications`,\r\n type: 'post',\r\n alert: true,\r\n loader: true\r\n }\r\n if (NotificationTemplateModel.length > 0) {\r\n // requestApi({ post: { url: url, routeProps: {} } }, null, NotificationTemplateModel)\r\n requestApi(createRequest(reqtriggerurl, NotificationTemplateModel)).then(results => {\r\n if (results) {\r\n this.setState({ isNotificationSent: true }, () => {\r\n this.handleClose();\r\n })\r\n }\r\n })\r\n }\r\n }\r\n\r\n confirmSave(inthis) {\r\n inthis.setState({ open: false, confirmOpen: false })\r\n if (inthis.props.handleNotificationClose)\r\n inthis.props.handleNotificationClose();\r\n else\r\n this.setState({ isSuccess: true })\r\n }\r\n\r\n confirmClose(inthis) {\r\n inthis.setState({ confirmOpen: false })\r\n }\r\n\r\n render() {\r\n const { classes } = this.props\r\n const { open, confirmOpen, internalNotificationTemplate, recordDetails, hasError, isSuccess } = this.state\r\n return (\r\n <Fragment>\r\n <AppBar position=\"sticky\" color='secondary'>\r\n <Toolbar variant=\"dense\">\r\n Notification\r\n <div className='flex-grow-1' />\r\n <div>\r\n <i className=\"\" onClick={this.handleClose} >\r\n <IconButton title=\"Close\" color=\"inherit\">\r\n <CloseIcon fontSize=\"small\" />\r\n </IconButton>\r\n </i>\r\n <i className=\"\" onClick={this.handleSave} >\r\n <IconButton title=\"Send\" color=\"inherit\">\r\n <SendIcon fontSize=\"small\" />\r\n </IconButton>\r\n </i>\r\n </div>\r\n </Toolbar>\r\n </AppBar>\r\n <div> <ProgressBar ref={e => this.progressBar = e} /></div>\r\n <div className=\"col-12\">\r\n <Typography variant=\"subtitle2\" gutterBottom>\r\n Following notification content is generated based on settings. You can modify notification subject and body before sending.\r\n </Typography>\r\n {hasError && <div style={{ color: 'red' }}> No related notification settings found</div>}\r\n {isSuccess && <div style={{ color: 'green' }}> ****************************Notification sent successfully !!**********************************</div>}\r\n <Template ref={this.TemplateForm}\r\n handleTemplateId={this.templateEditorSave}\r\n entryData={recordDetails}\r\n parentid={(internalNotificationTemplate && internalNotificationTemplate.TemplateId) ? internalNotificationTemplate.TemplateId : 0}\r\n isAdmin={false}\r\n templateId={0}\r\n isEnabled={true}\r\n hasSubject={true}\r\n templateFormatsCallBack={(data) => this.templateFormatsCallBack(this, data)}\r\n canDownload={false}\r\n />\r\n {/* {confirmOpen && <ConfirmationDialog open={true}\r\n description={\"Are you sure, you don't want to send this notification ? \"}\r\n title={\"Cancel sending notification\"}\r\n onSubmit={() => this.confirmSave(this)}\r\n onClose={() => this.confirmClose(this)}\r\n labels={[\"Don't Send\", \"Cancel\"]}\r\n />} */}\r\n </div>\r\n </Fragment>\r\n )\r\n }\r\n\r\n}\r\n\r\nexport default (withRouter)(NotificationEditor);","import React, { Fragment } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport SaveIcon from '@material-ui/icons/Save';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport ClearIcon from '@material-ui/icons/Close'\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n flexGrow: 1,\r\n },\r\n menuButton: {\r\n marginRight: theme.spacing(2),\r\n },\r\n}));\r\n\r\nexport default function (props) {\r\n const { title, icon, text, name, handleCloseClick, handleSaveClick, extraProps } = props;\r\n const { save, clear, color } = extraProps\r\n const classes = useStyles();\r\n return (\r\n <div className={classes.root}>\r\n <AppBar position=\"static\" color={color}>\r\n <Toolbar variant=\"dense\">\r\n <div>\r\n {title}\r\n </div>\r\n <div className='flex-grow-1' />\r\n {save && <IconButton color=\"inherit\" aria-label=\"menu\" edge=\"end\" onClick={handleSaveClick}>\r\n <SaveIcon />\r\n </IconButton>}\r\n {clear && <IconButton color=\"inherit\" aria-label=\"menu\" edge=\"end\" onClick={handleCloseClick}>\r\n <ClearIcon />\r\n </IconButton>\r\n }\r\n </Toolbar>\r\n\r\n </AppBar>\r\n\r\n {/* <div className=\"fw-bold\"></div>\r\n <Button\r\n variant=\"contained\"\r\n color=\"primary\"\r\n size=\"small\"\r\n className={\"float-md-right\"}\r\n startIcon={<SaveIcon />}\r\n\r\n name={name}\r\n >\r\n {text}\r\n </Button> */}\r\n </div>\r\n )\r\n\r\n}","import React, { Component, Fragment } from 'react';\r\nimport { getEnvVariable } from '../../../../modules/environmentalList';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { requestApi } from '../../../modules/form/utilities';\r\nimport { GetAppDownloadTableDetails } from './appdownloadscustomdata';\r\nimport { createRequest, requestApi as RequestNewApi } from '../../helpers/rest';\r\nimport Cgridheader from '../../../modules/Grid/cgridheader';\r\nimport { GetData } from '../../helpers/requests';\r\n\r\n// const editorheight = {\r\n// height: '900px'\r\n// }\r\n\r\n\r\nconst headerProps = {\r\n title: \"Project Downloads\",\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\":getEnvVariable('TitleKey')+` Settings`, \"tab\": 2, \"materialicon\": \"spellcheck\", href: getEnvVariable('InternalBasepath'), className: 'breadcrumb-item text-dark', class: 'text-dark' },\r\n { \"link\": \"Project Downloads\", href: \"#/\", \"materialicon\": \"download\", className: 'breadcrumb-item', class: 'text-light' }\r\n ],\r\n }\r\n ],\r\n}\r\nclass AppDownloads extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n this.state = {\r\n mergeData: [],\r\n mentions: [],\r\n loadData: false,\r\n sidebartables: [],\r\n sidebartablementionoptions: [],\r\n iframeoptions: {}\r\n }\r\n this.frameView = React.createRef()\r\n }\r\n\r\n componentDidMount() {\r\n console.log(\"iframe is here\")\r\n let inthis = this\r\n let modulesData\r\n let sitePermitTypesData\r\n window.addEventListener('message', (msg) => this.messageHandler(msg, inthis));\r\n let read = [\r\n\r\n {\r\n url: getEnvVariable('MasterAdmin') + `/api/module/` + getEnvVariable('ModuleKey') + `/submodule/All/Active/IsConfigurable`,\r\n type: 'get'\r\n },\r\n {\r\n url: getEnvVariable('AdminConfig') + `/api/SitePermitTypes/SubModuleKey/Active`,\r\n type: 'get'\r\n },\r\n\r\n ]\r\n Promise.all(read.map(each => RequestNewApi(createRequest(each, {}, null)).catch(error => { return error; }))).then(resp => {\r\n const [modulesdata, sitepermittypesdata] = resp\r\n if (modulesdata) {\r\n console.log(modulesdata);\r\n modulesData = modulesdata;\r\n }\r\n if (sitepermittypesdata) {\r\n console.log(sitepermittypesdata);\r\n sitePermitTypesData = sitepermittypesdata;\r\n }\r\n if (modulesData != null && modulesData != undefined && sitePermitTypesData != null && sitePermitTypesData != undefined)\r\n inthis.dataMerge(modulesData, sitePermitTypesData);\r\n })\r\n\r\n }\r\n\r\n\r\n dataMerge = (modulesData, sitePermitTypesData) => {\r\n let entitydata = []\r\n for (var i = 0; i < modulesData.length; i++) {\r\n for (var j = 0; j < sitePermitTypesData.length; j++) {\r\n if (modulesData[i].Key == sitePermitTypesData[j].SubModuleKey) {\r\n entitydata.push({\r\n \"Key\": modulesData[i].Key + \"(\" + sitePermitTypesData[j].Name + \")\",\r\n \"Value\": modulesData[i].Key + \"(\" + sitePermitTypesData[j].Name + \")\",\r\n \"Label\": modulesData[i].Key + \"(\" + sitePermitTypesData[j].Name + \")\",\r\n \"Module\": \"1\",\r\n \"SubModule\": \"1\",\r\n \"DownloadId\": \"1\",\r\n \"Group\": modulesData[i].Key + \"(\" + sitePermitTypesData[j].Name + \")\",\r\n \"SitePermitTypeId\": sitePermitTypesData[j].Id\r\n })\r\n }\r\n }\r\n\r\n }\r\n //Pushing Additional Data for Invoices data\r\n entitydata.push({\r\n \"Key\": \"Invoices\", \"Value\": \"Invoices\", \"Label\": \"Invoices\", \"Module\": \"1\",\r\n \"SubModule\": \"1\", \"DownloadId\": \"1\", \"Group\": \"Invoices\", \"SitePermitTypeId\": \"Invoice\"\r\n })\r\n entitydata.push({\r\n \"Key\": \"InvoiceLineItems\", \"Value\": \"InvoiceLineItems\", \"Label\": \"InvoiceLineItems\", \"Module\": \"1\",\r\n \"SubModule\": \"1\", \"DownloadId\": \"1\", \"Group\": \"InvoiceLineItems\", \"SitePermitTypeId\": \"Invoice\"\r\n })\r\n entitydata.push({\r\n \"Key\": \"InvoiceDetails\", \"Value\": \"InvoiceDetails\", \"Label\": \"InvoiceDetails\", \"Module\": \"1\",\r\n \"SubModule\": \"1\", \"DownloadId\": \"1\", \"Group\": \"InvoiceDetails\", \"SitePermitTypeId\": \"Invoice\"\r\n })\r\n entitydata.push({\r\n \"Key\": \"BillingPaymentDetails\", \"Value\": \"BillingPaymentDetails\", \"Label\": \"BillingPaymentDetails\", \"Module\": \"1\",\r\n \"SubModule\": \"1\", \"DownloadId\": \"1\", \"Group\": \"BillingPaymentDetails\", \"SitePermitTypeId\": \"Invoice\"\r\n })\r\n\r\n this.setState({ mergeData: entitydata, loadData: true });\r\n }\r\n\r\n messageHandler(message, inthis) {\r\n try {\r\n if (inthis.frameView && inthis.frameView.contentWindow) {\r\n if (message.data === 'Initialized')\r\n inthis.frameView.contentWindow.postMessage({ prop: { ...inthis.iframeProps() } }, \"*\")\r\n if (message.data && message.data.messagetype == 'RecordSelected') {\r\n let ifrmaopt = inthis.iframeProps();\r\n ifrmaopt.id = message.data.id;\r\n inthis.frameView.contentWindow.postMessage({ prop: { ...ifrmaopt } }, \"*\")\r\n }\r\n if (message.data && message.data.messagetype == 'templateformat') {\r\n inthis.formatsCallBack()\r\n let ifrmaopt = inthis.iframeProps();\r\n ifrmaopt.id = message.data.id;\r\n inthis.frameView.contentWindow.postMessage({ prop: { ...ifrmaopt } }, \"*\")\r\n }\r\n if (message.data && message.data.messagetype == 'seldownloadmodule') {\r\n let seldownloadmodule = message.data.seldownloadmodule;\r\n let ifrmaopt\r\n let filterSitePermitType = this.state.mergeData.filter(b => b.Key == seldownloadmodule)[0];\r\n let ifrmaOpts\r\n let SubmoduleKey = filterSitePermitType.Key.split('(')\r\n let url = getEnvVariable('Application') + `/api/SubModuleSideBar/All/` + SubmoduleKey[0]\r\n GetData(url).then(resp => {\r\n //TBD-Moving to services\r\n //Specific to custom and invoice tables\r\n let sidebarlist = this.getSideBarItems(resp, filterSitePermitType.SitePermitTypeId)\r\n if (filterSitePermitType.SitePermitTypeId == \"Invoice\") {\r\n let values = GetAppDownloadTableDetails(seldownloadmodule)\r\n ifrmaOpts = this.iframeProps();\r\n ifrmaOpts.mentions = values;\r\n ifrmaopt = ifrmaOpts;\r\n ifrmaopt.module = seldownloadmodule\r\n ifrmaopt.sidebartables = sidebarlist || []\r\n this.setState({ iframeoptions: ifrmaopt, sidebartables: sidebarlist, filterSitePermitType: filterSitePermitType }, () => {\r\n inthis.frameView.contentWindow.postMessage({ prop: { ...ifrmaopt } }, \"*\")\r\n })\r\n\r\n } else {\r\n var sourceURL = getEnvVariable('Application') + \"/api/Application/Fields/\" + filterSitePermitType.SitePermitTypeId;//+ \"?table=Images\";\r\n let arr = []\r\n arr.push(this.GetDataPromise(sourceURL))\r\n\r\n Promise.all(arr).then((values) => {\r\n if (Array.isArray(values)) {\r\n ifrmaOpts = this.iframeProps();\r\n ifrmaOpts = { ...ifrmaOpts, ...this.state.iframeoptions }\r\n ifrmaOpts.mentions = values[0];\r\n ifrmaopt = ifrmaOpts;\r\n ifrmaopt.module = seldownloadmodule\r\n ifrmaopt.sidebartables = sidebarlist || []//this.getSideBarItems(filterSitePermitTypeID);\r\n this.setState({ iframeoptions: ifrmaopt, sidebartables: sidebarlist, filterSitePermitType: filterSitePermitType }, () => {\r\n inthis.frameView.contentWindow.postMessage({ prop: { ...ifrmaopt } }, \"*\")\r\n })\r\n }\r\n });\r\n }\r\n\r\n })\r\n\r\n //TBD-Moving to services\r\n //Specific to custom and invoice tables\r\n\r\n } if (message.data && message.data.messagetype == 'sidebartablesel') {\r\n let seltable = message.data.result;\r\n console.log('Sidebar tables data to be populated-' + seltable);\r\n let ifrmaOpts = this.iframeProps();\r\n ifrmaOpts = { ...ifrmaOpts, ...this.state.iframeoptions }\r\n this.getSideBarTableMentionOptionsAsync(seltable).then(sidebarres => {\r\n // ifrmaOpts.sidebartablementionoptions = sidebarres;\r\n ifrmaOpts.mentions=sidebarres\r\n inthis.frameView.contentWindow.postMessage({ prop: { ...ifrmaOpts } }, \"*\")\r\n })\r\n //ifrmaOpts.sidebartablementionoptions = this.getSideBarTableMentionOptionsAsync(seltable) //this.getSideBarTableMentionOptions(seltable);\r\n //inthis.frameView.contentWindow.postMessage({ prop: { ...ifrmaOpts } }, \"*\")\r\n }\r\n else if (message.data && message.data.id)\r\n inthis.callBack(message.data)\r\n }\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n }\r\n\r\n\r\n\r\n getSideBarItems(sidebars, sitepermittypeid) {\r\n let arr = []\r\n sidebars.forEach(element => {\r\n arr.push({ \"Key\": element.Key, \"Value\": element.TableName, \"Label\": element.SidebarTittle, \"Module\": \"1\", \"SubModule\": \"1\", \"DownloadId\": \"1\", \"Group\": element.Key, \"SitePermitTypeId\": sitepermittypeid })\r\n })\r\n // arr.push({ \"Key\": \"Notes\", \"Value\": \"Notes\", \"Label\": \"Notes\", \"Module\": \"1\", \"SubModule\": \"1\", \"DownloadId\": \"1\", \"Group\": \"Notes\", \"SitePermitTypeId\": sitepermittypeid })\r\n // //arr.push({ \"Key\":\"Volunteers\",\"Value\": \"Volunteers\",\"Label\": \"Volunteers\",\"Module\": \"1\", \"SubModule\": \"1\", \"DownloadId\": \"1\", \"Group\": \"Volunteers\",\"SitePermitTypeId\": sitepermittypeid })\r\n // //arr.push({ \"Key\":\"Attachments\",\"Value\": \"Attachments\",\"Label\": \"Attachments\",\"Module\": \"1\", \"SubModule\": \"1\", \"DownloadId\": \"1\", \"Group\": \"Attachments\",\"SitePermitTypeId\": sitepermittypeid })\r\n // //arr.push({ \"Key\":\"AttachmentDetails\",\"Value\": \"AttachmentDetails\",\"Label\": \"AttachmentDetails\",\"Module\": \"1\", \"SubModule\": \"1\", \"DownloadId\": \"1\", \"Group\": \"AttachmentDetails\",\"SitePermitTypeId\": sitepermittypeid })\r\n // //arr.push({ \"Key\":\"Images\",\"Value\": \"Images\",\"Label\": \"Images\",\"Module\": \"1\", \"SubModule\": \"1\", \"DownloadId\": \"1\", \"Group\": \"Images\",\"SitePermitTypeId\": sitepermittypeid })\r\n // arr.push({ \"Key\": \"AppWorkNotification\", \"Value\": \"AppWorkNotification\", \"Label\": \"AppWorkNotification\", \"Module\": \"1\", \"SubModule\": \"1\", \"DownloadId\": \"1\", \"Group\": \"AppWorkNotification\", \"SitePermitTypeId\": sitepermittypeid })\r\n // arr.push({ \"Key\": \"WorkNotifVolunteers\", \"Value\": \"WorkNotifVolunteers\", \"Label\": \"WorkNotifVolunteers\", \"Module\": \"1\", \"SubModule\": \"1\", \"DownloadId\": \"1\", \"Group\": \"WorkNotifVolunteers\", \"SitePermitTypeId\": sitepermittypeid })\r\n // \r\n return arr;\r\n }\r\n\r\n getSideBarTableMentionOptionsAsync(tablename) {\r\n // var sourceURL = getEnvVariable('Application') + \"/api/Application/SidebarFields/\" + tablename;\r\n var sourceURL = getEnvVariable('Application') + \"/api/Application/Fields/\" + this.state.filterSitePermitType.SitePermitTypeId + \"?table=\" + tablename;\r\n return new Promise((resolve, reject) => {\r\n requestApi({ get: { url: sourceURL } }, null, null).then(results => {\r\n if (results)\r\n resolve(results)\r\n }).catch(ex => {\r\n resolve([])\r\n })\r\n })\r\n }\r\n\r\n getSideBarTableMentionOptions() {\r\n return [\r\n { \"Key\": \"Id\", \"Label\": \"Id\", \"IsTemplate\": false, \"TemplateId\": null, \"Value\": \"Id\", \"Section\": \"AppWorkNotification\" },\r\n { \"Key\": \"Comments\", \"Label\": \"Comments\", \"IsTemplate\": false, \"TemplateId\": null, \"Value\": \"Comments\", \"Section\": \"AppWorkNotification\" },\r\n { \"Key\": \"RefId\", \"Label\": \"RefId\", \"IsTemplate\": false, \"TemplateId\": null, \"Value\": \"RefId\", \"Section\": \"AppWorkNotification\" },\r\n { \"Key\": \"RefType\", \"Label\": \"RefType\", \"IsTemplate\": false, \"TemplateId\": null, \"Value\": \"RefType\", \"Section\": \"AppWorkNotification\" },\r\n { \"Key\": \"StartTime\", \"Label\": \"StartTime\", \"IsTemplate\": false, \"TemplateId\": null, \"Value\": \"StartTime\", \"Section\": \"AppWorkNotification\" },\r\n { \"Key\": \"ReasonNo\", \"Label\": \"ReasonNo\", \"IsTemplate\": false, \"TemplateId\": null, \"Value\": \"ReasonNo\", \"Section\": \"AppWorkNotification\" },\r\n { \"Key\": \"InternalComments\", \"Label\": \"InternalComments\", \"IsTemplate\": false, \"TemplateId\": null, \"Value\": \"InternalComments\", \"Section\": \"AppWorkNotification\" },\r\n { \"Key\": \"WorkApproved\", \"Label\": \"WorkApproved\", \"IsTemplate\": false, \"TemplateId\": null, \"Value\": \"WorkApproved\", \"Section\": \"AppWorkNotification\" },\r\n { \"Key\": \"VolunteerName\", \"Label\": \"VolunteerName\", \"IsTemplate\": false, \"TemplateId\": null, \"Value\": \"VolunteerName\", \"Section\": \"AppWorkNotification\" },\r\n { \"Key\": \"NameOfMinor\", \"Label\": \"NameOfMinor\", \"IsTemplate\": false, \"TemplateId\": null, \"Value\": \"NameOfMinor\", \"Section\": \"AppWorkNotification\" },\r\n { \"Key\": \"SignDate\", \"Label\": \"SignDate\", \"IsTemplate\": false, \"TemplateId\": null, \"Value\": \"SignDate\", \"Section\": \"AppWorkNotification\" },\r\n { \"Key\": \"IsMinor\", \"Label\": \"IsMinor\", \"IsTemplate\": false, \"TemplateId\": null, \"Value\": \"IsMinor\", \"Section\": \"AppWorkNotification\" },\r\n ]\r\n }\r\n\r\n\r\n callBack(callbackdata) {\r\n console.log(callbackdata);\r\n }\r\n\r\n formatsCallBack(callbackdata) {\r\n console.log(callbackdata);\r\n }\r\n\r\n GetDataPromise = (sourceURL) => {\r\n return new Promise((resolve, reject) => {\r\n requestApi({ get: { url: sourceURL } }, null, null).then(results => {\r\n if (results)\r\n resolve(results)\r\n\r\n }).catch(ex => {\r\n resolve([])\r\n })\r\n })\r\n }\r\n\r\n iframeProps() {\r\n let access_token = localStorage.access_token\r\n let iframeoptions = {\r\n mentions: this.state.mentions,\r\n isAdmin: true,\r\n id: 0,\r\n parentid: 0,\r\n callBack: this.templateCallBack,\r\n entryData: this.state.entrydata,\r\n isEnabled: true,\r\n canDownload: true,\r\n save: false,\r\n showhistory: true,\r\n fields: [{}],\r\n fullheight: true,\r\n project: getEnvVariable('ModuleKey'),\r\n downloadmodules: this.state.mergeData,\r\n module: '',\r\n useraccesstoken: access_token,\r\n sidebartables: this.state.sidebartables,\r\n sidebartablementionoptions: this.state.sidebartablementionoptions\r\n }\r\n return iframeoptions;\r\n }\r\n\r\n resizeIframe(obj) {\r\n console.log(obj.style.height)\r\n console.log(obj.contentWindow.document.documentElement.scrollHeight)\r\n }\r\n\r\n\r\n render() {\r\n let inthis = this;\r\n let src = (getEnvVariable('ModuleKey') == \"UPS\") ? 'https://development.delasoft.com:8443/UPS-appdownloads/#/' : getEnvVariable('AppDownloadUI');\r\n return (\r\n <div>\r\n <Cgridheader headerProps={headerProps} />\r\n {this.state.loadData == true ?\r\n (<iframe id='appdownload-editor' src={src} ref={(f) => { this.frameView = f }}\r\n frameBorder=\"0\"\r\n marginHeight=\"0\"\r\n marginWidth=\"0\"\r\n width=\"100%\"\r\n height={window.innerHeight - 150}\r\n title='Download Templates'\r\n scrolling=\"auto\"\r\n onload={(e) => this.resizeIframe(e)} >\r\n </iframe>) : ('Loading...')}\r\n </div>\r\n )\r\n }\r\n}\r\nexport default withRouter(AppDownloads);\r\n","export function GetAppDownloadTableDetails(tablename){\r\n switch(tablename) {\r\n case \"Invoices\":\r\n return Invoice();\r\n case \"InvoiceLineItems\":\r\n return InvoiceLineItems();\r\n case \"InvoiceDetails\":\r\n return InvoiceDetails();\r\n case \"InvoicePayments\":\r\n case \"BillingPaymentDetails\":\r\n return BillingPaymentDetails();\r\n default:\r\n return [];\r\n }\r\n}\r\n\r\nfunction Invoice(){\r\n return [\r\n //{\"Key\":\"ADDRESS_LINE_1\",\"Label\":\"Address Line 1\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"Address Line 1\",\"Section\":\"Applicant Information\"}\r\n {\"Key\":\"Id\",\"Label\":\"Id\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"Id\",\"Section\":\"Invoices\"},\r\n {\"Key\":\"InvoiceTypeKey\",\"Label\":\"InvoiceTypeKey\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"InvoiceTypeKey\",\"Section\":\"Invoices\"},\r\n {\"Key\":\"InvoiceDate\",\"Label\":\"InvoiceDate\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"InvoiceDate\",\"Section\":\"Invoices\"},\r\n {\"Key\":\"Status\",\"Label\":\"Status\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"Status\",\"Section\":\"Invoices\"},\r\n {\"Key\":\"PaymentReferenceId\",\"Label\":\"PaymentReferenceId\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"PaymentReferenceId\",\"Section\":\"Invoices\"},\r\n {\"Key\":\"DueDate\",\"Label\":\"DueDate\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"DueDate\",\"Section\":\"Invoices\"},\r\n {\"Key\":\"InvoiceType\",\"Label\":\"InvoiceType\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"InvoiceType\",\"Section\":\"Invoices\"}, \r\n {\"Key\":\"CreatedBy\",\"Label\":\"CreatedBy\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"CreatedBy\",\"Section\":\"Invoices\"},\r\n {\"Key\":\"CreatedOn\",\"Label\":\"CreatedOn\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"CreatedOn\",\"Section\":\"Invoices\"},\r\n {\"Key\":\"UpdatedBy\",\"Label\":\"UpdatedBy\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"UpdatedBy\",\"Section\":\"Invoices\"},\r\n {\"Key\":\"UpdatedOn\",\"Label\":\"UpdatedOn\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"UpdatedOn\",\"Section\":\"Invoices\"}, \r\n {\"Key\":\"CreatedByName\",\"Label\":\"CreatedByName\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"CreatedByName\",\"Section\":\"Invoices\"},\r\n {\"Key\":\"UpdatedByName\",\"Label\":\"UpdatedByName\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"UpdatedByName\",\"Section\":\"Invoices\"},\r\n {\"Key\":\"PermitNumber\",\"Label\":\"PermitNumber\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"PermitNumber\",\"Section\":\"Invoices\"},\r\n {\"Key\":\"ApplicantId\",\"Label\":\"ApplicantId\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"ApplicantId\",\"Section\":\"Invoices\"},\r\n {\"Key\":\"ApplicantName\",\"Label\":\"ApplicantName\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"ApplicantName\",\"Section\":\"Invoices\"},\r\n {\"Key\":\"District\",\"Label\":\"District\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"District\",\"Section\":\"Invoices\"},\r\n {\"Key\":\"SubmittedDate\",\"Label\":\"SubmittedDate\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"SubmittedDate\",\"Section\":\"Invoices\"},\r\n {\"Key\":\"AuthorizedBy\",\"Label\":\"AuthorizedBy\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"AuthorizedBy\",\"Section\":\"Invoices\"},\r\n {\"Key\":\"InvoiceDateFormat\",\"Label\":\"InvoiceDateFormat\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"InvoiceDateFormat\",\"Section\":\"Invoices\"},\r\n {\"Key\":\"InvoiceDueDateFormat\",\"Label\":\"InvoiceDueDateFormat\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"InvoiceDueDateFormat\",\"Section\":\"Invoices\"},\r\n {\"Key\":\"InvoiceStatusFormat\",\"Label\":\"InvoiceStatusFormat\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"InvoiceStatusFormat\",\"Section\":\"Invoices\"},\r\n {\"Key\":\"InvoiceTotalAmount\",\"Label\":\"InvoiceTotalAmount\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"InvoiceTotalAmount\",\"Section\":\"Invoices\"},\r\n {\"Key\":\"InvoicePaidAmount\",\"Label\":\"InvoicePaidAmount\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"InvoicePaidAmount\",\"Section\":\"Invoices\"},\r\n ]\r\n}\r\n\r\nfunction InvoiceLineItems(){\r\n return [ \r\n {\"Key\":\"Id\",\"Label\":\"Id\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"Id\",\"Section\":\"InvoiceLineItems\"},\r\n {\"Key\":\"RefId\",\"Label\":\"RefId\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"RefId\",\"Section\":\"InvoiceLineItems\"},\r\n {\"Key\":\"RefType\",\"Label\":\"RefType\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"RefType\",\"Section\":\"InvoiceLineItems\"},\r\n {\"Key\":\"OwnerId\",\"Label\":\"OwnerId\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"OwnerId\",\"Section\":\"InvoiceLineItems\"} \r\n ]\r\n}\r\n\r\nfunction InvoiceDetails(){\r\n return [ \r\n {\"Key\":\"Id\",\"Label\":\"Id\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"Id\",\"Section\":\"InvoiceDetails\"},\r\n {\"Key\":\"InvoiceId\",\"Label\":\"InvoiceId\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"InvoiceId\",\"Section\":\"InvoiceDetails\"},\r\n {\"Key\":\"Name\",\"Label\":\"Name\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"Name\",\"Section\":\"InvoiceDetails\"},\r\n {\"Key\":\"Description\",\"Label\":\"Description\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"Description\",\"Section\":\"InvoiceDetails\"},\r\n {\"Key\":\"Amount\",\"Label\":\"Amount\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"Amount\",\"Section\":\"InvoiceDetails\"} \r\n ]\r\n}\r\n\r\nfunction BillingPaymentDetails(){\r\n return [ \r\n {\"Key\":\"InvoiceId\",\"Label\":\"InvoiceId\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"invoiceId\",\"Section\":\"BillingPaymentDetails\"},\r\n {\"Key\":\"OwnerId\",\"Label\":\"OwnerId\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"ownerId\",\"Section\":\"BillingPaymentDetails\"},\r\n {\"Key\":\"Type\",\"Label\":\"Type\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"type\",\"Section\":\"BillingPaymentDetails\"},\r\n {\"Key\":\"Status\",\"Label\":\"Status\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"status\",\"Section\":\"BillingPaymentDetails\"},\r\n {\"Key\":\"TransactionDate\",\"Label\":\"TransactionDate\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"transactionDate\",\"Section\":\"BillingPaymentDetails\"},\r\n {\"Key\":\"TransactionId\",\"Label\":\"TransactionId\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"transactionId\",\"Section\":\"BillingPaymentDetails\"},\r\n {\"Key\":\"TotalAmount\",\"Label\":\"TotalAmount\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"totalAmount\",\"Section\":\"BillingPaymentDetails\"},\r\n {\"Key\":\"PayeeName\",\"Label\":\"PayeeName\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"payeeName\",\"Section\":\"BillingPaymentDetails\"},\r\n {\"Key\":\"PayeeAddressLine1\",\"Label\":\"PayeeAddressLine1\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"payeeAddressLine1\",\"Section\":\"BillingPaymentDetails\"},\r\n {\"Key\":\"PayeeAddressLine2\",\"Label\":\"PayeeAddressLine2\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"payeeAddressLine2\",\"Section\":\"BillingPaymentDetails\"},\r\n {\"Key\":\"PayeeCity\",\"Label\":\"PayeeCity\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"payeeCity\",\"Section\":\"BillingPaymentDetails\"},\r\n {\"Key\":\"PayeeState\",\"Label\":\"PayeeState\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"payeeState\",\"Section\":\"BillingPaymentDetails\"},\r\n {\"Key\":\"PayeeZip\",\"Label\":\"PayeeZip\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"payeeZip\",\"Section\":\"BillingPaymentDetails\"},\r\n {\"Key\":\"PayeeEmail\",\"Label\":\"PayeeEmail\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"payeeEmail\",\"Section\":\"BillingPaymentDetails\"},\r\n\r\n {\"Key\":\"PayeeLastName\",\"Label\":\"PayeeLastName\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"payeeLastName\",\"Section\":\"BillingPaymentDetails\"},\r\n {\"Key\":\"CheckNumber\",\"Label\":\"CheckNumber\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"checkNumber\",\"Section\":\"BillingPaymentDetails\"},\r\n {\"Key\":\"CheckDepositNumber\",\"Label\":\"CheckDepositNumber\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"checkDepositNumber\",\"Section\":\"BillingPaymentDetails\"},\r\n {\"Key\":\"CheckBankNumber\",\"Label\":\"CheckBankNumber\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"checkBankNumber\",\"Section\":\"BillingPaymentDetails\"},\r\n {\"Key\":\"CheckDepositDate\",\"Label\":\"CheckDepositDate\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"checkDepositDate\",\"Section\":\"BillingPaymentDetails\"},\r\n {\"Key\":\"CheckDepositedBy\",\"Label\":\"CheckDepositedBy\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"checkDepositedBy\",\"Section\":\"BillingPaymentDetails\"},\r\n {\"Key\":\"CheckMemo\",\"Label\":\"CheckMemo\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"checkMemo\",\"Section\":\"BillingPaymentDetails\"},\r\n \r\n \r\n ]\r\n}\r\n\r\nfunction InvoicePayments(){\r\n return [ \r\n {\"Key\":\"Id\",\"Label\":\"Id\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"Id\",\"Section\":\"InvoicePayments\"},\r\n {\"Key\":\"Type\",\"Label\":\"Type\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"Type\",\"Section\":\"InvoicePayments\"},\r\n {\"Key\":\"Name\",\"Label\":\"Name\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"Name\",\"Section\":\"InvoicePayments\"},\r\n {\"Key\":\"Description\",\"Label\":\"Description\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"Description\",\"Section\":\"InvoicePayments\"},\r\n {\"Key\":\"Amount\",\"Label\":\"Amount\",\"IsTemplate\":false,\"TemplateId\":null,\"Value\":\"Amount\",\"Section\":\"InvoicePayments\"} \r\n ]\r\n}","import Accordion from '@material-ui/core/Accordion';\r\nimport AccordionDetails from '@material-ui/core/AccordionDetails';\r\nimport AccordionSummary from '@material-ui/core/AccordionSummary';\r\nimport Box from '@material-ui/core/Box';\r\nimport ButtonGroup from '@material-ui/core/ButtonGroup';\r\nimport Chip from '@material-ui/core/Chip';\r\nimport Fab from '@material-ui/core/Fab';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport DownIcon from '@material-ui/icons/ArrowDownward';\r\nimport UpIcon from '@material-ui/icons/ArrowUpward';\r\nimport RightIcon from '@material-ui/icons/Check';\r\nimport WrongIcon from '@material-ui/icons/Close';\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\r\nimport SaveIcon from '@material-ui/icons/Save';\r\nimport { useEffect, useState } from 'react';\r\nimport QueryBuilder, { formatQuery as Formatter } from 'react-querybuilder';\r\nimport { useParams } from 'react-router-dom';\r\nimport { getEnvVariable } from '../../../../modules/environmentalList';\r\nimport { DeleteRecord, GetData, PostData, PutData } from '../../helpers/requests';\r\nimport { createRequest, requestApi } from '../../helpers/rest';\r\nimport Dropdown from '../dropdown';\r\nimport Label from '../label';\r\nimport Switch from '../switch';\r\nimport Textbox from '../textbox';\r\nimport CalcualtedQueryBuilder from '../../../../core/modules/dnd/widgets/validationrules/mainquerybuilder'\r\nimport CheckboxesTags from '../checkautocomplete';\r\n//import { materialControlElements } from '@react-querybuilder/material';\r\nconst _ = require('lodash');\r\n\r\nconst extraProps = {\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Id'\r\n }\r\n}\r\n\r\nconst transformProps = {\r\n \"A\": true,\r\n \"I\": false,\r\n true: \"A\",\r\n false: \"I\"\r\n}\r\n\r\nexport default function TemplateBusinessRule({ fieldValues }) {\r\n const [expanded, setExpanded] = useState(false);\r\n const [list, setList] = useState([])\r\n const [current, setCurrent] = useState({})\r\n const [fields, setFields] = useState([])\r\n const [templates, setTemplates] = useState([])\r\n const [notices, setNotices] = useState([])\r\n const [add, setAdd] = useState(false)\r\n const [reload, setReload] = useState(false)\r\n const [errorlist,setErrorList] = useState({})\r\n const params = useParams();\r\n\r\n\r\n useEffect(() => {\r\n const business = [\r\n {\r\n url: getEnvVariable('Sidebar') + `/api/BusinessRules/Builder?SitePermitTypeId=${fieldValues['editInfo']['SitePermitType']}`,\r\n type: 'get'\r\n },\r\n {\r\n url: getEnvVariable('TemplateAPI') + `/api/MasterTemplates/All/SubModuleKey/Active/${fieldValues['editInfo']['SitePermitType']}/${fieldValues['editInfo']['SubModuleKey']}`,\r\n type: 'get'\r\n },\r\n {\r\n url: getEnvVariable('Admin') + `/api/NoticeTypes/All/Active`,\r\n type: 'get'\r\n },\r\n ]\r\n Promise.all(business.map(each => requestApi(createRequest(each, {}, null)).catch(error => { return error; }))).then(resp => {\r\n const [field, template, notice] = resp;\r\n setFields(field)\r\n setTemplates(template)\r\n setNotices(notice.filter(each => each.Id.toString() !== params.mid))\r\n getData()\r\n }).catch(ex => {\r\n console.error(ex)\r\n })\r\n }, [])\r\n\r\n const getData = () => {\r\n let url = getEnvVariable('TemplateAPI') + `/api/TemplateBusinessRules/AllNoticeTypeBR/${fieldValues['editInfo']['Id']}`\r\n GetData(url).then(resp => {\r\n let temp = resp.sort((a, b) => a.SectionOrder - b.SectionOrder).map(each => {\r\n if (each.JsonQueryStr && each.JsonQueryStr !== '')\r\n each['ISQuery'] = 'A'\r\n else each['ISQuery'] = 'I'\r\n return each\r\n })\r\n setList(temp)\r\n setReload(!reload)\r\n }).catch(ex => {\r\n console.error(ex)\r\n })\r\n }\r\n\r\n const handleFieldValue = (idx = -1, evt = {}, nested = null) => {\r\n const { name, value } = evt.target\r\n let temp = add ? current : list[idx];\r\n let tempLists = list\r\n if (nested)\r\n if (temp[nested])\r\n temp[nested][name] = value;\r\n else {\r\n temp[nested] = {}\r\n temp[nested][name] = value;\r\n }\r\n else temp[name] = value;\r\n if (idx === -1 && add) {\r\n setCurrent(temp)\r\n }\r\n else {\r\n tempLists[idx] = temp\r\n setList(tempLists)\r\n }\r\n setReload(!reload)\r\n }\r\n\r\n const handleSave = () => {\r\n let result = current;\r\n result.Status = add ? 'A' : result.Status\r\n result.RefId = add ? params.mid : result.RefId\r\n // result.jsonQueryStr = JSON.stringify(result.jsonQuery)\r\n result.JsonQuery = JSON.stringify(result.jsonQuery)\r\n result.SqlQuery = result.JsonQueryStr ? Formatter(JSON.parse(result.JsonQueryStr), 'sql') : null\r\n let url = ''\r\n if (add) {\r\n url = getEnvVariable('TemplateAPI') + `/api/TemplateBusinessRules/AddNoticeTypeTemplateBR/${result.RefId}`;\r\n PostData(url, result).then(resp => {\r\n setAdd(false);\r\n getData()\r\n }).catch(errors => {\r\n console.log(errors)\r\n errors.then(err => {\r\n \r\n if (err['Name']) {\r\n setErrorList({ errorYN: true, helperText: err['Name'][0] });\r\n console.log(errorlist)\r\n }\r\n \r\n })\r\n })\r\n }\r\n else {\r\n url = getEnvVariable('TemplateAPI') + `/api/TemplateBusinessRules/Update/${result.RefId}`;\r\n PutData(url, result).then(res => {\r\n getData();\r\n setCurrent({})\r\n }).catch(errors => {\r\n console.log(errors)\r\n errors.then(err => {\r\n \r\n if (err['Name']) {\r\n setErrorList({ errorYN: true, helperText: err['Name'][0] });\r\n console.log(errorlist)\r\n }\r\n \r\n })\r\n })\r\n }\r\n }\r\n\r\n const handleDelete = (each) => {\r\n let url = getEnvVariable('TemplateAPI') + `/api/TemplateBusinessRules/Delete/${each.Id}`;\r\n DeleteRecord(url, '', each).then(res => {\r\n getData();\r\n setCurrent({})\r\n }).catch(ex => {\r\n console.error(ex)\r\n })\r\n }\r\n\r\n const handleMove = (each, type) => {\r\n let url = getEnvVariable('TemplateAPI') + `/api/TemplateBusinessRules/Move/${each.Id}?isDown=${type}`;\r\n PutData(url, each).then(res => {\r\n getData();\r\n setCurrent({})\r\n }).catch(ex => {\r\n console.error(ex)\r\n })\r\n }\r\n\r\n const handleCurrent = (each) => {\r\n setCurrent(each);\r\n }\r\n\r\n const handleChange = (panel) => (event, isExpanded) => {\r\n setExpanded(isExpanded ? panel : false);\r\n };\r\n\r\n return <div className='col-12'>\r\n {reload}\r\n <Fab size=\"small\" className=\"float-end \" color=\"primary\" aria-label=\"add\" title = \"Add Build Notice Template\" onClick={() => { setAdd(!add); setCurrent({}) }}> <AddIcon /> </Fab>\r\n <div className='clearfix' />\r\n\r\n {\r\n add && <TemplateBusinessRuleScreen each={current} handleFieldValue={handleFieldValue} fields={fields} index={-1} notices={notices} templates={templates}\r\n showSave={add} handleSave={handleSave} add={add} handleChange={handleChange} expanded={add ? -1 : expanded} errors ={errorlist}/>\r\n }\r\n <Box>\r\n {fields && fields.length > 0 && list && list.map((each, index) => {\r\n return <TemplateBusinessRuleScreen each={each.Id === current.Id ? current : each} handleFieldValue={handleFieldValue} index={index} fields={fields}\r\n notices={notices} templates={templates} setCurrent={() => handleCurrent(each)} showSave={current && Object.keys(current) > 0 ? true : false}\r\n handleSave={handleSave} handleMove={(each, type) => handleMove(each, type)} handleChange={handleChange}\r\n expanded={add ? -1 : expanded} handleDelete={handleDelete} disabled={add ? true : false} errors ={errorlist}\r\n />\r\n })}\r\n </Box>\r\n </div >\r\n}\r\n\r\n\r\nfunction TemplateBusinessRuleScreen({ each, handleFieldValue, index = -1, fields = [], notices = [], templates = [],\r\n showSave, setCurrent, handleSave, add, handleMove, handleChange, expanded, handleDelete, disabled,errors }) {\r\n\r\n const {errorYN,helperText} =errors;\r\n\r\n const [save, setSave] = useState(showSave);\r\n const [edit, setEdit] = useState(add ? add : false);\r\n const [calculated, setCalculated] = useState(true);\r\n\r\n useEffect(() => {\r\n setEdit(false)\r\n setSave(showSave)\r\n }, [expanded])\r\n\r\n const handleEdit = () => {\r\n setCurrent(each);\r\n setEdit(true)\r\n setSave(true)\r\n }\r\n if (each)\r\n return <div className=\"my-1 col-12\">\r\n <Accordion expanded={expanded === index} onChange={handleChange(index)} disabled={disabled} >\r\n <AccordionSummary\r\n expandIcon={<ExpandMoreIcon />}\r\n aria-controls=\"panel1bh-content\"\r\n id=\"panel1bh-header\"\r\n >\r\n <div>\r\n <small className='text-primary'>{add ? 'Build Notice Template:' : each.Name}</small>\r\n <div className='float-right'>\r\n {(!add && edit) && <ButtonGroup>\r\n <IconButton aria-label=\"delete\" onClick={() => handleMove(each, false)}>\r\n <UpIcon fontSize=\"small\" />\r\n </IconButton>\r\n <IconButton aria-label=\"delete\" onClick={() => handleMove(each, true)}>\r\n <DownIcon fontSize=\"small\" />\r\n </IconButton>\r\n </ButtonGroup>}\r\n\r\n </div>\r\n </div>\r\n </AccordionSummary>\r\n <AccordionDetails >\r\n {(edit || add) ? <Textbox className=\"col-8 m-3\" handleFieldValue={(evt) => handleFieldValue(index, evt)} name={'Name'} value={each.Name} label=\"Name\" required error={errorYN} helperText={errorYN && helperText}/> :\r\n <Label className=\"col-8 m-3\" value={each.Name} label=\"Name\" />}\r\n <div className=\"col-4 \">\r\n <div className='float-right'>\r\n {(save || edit) ? <IconButton color=\"primary\" onClick={handleSave} title=\"Save\"> <SaveIcon /> </IconButton> :\r\n <IconButton color=\"primary\" onClick={() => handleEdit(each)} title=\"Edit\"><EditIcon /> </IconButton>}\r\n {edit && <IconButton color=\"primary\" onClick={() => handleDelete(each)} title=\"Delete\"><DeleteIcon /> </IconButton>}\r\n </div>\r\n </div>\r\n </AccordionDetails>\r\n <AccordionDetails className='col m-3' >\r\n {(edit || add) ? <Switch label='Is Condition?' name=\"ISQuery\" value={(each && each.ISQuery) || null} handleFieldValue={(e) => handleFieldValue(index, e)} extraProps={{\r\n transformProps: transformProps\r\n }} /> : <Label value={each.ISQuery === 'A' ? 'Yes' : 'No'} label=\"Is Condition?\" />}\r\n </AccordionDetails>\r\n {each.ISQuery === 'A' && <AccordionDetails >\r\n <small className='fw-bold col my-2 m-3'>Condition <br />\r\n <Switch name='calculated' label=\"Look Up Domains List\" value={calculated ? 'Y' : 'N'} disabled={(edit || add) ? false : true}\r\n handleFieldValue={() => setCalculated(!calculated)} extraProps={{\r\n transformProps: {\r\n \"Y\": true,\r\n \"N\": false,\r\n true: \"Y\",\r\n false: \"N\"\r\n }\r\n }} /><br />\r\n {!calculated ? <QueryBuilder disabled={(edit || add) ? false : true} fields={fields || []} name='JsonQueryStr'\r\n showCombinatorsBetweenRules={true} showCloneButtons={true} enableDragAndDrop={true} //controlElements={materialControlElements}\r\n query={each.JsonQueryStr ? JSON.parse(each.JsonQueryStr) : null} onQueryChange={(val) => {\r\n if (add || (each.JsonQueryStr !== JSON.stringify(val)))\r\n handleFieldValue(index, {\r\n target: {\r\n value: JSON.stringify(val),\r\n name: 'JsonQueryStr',\r\n }, currentTarget: { dataset: null }\r\n })\r\n }} /> :\r\n <CalcualtedQueryBuilder disabled={(edit || add) ? false : true} fields={fields || []} name='JsonQueryStr'\r\n query={each.JsonQueryStr ? JSON.parse(each.JsonQueryStr) : null} onQueryChange={(val) => {\r\n if (add || (each.JsonQueryStr !== JSON.stringify(val)))\r\n handleFieldValue(index, {\r\n target: {\r\n value: JSON.stringify(val),\r\n name: 'JsonQueryStr',\r\n }, currentTarget: { dataset: null }\r\n })\r\n }} />}\r\n </small>\r\n </AccordionDetails>}\r\n {each.ISQuery === 'A' && <AccordionDetails className='col m-3'>\r\n {\r\n ['IfValidSection', 'ElseInValidSection'].map(rule => {\r\n return <Conditional edit={(edit || add)} rule={rule} each={each} handleFieldValue={(e) => handleFieldValue(index, e, rule)}\r\n index={index} notices={notices} templates={templates} />\r\n })\r\n }\r\n </AccordionDetails>}\r\n {(each.ISQuery === 'I' || !each.ISQuery) && <AccordionDetails className='col m-3'>\r\n {\r\n ['IfValidSection'].map(rule => {\r\n return <Conditional edit={(edit || add)} rule={rule} each={each} handleFieldValue={(e) => handleFieldValue(index, e, rule)}\r\n index={index} notices={notices} templates={templates} />\r\n })\r\n }\r\n </AccordionDetails>}\r\n <AccordionDetails className='col m-3' >\r\n {!add && (edit ? <Switch label='Status' name=\"Status\" value={each && each.Status || null} handleFieldValue={(e) => handleFieldValue(index, e)} extraProps={{\r\n transformProps: transformProps\r\n }} /> : <Label value={each.Status === 'A' ? 'Active' : 'In-Active'} label=\"Status\" />)}\r\n </AccordionDetails>\r\n </Accordion >\r\n </div>\r\n else <></>\r\n}\r\n\r\nfunction Conditional({ rule, handleFieldValue, each = {}, notices, templates, edit }) {\r\n\r\n\r\n return <div className='col-6 my-1'>\r\n <small className='fw-bold my-4'>{rule === 'ElseInValidSection' ? <Chip\r\n className='col-12'\r\n icon={<WrongIcon />}\r\n label=\"In-Valid\"\r\n color=\"secondary\"\r\n variant=\"outlined\"\r\n />\r\n : <Chip\r\n className='col-12'\r\n icon={<RightIcon />}\r\n label=\"Valid\"\r\n color=\"primary\"\r\n variant=\"outlined\"\r\n />\r\n }</small>\r\n {/* {edit ? */}\r\n <CheckboxesTags handleFieldValue={(evt) => handleFieldValue(evt)} name={'TemplateId'}\r\n value={each && each[rule] && each[rule]['TemplateId']} ismulti={true}\r\n label={'Master Template'} disabled={edit ? false : true}\r\n extraProps={{\r\n transformProps: {\r\n label: 'Name',\r\n value: 'TemplateId'\r\n }\r\n }} items={templates} />\r\n {/* // : <Label className='m-2'\r\n // value={each && each[rule] ? (templates.find(e => { return e.TemplateId === (each && each[rule] && each[rule]['TemplateId']) }) || {}).Name : ''}\r\n // label=\"Master Template\" />}\r\n // {edit ? */}\r\n <Dropdown disabled={edit ? false : true} handleFieldValue={(evt) => handleFieldValue(evt)} name={'SubRefId'} value={each && each[rule] && each[rule]['SubRefId']} label={'Select Another Notice'}\r\n extraProps={extraProps} items={notices} />\r\n {/* : <Label className='m-2' value={(notices.find(e => { return e.Id === (each && each[rule] && each[rule]['SubRefId']) }) || {}).Name} label=\"Notices\" />} */}\r\n </div>\r\n}\r\n","import Button from \"@material-ui/core/Button\";\r\nimport Grid from \"@material-ui/core/Grid\";\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 Paper from \"@material-ui/core/Paper\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport Switch from './switch';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n margin: \"auto\"\r\n },\r\n paper: {\r\n width: 250,\r\n height: 320,\r\n overflow: \"auto\"\r\n },\r\n button: {\r\n margin: theme.spacing(0.5, 0)\r\n }\r\n}));\r\n\r\n\r\n\r\nexport default function TransferList({ label, value, extraProps, name, handleFieldValue, isCheckBox, switchProps }) {\r\n let { tname, tvalue } = ((extraProps || {}).transformProps) || {}\r\n const classes = useStyles();\r\n const [selected, setSelected] = React.useState(null);\r\n const [left, setLeft] = React.useState(value.available);\r\n const [right, setRight] = React.useState(value.selected);\r\n\r\n useEffect(() => {\r\n setLeft(value.available)\r\n setRight(value.selected)\r\n }, [value])\r\n\r\n const handleToggle = (value) => () => {\r\n setSelected(value);\r\n };\r\n\r\n const not = (a, b) => {\r\n let temp = a.filter((e) => {\r\n if (e[tvalue] !== b) {\r\n return e\r\n }\r\n });\r\n return temp\r\n }\r\n\r\n\r\n const handleAllRight = () => {\r\n let events = {\r\n target: {\r\n value: {\r\n available: [],\r\n selected: right.concat(left)\r\n }, name: name, checked: false\r\n }, currentTarget: { dataset: null }\r\n }\r\n handleFieldValue(events);\r\n // setRight(right.concat(left));\r\n // setLeft([]);\r\n setSelected(null);\r\n };\r\n\r\n const handleCheckedRight = () => {\r\n let select = left.filter(each => { return each[tvalue] === selected })\r\n let events = {\r\n target: {\r\n value: {\r\n available: not(left, selected),\r\n selected: right.concat(select)\r\n }, name: name, checked: false\r\n }, currentTarget: { dataset: null }\r\n }\r\n handleFieldValue(events);\r\n // setRight(right.concat(selected));\r\n // setLeft(not(left, selected));\r\n setSelected(null);\r\n };\r\n\r\n const handleCheckedLeft = () => {\r\n let select = right.filter(each => { return each[tvalue] === selected })\r\n let events = {\r\n target: {\r\n value: {\r\n available: left.concat(select),\r\n selected: not(right, selected)\r\n }, name: name, checked: false\r\n }, currentTarget: { dataset: null }\r\n }\r\n handleFieldValue(events);\r\n // setLeft(left.concat(selected));\r\n // setRight(not(right, selected));\r\n setSelected(null);\r\n };\r\n\r\n const handleAllLeft = () => {\r\n let events = {\r\n target: {\r\n value: {\r\n available: left.concat(right),\r\n selected: []\r\n }, name: name, checked: false\r\n }, currentTarget: { dataset: null }\r\n }\r\n handleFieldValue(events);\r\n // setLeft(left.concat(right));\r\n // setRight([]);\r\n setSelected(null);\r\n };\r\n\r\n const handleCheckOnRight = (checked, val) => {\r\n let tempValue = value;\r\n (tempValue['selected'] || []).forEach(element => {\r\n if (val === element[tvalue]) {\r\n element[isCheckBox] = checked ? 'Y' : 'N'\r\n }\r\n });\r\n let events = { target: { value: tempValue, name: name, checked: false }, currentTarget: { dataset: null } }\r\n setLeft(tempValue.available)\r\n setRight(tempValue.selected)\r\n handleFieldValue(events);\r\n }\r\n\r\n const customList = (items, isRight = false) => (\r\n <Paper className={classes.paper}>\r\n <List dense component=\"div\" role=\"list\">\r\n {(items || []).map((each) => {\r\n const labelId = `transfer-list-item-${each[tvalue]}-label`;\r\n return (\r\n <ListItem\r\n key={each[tvalue]}\r\n role=\"listitem\"\r\n button\r\n className=\"\"\r\n onClick={handleToggle(each[tvalue])} >\r\n\r\n <ListItemText id={labelId} primary={each[tname]} />\r\n {isRight && isCheckBox && <ListItemIcon>\r\n <Switch\r\n handleFieldValue={(evt) => { handleCheckOnRight(evt.target.checked, each[tvalue]) }}\r\n value={each[isCheckBox]}\r\n tabIndex={-1}\r\n disableRipple\r\n extraProps={switchProps}\r\n inputProps={{ 'aria-labelledby': labelId }}\r\n />\r\n </ListItemIcon>}\r\n </ListItem>\r\n );\r\n })}\r\n <ListItem />\r\n </List>\r\n </Paper>\r\n );\r\n\r\n return (\r\n <> <small className='fw-bold' style={{ fontSize: '12px' }}>{label}</small>\r\n <Grid\r\n container\r\n spacing={2}\r\n justifyContent=\"center\"\r\n alignItems=\"center\"\r\n className={classes.root}\r\n >\r\n <Grid item>{customList(left, false)}</Grid>\r\n <Grid item>\r\n <Grid container direction=\"column\" alignItems=\"center\">\r\n <Button\r\n variant=\"outlined\"\r\n size=\"small\"\r\n className={classes.button}\r\n onClick={handleAllRight}\r\n disabled={(left || []).length === 0}\r\n aria-label=\"move all right\"\r\n >\r\n ≫\r\n </Button>\r\n <Button\r\n variant=\"outlined\"\r\n size=\"small\"\r\n className={classes.button}\r\n disabled={!selected}\r\n onClick={handleCheckedRight}\r\n aria-label=\"move selected right\"\r\n >\r\n >\r\n </Button>\r\n <Button\r\n variant=\"outlined\"\r\n size=\"small\"\r\n className={classes.button}\r\n onClick={handleCheckedLeft}\r\n disabled={!selected}\r\n aria-label=\"move selected left\"\r\n >\r\n <\r\n </Button>\r\n <Button\r\n variant=\"outlined\"\r\n size=\"small\"\r\n className={classes.button}\r\n onClick={handleAllLeft}\r\n disabled={(right || []).length === 0}\r\n aria-label=\"move all left\"\r\n >\r\n ≪\r\n </Button>\r\n </Grid>\r\n </Grid>\r\n <Grid item>{customList(right, true)}</Grid>\r\n </Grid>\r\n </>\r\n );\r\n}\r\n","//fields\r\nimport GridReport from '../../modules/report/dialogdrawercontent';\r\nimport AutoComplete from '../components/autocomplete';\r\nimport Button from '../components/buttons';\r\nimport Checkautocomplete from '../components/checkautocomplete';\r\nimport Checkbox from '../components/checkbox';\r\nimport Confirmation from '../components/confirmationPopup';\r\nimport useContainer from '../components/container';\r\nimport DatePicker from '../components/datepicker';\r\nimport DateMonth from '../components/date_daymonth';\r\nimport DateTimePicker from '../components/datetimepicker';\r\nimport Dropdown from '../components/dropdown';\r\n//hooks\r\nimport useForm from '../components/form';\r\nimport Header from '../components/header';\r\nimport KendoGrid from '../components/kendogrid';\r\nimport kendoHeader from '../components/kendoheader';\r\nimport Label from '../components/label';\r\nimport Link from '../components/link';\r\nimport MultiAdd from '../components/multiadd';\r\nimport Notify from '../components/custom/notificationtemplate';\r\nimport NumberFormat from '../components/numberformat';\r\nimport PhoneFormat from '../components/phoneformat';\r\nimport RadioGroup from '../components/radiogroup';\r\nimport SaveButton from '../components/savebutton';\r\nimport useSections from '../components/sections';\r\nimport SidePopUp from '../components/sidepopup';\r\nimport switchcomponent from '../components/switch';\r\nimport TextField from '../components/textbox';\r\nimport appdownloadstab from '../components/custom/appdownloads'\r\nimport timer from '../components/timepicker'\r\nimport Editor from '../components/wysiwyg'\r\nimport Fab from '../components/fab'\r\nimport CustomProvision from '../components/custom/designprovisions'\r\nimport TemplateBusinessRule from '../components/custom/masternoticebr';\r\nimport Template from '../components/template';\r\nimport MissingItemsDrawer from '../components/custom/missinglists';\r\nimport Upload from '../components/multipleuploads'\r\nimport TransferList from '../components/transferlist';\r\nimport DomainCalVal from '../components/custom/domaincalval';\r\nimport SubHeader from '../components/subheader';\r\n\r\nexport const fieldTypes = {\r\n dropdown: Dropdown,\r\n textfield: TextField,\r\n checkbox: Checkbox,\r\n button: Button,\r\n grid: KendoGrid,\r\n phoneformat: PhoneFormat,\r\n radiogroup: RadioGroup,\r\n label: Label,\r\n link: Link,\r\n numberformat: NumberFormat,\r\n datetimepicker: DateTimePicker,\r\n date: DatePicker,\r\n datemonth:DateMonth,\r\n multiadd: MultiAdd,\r\n popup: SidePopUp,\r\n save: SaveButton,\r\n header: Header,\r\n notify: Notify,\r\n kendoheader: kendoHeader,\r\n autocomplete: AutoComplete,\r\n gridreport: GridReport,\r\n //newcontainer: useContainer, --dont add this. Please let me know when u are adding\r\n toggle: switchcomponent,\r\n checkauto: Checkautocomplete,\r\n confirmation: Confirmation,\r\n timer: timer,\r\n editor: Editor,\r\n fab: Fab,\r\n template: Template,\r\n //custom components\r\n appdownloads: appdownloadstab,\r\n customprovision: CustomProvision,\r\n templatebusiness: TemplateBusinessRule,\r\n required: MissingItemsDrawer,\r\n upload: Upload,\r\n tranferlist: TransferList,\r\n domainCalVal: DomainCalVal,\r\n subheader:SubHeader,\r\n\r\n}\r\n\r\nexport const hookTypes = {\r\n form: useForm,\r\n container: useContainer,\r\n sections: useSections,\r\n}\r\n","import React, { Fragment, useState, useEffect } from \"react\";\r\nimport Editor from '../../modules/form/cwysiwyg'\r\n\r\nexport default function (props) {\r\n const { value, handleFieldValue, multiline, extraProps, rowsMax, shareProps, error, required, tooltip, contexthelp, changefieldto, FieldIsSpellCheck, ...otherProps } = props\r\n const { label, helperText, name, xtype, fullWidth, ...otherConfigs } = otherProps;\r\n return (\r\n <Editor handleFieldChange = {handleFieldValue} name={name} edit={true} value={value} label={label}/>\r\n )\r\n}","import Box from '@material-ui/core/Box';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport Template from '../../modules/template'\r\nimport { useEffect, useState, useRef } from 'react';\r\nimport { getEnvVariable } from '../../../modules/environmentalList';\r\nimport { GetData } from '../helpers/requests';\r\nimport Fab from '@material-ui/core/Fab';\r\nimport SaveIcon from '@material-ui/icons/Save'\r\nimport DefaultSettings from './settings';\r\n\r\nexport default function TemplateComp(props) {\r\n const { value, handleFieldValue, multiline, extraProps, isSave, rowsMax, shareProps, error, required, tooltip, items,\r\n contexthelp, className, disabled, changefieldto, FieldIsSpellCheck, fieldValues, edit, label, helperText, name, xtype, fullWidth, ...otherProps } = props\r\n const [save, setSave] = useState(false);\r\n const [list, setList] = useState([])\r\n\r\n useEffect(() => {\r\n if (fieldValues['SideBarTables'] !== '') {\r\n let tables = fieldValues['SideBarTables'].split(',')\r\n let url = \"\"\r\n tables.forEach((element) => {\r\n url = url + 'table=' + element + '&';\r\n });\r\n let sourceURL = getEnvVariable('Application') + \"/api/Application/Fields/\" + fieldValues['SitePermitTypeId'] + \"?\" + url;\r\n GetData(sourceURL, \"\").then(results => {\r\n if (results && results.length > 0) {\r\n setList(results)\r\n }\r\n })\r\n }\r\n }, [fieldValues['SideBarTables']])\r\n\r\n useEffect(() => {\r\n let sourceURL = getEnvVariable('Application') + \"/api/Application/Fields/\" + fieldValues['SitePermitTypeId'];\r\n GetData(sourceURL, \"\").then(results => {\r\n if (results && results.length > 0) {\r\n setList(results)\r\n }\r\n })\r\n }, [])\r\n\r\n const handleSave = (template) => {\r\n if (template && template.id) {\r\n handleFieldValue({ target: { value: template.id.toString(), name: name, checked: false }, currentTarget: { dataset: null } })\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().remove();\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (save === true) {\r\n setSave(false);\r\n if (DefaultSettings.getLoader() != null)\r\n DefaultSettings.getLoader().add();\r\n if (DefaultSettings.getAlert() != null)\r\n DefaultSettings.getAlert().show('Template is created, Please click on save at header to update information to Master Template ', 'info');\r\n }\r\n }, [save])\r\n\r\n const inputEl = useRef(null);\r\n return <Box className={className}>\r\n {save}\r\n {edit && <Fab className=\"p-1 float-right\" onClick={() => { setSave(true) }} size=\"small\" color='primary' variant='contained'><SaveIcon /></Fab>}\r\n <FormControl fullWidth={fullWidth ? fullWidth : true} error={error} required={required} className={className + ' p-1'}>\r\n {fieldValues['SitePermitTypeId'] !== '' && <Template\r\n ref={inputEl}\r\n moduleId={fieldValues['SubModuleKey']}\r\n sitePermitTypeId={fieldValues['SitePermitTypeId']}\r\n templateId={value}\r\n isadmin={true}\r\n isEnabled={edit}\r\n showHistory={true}\r\n id={parseInt(value) || 0}\r\n canDownload={true}\r\n save={save}\r\n parentid={0}\r\n callBack={(data) => { handleSave(data) }}\r\n mentions={list}\r\n fields={items}\r\n\r\n />}\r\n {helperText && <FormHelperText>{helperText}</FormHelperText>}\r\n </FormControl>\r\n </Box>\r\n}","import Paper from '@material-ui/core/Paper';\r\nimport Button from '@material-ui/core/Button';\r\nimport Chip from '@material-ui/core/Chip';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport React, { Fragment, useEffect, useState } from 'react';\r\nimport Dropdown from '../dropdown';\r\nimport RadioButtonsGroup from '../radiogroup';\r\nimport Textbox from '../textbox';\r\nimport { GetData, PostData } from '../../helpers/requests';\r\nimport { getEnvVariable } from '../../../../modules/environmentalList';\r\nimport Checkbox from '../checkbox';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport SaveAltIcon from '@material-ui/icons/SaveAlt';\r\nimport { useParams } from 'react-router'\r\n\r\n\r\nexport default function CusromProvisions({ name, label, value = [], handleFieldValue, helperText, error, disabled, extraProps, edit, fieldValues }) {\r\n const params = useParams()\r\n const [type, setType] = useState([])\r\n //const [currenterror, setError] = useState(null)\r\n const [items, setItems] = useState([])\r\n const [IsCustomProvision, setIsCustomProvision] = useState('N')\r\n const [custom, setCustom] = useState({})\r\n const [reload, setReload] = useState(false)\r\n const [hold, setHold] = useState({\r\n Provision: '',\r\n ProvisionId: null,\r\n Type: '3',\r\n Status: 'A'\r\n });\r\n const [errors, setError] = useState([])\r\n const [errorState, setErrorState] = useState({})\r\n\r\nconst GetDisabledType=(type)=>{\r\n if(type.length > 0)\r\n {\r\n let tempType = type;\r\n tempType.map(each => {\r\n if (each.Name === \"Construction\" || each.Name === \"Both\")\r\n each['IsSelectable'] = (fieldValues['ProcessType'] === \"4\" || fieldValues['ProcessType'] === \"7\") ? 'N' : 'Y'\r\n return each\r\n })\r\n return tempType\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n let url = getEnvVariable('Admin') + `/api/Domains/values?domainkey=DESIGN_PROVISION_TYPE`\r\n GetData(url).then(res => {\r\n setType(res);\r\n getItems()\r\n })\r\n }, [])\r\n\r\n const getItems = () => {\r\n let url = getEnvVariable('Application') + `/api/Provisions/AllEffective`\r\n GetData(url).then(res => {\r\n setItems(res)\r\n })\r\n }\r\n\r\n const setHoldData = () => {\r\n setHold({\r\n Provision: '',\r\n ProvisionId: null,\r\n Type: '3',\r\n Status: 'A'\r\n })\r\n }\r\n\r\n const handleCustomProvision = (holddata, dataitems) => {\r\n let temp = value || []\r\n if (holddata && (holddata['Provision'])) {\r\n let add = (value || []).find(e => e.Provision === holddata['Provision'] && e.Type === holddata.Type) || null;\r\n let prov = dataitems.find(each => each.STD_PROV_REFNAME === holddata.Provision)\r\n if (!add) {\r\n setError(false);\r\n temp.push({ ...holddata, ProvisionId: (prov && prov.Id) || 0, Provision: holddata['Provision'], ProvisionDescription: prov['STD_PROV_TXT'], ProvisionShortText: prov['STD_PROV_SHORT_TXT'] })\r\n setHoldData()\r\n handleFieldValue({ target: { value: temp, name: name, checked: false }, currentTarget: { dataset: null } })\r\n }\r\n else {\r\n if (add && add.Status === 'I')\r\n handleDelete(add)\r\n else setErrorState({ ...errorState, 'PROVISION_SELECT_ERROR': 'Provision already exisits' })\r\n }\r\n }\r\n else setErrorState({ ...errorState, 'PROVISION_SELECT_ERROR': 'Choose Provision before add' }) //setError('Choose Provision before add')\r\n }\r\n\r\n const handleDelete = (current) => {\r\n let temp = value;\r\n if ((temp || []).some(e => e.Provision === current.Provision && e.Type === current.Type)) {\r\n for (let index = 0; index < temp.length; index++) {\r\n const element = temp[index];\r\n if (element.Provision === current.Provision && element.Type === current.Type) {\r\n element.Status = element.Status === 'A' ? \"I\" : 'A'\r\n }\r\n }\r\n setHoldData()\r\n handleFieldValue({ target: { value: temp, name: name, checked: false }, currentTarget: { dataset: null } })\r\n }\r\n }\r\n\r\n const handleProvisionSave = () => {\r\n if (custom && IsCustomProvision === 'Y') {\r\n custom['PERMIT_TYP_CD'] = 'APP'\r\n custom['permiT_CATEG_CD'] = 'A'\r\n custom['Status'] = 'A'\r\n let url = getEnvVariable('Application') + `/api/Provisions/${params.routeid1}/Add`\r\n PostData(url, custom).then(res => {\r\n getItems();\r\n let holddata = { ...hold, ['Provision']: res['STD_PROV_REFNAME'], ...res, Id: 0 };\r\n setHold(holddata);\r\n let tempItems = items;\r\n tempItems.push(res);\r\n setItems(tempItems);\r\n handleCustomProvision(holddata, tempItems);\r\n setCustom({ ['STD_PROV_NO']: '', ['STD_PROV_SHORT_TXT']: '', ['STD_PROV_TXT']: '' })\r\n setIsCustomProvision('N')\r\n setReload(!reload)\r\n }).catch(error => { console.log(error); return error; }).then(response => {\r\n console.log(response);\r\n if (response) {\r\n let errorobj = {}\r\n setError(true);\r\n for (const [key, value] of Object.entries(response)) {\r\n console.log(key, value);\r\n errorobj[key] = value.toString();\r\n }\r\n setErrorState(errorobj);\r\n } else setError(false);\r\n })\r\n\r\n // .catch(error => {\r\n // console.log(error);\r\n // let errorobj = {} \r\n // setError(true);\r\n // for (const [key, value] of Object.entries(error)) {\r\n // console.log(key, value);\r\n // errorobj[key] = value.toString();\r\n // }\r\n // setErrorState(errorobj);\r\n // })\r\n } else {\r\n let tempItems = items;\r\n custom['STD_PROV_NO'] = custom['STD_PROV_NO'] ? custom['STD_PROV_NO'] : params.routeid1;\r\n //let itemval = { ['STD_PROV_REFNAME']: custom['STD_PROV_NO'] + '-' + custom['STD_PROV_SHORT_TXT'], ['STD_PROV_TXT']: custom['STD_PROV_TXT'],['STD_PROV_SHORT_TXT']: custom['STD_PROV_SHORT_TXT'] }\r\n let itemval = {\r\n ['STD_PROV_REFNAME']: custom['STD_PROV_NO'] + '-' + custom['STD_PROV_SHORT_TXT'],\r\n ['STD_PROV_TXT']: custom['STD_PROV_TXT'],\r\n ['STD_PROV_SHORT_TXT']: custom['STD_PROV_SHORT_TXT']\r\n }\r\n tempItems.push(itemval);\r\n setItems(tempItems)\r\n let holddata = { ...hold, ['Provision']: itemval['STD_PROV_REFNAME'], ...itemval, Id: 0 };\r\n setHold(holddata);\r\n handleCustomProvision(holddata, tempItems)\r\n setCustom({ ['STD_PROV_NO']: '', ['STD_PROV_SHORT_TXT']: '', ['STD_PROV_TXT']: '' })\r\n setIsCustomProvision('N')\r\n setReload(!reload)\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n console.log('custom changed');\r\n setError(false)\r\n setErrorState({})\r\n }, [custom])\r\n\r\n const getDropDownItems = () => {\r\n if (Array.isArray(items) && Array.isArray(value) && value.length > 0 && items.length > 0) {\r\n return items.filter(f => !value.map(ele => ele.Provision).includes(f.STD_PROV_REFNAME))\r\n }\r\n return items;\r\n }\r\n\r\n return <Grid container spacing={3}>\r\n {reload}\r\n\r\n <Grid item xs={4} className={edit ? \"\" : 'd-none'}>\r\n <Dropdown items={getDropDownItems()} name=\"Provision\" label=\"Choose Provision\" value={hold.Provision} extraProps={{\r\n transformProps: {\r\n label: 'STD_PROV_REFNAME',\r\n value: 'STD_PROV_REFNAME'\r\n }\r\n }}\r\n handleFieldValue={(e) => { setHold({ ...hold, ['Provision']: e.target.value }) }} />\r\n </Grid>\r\n <Grid item xs={2} className={edit ? \"\" : 'd-none'}>\r\n <RadioButtonsGroup name=\"Type\" label=\"Choose Type\" value={hold.Type} items={GetDisabledType(type)}\r\n handleFieldValue={(e) => { setHold({ ...hold, ['Type']: e.target.value }) }} />\r\n </Grid>\r\n <Grid item xs={1} className={edit ? \"pt-5\" : 'd-none'} >\r\n <Button color='primary' size='small' variant='contained' onClick={() => handleCustomProvision(hold, items)}>Insert</Button>\r\n </Grid>\r\n <Grid item xs={5}>\r\n <small className='fw-bold'>Assigned</small>\r\n <Paper component=\"ul\" className='col-12' style={{ height: '200px', overflowY: 'auto', width: '100%' }}>\r\n {((Array.isArray(value) && value) || []).filter(e => e.Status === 'A').map((data) => {\r\n return (\r\n <Chip\r\n className='m-1'\r\n variant=\"outlined\" size=\"small\"\r\n label={data.Provision + ' (' + (type.find(e => e.Value.toString() === data.Type.toString()) || {}).Name + ')'}\r\n onDelete={edit ? () => handleDelete(data) : null}\r\n />\r\n );\r\n })}\r\n </Paper>\r\n {errorState['PROVISION_SELECT_ERROR'] && <div className='text-danger'>{errorState['PROVISION_SELECT_ERROR']}</div>}\r\n </Grid>\r\n <Divider />\r\n <Grid item xs={12} className={edit ? \"\" : 'd-none'}>\r\n <small className='fw-bold'>Custom Provisions</small>\r\n <div className='row col-12 my-3'>\r\n <div className='row col-12'>\r\n {/* <Textbox className=\"col-4\" name=\"STD_PROV_NO\" label=\"Provision Number\" value={custom.STD_PROV_NO} \r\n handleFieldValue={(e) => { setCustom({ ...custom, ['STD_PROV_NO']: e.target.value }) }} helperText={errorState['STD_PROV_NO']} error={errors} /> */}\r\n <Textbox className=\"col-4\" name=\"STD_PROV_SHORT_TXT\" label=\"Short Description\" value={custom.STD_PROV_SHORT_TXT}\r\n handleFieldValue={(e) => { setCustom({ ...custom, ['STD_PROV_SHORT_TXT']: e.target.value }) }} helperText={errorState['STD_PROV_SHORT_TXT']} error={errors} />\r\n <Checkbox className='col-3' label='Save Custom Provision' name=\"IsCustomProvision\" value={IsCustomProvision || null}\r\n handleFieldValue={(e) => { setIsCustomProvision(e.target.checked ? 'Y' : 'N') }} extraProps={{\r\n transformProps: { \"Y\": true, \"N\": false, true: \"Y\", false: \"N\" }\r\n }} />\r\n <IconButton className='col-1' color='primary' variant='contained' size='small' disabled={!(custom.STD_PROV_TXT && custom.STD_PROV_SHORT_TXT)}\r\n onClick={() => handleProvisionSave()}><SaveAltIcon />\r\n </IconButton>\r\n </div>\r\n <div className='row col-12'>\r\n <Textbox className=\"col-11\" multiline={true} rowsMax={2} name=\"STD_PROV_TXT\" label=\"Description\" value={custom.STD_PROV_TXT}\r\n handleFieldValue={(e) => { setCustom({ ...custom, ['STD_PROV_TXT']: e.target.value }) }} helperText={errorState['STD_PROV_TXT']} error={errors} />\r\n\r\n\r\n </div>\r\n </div>\r\n </Grid>\r\n\r\n {/* {hold && hold.CustomProv && <Grid item xs={4} className={edit ? \"\" : 'd-none'}>\r\n <Checkbox className='col-4 ' label='Save Custom Provision' name=\"IsCustomProvision\" value={hold && hold.IsCustomProvision || null}\r\n handleFieldValue={(e) => { setHold({ ...hold, ['IsCustomProvision']: e.target.checked ? 'Y' : 'N' }) }} extraProps={{\r\n transformProps: { \"Y\": true, \"N\": false, true: \"Y\", false: \"N\" }\r\n }} />\r\n </Grid>} */}\r\n {errorState.helperText && <FormHelperText>{errorState.helperText}</FormHelperText>}\r\n </Grid >\r\n}","import { Divider } from '@material-ui/core';\r\nimport Button from '@material-ui/core/Button';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport List from '@material-ui/core/List';\r\nimport ListItem from '@material-ui/core/ListItem';\r\nimport ListItemSecondaryAction from '@material-ui/core/ListItemSecondaryAction';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport AttachFileIcon from '@material-ui/icons/AttachFile';\r\nimport RemoveIcon from '@material-ui/icons/Delete';\r\nimport DropDownIcon from '@material-ui/icons/VerticalAlignBottom';\r\nimport React, { Fragment, useEffect, useRef, useState } from 'react';\r\nimport { getEnvVariable } from '../../../modules/environmentalList';\r\nimport { GetData } from '../helpers/requests';\r\nimport DefaultSettings from './settings';\r\n\r\n\r\nexport default function MultipleFileUpload({ edit, ismultiple = true, name, value, handleFieldValue }) {\r\n const [multiplefiles, setMultipleFiles] = useState(value || [])\r\n const fileInput = useRef(null)\r\n\r\n useEffect(() => {\r\n setMultipleFiles(value)\r\n }, [value])\r\n\r\n const handleFileUpload = (event) => {\r\n let file = []\r\n event.preventDefault();\r\n if (fileInput && fileInput.current) {\r\n const fname = fileInput.current.files[0].name;\r\n const size = fileInput.current.files[0].size;\r\n toBase64(event)\r\n .then(result => {\r\n var e = {\r\n target: {\r\n name: fname,\r\n value: result\r\n }\r\n }\r\n let attach = result.split(',')\r\n if (attach.length === 2)\r\n file.push({ UploadType: 'U', ContentStr: attach[1], FileName: fname, Size: size, FileType: attach[0] });\r\n let files = [...multiplefiles, ...file];\r\n\r\n //500MB\r\n if (size > 500000) { //change to 5 MB\r\n if (DefaultSettings.getAlert() != null && alert)\r\n DefaultSettings.getAlert().show('Uploading size exceeded 500MB', 'error');\r\n } else {\r\n setMultipleFiles(files)\r\n let events = { target: { value: files, name: name, checked: false }, currentTarget: { dataset: null } }\r\n handleFieldValue(events);\r\n }\r\n\r\n }).catch(ex => console.log(ex));\r\n }\r\n }\r\n\r\n const toBase64 = (event) => {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(event.target.files[0]);\r\n reader.onload = () => resolve(reader.result);\r\n reader.onerror = error => reject(error);\r\n })\r\n };\r\n\r\n\r\n const handleDelete = (i) => {\r\n let tempfiles = multiplefiles.filter((each, index) => {\r\n return each.Id !== i\r\n })\r\n let events = { target: { value: tempfiles, name: name, checked: false }, currentTarget: { dataset: null } }\r\n let url = getEnvVariable('Admin') + '/api/Files/RemoveFile/' + i\r\n GetData(url).then(resp => {\r\n if (resp) {\r\n setMultipleFiles(tempfiles)\r\n handleFieldValue(events);\r\n }\r\n })\r\n }\r\n\r\n\r\n const DownloadAttachment = (Name, ContentStr, filetype) => {\r\n const linkSource = filetype + ContentStr;\r\n const downloadLink = document.createElement(\"a\");\r\n const fileName = Name;\r\n downloadLink.href = linkSource;\r\n downloadLink.download = fileName;\r\n downloadLink.click();\r\n }\r\n\r\n\r\n const downloadAttachments = (Id) => {\r\n if (Id >= 0) {\r\n GetData(getEnvVariable('Admin') + `/api/Files/DownloadFile/${Id}`).then(resp => {\r\n if (resp && resp.FileId) {\r\n DownloadAttachment(resp.FileName, resp.ContentStr, resp.FileType)\r\n }\r\n })\r\n }\r\n }\r\n\r\n\r\n return (\r\n <div className='col-12 row mt-4' style={{ height: '500px', overflow: 'auto' }}>\r\n <Paper elevation={1} className=\"col-12\">\r\n {multiplefiles && multiplefiles.length === 0 && <div className=\"text-center eps-content-center\">\r\n <AttachFileIcon color=\"default\" style={{ fontSize: '80px', marginTop:'20px' }} /><br />\r\n <div classes=\"text-secondary\">No attachments have been added</div><br />\r\n {edit && <Button variant=\"contained\" component=\"label\" color=\"primary\"> <AddIcon /> Add Attachment\r\n <input\r\n type=\"file\"\r\n ref={fileInput}\r\n onChange={(e) => handleFileUpload(e)}\r\n hidden\r\n />\r\n </Button>}\r\n </div>\r\n }{multiplefiles && multiplefiles.length > 0 &&\r\n <div>\r\n <h6 className=\"pt-4 col fw-bold\">Attachments \r\n {/* {multiplefiles && multiplefiles.length > 0 && <IconButton edge=\"end\" color=\"primary\" onClick={() => zipAttachDownload()}>\r\n <ArchiveIcon />\r\n </IconButton>} */}\r\n </h6>\r\n <br />\r\n <Divider />\r\n {edit && ismultiple && <Button component=\"label\" > <AddIcon color=\"primary\" /> Add Attachment\r\n <input\r\n type=\"file\"\r\n ref={fileInput}\r\n onChange={handleFileUpload}\r\n hidden\r\n />\r\n </Button>}\r\n <Divider /></div>\r\n }\r\n {multiplefiles && multiplefiles.length > 0 && <Fragment>\r\n <List>\r\n <ListItem dense >\r\n <ListItemText alignItems=\"flex-start\" ><Typography component=\"span\"\r\n variant=\"subtitle2\"\r\n color=\"primary\">Name</Typography> </ListItemText>\r\n <ListItemSecondaryAction>\r\n <Typography component=\"span\"\r\n variant=\"subtitle2\"\r\n color=\"primary\">Actions</Typography>\r\n </ListItemSecondaryAction>\r\n </ListItem>\r\n </List>\r\n <Divider />\r\n <List>\r\n {(multiplefiles || []).map((file, i) => {\r\n return <ListItem key={i} dense >\r\n <ListItemText alignItems=\"flex-start\">{file.FileName || file.Id || 'Document ' + (i + 1)} </ListItemText>\r\n <ListItemSecondaryAction>\r\n <IconButton edge=\"end\" color=\"primary\" onClick={() => downloadAttachments(file.Id)}>\r\n <DropDownIcon />\r\n </IconButton>\r\n {edit && <IconButton edge=\"end\" color=\"secondary\" onClick={() => handleDelete(file.Id)}>\r\n <RemoveIcon />\r\n </IconButton>}\r\n </ListItemSecondaryAction>\r\n </ListItem>\r\n })}\r\n </List>\r\n </Fragment>\r\n }\r\n </Paper>\r\n </div >\r\n\r\n );\r\n}\r\n\r\n","import React, { useEffect } from 'react'\r\nimport NumberFormat from '../numberformat';\r\n\r\nexport default function DomainCalVal(props) {\r\n const { required, label, value = null, items = [], name, helperText, error, fieldValues, disabled, handleFieldValue } = props;\r\n\r\n useEffect(() => {\r\n if (fieldValues['LandUse'] && fieldValues['Unit'] && items && items.length > 0) {\r\n let item = items.find(each => each.Value === fieldValues['LandUse'])\r\n let val = item ? fieldValues['Unit'] * item.CalculatedValue : fieldValues['Unit'];\r\n let events = { target: { value: val.toFixed(4), name: name, checked: false } }\r\n handleFieldValue(events);\r\n }\r\n }, [fieldValues['LandUse'], fieldValues['Unit']])\r\n\r\n\r\n return (\r\n <NumberFormat xtype='DN' label={label} value={value} name={name} required={required} error={error} helperText={helperText} disabled={disabled}\r\n handleFieldValue={handleFieldValue} />\r\n )\r\n}\r\n","import { getEnvVariable } from \"../../modules/environmentalList\";\r\nimport { PostData } from \"../controls/helpers/requests\";\r\nimport { GetFetchProps, getToken } from \"../modules/header\"\r\n\r\nconst SHOW_POPUP = 'SHOW_POPUP';\r\nconst HIDE_POPUP = 'HIDE_POPUP';\r\nexport const SHOW_ALERT = 'SHOW_ALERT';\r\nexport const HIDE_ALERT = 'HIDE_ALERT';\r\nexport const NOTIFICATIONS = 'NOTIFICATIONS';\r\nexport const SNACKBAR_MESSAGE = 'SNACKBAR_MESSAGE';\r\nexport const OPEN_SNACKBAR = 'OPEN_SNACKBAR';\r\nexport const SNACKBAR_MESSAGE_TYPE = 'SNACKBAR_MESSAGE_TYPE';\r\nexport const PROJMESSAGES = 'PROJMESSAGES';\r\nexport const PASS_COMPMAP = 'PASS_COMPMAP';\r\nexport const OPEN_TOUR = 'OPEN_TOUR';\r\nexport const CLOSE_TOUR = 'CLOSE_TOUR'\r\nexport const WORKFLOW_RELOAD = 'WORKFLOW_RELOAD';\r\nexport const UNSAVED_RESULTS = 'UNSAVED_RESULTS';\r\nexport const UNSAVED_DATA = 'UNSAVED_DATA';\r\nexport const PASSTAB_DATA = 'PASSTAB_DATA';\r\nexport const RECORD_DATA = 'RECORD_DATA';\r\nexport const RESET_VALUES = 'RESET_VALUES';\r\nexport const CONFIRMATION = 'CONFIRMATION';\r\nexport const BUSINESS_RULES_ONEVENT = 'BUSINESS_RULES_ONEVENT';\r\nexport const ONEVENT_STATUS_TRANS = 'ONEVENT_STATUS_TRANS';\r\nexport const ONEVENT_SHOW_ERRORS = 'ONEVENT_SHOW_ERRORS'\r\nexport const TRIGGER_ONLOAD_SAVE = 'TRIGGER_ONLOAD_SAVE'\r\nexport const SITE_PERMIT_TYPE_STATUS = 'SITE_PERMIT_TYPE_STATUS'\r\nexport const TRIGGER_AFTER_SAVE = 'TRIGGER_AFTER_SAVE'\r\nexport const showTour = (isTourOpen) => {\r\n return {\r\n type: OPEN_TOUR,\r\n isTourOpen: isTourOpen,\r\n }\r\n}\r\n\r\nexport const onEventStatusUpdate = (onEventTransition = false) => {\r\n return {\r\n type: ONEVENT_STATUS_TRANS,\r\n onEventTransition: onEventTransition\r\n }\r\n}\r\nexport const SitePermitTypesStatus = (onSitePermitTypesStatus = null) => {\r\n\r\n return {\r\n\r\n type: SITE_PERMIT_TYPE_STATUS,\r\n\r\n onSitePermitTypesStatus: onSitePermitTypesStatus\r\n\r\n }\r\n\r\n}\r\n\r\n \r\n\r\nexport const onTirggerAfterSave = (onTirggerAfterSave = null) => {\r\n\r\n return {\r\n\r\n type: TRIGGER_AFTER_SAVE,\r\n\r\n onTirggerAfterSave: onTirggerAfterSave\r\n\r\n }\r\n\r\n}\r\nexport const onEventshowError = (onEventshowError = null) => {\r\n return {\r\n type: ONEVENT_SHOW_ERRORS,\r\n onEventshowError: onEventshowError\r\n }\r\n}\r\n\r\nexport const onTirggeronloadSave = (onTriggerSave = null) => {\r\n return {\r\n type: TRIGGER_ONLOAD_SAVE,\r\n onTriggerSave: onTriggerSave\r\n }\r\n}\r\n\r\nexport const closeTour = (isTourOpen) => {\r\n return {\r\n type: CLOSE_TOUR,\r\n isTourOpen: isTourOpen,\r\n }\r\n}\r\n\r\nexport const unsavedData = (unsaveddata, initialdata) => {\r\n return {\r\n type: UNSAVED_DATA,\r\n unsaveddata: { ...unsaveddata },\r\n initialdata: { ...initialdata }\r\n }\r\n}\r\n\r\n\r\nexport function ShowPopUp(control, force = false) {\r\n return { type: SHOW_POPUP, control, force };\r\n}\r\n\r\nexport function HidePopUp() {\r\n return { type: HIDE_POPUP };\r\n}\r\n\r\nexport const showAlert = (alerttype, alertmessage) => {\r\n return {\r\n type: SHOW_ALERT,\r\n alerttype: alerttype,\r\n alertmessage: alertmessage\r\n }\r\n}\r\n\r\nexport const hideAlert = (alert) => {\r\n return {\r\n type: HIDE_ALERT\r\n }\r\n}\r\n\r\nexport const setNotify = (notifications) => {\r\n return {\r\n type: NOTIFICATIONS,\r\n notifications\r\n }\r\n}\r\n\r\nexport const DrawerState = (drawertype, drawerstate) => {\r\n return {\r\n type: drawertype,\r\n drawermessage: drawerstate\r\n }\r\n}\r\n\r\nexport const snackbarMessage = (snackmessage, snackbarmessageType) => {\r\n return {\r\n type: SNACKBAR_MESSAGE,\r\n snackmessage: snackmessage,\r\n snackbarmessageType: snackbarmessageType\r\n }\r\n}\r\n\r\nexport const Confirmation = (onyes, onno, description, value) => {\r\n return {\r\n type: CONFIRMATION,\r\n onyes: onyes,\r\n onno: onno,\r\n description: description,\r\n value: value\r\n }\r\n}\r\nexport const unsavedResult = (unsavedresults) => {\r\n return {\r\n type: UNSAVED_RESULTS,\r\n unsavedresults\r\n }\r\n}\r\n\r\nexport const setSectionsReload = (workflowreload) => {\r\n return {\r\n type: WORKFLOW_RELOAD,\r\n workflowreload\r\n }\r\n}\r\n\r\n\r\nexport const setResetValue = (isreset) => {\r\n return {\r\n type: RESET_VALUES,\r\n isreset\r\n }\r\n}\r\n\r\n\r\n\r\nexport const compmapdata = () => {\r\n return {\r\n type: PASS_COMPMAP\r\n }\r\n}\r\nexport const getProjMessagesfromService = (projmessages) => {\r\n return {\r\n type: PROJMESSAGES,\r\n projmessages\r\n }\r\n}\r\n\r\nexport const setBusinessRulesOnEvent = (effects = []) => {\r\n return {\r\n type: BUSINESS_RULES_ONEVENT,\r\n effects\r\n }\r\n}\r\n\r\nexport const setRecordData = (recordidinfo, recorddata) => {\r\n return {\r\n type: RECORD_DATA,\r\n recordidinfo: recordidinfo,\r\n recorddata: { ...recorddata }\r\n }\r\n}\r\n\r\nexport const setNotifications = (data) => {\r\n return (dispatch) => {\r\n // dispatch(setNotify(data))\r\n let url = getEnvVariable('Report') + `/api/ReportQuery/DashboardNotifications`\r\n if (getEnvVariable('ModuleKey') === 'AMES')\r\n url = getEnvVariable('Report') + `/api/ReportQuery/DashboardNotificationsCount`\r\n const body = { \"IsRead\": 'N', \"Dismissed\": 'N' }\r\n PostData(url, body, true).then(response => {\r\n if (getEnvVariable('ModuleKey') === 'AMES') {\r\n if (response && response.totalCount) {\r\n dispatch(setNotify(response.totalCount))\r\n }\r\n }\r\n else {\r\n if (response && response.value && response.value.total) {\r\n dispatch(setNotify(response.value.total))\r\n }\r\n }\r\n }).catch(ex => {\r\n console.log(ex)\r\n })\r\n\r\n }\r\n}\r\n\r\nexport const getProjectMessages = () => {\r\n return (dispatch) => {\r\n let url = getEnvVariable('Application') + '/api/ProjectMessages/All';\r\n const init = {\r\n method: 'GET', ...GetFetchProps()\r\n };\r\n fetch(`${url}`, init).then(response => response.json()).then(response => {\r\n if (response) {\r\n dispatch(getProjMessagesfromService(response))\r\n }\r\n }).catch(ex => {\r\n console.log(ex)\r\n })\r\n }\r\n}\r\n\r\nexport const passtabData = (passtabdata, initialdata) => {\r\n return {\r\n type: PASSTAB_DATA,\r\n passtabdata: { ...passtabdata },\r\n initialdata: { ...initialdata }\r\n }\r\n}\r\n\r\n","export const NewApplicationSidebar = {\r\n 'WRSAPPLICATIONS': {\r\n \"type\": \"applicationdrawer\",\r\n \"order\": 2,\r\n \"key\": \"drawer\",\r\n \"options\": {\r\n \"icon\": \"alarm\",\r\n \"open\": true,\r\n \"iconsonly\": true,\r\n anchor: 'right',\r\n // orientation: 'vertical',\r\n \"items\": [\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Attachments\",\r\n \"icon\": \"fa fa-paperclip\",\r\n \"materialicon\": \"attach_file\",\r\n \"style\": {\r\n 'color': '#f48fb1'\r\n },\r\n \"link\": [\r\n {\r\n \"routes\": [\r\n {\r\n \"route\": \"/Records\",\r\n \"routeParams\": \"key\",\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid\"\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid1\"\r\n },\r\n {\r\n \"route\": \"/attachments\",\r\n },\r\n ],\r\n }\r\n ],\r\n \"key\": \"attachments\"\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Images\",\r\n \"icon\": \"fa fa-files-o\",\r\n \"materialicon\": \"wallpaper\",\r\n \"style\": {\r\n 'color': '#ffb300'\r\n },\r\n \"link\": [\r\n {\r\n \"routes\": [\r\n {\r\n \"route\": \"/Records\",\r\n \"routeParams\": \"key\",\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid\"\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid1\"\r\n },\r\n {\r\n \"route\": \"/images\",\r\n },\r\n ],\r\n }\r\n ],\r\n key: 'images'\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Notification Log\",\r\n \"icon\": \"fa fa-envelope-o\",\r\n \"materialicon\": \"notifications_active\",\r\n \"style\": {\r\n 'color': '#40c4ff'\r\n },\r\n \"link\": [\r\n {\r\n \"routes\": [\r\n {\r\n \"route\": \"/Records\",\r\n \"routeParams\": \"key\",\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid\"\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid1\"\r\n },\r\n {\r\n \"route\": \"/notificationlog\",\r\n },\r\n ],\r\n }\r\n ],\r\n \"key\": \"notificationlog\"\r\n },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Existing Land Uses\",\r\n // \"icon\": \"fa fa-comments-o\",\r\n // \"materialicon\": \"landscape\",\r\n // \"style\": {\r\n // 'color': '#00BFA5'\r\n // },\r\n // \"link\": [\r\n // {\r\n // \"routes\": [\r\n // {\r\n // \"route\": \"/Records\",\r\n // \"routeParams\": \"key\",\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid\"\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid1\"\r\n // },\r\n // {\r\n // \"route\": \"/existinglanduse\",\r\n // },\r\n // ],\r\n // }\r\n // ],\r\n // \"key\": \"existinglanduse\"\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Proposed Land Uses\",\r\n // \"icon\": \"fa fa-comments-o\",\r\n // \"materialicon\": \"eject\",\r\n // \"style\": {\r\n // 'color': '#96332c'\r\n // },\r\n // \"link\": [\r\n // {\r\n // \"routes\": [\r\n // {\r\n // \"route\": \"/Records\",\r\n // \"routeParams\": \"key\",\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid\"\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid1\"\r\n // },\r\n // {\r\n // \"route\": \"/proposedlanduse\",\r\n // },\r\n // ],\r\n // }\r\n // ],\r\n // \"key\": \"proposedlanduse\"\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Contacts\",\r\n // \"icon\": \"fa fa-user-circle-o\",\r\n // \"materialicon\": \"contacts\",\r\n // \"style\": {\r\n // 'color': '#64b5f6'\r\n // },\r\n // \"link\": [\r\n // {\r\n // \"routes\": [\r\n // {\r\n // \"route\": \"/Records\",\r\n // \"routeParams\": \"key\",\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid\"\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid1\"\r\n // },\r\n // {\r\n // \"route\": \"/contacts\",\r\n // },\r\n // ],\r\n // }\r\n // ],\r\n // key: 'contacts'\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Tax Lots\",\r\n // \"icon\": \"fa fa-comments-o\",\r\n // \"materialicon\": \"beenhereoutlined\",\r\n\r\n // \"style\": {\r\n // 'color': '#d95f09'\r\n // },\r\n // \"link\": [\r\n // {\r\n // \"routes\": [\r\n // {\r\n // \"route\": \"/Records\",\r\n // \"routeParams\": \"key\",\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid\"\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid1\"\r\n // },\r\n // {\r\n // \"route\": \"/taxlots\",\r\n // },\r\n // ],\r\n // }\r\n // ],\r\n // \"key\": \"taxlots\"\r\n // },\r\n \r\n\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Collaboration\",\r\n // \"icon\": \"fa fa-comments-o\",\r\n // \"materialicon\": \"group_work\",\r\n // \"style\": {\r\n // 'color': '#2c3f7d'\r\n // },\r\n // \"link\": [\r\n // {\r\n // \"routes\": [\r\n // {\r\n // \"route\": \"/Records\",\r\n // \"routeParams\": \"key\",\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid\"\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid1\"\r\n // },\r\n // {\r\n // \"route\": \"/collaboration\",\r\n // },\r\n // ],\r\n // }\r\n // ],\r\n // \"key\": \"collaboration\"\r\n // },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Notes\",\r\n \"icon\": \"fa fa-sticky-note-o\",\r\n \"materialicon\": \"note\",\r\n \"style\": {\r\n 'color': '#b26a00'\r\n },\r\n // \"link\": [\r\n // {\r\n // \"link\": \"/Record\",\r\n // //\"linkParams\": \"routeid1\"\r\n // },\r\n // {\r\n // \"type\": 'sublink',\r\n // \"link\": \"/notes\",\r\n\r\n // }\r\n // ],\r\n // \"key\": \"notes\"\r\n // },\r\n \"link\": [\r\n {\r\n \"routes\": [\r\n {\r\n \"route\": \"/Records\",\r\n \"routeParams\": \"key\",\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid\"\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid1\"\r\n },\r\n {\r\n \"route\": \"/notes\",\r\n },\r\n ],\r\n }\r\n ],\r\n \"key\": \"notes\"\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"History\",\r\n \"icon\": \"fa fa-files-o\",\r\n \"materialicon\": \"history\",\r\n \"style\": {\r\n 'color': '#f44336'\r\n },\r\n \"link\": [\r\n {\r\n \"routes\": [\r\n {\r\n \"route\": \"/Records\",\r\n \"routeParams\": \"key\",\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid\"\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid1\"\r\n },\r\n {\r\n \"route\": \"/history\",\r\n },\r\n ],\r\n }\r\n ],\r\n key: 'history'\r\n },\r\n \r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Discussions\",\r\n // \"key\": \"discussions\",\r\n // \"materialicon\": \"chat\",\r\n // \"style\": {\r\n // 'color': '#607d8b'\r\n // },\r\n // // \"link\": [\r\n // // {\r\n // // \"link\": \"/Record\",\r\n // // //\"linkParams\": \"routeid1\"\r\n // // },\r\n // // {\r\n // // \"type\": 'sublink',\r\n // // \"link\": \"/discussions\",\r\n // // \"regionidParams\": \"/\",\r\n // // \"appcontactidParams\": \"/\"\r\n // // }\r\n // // ],\r\n // // \"icon\": \"fa fa-file-text\",\r\n // // },\r\n // \"link\": [\r\n // {\r\n // \"routes\": [\r\n // {\r\n // \"route\": \"/Records\",\r\n // \"routeParams\": \"key\",\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid\"\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid1\"\r\n // },\r\n // {\r\n // \"route\": \"/discussions\",\r\n // },\r\n // ],\r\n // }\r\n // ],\r\n // \"icon\": \"fa fa-file-text\",\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Notices\",\r\n // \"icon\": \"fa fa-building\",\r\n // \"materialicon\": \"tab\",\r\n // \"style\": {\r\n // 'color': '#8bc34a'\r\n // },\r\n // // \"link\": [\r\n // // {\r\n // // \"link\": \"/Record\"\r\n // // },\r\n // // {\r\n\r\n // // \"type\": 'sublink',\r\n // // \"link\": \"/notices\",\r\n // // \"appParams\": \"/\"\r\n // // }\r\n // // ],\r\n // // // \"icon\": \"fa fa-file-text\",\r\n // // \"key\": \"notices\"\r\n // // },\r\n // \"link\": [\r\n // {\r\n // \"routes\": [\r\n // {\r\n // \"route\": \"/Records\",\r\n // \"routeParams\": \"key\",\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid\"\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid1\"\r\n // },\r\n // {\r\n // \"route\": \"/notices\",\r\n // },\r\n // ],\r\n // }\r\n // ],\r\n // //hidecondition: [{ Name: \"isViolation\", Value: \"Y\"},{prevcondition: 'or', Name: \"isviolation\", Value: \"Y\", getfrom :\"localstorage\"}],\r\n // \"key\": \"notices\"\r\n // },\r\n \r\n \r\n \r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Property Group\",\r\n // \"icon\": \"fa fa-comments-o\",\r\n // \"materialicon\": \"home_work\",\r\n // \"style\": {\r\n // 'color': '#7b1fa2'\r\n // },\r\n // \"link\": [\r\n // {\r\n // \"routes\": [\r\n // {\r\n // \"route\": \"/Records\",\r\n // \"routeParams\": \"key\",\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid\"\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid1\"\r\n // },\r\n // {\r\n // \"route\": \"/propertydetails\",\r\n // },\r\n // ],\r\n // }\r\n\r\n // ],\r\n // \"key\": \"propertydetails\"\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Change of Use\",\r\n // \"icon\": \"fa fa-comments-o\",\r\n // \"materialicon\": \"shuffle\",\r\n // hide: true,\r\n // \"style\": {\r\n // 'color': '#607d8b'\r\n // },\r\n // \"link\": [\r\n // {\r\n // \"routes\": [\r\n // {\r\n // \"route\": \"/Records\",\r\n // \"routeParams\": \"key\",\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid\"\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid1\"\r\n // },\r\n // {\r\n // \"route\": \"/changeofuse\",\r\n // },\r\n // ],\r\n // }\r\n // ],\r\n // check: {\r\n // condition: \"AND\",\r\n // rules: [{ 'name': 'PEAK_HOUR_TRIPS_PKHR_', type: 'is not null', rules: [] },\r\n // { 'name': 'SITE_ADT', type: 'is not null', rules: [] },\r\n // { 'name': 'APPROACH_ADT', type: 'is not null', rules: [] },\r\n // { 'name': 'PROCESS_TYPE', type: 'not in', value: '3,7,8,9', rules: [] }\r\n // ],\r\n // },\r\n // \"key\": \"changeofuse\"\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Completeness Review\",\r\n // \"icon\": \"fa fa-comments-o\",\r\n // \"materialicon\": \"assignment_turned_in\",\r\n // \"style\": {\r\n // 'color': '#0c4986'\r\n // },\r\n // \"link\": [{\r\n // \"routes\": [\r\n // {\r\n // \"route\": \"/Records\",\r\n // \"routeParams\": \"key\",\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid\"\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid1\"\r\n // },\r\n // {\r\n // \"route\": \"/completenesscheck\",\r\n // },\r\n // ],\r\n // }\r\n // ],\r\n // \"key\": \"completenesscheck\"\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Inspection\",\r\n // \"icon\": \"fa fa-files-o\",\r\n // \"materialicon\": \"policy\",\r\n // \"style\": {\r\n // 'color': '#827717'\r\n // },\r\n // \"link\": [\r\n // {\r\n // \"routes\": [\r\n // {\r\n // \"route\": \"/Records\",\r\n // \"routeParams\": \"key\",\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid\"\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid1\"\r\n // },\r\n // {\r\n // \"route\": \"/inspections\",\r\n // },\r\n // ],\r\n // }\r\n // ],\r\n // \"key\": \"inspections\"\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Site Visit\",\r\n // \"icon\": \"fa fa-comments-o\",\r\n // \"materialicon\": \"work_outlineIcon\",\r\n // \"style\": {\r\n // 'color': '#bf0b3e'\r\n // },\r\n // \"link\": [\r\n // {\r\n // \"routes\": [\r\n // {\r\n // \"route\": \"/Records\",\r\n // \"routeParams\": \"key\",\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid\"\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid1\"\r\n // },\r\n // {\r\n // \"route\": \"/sitevisit\",\r\n // },\r\n // ],\r\n // }\r\n // ],\r\n // \"key\": \"sitevisit\"\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Design\",\r\n // \"icon\": \"fa fa-comments-o\",\r\n // \"materialicon\": \"category\",\r\n // \"style\": {\r\n // 'color': '#f9a825'\r\n // },\r\n // \"link\": [\r\n // {\r\n // \"routes\": [\r\n // {\r\n // \"route\": \"/Records\",\r\n // \"routeParams\": \"key\",\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid\"\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid1\"\r\n // },\r\n // {\r\n // \"route\": \"/design\",\r\n // },\r\n // ],\r\n // }\r\n\r\n // ],\r\n // \"key\": \"design\"\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Issue Permit\",\r\n // \"icon\": \"fa fa-comments-o\",\r\n // \"materialicon\": \"credit_score\",\r\n // \"style\": {\r\n // 'color': '#0c4986'\r\n // },\r\n // \"link\": [{\r\n // \"routes\": [\r\n // {\r\n // \"route\": \"/Records\",\r\n // \"routeParams\": \"key\",\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid\"\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid1\"\r\n // },\r\n // {\r\n // \"route\": \"/issuepermit\",\r\n // },\r\n // ],\r\n // }\r\n // ],\r\n // \"key\": \"issuepermit\"\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Cancel Permit\",\r\n // \"icon\": \"fa fa-comments-o\",\r\n // \"materialicon\": \"cancel\",\r\n // \"style\": {\r\n // 'color': '#FF0000'\r\n // },\r\n // \"link\": [{\r\n // \"routes\": [\r\n // {\r\n // \"route\": \"/Records\",\r\n // \"routeParams\": \"key\",\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid\"\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid1\"\r\n // },\r\n // {\r\n // \"route\": \"/cancelpermit\",\r\n // },\r\n // ],\r\n // }\r\n // ],\r\n // \"key\": \"cancelpermit\"\r\n // },\r\n\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Insurance and Bonds\",\r\n // \"icon\": \"fa fa-comments-o\",\r\n // \"materialicon\": \"account_balance_wallet\",\r\n // \"style\": {\r\n // 'color': '#ea156d'\r\n // },\r\n // \"link\": [\r\n // {\r\n // \"routes\": [\r\n // {\r\n // \"route\": \"/Records\",\r\n // \"routeParams\": \"key\",\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid\"\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid1\"\r\n // },\r\n // {\r\n // \"route\": \"/insuranceandbonds\",\r\n // },\r\n // ],\r\n // }\r\n // ],\r\n // \"key\": \"InsuranceAndBond\"\r\n // },\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Supplemental Items\",\r\n // \"icon\": \"fa fa-comments-o\",\r\n // \"materialicon\": \"playlist_add_check_circle\",\r\n // \"style\": {\r\n // 'color': '#d500f9'\r\n // },\r\n // \"link\": [\r\n // {\r\n // \"routes\": [\r\n // {\r\n // \"route\": \"/Records\",\r\n // \"routeParams\": \"key\",\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid\"\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid1\"\r\n // },\r\n // {\r\n // \"route\": \"/supplemental\",\r\n // },\r\n // ],\r\n // }\r\n\r\n // ],\r\n // \"key\": \"supplemental\"\r\n // },\r\n \r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Description Of Construction\",\r\n // \"icon\": \"fa fa-files-o\",\r\n // \"materialicon\": \"featured_play_list\",\r\n // \"style\": {\r\n // 'color': '#6c3575'\r\n // },\r\n // \"link\": [\r\n // {\r\n // \"routes\": [\r\n // {\r\n // \"route\": \"/Records\",\r\n // \"routeParams\": \"key\",\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid\"\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid1\"\r\n // },\r\n // {\r\n // \"route\": \"/descriptionofconstruction\",\r\n // },\r\n // ],\r\n // }\r\n // ],\r\n // key: 'descriptionofconstruction'\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Workflow\",\r\n // \"icon\": \"fa fa-files-o\",\r\n // \"materialicon\": \"call_split\",\r\n // \"style\": {\r\n // 'color': '#3e2723'\r\n // },\r\n // button: {\r\n // type: 'slidingbutton',\r\n // \"materialicon\": \"call_split\",\r\n // \"key\": \"workflowbutton\",\r\n // \"options\": {\r\n // \"icon\": true,\r\n // \"name\": \"Workflow\",\r\n // \"customstyling\": true,\r\n // \"buttonprops\": {\r\n // \"text\": \"Workflow\"\r\n // }\r\n // },\r\n // components: [\r\n // NewApplicationWorkflow\r\n // ]\r\n // },\r\n // // \"link\": [\r\n // // {\r\n // // \"link\": \"/Administration/applicationreview/\",\r\n // // \"params\": \"applicationnumber\"\r\n // // },\r\n // // {\r\n // // \"type\": 'sublink',\r\n // // \"link\": \"/Workflow\",\r\n\r\n // // }\r\n // // // /Administration/applicationreview/{applicationnumber}/Workflow\r\n // // ],\r\n // key: 'workflow'\r\n // },\r\n \r\n \r\n\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Internal Comments\",\r\n // \"icon\": \"fa fa-comments-o\",\r\n // \"materialicon\": \"people_alt\",\r\n // \"style\": {\r\n // 'color': '#9fa8da'\r\n // },\r\n // \"link\": [\r\n // {\r\n // \"link\": \"/Administration/applicationreview\",\r\n // //\"linkParams\": \"routeid1\"\r\n // },\r\n // {\r\n // \"type\": 'sublink',\r\n // \"link\": \"/internalcomments\",\r\n\r\n // }\r\n // ],\r\n // \"key\": \"internalcomments\"\r\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}","import AppBar from '@material-ui/core/AppBar';\r\nimport Drawer from '@material-ui/core/Drawer';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport MissingIcon from '@material-ui/icons/CheckCircle';\r\nimport RefreshOutlined from '@material-ui/icons/RefreshOutlined';\r\nimport React, { useState } from 'react';\r\nimport { getEnvVariable } from '../../../../modules/environmentalList';\r\nimport { PostData } from '../../helpers/requests';\r\nimport Button from '@material-ui/core/Button';\r\nimport { useParams } from 'react-router-dom';\r\nimport DefaultSettings from '../settings';\r\nimport Paper from '@material-ui/core/Paper'\r\nimport Draggable from 'react-draggable'\r\nimport Dialog from '@material-ui/core/Dialog'\r\nimport CloseIcon from '@material-ui/icons/Close';\r\n\r\nfunction PaperComponent(props) {\r\n return (\r\n <Draggable>\r\n <Paper {...props} style={{ position: 'fixed', zIndex: 1400 }} />\r\n </Draggable>\r\n )\r\n}\r\n\r\nexport default function MissingItemsDrawer({ label, urlparams, value, fieldValues, isButton = false, variant, disabled, fieldProps, name }) {\r\n const [open, setOpen] = useState(false)\r\n const [data, setData] = useState({})\r\n const [recResult, setRecResult] = useState((value && value.split(',')) || (name && fieldValues[name] && fieldValues[name].split(',')) || [])\r\n const [refresh, setRefresh] = useState(false)\r\n\r\n const params = useParams()\r\n const toggleDrawer = () => {\r\n if (localStorage.getItem('SaveCurrentRecord') === 'Y' && !params.sidebar) {\r\n if (DefaultSettings.getAlert() != null)\r\n DefaultSettings.getAlert().show(\"Please Save the Application Record to get the latest information to process\", 'error');\r\n } else {\r\n setOpen(!open);\r\n let temp = !open\r\n if (temp) {\r\n handleValidateRules()\r\n }\r\n }\r\n };\r\n\r\n const handleValidateRules = () => {\r\n let result = (recResult && recResult.length > 0) ? recResult : ((value && value.split(',')) || (name && fieldValues[name] && fieldValues[name].split(',')) || [])\r\n let obj = {\r\n \"data\": fieldValues,\r\n \"keys\": (urlparams && urlparams.keys) ? urlparams.keys : [(result && result[0])],\r\n \"type\": (result && result[1]) || urlparams.type,\r\n 'TableName': (urlparams && urlparams.TableName) || '',\r\n 'sitePermitTypeId': fieldValues && fieldValues['SITE_PERMIT_TYPE_ID'] //params.routeid\r\n }\r\n let url = `${getEnvVariable('Application')}/api/BusinessRules/${params.sidebar ? 'ValidateRules' : 'SitePermitTypeValidateRules'}?RecordId=` + params.routeid1\r\n PostData(url, obj, true).then(res => {\r\n if (res && Object.keys(res).length === 0) {\r\n setOpen(false);\r\n if (DefaultSettings.getAlert() != null)\r\n DefaultSettings.getAlert().show(\"No Required Fields are Available\", 'info');\r\n setRefresh(!refresh)\r\n }\r\n else setData(res)\r\n }).catch(ex => {\r\n console.error(ex)\r\n })\r\n }\r\n\r\n return (\r\n <div>\r\n {refresh}\r\n {(isButton || value) && <Button onClick={toggleDrawer} size='small' color='secondary'\r\n variant={variant || 'outlined'}\r\n title={label || ''}\r\n disabled={(disabled) ? true : false}\r\n >\r\n {label}\r\n </Button>\r\n // :\r\n // <IconButton title={label || ''} color={\"secondary\"} onClick={toggleDrawer} size='small'> <MissingIcon /> </IconButton>\r\n }\r\n {/* <Drawer anchor={'right'} open={open} onClose={toggleDrawer} PaperProps={{ style: { width: 700 } }} > */}\r\n <Dialog\r\n hideBackdrop\r\n disableEnforceFocus\r\n style={{ position: 'initial', zIndex: '1400' }}\r\n open={open}\r\n // onClose={() => toggleDrawer(false)}\r\n PaperComponent={PaperComponent}\r\n aria-labelledby=\"draggable-dialog-title\"\r\n // disableBackdropClick\r\n >\r\n <AppBar position=\"static\" color='secondary'>\r\n <Toolbar variant=\"dense\">\r\n <div className={'flex-grow-1'}>{label}</div>\r\n {/* <Typography variant=\"h6\" color=\"inherit\" className={'flex-grow-1'}>\r\n {label}\r\n </Typography> */}\r\n <IconButton\r\n className='float-right'\r\n edge=\"end\"\r\n onClick={() => handleValidateRules()}\r\n color=\"inherit\"\r\n >\r\n <RefreshOutlined />\r\n </IconButton>\r\n \r\n <IconButton\r\n className='float-right'\r\n edge=\"end\"\r\n onClick={() => { setOpen(false); setRefresh(!refresh) }}\r\n color=\"inherit\"\r\n >\r\n <CloseIcon />\r\n </IconButton>\r\n </Toolbar>\r\n </AppBar>\r\n <ul className='my-2' style={{ height: '100%', overflow: 'auto' }}>\r\n {data && Object.keys(data).length > 0 && (Object.keys(data) || []).map(each => {\r\n return <small><li className='my-1'>\r\n {((fieldProps[each] && (fieldProps[each].label || fieldProps[each].RequiredFieldName)) || each) + ' : ' + (data[each] ? 'Required' : '')}\r\n </li>\r\n </small>\r\n\r\n })}\r\n {data && <small className='text-secondary'>Note: Please save the record, to get updated results related to disabled fields</small>}\r\n {/* {data && Object.keys(data).length === 0 && <div className='text-secondary'>\r\n N/A\r\n </div>\r\n } */}\r\n </ul>\r\n </Dialog>\r\n {/* </Drawer> */}\r\n </div >\r\n );\r\n}","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\n\r\nconst ValueEditor = ({\r\n operator,\r\n value,\r\n handleOnChange,\r\n title,\r\n className,\r\n type,\r\n inputType,\r\n values, fieldData\r\n}) => {\r\n if (operator === 'null' || operator === 'notNull') {\r\n return null;\r\n }\r\n\r\n\r\n const handleChangeMultiple = (event) => {\r\n const { options } = event.target;\r\n const value = [];\r\n for (let i = 0, l = options.length; i < l; i += 1) {\r\n if (options[i].selected) {\r\n value.push(options[i].value);\r\n }\r\n }\r\n handleOnChange(value.join(','))\r\n };\r\n\r\n switch (type) {\r\n case 'select':\r\n return (\r\n <select\r\n style={{ height: values && values.length > 15 ? '100px' : '150px' }}\r\n multiple={fieldData && fieldData.mutliple ? true : false}\r\n className={className}\r\n title={title}\r\n onChange={(e) => handleChangeMultiple(e)}\r\n value={fieldData.mutliple ? value.split(',') : value}>\r\n {values.map((v) => (\r\n <option key={v.name} value={v.name}>\r\n {v.label}\r\n </option>\r\n ))}\r\n </select>\r\n );\r\n\r\n case 'checkbox':\r\n return (\r\n <input\r\n type=\"checkbox\"\r\n className={className}\r\n title={title}\r\n onChange={(e) => handleOnChange(e.target.checked)}\r\n checked={(value === 'N' || !value) ? false : true}\r\n // value={value === false ? 'N' : 'Y'}\r\n />\r\n );\r\n\r\n case 'radio':\r\n return (\r\n <span className={className} title={title}>\r\n {values.map((v) => (\r\n <label key={v.name}>\r\n <input\r\n type=\"radio\"\r\n value={v.name}\r\n checked={value === v.name}\r\n onChange={(e) => handleOnChange(e.target.value)}\r\n />\r\n {v.label}\r\n </label>\r\n ))}\r\n </span>\r\n );\r\n\r\n case 'checkboxgroup':\r\n return (\r\n <span className={className} title={title}>\r\n {values.map((v) => (\r\n <label key={v.name}>\r\n <input\r\n type=\"checkbox\"\r\n value={v.name}\r\n checked={value === v.name}\r\n onChange={(e) => handleOnChange(e.target.value)}\r\n />\r\n {v.label}\r\n </label>\r\n ))}\r\n </span>\r\n );\r\n case 'date':\r\n return (\r\n <input\r\n type={'date' || 'text'}\r\n value={value}\r\n title={title}\r\n className={className}\r\n onChange={(e) => handleOnChange(e.target.value)}\r\n />\r\n );\r\n\r\n default:\r\n return (\r\n <input\r\n type={inputType || 'text'}\r\n value={value}\r\n title={title}\r\n className={className}\r\n onChange={(e) => handleOnChange(e.target.value)}\r\n />\r\n );\r\n }\r\n};\r\n\r\nValueEditor.displayName = 'ValueEditor';\r\n\r\nValueEditor.propTypes = {\r\n field: PropTypes.string,\r\n operator: PropTypes.string,\r\n value: PropTypes.any,\r\n handleOnChange: PropTypes.func,\r\n title: PropTypes.string,\r\n className: PropTypes.string,\r\n type: PropTypes.oneOf(['select', 'checkbox', 'radio', 'text', 'date', 'checkboxgroup']),\r\n inputType: PropTypes.string,\r\n values: PropTypes.arrayOf(PropTypes.object)\r\n};\r\n\r\nexport default ValueEditor;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst ValueSelector = ({ className, handleOnChange, options, title, value }) => (\r\n <select\r\n className={className}\r\n value={value}\r\n title={title}\r\n onChange={(e) => handleOnChange(e.target.value)}>\r\n {options.map((option) => {\r\n const key = option.id ? `key-${option.id}` : `key-${option.name}`;\r\n return (\r\n <option key={key} value={option.name}>\r\n {option.label}\r\n </option>\r\n );\r\n })}\r\n </select>\r\n);\r\n\r\nValueSelector.displayName = 'ValueSelector';\r\n\r\nValueSelector.propTypes = {\r\n value: PropTypes.string,\r\n options: PropTypes.array.isRequired,\r\n className: PropTypes.string,\r\n handleOnChange: PropTypes.func,\r\n title: PropTypes.string\r\n};\r\n\r\nexport default ValueSelector;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst ActionElement = ({ className, handleOnClick, label, title }) => (\r\n <button className={className} title={title} onClick={(e) => handleOnClick(e)}>\r\n {label}\r\n </button>\r\n);\r\n\r\nActionElement.displayName = 'ActionElement';\r\n\r\nActionElement.propTypes = {\r\n label: PropTypes.string,\r\n className: PropTypes.string,\r\n handleOnClick: PropTypes.func,\r\n title: PropTypes.string\r\n};\r\n\r\nexport default ActionElement;\r\n","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nconst NotToggle = ({ className, handleOnChange, title, checked }) => {\r\n return (\r\n <label className={className} title={title}>\r\n <input\r\n type=\"checkbox\"\r\n onChange={(e) => handleOnChange(e.target.checked)}\r\n checked={!!checked}\r\n />\r\n Not\r\n </label>\r\n );\r\n};\r\n\r\nNotToggle.displayName = 'NotToggle';\r\n\r\nNotToggle.propTypes = {\r\n className: PropTypes.string,\r\n handleOnChange: PropTypes.func,\r\n title: PropTypes.string,\r\n checked: PropTypes.bool\r\n};\r\n\r\nexport default NotToggle;\r\n","import React from 'react';\r\n\r\nconst Rule = ({\r\n id,\r\n parentId,\r\n field,\r\n operator,\r\n value,\r\n translations,\r\n schema: {\r\n classNames,\r\n controls,\r\n fields,\r\n getInputType,\r\n getLevel,\r\n getOperators,\r\n getValueEditorType,\r\n getValues,\r\n onPropChange,\r\n onRuleRemove\r\n }\r\n}) => {\r\n const onElementChanged = (property, value) => {\r\n onPropChange(property, value, id);\r\n };\r\n\r\n const onFieldChanged = (value) => {\r\n onElementChanged('field', value);\r\n };\r\n\r\n const onOperatorChanged = (value) => {\r\n onElementChanged('operator', value);\r\n };\r\n\r\n const onValueChanged = (value) => {\r\n onElementChanged('value', value);\r\n };\r\n\r\n const removeRule = (event) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n onRuleRemove(id, parentId);\r\n };\r\n\r\n const fieldData = fields.find((f) => f.name === field) || null;\r\n const level = getLevel(id);\r\n\r\n return (\r\n <div className={`rule ${classNames.rule}`} data-rule-id={id} data-level={level}>\r\n <controls.fieldSelector\r\n options={fields}\r\n title={translations.fields.title}\r\n value={field}\r\n operator={operator}\r\n className={`rule-fields w-75 ${classNames.fields}`}\r\n handleOnChange={onFieldChanged}\r\n level={level}\r\n />\r\n <controls.operatorSelector\r\n field={field}\r\n fieldData={fieldData}\r\n title={translations.operators.title}\r\n options={getOperators(field)}\r\n value={operator}\r\n className={`rule-operators ${classNames.operators}`}\r\n handleOnChange={onOperatorChanged}\r\n level={level}\r\n />\r\n <controls.valueEditor\r\n field={field}\r\n fieldData={fieldData}\r\n title={translations.value.title}\r\n operator={operator}\r\n value={value}\r\n type={getValueEditorType(field, operator)}\r\n inputType={getInputType(field, operator)}\r\n values={getValues(field, operator)}\r\n className={`rule-value ${classNames.value}`}\r\n handleOnChange={onValueChanged}\r\n level={level}\r\n />\r\n <controls.removeRuleAction\r\n label={translations.removeRule.label}\r\n title={translations.removeRule.title}\r\n className={`rule-remove ${classNames.removeRule}`}\r\n handleOnClick={removeRule}\r\n level={level}\r\n />\r\n </div>\r\n );\r\n};\r\n\r\nRule.defaultProps = {\r\n id: null,\r\n parentId: null,\r\n field: null,\r\n operator: null,\r\n value: null,\r\n schema: null\r\n};\r\n\r\nRule.displayName = 'Rule';\r\n\r\nexport default Rule;\r\n","import React from 'react';\r\nimport Editor from '../editor';\r\nimport Accordion from '@material-ui/core/Accordion';\r\nimport AccordionDetails from '@material-ui/core/AccordionDetails';\r\nimport AccordionSummary from '@material-ui/core/AccordionSummary';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n \"& .MuiAccordionSummary-root\": {\r\n maxHeight: \"20px\",\r\n minHeight: \"20px\"\r\n },\r\n }\r\n}));\r\n\r\nconst Rule = ({\r\n id,\r\n parentId,\r\n field,\r\n operator,\r\n value,\r\n translations,\r\n schema: {\r\n classNames,\r\n controls,\r\n fields,\r\n onPropChange,\r\n onRuleRemove,\r\n getLevel,\r\n }\r\n}) => {\r\n const classes = useStyles();\r\n const [expanded, setExpanded] = React.useState(false);\r\n let tempVal = value\r\n const onElementChanged = (property, value) => {\r\n onPropChange(property, value, id);\r\n };\r\n\r\n const onValueChanged = (value) => {\r\n tempVal = value\r\n onElementChanged('field', 'CalculatedExpression');\r\n onElementChanged('operator', '#CE#');\r\n onElementChanged('value', value);\r\n };\r\n\r\n const removeRule = (event) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n onRuleRemove(id, parentId);\r\n };\r\n\r\n const handleChange = (panel) => (event, isExpanded) => {\r\n setExpanded(isExpanded ? id : false);\r\n };\r\n\r\n const level = getLevel(id);\r\n return (\r\n <div className={`rule ${classNames.rule}`} data-rule-id={id} data-level={level}>\r\n <div className=\"row\">\r\n <label className=\"col-sm-3\">Calculated Expression</label>\r\n <div className=\"col-sm-8\">\r\n <Accordion className={classes.root} expanded={expanded === id} onChange={handleChange(id)}>\r\n <AccordionSummary\r\n expandIcon={<ExpandMoreIcon />}\r\n aria-controls=\"panel1bh-content\"\r\n id=\"panel1bh-header\"\r\n > <small>{tempVal}</small>\r\n </AccordionSummary>\r\n <AccordionDetails>\r\n <div className=\"m-4\">\r\n <Editor items={[7, 8, 9, '+', '>', 4, 5, 6, '-', '<', 1, 2, 3, '/', '=', 0, '.', '[', ']', '*', '%', 'del', 'Insert']}\r\n rows={6} options={fields} //.filter(fld => fld.type === 'number')\r\n Value={tempVal}\r\n changeValue={(value) => { onValueChanged(value) }} />\r\n </div>\r\n </AccordionDetails>\r\n </Accordion>\r\n </div>\r\n <div className=\"col-sm-1\">\r\n <controls.removeRuleAction\r\n label={translations.removeRule.label}\r\n title={translations.removeRule.title}\r\n className={`rule-remove ${classNames.removeRule}`}\r\n handleOnClick={removeRule}\r\n level={level}\r\n />\r\n </div>\r\n </div>\r\n </div >\r\n );\r\n};\r\n\r\nRule.defaultProps = {\r\n id: null,\r\n parentId: null,\r\n field: null,\r\n operator: null,\r\n value: null,\r\n schema: null\r\n};\r\n\r\nRule.displayName = 'Rule';\r\n\r\nexport default Rule;\r\n","import React, { Fragment } from 'react';\r\nimport Rule from './Rule';\r\nimport Calculated from './Calculated';\r\n\r\nconst RuleGroup = ({ id, parentId, combinator, rules, translations, schema, not }) => {\r\n const {\r\n classNames,\r\n combinators,\r\n controls,\r\n createRule,\r\n createRuleGroup,\r\n createCalculated,\r\n getLevel,\r\n isRuleGroup,\r\n isCalculated,\r\n onGroupAdd,\r\n onGroupRemove,\r\n onPropChange,\r\n onRuleAdd,\r\n onCalculateAdd,\r\n showCombinatorsBetweenRules,\r\n showNotToggle\r\n } = schema;\r\n\r\n const hasParentGroup = () => !!parentId;\r\n\r\n const onCombinatorChange = (value) => {\r\n onPropChange('combinator', value, id);\r\n };\r\n\r\n const onNotToggleChange = (checked) => {\r\n onPropChange('not', checked, id);\r\n };\r\n\r\n const addRule = (event) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n const newRule = createRule();\r\n onRuleAdd(newRule, id);\r\n };\r\n\r\n const addGroup = (event) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n const newGroup = createRuleGroup();\r\n onGroupAdd(newGroup, id);\r\n };\r\n\r\n const addCalculated = (event) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n const newRule = createCalculated();\r\n onCalculateAdd(newRule, id);\r\n }\r\n\r\n const removeGroup = (event) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n onGroupRemove(id, parentId);\r\n };\r\n\r\n const level = getLevel(id);\r\n\r\n return (\r\n <div className={`ruleGroup ${classNames.ruleGroup}`} data-rule-group-id={id} data-level={level}>\r\n <div className={`ruleGroup-header ${classNames.header}`}>\r\n {showCombinatorsBetweenRules ? null : (\r\n <controls.combinatorSelector\r\n options={combinators}\r\n value={combinator}\r\n title={translations.combinators.title}\r\n className={`ruleGroup-combinators ${classNames.combinators}`}\r\n handleOnChange={onCombinatorChange}\r\n rules={rules}\r\n level={level}\r\n />\r\n )}\r\n {!showNotToggle ? null : (\r\n <controls.notToggle\r\n className={`ruleGroup-notToggle ${classNames.notToggle}`}\r\n title={translations.notToggle.title}\r\n checked={not}\r\n handleOnChange={onNotToggleChange}\r\n />\r\n )}\r\n <controls.addRuleAction\r\n label={translations.addRule.label}\r\n title={translations.addRule.title}\r\n className={`ruleGroup-addRule ${classNames.addRule}`}\r\n handleOnClick={addRule}\r\n rules={rules}\r\n level={level}\r\n />\r\n <controls.addGroupAction\r\n label={translations.addGroup.label}\r\n title={translations.addGroup.title}\r\n className={`ruleGroup-addGroup ${classNames.addGroup}`}\r\n handleOnClick={addGroup}\r\n rules={rules}\r\n level={level}\r\n />\r\n <controls.addCalcualtedAction\r\n label={translations.addCalculated.label}\r\n title={translations.addCalculated.title}\r\n className={`ruleGroup-addGroup ${classNames.addCalculated}`}\r\n handleOnClick={addCalculated}\r\n rules={rules}\r\n level={level}\r\n />\r\n {hasParentGroup() ? (\r\n <controls.removeGroupAction\r\n label={translations.removeGroup.label}\r\n title={translations.removeGroup.title}\r\n className={`ruleGroup-remove ${classNames.removeGroup}`}\r\n handleOnClick={removeGroup}\r\n rules={rules}\r\n level={level}\r\n />\r\n ) : null}\r\n </div>\r\n {rules.map((r, idx) => (\r\n <Fragment key={r.id}>\r\n {idx && showCombinatorsBetweenRules ? (\r\n <controls.combinatorSelector\r\n options={combinators}\r\n value={combinator}\r\n title={translations.combinators.title}\r\n className={`ruleGroup-combinators betweenRules ${classNames.combinators}`}\r\n handleOnChange={onCombinatorChange}\r\n rules={rules}\r\n level={level}\r\n />\r\n ) : null}\r\n {\r\n <Fragment>\r\n {isCalculated(r) ? (\r\n <Calculated\r\n id={r.id}\r\n field={r.field}\r\n value={r.value}\r\n operator={r.operator}\r\n schema={schema}\r\n parentId={id}\r\n translations={translations}\r\n />\r\n ) : <Fragment>\r\n {isRuleGroup(r) ? (\r\n <RuleGroup\r\n id={r.id}\r\n schema={schema}\r\n parentId={id}\r\n combinator={r.combinator}\r\n translations={translations}\r\n rules={r.rules}\r\n not={r.not}\r\n />\r\n ) : (\r\n <Rule\r\n id={r.id}\r\n field={r.field}\r\n value={r.value}\r\n operator={r.operator}\r\n schema={schema}\r\n parentId={id}\r\n translations={translations}\r\n />\r\n )} </Fragment>}\r\n </Fragment>\r\n }\r\n\r\n </Fragment>\r\n ))}\r\n </div>\r\n );\r\n};\r\n\r\nRuleGroup.defaultProps = {\r\n id: null,\r\n parentId: null,\r\n rules: [],\r\n combinator: 'and',\r\n schema: {}\r\n};\r\n\r\nRuleGroup.displayName = 'RuleGroup';\r\n\r\nexport default RuleGroup;\r\n","import { isRuleGroup } from '.';\r\n\r\nconst findRule = (id, parent) => {\r\n if (parent.id === id) {\r\n return parent;\r\n }\r\n\r\n for (const rule of parent.rules) {\r\n if (rule.id === id) {\r\n return rule;\r\n } else if (isRuleGroup(rule)) {\r\n const subRule = findRule(id, rule);\r\n if (subRule) {\r\n return subRule;\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport default findRule;\r\n","import { nanoid } from 'nanoid';\r\nimport { isRuleGroup } from '.';\r\n\r\n/**\r\n * Generates a valid query object\r\n * @param {RuleGroupType} query Unvalidated query\r\n * @returns {RuleGroupType}\r\n */\r\nconst generateValidQuery = (query) => {\r\n if (isRuleGroup(query)) {\r\n return {\r\n id: query.id || `g-${nanoid()}`,\r\n rules: query.rules.map((rule) => generateValidQuery(rule)),\r\n combinator: query.combinator,\r\n not: !!query.not\r\n };\r\n }\r\n return {\r\n id: query.id || `r-${nanoid()}`,\r\n ...query\r\n };\r\n};\r\n\r\nexport default generateValidQuery;\r\n","import { isRuleGroup } from '.';\r\n\r\nconst getLevel = (id, index, query) => {\r\n let foundAtIndex = -1;\r\n if (query.id === id) {\r\n foundAtIndex = index;\r\n } else if (isRuleGroup(query)) {\r\n query.rules.forEach((rule) => {\r\n if (foundAtIndex === -1) {\r\n let indexForRule = index;\r\n if (isRuleGroup(rule)) indexForRule++;\r\n foundAtIndex = getLevel(id, indexForRule, rule);\r\n }\r\n });\r\n }\r\n return foundAtIndex;\r\n};\r\n\r\nexport default getLevel;\r\n","/**\r\n * Determines if this is a Rule or RuleGroup\r\n * @param {RuleType|RuleGroupType} ruleOrGroup\r\n * @returns {boolean}\r\n */\r\nconst isRuleGroup = (ruleOrGroup) => {\r\n return !!(ruleOrGroup.combinator && ruleOrGroup.rules);\r\n};\r\n\r\nexport default isRuleGroup;\r\n","/**\r\n * Determines if this is a Rule or RuleGroup\r\n * @param {RuleType|RuleGroupType} ruleOrGroup\r\n * @returns {boolean}\r\n */\r\nconst isCalculated = (ruleOrGroup) => {\r\n return !!(ruleOrGroup.calculate);\r\n };\r\n \r\n export default isCalculated;\r\n ","import cloneDeep from 'lodash/cloneDeep';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useEffect, useState } from 'react';\r\nimport {nanoid} from 'nanoid';\r\nimport { ActionElement, NotToggle, ValueEditor, ValueSelector } from './controls';\r\nimport RuleGroup from './RuleGroup';\r\nimport { findRule, generateValidQuery, getLevel, isRuleGroup, isCalculated } from './utils';\r\n\r\n/**\r\n * @typedef {Object} RuleType\r\n * @property {string} id\r\n * @property {string} field\r\n * @property {string} operator\r\n * @property {any} value\r\n */\r\n/**\r\n * @typedef {Object} RuleGroupType\r\n * @property {string} id\r\n * @property {string} combinator\r\n * @property {(RuleType|RuleGroupType)[]} rules\r\n * @property {boolean} not\r\n */\r\n/**\r\n * @typedef {Object} ControlElements\r\n * @property {React.Component} addGroupAction\r\n * @property {React.Component} removeGroupAction\r\n * @property {React.Component} addRuleAction\r\n * @property {React.Component} removeRuleAction\r\n * @property {React.Component} addCalcualtedAction\r\n * @property {React.Component} removeCalcualtedAction\r\n * @property {React.Component} combinatorSelector\r\n * @property {React.Component} fieldSelector\r\n * @property {React.Component} operatorSelector\r\n * @property {React.Component} valueEditor\r\n * @property {React.Component} notToggle\r\n */\r\n/**\r\n * @typedef {Object} QueryBuilderProps\r\n * @property {RuleGroupType} query\r\n * @property {string[]} fields\r\n * @property {{name: string; label: string;}[]} operators\r\n * @property {{name: string; label: string;}[]} combinators\r\n * @property {ControlElements} controlElements\r\n * @property {(field: string) => {name: string; label: string;}[]} getOperators\r\n * @property {(query: RuleGroupType) => void} onQueryChange\r\n * @property {{}} controlClassnames\r\n * @property {{}} translations\r\n * @property {boolean} showCombinatorsBetweenRules\r\n * @property {boolean} showNotToggle\r\n * @property {boolean} resetOnFieldChange\r\n */\r\n\r\nconst defaultTranslations = {\r\n fields: {\r\n title: 'Fields'\r\n },\r\n operators: {\r\n title: 'Operators'\r\n },\r\n value: {\r\n title: 'Value'\r\n },\r\n removeRule: {\r\n label: 'x',\r\n title: 'Remove rule'\r\n },\r\n removeGroup: {\r\n label: 'x',\r\n title: 'Remove group'\r\n },\r\n addRule: {\r\n label: '+Rule',\r\n title: 'Add rule'\r\n },\r\n addGroup: {\r\n label: '+Group',\r\n title: 'Add group'\r\n },\r\n addCalculated: {\r\n label: '+Calculate',\r\n title: 'Add Calculated Value'\r\n },\r\n removeCalculated: {\r\n label: 'x',\r\n title: 'Remove Calculated'\r\n },\r\n combinators: {\r\n title: 'Combinators'\r\n },\r\n notToggle: {\r\n title: 'Invert this group'\r\n }\r\n};\r\n\r\nconst defaultOperators = [\r\n { name: 'null', label: 'is null' },\r\n { name: 'notNull', label: 'is not null' },\r\n { name: 'in', label: 'in' },\r\n { name: 'notIn', label: 'not in' },\r\n { name: '=', label: '=' },\r\n { name: '!=', label: '!=' },\r\n { name: '<', label: '<' },\r\n { name: '>', label: '>' },\r\n { name: '<=', label: '<=' },\r\n { name: '>=', label: '>=' },\r\n { name: 'contains', label: 'contains' },\r\n { name: 'beginsWith', label: 'begins with' },\r\n { name: 'endsWith', label: 'ends with' },\r\n { name: 'doesNotContain', label: 'does not contain' },\r\n { name: 'doesNotBeginWith', label: 'does not begin with' },\r\n { name: 'doesNotEndWith', label: 'does not end with' }\r\n];\r\n\r\nconst defaultCombinators = [\r\n { name: 'and', label: 'AND' },\r\n { name: 'or', label: 'OR' }\r\n];\r\n\r\nconst defaultControlClassnames = {\r\n queryBuilder: '',\r\n ruleGroup: '',\r\n header: '',\r\n combinators: '',\r\n addRule: '',\r\n addGroup: '',\r\n addCalculated: '',\r\n removeCalculated: '',\r\n removeGroup: '',\r\n notToggle: '',\r\n rule: '',\r\n fields: '',\r\n operators: '',\r\n value: '',\r\n removeRule: ''\r\n};\r\n\r\nconst defaultControlElements = {\r\n addGroupAction: ActionElement,\r\n addCalcualtedAction: ActionElement,\r\n removeCalcualtedAction: ActionElement,\r\n removeGroupAction: ActionElement,\r\n addRuleAction: ActionElement,\r\n removeRuleAction: ActionElement,\r\n combinatorSelector: ValueSelector,\r\n fieldSelector: ValueSelector,\r\n operatorSelector: ValueSelector,\r\n valueEditor: ValueEditor,\r\n notToggle: NotToggle\r\n};\r\n\r\n/**\r\n * @param {QueryBuilderProps} props\r\n */\r\nconst QueryBuilder = (props) => {\r\n /**\r\n * Gets the initial query\r\n * @returns {RuleGroupType}\r\n */\r\n const getInitialQuery = () => {\r\n const { query } = props;\r\n return (query && generateValidQuery(query)) || createRuleGroup();\r\n };\r\n\r\n /**\r\n * @returns {RuleType}\r\n */\r\n const createRule = () => {\r\n const { fields } = props;\r\n if(fields && fields.length>0){\r\n const field = fields[0].name;\r\n\r\n return {\r\n id: `r-${nanoid()}`,\r\n field,\r\n value: '',\r\n operator: getOperators(field)[0].name\r\n };\r\n }\r\n return {\r\n id: `r-${nanoid()}`,\r\n field:\"field\",\r\n value: '',\r\n operator:[]\r\n };\r\n };\r\n\r\n /**\r\n * @returns {RuleGroupType}\r\n */\r\n const createRuleGroup = () => {\r\n return {\r\n id: `g-${nanoid()}`,\r\n rules: [],\r\n combinator: props.combinators[0].name,\r\n not: false\r\n };\r\n };\r\n\r\n /**\r\n * @returns {CalcualtedGroupType}\r\n */\r\n const createCalculated = () => {\r\n const { fields } = props;\r\n const field = fields[0].name;\r\n\r\n return {\r\n id: `r-${nanoid()}`,\r\n field,\r\n value: '',\r\n calculate: true,\r\n operator: getOperators(field)[0].name\r\n };\r\n };\r\n\r\n /**\r\n * Gets the ValueEditor type for a given field and operator\r\n * @param {string} field\r\n * @param {string} operator\r\n * @returns {string}\r\n */\r\n const getValueEditorType = (field, operator) => {\r\n if (props.getValueEditorType) {\r\n const vet = props.getValueEditorType(field, operator);\r\n if (vet) return vet;\r\n }\r\n\r\n return 'text';\r\n };\r\n\r\n /**\r\n * Gets the `<input />` type for a given field and operator\r\n * @param {string} field\r\n * @param {string} operator\r\n * @returns {string}\r\n */\r\n const getInputType = (field, operator) => {\r\n if (props.getInputType) {\r\n const inputType = props.getInputType(field, operator);\r\n if (inputType) return inputType;\r\n }\r\n\r\n return 'text';\r\n };\r\n\r\n /**\r\n * Gets the list of valid values for a given field and operator\r\n * @param {string} field\r\n * @param {string} operator\r\n * @returns {{name: string; label: string;}[]}\r\n */\r\n const getValues = (field, operator) => {\r\n if (props.getValues) {\r\n const vals = props.getValues(field, operator);\r\n if (vals) return vals;\r\n }\r\n\r\n return [];\r\n };\r\n\r\n /**\r\n * Gets the operators for a given field\r\n * @param {string} field\r\n * @returns {{name: string; label: string;}[]}\r\n */\r\n const getOperators = (field) => {\r\n if (props.getOperators) {\r\n const ops = props.getOperators(field);\r\n if (ops) return ops;\r\n }\r\n\r\n return props.operators;\r\n };\r\n\r\n /**\r\n * @param {RuleType} rule\r\n * @returns {string|boolean}\r\n */\r\n const getRuleDefaultValue = (rule) => {\r\n let value = '';\r\n\r\n const values = getValues(rule.field, rule.operator);\r\n\r\n if (values.length) {\r\n value = values[0].name;\r\n } else {\r\n const editorType = getValueEditorType(rule.field, rule.operator);\r\n\r\n if (editorType === 'checkbox') {\r\n value = false;\r\n }\r\n }\r\n\r\n return value;\r\n }\r\n\r\n /**\r\n * Adds a rule to the query\r\n * @param {RuleType} rule Rule to add\r\n * @param {string} parentId ID of the parent rule group\r\n */\r\n const onRuleAdd = (rule, parentId) => {\r\n const rootCopy = { ...root };\r\n const parent = findRule(parentId, rootCopy);\r\n parent.rules.push({\r\n ...rule,\r\n value: getRuleDefaultValue(rule),\r\n });\r\n setRoot(rootCopy);\r\n _notifyQueryChange(rootCopy);\r\n };\r\n\r\n /**\r\n * Adds a rule group to the query\r\n * @param {RuleGroupType} group Rule group to add\r\n * @param {string} parentId ID of the parent rule group\r\n */\r\n const onGroupAdd = (group, parentId) => {\r\n const rootCopy = { ...root };\r\n const parent = findRule(parentId, rootCopy);\r\n parent.rules.push(group);\r\n setRoot(rootCopy);\r\n _notifyQueryChange(rootCopy);\r\n };\r\n\r\n /**\r\n * Adds a calculate to the query\r\n * @param {RuleGroupType} group Rule group to add\r\n * @param {string} parentId ID of the parent rule group\r\n */\r\n const onCalculateAdd = (rule, parentId) => {\r\n const rootCopy = { ...root };\r\n const parent = findRule(parentId, rootCopy);\r\n parent.rules.push({\r\n ...rule,\r\n value: null,\r\n });\r\n setRoot(rootCopy);\r\n _notifyQueryChange(rootCopy);\r\n };\r\n\r\n /**\r\n * @param {string} prop Property that changed\r\n * @param {any} value Value of the property\r\n * @param {string} ruleId ID of the rule\r\n */\r\n const onPropChange = (prop, value, ruleId) => {\r\n const rootCopy = { ...root };\r\n const rule = findRule(ruleId, rootCopy);\r\n Object.assign(rule, { [prop]: value });\r\n\r\n // Reset operator and set default value for field change\r\n if (props.resetOnFieldChange && prop === 'field') {\r\n Object.assign(rule, {\r\n operator: getOperators(rule.field)[0].name,\r\n value: getRuleDefaultValue(rule),\r\n });\r\n }\r\n\r\n setRoot(rootCopy);\r\n _notifyQueryChange(rootCopy);\r\n };\r\n\r\n /**\r\n * Removes a rule from the query\r\n * @param {string} ruleId ID of rule to remove\r\n * @param {string} parentId ID of the parent rule group\r\n */\r\n const onRuleRemove = (ruleId, parentId) => {\r\n const rootCopy = { ...root };\r\n const parent = findRule(parentId, rootCopy);\r\n const index = parent.rules.findIndex((x) => x.id === ruleId);\r\n\r\n parent.rules.splice(index, 1);\r\n\r\n setRoot(rootCopy);\r\n _notifyQueryChange(rootCopy);\r\n };\r\n\r\n /**\r\n * Removes a rule from the query\r\n * @param {string} ruleId ID of rule to remove\r\n * @param {string} parentId ID of the parent rule group\r\n */\r\n const onCalculatedRemove = (ruleId, parentId) => {\r\n const rootCopy = { ...root };\r\n const parent = findRule(parentId, rootCopy);\r\n const index = parent.rules.findIndex((x) => x.id === ruleId);\r\n\r\n parent.rules.splice(index, 1);\r\n\r\n setRoot(rootCopy);\r\n _notifyQueryChange(rootCopy);\r\n };\r\n\r\n /**\r\n * Removes a rule group from the query\r\n * @param {string} groupId ID of rule group to remove\r\n * @param {string} parentId ID of the parent rule group\r\n */\r\n const onGroupRemove = (groupId, parentId) => {\r\n const rootCopy = { ...root };\r\n const parent = findRule(parentId, rootCopy);\r\n const index = parent.rules.findIndex((x) => x.id === groupId);\r\n\r\n parent.rules.splice(index, 1);\r\n\r\n setRoot(rootCopy);\r\n _notifyQueryChange(rootCopy);\r\n };\r\n\r\n /**\r\n * Gets the level of the rule with the provided ID\r\n * @param {string} id Rule ID\r\n */\r\n const getLevelFromRoot = (id) => {\r\n return getLevel(id, 0, root);\r\n };\r\n\r\n /**\r\n * Executes the `onQueryChange` function, if provided\r\n */\r\n const _notifyQueryChange = (newRoot) => {\r\n const { onQueryChange } = props;\r\n if (onQueryChange) {\r\n const query = cloneDeep(newRoot);\r\n onQueryChange(query);\r\n }\r\n };\r\n\r\n const [root, setRoot] = useState(getInitialQuery());\r\n\r\n const schema = {\r\n fields: props.fields,\r\n combinators: props.combinators,\r\n classNames: { ...defaultControlClassnames, ...props.controlClassnames },\r\n createRule,\r\n createRuleGroup,\r\n createCalculated,\r\n onCalculateAdd,\r\n onRuleAdd,\r\n onGroupAdd,\r\n onRuleRemove,\r\n onGroupRemove,\r\n onCalculatedRemove,\r\n onPropChange,\r\n getLevel: getLevelFromRoot,\r\n isRuleGroup,\r\n isCalculated,\r\n controls: { ...defaultControlElements, ...props.controlElements },\r\n getOperators,\r\n getValueEditorType,\r\n getInputType,\r\n getValues,\r\n showCombinatorsBetweenRules: props.showCombinatorsBetweenRules,\r\n showNotToggle: props.showNotToggle\r\n };\r\n\r\n // Set the query state when a new query prop comes in\r\n useEffect(() => {\r\n setRoot(generateValidQuery(props.query || getInitialQuery()));\r\n }, [props.query]);\r\n\r\n // Notify a query change on mount\r\n useEffect(() => {\r\n _notifyQueryChange(root);\r\n }, []);\r\n\r\n return (\r\n <div className={`queryBuilder ${schema.classNames.queryBuilder}`}>\r\n <RuleGroup\r\n translations={{ ...defaultTranslations, ...props.translations }}\r\n rules={root.rules}\r\n combinator={root.combinator}\r\n schema={schema}\r\n id={root.id}\r\n parentId={null}\r\n not={root.not}\r\n />\r\n </div>\r\n );\r\n};\r\n\r\nQueryBuilder.defaultProps = {\r\n query: null,\r\n fields: [],\r\n operators: defaultOperators,\r\n combinators: defaultCombinators,\r\n translations: defaultTranslations,\r\n controlElements: null,\r\n getOperators: null,\r\n getValueEditorType: null,\r\n getInputType: null,\r\n getValues: null,\r\n onQueryChange: null,\r\n controlClassnames: null,\r\n showCombinatorsBetweenRules: false,\r\n showNotToggle: false,\r\n resetOnFieldChange: true\r\n};\r\n\r\nQueryBuilder.propTypes = {\r\n query: PropTypes.object,\r\n fields: PropTypes.array.isRequired,\r\n operators: PropTypes.arrayOf(\r\n PropTypes.shape({ name: PropTypes.string, label: PropTypes.string })\r\n ),\r\n combinators: PropTypes.arrayOf(\r\n PropTypes.shape({ name: PropTypes.string, label: PropTypes.string })\r\n ),\r\n controlElements: PropTypes.shape({\r\n addGroupAction: PropTypes.func,\r\n removeGroupAction: PropTypes.func,\r\n addRuleAction: PropTypes.func,\r\n removeRuleAction: PropTypes.func,\r\n combinatorSelector: PropTypes.func,\r\n fieldSelector: PropTypes.func,\r\n operatorSelector: PropTypes.func,\r\n valueEditor: PropTypes.func,\r\n notToggle: PropTypes.func\r\n }),\r\n getOperators: PropTypes.func,\r\n getValueEditorType: PropTypes.func,\r\n getInputType: PropTypes.func,\r\n getValues: PropTypes.func,\r\n onQueryChange: PropTypes.func,\r\n controlClassnames: PropTypes.object,\r\n translations: PropTypes.object,\r\n showCombinatorsBetweenRules: PropTypes.bool,\r\n showNotToggle: PropTypes.bool,\r\n resetOnFieldChange: PropTypes.bool\r\n};\r\n\r\nQueryBuilder.displayName = 'QueryBuilder';\r\n\r\nexport default QueryBuilder;\r\n","import React, { useState, Component } from 'react';\r\nimport QueryBuilder, { formatQuery } from './querybuilder/QueryBuilder';\r\n\r\n\r\nexport default function MainBuilder(props) {\r\n const { fields, query, disabled } = props\r\n\r\n const getValues = (field) => {\r\n let returntype = fields && fields.length > 0 && fields.filter(a => a.name === field)\r\n if (returntype && returntype.length > 0 && returntype[0].editorType && returntype[0].values && returntype[0].values.length > 0) {\r\n let values = returntype[0].values.map(res => {\r\n return { name: res.value, label: res.name }\r\n })\r\n return values\r\n }\r\n else return []\r\n };\r\n\r\n const getOperatorsfields = (field) => {\r\n let returntype = fields && fields.length > 0 && fields.filter(a => a.name === field)\r\n if (returntype && returntype.length > 0 && returntype[0].operators)\r\n return returntype[0].operators\r\n else return [{ name: \"=\", label: \"=\", value: \"=\" }]\r\n };\r\n\r\n const getValueEditorType = (field) => {\r\n let returntype = fields && fields.length > 0 && fields.filter(a => a.name === field)\r\n if (returntype && returntype.length > 0 && returntype[0].editorType)\r\n return returntype[0].editorType\r\n else return 'text'\r\n };\r\n\r\n const getInputType = (field) => {\r\n let returntype = fields && fields.length > 0 && fields.filter(a => a.name === field)\r\n if (returntype && returntype.length > 0 && returntype[0].type)\r\n return returntype[0].type\r\n else return 'text'\r\n };\r\n\r\n const handleQueryChange = (query) => {\r\n props.onQueryChange(query)\r\n };\r\n\r\n return (\r\n <QueryBuilder\r\n query={query}\r\n fields={fields}\r\n disabled={disabled}\r\n onQueryChange={handleQueryChange}\r\n getOperators={getOperatorsfields}\r\n getValueEditorType={getValueEditorType}\r\n getInputType={getInputType}\r\n getValues={getValues}\r\n showCombinatorsBetweenRules={true} showCloneButtons={true} enableDragAndDrop={true}\r\n />\r\n )\r\n}\r\n","import {DownloadWithSideBarData} from '../../controls/components/custom/downloadshelper'\r\nimport { requestApi } from './utilities';\r\nexport const Download = (params, type, getIdUrl) => {\r\nif(type == 'DownloadWithSideBarData') {\r\n let requesturl = {get : {\"url\" : getIdUrl}}\r\n requestApi(requesturl, null, null, null, true).then(results => {\r\n let downloadObject = {DownloadId: results.TemplateId, Group: \"AAH Volunteer\"}\r\n DownloadWithSideBarData(downloadObject, params.routeid, params.routeid1, {\"AppWorkNotification\" : params.worknotifId });\r\n })\r\n\r\n}\r\n}","import React, { useRef, useEffect, useState } from 'react';\r\nimport Button from '@material-ui/core/Button';\r\nimport { useHistory, useParams } from \"react-router-dom\";\r\nimport Icon from '@material-ui/core/Icon';\r\nimport Fab from '@material-ui/core/Fab';\r\nimport { Download } from '../../modules/form/printfunctions';\r\nimport MissingItemsDrawer from './custom/missinglists';\r\nimport { Tooltip } from '@material-ui/core';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport DefaultSettings from './settings';\r\n\r\nexport default function Buttons(props) {\r\n const { value, handleFieldValue, handleButtonClick, handleButtonSave, extraProps, changefieldto, shareProps, useFieldVals, fieldValues, fieldProps, urlparams, type, ...otherProps } = props\r\n const { variant, color } = extraProps\r\n const { label, callRequest, disabled, buttontype, clickval, getIdUrl, buttonfunction, isIcon, size, navurl, optionalRoutes, name, icon, isButton, tooltip, contexthelp,\r\n stylecolor, hidecondition, ...otherOptions } = otherProps\r\n let history = useHistory();\r\n const params = useParams();\r\n let disable = disabled\r\n const [disabledvalue, setDisabledvalue] = useState(disable)\r\n\r\n useEffect(() => {\r\n setDisabledvalue(disable)\r\n }, [disable])\r\n\r\n useEffect(() => {\r\n if (hidecondition) {\r\n // getdatafrom[Name] != Value : getdatafrom[Name] == Value\r\n hidecondition.forEach(element => {\r\n const { prevcondition, Name, Value, getfrom, notEquals } = element\r\n let getdatafrom = getfrom === \"accessPermissions\" ? props.accessPermissions : getfrom === \"routeparams\" ? props.routeparams : getfrom === \"dataItem\" ? props.dataItem : getfrom === \"localstorage\" ? 'localstorage' : null\r\n if (getdatafrom) {\r\n disable = prevcondition && prevcondition === 'or' && disable == true ? true : prevcondition === 'and' && disable === false ? false :\r\n (notEquals ? getfrom === \"localstorage\" ? localStorage.getItem(Name) !== Value :\r\n getdatafrom[Name] !== Value : getfrom === \"localstorage\" ? localStorage.getItem(Name) == Value : getdatafrom[Name] == Value) ? true : false\r\n }\r\n setDisabledvalue(disable)\r\n })\r\n }\r\n }, [])\r\n\r\n const routing = (navurl) => {\r\n let newpath = ''\r\n if (useFieldVals)\r\n for (let key in fieldValues) {\r\n if (navurl) {\r\n if (optionalRoutes && Object.keys(fieldValues).includes(optionalRoutes) && fieldValues[optionalRoutes])\r\n navurl = `${navurl.replace(`{${key}}`, fieldValues[optionalRoutes])}`;\r\n else navurl = `${navurl.replace(`{${key}}`, fieldValues[key])}`;\r\n newpath = navurl;\r\n }\r\n }\r\n else\r\n for (let key in params) {\r\n if (navurl) navurl = `${navurl.replace(`{${key}}`, params[key])}`;\r\n newpath = navurl;\r\n }\r\n return newpath\r\n }\r\n\r\n const handleClick = (e) => {\r\n if (buttontype === 'routing') {\r\n let routepath = routing(navurl)\r\n history.push(routepath)\r\n }\r\n else if (buttontype === 'save') {\r\n return handleButtonSave(e)\r\n }\r\n else if (buttontype === 'customfunction') {\r\n Download(params, buttonfunction, getIdUrl)\r\n }\r\n else if (buttontype === 'setValue' || changefieldto === 'LB-BU') {// in record screen to execute business rules as per section\r\n handleFieldValue({ target: { value: changefieldto === 'LB-BU' ? null : clickval, name: name, checked: false, }, currentTarget: { dataset: null } })\r\n }\r\n else return handleButtonClick({ currentTarget: { name: name } }, callRequest)\r\n }\r\n\r\n if (isIcon) {\r\n return <Fab onClick={handleClick} size={size ? size : 'large'} color={disabledvalue ? 'default' : (color || stylecolor)}\r\n name={name} title={label} disabled={disabledvalue ? true : false} {...otherOptions}>\r\n < Icon > {icon}</Icon >\r\n </Fab >\r\n }\r\n else if (icon === 'required' || icon === 'dcrequired') {\r\n return <MissingItemsDrawer fieldValues={fieldValues} urlparams={urlparams} label={label} isButton={isButton} fieldProps={fieldProps} name={name} />\r\n }\r\n return (\r\n <div>\r\n <Button onClick={handleClick}\r\n color={(disabledvalue || disabled) ? '' : color || 'primary'}\r\n variant={variant || 'outlined'}\r\n name={name}\r\n disabled={(disabledvalue || disabled) ? true : false}\r\n >\r\n {label}\r\n </Button> {tooltip && <Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em', color: '#007bff' }} onClick={(evt) => contexthelp ? DefaultSettings.showDrawer(contexthelp) : evt.preventDefault()} />\r\n </Tooltip>}\r\n </div >\r\n );\r\n}","/**\r\n *********************************************************\r\n Description: Contains different validations\r\n Required props: text or value.\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\nexport const isRequired = (value, required, message) => {\r\n if (required === 'Y') {\r\n if ((value == null) || (value === '')) return message\r\n return null\r\n }\r\n else return null\r\n\r\n}\r\n\r\nexport const minLength = (text, length, message) => {\r\n if (!text || (text.length < length))\r\n return message\r\n return null\r\n}\r\n\r\nexport const maxLength = (text, length, message) => {\r\n if (text && (text.length > length))\r\n return message\r\n return null\r\n}\r\n\r\nexport const isPercentage = (value, percent, message) => {\r\n if (value >= 0 && value < 1) return null\r\n else return message\r\n}\r\n\r\nexport const isRange = (value, range, message, min, max) => {\r\n value = Number(value)\r\n if (value >= min && value <= max) return null\r\n else return message\r\n}\r\n\r\n\r\nexport const isNumber = (value, num, message) => {\r\n //console.log('parseFloat(value)',parseFloat(value))\r\n const exp = isNaN(Number(value))\r\n if (exp)\r\n return message\r\n return null;\r\n}\r\n\r\nexport const isString = (value, str, message) => {\r\n const letters = /^[A-Za-z]+$/;\r\n if (value.match(letters)) {\r\n return null;\r\n }\r\n else return message\r\n}\r\n\r\nexport const isInteger = (value, int, message) => {\r\n const val = Number.isInteger(value)\r\n if (val) return null\r\n else return message\r\n}\r\n\r\nexport const regExp = (value, exp, message) => {\r\n if (message.includes(\"Email\")) {\r\n let emailexp = /^([\\w-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w-]+\\.)+))([a-zA-Z]{2,10}|[0-9]{1,2})(\\]?)$/;\r\n if (value != null && value != \"\" && !emailexp.test(value)) {\r\n return message\r\n }\r\n return null\r\n }\r\n else {\r\n let newreg = new RegExp(exp)\r\n if (value != null && value != \"\" && !newreg.test(value))\r\n return message\r\n return null\r\n }\r\n}\r\n\r\n\r\nexport const zipCode = (value, zip, message) => {\r\n let exp = /(^\\d{5}$)|(^\\d{5}-\\d{4}$)/\r\n if (value != null && value != \"\" && !exp.test(value))\r\n return message\r\n return null\r\n}\r\n\r\nexport const zipCode4 = (value, zip, message) => {\r\n let exp = /(^\\d{4}$)|(^\\d{4}-\\d{3}$)/\r\n if (value != null && value != \"\" && !exp.test(value))\r\n return message\r\n return null\r\n}\r\n\r\n\r\nexport const emailAddress = (text, email, message) => {\r\n let exp = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n if (text != null && text != \"\" && !exp.test(text)) {\r\n return message\r\n }\r\n return null\r\n}\r\n\r\n\r\nexport const ipAddress = (ipaddress, addr, message) => {\r\n let exp = (/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(ipaddress))\r\n if (!exp)\r\n return message\r\n return null;\r\n}\r\nexport const urlData = (urlValue, url, message) => {\r\n let exp = new RegExp(\"^(http[s]?:\\\\/\\\\/(www\\\\.)?|ftp:\\\\/\\\\/(www\\\\.)?|(www\\\\.)?){1}([0-9A-Za-z-\\\\.@:%_\\+~#=]+)+((\\\\.[a-zA-Z]{2,3})+)(/(.)*)?(\\\\?(.)*)?\");\r\n if (!exp.test(urlValue))\r\n return message\r\n return null;\r\n}\r\nexport const phoneMask = (value, phone, message) => {\r\n let exp = ('(', /[0-9]/, /\\d/, /\\d/, ')', ' ', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, /\\d/);\r\n if (!exp.test(value))\r\n return message\r\n return null;\r\n}\r\n\r\nexport const stringLength = (value, range, message, min, max) => {\r\n if (value !== null) {\r\n if (typeof value === 'number') {\r\n if (value >= min && value <= max)\r\n return null\r\n }\r\n else if (value.length >= min && value.length <= max) return null\r\n return message\r\n }\r\n}","\r\nimport { isRequired as IsRequired } from './validations'\r\nimport { isNumber as IsNumber } from './validations'\r\nimport { minLength as MinLength } from './validations'\r\nimport { maxLength as maxLength } from './validations'\r\nimport { isPercentage as IsPercentage } from './validations'\r\nimport { isString as IsString } from './validations'\r\nimport { regExp as RegExpression } from './validations'\r\nimport { isRange as IsRange } from './validations'\r\nimport { urlData as urlData } from './validations'\r\nimport { phoneMask as phoneMask } from './validations'\r\nimport { stringLength as stringLength } from './validations'\r\n//import { emailAddress as IsEmail } from './validations'\r\n\r\nconst validationrules = {\r\n Type: {\r\n R: {\r\n IsRequired: IsRequired\r\n },\r\n D: {\r\n Mask: {\r\n P: IsPercentage,\r\n BI: IsNumber,\r\n DN: IsNumber,\r\n I: IsNumber,\r\n R: IsNumber,\r\n N: IsNumber,\r\n C: IsNumber,\r\n VC: IsString,\r\n NVC: IsString,\r\n L: IsNumber,\r\n X: RegExpression\r\n // TB: IsEmail,\r\n //nvarchar: IsString\r\n }\r\n },\r\n L: {\r\n Minlen: MinLength,\r\n Maxlen: maxLength,\r\n },\r\n X: {\r\n RegExp: RegExpression\r\n },\r\n G: {\r\n IsRange: IsRange\r\n },\r\n M: {\r\n Mask: phoneMask\r\n },\r\n U: {\r\n Url: urlData\r\n },\r\n Z: {\r\n Str: stringLength\r\n },\r\n }\r\n}\r\n\r\n\r\nexport const globalValidate = (validations, fieldValues) => {\r\n const errors = {}\r\n const validationskeys = Object.keys(validations).map(each => each.toUpperCase())\r\n const fieldValueskeys = Object.keys(fieldValues)\r\n const uppercasefieldValueskeys = fieldValueskeys.map(each => each.toUpperCase())\r\n validationskeys.forEach(each => {\r\n const index = uppercasefieldValueskeys.indexOf(each)\r\n const fieldName = fieldValueskeys[index]\r\n const eachfieldvalidations = validations[fieldName]\r\n if (eachfieldvalidations) {\r\n const requiredRule = eachfieldvalidations.filter(r => r.Type == \"R\");\r\n const isRequired = (requiredRule != null && requiredRule.length > 0)\r\n eachfieldvalidations.some(e => {\r\n const fieldValue = fieldValues[fieldName]\r\n if (fieldName && ((!fieldValue && isRequired) || (fieldValue))) {\r\n errors[fieldName] = globaleachvalidate(fieldName, e, fieldValue)\r\n if (errors[fieldName].error) return true\r\n\r\n }\r\n\r\n })\r\n }\r\n })\r\n return errors\r\n}\r\n/**\r\n *********************************************************\r\n Description: Handles one validation based on type.\r\n Required props: fieldName, validation, fieldValue.\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\n\r\n// export const fieldValidate = (rules, value) => {\r\n// let errorObj = null\r\n// if (rules && rules.length > 0) {\r\n// for (let i = 0; i < rules.length; i++) {\r\n// let rule = rules[i]\r\n// errorObj = globaleachvalidate(rule, value)\r\n// if (errorObj.error) {\r\n// return errorObj\r\n// }\r\n// }\r\n// }\r\n// else return false\r\n// }\r\n\r\nexport const fieldValidate = (rules, value) => {\r\n let errorObj = null\r\n if (rules && rules[0] && Array.isArray(rules[0])) {\r\n for (let rule of rules[0]) {\r\n errorObj = globaleachvalidate(rule, value)\r\n if (errorObj.errorText !== '') {\r\n return errorObj\r\n }\r\n }\r\n }\r\n else {\r\n rules && rules.some(rule => {\r\n errorObj = globaleachvalidate(rule, value)\r\n if (errorObj.errorText !== '') return true\r\n else return false\r\n })\r\n }\r\n return errorObj\r\n}\r\n\r\nexport const globaleachvalidate = (validation, fieldValue) => {\r\n let errorText = ''\r\n let error = false\r\n const validationtype = validation.Type\r\n let validationtypevariants\r\n let callvalidationfn\r\n if (validation.Type === 'D') {\r\n validationtypevariants = validationrules['Type'][validationtype].Mask\r\n callvalidationfn = validation.Mask\r\n if (validationtypevariants[callvalidationfn]) {\r\n errorText = validationtypevariants[callvalidationfn](fieldValue, validation['Mask'][callvalidationfn], validation.Message)\r\n if (errorText) {\r\n return {\r\n error: true,\r\n errorText: errorText\r\n }\r\n }\r\n else {\r\n return {\r\n error: error,\r\n errorText: errorText\r\n }\r\n }\r\n }\r\n }\r\n if (validation.Type === 'L') {\r\n validationtypevariants = validationrules['Type'][validationtype]\r\n if (validation.Maxlen > 0) callvalidationfn = 'Maxlen'\r\n if (validation.Minlen > 0) callvalidationfn = 'Minlen'\r\n\r\n }\r\n if (validation.Type === 'R') {\r\n validationtypevariants = validationrules['Type'][validationtype]\r\n callvalidationfn = 'IsRequired'\r\n\r\n }\r\n if (validation.Type === 'G') {\r\n validationtypevariants = validationrules['Type'][validationtype]\r\n callvalidationfn = 'IsRange'\r\n\r\n }\r\n if (validation.Type === 'U') {\r\n validationtypevariants = validationrules['Type'][validationtype]\r\n callvalidationfn = 'Url'\r\n\r\n }\r\n if (validation.Type === 'X') {\r\n validationtypevariants = validationrules['Type'][validationtype]\r\n callvalidationfn = 'RegExp'\r\n\r\n }\r\n\r\n if (validation.Type === 'M') {\r\n validationtypevariants = validationrules['Type'][validationtype]\r\n callvalidationfn = 'Mask'\r\n\r\n }\r\n if (validation.Type === 'Z') {\r\n validationtypevariants = validationrules['Type'][validationtype]\r\n callvalidationfn = 'Str'\r\n }\r\n if (validationtypevariants) {\r\n //const validationtypekeys = Object.keys(validationtypevariants)\r\n //error = validationtypekeys.some(each => {\r\n if (validationtypevariants[callvalidationfn]) {\r\n let callvalidationAttr = callvalidationfn\r\n if (callvalidationfn === 'RegExp')\r\n callvalidationAttr = 'Mask';\r\n errorText = validationtypevariants[callvalidationfn](fieldValue, validation[callvalidationAttr], validation.Message, validation.Minlen, validation.Maxlen)\r\n if (errorText) {\r\n return {\r\n error: true,\r\n errorText: errorText\r\n }\r\n }\r\n else {\r\n return {\r\n error: error,\r\n errorText: errorText\r\n }\r\n }\r\n }\r\n //})\r\n }\r\n return { errorText, error }\r\n\r\n}\r\n\r\n\r\n","export const getInitialState = (components) => {\r\n const state = {}\r\n Object.keys(components).forEach(each => {\r\n const { name, initialValue, type } = components[each]\r\n state[name] = initialValue && (initialValue != '' || initialValue != undefined) ? initialValue : ''\r\n })\r\n return state\r\n}\r\n\r\nexport const groupByType = (values) => {\r\n return values.reduce((accum, each) => {\r\n const { type, ...otherProps } = each\r\n if (accum[type]) {\r\n accum[type].push(otherProps)\r\n }\r\n else {\r\n accum[type] = []\r\n accum[type].push(otherProps)\r\n }\r\n return accum\r\n }, {})\r\n}","import { getEnvVariable } from \"../../../../modules/environmentalList\";\r\n \r\nexport const getColor = () => {\r\n let module = getEnvVariable('ModuleKey')\r\n switch (module) {\r\n case 'WRS':\r\n return 'red' \r\n \r\n default:\r\n return 'black';\r\n }\r\n}","import React from \"react\"\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport SaveIcon from '@material-ui/icons/Save';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport Fab from '@material-ui/core/Fab';\r\nimport ChevronLeftIcon from '@material-ui/icons/ChevronLeft';\r\nimport FileCopyIcon from '@material-ui/icons/FileCopy';\r\nimport GetAppIcon from '@material-ui/icons/GetApp';\r\nimport RefreshIcon from '@material-ui/icons/Refresh';\r\nimport SaveReportIcon from '@material-ui/icons/Description';\r\nimport ExportExcel from '@material-ui/icons/SaveAlt';\r\nimport FilterListIcon from '@material-ui/icons/ClearAll';\r\nimport DraftsIcon from '@material-ui/icons/Drafts';\r\nimport MarkunreadIcon from '@material-ui/icons/Markunread';\r\nimport CancelIcon from '@material-ui/icons/Cancel';\r\nimport Badge from '@material-ui/core/Badge';\r\nimport HistoryIcon from '@material-ui/icons/History';\r\nimport DoneAll from '@material-ui/icons/DoneAll';\r\nimport CheckBox from '@material-ui/icons/CheckBox';\r\nimport FilterList from '@material-ui/icons/FilterList';\r\nimport VisibilityIcon from '@material-ui/icons/Visibility';\r\nimport QuickView from \"./quickview\";\r\nimport DeleteForeverIcon from '@material-ui/icons/DeleteForever';\r\nimport { getEnvVariable } from \"../../../modules/environmentalList\";\r\n\r\nconst fieldTypes = {\r\n edit: EditIcon,\r\n add: AddIcon,\r\n save: SaveIcon,\r\n close: CloseIcon,\r\n back: ChevronLeftIcon,\r\n duplicate: FileCopyIcon,\r\n download: GetAppIcon,\r\n refresh: RefreshIcon,\r\n reports: SaveReportIcon,\r\n excel: ExportExcel,\r\n clear: FilterListIcon,\r\n markread: DraftsIcon,\r\n markunread: MarkunreadIcon,\r\n cancel: CancelIcon,\r\n history: HistoryIcon,\r\n check_box: CheckBox,\r\n doneall: DoneAll,\r\n Filter: FilterList,\r\n quickview: QuickView,\r\n delete: DeleteForeverIcon\r\n}\r\n\r\nconst validate = (name, value, condition) => {\r\n switch (condition) {\r\n case 'not in':\r\n if (!value.includes(name))\r\n return true\r\n else return false\r\n default:\r\n return false\r\n }\r\n\r\n}\r\n\r\nexport default function Icons(props) {\r\n\r\n const { icon, type, title, color, name, hidevalue, sharedProps, hideon, isLocalStorage, condition, IsBuildMGR, ...otherProps } = props\r\n const EachComp = fieldTypes[icon];\r\n if (sharedProps && hidevalue && (sharedProps[hideon] === hidevalue)) {\r\n return null\r\n }\r\n else if (isLocalStorage && isLocalStorage.value === localStorage.getItem(isLocalStorage.name)) {\r\n return null\r\n }\r\n else if (condition && validate(sharedProps[hideon], hidevalue, condition)) {\r\n return null\r\n }\r\n else if (IsBuildMGR && getEnvVariable('BuildScopeMGR') === true) {\r\n return null\r\n }\r\n else {\r\n if (name === 'quickview') {\r\n return <i className={name} {...otherProps}> <Fab size=\"small\" title={title ? title : ''} color={color ? color : \"inherit\"}> <EachComp {...props} />\r\n </Fab></i>\r\n } else {\r\n return <i className={name + \" col m-0 p-0\"} {...otherProps}> <Fab size=\"small\" title={title ? title : ''} color={color ? color : \"inherit\"}> <EachComp />\r\n </Fab></i>\r\n }\r\n }\r\n\r\n}","import React from 'react';\r\nimport Button from '@material-ui/core/Button';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\n\r\nexport default function AlertDialog(props) {\r\n const [open, setOpen] = React.useState(props.open);\r\n\r\n // const handleClickOpen = () => {\r\n // setOpen(true);\r\n // };\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n return (\r\n <div>\r\n <Dialog\r\n disableBackdropClick\r\n open={open}\r\n onClose={handleClose}\r\n aria-labelledby=\"alert-dialog-title\"\r\n aria-describedby=\"alert-dialog-description\"\r\n >\r\n <DialogTitle id=\"alert-dialog-title\">{\"Are you sure you want to leave the page?\"}</DialogTitle>\r\n <DialogContent>\r\n <DialogContentText id=\"alert-dialog-description\">\r\n You have unsaved changes\r\n </DialogContentText>\r\n </DialogContent>\r\n <DialogActions>\r\n {props.navigatingnext &&\r\n <span>\r\n <Button onClick={(e) => props.nextItem(e, true)} color=\"primary\" autoFocus>\r\n Leave\r\n </Button>\r\n <Button onClick={(e) => props.nextItem(e, false, true)} color=\"primary\">\r\n Stay\r\n </Button>\r\n </span>\r\n }\r\n {props.navigatingprev &&\r\n <span>\r\n <Button onClick={(e) => props.prevItem(e, true)} color=\"primary\" autoFocus>\r\n Leave\r\n </Button>\r\n <Button onClick={(e) => props.prevItem(e, false, true)} color=\"primary\">\r\n Stay\r\n </Button>\r\n </span>\r\n }\r\n {!props.navigatingnext && !props.navigatingprev &&\r\n <span>\r\n <Button onClick={(e) => props.handleBack(e, true)} color=\"primary\" autoFocus>\r\n Leave\r\n </Button>\r\n <Button onClick={(e) => props.handleBack(e, false, true)} color=\"primary\">\r\n Stay\r\n </Button>\r\n </span>}\r\n </DialogActions>\r\n </Dialog>\r\n </div>\r\n );\r\n}\r\n","import MomentUtils from '@date-io/moment';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport { KeyboardDateTimePicker, MuiPickersUtilsProvider } from \"@material-ui/pickers\";\r\nimport moment from \"moment\";\r\nimport React, { Fragment, useEffect, useState } from \"react\";\r\nimport DefaultSettings from './settings';\r\n\r\n\r\nexport default function DatePicker(props) {\r\n const { name, options, value, handleFieldValue, edit, required, disabled, extraProps, error, helperText,contexthelp, ...otherProps } = props\r\n const { label, xtype, fullWidth, tooltip, FieldProps, ...otherConfigs } = otherProps;\r\n let val = ((value === null) || (value === undefined) || (value === '')) ? '' : value;\r\n const [range, setRange] = useState({})\r\n const [reload, setReload] = useState(false)\r\n let dateFormat = extraProps && extraProps.dateFormat ? extraProps.dateFormat : \"MM/DD/YYYY hh:mm a\"\r\n val = val ? moment(val).format(\"MM/DD/YYYY hh:mm a\") : '';\r\n let currentDate = 'N';\r\n let pastDate = false;\r\n let futureDate = false;\r\n let fieldprops = null;\r\n if (FieldProps) {\r\n fieldprops = JSON.parse(FieldProps)\r\n currentDate = fieldprops['CurrentDefaultDate'];\r\n if (fieldprops['AllowDate'] === 'CD') {\r\n pastDate = true;\r\n futureDate = true;\r\n }\r\n else if (fieldprops['AllowDate'] === 'PD') {\r\n pastDate = true;\r\n futureDate = false;\r\n }\r\n else if (fieldprops['AllowDate'] === 'FD') {\r\n pastDate = false;\r\n futureDate = true;\r\n }\r\n if (currentDate === 'Y' && val === '') {\r\n let convertMoment = moment(new Date(), 'MM/DD/YYYY hh:mm:ss a').format('MM/DD/YYYY hh:mm:ss a')\r\n let events = { target: { value: convertMoment, name: name, checked: false }, currentTarget: { dataset: null } }\r\n handleFieldValue(events);\r\n }\r\n }\r\n useEffect(() => {\r\n if (pastDate && futureDate) {\r\n range['maxDate'] = (val === '' ? new Date() : new Date(val))\r\n range['minDate'] = (val === '' ? new Date() : new Date(val));\r\n setRange(range)\r\n setReload(!reload)\r\n }\r\n else if (pastDate) {\r\n range['maxDate'] = (val === '' ? new Date() : new Date(val))\r\n setRange(range)\r\n setReload(!reload)\r\n }\r\n else if (futureDate) {\r\n range['minDate'] = (val === '' ? new Date() : new Date(val));\r\n setRange(range)\r\n setReload(!reload)\r\n }\r\n }, [])\r\n\r\n\r\n return (\r\n <Fragment>\r\n {reload}\r\n <FormControl className={name} fullWidth={fullWidth ? fullWidth : true} error={error} required={required} disabled={disabled || false} >\r\n <InputLabel style={{ fontWeight: 'bold', color: error ? 'red' : 'black' }} shrink> {label} {tooltip && <Tooltip title={tooltip ? tooltip : null}\r\n placement=\"bottom-start\" ><HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em',color: '#007bff' }} onClick={(evt) => contexthelp ?\r\n DefaultSettings.showDrawer(contexthelp) : evt.preventDefault()} />\r\n </Tooltip>} </InputLabel>\r\n <MuiPickersUtilsProvider utils={MomentUtils}>\r\n <KeyboardDateTimePicker\r\n disabled={disabled || false}\r\n style={{ paddingTop:'8px' }}\r\n clearable\r\n variant=\"filled\"\r\n ampm={false}\r\n value={((currentDate == 'Y') ? new Date() : (val === '' ? null : val)) || null}\r\n {...range}\r\n onChange={(e) => handleFieldValue({ target: { value: e ? moment(e, dateFormat).format(dateFormat) : null, name: name, checked: false, }, currentTarget: { dataset: null } })}\r\n name={name}\r\n {...otherConfigs}\r\n format={dateFormat}\r\n InputLabelProps={{\r\n shrink: true,\r\n\r\n }}\r\n />\r\n </MuiPickersUtilsProvider>\r\n {helperText && <FormHelperText>{helperText}</FormHelperText>}\r\n </FormControl>\r\n </Fragment>\r\n );\r\n}","import { loadModules } from 'esri-loader';\r\nimport { GeometryEngineTask } from '../util/geometryEngineTask';\r\nimport { QueryTaskExecuteWithrelation } from '../util/queryTask';\r\nimport { MapConstants } from '../util/mapConstants';\r\nimport { GISLookupTask, GISLookupTaskWithGeom } from './GISLookupTask'\r\nimport { getEnvVariable } from '../../../../modules/environmentalList';\r\nimport moment from \"moment\";\r\n\r\nexport function ApplyEditsFeatures(config, mapConstants, graphicsLayer, UserId, fetchGeomType, lookupdata = [], SubModuleKey) {\r\n return new Promise((resolve, reject) => {\r\n if (!loadModules) {\r\n reject('ApplyEditsFeaturesTask: ArcGIS API is not loaded');\r\n return;\r\n }\r\n ApplyEditsTaskExecute(config, mapConstants, graphicsLayer, UserId, fetchGeomType, lookupdata, SubModuleKey).then(\r\n response => {\r\n resolve(response);\r\n },\r\n error => {\r\n console.log(error);\r\n reject({ \"error\": error });\r\n });\r\n });\r\n}\r\nfunction ApplyEditsTaskExecute(config, mapConstants, graphicsLayer, UserId, fetchGeomType, lookupdata, SubModuleKey) {\r\n return new Promise((resolve, reject) => {\r\n if (!loadModules) {\r\n reject('ApplyEditsFeaturesTask: ArcGIS API is not loaded');\r\n return;\r\n }\r\n var allpointlinepolygongraphics = graphicsLayer.graphics.filter(g => { return g.geometry.type != null });\r\n var pointgraphics = graphicsLayer.graphics.filter(g => { return g.geometry.type == \"point\" });\r\n var linegraphics = graphicsLayer.graphics.filter(g => { return g.geometry.type == \"line\" || g.geometry.type == \"polyline\" });\r\n var polygongraphics = graphicsLayer.graphics.filter(g => { return g.geometry.type == \"polygon\" });\r\n console.log(pointgraphics, linegraphics, polygongraphics);\r\n var promises = []\r\n\r\n // For KEPT use Only, MULTIPLE LOCATIONS can be selected for each geometry: Saving each geometry.\r\n // allpointlinepolygongraphics.forEach(sketchgraphics => {\r\n // console.log(sketchgraphics);\r\n // let editsExcuteGraphic = graphicsLayer.graphics.filter(g=>{return g.geometry.type == sketchgraphics.geometry.type\r\n // && g.geometry.x == sketchgraphics.geometry.x\r\n // && g.geometry.y == sketchgraphics.geometry.y});\r\n // promises.push(ApplyEditsTaskExecuteByType(config, mapConstants, editsExcuteGraphic, UserId, fetchGeomType, lookupdata, sketchgraphics.geometry.type));\r\n // });\r\n graphicsLayer.graphics.forEach(graphicTo => {\r\n promises.push(ApplyEditsTaskExecuteByType(config, mapConstants, [graphicTo], UserId, fetchGeomType, lookupdata, graphicTo.geometry.type));\r\n });\r\n\r\n // promises.push(ApplyEditsTaskExecuteByType(config, mapConstants, pointgraphics, UserId, fetchGeomType, lookupdata));\r\n // promises.push(ApplyEditsTaskExecuteByType(config, mapConstants, linegraphics, UserId, fetchGeomType, lookupdata));\r\n // promises.push(ApplyEditsTaskExecuteByType(config, mapConstants, polygongraphics, UserId, fetchGeomType, lookupdata));\r\n\r\n\r\n Promise.all(promises).then(applyEditResponses => {\r\n if (applyEditResponses) {\r\n\r\n // POINT_GEOM_OBJECT_ID,LINE_GEOM_OBJECT_ID,POLYGON_GEOM_OBJECT_ID,MULTIPOINT_GEOM_OBJECT_ID,CENTER_GEOM_OBJECT_ID;\r\n let pointgeomres = applyEditResponses.filter(a => a.POINT_GEOM_OBJECT_ID && a.POINT_GEOM_OBJECT_ID != null);\r\n let linegeomres = applyEditResponses.filter(a => a.LINE_GEOM_OBJECT_ID && a.LINE_GEOM_OBJECT_ID != null);\r\n let polygeomres = applyEditResponses.filter(a => a.POLYGON_GEOM_OBJECT_ID && a.POLYGON_GEOM_OBJECT_ID != null);\r\n let multipointgeomres = applyEditResponses.filter(a => a.MULTIPOINT_GEOM_OBJECT_ID && a.MULTIPOINT_GEOM_OBJECT_ID != null)\r\n\r\n let poinggeomid = '', polygongeomid = '', linegeomid = '', multipointgeomid = '';\r\n if (pointgeomres.length > 0)\r\n poinggeomid = pointgeomres.map(a => a.POINT_GEOM_OBJECT_ID).join()\r\n if (linegeomres.length > 0)\r\n linegeomid = linegeomres.map(a => a.LINE_GEOM_OBJECT_ID).join()\r\n if (polygeomres.length > 0)\r\n polygongeomid = polygeomres.map(a => a.POLYGON_GEOM_OBJECT_ID).join()\r\n if (multipointgeomres.length > 0)\r\n multipointgeomid = multipointgeomres.map(a => a.POLYGON_GEOM_OBJECT_ID).join()\r\n\r\n let MultipleLocations = []\r\n graphicsLayer.graphics.forEach(graphicTo => {\r\n if (graphicTo && graphicTo.attributes && graphicTo.attributes.MultipleLocations) {\r\n MultipleLocations.push(graphicTo.attributes.MultipleLocations[0])\r\n }\r\n })\r\n\r\n let delpoints = GetDeletedObjects(config, 'POINT_GEOM_OBJECT_ID', poinggeomid);\r\n let delline = GetDeletedObjects(config, 'LINE_GEOM_OBJECT_ID', linegeomid);\r\n let delpolygon = GetDeletedObjects(config, 'POLYGON_GEOM_OBJECT_ID', polygongeomid);\r\n\r\n\r\n const POINT_IDS = {\r\n 'POINT_GEOM_OBJECT_ID': poinggeomid,\r\n 'LINE_GEOM_OBJECT_ID': linegeomid,\r\n 'POLYGON_GEOM_OBJECT_ID': polygongeomid,\r\n 'MULTIPOINT_GEOM_OBJECT_ID': multipointgeomid,\r\n 'MultipleLocationData': MultipleLocations,\r\n 'DELETED_GEOM_OBJECT_ID': [...delpoints, ...delline, ...delpolygon]\r\n }\r\n let applyObjectids = {}\r\n applyEditResponses.forEach(element => {\r\n applyObjectids = { ...applyObjectids, ...element }\r\n });\r\n applyObjectids = { ...applyObjectids, ...POINT_IDS };\r\n // const pointgeomApplyEditResponse = applyEditResponses[0]; //Point\r\n // const linegeomApplyEditResponse = applyEditResponses[1]; //Line\r\n // const polygongeomApplyEditResponse = applyEditResponses[2]; //Polygon\r\n\r\n //let applyObjectids = { ...pointgeomApplyEditResponse, ...linegeomApplyEditResponse, ...polygongeomApplyEditResponse };\r\n ///return applyObjectids;\r\n if (getEnvVariable('ModuleKey') === 'AMES') {\r\n if (applyObjectids && applyObjectids['95_SPIS_SITE'])\r\n applyObjectids['95_SPIS_SITE'] = applyObjectids['95_SPIS_SITE'] && applyObjectids['95_SPIS_SITE'] > 95 ? 'Y' : 'N'\r\n applyObjectids['HIGHWAY_SUBCLASS'] = applyObjectids['HIGHWAY_SUBCLASS'] ? '1' : '2'\r\n applyObjectids['MPO'] = applyObjectids['MPO'] ? 'Y' : 'N';\r\n applyObjectids['PROPOSED_COLLECTION_DATE'] = applyObjectids['PROPOSED_HIGHWAY_NAME'] ? moment(new Date()).format('MM/DD/YYYY') : ''\r\n applyObjectids['PROPOSED_COLLECTION_DATE'] = applyObjectids['EXISTING_HIGHWAY_NAME'] ? moment(new Date()).format('MM/DD/YYYY') : ''\r\n //\"PROPOSED_HIGHWAY_NAME\",//EXISTING_HIGHWAY_NAME\r\n }\r\n\r\n console.log('applied results -------------', applyObjectids)\r\n resolve(applyObjectids);\r\n }\r\n },\r\n error => {\r\n console.log(error);\r\n reject({ \"error\": error });\r\n });\r\n });\r\n}\r\n\r\nfunction GetDeletedObjects(config, objecttype, latestids) {\r\n if (latestids.length > 0) {\r\n let objectfeildvalue = config.FieldsData.filter(f => {\r\n return (f.Fieldkey.includes(objecttype));\r\n }).map(f => f.FieldValue);\r\n if (objectfeildvalue && Array.isArray(objectfeildvalue)) {\r\n let latestobjectarr = latestids.split(',');\r\n let oldobjectarr = objectfeildvalue[0] ? objectfeildvalue[0].split(',') : [];\r\n let deletedids = oldobjectarr.filter(x => !latestobjectarr.includes(x));\r\n return deletedids.filter(function (el) {\r\n return el != null && el != '';\r\n });\r\n }\r\n }\r\n return [];\r\n}\r\n\r\nfunction ApplyEditsTaskExecuteByType(config, mapConstants, graphics, UserId, fetchGeomType, lookupdata, applyeditsgeomtype, SubModuleKey) {\r\n return new Promise((resolve, reject) => {\r\n if (config && graphics && config.FeatureLayers) {\r\n let geometries = [];\r\n let proposedgeometries = [];\r\n let existinggeometries = [];\r\n let applyObjectids = {};\r\n let type = \"POINT\";\r\n //let mapconstants = new MapConstants();\r\n\r\n if (fetchGeomType && fetchGeomType.length > 0) {\r\n var pointTypes = fetchGeomType;\r\n let svgPointtSymbol = mapConstants.getSVGPointtSymbol()\r\n graphics.forEach(function (item) {\r\n type = (item.geometry.type === \"point\" ? \"POINT\" : (item.geometry.type === \"polyline\" ? \"LINE\" : (item.geometry.type === \"polygon\" ? \"POLYGON\" : null)));\r\n if (item.geometry.type === \"multipoint\") type = \"MULTIPOINT\"\r\n let d = new Date();\r\n let itemobjectid = item.attributes ? item.attributes.OBJECTID : null;\r\n let attributes = { \"ObjectId\": itemobjectid, \"OBJECTID\": itemobjectid, \"UpdatedBy\": config.UserId, \"UpdatedOn\": d.getTime(), \"HASHKEY\": config.HASHKEY, \"CreatedBy\": config.UserId, \"CreatedOn\": d.getTime() };\r\n\r\n if (type && type.toLowerCase() === \"point\") {\r\n if (item.symbol && (item.symbol.url === mapConstants.ExistingPointSymbol.url || (svgPointtSymbol && item.symbol.url === svgPointtSymbol.url)))\r\n existinggeometries.push({ \"type\": type, \"Graphic\": item.geometry, \"attributes\": attributes });\r\n else\r\n proposedgeometries.push({ \"type\": type, \"Graphic\": item.geometry, \"attributes\": attributes });\r\n } else {\r\n\r\n //if (geompointtype === \"E\")\r\n existinggeometries.push({ \"type\": type, \"Graphic\": item.geometry, \"attributes\": attributes });\r\n //else\r\n //proposedgeometries.push({ \"type\": type, \"Graphic\": item.geometry, \"attributes\": attributes });\r\n }\r\n });\r\n let allPromise = [];\r\n\r\n pointTypes.forEach(function (geompointtype) {\r\n let editgeometries = geompointtype === \"P\" ? proposedgeometries : existinggeometries;\r\n //let fetchGeomType = geompointtype === \"PROPOSED\" ? \"P\" : \"E\"\r\n let lookupdatabytype = lookupdata.filter(a => a.FieldFetchGeomType === geompointtype || a.FieldFetchGeomType === 'B');\r\n let eachpromise = new Promise((resolve, reject) => {\r\n\r\n applyEditsTaskExecuteWrapper(config, mapConstants, editgeometries, type, UserId, geompointtype, lookupdatabytype, applyeditsgeomtype, SubModuleKey)\r\n .then(applyResponses => {\r\n if (applyResponses) {\r\n if (graphics[0] && graphics[0].attributes && graphics[0].attributes.MultipleLocations) {\r\n let objresultid = applyResponses.POINT_GEOM_OBJECT_ID || applyResponses.POLYGON_GEOM_OBJECT_ID || applyResponses.LINE_GEOM_OBJECT_ID || applyResponses.MULTIPOINT_GEOM_OBJECT_ID\r\n if (graphics[0].attributes && Array.isArray(graphics[0].attributes.MultipleLocations) && graphics[0].attributes.MultipleLocations.length > 0)\r\n graphics[0].attributes.MultipleLocations[0].ObjectId = objresultid\r\n }\r\n resolve(applyResponses);\r\n }\r\n },\r\n error => {\r\n console.log(error);\r\n reject({ \"error\": error });\r\n });\r\n })\r\n\r\n allPromise.push(eachpromise);\r\n })\r\n\r\n Promise.all(allPromise).then(function (data) {\r\n let returnObj = {}\r\n data.forEach(function (item) {\r\n returnObj = {\r\n ...returnObj,\r\n ...item\r\n }\r\n })\r\n\r\n //return returnObj;\r\n resolve(returnObj);\r\n }).catch(error => {\r\n console.error(error.message)\r\n });\r\n\r\n } else {\r\n let lookupdatabytype = lookupdata.filter(a => a.FieldFetchGeomType === 'E' || a.FieldFetchGeomType === 'B');\r\n graphics.forEach(function (item) {\r\n type = (item.geometry.type === \"point\" ? \"POINT\" : (item.geometry.type === \"polyline\" ? \"LINE\" : (item.geometry.type === \"polygon\" ? \"POLYGON\" : null)));\r\n if (item.geometry.type === \"multipoint\") type = \"MULTIPOINT\"\r\n let d = new Date();\r\n let itemobjectid = item.attributes ? item.attributes.OBJECTID : null;\r\n let attributes = { \"ObjectId\": itemobjectid, \"OBJECTID\": itemobjectid, \"UpdatedBy\": config.UserId, \"UpdatedOn\": d.getTime(), \"HASHKEY\": config.HASHKEY, \"CreatedBy\": config.UserId, \"CreatedOn\": d.getTime() };\r\n //geometries.push({\"geometry\": item.geometry})\r\n geometries.push({ \"type\": type, \"attributes\": attributes, \"Graphic\": item.geometry });\r\n });\r\n console.log('geom --------------------------', geometries)\r\n //Based on type selection\r\n applyEditsTaskExecuteWrapper(config, mapConstants, geometries, type, UserId, null, lookupdatabytype, SubModuleKey)\r\n .then(applyResponses => {\r\n if (applyResponses) {\r\n if (graphics[0] && graphics[0].attributes && graphics[0].attributes.MultipleLocations) {\r\n let objresultid = applyResponses.POINT_GEOM_OBJECT_ID || applyResponses.POLYGON_GEOM_OBJECT_ID || applyResponses.LINE_GEOM_OBJECT_ID || applyResponses.MULTIPOINT_GEOM_OBJECT_ID\r\n if (graphics[0].attributes && Array.isArray(graphics[0].attributes.MultipleLocations) && graphics[0].attributes.MultipleLocations.length > 0)\r\n graphics[0].attributes.MultipleLocations[0].ObjectId = objresultid\r\n }\r\n /*\r\n const applyPointObject = applyResponses[0]; //point\r\n if (applyPointObject)\r\n applyObjectids={...applyObjectids,...applyPointObject};\r\n\r\n const applyPolylineObject = applyResponses[1]; //polyline\r\n if (applyPolylineObject)\r\n applyObjectids={...applyObjectids,...applyPolylineObject};\r\n\r\n const applyPolygonObject = applyResponses[2]; //polygon\r\n if (applyPolygonObject)\r\n applyObjectids={...applyObjectids,...applyPolygonObject};\r\n */\r\n resolve(applyResponses);\r\n }\r\n },\r\n error => {\r\n console.log(error);\r\n reject({ \"error\": error });\r\n });\r\n\r\n }\r\n\r\n\r\n\r\n\r\n\r\n } else {\r\n reject({ \"error\": \"Feature layers not found \" });\r\n }\r\n });\r\n}\r\n\r\nfunction applyEditsTaskExecuteWrapper(config, mapConstants, geometries, type, UserId, fetchGeomPointType, lookupdata, applyeditsgeomtype, SubModuleKey) {\r\n return new Promise((resolve, reject) => {\r\n parseApplyEditsGeometries(config, mapConstants, geometries, type, UserId, fetchGeomPointType, SubModuleKey).then(\r\n applyGeoms => {\r\n if (applyGeoms && ((applyGeoms.geomapplyFeatures)\r\n || (applyGeoms.centerapplyFeatures))) {\r\n let applyObjectids = {};\r\n let lookupgeoms = geometries\r\n let geomlist = geometries.map(f => f.Graphic);\r\n if (geomlist && Array.isArray(geomlist)) {\r\n lookupgeoms = geomlist;\r\n }\r\n let allPromises = [ApplyEdits(config, applyGeoms.geomapplyFeatures, applyGeoms.isMultiGeom, type, null, fetchGeomPointType, applyeditsgeomtype),\r\n ApplyEdits(config, applyGeoms.centerapplyFeatures, applyGeoms.isMultiGeom, type, applyGeoms.centerGeom, fetchGeomPointType, applyeditsgeomtype)]\r\n\r\n if (Array.isArray(lookupgeoms) && lookupgeoms.length > 0) {\r\n allPromises.push(GISLookupTaskWithGeom(config, lookupgeoms, lookupdata))\r\n }\r\n\r\n //ApplyAdcgrid(config, applyGeoms.geomapplyFeatures, applyGeoms.isMultiGeom, type, applyGeoms.centerGeom) : Removed ADCGrid,AMES specific\r\n Promise.all(allPromises).then(applyEditResponses => {\r\n if (applyEditResponses) {\r\n const geomApplyEditResponse = applyEditResponses[0]; //Geom\r\n const centerApplyEditResponse = applyEditResponses[1]; //Center\r\n //const adcgridApplyEditResponse = applyEditResponses[2]; //ADCGrid\r\n const lookupApplyEditResponse = applyEditResponses[2] || {}; //GIS Lookup\r\n applyObjectids = { ...geomApplyEditResponse, ...centerApplyEditResponse, ...lookupApplyEditResponse };\r\n resolve(applyObjectids);\r\n }\r\n },\r\n error => {\r\n console.log(error);\r\n reject({ \"error\": error });\r\n });\r\n }\r\n else {\r\n resolve(null);\r\n }\r\n },\r\n applyGeomsError => {\r\n console.log(applyGeomsError);\r\n reject({ \"error\": applyGeomsError });\r\n });\r\n });\r\n}\r\n\r\n\r\nfunction ApplyAdcgrid(config, applyGeoms, isMultiGeom, type, centerGeom) {\r\n return new Promise((resolve, reject) => {\r\n if (applyGeoms && ((applyGeoms.addFeatures && applyGeoms.addFeatures.length > 0)\r\n || (applyGeoms.updateFeatures && applyGeoms.updateFeatures.length > 0))) {\r\n loadModules([\r\n \"esri/layers/FeatureLayer\", \"esri/layers/MapImageLayer\"\r\n ]).then(([FeatureLayer, MapImageLayer]) => {\r\n const adcgridlayer = new MapImageLayer({\r\n url: getEnvVariable('ArcGIS') + `/rest/services/EPS_Dev/EPS_ADC_Grid/MapServer/0/query`,\r\n outFields: [\"*\"]\r\n });\r\n let queryExpression = \"1=1\";\r\n let inputgeom;\r\n if (applyGeoms.addFeatures.length < 1) inputgeom = applyGeoms.updateFeatures[0];\r\n else inputgeom = applyGeoms.addFeatures[0];\r\n\r\n QueryTaskExecuteWithrelation(adcgridlayer, queryExpression, config.viewProperties.extent.spatialReference, inputgeom).then(\r\n response => {\r\n if (response && response.features) {\r\n let gridRefString = \"\";\r\n response.features.map(adcval => {\r\n gridRefString = gridRefString + adcval.attributes.GridRef + \", \";\r\n });\r\n const objectIdResponse = {};\r\n if (gridRefString != \"\") gridRefString = gridRefString.substring(0, gridRefString.length - 2)\r\n objectIdResponse[\"ADC_MAP_GRID_NO\"] = gridRefString;\r\n resolve(objectIdResponse);\r\n }\r\n },\r\n error => {\r\n console.log(error);\r\n reject({ \"error\": error });\r\n }\r\n )\r\n });\r\n\r\n }\r\n\r\n });\r\n}\r\n\r\n\r\nfunction ApplyEdits(config, applyGeoms, isMultiGeom, type, centerGeom, fetchGeomPointType, applyeditsgeomtype) {\r\n /*\r\n applyGeoms.geomapplyFeatures;\r\n applyGeoms.centerapplyFeatures;\r\n */\r\n return new Promise((resolve, reject) => {\r\n if (applyGeoms && ((applyGeoms.addFeatures && applyGeoms.addFeatures.length > 0)\r\n || (applyGeoms.updateFeatures && applyGeoms.updateFeatures.length > 0))) {\r\n loadModules([\r\n \"esri/layers/FeatureLayer\"\r\n ]).then(([FeatureLayer]) => {\r\n const layerType = (centerGeom !== null ? \"POINT\" : ((isMultiGeom === true && type === \"POINT\") ? \"MULTIPOINT\" : type));\r\n\r\n const featureUrl = config.FeatureLayers[layerType];\r\n if (featureUrl) {\r\n const featureLayer = new FeatureLayer({\r\n url: featureUrl,\r\n outFields: [\"*\"]\r\n });\r\n /*\r\n\r\n Points={\"EXisting\":[],\"Proposed\":[]}\r\n */\r\n\r\n featureLayer.applyEdits(applyGeoms).then(result => {\r\n const objectIdResponse = {};\r\n objectIdResponse[\"GEOM_TYPE\"] = applyeditsgeomtype;\r\n if (result.addFeatureResults.length > 0 || result.updateFeatureResults.length > 0) {\r\n if (centerGeom) {\r\n // objectIdResponse[\"MAP_CENTER_COORDINATE_X\"] = centerGeom.x;\r\n // objectIdResponse[\"MAP_CENTER_COORDINATE_Y\"] = centerGeom.y;\r\n //Specific to AMES project checking for the twoway multipoint (Proposed/Existing)\r\n if (fetchGeomPointType && fetchGeomPointType != null) {\r\n let ref_centerLatitude = (fetchGeomPointType === \"P\") ? \"PROPOSED\" + \"_MAP_CENTER_LATITUDE\" : \"MAP_CENTER_LATITUDE\";\r\n let ref_centerLongitude = (fetchGeomPointType === \"P\") ? \"PROPOSED\" + \"_MAP_CENTER_LONGITUDE\" : \"MAP_CENTER_LONGITUDE\";\r\n let ref_geomObjectID = (fetchGeomPointType === \"P\") ? \"PROPOSED\" + \"_CENTER_GEOM_OBJECT_ID\" : \"CENTER_GEOM_OBJECT_ID\";\r\n\r\n objectIdResponse[ref_centerLatitude] = centerGeom.latitude;\r\n objectIdResponse[ref_centerLongitude] = centerGeom.longitude;\r\n if (result.addFeatureResults.length > 0)\r\n objectIdResponse[ref_geomObjectID] = result.addFeatureResults[0].objectId;\r\n else if (result.updateFeatureResults.length > 0)\r\n objectIdResponse[ref_geomObjectID] = result.updateFeatureResults[0].objectId;\r\n } else {\r\n objectIdResponse[\"MAP_CENTER_LATITUDE\"] = centerGeom.latitude;\r\n objectIdResponse[\"MAP_CENTER_LONGITUDE\"] = centerGeom.longitude;\r\n if (result.addFeatureResults.length > 0)\r\n objectIdResponse[\"CENTER_GEOM_OBJECT_ID\"] = result.addFeatureResults[0].objectId;\r\n else if (result.updateFeatureResults.length > 0)\r\n objectIdResponse[\"CENTER_GEOM_OBJECT_ID\"] = result.updateFeatureResults[0].objectId;\r\n }\r\n\r\n\r\n } else {\r\n /* if (layerType==\"POINT\") {\r\n objectIdResponse[\"MAP_CENTER_LATITUDE\"] = centerGeom.latitude;\r\n objectIdResponse[\"MAP_CENTER_LONGITUDE\"] = centerGeom.longitude;\r\n }*/\r\n if (fetchGeomPointType) {\r\n let ref_layerGeomObjectID = (fetchGeomPointType === \"P\") ? \"PROPOSED\" + \"_\" + layerType + \"_GEOM_OBJECT_ID\" : layerType + \"_GEOM_OBJECT_ID\";\r\n\r\n if (result.addFeatureResults.length > 0) {\r\n objectIdResponse[ref_layerGeomObjectID] = result.addFeatureResults[0].objectId;\r\n objectIdResponse[\"isnewObjectId\"] = true\r\n } else if (result.updateFeatureResults.length > 0) {\r\n objectIdResponse[ref_layerGeomObjectID] = result.updateFeatureResults[0].objectId;\r\n objectIdResponse[\"isnewObjectId\"] = false\r\n }\r\n } else {\r\n if (result.addFeatureResults.length > 0) {\r\n objectIdResponse[layerType + \"_GEOM_OBJECT_ID\"] = result.addFeatureResults[0].objectId;\r\n objectIdResponse[\"isnewObjectId\"] = true\r\n }\r\n\r\n else if (result.updateFeatureResults.length > 0) {\r\n objectIdResponse[layerType + \"_GEOM_OBJECT_ID\"] = result.updateFeatureResults[0].objectId;\r\n objectIdResponse[\"isnewObjectId\"] = false\r\n }\r\n }\r\n }\r\n }\r\n resolve(objectIdResponse);\r\n },\r\n error => {\r\n console.log(error);\r\n reject({ \"error\": error });\r\n });\r\n } else {\r\n reject({ \"error\": \"Feature layer not found ::\" + type });\r\n }\r\n });\r\n }\r\n else {\r\n resolve(null);\r\n }\r\n });\r\n}\r\nfunction parseApplyEditsGeometries(config, mapConstants, geometries, type, UserId, fetchGeomPointType, SubModuleKey) {\r\n return new Promise((resolve, reject) => {\r\n let applyFeatures = { geomapplyFeatures: [], centerapplyFeatures: [] };\r\n if (geometries && geometries.length > 0) {\r\n const geomFeatures = geometries;\r\n let multigeoms = geometries.filter(f => {\r\n return f.type === \"MULTIPOINT\" || f.type === \"multipoint\";\r\n });\r\n let pointgeoms = geometries.filter(f => {\r\n return f.type === \"POINT\" || f.type === \"point\";\r\n });\r\n let ismultigeom = false;\r\n if ((multigeoms && multigeoms.length > 0) || (pointgeoms && pointgeoms.length > 1)) ismultigeom = true;\r\n if (geomFeatures && geomFeatures.length > 0) {\r\n const graphicies = geomFeatures.map(f => f.Graphic);\r\n const attributes = (geomFeatures !== null && geomFeatures.length > 0) ? geomFeatures[0].attributes : {};\r\n\r\n if (graphicies && graphicies.length === 1) {\r\n loadModules([\r\n \"esri/Graphic\",\r\n \"esri/geometry/Point\",\r\n \"esri/geometry/Multipoint\",\r\n 'esri/geometry/Polyline',\r\n 'esri/geometry/Polygon',\r\n \"esri/geometry/SpatialReference\"\r\n ]).then(([Graphic, Point, Multipoint, Polyline, Polygon, SpatialReference]) => {\r\n const geom = (type === \"POINT\" ? new Point(graphicies[0]) : (type === \"LINE\" ? new Polyline(graphicies[0])\r\n : (type === \"POLYGON\" ? new Polygon(graphicies[0]) : null)));\r\n console.log('--SRID CHANGE-----------------------', config.viewProperties.extent.spatialReference)\r\n let spatialReference = new SpatialReference(config.viewProperties.extent.spatialReference);\r\n applyFeatures = parseApplyEditsGeometriesWrapper(config, Graphic, geom, attributes, graphicies[0], mapConstants, type, ismultigeom, spatialReference, UserId, fetchGeomPointType, SubModuleKey).then(\r\n applyFeaturesResponse => {\r\n resolve(applyFeaturesResponse);\r\n },\r\n applyFeaturesineerror => {\r\n reject({ \"error\": applyFeaturesineerror });\r\n });\r\n });\r\n } else {\r\n GeometryEngineTask({ \"geometries\": graphicies, \"type\": \"union\" }).then(\r\n geomEngineResponse => {\r\n if (geomEngineResponse) {\r\n loadModules([\r\n \"esri/Graphic\",\r\n \"esri/geometry/Multipoint\",\r\n 'esri/geometry/Polyline',\r\n 'esri/geometry/Polygon',\r\n \"esri/geometry/SpatialReference\"\r\n ]).then(([Graphic, Multipoint, Polyline, Polygon, SpatialReference]) => {\r\n const geom = (type === \"POINT\" ? new Multipoint(geomEngineResponse) : (type === \"LINE\" ? new Polyline(geomEngineResponse)\r\n : (type === \"POLYGON\" ? new Polygon(geomEngineResponse) : null)));\r\n console.log('--SRID CHANGE-----------------------', config.viewProperties.extent.spatialReference)\r\n let spatialReference = new SpatialReference(config.viewProperties.extent.spatialReference);\r\n applyFeatures = parseApplyEditsGeometriesWrapper(config, Graphic, geom, attributes, geomEngineResponse, mapConstants, type, ismultigeom, spatialReference, UserId, fetchGeomPointType, SubModuleKey).then(\r\n applyFeaturesResponse => {\r\n resolve(applyFeaturesResponse);\r\n },\r\n applyFeaturesineerror => {\r\n reject({ \"error\": applyFeaturesineerror });\r\n });\r\n },\r\n error => {\r\n console.log(error);\r\n reject({ \"error\": error });\r\n });\r\n } else {\r\n resolve(applyFeatures);\r\n }\r\n },\r\n geomEngineerror => {\r\n console.log(geomEngineerror);\r\n reject({ \"error\": geomEngineerror });\r\n });\r\n }\r\n }\r\n else {\r\n resolve(applyFeatures);\r\n }\r\n }\r\n else {\r\n resolve(applyFeatures);\r\n }\r\n });\r\n}\r\n\r\nfunction parseApplyEditsGeometriesWrapper(config, Graphic, geom, attributes, uniongeomEngineResponse, mapConstants, type, isMultiGeom, spatialReference, UserId, fetchGeomPointType, SubModuleKey) {\r\n return new Promise((resolve, reject) => {\r\n let applyFeatures = {};\r\n let geomapplyFeatures = { addFeatures: [], updateFeatures: [] };\r\n let centerapplyFeatures = { addFeatures: [], updateFeatures: [] };\r\n\r\n const geomSymbol = (type === \"POINT\" ? (SubModuleKey == \"COLLISION\" || SubModuleKey == \"INVESTIGATION\") ? mapConstants.getSVGHighlighPointtSymbol() : mapConstants.PointSymbol : (type === \"LINE\" ? mapConstants.LineSymbol : (type === \"POLYGON\" ? mapConstants.PolygonFillSymbol : null)));\r\n\r\n //const layerType = (isMultiGeom === true && type === \"POINT\") ? \"MULTIPOINT\" : type;\r\n // let FDObjectid = config.FieldsData.filter(f => {\r\n // return (f.Fieldkey.includes(layerType + \"_GEOM_OBJECT_ID\") && f.FieldValue > 0);\r\n // }).map(f => f.FieldValue);\r\n\r\n // if((FDObjectid[0]==0 || FDObjectid[0]==null || FDObjectid[0]== \"\") && layerType==\"MULTIPOINT\"){\r\n // let constype=\"POINT\";\r\n // FDObjectid = config.FieldsData.filter(f => {\r\n // return (f.Fieldkey.includes(constype + \"_GEOM_OBJECT_ID\") && f.FieldValue > 0);\r\n // }).map(f => f.FieldValue);\r\n // }\r\n\r\n let FDCenterObjectid = config.FieldsData.filter(f => {\r\n return f.Fieldkey === \"CENTER_GEOM_OBJECT_ID\";\r\n }).map(f => f.FieldValue);\r\n\r\n if (fetchGeomPointType === \"P\") {\r\n FDCenterObjectid = config.FieldsData.filter(f => {\r\n return f.Fieldkey === \"PROPOSED_CENTER_GEOM_OBJECT_ID\";\r\n }).map(f => f.FieldValue)\r\n }\r\n\r\n // if (FDObjectid && FDObjectid.length > 0) {\r\n // attributes.ObjectId = (fetchGeomPointType === \"P\" && FDObjectid.length > 0) ? Number(FDObjectid[1]) : Number(FDObjectid[0]);\r\n // attributes.UpdatedBy = UserId;\r\n // attributes.CreatedBy = UserId;\r\n // } else {\r\n // attributes.CreatedBy = UserId;\r\n // }\r\n\r\n if (attributes.ObjectId && attributes.ObjectId > 0) {\r\n attributes.UpdatedBy = UserId;\r\n attributes.CreatedBy = UserId;\r\n } else {\r\n attributes.CreatedBy = UserId;\r\n }\r\n\r\n let centerattributes = { ...attributes };\r\n\r\n if (FDCenterObjectid && FDCenterObjectid.length > 0){\r\n centerattributes.ObjectId = Number(FDCenterObjectid[0]);\r\n centerattributes.OBJECTID = Number(FDCenterObjectid[0]);\r\n }\r\n \r\n applyFeatures.isMultiGeom = isMultiGeom;\r\n const centerGeom = (isMultiGeom == false && type === \"POINT\") ? geom : (uniongeomEngineResponse.extent ? uniongeomEngineResponse.extent.center : uniongeomEngineResponse);\r\n console.log('parseApplyEditsGeometriesWrapper', centerattributes)\r\n if (spatialReference) {\r\n Promise.all([GeometryEngineTask({ \"geometries\": geom, \"spatialReference\": spatialReference, \"type\": \"project\" }),\r\n GeometryEngineTask({ \"geometries\": centerGeom, \"spatialReference\": spatialReference, \"type\": \"project\" })])\r\n .then(geomEngineResponse => {\r\n if (geomEngineResponse) {\r\n let projGeom = geomEngineResponse[0] || {};\r\n let projcenterGeom = geomEngineResponse[1] || {};\r\n\r\n let graphic = new Graphic({\r\n geometry: projGeom,\r\n attributes: attributes,\r\n symbol: geomSymbol\r\n });\r\n\r\n if (centerGeom && centerGeom.latitude && centerGeom.longitude) {\r\n projcenterGeom.latitude = centerGeom.latitude\r\n projcenterGeom.longitude = centerGeom.longitude\r\n applyFeatures.centerGeom = projcenterGeom;\r\n let centerGeomGraphic = new Graphic({\r\n geometry: projcenterGeom,\r\n attributes: centerattributes,\r\n symbol: geomSymbol\r\n });\r\n\r\n\r\n if (attributes.ObjectId)\r\n geomapplyFeatures.updateFeatures.push(graphic);\r\n else\r\n geomapplyFeatures.addFeatures.push(graphic);\r\n\r\n if (centerattributes.ObjectId)\r\n centerapplyFeatures.updateFeatures.push(centerGeomGraphic);\r\n else\r\n centerapplyFeatures.addFeatures.push(centerGeomGraphic);\r\n\r\n applyFeatures.geomapplyFeatures = geomapplyFeatures;\r\n applyFeatures.centerapplyFeatures = centerapplyFeatures;\r\n resolve(applyFeatures);\r\n }\r\n }\r\n },\r\n error => {\r\n console.log(error);\r\n reject({ \"error\": error });\r\n });\r\n }\r\n });\r\n}\r\n\r\n\r\nexport function ApplyEditsGeometry(config, mapConstants, graphics, UserId, applyeditsgeomtype, lookupdata = [], SubModuleKey) {\r\n return new Promise((resolve, reject) => {\r\n ApplyEditsTaskExecuteByType(config, mapConstants, graphics, UserId, [], lookupdata, applyeditsgeomtype, SubModuleKey).then(\r\n response => {\r\n resolve(response);\r\n },\r\n error => {\r\n console.log(error);\r\n reject({ \"error\": error });\r\n });\r\n });\r\n // try {\r\n // ApplyEditsTaskExecuteByType(config, mapConstants, graphics, UserId, [], [], applyeditsgeomtype,SubModuleKey).then(res =>{\r\n // console.log('select result save----------------',res);\r\n // })\r\n // } catch (error) {\r\n // console.log(error)\r\n // }\r\n}","import { loadModules } from 'esri-loader';\r\nimport { QueryTask, CenterAndZoom } from '../util/queryTask';\r\nimport { GeometryEngineTask } from '../util/geometryEngineTask';\r\nimport { GISLookupTask, GISLookupTaskWithGeom } from './GISLookupTask'\r\n\r\n\r\nexport function FeaturesLayerGraphicsTask(view, config, mapConstants, zoom, SubModuleKey) {\r\n return new Promise((resolve, reject) => {\r\n if (!loadModules) {\r\n reject('FeaturesLayersTask: ArcGIS API is not loaded');\r\n return;\r\n }\r\n if (view && config && zoom && config.drawOptions && config.drawOptions.Tools && config.FeatureLayers && config.FieldsData) {\r\n var isPointAllowMultiple = config.drawOptions.AllowMultiple && config.drawOptions.AllowMultiple.Points;\r\n var isLinesAllowMultiple = config.drawOptions.AllowMultiple && config.drawOptions.AllowMultiple.Lines;\r\n var isPolygonssAllowMultiple = config.drawOptions.AllowMultiple && config.drawOptions.AllowMultiple.Polygons;\r\n var promises = []\r\n const tools = config.drawOptions.Tools;\r\n let type = \"POINT\"\r\n if (tools.indexOf(\"point\") > -1) {\r\n type = \"POINT\";\r\n if (isPointAllowMultiple)\r\n type = \"MULTIPOINT\";\r\n promises.push(FeaturesLayerGraphicsTaskByType(view, config, mapConstants, zoom, type, isPointAllowMultiple, SubModuleKey));\r\n }\r\n if (tools.indexOf(\"polyline\") > -1) {\r\n type = \"LINE\";\r\n promises.push(FeaturesLayerGraphicsTaskByType(view, config, mapConstants, zoom, type, isLinesAllowMultiple, SubModuleKey));\r\n }\r\n if (tools.indexOf(\"polygon\") > -1 || tools.indexOf(\"rectangle\") > -1 || tools.indexOf(\"circle\") > -1) {\r\n type = \"POLYGON\";\r\n promises.push(FeaturesLayerGraphicsTaskByType(view, config, mapConstants, zoom, type, isPolygonssAllowMultiple, SubModuleKey));\r\n }\r\n // Specific to map selection with 'SELECT TOOL' and no map point available. Select tool always a polygon.\r\n if (promises && promises.length < 1 && Array.isArray(config.SelectLayerListOptions)\r\n && config.SelectLayerListOptions.length > 0) {\r\n type = \"POLYGON\";\r\n promises.push(FeaturesLayerGraphicsTaskByType(view, config, mapConstants, zoom, type, isPolygonssAllowMultiple, SubModuleKey));\r\n }\r\n\r\n Promise.all(promises).then(applyViewResponses => {\r\n if (applyViewResponses) {\r\n const pointgeomApplyViewResponse = applyViewResponses[0]; //Point\r\n const linegeomApplyViewResponse = applyViewResponses[1]; //Line\r\n const polygongeomApplyViewResponse = applyViewResponses[2]; //Polygon\r\n\r\n let applyViewGraphics = { ...pointgeomApplyViewResponse, ...linegeomApplyViewResponse, ...polygongeomApplyViewResponse };\r\n resolve(applyViewGraphics);\r\n }\r\n },\r\n error => {\r\n console.log(error);\r\n reject({ \"error\": \"mapview ,zoom, drawOptions.Tools, config.FeatureLayers and config.FieldsData are not found \" });\r\n });\r\n } else {\r\n reject({ \"error\": \"mapview ,zoom, drawOptions.Tools, config.FeatureLayers and config.FieldsData are not found \" });\r\n }\r\n });\r\n};\r\n\r\nfunction GetQueryValue(stringval) {\r\n let result = \"\";\r\n if (stringval) {\r\n console.log(stringval);\r\n let arr = stringval.toString().split(',');\r\n if (arr && arr.length > 0) {\r\n arr.forEach(element => {\r\n if (result === \"\") {\r\n result = \"\" + element + \"\"\r\n } else {\r\n result = result + \",\" + element + \"\";\r\n }\r\n });\r\n }\r\n }\r\n return result;\r\n}\r\n\r\nfunction FeaturesLayerGraphicsTaskByType(view, config, mapConstants, zoom, type, isAllowMultiple, SubModuleKey) {\r\n return new Promise((resolve, reject) => {\r\n let preType = type;\r\n\r\n const graphicsLayerIndex = config.FeatureLayers[\"LayerIndex\"] || 3;\r\n let FDObjectid = config.FieldsData.filter(f => {\r\n return (f.Fieldkey == type + \"_GEOM_OBJECT_ID\");\r\n }).map(f => f.FieldValue);\r\n if ((FDObjectid[0] == 0 || FDObjectid[0] == null) && type == \"MULTIPOINT\" && isAllowMultiple) {\r\n type = \"POINT\";\r\n FDObjectid = config.FieldsData.filter(f => {\r\n return (f.Fieldkey == type + \"_GEOM_OBJECT_ID\");\r\n }).map(f => f.FieldValue);\r\n }\r\n\r\n\r\n let proposed_objectid = []\r\n\r\n let proposed_objectid_point = config.FieldsData.filter(f => {\r\n return (f.Fieldkey.includes(\"PROPOSED_\" + type + \"_GEOM_OBJECT_ID\") && f.FieldValue > 0);\r\n }).map(f => f.FieldValue)\r\n\r\n let proposed_objectid_multipoint = config.FieldsData.filter(f => {\r\n return (f.Fieldkey.includes(\"PROPOSED_MULTIPOINT_GEOM_OBJECT_ID\") && f.FieldValue > 0);\r\n }).map(f => f.FieldValue)\r\n proposed_objectid = [...proposed_objectid_point, ...proposed_objectid_multipoint]\r\n\r\n\r\n //Get unique values\r\n proposed_objectid = [...new Set(proposed_objectid)]\r\n\r\n let allGeomObjectIds = [...proposed_objectid, ...FDObjectid]\r\n\r\n const featureUrl = config.FeatureLayers[type];\r\n const layerDef = { \"queryExpression\": \"1=-1\", \"url\": featureUrl };\r\n\r\n if (allGeomObjectIds && allGeomObjectIds.length > 0) {\r\n let searchEqu = \"\";\r\n for (var i = 0; i < allGeomObjectIds.length; i++) {\r\n if (searchEqu === \"\") {\r\n if (allGeomObjectIds[i]) {\r\n searchEqu = GetQueryValue(allGeomObjectIds[i]);\r\n }\r\n } else {\r\n if (allGeomObjectIds[i])\r\n searchEqu = searchEqu + \",\" + GetQueryValue(allGeomObjectIds[i]);\r\n }\r\n }\r\n if (searchEqu && searchEqu != \"\")\r\n layerDef.queryExpression = \"ObjectId in (\" + searchEqu + \")\";\r\n else\r\n layerDef.queryExpression = \"ObjectId in (-1)\";\r\n }\r\n\r\n\r\n QueryTask(layerDef, layerDef.queryExpression, view.spatialReference).then(\r\n response => {\r\n if (response && response.features) {\r\n loadModules([\r\n \"esri/layers/GraphicsLayer\",\r\n \"esri/Graphic\",\r\n \"esri/geometry/Point\",\r\n \"esri/geometry/Multipoint\",\r\n 'esri/geometry/Polyline',\r\n 'esri/geometry/Polygon',\r\n 'esri/symbols/PictureMarkerSymbol', 'esri/geometry/SpatialReference',\r\n \"esri/layers/FeatureLayer\"\r\n ]).then(([GraphicsLayer, Graphic, Point, Multipoint, Polyline, Polygon,\r\n PictureMarkerSymbol, SpatialReference, FeatureLayer]) => {\r\n\r\n let layer = view.map.layers.find(function (layer) {\r\n return layer.title === \"Sketch Layer\";\r\n });\r\n\r\n if (!layer) {\r\n layer = new GraphicsLayer({\r\n \"title\": \"Sketch Layer\", listMode: 'hide'\r\n });\r\n }\r\n\r\n let geometries = [];\r\n response.features.forEach(function (item) {\r\n let type = item.geometry.type;\r\n type = (type === \"point\" || type == \"multipoint\" ? \"POINT\" : (type === \"polyline\" ? \"LINE\" : (type === \"polygon\" ? \"POLYGON\" : null)));\r\n let geom = (type === \"LINE\" ? new Polyline(item.geometry) : (type === \"POLYGON\" ? new Polygon(item.geometry) : null));\r\n\r\n if (type === \"POINT\") {\r\n if (item.geometry && item.geometry.points != null && item.geometry.points.length > 0) {\r\n geom = new Multipoint(item.geometry);\r\n\r\n } else {\r\n geom = new Point(item.geometry);\r\n }\r\n }\r\n\r\n let geomSymbol = (type === \"POINT\" || type == \"MULTIPOINT\" ? ((SubModuleKey == \"COLLISION\" || SubModuleKey == \"INVESTIGATION\") ? mapConstants.getSVGPointtSymbol() : mapConstants.ExistingPointSymbol) : (type === \"LINE\" ? mapConstants.LineSymbol : (type === \"POLYGON\" ? mapConstants.PolygonFillSymbol : null)));\r\n if (proposed_objectid && proposed_objectid.length > 0) {\r\n if (proposed_objectid[0] == item.attributes.OBJECTID) {\r\n geomSymbol = (type === \"POINT\" || type == \"MULTIPOINT\" ? ((SubModuleKey == \"COLLISION\" || SubModuleKey == \"INVESTIGATION\") ? mapConstants.getSVGHighlighPointtSymbol() : mapConstants.PointSymbol) : (type === \"LINE\" ? mapConstants.LineSymbol : (type === \"POLYGON\" ? mapConstants.PolygonFillSymbol : null)));\r\n }\r\n }\r\n if (config && config.MultipleLocationData && Array.isArray(config.MultipleLocationData) && config.MultipleLocationData.length > 0) {\r\n let currgeomobjectid = item.attributes.OBJECTID;\r\n let primaryobjectidRes = config.MultipleLocationData.filter(a => a.IsPrimary == 'Y');\r\n if (primaryobjectidRes && Array.isArray(primaryobjectidRes) && primaryobjectidRes.length > 0) {\r\n let primaryobjectid = primaryobjectidRes[0].ObjectId;\r\n if (currgeomobjectid == primaryobjectid) {\r\n geomSymbol = (type === \"POINT\" || type == \"MULTIPOINT\" ? ((SubModuleKey == \"COLLISION\" || SubModuleKey == \"INVESTIGATION\") ? mapConstants.getSVGHighlighPointtSymbol() : mapConstants.PointSymbol) : (type === \"LINE\" ? mapConstants.LineSymbol : (type === \"POLYGON\" ? mapConstants.PolygonFillSymbolSecondary : null)));\r\n }\r\n }\r\n }\r\n\r\n\r\n geometries.push(geom);\r\n let g = new Graphic({\r\n geometry: geom,\r\n attributes: item.attributes,\r\n symbol: geomSymbol\r\n });\r\n if (layer && layer.graphics)\r\n layer.graphics.add(g);\r\n });\r\n view.map.layers.add(layer, graphicsLayerIndex);\r\n if (geometries) {\r\n\r\n if (geometries.length > 1) {\r\n GeometryEngineTask({ \"geometries\": geometries, \"spatialReference\": view.spatialReference, \"type\": \"union\" }).then(\r\n GeomEngineresponse => {\r\n if (GeomEngineresponse && GeomEngineresponse.centroid)\r\n CenterAndZoom(view, GeomEngineresponse.centroid, zoom);\r\n else\r\n CenterAndZoom(view, geometries[0], zoom);\r\n },\r\n GeomEngineerror => {\r\n CenterAndZoom(view, geometries[0], zoom);\r\n console.log(GeomEngineerror);\r\n });\r\n } else if (geometries.length === 1) {\r\n CenterAndZoom(view, geometries[0], zoom);\r\n }\r\n\r\n }\r\n\r\n\r\n });\r\n }\r\n resolve(true);\r\n },\r\n error => {\r\n console.log(error);\r\n reject({ \"error\": error });\r\n }\r\n );\r\n });\r\n}\r\n\r\n\r\nexport function FeaturesLayerGraphicsTaskAddLookup(view, config, mapConstants, zoom, lookupdata, SubModuleKey) {\r\n\r\n var isPointAllowMultiple = config.drawOptions.AllowMultiple && config.drawOptions.AllowMultiple.Points; //this.props.options.AllowMultiple && this.props.options.AllowMultiple.Points;\r\n var isLinesAllowMultiple = config.drawOptions.AllowMultiple && config.drawOptions.AllowMultiple.Lines; //this.props.options.AllowMultiple && this.props.options.AllowMultiple.Lines;\r\n var isPolygonssAllowMultiple = config.drawOptions.AllowMultiple && config.drawOptions.AllowMultiple.Polygons; //this.props.options.AllowPolygons && this.props.options.AllowMultiple.Polygons;\r\n\r\n var promises = []\r\n const tools = config.drawOptions.Tools;\r\n let type = \"POINT\"\r\n if (tools.indexOf(\"point\") > -1) {\r\n type = \"POINT\";\r\n if (isPointAllowMultiple)\r\n type = \"MULTIPOINT\";\r\n promises.push(FeaturesLayerGraphicsTaskAddLookupByType(view, config, mapConstants, zoom, lookupdata, type, isPointAllowMultiple, SubModuleKey));\r\n }\r\n if (tools.indexOf(\"polyline\") > -1) {\r\n type = \"LINE\";\r\n promises.push(FeaturesLayerGraphicsTaskAddLookupByType(view, config, mapConstants, zoom, lookupdata, type, isLinesAllowMultiple, SubModuleKey));\r\n }\r\n if (tools.indexOf(\"polygon\") > -1 || tools.indexOf(\"rectangle\") > -1 || tools.indexOf(\"circle\") > -1) {\r\n type = \"POLYGON\";\r\n promises.push(FeaturesLayerGraphicsTaskAddLookupByType(view, config, mapConstants, zoom, lookupdata, type, isPolygonssAllowMultiple, SubModuleKey));\r\n }\r\n // Specific to map selection with 'SELECT TOOL' and no map point available. Select tool always a polygon.\r\n if (promises.length < 1 && Array.isArray(config.SelectLayerListOptions)\r\n && config.SelectLayerListOptions.length > 0) {\r\n type = \"POLYGON\";\r\n promises.push(FeaturesLayerGraphicsTaskByType(view, config, mapConstants, zoom, type, isPolygonssAllowMultiple, SubModuleKey));\r\n }\r\n\r\n\r\n return Promise.all(promises).then(applyViewResponses => {\r\n if (applyViewResponses) {\r\n const pointgeomApplyViewResponse = applyViewResponses[0]; //Point\r\n const linegeomApplyViewResponse = applyViewResponses[1]; //Line\r\n const polygongeomApplyViewResponse = applyViewResponses[2]; //Polygon\r\n\r\n let applyViewGraphics = { ...pointgeomApplyViewResponse, ...linegeomApplyViewResponse, ...polygongeomApplyViewResponse };\r\n return applyViewGraphics;\r\n //resolve(applyViewGraphics);\r\n }\r\n }, error => {\r\n console.log(error);\r\n //'reject' is not defined no-undef correct:\r\n // reject({ \"error\": \"mapview ,zoom, drawOptions.Tools, config.FeatureLayers and config.FieldsData are not found \" });\r\n });\r\n};\r\nfunction FeaturesLayerGraphicsTaskAddLookupByType(view, config, mapConstants, zoom, lookupdata, type, isAllowMultiple, SubModuleKey) {\r\n return new Promise((resolve, reject) => {\r\n if (!loadModules) {\r\n reject('FeaturesLayersTask: ArcGIS API is not loaded');\r\n return;\r\n }\r\n if (view && config && zoom && config.drawOptions && config.drawOptions.Tools && config.FeatureLayers && config.FieldsData) {\r\n\r\n const graphicsLayerIndex = config.FeatureLayers[\"LayerIndex\"] || 3;\r\n let FDObjectid = config.FieldsData.filter(f => {\r\n return f.Fieldkey.includes(type + \"_GEOM_OBJECT_ID\");\r\n }).map(f => f.FieldValue);\r\n if ((FDObjectid[0] == 0 || FDObjectid[0] == null) && type == \"MULTIPOINT\" && isAllowMultiple) {\r\n type = \"POINT\";\r\n FDObjectid = config.FieldsData.filter(f => {\r\n return f.Fieldkey.includes(type + \"_GEOM_OBJECT_ID\");\r\n }).map(f => f.FieldValue);\r\n }\r\n\r\n\r\n let proposed_objectid = []\r\n\r\n let proposed_objectid_point = config.FieldsData.filter(f => {\r\n return (f.Fieldkey.includes(\"PROPOSED_\" + type + \"_GEOM_OBJECT_ID\"));\r\n }).map(f => f.FieldValue)\r\n\r\n let proposed_objectid_multipoint = config.FieldsData.filter(f => {\r\n return (f.Fieldkey.includes(\"PROPOSED_MULTIPOINT_GEOM_OBJECT_ID\"));\r\n }).map(f => f.FieldValue)\r\n\r\n proposed_objectid = [...proposed_objectid_point, ...proposed_objectid_multipoint]\r\n\r\n // if(type==='POINT' || type==='MULTIPOINT'){\r\n\r\n // }else{\r\n // proposed_objectid = [...proposed_objectid_point]\r\n // }\r\n //Get unique values\r\n proposed_objectid = [...new Set(proposed_objectid)]\r\n let allGeomObjectIds = [...proposed_objectid, ...FDObjectid]\r\n\r\n const featureUrl = config.FeatureLayers[type];\r\n const layerDef = { \"queryExpression\": \"1=-1\", \"url\": featureUrl };\r\n console.log('all geom object ids', allGeomObjectIds);\r\n\r\n if (allGeomObjectIds && allGeomObjectIds.length > 0) {\r\n let searchEqu = \"\";\r\n for (var i = 0; i < allGeomObjectIds.length; i++) {\r\n console.log(allGeomObjectIds[i], '-----searchEqu---------', searchEqu)\r\n if (searchEqu === \"\") {\r\n if (allGeomObjectIds[i]) {\r\n searchEqu = GetQueryValue(allGeomObjectIds[i]);\r\n }\r\n } else {\r\n if (allGeomObjectIds[i])\r\n searchEqu = searchEqu + \",\" + GetQueryValue(allGeomObjectIds[i]);\r\n }\r\n }\r\n if (searchEqu && searchEqu != \"\")\r\n layerDef.queryExpression = \"ObjectId in (\" + searchEqu + \")\";\r\n else\r\n layerDef.queryExpression = \"ObjectId in (-1)\";\r\n }\r\n\r\n\r\n // if (FDObjectid && FDObjectid.length > 0) {\r\n // let searchEqu = \"\";\r\n // for (var i = 0; i < FDObjectid.length; i++) {\r\n // if (searchEqu === \"\") {\r\n // if (FDObjectid[i] && FDObjectid[i].length > 0)\r\n // searchEqu = GetQueryValue(FDObjectid[i]);\r\n // } else {\r\n // if (FDObjectid[i] && FDObjectid[i].length > 0)\r\n // searchEqu = searchEqu + \",\" + GetQueryValue(FDObjectid[i]);\r\n // }\r\n // }\r\n // if (searchEqu && searchEqu != \"\")\r\n // layerDef.queryExpression = \"ObjectId in (\" + searchEqu + \")\";\r\n // else\r\n // layerDef.queryExpression = \"ObjectId in (-1)\";\r\n // }\r\n\r\n QueryTask(layerDef, layerDef.queryExpression, view.spatialReference).then(\r\n response => {\r\n if (response && response.features) {\r\n loadModules([\r\n \"esri/layers/GraphicsLayer\",\r\n \"esri/Graphic\",\r\n \"esri/geometry/Point\",\r\n \"esri/geometry/Multipoint\",\r\n 'esri/geometry/Polyline',\r\n 'esri/geometry/Polygon',\r\n 'esri/symbols/PictureMarkerSymbol', 'esri/geometry/SpatialReference',\r\n \"esri/layers/FeatureLayer\"\r\n ]).then(([GraphicsLayer, Graphic, Point, Multipoint, Polyline, Polygon,\r\n PictureMarkerSymbol, SpatialReference, FeatureLayer]) => {\r\n\r\n let layer = view.map.layers.find(function (layer) {\r\n return layer.title === \"Sketch Layer\";\r\n });\r\n\r\n if (!layer) {\r\n layer = new GraphicsLayer({\r\n \"title\": \"Sketch Layer\", listMode: 'hide'\r\n });\r\n }\r\n\r\n let geometries = [];\r\n response.features.forEach(function (item) {\r\n let type = item.geometry.type;\r\n type = (type === \"point\" || type == \"multipoint\" ? \"POINT\" : (type === \"polyline\" ? \"LINE\" : (type === \"polygon\" ? \"POLYGON\" : null)));\r\n let geom = (type === \"LINE\" ? new Polyline(item.geometry) : (type === \"POLYGON\" ? new Polygon(item.geometry) : null));\r\n\r\n if (type === \"POINT\") {\r\n if (item.geometry && item.geometry.points != null && item.geometry.points.length > 0) {\r\n geom = new Multipoint(item.geometry);\r\n\r\n } else {\r\n geom = new Point(item.geometry);\r\n }\r\n }\r\n let geomSymbol = (type === \"POINT\" || type == \"MULTIPOINT\" ? ((SubModuleKey == \"COLLISION\" || SubModuleKey == \"INVESTIGATION\") ? mapConstants.getSVGPointtSymbol() : mapConstants.ExistingPointSymbol) : (type === \"LINE\" ? mapConstants.LineSymbol : (type === \"POLYGON\" ? mapConstants.PolygonFillSymbol : null)));\r\n if (proposed_objectid && proposed_objectid.length > 0) {\r\n if (proposed_objectid[0] == item.attributes.OBJECTID) {\r\n geomSymbol = (type === \"POINT\" || type == \"MULTIPOINT\" ? mapConstants.PointSymbol : (type === \"LINE\" ? mapConstants.LineSymbol : (type === \"POLYGON\" ? mapConstants.PolygonFillSymbol : null)));\r\n }\r\n }\r\n if (config && config.MultipleLocationData && Array.isArray(config.MultipleLocationData) && config.MultipleLocationData.length > 0) {\r\n let currgeomobjectid = item.attributes.OBJECTID;\r\n let primaryobjectidRes = config.MultipleLocationData.filter(a => a.IsPrimary == 'Y');\r\n if (primaryobjectidRes && Array.isArray(primaryobjectidRes) && primaryobjectidRes.length > 0) {\r\n let primaryobjectid = primaryobjectidRes[0].ObjectId;\r\n if (currgeomobjectid == primaryobjectid) {\r\n geomSymbol = (type === \"POINT\" || type == \"MULTIPOINT\" ? mapConstants.PointSymbol : (type === \"LINE\" ? mapConstants.LineSymbol : (type === \"POLYGON\" ? mapConstants.PolygonFillSymbolSecondary : null)));\r\n }\r\n }\r\n }\r\n\r\n\r\n geometries.push(geom);\r\n let g = new Graphic({\r\n geometry: geom,\r\n attributes: item.attributes,\r\n symbol: geomSymbol\r\n });\r\n\r\n layer.graphics.add(g);\r\n });\r\n view.map.layers.add(layer, graphicsLayerIndex);\r\n if (geometries) {\r\n\r\n if (geometries.length > 1) {\r\n GeometryEngineTask({ \"geometries\": geometries, \"spatialReference\": view.spatialReference, \"type\": \"union\" }).then(\r\n GeomEngineresponse => {\r\n if (GeomEngineresponse && GeomEngineresponse.centroid)\r\n CenterAndZoom(view, GeomEngineresponse.centroid, zoom);\r\n else\r\n CenterAndZoom(view, geometries[0], zoom);\r\n },\r\n GeomEngineerror => {\r\n console.log(GeomEngineerror);\r\n });\r\n } else if (geometries.length === 1) {\r\n CenterAndZoom(view, geometries[0], zoom);\r\n }\r\n\r\n if (lookupdata && lookupdata.length > 0 && geometries.length > 0) {\r\n // let lookupDataresult = GISLookupTaskWithGeom(geometries, lookupdata);\r\n // console.log('before adding----'+lookupdata);\r\n // resolve(lookupDataresult);\r\n GISLookupTaskWithGeom(config, geometries, lookupdata).then(function (lookupDataresult) {\r\n resolve(lookupDataresult);\r\n })\r\n } else {\r\n resolve({})\r\n }\r\n\r\n }\r\n });\r\n }\r\n },\r\n error => {\r\n console.log(error);\r\n reject({ \"error\": error });\r\n }\r\n );\r\n } else {\r\n reject({ \"error\": \"mapview ,zoom, drawOptions.Tools, config.FeatureLayers and config.FieldsData are not found \" });\r\n }\r\n });\r\n}\r\n\r\n\r\nexport function FeaturesLayerGraphicsTaskAddLookup_NoDraw(config, geometries, lookupdata) {\r\n return new Promise((resolve, reject) => {\r\n GISLookupTaskWithGeom(config, geometries, lookupdata).then(function (lookupDataresult) {\r\n resolve(lookupDataresult);\r\n })\r\n })\r\n}","import { getEnvVariable } from '../../../../modules/environmentalList';\r\nimport { requestApi } from '../../form/utilities'\r\nimport moment from 'moment'\r\nconst _ = require('lodash');\r\n\r\n\r\nexport function MapSettings(config, submodulekey, layervalues, settingvalues, sectionmapsettings, mapbussinesRules) {\r\n const getSettingValue = (key, collection) => {\r\n if (collection && collection.length > 0) {\r\n let data = collection.filter(res => {\r\n return res.Key === key\r\n })\r\n if (data && Array.isArray(data) && data[0]) {\r\n return data[0].Value;\r\n } else return null;\r\n }\r\n }\r\n return new Promise((resolve, reject) => {\r\n // let settingprom = []\r\n\r\n // [requestApi({ get: { url: getEnvVariable('Admin') + `/api/MapAppSettings/AllMapSettings` } }),\r\n // requestApi({ get: { url: getEnvVariable('Admin') + `/api/Layers/All/Active` } })\r\n // ];\r\n // if (config && config.SITE_PERMIT_TYPE_ID) {\r\n // settingprom.push(requestApi({ get: { url: getEnvVariable('AdminConfig') + `/api/SitePermitTypeSection/MapSettings/${config.SITE_PERMIT_TYPE_ID}` } }))\r\n // settingprom.push(requestApi({ get: { url: getEnvVariable('Application') + `/api/BusinessRules/MapRules/${config.SITE_PERMIT_TYPE_ID}` } }))\r\n // }\r\n\r\n // Promise.all(settingprom).then((values) => {\r\n // const [sectionmapsettings, mapbussinesRules] = values;\r\n let centergeomser = layervalues.filter(res => {\r\n return res.KEY === 'CenterGeomService'\r\n })\r\n let statemaintroads = layervalues.filter(res => {\r\n return res.KEY === 'STATE_MAINTAINED'\r\n })\r\n let taxparcelserDB = layervalues.filter(res => {\r\n return res.KEY === 'Tax Parcels'\r\n });\r\n\r\n let taxparcelser = [];\r\n //Change to the taxparcel layers format\r\n if (taxparcelserDB && Array.isArray(taxparcelserDB) && taxparcelserDB.length > 0) {\r\n taxparcelserDB.forEach(function (layer) {\r\n let obj = {\r\n \"ExtentZoom\": true,\r\n \"title\": layer.DisplayName,\r\n \"type\": \"F\",\r\n \"url\": layer.Url,\r\n \"outFields\": [\"*\"]\r\n }\r\n taxparcelser.push(obj);\r\n })\r\n }\r\n\r\n config.MapBussinessRules = flatMapBussinessRules(mapbussinesRules);\r\n let baseLayersConfig = config && config.LayerOptionsConfig ? config.LayerOptionsConfig.Category : [\"F\"];\r\n let mapType = config && config.LayerOptionsConfig ? config.LayerOptionsConfig.MapType : [];\r\n let featurelayersConfig = layervalues.filter(res => {\r\n res.SubModuleKeys = res.SubModuleKey !== null ? (res.SubModuleKey + \"\").split(\",\") : [];\r\n return (mapType.some(r => res.Category && res.Category.split(',').indexOf(r) >= 0)) && !res.SubModuleKey || res.SubModuleKey == 'COMMON' || res.SubModuleKeys.includes(submodulekey)\r\n })\r\n\r\n //Specifc to landing page, No submodule key accessible. Fixed after baseLayerConfig from Raghv: FP Naren\r\n if (mapType.includes(\"L\")) {\r\n let landingFeaturelayersConfig = layervalues.filter(res => {\r\n return (mapType.some(r => res.Category && res.Category.split(',').indexOf(r) >= 0))\r\n })\r\n featurelayersConfig = [...featurelayersConfig, ...landingFeaturelayersConfig]\r\n }\r\n\r\n // filter(a => !a.SubModuleKey || a.SubModuleKey=='COMMON' || a.SubModuleKeys.includes(this.state.SubModuleKey));\r\n /* Added comment by Raghavendar baseLayersConfig is fixed to check is editable or not it will have values F- Features M- Map Server layers\r\n\r\n\r\n let featurelayersConfig = layervalues.filter(res => {\r\n return (baseLayersConfig.includes(res.Type) && mapType.some(r => res.Category.split(',').indexOf(r) >= 0))\r\n })*/\r\n // let featurelayersConfig = layervalues.filter(res => {\r\n // return res.Category === 'F'\r\n // })\r\n\r\n let maplayersConfig = layervalues.filter(res => {\r\n return res.Category === 'M'\r\n })\r\n\r\n if (featurelayersConfig && featurelayersConfig.length > 0) {\r\n let allFeatureLayers = []\r\n featurelayersConfig.forEach(function (layer) {\r\n let eachLayer = layer;\r\n eachLayer.url = layer.Url;\r\n eachLayer.defaultExpression = getExpression(layer);\r\n eachLayer.key = layer.KEY;\r\n eachLayer.title = layer.DisplayName || layer.Name;\r\n //eachLayer.CanSearch = layer.CanSearch;\r\n //eachLayer.SearchField = layer.SearchField;\r\n eachLayer.HasValidation = false;\r\n eachLayer.SelectTools = (layer.SelectTools + \"\").split(\",\");\r\n //eachLayer.SubModuleKeys = (layer.SubModuleKey + \"\").split(\",\");\r\n eachLayer.SubscribedMasterFieldsKey = layer.SubscribedMasterFieldsKey;\r\n eachLayer.id = layer.Id;\r\n eachLayer.type = layer.Type;\r\n if (layer.CanLabel && layer.CanLabel == 'Y' && layer.LabelExpression) {\r\n eachLayer.labelExpression = GetStringFromJsonText(layer.LabelExpression, 'L');\r\n if (eachLayer.labelExpression)\r\n eachLayer.showLabels = true;\r\n eachLayer.labelColor = layer.LabelColor || [0, 0, 0];\r\n }\r\n eachLayer.InfoTemplate = GetJsonFromText(layer.InfoTemplate, 'I') //JSONParser(layer.InfoTemplate);\r\n eachLayer.GridTemplate = GetJsonFromText(layer.GridTemplate, 'G') //JSONParser(layer.GridTemplate);\r\n eachLayer.EditorTemplate = GetJsonFromText(layer.EditorTemplate, 'E') //JSONParser(layer.EditorTemplate);\r\n //console.log('Layers config --------------------', eachLayer);\r\n allFeatureLayers.push(eachLayer)\r\n })\r\n\r\n if(Array.isArray(allFeatureLayers) && allFeatureLayers.length > 0){\r\n allFeatureLayers = _.sortBy(allFeatureLayers, 'DisplayName').reverse();\r\n }\r\n\r\n config.AllFeatureLayerListOptions = allFeatureLayers;\r\n config.FeatureLayerListOptions = allFeatureLayers.filter(res => {\r\n return !res.ShowOnMap || res.ShowOnMap == \"Y\" || res.ShowOnMap == \"V\"\r\n });\r\n // Validate layers on sketch and distance.\r\n config.SketchValidationLayers = allFeatureLayers.filter(res => {\r\n return res.HasSketchValidation ==='Y' && res.ValidationDistance \r\n })\r\n }\r\n\r\n if (config && config.AllFeatureLayerListOptions && config.AllFeatureLayerListOptions.length > 0) {\r\n config.AllFeatureLayerListOptions.forEach(function (item) {\r\n if (item.key == 'AAH_Network') {\r\n if (taxparcelser && taxparcelser[0]) {\r\n item.HasValidation = true;\r\n item.Validation = [{ \"FieldName\": \"Status\", \"AllowedValues\": [\"Available\"] }]\r\n\r\n }\r\n }\r\n });\r\n }\r\n\r\n config.SearchLayerListOptions = config.AllFeatureLayerListOptions && config.AllFeatureLayerListOptions.filter(res => {\r\n return res.CanSearch === 'Y'\r\n });\r\n config.SelectLayerListOptions = config.AllFeatureLayerListOptions && config.AllFeatureLayerListOptions.filter(res => {\r\n return res.CanSelect === 'Y'\r\n });\r\n\r\n\r\n //Get layer default expression\r\n function getExpression(LayerOptions) {\r\n const { AsofArchiveStart, AsofArchiveEnd, CanFilterAsof, Url, KEY } = LayerOptions;\r\n let defaultExpression = \"1=1\"\r\n try {\r\n if (Url && Url.indexOf(\"where=\") !== -1) {\r\n const decodedurl = decodeURIComponent(Url).replace(/\\+/g, \" \");\r\n var params = decodedurl.split(\"where=\")[1]\r\n defaultExpression = (params.indexOf(\"&\") !== -1) ? (params.split(\"&\")[0]) : params;\r\n }\r\n if (KEY == 'CenterGeomService') {\r\n let HasCenterGeomServiceArchive = getSettingValue('HasCenterGeomServiceArchive', settingvalues)\r\n if (HasCenterGeomServiceArchive && HasCenterGeomServiceArchive == 'Y') {\r\n if (CanFilterAsof == \"Y\" && AsofArchiveStart && AsofArchiveEnd) {\r\n let archivedate = moment(new Date(Date.now() + 1 * 24 * 60 * 60 * 1000)).format('YYYY-MM-DD HH:mm:ss');\r\n let queryExpression = \"(SysStart<='\" + archivedate + \"' AND SysEnd>'\" + archivedate + \"' AND \" + AsofArchiveStart + \"<='\" + archivedate + \"' AND \" + AsofArchiveEnd + \">'\" + archivedate + \"')\"\r\n defaultExpression = (defaultExpression == \"1=1\") ? (queryExpression) : ((\"(\" + defaultExpression + \")\") + \" and \" + queryExpression);\r\n }\r\n }\r\n\r\n }\r\n } catch (ex) {\r\n console.error(ex)\r\n }\r\n return defaultExpression;\r\n }\r\n\r\n //Get JSON L-Label Expression $feature.NAME+' ('+$feature.FIPS+')'\r\n function GetStringFromJsonText(josnStr, type) {\r\n try {\r\n if (josnStr) {\r\n let arr = JSONParser(josnStr);\r\n if (arr && Array.isArray(arr)) {\r\n\r\n } else if (arr && arr.list && Array.isArray(arr.list)) {\r\n let rtnstr = \"\"\r\n if (type == 'L') {\r\n arr.list.forEach(element => {\r\n if (element.fieldName) {\r\n if (element.label) {\r\n if (rtnstr && rtnstr != \"\")\r\n rtnstr = rtnstr + \"+'\" + element.label + \"'\"\r\n else\r\n rtnstr = \"'\" + element.label + \"'\"\r\n }\r\n if (rtnstr && rtnstr != \"\")\r\n rtnstr = rtnstr + \"+$feature.\" + element.fieldName\r\n else\r\n rtnstr = \"$feature.\" + element.fieldName\r\n }\r\n });\r\n if (arr.postfix) {\r\n if (rtnstr && rtnstr != \"\")\r\n rtnstr = rtnstr + \"+'\" + arr.postfix + \"'\"\r\n else\r\n rtnstr = \"'\" + arr.postfix + \"'\"\r\n }\r\n return rtnstr;\r\n }\r\n }\r\n }\r\n } catch (ex) {\r\n console.error(ex)\r\n }\r\n return null;\r\n }\r\n\r\n //Get JSON I-Info, G-Grid, E-Editor\r\n function GetJsonFromText(josnStr, type) {\r\n try {\r\n if (josnStr) {\r\n let arr = JSONParser(josnStr);\r\n if (arr && Array.isArray(arr)) {\r\n let fieldInfos = []\r\n arr.forEach(element => {\r\n if (element.fieldName) {\r\n if (type == 'I')\r\n fieldInfos.push({ fieldName: element.fieldName, label: element.label });\r\n else if (type == 'G')\r\n fieldInfos.push({ field: element.fieldName, label: element.label, sortable: true, hidden: false });\r\n else if (type == 'E')\r\n fieldInfos.push({ name: element.fieldName, editable: true, label: element.label, description: element.label });\r\n }\r\n });\r\n if (fieldInfos.length > 0) {\r\n //console.log(fieldInfos);\r\n if (type == 'I') return [{ type: \"fields\", fieldInfos: fieldInfos }]\r\n if (type == 'G' || type == 'E') return fieldInfos\r\n }\r\n }\r\n }\r\n } catch (ex) {\r\n console.error(ex)\r\n }\r\n return null;\r\n }\r\n\r\n function JSONParser(jsonstr) {\r\n try {\r\n return JSON.parse(jsonstr)\r\n } catch (e) {\r\n console.error(\"Error in parsing JSON from database\")\r\n }\r\n return null;\r\n }\r\n function flatMapBussinessRules(mapBussinessRules) {\r\n let rules = [];\r\n if (mapBussinessRules) {\r\n for (const [key, value] of Object.entries(mapBussinessRules)) {\r\n if (value && !_.isEmpty(value)) {\r\n for (const [ruleKey, rule] of Object.entries(value)) {\r\n if (rule && !_.isEmpty(rule))\r\n rules.push(rule);\r\n }\r\n }\r\n }\r\n }\r\n return rules;\r\n }\r\n if (config && config.LayerOptions && config.LayerOptions.length > 0) {\r\n config.LayerOptions.forEach(function (item) {\r\n if (item.title == 'CenterGeomService') {\r\n if (centergeomser && centergeomser[0]) {\r\n item.url = centergeomser[0].Url; //getEnvVariable('ArcGIS') + '/' + centergeomser[0].Url;\r\n item.key = centergeomser[0].KEY;\r\n item.title = centergeomser[0].Name;\r\n }\r\n } else if (item.title == 'STATE_MAINTAINED') {\r\n if (statemaintroads && statemaintroads[0]) {\r\n item.url = statemaintroads[0].Url;\r\n item.key = statemaintroads[0].KEY;\r\n item.title = statemaintroads[0].Name;\r\n }\r\n } else if (item.title == 'Tax Parcels') {\r\n if (taxparcelser && taxparcelser[0]) {\r\n item.url = taxparcelser[0].Url;\r\n item.key = taxparcelser[0].KEY;\r\n item.title = taxparcelser[0].Name;\r\n\r\n }\r\n }\r\n else if (item.key == 'AAH_Network') {\r\n if (taxparcelser && taxparcelser[0]) {\r\n item.HasValidation = true;\r\n item.Validation = [{ \"FieldName\": \"Status\", \"AllowedValues\": [\"Available\"] }]\r\n\r\n }\r\n }\r\n });\r\n\r\n }\r\n\r\n // if (config && config.FeatureLayerListOptions && config.FeatureLayerListOptions.length > 0) {\r\n // config.FeatureLayerListOptions.forEach(function (item) {\r\n // if (item.title == 'CenterGeomService') {\r\n // if (centergeomser && centergeomser[0]) {\r\n // item.url = getEnvVariable('ArcGIS') + '/' + centergeomser[0].Url;\r\n // item.key = centergeomser[0].KEY;\r\n // item.title = centergeomser[0].Name;\r\n // }\r\n // } else if (item.title == 'STATE_MAINTAINED') {\r\n // if (statemaintroads && statemaintroads[0]) {\r\n // item.url = statemaintroads[0].Url;\r\n // item.key = statemaintroads[0].KEY;\r\n // item.title = statemaintroads[0].Name;\r\n // }\r\n // } else if (item.title == 'Tax Parcels') {\r\n // if (taxparcelser && taxparcelser[0]) {\r\n // item.url = taxparcelser[0].Url;\r\n // item.key = taxparcelser[0].KEY;\r\n // item.title = taxparcelser[0].Name;\r\n\r\n // }\r\n // }else if (item.title == 'Master Table GIS Data') {\r\n // if (centergeomser && centergeomser[0]) {\r\n // item.url = item.url;\r\n // item.key = item.Key;\r\n // item.title = item.title;\r\n // }\r\n // }\r\n // });\r\n // }\r\n\r\n\r\n // //Specific to AMES loading the all county layers and taxlayers information\r\n // if (config && (!config.CountyLayerOptions || config.CountyLayerOptions.length < 1)){\r\n // config.CountyLayerOptions = taxparcelser;\r\n // }\r\n if (config && taxparcelser && taxparcelser.length > 0) {\r\n config.CountyLayerOptions = taxparcelser;\r\n }\r\n\r\n let featurelayerPoint = layervalues.filter(res => {\r\n return res.KEY === 'POINT'\r\n })\r\n let featurelayermultiPoint = layervalues.filter(res => {\r\n return res.KEY === 'MULTIPOINT'\r\n })\r\n let featurelayerLine = layervalues.filter(res => {\r\n return res.KEY === 'LINE'\r\n })\r\n let featurelayerPolygon = layervalues.filter(res => {\r\n return res.KEY === 'POLYGON'\r\n })\r\n\r\n if (featurelayerPoint && featurelayerPoint[0] && featurelayermultiPoint && featurelayermultiPoint[0] &&\r\n featurelayerLine && featurelayerLine[0] && featurelayerPolygon && featurelayerPolygon[0])\r\n if (config && config.FeatureLayers) {\r\n console.log('config.FeatureLayers', config.FeatureLayers)\r\n // config.FeatureLayers.POINT = getEnvVariable('ArcGIS') + '/' + featurelayerPoint[0].Url;\r\n // config.FeatureLayers.MULTIPOINT = getEnvVariable('ArcGIS') + '/' + featurelayermultiPoint[0].Url;\r\n // config.FeatureLayers.LINE = getEnvVariable('ArcGIS') + '/' + featurelayerLine[0].Url;\r\n // config.FeatureLayers.POLYGON = getEnvVariable('ArcGIS') + '/' + featurelayerPolygon[0].Url;\r\n // Getting data from \r\n config.FeatureLayers.POINT = featurelayerPoint[0].Url;\r\n config.FeatureLayers.MULTIPOINT = featurelayermultiPoint[0].Url;\r\n config.FeatureLayers.LINE = featurelayerLine[0].Url;\r\n config.FeatureLayers.POLYGON = featurelayerPolygon[0].Url;\r\n console.log('config.FeatureLayers', config.FeatureLayers)\r\n }\r\n // let taxparcelLayer = layervalues.filter(res => {\r\n // return res.KEY === 'Tax Parcels'\r\n // })\r\n // if (taxparcelLayer && taxparcelLayer[0])\r\n // if (config && config.tasks && config.tasks.TaxParcels) {\r\n // let currenturl = config.tasks.TaxParcels.url\r\n // if (!currenturl)\r\n // config.tasks.TaxParcels.url = taxparcelLayer[0].Url;\r\n // }\r\n\r\n\r\n //Set MasterLookupFields data - From Appsettings\r\n if (settingvalues) {\r\n let masterlookups = settingvalues.filter(a => a.Key == \"MASTER_LOOKUP\");\r\n if (masterlookups && Array.isArray(masterlookups) && masterlookups.length > 0) {\r\n let MasterLookupFields = [];\r\n masterlookups.forEach(lookup => {\r\n let lookupjson = JSONParser(lookup.Value);\r\n if(lookupjson && lookupjson['LayerAuthenticationId'] && Array.isArray(layervalues)){\r\n let masterlayerauth = layervalues.find(a => a.LayerAuthenticationId == lookupjson['LayerAuthenticationId']);\r\n if(masterlayerauth){\r\n lookupjson['Token'] = masterlayerauth['Token'];\r\n lookupjson['TokenExpiration'] = masterlayerauth['TokenExpiration'];\r\n }\r\n }\r\n MasterLookupFields.push(lookupjson);\r\n });\r\n config.MasterLookupFields = MasterLookupFields\r\n }\r\n }\r\n\r\n\r\n let X_Center;\r\n let Y_Center;\r\n\r\n X_Center = parseFloat(getSettingValue('CENTER_X', settingvalues));\r\n Y_Center = parseFloat(getSettingValue('CENTER_Y', settingvalues));\r\n if (X_Center != undefined && X_Center != null && X_Center != 0 && Y_Center != undefined && Y_Center != null && Y_Center != 0) {\r\n config.viewProperties.center = [X_Center, Y_Center];\r\n }\r\n config.hastaxlotlayer = getSettingValue('HAS_TAXLOT', settingvalues);\r\n config.viewProperties.extent = {\r\n \"xmax\": parseFloat(getSettingValue('XMAX', settingvalues)),\r\n \"xmin\": parseFloat(getSettingValue('XMIN', settingvalues)),\r\n \"ymax\": parseFloat(getSettingValue('YMAX', settingvalues)),\r\n \"ymin\": parseFloat(getSettingValue('YMIN', settingvalues)),\r\n \"spatialReference\": parseFloat(getSettingValue('WKID', settingvalues)),\r\n \"basemap_spatialReference\": (parseFloat(getSettingValue('BASEMAP_WKID', settingvalues))) || 102100\r\n }\r\n config.searchOptions = { \"State\": getSettingValue('STATE', settingvalues) || 'OR' }\r\n //config.searchbookmarks.drawTool = getSettingValue('XMAX', settingvalues);\r\n config.viewProperties.zoom = parseFloat(getSettingValue('MIN_ZOOM', settingvalues));\r\n config.viewProperties.initialzoom = parseFloat(getSettingValue('INIT_MAP_ZOOM', settingvalues));\r\n //Add print services\r\n if (config.printOptions)\r\n config.printOptions.serviceURL = getSettingValue('PRINT_SERVICE_URL', settingvalues);\r\n\r\n if (sectionmapsettings)\r\n config.MapSettings = sectionmapsettings;\r\n\r\n if (getEnvVariable('ModuleKey') == \"KEPT\")\r\n config.widgets.push(\"MultiLocationSelector\")\r\n\r\n if (config && config.MapSettings) {\r\n if (config.MapSettings[\"IsAllowingInternalEdit\"] === \"Y\") {\r\n if (config.MapSettings[\"IsAllowingInternalToEditPoints\"] === \"Y\")\r\n config.drawOptions.Tools.push(\"point\");\r\n if (config.MapSettings[\"IsAllowingInternalToEditLines\"] === \"Y\")\r\n config.drawOptions.Tools.push(\"polyline\");\r\n if (config.MapSettings[\"IsAllowingInternalToEditPolygons\"] === \"Y\") {\r\n config.drawOptions.Tools.push(\"polygon\");\r\n config.drawOptions.Tools.push(\"rectangle\");\r\n config.drawOptions.Tools.push(\"circle\");\r\n }\r\n // config.drawOptions.AllowMultiple = false;\r\n config.drawOptions.AllowMultiple = {\r\n \"Points\": config.MapSettings[\"IsAllowingInternalToEditPointsSignleOrMultiple\"] === \"Y\",\r\n \"Lines\": config.MapSettings[\"IsAllowingInternalToEditLinesSignleOrMultiple\"] === \"Y\",\r\n \"Polygons\": config.MapSettings[\"IsAllowingInternalToEditPolygonsSignleOrMultiple\"] === \"Y\"\r\n };\r\n\r\n } else if (config.MapSettings[\"IsInternal\"] !== \"Y\"\r\n && config.MapSettings[\"IsAllowingExternalEdit\"] === \"Y\") {\r\n if (config.MapSettings[\"IsAllowingExternalToEditPoints\"] === \"Y\")\r\n config.drawOptions.Tools.push(\"point\");\r\n if (config.MapSettings[\"IsAllowingExternalToEditLines\"] === \"Y\")\r\n config.drawOptions.Tools.push(\"polyline\");\r\n if (config.MapSettings[\"IsAllowingExternalToEditPolygons\"] === \"Y\") {\r\n config.drawOptions.Tools.push(\"polygon\");\r\n config.drawOptions.Tools.push(\"rectangle\");\r\n config.drawOptions.Tools.push(\"circle\");\r\n }\r\n config.drawOptions.AllowMultiple = {\r\n \"Points\": config.MapSettings[\"IsAllowingExternalToEditPointsSignleOrMultiple\"] === \"Y\",\r\n \"Lines\": config.MapSettings[\"IsAllowingExternalToEditLinesSignleOrMultiple\"] === \"Y\",\r\n \"Polygons\": config.MapSettings[\"IsAllowingExternalToEditPolygonsSignleOrMultiple\"] === \"Y\"\r\n };\r\n //config.drawOptions.AllowMultiple = false\r\n }\r\n }\r\n let gisbuffer = getSettingValue('GISLOOKUP_BUFFER', settingvalues);\r\n config.GISLookupBuffer = gisbuffer ? parseFloat(gisbuffer) : '1';\r\n console.log('config.FeatureLayers', config);\r\n resolve(config);\r\n // })\r\n }) \r\n}\r\n\r\n","import { loadModules } from \"esri-loader\";\r\n\r\nimport { requestApi } from \"../../form/utilities\";\r\nimport { QueryTask, CenterAndZoom } from \"./queryTask\";\r\nimport { GeometryEngineTask } from \"./geometryEngineTask\";\r\nimport { getEnvVariable } from \"../../../../modules/environmentalList\";\r\n\r\nexport function AddLayers(view, config, mapdata, mapkey, mapConstants, SubModuleKey, layersList, statusList) {\r\n return new Promise((resolve, reject) => {\r\n if (!loadModules) {\r\n reject(\"AddLayers: ArcGIS API is not loaded\");\r\n return;\r\n }\r\n\r\n AddingLayers(view, config, mapdata, mapkey, mapConstants, SubModuleKey, layersList, statusList).then(\r\n (response) => {\r\n resolve(response);\r\n },\r\n (error) => {\r\n reject(error);\r\n }\r\n );\r\n });\r\n}\r\n\r\nexport function getpermittypeSymbol(permitTypecolor, statusColor) {\r\n const defaultSym = {\r\n type: \"simple-marker\", // autocasts as new SimpleMarkerSymbol()\r\n style: \"circle\", color: statusColor || permitTypecolor, size: \"10px\", // \r\n outline: { // autocasts as new SimpleLineSymbol() \r\n color: statusColor || permitTypecolor, width: 3 // points\r\n }\r\n }\r\n // {\r\n // type: \"simple-marker\", // autocasts as new SimpleMarkerSymbol()\r\n // color: permitTypecolor,\r\n // size: 18,\r\n // outline: {\r\n // // autocasts as new SimpleLineSymbol()\r\n // width: 0.5,\r\n // color: statusColor,\r\n // },\r\n // path:\r\n // \"M24.00505,12.31835c-3.7701,0-6.81,3.05-6.81,6.81c0,0.14,0.01,0.28,0.0199,0.42 c0.03,0.56,0.13,1.12,0.31,1.66c0.1701,0.53,0.4,1.03,0.71,1.5c0.0201,0.03,0.2101,0.3,0.5,0.74c0,0,0,0,0.01,0.01 c1.3,1.96,4.73,7.09,4.75,7.12c0.24,0.36,0.7701,0.36,1.0101,0c0.01-0.02,0.0299-0.04,0.0399-0.05 c0.07-0.11,5.11-7.66,5.2701-7.89c0.0399-0.07,0.0899-0.14,0.13-0.21c0.2699-0.46,0.4699-0.95,0.6099-1.46 c0.17-0.6,0.25-1.22,0.25-1.84C30.80495,15.36835,27.75505,12.31835,24.00505,12.31835z M24.17495,22.57835 c-1.5,0.09-2.7899-1.05-2.89-2.55c-0.0899-1.5,1.0501-2.79,2.5401-2.88c1.5-0.1,2.8,1.04,2.8899,2.54 C26.80495,21.18835,25.67495,22.47835,24.17495,22.57835z\",\r\n // };\r\n return defaultSym;\r\n}\r\n//return color\r\n\r\n// const defaultSym = {\r\n// type: \"simple-marker\", // autocasts as new SimpleMarkerSymbol()\r\n// color: permitTypecolor,\r\n// size: 18,\r\n// outline: {\r\n// // autocasts as new SimpleLineSymbol()\r\n// width: 0.5,\r\n// color: statusColor,\r\n// },\r\n// path:\r\n// \"M24.00505,12.31835c-3.7701,0-6.81,3.05-6.81,6.81c0,0.14,0.01,0.28,0.0199,0.42 c0.03,0.56,0.13,1.12,0.31,1.66c0.1701,0.53,0.4,1.03,0.71,1.5c0.0201,0.03,0.2101,0.3,0.5,0.74c0,0,0,0,0.01,0.01 c1.3,1.96,4.73,7.09,4.75,7.12c0.24,0.36,0.7701,0.36,1.0101,0c0.01-0.02,0.0299-0.04,0.0399-0.05 c0.07-0.11,5.11-7.66,5.2701-7.89c0.0399-0.07,0.0899-0.14,0.13-0.21c0.2699-0.46,0.4699-0.95,0.6099-1.46 c0.17-0.6,0.25-1.22,0.25-1.84C30.80495,15.36835,27.75505,12.31835,24.00505,12.31835z M24.17495,22.57835 c-1.5,0.09-2.7899-1.05-2.89-2.55c-0.0899-1.5,1.0501-2.79,2.5401-2.88c1.5-0.1,2.8,1.04,2.8899,2.54 C26.80495,21.18835,25.67495,22.47835,24.17495,22.57835z\",\r\n// };\r\n// return defaultSym;\r\n//}\r\nexport function getHighlightSymol() {\r\n let highlightrenderer = {\r\n type: \"simple-marker\", // autocasts as new SimpleMarkerSymbol()\r\n color: \"yellow\",\r\n size: 8,\r\n outline: {\r\n // autocasts as new SimpleLineSymbol()\r\n width: 0.5,\r\n color: \"darkyellow\",\r\n },\r\n };\r\n return highlightrenderer;\r\n}\r\n\r\nexport function getHighlightSymolColor(color) {\r\n let highlightrenderer = {\r\n type: \"simple-marker\", // autocasts as new SimpleMarkerSymbol()\r\n color: color || \"yellow\",\r\n size: 8,\r\n outline: {\r\n // autocasts as new SimpleLineSymbol()\r\n width: 0.5,\r\n color: color || \"darkyellow\",\r\n },\r\n };\r\n return highlightrenderer;\r\n}\r\n\r\nfunction AddingLayers(view, layers, mapdata, mapkey, mapConstants, SubModuleKey, res, statusres) {\r\n return new Promise((resolve, reject) => {\r\n loadModules([\r\n \"esri/layers/GraphicsLayer\",\r\n \"esri/layers/FeatureLayer\",\r\n \"esri/PopupTemplate\",\r\n \"esri/layers/MapImageLayer\",\r\n \"esri/config\"\r\n ]).then(([GraphicsLayer, FeatureLayer, PopupTemplate, MapImageLayer, esriConfig]) => {\r\n let highlight;\r\n if (layers && view && layers.length > 0) {\r\n const toremlayers = view.map.layers.filter((f) => {\r\n return f.listMode === \"show\";\r\n });\r\n view.map.layers.removeMany(toremlayers);\r\n // Promise.all([requestApi({ get: { url: getEnvVariable('Admin') + `/api/MasterPermitTypes/All` } }),\r\n // requestApi({ get: { url: getEnvVariable('Admin') + `/api/ApplicationStatus/All` } })\r\n // ]).then((values) => {\r\n // const [res, statusres] = values;\r\n layers.forEach(function (lyrinfo) {\r\n let layer = null;\r\n if (lyrinfo.HasAuthentication == \"Y\" && lyrinfo.Token) {\r\n esriConfig.request.interceptors.push({\r\n urls: lyrinfo.url,\r\n before: function (params) {\r\n params.requestOptions.query = params.requestOptions.query || {};\r\n params.requestOptions.query.token = lyrinfo.Token;\r\n params.requestOptions.query.expiration = lyrinfo.TokenExpiration;\r\n }\r\n });\r\n }\r\n // if(lyrinfo.HasAuthentication == \"Y\" && lyrinfo.Token){\r\n // console.log('Layer has authentication---------',lyrinfo);\r\n // lyrinfo.url = lyrinfo.url + '?token=' + lyrinfo.Token + '&expiration=' + lyrinfo.TokenExpiration;\r\n // }\r\n\r\n if (lyrinfo && lyrinfo.url && lyrinfo.url != \"\") {\r\n let labelClass = null;\r\n if (lyrinfo.showLabels && lyrinfo.labelExpression) {\r\n labelClass = { ...mapConstants.labelClass }\r\n //labelClass.labelExpression=lyrinfo.labelExpression\r\n labelClass.labelExpressionInfo = {\r\n expression: lyrinfo.labelExpression\r\n }\r\n if (lyrinfo.labelColor) {\r\n labelClass.symbol.color = lyrinfo.labelColor\r\n }\r\n }\r\n // console.log('layer url------------', lyrinfo.url);\r\n switch (lyrinfo.type) {\r\n case \"F\": //F-FeatureLayer\r\n case \"A\": //F-FeatureLayer\r\n layer = new FeatureLayer({\r\n title: lyrinfo.title,\r\n url: lyrinfo.url,\r\n id: lyrinfo.id,\r\n LayerOptions: lyrinfo,\r\n visible: (lyrinfo.ShowOnMap == \"Y\")\r\n }); //\r\n break;\r\n case \"G\": //G-GraphicsLayer\r\n layer = new GraphicsLayer({\r\n title: lyrinfo.title,\r\n url: lyrinfo.url,\r\n LayerOptions: lyrinfo,\r\n visible: (lyrinfo.ShowOnMap == \"Y\")\r\n });\r\n break;\r\n case \"M\": //G-GraphicsLayer\r\n layer = new MapImageLayer({\r\n url: lyrinfo.url, \r\n highlightOptions: {\r\n color: [255, 222, 173],\r\n fillOpacity: 0.1,\r\n },\r\n LayerOptions: lyrinfo,\r\n visible: (lyrinfo.ShowOnMap == \"Y\")\r\n });\r\n break;\r\n default:\r\n console.log('No layer found')\r\n }\r\n if (layer) {\r\n // Add layer info template to the layer.\r\n let title = lyrinfo.title || lyrinfo.key;\r\n if (lyrinfo.key == \"CenterGeomService\" || lyrinfo.IsRecord == 'Y' || lyrinfo.key == \"RECORD_HIGHLIGHT_LAYER\") {\r\n if (SubModuleKey == \"COLLISION\")\r\n title = \"Record Info \" + \"<b><a href='#/Records/{SubModuleKey}/{Site_Permit_Type_Id}/{ObjectId}' >View Collision </a></b> \" + \" / \" + \"<b><a href='#/Records/{SubModuleKey}/{Site_Permit_Type_Id}/{Investigation_Id}' > Investigation </a></b> \";\r\n else\r\n title = \"Record Info \" + \"<b><a href='#/Records/{SubModuleKey}/{Site_Permit_Type_Id}/{ObjectId}' >View Details </a></b> \";\r\n } \r\n var popupTemplateContent;\r\n if (lyrinfo.InfoTemplate) {\r\n popupTemplateContent = lyrinfo.InfoTemplate;\r\n }\r\n if (popupTemplateContent) {\r\n let popupTemplate = new PopupTemplate({ \r\n title: title,\r\n content: popupTemplateContent,\r\n });\r\n layer.popupTemplate = popupTemplate;\r\n }\r\n\r\n // Only for one layer to show pins\r\n if (lyrinfo.key == \"CenterGeomService\" || lyrinfo.IsRecord == 'Y') {\r\n // Color pin information based on master types and status\r\n let rendereruniqueValueInfos = [];\r\n if (res && res.length > 0) {\r\n res.map((permittype) => {\r\n statusres.map((statustype) => {\r\n let uniqvalObj = {\r\n value: permittype.Id, //+\",\"+statustype.Id\r\n symbol: getpermittypeSymbol(permittype.Color, statustype.StatusColor),\r\n label: permittype.Name + \" \" + statustype.StatusName,\r\n };\r\n rendereruniqueValueInfos.push(uniqvalObj);\r\n });\r\n });\r\n }\r\n const defaultSym = {\r\n type: \"simple-marker\", // autocasts as new SimpleMarkerSymbol()\r\n color: \"yellow\",\r\n size: 8,\r\n outline: {\r\n // autocasts as new SimpleLineSymbol()\r\n width: 0.5,\r\n color: \"darkyellow\",\r\n },\r\n };\r\n\r\n const permittypeRenderer = {\r\n type: \"unique-value\",\r\n defaultSymbol: defaultSym,\r\n defaultLabel: \"Permit Type Color\",\r\n field: \"Permit_Type_Id\",\r\n uniqueValueInfos: rendereruniqueValueInfos,\r\n };\r\n layer.renderer = permittypeRenderer;\r\n } \r\n\r\n if (lyrinfo.outFields)\r\n layer.outFields = lyrinfo.outFields || [\"*\"];\r\n\r\n //When layer loaded set color\r\n layer && layer.when(function () {\r\n if (lyrinfo.LayerColor && layer.renderer \r\n && layer.renderer.symbol && layer.renderer.symbol.outline) {\r\n //layer.renderer.symbol.color = lyrinfo.HighlightColor;\r\n layer.renderer.symbol.outline.color = lyrinfo.LayerColor;\r\n }\r\n });\r\n\r\n if (layer && lyrinfo.ExtentZoom === true) {\r\n layer.when(function () {\r\n //console.log(\"layer loaded------------------\", layer);\r\n // view.goTo(layer.fullExtent);\r\n });\r\n }\r\n //Set Layer Scale Beyond\r\n if (lyrinfo.LayerScaleType == 'Z') {\r\n layer.minScale = lyrinfo.ScaleInBeyond;\r\n layer.maxScale = lyrinfo.ScaleOutBeyond;\r\n }\r\n\r\n if (Array.isArray(mapdata) && (lyrinfo.key == \"CenterGeomService\" || \r\n lyrinfo.IsRecord == 'Y' || \r\n lyrinfo.key == 'RECORD_HIGHLIGHT_LAYER')) {\r\n let expression = \"Id in(\" + mapdata.toString() + \")\";\r\n //let expression = lyrinfo.defaultExpression || \"1=1\";\r\n layer.definitionExpression = expression;\r\n } else {\r\n let expression = lyrinfo.defaultExpression || \"1=1\";\r\n layer.definitionExpression = expression;\r\n }\r\n if (lyrinfo.showLabels) {\r\n layer.labelingInfo = [labelClass];\r\n layer.labelsVisible = lyrinfo.showLabels;\r\n }\r\n\r\n view.graphics.removeAll();\r\n let existinglayer = view.map.layers.find(function (elayer) {\r\n return elayer.title === layer.title;\r\n });\r\n if (existinglayer) {\r\n view.map.layers.remove(existinglayer)\r\n }\r\n\r\n if (lyrinfo.IsRecord == \"Y\" && lyrinfo.key !== \"CenterGeomService\") {\r\n let userdefinitions = GetRecordQueryExpressions(lyrinfo);\r\n if (userdefinitions && SubModuleKey)\r\n layer.definitionExpression = \" SubModuleKey = '\" + SubModuleKey + \"' AND \" + userdefinitions\r\n else if (!userdefinitions && SubModuleKey)\r\n layer.definitionExpression = \" SubModuleKey = '\" + SubModuleKey + \"'\";\r\n else if (!SubModuleKey && userdefinitions)\r\n layer.definitionExpression = userdefinitions\r\n\r\n if (Array.isArray(mapdata)) {\r\n let expression = \"ID in(\" + mapdata.toString() + \")\";\r\n if (expression) {\r\n layer.definitionExpression = layer.definitionExpression + \" AND \" + expression\r\n }\r\n }\r\n }\r\n\r\n if (lyrinfo.key == \"CenterGeomService\" && lyrinfo.IsRecord != \"Y\") {\r\n let userdefinitions = GetRecordQueryExpressions(lyrinfo);\r\n layer.definitionExpression = userdefinitions\r\n }\r\n\r\n //Adding layers to the list here\r\n if(lyrinfo.type == 'M'){ \r\n view.map.layers.add(layer,0);\r\n }else{\r\n view.map.layers.add(layer);\r\n }\r\n \r\n }\r\n }\r\n });\r\n setTimeout(() => {\r\n resolve(true);\r\n }, 300);\r\n // });\r\n } else {\r\n resolve(true);\r\n }\r\n\r\n });\r\n });\r\n}\r\n\r\n\r\nfunction GetRecordQueryExpressions(layerinfo) {\r\n let profile = localStorage.getItem('profile') && JSON.parse(localStorage.getItem('profile'))\r\n let defaultLayerExpression = layerinfo.defaultExpression;\r\n let layerDefinitionExpressionFilter;\r\n\r\n if (profile) {\r\n let isInternal = profile && profile.portal == \"I\";\r\n if (isInternal) {\r\n let districts = profile && profile.moduleDistrictAccess && Object.keys(profile.moduleDistrictAccess) || [];\r\n if (Array.isArray(districts) && districts.length > 0) {\r\n layerDefinitionExpressionFilter = \" District_Id in (\" + districts.join(\",\") + \")\";\r\n }\r\n } else {\r\n layerDefinitionExpressionFilter = \" Owner ='\" + profile.modulePermissions[0].companyId + \"'\";\r\n }\r\n }\r\n let layerDefinitionExpression = (!layerDefinitionExpressionFilter || layerDefinitionExpressionFilter == \"()\" || layerDefinitionExpressionFilter == \"1=1\") ? (defaultLayerExpression) : ((\"(\" + defaultLayerExpression + \")\") + \" and \" + layerDefinitionExpressionFilter);\r\n return layerDefinitionExpression;\r\n}\r\n\r\n\r\n\r\n\r\n\r\n/*\r\nfunction getTitle(feature)\r\n{\r\n if (feature.graphic.attributes.SubModuleKey==\"COLLISION\")\r\n {\r\n return \"Record T Info \" + \"<b><a href='#/Records/{SubModuleKey}/{Site_Permit_Type_Id}/{ObjectId}' >View Collision </a></b> \"+\" / \" + \"<b><a href='#/Records/{SubModuleKey}/{Site_Permit_Type_Id}/{Investigation_Id}' > Investigation </a></b> \";\r\n }\r\n else\r\n {\r\n return \"Record Info \" + \"<b><a href='#/Records/{SubModuleKey}/{Site_Permit_Type_Id}/{ObjectId}' >View Details </a></b> \";\r\n }\r\n}*/","import React, { Component } from 'react';\r\nimport ReactDOM from \"react-dom\";\r\nimport { loadModules } from 'esri-loader';\r\nimport { CenterAndZoom, QueryTask, QueryTaskBufferWithGeom } from '../util/queryTask';\r\nimport loadingimg from '../../../resources/gis-loading.gif'\r\nimport { GeometryProjectionTask } from '../util/geometryEngineTask';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\n\r\nlet highlight, editFeature;\r\nlet grid;\r\nlet queryResponse;\r\nclass CActionsLayerList extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n view: this.props.view,\r\n spatialReference: this.props.spatialReference,\r\n tabValue: 0,\r\n selectedLayer: null,\r\n setuplayer: null,\r\n selectedLayerKey: 0,\r\n distance: 1,\r\n units: 'miles'\r\n }\r\n this.startup(\r\n this.props\r\n );\r\n }\r\n\r\n listItemCreated = (event) => {\r\n let item = event.item;\r\n if (!item.title || item.title === \"\" || item.title === null || item.title === undefined || item.title === \"Untitled layer\") {\r\n item.layer.listMode = \"hide\";\r\n\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevProps.layerFilterQuery !== this.props.layerFilterQuery) {\r\n console.log(this.props.layerFilterQuery)\r\n this.applyLayerFilter(this.ActiveLayer, this.props.layerFilterQuery, this.props.view.extent.center)\r\n }\r\n }\r\n\r\n startup = (config) => {\r\n loadModules([\r\n \"esri/core/watchUtils\",\r\n \"esri/widgets/Expand\",\r\n \"esri/widgets/LayerList\",\r\n \"esri/layers/FeatureLayer\"\r\n ]).then(([watchUtils, Expand, LayerList, FeatureLayer]) => {\r\n // Disable popup\r\n //config.view.popup.autoOpenEnabled = false;\r\n config.view.map.layers.forEach(function (item) {\r\n if (!item.title || item.title === \"\" || item.title === null || item.title === undefined || item.title === \"Untitled layer\") {\r\n item.layer.listMode = \"hide\";\r\n }\r\n })\r\n\r\n const layerList = new LayerList({\r\n view: config.view,\r\n layers: config.view.map.layers || [],\r\n listItemCreatedFunction: (evt) => this.getLayerPanelActions(evt, this)\r\n });\r\n this.layerListcontainer = ReactDOM.findDOMNode(this);\r\n const layerListExpand = new Expand({\r\n collapseTooltip: \"Collapse Layers List\",\r\n expandTooltip: \"Expand Layers List\",\r\n view: config.view,\r\n content: layerList,\r\n container: this.layerListcontainer\r\n });\r\n config.view.ui.add(layerListExpand, \"top-right\");\r\n\r\n const inThis = this;\r\n watchUtils.pausable(layerListExpand, \"expanded\", function (newValue, oldValue) {\r\n inThis.props.onexpanded(layerListExpand, newValue);\r\n // Hide the form and show the info div\r\n if (newValue && newValue === true) {\r\n // if(document.getElementById(\"actionsLayerListupdate\"))\r\n // document.getElementById(\"actionsLayerListupdate\").classList.add(\"esri-hidden\");\r\n // if(document.getElementById(\"actionLayerTabsDiv\"))\r\n // document.getElementById(\"actionLayerTabsDiv\").classList.remove(\"esri-hidden\");\r\n } else {\r\n // if(document.getElementById(\"actionLayerTabsDiv\"))\r\n // document.getElementById(\"actionLayerTabsDiv\").classList.add(\"esri-hidden\");\r\n }\r\n });\r\n this.loadEditFeatures();\r\n\r\n });\r\n }\r\n\r\n triggerAction(action, config, visibleLayerid) {\r\n // The layer visible in the view at the time of the trigger.\r\n let visibleLayer = config.view.map.layers.find(function (layer) {\r\n if (layer.id === visibleLayerid) {\r\n return layer.id === visibleLayerid;\r\n }\r\n });\r\n this.ActiveLayer = visibleLayer;\r\n if (visibleLayer) {\r\n // Capture the action id.\r\n if (action === \"full-extent\") {\r\n this.getLayerFullExtent(config, visibleLayer).then(queryExtentRes => {\r\n console.log(queryExtentRes);\r\n config.view.goTo(queryExtentRes.extent).then(function (resp) {// Layer extent\r\n }).catch(function (error) {\r\n console.log(error);\r\n });\r\n })\r\n // visibleLayer.when(function () {\r\n // return visibleLayer.queryExtent();\r\n // }).then(function (response) {\r\n // if (response.extent) {\r\n // let modExtent = response.extent;\r\n // // GeometryProjectionTask(config,modExtent).then(projres =>{\r\n // // console.log(projres);\r\n // // })\r\n // //modExtent.spatialReference.latestWkid = config.view.extent.spatialReference.latestWkid\r\n // //modExtent.spatialReference.wkid = config.view.extent.spatialReference.wkid\r\n // // //config.view.extent = modExtent\r\n // config.view.goTo(modExtent).then(function (resp) {// Layer extent\r\n // }).catch(function (error) {\r\n // console.log(error);\r\n // });\r\n // }\r\n // });\r\n\r\n } else if (action === \"information\") {\r\n // if the information action is triggered, then open the item details page of the service layer\r\n window.open(visibleLayer.url);\r\n } else if (action === \"increase-opacity\") {\r\n // if the increase-opacity action is triggered, then increase the opacity of the GroupLayer by 0.25\r\n if (visibleLayer.opacity < 1) {\r\n visibleLayer.opacity += 0.25;\r\n }\r\n } else if (action === \"decrease-opacity\") {\r\n // if the decrease-opacity action is triggered, then decrease the opacity of the GroupLayer by 0.25\r\n if (visibleLayer.opacity > 0) {\r\n visibleLayer.opacity -= 0.25;\r\n }\r\n }\r\n else if (action === \"layer-filter\") {\r\n this.props.layerFilter(visibleLayer.id);\r\n }\r\n else if (action === \"Labels-On/Off\") {\r\n // if Labels-On/Off is on and off labels\r\n if (visibleLayer.labelsVisible) {\r\n visibleLayer.labelsVisible = false;\r\n } else\r\n visibleLayer.labelsVisible = true;\r\n }\r\n }\r\n }\r\n\r\n getLayerFullExtent(config, visibleLayer) {\r\n return new Promise((resolve, reject) => {\r\n loadModules([\r\n \"esri/geometry/geometryEngine\",\r\n \"esri/geometry/projection\",\r\n \"esri/tasks/support/Query\",\r\n \"esri/tasks/QueryTask\"\r\n ]).then(([geometryEngine, projection, Query, QueryTask]) => {\r\n visibleLayer.when(function () {\r\n var query = new Query();\r\n query.where = visibleLayer.definitionExpression || \"1=1\"; //Filter where condtion\r\n query.outSpatialReference = config.spatialReference;\r\n return visibleLayer.queryExtent(query);\r\n }).then(function (response) {\r\n resolve(response)\r\n })\r\n })\r\n })\r\n }\r\n\r\n applyLayerFilter = (layer, layerfilter, geometry) => {\r\n if (layer) {\r\n let queryExpression = layerfilter.query;\r\n const defaultExpression = layer.LayerOptions.defaultExpression || \"1=1\"\r\n let searchOptions = {}\r\n if (layerfilter.Asofdate) {//filter by Date\r\n console.log(layerfilter.Asofdate)\r\n const { AsofArchiveStart, AsofArchiveEnd } = layer.LayerOptions\r\n const asofqueryExpression = \"(\" + AsofArchiveStart + \"<='\" + layerfilter.Asofdate + \"' AND \" + AsofArchiveEnd + \">'\" + layerfilter.Asofdate + \"')\"\r\n queryExpression = (!queryExpression || queryExpression == \"()\" || queryExpression == \"1=1\") ? (asofqueryExpression) : ((\"(\" + queryExpression + \")\") + \" and \" + asofqueryExpression)\r\n }\r\n if (queryExpression || defaultExpression) {//filter by value\r\n queryExpression = (!queryExpression || queryExpression == \"()\" || queryExpression == \"1=1\") ? (defaultExpression) : ((\"(\" + defaultExpression + \")\") + \" and \" + queryExpression);\r\n }\r\n if (layerfilter.Distance && layerfilter.Units) {//filter by Distance\r\n searchOptions.queryexpression = queryExpression\r\n searchOptions.geometry = geometry;\r\n searchOptions.distance = layerfilter.Distance;\r\n searchOptions.units = layerfilter.Units;\r\n this.geometrySearch(layer, searchOptions)\r\n console.log(layerfilter.Distance + \" \" + layerfilter.Units)\r\n }\r\n else if (queryExpression) {//filter by value\r\n layer.definitionExpression = queryExpression;\r\n }\r\n }\r\n }\r\n\r\n geometrySearch = (activeLayer, searchOptions) => {\r\n QueryTaskBufferWithGeom(activeLayer.LayerOptions, searchOptions.queryexpression, this.state.spatialReference, searchOptions.geometry, searchOptions.distance, searchOptions.units).then(\r\n response => {\r\n if (response && response.features && response.features.length > 0) {\r\n this.props.view.whenLayerView(activeLayer).then(function (layerView) {\r\n let record = response.features[0].attributes\r\n let objidkey = Object.keys(record).find(k => k === \"OBJECTID\")\r\n if (!objidkey)\r\n objidkey = Object.keys(record).find(k => k === \"objectId\")\r\n let geomSearchHighlight = response.features.map(function (item) {\r\n return item.attributes[objidkey]\r\n });\r\n if (geomSearchHighlight && geomSearchHighlight.length > 0)\r\n activeLayer.definitionExpression = objidkey + \" in (\" + geomSearchHighlight.join(\",\") + \")\";\r\n });\r\n }\r\n },\r\n error => {\r\n console.log(error);\r\n }\r\n )\r\n }\r\n\r\n /***********************************************************/\r\n\r\n getLayerPanelActions(event, inthis) {\r\n let item = event.item;\r\n if (inthis.props.options.AllFeatureLayerListOptions) {\r\n let layerConfig = inthis.props.options.AllFeatureLayerListOptions.filter(a => {\r\n return a.id.toString() === item.layer.id.toString()\r\n });\r\n if (layerConfig && layerConfig[0]) {\r\n inthis.setState({ setuplayer: layerConfig[0], selectedLayerKey: item.layer.id }, () => {\r\n let hasBuffer = (layerConfig[0].GridTemplate != null && layerConfig[0].GridTemplate.length > 0) ? true : false;\r\n let hasFilter = (layerConfig[0].CanFilter != null && layerConfig[0].CanFilter == \"Y\") ? true : false;\r\n inthis.panelAction(event, inthis, hasBuffer, hasFilter, layerConfig[0]);\r\n })\r\n }\r\n }\r\n }\r\n\r\n panelAction(event, inthis, hasBuffer, hasFilter, callayer) {\r\n let item = event.item;\r\n if (!item.title || item.title === \"\" || item.title === null || item.title === undefined || item.title === \"Untitled layer\") {\r\n item.layer.listMode = \"hide\";\r\n }\r\n let content = document.getElementById(\"actionLayerTabsDiv\");\r\n let divElement = document.createElement('div');\r\n divElement.className = \"eachActionLayer\";\r\n divElement.innerHTML = content.innerHTML;\r\n let allelem = divElement.getElementsByClassName('action-click');\r\n let labelsele = divElement.getElementsByClassName('esri-layer-list-labels');\r\n if (labelsele && item.layer.labelingInfo && item.layer.labelingInfo.length > 0 && item.layer.labelingInfo[0] && item.layer.labelingInfo[0].labelExpressionInfo && item.layer.labelingInfo[0].labelExpressionInfo.expression) {\r\n labelsele[0].style.display = \"\";\r\n }\r\n if (allelem && allelem.length > 0) {\r\n for (let i = 0; i < allelem.length; i++) {\r\n let arealabeled = allelem[i].getAttribute(\"aria-label\")\r\n allelem[i].onclick = () => inthis.triggerAction(arealabeled, inthis.props, item.layer.id);\r\n }\r\n }\r\n let tabchangerdom = divElement.getElementsByClassName('action-anttabs');\r\n if (tabchangerdom && tabchangerdom.length > 0) {\r\n for (let i = 0; i < tabchangerdom.length; i++) {\r\n let arealabeled = tabchangerdom[i].getAttribute(\"aria-label\");\r\n tabchangerdom[i].onclick = (evt) => inthis.openTab(evt, arealabeled, divElement, callayer)\r\n }\r\n }\r\n if (!hasFilter) {\r\n divElement.getElementsByClassName('action-anttabs-filter')[0].remove();\r\n }\r\n if (!hasBuffer) {\r\n divElement.getElementsByClassName('action-anttabs-buffer')[0].remove();\r\n } else {\r\n // //Add div element to the grid\r\n let gridDiv = divElement.getElementsByClassName(\"gridDisplay\")[0];\r\n let gridId = \"grid\" + callayer.id\r\n gridDiv.innerHTML = '<div id=\"' + gridId + '\"></div>'\r\n inthis.addBufferEvents(inthis, divElement, callayer)\r\n }\r\n item.panel = {\r\n content: divElement,\r\n className: \"esri-icon-configure-popup\",\r\n open: item.visible\r\n };\r\n\r\n }\r\n\r\n addBufferEvents(inthis, domElem, callayer) {\r\n try {\r\n var bufferdoms = domElem.getElementsByClassName(\"buffersearch\");\r\n if (bufferdoms && bufferdoms.length > 0) {\r\n for (let i = 0; i < bufferdoms.length; i++) {\r\n bufferdoms[i].onclick = () => inthis.bufferSearch(inthis, domElem, callayer)\r\n }\r\n }\r\n var selecttaxlotsdoms = domElem.getElementsByClassName(\"selecttaxlots\");\r\n if (selecttaxlotsdoms && selecttaxlotsdoms.length > 0) {\r\n for (let i = 0; i < selecttaxlotsdoms.length; i++) {\r\n selecttaxlotsdoms[i].onclick = () => inthis.selectTaxlotWithinBuffer(inthis, domElem, callayer)\r\n }\r\n }\r\n\r\n } catch (ex) {\r\n console.log('unable to add event listener', ex)\r\n }\r\n }\r\n\r\n updateState(event, inthis) {\r\n let name = event.target.name\r\n let val = event.target.value\r\n inthis.setState({ [name]: val })\r\n }\r\n\r\n bufferSearchStartup(inThis, divElement, callayer) {\r\n loadModules([\r\n \"dgrid/OnDemandGrid\",\r\n \"dgrid/extensions/ColumnHider\",\r\n \"dgrid/Selection\",\r\n 'dojo/domReady!'\r\n ]).then(([OnDemandGrid, ColumnHider, Selection]) => {\r\n\r\n let gridid = \"grid\" + callayer.id;\r\n //document.getElementById(\"buffererror\").innerHTML = \"\"\r\n //document.getElementById(\"featureCount\").innerHTML = \"\"\r\n let columns = callayer && callayer.GridTemplate ? callayer.GridTemplate : []\r\n\r\n // create a new onDemandGrid with its selection and columnhider extensions. Set the columns of the grid to display attribute\r\n grid = new (OnDemandGrid.createSubclass([Selection, ColumnHider]))(\r\n { columns: columns },\r\n gridid\r\n );\r\n // add a row-click listener on the grid. This will be used to highlight the corresponding feature on the view\r\n grid.on(\"dgrid-select\", (event) => inThis.selectFeatureFromGrid(event, inThis));\r\n });\r\n }\r\n\r\n selectFeatureFromGrid(event, inthis) {\r\n const firstRecord = queryResponse.features[0];\r\n if (firstRecord) {\r\n const geom = firstRecord.geometry\r\n CenterAndZoom(inthis.props.view, geom, 15);\r\n }\r\n }\r\n\r\n bufferSearch = (inthis, domElem, callayer) => {\r\n domElem.getElementsByClassName('loadingImg')[0].style.display = 'block';\r\n domElem.getElementsByClassName('gridSucessInfo')[0].innerHTML = '';\r\n\r\n let searchTaskURL = inthis.props.options.LayerOptions[0].url ? inthis.props.options.LayerOptions[0].url : '';\r\n let pretaxlotdata = \"\"\r\n let objIndex = inthis.props.options.FieldsData.findIndex((obj => obj.Fieldkey === \"TAX_PARCEL_IDS\"));\r\n if (objIndex > 0) {\r\n pretaxlotdata = this.props.options.FieldsData[objIndex].FieldValue\r\n }\r\n let parcelIdarra = pretaxlotdata.split(\",\");\r\n if (parcelIdarra && parcelIdarra.length > 0 && parcelIdarra[0] != \"\" && inthis.state.distance > 0) {\r\n let queryTaxlotsString = ''\r\n for (var i = 0; i < parcelIdarra.length; i++) {\r\n if (queryTaxlotsString === \"\") {\r\n if (parcelIdarra[i] && parcelIdarra[i] != null)\r\n queryTaxlotsString = \"'\" + parcelIdarra[i] + \"'\";\r\n } else {\r\n if (parcelIdarra[i] && parcelIdarra[i] != null)\r\n queryTaxlotsString = queryTaxlotsString + \",'\" + parcelIdarra[i] + \"'\";\r\n }\r\n }\r\n let querycondition = \"PIN in (\" + queryTaxlotsString + \")\";\r\n let queryTaskConfigTaxLot = {\r\n url: searchTaskURL\r\n }\r\n let bufferCalcLayerUrl = (callayer && callayer.url) ? callayer.url : searchTaskURL;\r\n let queryTaskConfigRef = {\r\n url: bufferCalcLayerUrl\r\n }\r\n console.log('bufferSearch----QueryTask');\r\n QueryTask(queryTaskConfigTaxLot, querycondition, 4326).then(\r\n response => {\r\n if (response && response.features && response.features.length > 0) {\r\n let geom = response.features[0].geometry\r\n QueryTaskBufferWithGeom(queryTaskConfigRef, \"1=1\", this.props.options.viewProperties.extent.spatialReference, geom, inthis.state.distance, inthis.state.units).then(\r\n response => {\r\n if (response && response.features && response.features.length > 0) {\r\n inthis.processResponse(response)\r\n domElem.getElementsByClassName('loadingImg')[0].style.display = 'none';\r\n domElem.getElementsByClassName('gridSucessInfo')[0].innerHTML =\r\n \"<b>Search revealed \" +\r\n response.features.length.toString() +\r\n \" records </b>\";\r\n }\r\n },\r\n error => {\r\n console.log(error);\r\n }\r\n )\r\n }\r\n })\r\n } else {\r\n // Show errors and messages\r\n try {\r\n domElem.getElementsByClassName('buffererror')[0].innerHTML = 'Select primary taxlot'\r\n domElem.getElementsByClassName('gridSucessInfo')[0].innerHTML = ''\r\n domElem.getElementsByClassName('loadingImg')[0].style.display = 'none'\r\n } catch (ex) { console.log(ex) }\r\n }\r\n }\r\n\r\n\r\n\r\n processResponse(response) {\r\n queryResponse = response\r\n let allAttributes = response.features.map(a => a.attributes);\r\n this.projectGridData(allAttributes)\r\n }\r\n\r\n projectGridData(data) {\r\n loadModules([\r\n \"dojo/store/Memory\",\r\n \"dstore/legacy/StoreAdapter\",\r\n \"dgrid/OnDemandGrid\",\r\n \"dgrid/extensions/ColumnHider\",\r\n \"dgrid/Selection\"\r\n ]).then(([Memory, StoreAdapter, OnDemandGrid, ColumnHider, Selection]) => {\r\n\r\n const dataStore = new StoreAdapter({\r\n objectStore: new Memory({\r\n idProperty: \"OBJECTID\"\r\n })\r\n });\r\n dataStore.objectStore.data = data;\r\n grid.set(\"collection\", dataStore);\r\n\r\n // document.getElementById(\"featureCount\").innerHTML =\r\n // \"<b>Search revealed \" +\r\n // data.length.toString() +\r\n // \" records </b>\";\r\n })\r\n }\r\n\r\n openTab(evt, action, dom, callayer) {\r\n var i, tabcontent, tablinks;\r\n tabcontent = dom.getElementsByClassName(\"tabcontent\");\r\n for (i = 0; i < tabcontent.length; i++) {\r\n tabcontent[i].style.display = \"none\";\r\n }\r\n tablinks = dom.getElementsByClassName(\"action-anttabs\");\r\n for (i = 0; i < tablinks.length; i++) {\r\n tablinks[i].className = tablinks[i].className.replace(\" active\", \"\");\r\n }\r\n dom.getElementsByClassName(action)[0].style.display = \"block\";\r\n evt.currentTarget.className += \" active\";\r\n if (action === 'buffer') {\r\n this.bufferSearchStartup(this, dom, callayer)\r\n dom.getElementsByClassName(\"selectdistance\").onchange = (event) => this.updateState(event, this)\r\n dom.getElementsByClassName(\"selectunits\").onchange = (event) => this.updateState(event, this)\r\n }\r\n }\r\n\r\n panelHandleChange = (newValue, layer, domelem) => {\r\n let value = newValue === 0 ? 1 : 0;\r\n domelem.tabIndex = value;\r\n this.setState({ tabValue: value, selectedLayer: layer })\r\n }\r\n\r\n\r\n\r\n loadEditFeatures() {\r\n loadModules([\r\n \"esri/widgets/FeatureForm\",\r\n \"esri/layers/FeatureLayer\",\r\n \"esri/widgets/FeatureTemplates\"\r\n ]).then(([FeatureForm, FeatureLayer, FeatureTemplates]) => {\r\n let msgDOM = document.getElementById(\"actionMessageSuccess\");\r\n if (msgDOM) {\r\n msgDOM.style.display = \"none\"\r\n }\r\n let inthis = this;\r\n let featureLayersIds = []\r\n if (this.props.options && this.props.options.AllFeatureLayerListOptions && this.props.options.AllFeatureLayerListOptions.length > 0) {\r\n let layersWithEditorConfig = inthis.props.options.AllFeatureLayerListOptions.filter(a => {\r\n return a.id && a.EditorTemplate != null\r\n })\r\n if (layersWithEditorConfig && layersWithEditorConfig.length > 0) {\r\n featureLayersIds = layersWithEditorConfig.map(a => {\r\n return a.id\r\n })\r\n }\r\n }\r\n\r\n let featureLayer = this.props.view.map.layers.find(function (layer) {\r\n return featureLayersIds.includes(parseInt(layer.id));\r\n });\r\n\r\n if (featureLayer) {\r\n let fieldConfig = (this.props.options\r\n && this.props.options.AllFeatureLayerListOptions\r\n && this.props.options.AllFeatureLayerListOptions[0].EditorTemplate)\r\n ? this.props.options.AllFeatureLayerListOptions[0].EditorTemplate : this.EPSfeatureLayerFieldConfig()\r\n\r\n // Add a new feature form with grouped fields\r\n const form = new FeatureForm({\r\n container: \"actionsLayerListform\",\r\n groupDisplay: \"sequential\", // only display one group at a time\r\n layer: featureLayer,\r\n fieldConfig: fieldConfig //|| inthis.EPSfeatureLayerFieldConfig()\r\n });\r\n\r\n this.props.view.on(\"click\", function (event) {\r\n // Unselect any currently selected features\r\n inthis.unselectFeature();\r\n\r\n // Listen for when the user clicks on the view\r\n inthis.props.view.hitTest(event).then(function (response) {\r\n // If user selects a feature, select it\r\n const results = response.results;\r\n if (\r\n results.length > 0 &&\r\n results[0].graphic &&\r\n results[0].graphic.layer\r\n ) {\r\n\r\n let selectedFeatureLayer = inthis.props.view.map.layers.find(function (layer) {\r\n return layer.id === results[0].graphic.layer.id;\r\n });\r\n if (selectedFeatureLayer) {\r\n let selectedFeatureLayerFieldConfig = inthis.props.options.AllFeatureLayerListOptions.filter(a => a.id === results[0].graphic.layer.id)[0].EditorTemplate;\r\n if (selectedFeatureLayerFieldConfig) {\r\n featureLayer = selectedFeatureLayer\r\n form.fieldConfig = selectedFeatureLayerFieldConfig\r\n let refobjectid = results[0].graphic.attributes[featureLayer.objectIdField]\r\n if (refobjectid)\r\n inthis.selectFeature(refobjectid, featureLayer, form)\r\n }\r\n }\r\n\r\n } else {\r\n // Hide the form and show the info div\r\n if (document.getElementById(\"btnactionsLayerListUpdate\")) {\r\n document.getElementById(\"actionsLayerListupdate\").classList.add(\"esri-hidden\");\r\n }\r\n }\r\n });\r\n });\r\n\r\n // Listen to the feature form's submit event.\r\n form.on(\"submit\", (evt) => inthis.featureFormSubmit(featureLayer, form));\r\n\r\n if (document.getElementById(\"btnactionsLayerListUpdate\")) {\r\n document.getElementById(\"btnactionsLayerListUpdate\").onclick = function () {\r\n // Fires feature form's submit event.\r\n form.submit();\r\n };\r\n }\r\n this.props.view.ui.add(\"actionsLayerListupdate\", \"top-right\");\r\n }\r\n })\r\n }\r\n\r\n // Load Default if any\r\n EPSfeatureLayerFieldConfig() {\r\n return null;\r\n }\r\n\r\n\r\n\r\n // Function to unselect features\r\n unselectFeature() {\r\n if (highlight) {\r\n highlight.remove();\r\n }\r\n }\r\n\r\n // Highlight the clicked feature and display\r\n // its attributes in the featureform.\r\n selectFeature(objectId, featureLayer, form) {\r\n let inthis = this;\r\n let msgDOM = document.getElementById(\"actionMessageSuccess\");\r\n if (msgDOM) {\r\n msgDOM.style.display = \"none\"\r\n }\r\n // query feature from the server\r\n featureLayer\r\n .queryFeatures({\r\n objectIds: [objectId],\r\n outFields: [\"*\"],\r\n returnGeometry: true\r\n })\r\n .then(function (results) {\r\n if (results.features.length > 0) {\r\n editFeature = results.features[0];\r\n\r\n // display the attributes of selected feature in the form\r\n form.feature = editFeature;\r\n\r\n // highlight the feature on the view\r\n inthis.props.view.whenLayerView(editFeature.layer).then(function (layerView) {\r\n highlight = layerView.highlight(editFeature);\r\n });\r\n\r\n if (\r\n document\r\n .getElementById(\"actionsLayerListupdate\")\r\n .classList.contains(\"esri-hidden\")\r\n ) {\r\n //document.getElementById(\"actionsLayerListinfo\").classList.add(\"esri-hidden\");\r\n document\r\n .getElementById(\"actionsLayerListupdate\")\r\n .classList.remove(\"esri-hidden\");\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n featureFormSubmit(featureLayer, form) {\r\n if (editFeature) {\r\n // Grab updated attributes from the form.\r\n const updated = form.getValues();\r\n\r\n // Loop through updated attributes and assign\r\n // the updated values to feature attributes.\r\n Object.keys(updated).forEach(function (name) {\r\n editFeature.attributes[name] = updated[name];\r\n });\r\n\r\n // Setup the applyEdits parameter with updates.\r\n const edits = {\r\n updateFeatures: [editFeature]\r\n };\r\n //applyAttributeUpdates(edits);\r\n this.applyAttributeUpdates(edits, featureLayer, form)\r\n }\r\n }\r\n\r\n\r\n // Call FeatureLayer.applyEdits() with specified params.\r\n applyAttributeUpdates(params, featureLayer, form) {\r\n let inthis = this;\r\n document.getElementById(\"btnactionsLayerListUpdate\").style.cursor = \"progress\";\r\n featureLayer\r\n .applyEdits(params)\r\n .then(function (editsResult) {\r\n // Get the objectId of the newly added feature.\r\n // Call selectFeature function to highlight the new feature.\r\n if (editsResult.addFeatureResults.length > 0) {\r\n const objectId = editsResult.addFeatureResults[0].objectId;\r\n inthis.selectFeature(objectId, featureLayer, form)\r\n highlight = null;\r\n editFeature = null\r\n //alert('Success!! Attributes added' + objectId)\r\n } else if (editsResult.updateFeatureResults.length > 0) {\r\n //alert('Success!! Attributes update')\r\n document.getElementById(\"actionMessageSuccess\").style.display = \"\"\r\n }\r\n document.getElementById(\"btnactionsLayerListUpdate\").style.cursor = \"pointer\";\r\n })\r\n .catch(function (error) {\r\n console.error(\r\n \"[ applyEdits ] FAILURE: \",\r\n error.code,\r\n error.name,\r\n error.message,\r\n error\r\n );\r\n console.log(\"error = \", error);\r\n document.getElementById(\"btnactionsLayerListUpdate\").style.cursor = \"pointer\";\r\n });\r\n }\r\n\r\n onlayeredit(evt) {\r\n console.log('can edit', evt)\r\n }\r\n\r\n bufferCalcLayer() {\r\n //console.log('bufferCalcLayer', this.state.setuplayer);\r\n if (this.state.setuplayer)\r\n return this.state.setuplayer\r\n else\r\n return null\r\n //else\r\n //return (this.props.options && this.props.options.FeatureLayerListOptions.length > 0) ? this.props.options.FeatureLayerListOptions[0] : {};\r\n }\r\n\r\n closeEditPanel() {\r\n let dom = document.getElementById(\"actionsLayerListupdate\")\r\n if (dom)\r\n dom.classList.add(\"esri-hidden\");\r\n }\r\n\r\n\r\n render() {\r\n\r\n return (\r\n <div className=\"ActionLayerList-box\" style={{ order: this.props.order }}>\r\n <div id=\"actionLayerTabsDiv\" className=\"esri-hidden\" >\r\n {/* <input type=\"checkbox\" id=\"canedit\" name=\"canedit\" value=\"canedit\" onClick={this.onlayeredit}/>\r\n <label for=\"canedit\"> Can Edit </label> */}\r\n\r\n <div id=\"actions\" className=\"actions\" style={{ \"paddingLeft\": \"5px\" }}>\r\n {/* <h6>Actions</h6> */}\r\n <ul className=\"esri-layer-list__item-actions-list list-group-horizontal \">\r\n <li className=\"esri-layer-list__item-action action-click\" tabIndex=\"0\" role=\"button\" title=\"Go to full extent\" aria-label=\"full-extent\" onClick={() => this.triggerAction(\"full-extent\", this.props)}>\r\n <span aria-hidden=\"true\" className=\"esri-layer-list__item-action-icon material-icons\">zoom_out_map</span>\r\n </li>\r\n <li className=\"esri-layer-list__item-action action-click esri-layer-list-labels\" style={{ \"display\": \"none\" }} tabIndex=\"0\" role=\"button\" title=\"Labels On/Off\" aria-label=\"Labels-On/Off\" onClick={() => this.triggerAction(\"Labels-On/Off\", this.props)}>\r\n <span aria-hidden=\"true\" className=\"esri-layer-list__item-action-icon material-icons\">label</span>\r\n {/* <span aria-hidden=\"true\" className=\"esri-layer-list__item-action-icon esri-icon-maps\"></span> */}\r\n </li>\r\n <li className=\"esri-layer-list__item-action action-click\" tabIndex=\"0\" role=\"button\" title=\"Layer information\" aria-label=\"information\" onClick={() => this.triggerAction(\"information\", this.props)}>\r\n {/* <span aria-hidden=\"true\" className=\"esri-layer-list__item-action-icon esri-icon-description\"></span> */}\r\n <span aria-hidden=\"true\" className=\"esri-layer-list__item-action-icon material-icons\">description</span>\r\n </li>\r\n <li className=\"esri-layer-list__item-action action-click\" tabIndex=\"0\" role=\"button\" title=\"Increase opacity\" aria-label=\"increase-opacity\" onClick={() => this.triggerAction(\"increase-opacity\", this.props)}>\r\n {/* <span aria-hidden=\"true\" className=\"esri-layer-list__item-action-icon esri-icon-plus\"></span> */}\r\n <span aria-hidden=\"true\" className=\"esri-layer-list__item-action-icon material-icons\">add_circle_outline</span>\r\n </li>\r\n <li className=\"esri-layer-list__item-action action-click\" tabIndex=\"0\" role=\"button\" title=\"Decrease opacity\" aria-label=\"decrease-opacity\" onClick={() => this.triggerAction(\"decrease-opacity\", this.props)}>\r\n {/* <span aria-hidden=\"true\" className=\"esri-layer-list__item-action-icon esri-icon-minus\"></span> */}\r\n <span aria-hidden=\"true\" className=\"esri-layer-list__item-action-icon material-icons\">remove_circle_outline</span>\r\n </li>\r\n <li className=\"esri-layer-list__item-action action-click action-anttabs-filter\" tabIndex=\"0\" role=\"button\" title=\"Layer Filter\" aria-label=\"layer-filter\" onClick={() => this.triggerAction(\"layer-filter\", this.props)}>\r\n {/* <span aria-hidden=\"true\" className=\"esri-layer-list__item-action-icon esri-icon-review\"></span> */}\r\n <span aria-hidden=\"true\" className=\"esri-layer-list__item-action-icon material-icons\">filter_alt</span>\r\n </li>\r\n </ul>\r\n </div>\r\n <div className=\"tab\" style={{ \"display\": \"none\", \"padding\": \"5px\" }}>\r\n <button className=\"action-anttabs action-anttabs-buffer\" onclick=\"openTab(event, 'buffer')\" aria-label=\"buffer\">Buffer</button>\r\n </div>\r\n\r\n\r\n <div id=\"buffer\" className=\"tabcontent buffer\" style={{ \"display\": \"none\", \"padding\": \"5px\" }}>\r\n <h6>Buffer</h6>\r\n {/* <ComponentBufferCalc key={this.state.selectedLayerKey} layerkey={this.state.selectedLayerKey} {...this.props} bufferCalcLayer={this.bufferCalcLayer()} /> */}\r\n <div id=\"cbuffereditArea\" className=\"map-customexpand-container Buffer-box \">\r\n <div id=\"addFeatureDiv\" >\r\n <h6 className=\"list-heading\">Search and select within buffer</h6>\r\n <div id=\"addTemplatesDivBuffer1\" style={{ \"marginTop\": \"2px\" }}>\r\n <label id=\"buffererror\" className=\"buffererror\" style={{ \"color\": \"red\" }}></label>\r\n </div>\r\n <div id=\"addTemplatesDivBuffer2\" style={{ \"marginTop\": \"1px\" }}>\r\n <label style={{ \"width\": \"15%\" }}>Distance:</label>\r\n <input style={{ \"width\": \"20%\", \"height\": \"30px\" }} id=\"distance\" className=\"selectdistance\" type=\"number\" name=\"distance\" min=\"1\" value={this.state.distance} onChange={(event) => this.updateState(event, this)} />\r\n\r\n \r\n\r\n <label style={{ \"width\": \"10%\" }}>Units:</label>\r\n <select style={{ \"width\": \"20%\", \"height\": \"30px\" }} id=\"units\" name=\"units\" className=\"selectunits\" value={this.state.units} onChange={(event) => this.updateState(event, this)}>\r\n <option value=\"feet\">Feet (ft)</option>\r\n <option value=\"meters\">Meters (m)</option>\r\n <option value=\"kilometers\">Kilometers (km)</option>\r\n <option value=\"miles\">Miles (mi)</option>\r\n <option value=\"us-nautical-miles\">Nautical Miles (NM -US)</option>\r\n <option value=\"nautical-miles\">Nautical Miles (NM)</option>\r\n </select>\r\n <button id=\"buffersearch\" style={{ \"marginLeft\": \"4px\" }} type=\"button\" className=\"my_button buffersearch\" onClick={(inthis) => this.bufferSearch(this)}>Search</button>\r\n <button id=\"selecttaxlots\" style={{ \"marginLeft\": \"4px\" }} type=\"button\" className=\"my_button selecttaxlots\" onClick={(inthis) => this.clearTaxLots(this)}>Clear</button>\r\n\r\n <img id=\"loadingImg\" className=\"loadingImg\" src={loadingimg}\r\n style={{ \"height\": \"30px\", \"display\": \"none\" }} />\r\n </div>\r\n <div id=\"addTemplatesDivBuffer3\" style={{ \"marginTop\": \"3px\" }}>\r\n\r\n </div>\r\n <div id=\"gridSuccessInfoDisplay\">\r\n <span className=\"gridSucessInfo\" id=\"featureCount\" style={{ \"color\": \"blue\" }}></span>\r\n </div>\r\n <div id=\"gridDisplay\" className=\"gridDisplay\">\r\n <div id=\"buffergrid\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {/* <AntTabs className=\"action-anttabs\" value={this.state.tabValue} aria-label=\"\">\r\n <AntTab label=\"Actions\" />\r\n\r\n <AntTab label=\"Buffer\" />\r\n </AntTabs>\r\n\r\n <TabPanel value={this.state.tabValue} index={0}>\r\n\r\n <ul className=\"esri-layer-list__item-actions-list\">\r\n <li className=\"esri-layer-list__item-action action-click\" tabIndex=\"0\" role=\"button\" title=\"Go to full extent\" aria-label=\"full-extent\" onClick={() => this.triggerAction(\"full-extent\",this.props)}>\r\n <span aria-hidden=\"true\" className=\"esri-layer-list__item-action-icon esri-icon-zoom-out-fixed\"></span>\r\n <span className=\"esri-layer-list__item-action-title\">Go to full extent</span>\r\n </li>\r\n <li className=\"esri-layer-list__item-action action-click\" tabIndex=\"0\" role=\"button\" title=\"Layer information\" aria-label=\"information\" onClick={() => this.triggerAction(\"information\",this.props)}>\r\n <span aria-hidden=\"true\" className=\"esri-layer-list__item-action-icon esri-icon-description\"></span>\r\n <span className=\"esri-layer-list__item-action-title\">Layer information</span>\r\n </li>\r\n </ul>\r\n <ul className=\"esri-layer-list__item-actions-list\">\r\n <li className=\"esri-layer-list__item-action action-click\" tabIndex=\"0\" role=\"button\" title=\"Increase opacity\" aria-label=\"increase-opacity\" onClick={() => this.triggerAction(\"increase-opacity\",this.props)}>\r\n <span aria-hidden=\"true\" className=\"esri-layer-list__item-action-icon esri-icon-up\"></span>\r\n <span className=\"esri-layer-list__item-action-title\">Increase opacity</span>\r\n </li>\r\n <li className=\"esri-layer-list__item-action action-click\" tabIndex=\"0\" role=\"button\" title=\"Decrease opacity\" aria-label=\"decrease-opacity\" onClick={() => this.triggerAction(\"decrease-opacity\",this.props)}>\r\n <span aria-hidden=\"true\" className=\"esri-layer-list__item-action-icon esri-icon-down\"></span>\r\n <span className=\"esri-layer-list__item-action-title\">Decrease opacity</span>\r\n </li>\r\n </ul>\r\n </TabPanel>\r\n\r\n\r\n <TabPanel value={this.state.tabValue} index={1} style={{\"font-size\":\"14px\"}}>\r\n <ComponentBufferCalc {...this.props} bufferCalcLayer={this.bufferCalcLayer()} />\r\n </TabPanel> */}\r\n\r\n\r\n </div>\r\n\r\n <div id=\"layerListEditparent\">\r\n <div id=\"actionsLayerListviewDiv\"></div>\r\n {/* <div id=\"actionsLayerListinfo\" className=\"esri-widget esri-hidden\">\r\n <h6>Select a feature to begin editing</h6>\r\n <h6>\r\n Sample info for tempate editing\r\n <p>\r\n TBD: Write good info\r\n </p>\r\n </h6>\r\n </div> */}\r\n <div id=\"actionsLayerListupdate\" className=\"esri-widget esri-hidden\">\r\n <div id=\"actionsLayerListform\" className=\"scroller esri-component\">\r\n <div>\r\n <label id=\"actionMessageSuccess\" style={{ \"color\": \"green\", \"display\": \"none\" }}> Updated successfully</label>\r\n <input\r\n type=\"button\"\r\n className=\"esri-button\"\r\n value=\"Update assessment\"\r\n id=\"btnactionsLayerListUpdate\" style={{ \"width\": \"95%\", \"display\": \"inline-block\" }} />\r\n <input id=\"btnactionsLayerListUpdateClose\" type=\"button\" value=\"X\" style={{ \"position\": \"absolute\", \"right\": \"0\" }} onClick={this.closeEditPanel} />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default CActionsLayerList;\r\n","export default __webpack_public_path__ + \"static/media/gis-loading.81453d27.gif\";","import React, { Component } from 'react';\r\nimport ReactDOM from \"react-dom\";\r\nimport { loadModules } from 'esri-loader';\r\n//import proj4 from \"proj4\";\r\nclass CBasemapGallery extends Component {\r\n constructor(props) {\r\n super(props); \r\n this.state = { \r\n view: this.props.view\r\n } \r\n //proj4.defs(\"EPSG:3071\",\"+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=520000 +y_0=-4480000 +ellps=GRS80 +towgs84=-0.991,1.9072,0.5129,-1.25033e-07,-4.6785e-08,-5.6529e-08,0 +units=m +no_defs +type=crs\"); \r\n //proj4.defs(\"ESRI:102100\",\"+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs +type=crs\");\r\n //proj4.defs(\"EPSG:4326\",\"+proj=longlat +datum=WGS84 +no_defs +type=crs\");\r\n this.startup(\r\n this.props\r\n ); \r\n } \r\n \r\n \r\n startup = (config) => {\r\n loadModules([\r\n \"esri/core/watchUtils\",\r\n \"esri/widgets/BasemapGallery\",\r\n \"esri/widgets/Expand\",\r\n \"esri/Basemap\",\r\n \"esri/layers/TileLayer\"\r\n ]).then(([watchUtils,BasemapGallery, Expand, Basemap, TileLayer]) => { \r\n\r\n const basemapGallery = new BasemapGallery({\r\n view: config.view,\r\n //source: [customBasemap]\r\n });\r\n this.basemapcontainer = ReactDOM.findDOMNode(this);\r\n const basemapExpand = new Expand({\r\n collapseTooltip: \"Collapse Basemap Gallery\",\r\n expandTooltip: \"Expand Basemap Gallery\",\r\n view: config.view,\r\n content: basemapGallery,\r\n container: this.basemapcontainer\r\n }); \r\n config.view.ui.add(basemapExpand, \"top-right\");\r\n this.props.widgetRenderCallBack(\"BasemapGallery\");\r\n const inThis = this;\r\n watchUtils.pausable(basemapExpand, \"expanded\", function (newValue, oldValue) { \r\n inThis.props.onexpanded(basemapExpand, newValue);\r\n });\r\n });\r\n }\r\n\r\n tileFunction=(urlTemplate,level, row, col) => {\r\n var tileUrl = urlTemplate\r\n .replace(\"{level}\", level);\r\n //.replace(\"{col}\", col)\r\n //.replace(\"{row}\", row);\r\n \r\n console.log(\"before :\", [col,row])\r\n // Transform the tile coordinates from custom projection to Web Mercator\r\n var transformedTileCoords = null; //proj4(\"EPSG:102100\",\"EPSG:3071\", [col,row]);\r\n console.log(\"transformedTileCoords\",transformedTileCoords)\r\n var transformedCol = Math.floor(transformedTileCoords[0]);\r\n var transformedRow = Math.floor(transformedTileCoords[1]);\r\n \r\n return tileUrl\r\n .replace(\"{col}\", transformedCol)\r\n .replace(\"{row}\", transformedRow);\r\n }\r\n\r\n startup_custom_1 = (config) =>{\r\n\r\n loadModules([\r\n \"esri/core/watchUtils\",\r\n \"esri/widgets/BasemapGallery\",\r\n \"esri/Basemap\",\r\n \"esri/widgets/Expand\",\r\n \"esri/portal/Portal\",\r\n \"esri/layers/TileLayer\",\r\n \"esri/layers/WebTileLayer\",\r\n \"esri/geometry/SpatialReference\", \r\n \"esri/geometry/Extent\",\r\n \"esri/layers/MapImageLayer\",\r\n ]).then(([watchUtils,BasemapGallery,Basemap, Expand,Portal,TileLayer,WebTileLayer,SpatialReference,Extent, MapImageLayer]) => {\r\n let inThis = this;\r\n\r\n var customSpatialReference = new SpatialReference({\r\n wkid: 3071\r\n });\r\n config.view.spatialReference = customSpatialReference;\r\n config.view.map.spatialReference = 3071\r\n const basemap = new Basemap({\r\n baseLayers: [\r\n new TileLayer({\r\n url: \"https://di-wisdot.img.arcgis.com/arcgis/rest/services/Basemap/WisconsinGeneralBasemapCache/MapServer\",\r\n title: \"Basemap\"\r\n })\r\n ],\r\n title: \"basemap\" \r\n });\r\n\r\n const customLayer = new TileLayer({\r\n url: \"https://di-wisdot.img.arcgis.com/arcgis/rest/services/Basemap/WisconsinGeneralBasemapCache/MapServer\",\r\n spatialReference: {wkid: 102100}\r\n });\r\n\r\n const customBasemap = new Basemap({\r\n baseLayers: [customLayer],\r\n title: \"Custom Basemap\", \r\n //spatialReference: customSpatialReference\r\n });\r\n //config.view.map.basemap = customBasemap;\r\n //config.view.map.layers.add(customLayer,99);\r\n // const GeneralBaseMap = new Basemap({spatialReference: config.view.spatialReference,\r\n // title: \"General Base Map\",\r\n // portalItem: {\r\n // id: \"b3b907def1374c6e89f75ef8c7551f9c\",\r\n // },\r\n // //spatialReference: config.view.spatialReference,\r\n // });\r\n\r\n \r\n \r\n // // Define the full extent of the custom basemap in the specified spatial reference\r\n // var customFullExtent = new Extent({\r\n // xmin: 332885.3621727978,\r\n // ymin: 353254.30098708975,\r\n // xmax: 773710.778192797,\r\n // ymax:658713.7130523947,\r\n // spatialReference: customSpatialReference\r\n // }); \r\n // const inThis = this;\r\n // var mapBaseLayer = new WebTileLayer({\r\n // urlTemplate: \"https://dotmaps.wi.gov/arcgis/rest/services/cache/dbmGBMAPmsC/MapServer/tile/{level}/{row}/{col}?blankTile=false\",\r\n // //fullExtent: customFullExtent,\r\n // //spatialReference: customSpatialReference,\r\n // id: \"custommapBaseLayer\",\r\n // //getTileUrl:function (level, row, col) { return inThis.tileFunction(\"https://dotmaps.wi.gov/arcgis/rest/services/cache/dbmGBMAPmsC/MapServer/tile/{level}/{col}/{row}?blankTile=false\",level, row, col)}\r\n\r\n // });\r\n \r\n // var webTileLayerBasemap = new Basemap({\r\n // id: \"webTileLayer\",\r\n // title: \"Custom Basemap\",\r\n // thumbnailUrl: \"https://stamen-tiles.a.ssl.fastly.net/terrain/10/177/409.png\",\r\n // baseLayers: [\r\n // mapBaseLayer\r\n // ]\r\n // }); \r\n\r\n\r\n // var mapBaseLayer2 = new WebTileLayer({\r\n // urlTemplate: \"https://dotmaps.wi.gov/arcgis/rest/services/cache/dbmNAIPCYmsC/MapServer/tile/{level}/{col}/{row}?blankTile=false\",\r\n // //fullExtent: customFullExtent,\r\n // //spatialReference: customSpatialReference,\r\n // id: \"custommapBaseLayer2\",\r\n // getTileUrl:function (level, row, col) { return inThis.tileFunction(\"https://dotmaps.wi.gov/arcgis/rest/services/cache/dbmNAIPCYmsC/MapServer/tile/{level}/{col}/{row}?blankTile=false\",level, row, col)}\r\n // });\r\n // var webTileLayerBasemap1 = new Basemap({\r\n // id: \"webTileLayer2\",\r\n // title: \"Custom Basemap2\",\r\n // thumbnailUrl: \"https://wisdot.maps.arcgis.com/sharing/rest/content/items/9ca058681b4e40afa6e81b7d2a2da390/info/thumbnail/thumbnail1604678225947.png\",\r\n // baseLayers: [\r\n // mapBaseLayer2\r\n // ]\r\n // }); \r\n\r\n var basemapsSource = [\r\n customBasemap,\r\n //webTileLayerBasemap1,\r\n //GeneralBaseMap,\r\n //GeneralBaseMap2,\r\n Basemap.fromId(\"topo\"),\r\n Basemap.fromId(\"streets\"),\r\n ];\r\n \r\n const basemapGallery = new BasemapGallery({\r\n view: config.view, \r\n source: basemapsSource\r\n });\r\n //basemapGallery.source.basemaps.push(basemapbyportal);\r\n //config.view.map.basemap=GeneralBaseMap\r\n //config.view.spatialReference=config.view.map.basemap.spatialReference;\r\n\r\n this.basemapcontainer = ReactDOM.findDOMNode(this);\r\n const basemapExpand = new Expand({\r\n collapseTooltip: \"Collapse Basemap Gallery\",\r\n expandTooltip: \"Expand Basemap Gallery\",\r\n view: config.view,\r\n content: basemapGallery,\r\n container: this.basemapcontainer\r\n }); \r\n config.view.ui.add(basemapExpand, \"top-right\");\r\n this.props.widgetRenderCallBack(\"BasemapGallery\")\r\n watchUtils.pausable(basemapExpand, \"expanded\", function (newValue, oldValue) { \r\n inThis.props.onexpanded(basemapExpand, newValue);\r\n });\r\n });\r\n \r\n\r\n }\r\n\r\n startup_custom = (config) =>{\r\n\r\n loadModules([\r\n \"esri/core/watchUtils\",\r\n \"esri/widgets/BasemapGallery\",\r\n \"esri/Basemap\",\r\n \"esri/widgets/Expand\",\r\n \"esri/portal/Portal\",\r\n \"esri/layers/TileLayer\",\r\n \"esri/layers/WebTileLayer\",\r\n \"esri/geometry/SpatialReference\", \r\n \"esri/geometry/Extent\"\r\n ]).then(([watchUtils,BasemapGallery,Basemap, Expand,Portal,TileLayer,WebTileLayer,SpatialReference,Extent]) => {\r\n \r\n const GeneralBaseMap = new Basemap({spatialReference: config.view.spatialReference,\r\n title: \"General Base Map\",\r\n portalItem: {\r\n id: \"b3b907def1374c6e89f75ef8c7551f9c\",\r\n },\r\n //spatialReference: config.view.spatialReference,\r\n });\r\n\r\n var customSpatialReference = new SpatialReference({\r\n wkid: 3071\r\n });\r\n \r\n // Define the full extent of the custom basemap in the specified spatial reference\r\n var customFullExtent = new Extent({\r\n xmin: 332885.3621727978,\r\n ymin: 353254.30098708975,\r\n xmax: 773710.778192797,\r\n ymax:658713.7130523947,\r\n spatialReference: customSpatialReference\r\n }); \r\n const inThis = this;\r\n var mapBaseLayer = new WebTileLayer({\r\n urlTemplate: \"https://dotmaps.wi.gov/arcgis/rest/services/cache/dbmGBMAPmsC/MapServer/tile/{level}/{row}/{col}?blankTile=false\",\r\n //fullExtent: customFullExtent,\r\n //spatialReference: customSpatialReference,\r\n id: \"custommapBaseLayer\",\r\n //getTileUrl:function (level, row, col) { return inThis.tileFunction(\"https://dotmaps.wi.gov/arcgis/rest/services/cache/dbmGBMAPmsC/MapServer/tile/{level}/{col}/{row}?blankTile=false\",level, row, col)}\r\n\r\n });\r\n \r\n var webTileLayerBasemap = new Basemap({\r\n id: \"webTileLayer\",\r\n title: \"Custom Basemap\",\r\n thumbnailUrl: \"https://stamen-tiles.a.ssl.fastly.net/terrain/10/177/409.png\",\r\n baseLayers: [\r\n mapBaseLayer\r\n ]\r\n }); \r\n\r\n\r\n var mapBaseLayer2 = new WebTileLayer({\r\n urlTemplate: \"https://dotmaps.wi.gov/arcgis/rest/services/cache/dbmNAIPCYmsC/MapServer/tile/{level}/{col}/{row}?blankTile=false\",\r\n //fullExtent: customFullExtent,\r\n //spatialReference: customSpatialReference,\r\n id: \"custommapBaseLayer2\",\r\n getTileUrl:function (level, row, col) { return inThis.tileFunction(\"https://dotmaps.wi.gov/arcgis/rest/services/cache/dbmNAIPCYmsC/MapServer/tile/{level}/{col}/{row}?blankTile=false\",level, row, col)}\r\n });\r\n var webTileLayerBasemap1 = new Basemap({\r\n id: \"webTileLayer2\",\r\n title: \"Custom Basemap2\",\r\n thumbnailUrl: \"https://wisdot.maps.arcgis.com/sharing/rest/content/items/9ca058681b4e40afa6e81b7d2a2da390/info/thumbnail/thumbnail1604678225947.png\",\r\n baseLayers: [\r\n mapBaseLayer2\r\n ]\r\n }); \r\n\r\n var basemapsSource = [\r\n webTileLayerBasemap,\r\n webTileLayerBasemap1,\r\n //GeneralBaseMap,\r\n //GeneralBaseMap2,\r\n Basemap.fromId(\"topo\"),\r\n Basemap.fromId(\"streets\"),\r\n ];\r\n \r\n const basemapGallery = new BasemapGallery({\r\n view: config.view, \r\n source: basemapsSource\r\n });\r\n //basemapGallery.source.basemaps.push(basemapbyportal);\r\n //config.view.map.basemap=GeneralBaseMap\r\n //config.view.spatialReference=config.view.map.basemap.spatialReference;\r\n\r\n this.basemapcontainer = ReactDOM.findDOMNode(this);\r\n const basemapExpand = new Expand({\r\n collapseTooltip: \"Collapse Basemap Gallery\",\r\n expandTooltip: \"Expand Basemap Gallery\",\r\n view: config.view,\r\n content: basemapGallery,\r\n container: this.basemapcontainer\r\n }); \r\n config.view.ui.add(basemapExpand, \"top-right\");\r\n this.props.widgetRenderCallBack(\"BasemapGallery\")\r\n watchUtils.pausable(basemapExpand, \"expanded\", function (newValue, oldValue) { \r\n inThis.props.onexpanded(basemapExpand, newValue);\r\n });\r\n });\r\n \r\n\r\n }\r\n \r\n\r\n render() {\r\n return (\r\n <div className=\"BasemapGallery-box\" style={{order:this.props.order}}>\r\n \r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default CBasemapGallery;","import {\r\n Grid,\r\n GridColumn as Column\r\n} from \"@progress/kendo-react-grid\";\r\nimport { loadModules } from 'esri-loader';\r\nimport React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport { snackbarMessage } from '../../../actions';\r\nimport { GISLookupTask } from '../eps/GISLookupTask';\r\nimport { GeometryEngineTask } from '../util/geometryEngineTask';\r\nimport { CenterAndZoom, QueryTaskBufferWithGeom } from '../util/queryTask';\r\n\r\n// const DATA_ITEM_KEY = \"OBJECTID\";\r\n// const SELECTED_FIELD = \"selected\";\r\nclass CDatTable extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n view: this.props.view,\r\n options: this.props.options,\r\n canEdit: this.props.canEdit,\r\n isGridView: this.props.isGridView,\r\n mapConstants: this.props.mapConstants,\r\n selectedLayerOptions: this.props.selectedLayerOptions,\r\n selectedArea: this.props.selectedArea,\r\n selectedRecords: {},\r\n spatialReference: this.props.spatialReference,\r\n units: \"feet\",\r\n distance: \"3000\",\r\n selected: [],\r\n selectedState: {},\r\n isDataTableExpand: false,\r\n showGrid: true,\r\n primarySelectedRecord: ''\r\n }\r\n this.startup(\r\n this.props\r\n );\r\n //this.bufferSearch = this.bufferSearch.bind(this);\r\n }\r\n\r\n \r\n\r\n startup = (config) => {\r\n loadModules([\r\n \"esri/core/watchUtils\",\r\n \"esri/widgets/Expand\",\r\n ]).then(([watchUtils, Expand]) => {\r\n let domEle = document.getElementsByClassName(\"map-datatable-container\");\r\n let dataGridDivNode = document.getElementsByClassName(\"dataGridDiv\");\r\n if (domEle) {\r\n this.DataTableExpand = new Expand({\r\n collapseTooltip: \"Collapse Table\",\r\n expandTooltip: \"Expand Table\",\r\n view: config.view,\r\n //content: node,\r\n content: domEle[0],\r\n //container: this.buffercalccontainer,\r\n expandIconClass: \"esri-icon-table\",\r\n expanded: true\r\n });\r\n config.view.ui.add(this.DataTableExpand, \"bottom-right\");\r\n this.props.widgetRenderCallBack(\"DatTable\");\r\n const inThis = this;\r\n this.selectedLayer = config.view.map.layers.find(function (layer) {\r\n return layer.Id === inThis.state.selectedLayerId;\r\n });\r\n watchUtils.pausable(this.DataTableExpand, \"expanded\", function (newValue, oldValue) {\r\n inThis.props.onexpanded(this.DataTableExpand, newValue);\r\n });\r\n this.loadDataBySelectedArea();\r\n }\r\n });\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n //if (prevProps && this.props.selectedArea && this.props.selectedArea.graphic && this.props.selectedArea.graphic.geometry && prevProps.selectedArea && prevProps.selectedArea.graphic && prevProps.selectedArea.graphic.geometry && prevProps.selectedArea.graphic.geometry !== this.props.selectedArea.graphic.geometry) {\r\n if (prevProps && this.props.selectedArea && prevProps.selectedArea && this.props.selectedArea.counter > prevProps.selectedArea.counter) {\r\n if (this.props.selectedArea.graphic) {\r\n this.setState({ selectedArea: this.props.selectedArea, selectedLayerOptions: this.props.selectedLayerOptions }, () => {\r\n this.loadDataBySelectedArea(this.props.selectedArea)\r\n })\r\n }\r\n else\r\n this.clearGridData()\r\n } else if (this.props.selectedArea.cleargraphic) {\r\n this.clearGridData()\r\n }\r\n if (this.props.clearsketch != prevProps.clearsketch) {\r\n this.clearGridData()\r\n }\r\n if (this.props.clearAreaSelection != prevProps.clearAreaSelection) {\r\n this.clearGridData();\r\n if (this.layer && this.layer.graphics) {\r\n this.layer.graphics.removeAll();\r\n let recordsReponse = {}\r\n recordsReponse[this.state.selectedLayerOptions.SubscribedMasterFieldsKey] = \"\";\r\n recordsReponse[\"PRIMARY_\"+this.state.selectedLayerOptions.SubscribedMasterFieldsKey] = \"\";\r\n recordsReponse['SELECT_LAYER_URL'] = this.state.selectedLayerOptions.Url;\r\n this.setState({ primarySelectedRecord : ''})\r\n if(this?.props?.onSaveorUpdateMapResponse)\r\n this.props.onSaveorUpdateMapResponse(recordsReponse);\r\n }\r\n }\r\n }\r\n\r\n getPrimarySelectedRecord(){\r\n if(this.props.options && this.props.options.tasks && this.state && this.state.selectedLayerOptions)\r\n return this.props.options.tasks.TaxParcels[\"PRIMARY_\"+this.state.selectedLayerOptions.SubscribedMasterFieldsKey]\r\n else\r\n return \"\"\r\n }\r\n\r\n onSelectionChange(event, inthis, isselected) {\r\n let selectrecordGeom = null;\r\n loadModules([\r\n \"esri/Graphic\",\r\n \"esri/layers/GraphicsLayer\"\r\n ]).then(([Graphic, GraphicsLayer]) => {\r\n let row = event.dataItem || event.dataItems[0];\r\n let newGeoms = [];\r\n let selectedRecords = inthis.state.selectedRecords[inthis.state.selectedLayerOptions.id] || [];\r\n let isTaxlot = inthis.props.selectedLayerOptions ? inthis.state.selectedLayerOptions.IsTaxlot == \"Y\" : false;\r\n let layerfield = inthis.state.selectedLayerOptions.SelectField\r\n\r\n let primarySelectedRecord = this.getPrimarySelectedRecord();\r\n\r\n this.layer = inthis.state.view.map.layers.find(function (layer) {\r\n return layer.title === \"Data Table Seleced Records_\" + inthis.state.selectedLayerOptions.id;\r\n });\r\n let isNew = !this.layer;\r\n if (isNew) {\r\n this.layer = new GraphicsLayer({\r\n \"title\": \"Data Table Seleced Records_\" + inthis.state.selectedLayerOptions.id, listMode: 'hide'\r\n });\r\n }\r\n const allrecords = !row || row.length > 0;\r\n if (allrecords)\r\n row = inthis.state.gridData[0] \r\n\r\n let objidkey = Object.keys(row).find(k => k == \"OBJECTID\")\r\n if (!objidkey)\r\n objidkey = Object.keys(row).find(k => k == \"objectId\")\r\n if (!objidkey)\r\n objidkey = Object.keys(row).find(k => k == inthis.state.selectedLayerOptions.SearchField)\r\n\r\n const objectId = row[objidkey];\r\n let selectedrecord = row[inthis.state.selectedLayerOptions.SelectField];\r\n if (selectedrecord && typeof selectedrecord === 'string')\r\n selectedrecord = selectedrecord.trim()\r\n if (!isTaxlot) { inthis.state.view.popup.close(); }\r\n\r\n if (!allrecords) {\r\n let selectrecord = inthis.gridresponse.features.find(function (data) {\r\n return data.attributes[objidkey] == objectId;\r\n });\r\n if (selectrecord) {\r\n if (row.selected) {\r\n let graphic = null\r\n let valid = inthis.isSelectionValid(inthis.state.selectedLayerOptions, selectrecord, inthis);\r\n if (valid) {\r\n selectrecord.attributes['selected'] = true\r\n selectrecordGeom = selectrecord.geometry;\r\n graphic = new Graphic({\r\n geometry: selectrecord.geometry,\r\n attributes: selectrecord.attributes,\r\n symbol: inthis.state.mapConstants.getHighlightsymbol(inthis.props.SubModuleKey, selectrecord.geometry.type, selectrecord.attributes, inthis.state.selectedLayerOptions)//inthis.state.mapConstants.getsymbol(selectrecord.geometry.type,true,inthis.state.selectedLayerOptions)\r\n });\r\n CenterAndZoom(inthis.state.view, selectrecord.geometry);\r\n selectedRecords.push(selectedrecord)\r\n document.getElementsByClassName(\"selectdFeatures\")[0].innerHTML = \" \" + selectedrecord + \" Selected \"\r\n newGeoms.push(graphic)\r\n }\r\n } else {\r\n selectedRecords = selectedRecords.filter(a => a != selectedrecord)\r\n document.getElementsByClassName(\"selectdFeatures\")[0].innerHTML = \" \" + selectedrecord + \" De-selected \"\r\n let selectgraphic = inthis.layer.graphics.find(function (data) {\r\n return data.attributes[objidkey] == objectId;\r\n });\r\n if (selectgraphic)\r\n selectgraphic.attributes['selected'] = false\r\n inthis.layer.graphics.remove(selectgraphic);\r\n }\r\n }\r\n }\r\n else {\r\n if (row.selected) //All records Selected\r\n {\r\n document.getElementsByClassName(\"selectdFeatures\")[0].innerHTML = \" All records Selected \"\r\n selectedRecords = this.state.gridData.map(function (gd) { return gd[inthis.state.selectedLayerOptions.SelectField] })\r\n let geometries = inthis.gridresponse.features.map(function (data) {\r\n return data.geometry;\r\n });\r\n inthis.gridresponse.features.forEach(function (item, index) {\r\n let valid = inthis.isSelectionValid(inthis.state.selectedLayerOptions, item, inthis);\r\n if (valid) { \r\n item.attributes['selected'] = true;\r\n let primFieldValue = inthis.props.options.FieldsData ? (inthis.props.options.FieldsData[inthis.props.options.FieldsData.findIndex((obj => obj.Fieldkey === \"PRIMARY_\"+inthis.props.selectedLayerOptions.SubscribedMasterFieldsKey))]) : null;\r\n let primarySelectedRecord_ref = inthis.state.primarySelectedRecord || ( primFieldValue ? primFieldValue.FieldValue : null ); \r\n let isprimarytaxlot = (primarySelectedRecord_ref && item.attributes[layerfield] === primarySelectedRecord_ref) ? true : (!primarySelectedRecord_ref && (index + 1) === inthis.gridresponse.features.length && isTaxlot); \r\n let grpahicsymbol = isprimarytaxlot ? inthis.state.mapConstants.PolygonFillSymbolSecondary\r\n : inthis.state.mapConstants.getHighlightsymbol(inthis.props.SubModuleKey, item.geometry.type, item.attributes, inthis.state.selectedLayerOptions)\r\n let g = new Graphic({\r\n geometry: item.geometry,\r\n attributes: item.attributes,\r\n symbol: grpahicsymbol\r\n });\r\n //Unique geometries considered\r\n \r\n let isGeomRecordExists = newGeoms.filter(res => res.attributes[layerfield] == item.attributes[layerfield])\r\n if (isGeomRecordExists.length == 0) {\r\n newGeoms.push(g);\r\n }\r\n if(!inthis.state.primarySelectedRecord && isprimarytaxlot)\r\n primarySelectedRecord = item.attributes[layerfield]\r\n }\r\n });\r\n if (geometries.length > 0) {\r\n selectrecordGeom = geometries[0];\r\n if (geometries.length > 1) {\r\n GeometryEngineTask({ \"geometries\": geometries, \"type\": \"union\" }).then(\r\n GeomEngineresponse => {\r\n if (GeomEngineresponse && GeomEngineresponse.centroid)\r\n CenterAndZoom(inthis.state.view, GeomEngineresponse.centroid);\r\n },\r\n GeomEngineerror => {\r\n // //console.log(GeomEngineerror);\r\n });\r\n } else if (geometries.length === 1) {\r\n CenterAndZoom(inthis.state.view, geometries[0]);\r\n }\r\n }\r\n }\r\n else {\r\n inthis.gridresponse.features.forEach(function (item) {\r\n item.attributes['selected'] = false\r\n })\r\n document.getElementsByClassName(\"selectdFeatures\")[0].innerHTML = \" All records De-selected \"\r\n this.layer.graphics.removeAll();\r\n }\r\n }\r\n\r\n\r\n if (this.props.options.MapBussinessRules) {\r\n let graphicies = newGeoms;\r\n if (isTaxlot) {\r\n this.processForTaxlots(newGeoms, this.state.view);\r\n }\r\n let inthis = this\r\n GeometryEngineTask({\r\n \"geometries\": graphicies, \"spatialReference\": this.state.spatialReference, MapBussinessRules: this.props.options.MapBussinessRules, ValidateOf: \"TOTAL_GEOMETRY_LENGTH\", \"type\": \"validateBussinessRules\", units: \"miles\"\r\n }).then(\r\n validateBussinessRulesResponse => {\r\n let isValid = true;\r\n if (validateBussinessRulesResponse && validateBussinessRulesResponse.length > 0) {\r\n validateBussinessRulesResponse.forEach(vbr => {\r\n if (vbr.IsValidationFalied) {\r\n alert(vbr.alertMessage.message);\r\n isValid = false;\r\n // inthis.props.snackbarMessage(vbr.alertMessage.message, vbr.alertMessage.type);\r\n //inthis.layer.remove(event.graphic);\r\n }\r\n });\r\n }\r\n if (isValid && newGeoms && newGeoms.length > 0) {\r\n newGeoms.forEach(ng => {\r\n inthis.layer.graphics.add(ng);\r\n });\r\n\r\n if (isNew)\r\n inthis.state.view.map.layers.add(this.layer, 0);\r\n let stateselectedRecords = inthis.state.selectedRecords;\r\n //Pre load the selected records for taxlots\r\n if(isTaxlot){\r\n let preselectedrecords = inthis.state.options && Array.isArray(inthis.state.options.FieldsData) ? inthis.state.options.FieldsData.filter(f => {\r\n return (f.Fieldkey == (inthis.props.selectedLayerOptions.SubscribedMasterFieldsKey) && f.FieldValue) ;\r\n }).map(f => f.FieldValue) : \"\"; \r\n if(preselectedrecords && Array.isArray(preselectedrecords) && Array.isArray(selectedRecords) && preselectedrecords.length > 0){ \r\n selectedRecords = [...new Set(selectedRecords.concat(preselectedrecords[0].split(\",\")))] //selectedRecords.concat(preselectedrecords[0].split(\",\"))\r\n console.log('Total selected taxlots------------', selectedRecords)\r\n }\r\n }\r\n stateselectedRecords[inthis.state.selectedLayerOptions.id] = selectedRecords \r\n inthis.setState({ selectedRecords: stateselectedRecords, primarySelectedRecord: primarySelectedRecord });\r\n if (inthis.state.selectedLayerOptions.SubscribedMasterFieldsKey && inthis.props.onSaveorUpdateMapResponse) {\r\n let recordsReponse = {}\r\n if (inthis.props.SubModuleKey === 'VIOLATIONS')\r\n recordsReponse[inthis.state.selectedLayerOptions.SubscribedMasterFieldsKey] = { Id: row.Id, SitePermitTypeId: row.Site_Permit_Type_Id, SubModuleKey: row.SubModuleKey };\r\n else\r\n recordsReponse[inthis.state.selectedLayerOptions.SubscribedMasterFieldsKey] = selectedRecords.join(\",\");\r\n\r\n if(primarySelectedRecord)\r\n recordsReponse[\"PRIMARY_\"+inthis.state.selectedLayerOptions.SubscribedMasterFieldsKey] = primarySelectedRecord;\r\n\r\n //Additional parameter, if layer url to be used\r\n recordsReponse['SELECT_LAYER_URL'] = inthis.state.selectedLayerOptions.Url;\r\n inthis.props.onSaveorUpdateMapResponse(recordsReponse);\r\n } else {\r\n inthis.props.snackbarMessage('Not subscribed to any field', 'info');\r\n }\r\n if (inthis.props.SelectGeomInsteadOfDraw == true) {\r\n let geom = selectrecordGeom;\r\n if (selectrecordGeom && selectrecordGeom.extent && selectrecordGeom.extent.center && selectrecordGeom.extent !== undefined || selectrecordGeom.extent !== null)\r\n geom = selectrecordGeom.extent.center;\r\n\r\n if (inthis.props.options && inthis.props.options.MasterLookupFields) {\r\n GISLookupTask(inthis.props.options, { geometry: geom }, inthis.props.options.MasterLookupFields).then((gisres) => {\r\n if (inthis.props.setStateMapInformation)\r\n inthis.props.setStateMapInformation(gisres);\r\n })\r\n }\r\n }\r\n }\r\n },\r\n validateBussinessRuleseerror => {\r\n });\r\n } else {\r\n let recordsReponse = {}\r\n recordsReponse[inthis.state.selectedLayerOptions.SubscribedMasterFieldsKey] = { Id: row.Id, SitePermitTypeId: row.Site_Permit_Type_Id, SubModuleKey: row.SubModuleKey };\r\n inthis.props.onSaveorUpdateMapResponse(recordsReponse);\r\n }\r\n });\r\n }\r\n\r\n loadDataBySelectedArea() {\r\n if (this.selectedLayer && this.state.selectedArea && this.state.selectedArea.graphic && this.state.selectedArea.graphic.geometry) {\r\n document.getElementsByClassName(\"dataTableInfo\")[0].innerHTML = \" Loading data \"\r\n QueryTaskBufferWithGeom(this.state.selectedLayerOptions, \"1=1\", this.state.spatialReference, this.state.selectedArea.graphic.geometry).then(\r\n response => {\r\n let selectedRecords = this.state.selectedRecords[this.state.selectedLayerOptions.id] || [];\r\n if (response && response.features && response.features.length > 0) {\r\n let graphics = response.features;\r\n let selected = this.state.selectedLayerOptions.AutoSelect || false\r\n var data = graphics.map(function (feature, i) {\r\n return Object.keys(feature.attributes).reduce((obj, key) => {\r\n obj[key] = feature.attributes[key];\r\n obj['selected'] = selected;\r\n return obj;\r\n }, {});\r\n });\r\n if (this.layer && this.layer.graphics && this.layer.graphics.items && this.layer.graphics.items.length > 0)//Already selected\r\n {\r\n let objidkey = null;\r\n this.layer.graphics.items.forEach(feature => {\r\n data = data.filter(a => a[\"OBJECTID\"] != feature.attributes[\"OBJECTID\"]);\r\n let objval = Object.keys(feature.attributes).reduce((obj, key) => {\r\n obj[key] = feature.attributes[key];\r\n //obj['selected'] = true;\r\n return obj;\r\n }, {})\r\n response.features.push(feature);\r\n data.push(objval)\r\n /*if(objval['selected'])\r\n {\r\n let selectedrecordObj=this.getselectedRecordId(objidkey,objval,this.state.selectedLayerOptions.SelectField)\r\n objidkey=selectedrecordObj.objidkey\r\n if(selectedRecords.indexOf(selectedrecordObj.selectedrecord)==-1)\r\n selectedRecords.push(selectedrecordObj.selectedrecord);\r\n }*/\r\n });\r\n /*\r\n let stateselectedRecords= this.state.selectedRecords;\r\n stateselectedRecords[this.state.selectedLayerOptions.id]=selectedRecords\r\n this.setState({ selectedRecords: stateselectedRecords });\r\n */\r\n }\r\n document.getElementsByClassName(\"dataTableInfo\")[0].innerHTML = \" Total Records <b>\" + data.length.toString() + \" </b>\"\r\n this.columns = this.buildColumns(response.fields);\r\n this.gridresponse = response;\r\n this.griddata = data;\r\n this.setState({ gridData: data, columns: this.columns, showGrid: true }, () => { })\r\n if (this.state.selectedLayerOptions.AutoSelect == true) {\r\n if (this.state.isDataTableExpand == false) {\r\n this.DataTableExpand.expanded = false;\r\n this.setState({ isDataTableExpand: true })\r\n }\r\n this.onSelectionChange({ dataItem: data }, this)\r\n }\r\n } else {\r\n this.clearGridData()\r\n }\r\n },\r\n error => {\r\n //console.log(error);\r\n })\r\n }\r\n }\r\n\r\n processForTaxlots = (graphics, view) => {\r\n let inthis = this;\r\n let field = inthis.state.selectedLayerOptions.SelectField\r\n loadModules([\r\n \"esri/Graphic\",\r\n \"esri/layers/GraphicsLayer\",\r\n \"esri/PopupTemplate\",\r\n ]).then(([Graphic, GraphicsLayer, PopupTemplate]) => {\r\n try{\r\n let featurelist = [];\r\n graphics.map(function (feature, i) {\r\n feature.popupTemplate = null\r\n let hasinlist = featurelist.filter(res => res.attributes[field] == feature.attributes[field])\r\n if (hasinlist.length == 0) {\r\n //console.log('Adding custom template for ---', feature);\r\n feature.popupTemplate = {\r\n title: '<b>Map Tax Lot: {' + field + '} </b>',\r\n content: (evt) => inthis.PrimaryChangeContent(feature, view)\r\n }\r\n }\r\n featurelist.push(feature)\r\n });\r\n //console.log('Featurelist -----------',featurelist);\r\n // featurelist.map(listres => {\r\n // //console.log(listres.attributes[field])\r\n // })\r\n // view.popup.open({\r\n // features: featurelist\r\n // });\r\n }catch(ex){\r\n console.log(ex)\r\n } \r\n })\r\n }\r\n\r\n PrimaryChangeContent = (evt, view) => {\r\n //console.log(evt, this);\r\n //let selection = options.tasks.TaxParcels;\r\n var node = document.createElement(\"div\");\r\n let chk = document.createElement(\"input\");\r\n chk.type = \"checkbox\";\r\n chk.onclick = (evt1) => this.onPrimaryChage(view, evt, this);\r\n chk.id = \"primarycheck_id\";\r\n\r\n node.appendChild(chk);\r\n let brek = document.createElement(\"br\");\r\n let bold = document.createElement(\"b\");\r\n let lable = document.createElement(\"label\");\r\n lable.for = \"primarycheck_id\";\r\n lable.innerHTML = \" Is Primary Taxlot\";\r\n bold.appendChild(lable);\r\n node.appendChild(bold);\r\n node.appendChild(brek);\r\n node.appendChild(brek);\r\n\r\n //let lablebody = document.createElement(\"label\");\r\n //lablebody.innerHTML = \"Pre Selected taxlots are : \"+ (selection.queryexpression ? selection.queryexpression : \"NA\");\r\n //node.appendChild(lablebody);\r\n\r\n return node;\r\n }\r\n\r\n onPrimaryChage(view, geom, inthis) {\r\n //console.log(view);\r\n let field = inthis.state.selectedLayerOptions.SelectField\r\n let uniquetaxlots = geom.attributes[field];\r\n this.updatePrimaryGeomSymbols([uniquetaxlots], inthis);\r\n //alert('Changed to primary' + uniquetaxlots)\r\n return true;\r\n }\r\n\r\n updatePrimaryGeomSymbols(queryParams, inthis) {\r\n loadModules([\r\n \"esri/Graphic\",\r\n \"esri/layers/GraphicsLayer\",\r\n \"esri/PopupTemplate\",\r\n ]).then(([Graphic, GraphicsLayer, PopupTemplate]) => {\r\n //let primaryrecord = \"\";\r\n let allrecords = [];\r\n let field = inthis.state.selectedLayerOptions.SelectField;\r\n inthis.layer.graphics.forEach(grph => {\r\n //console.log(grph);\r\n if (grph.attributes) {\r\n let isprimary = queryParams.includes(grph.attributes[field]);\r\n //primaryrecord = isprimary ? grph.attributes.MapTaxlot : \"\";\r\n if (!isprimary && !allrecords.includes(grph.attributes[field]))\r\n allrecords.push(grph.attributes[field]);\r\n\r\n let graphic = new Graphic({\r\n geometry: grph.geometry,\r\n attributes: grph.attributes,\r\n symbol: isprimary ? inthis.state.mapConstants.PolygonFillSymbolSecondary : inthis.state.mapConstants.getHighlightsymbol(inthis.props.SubModuleKey, grph.geometry.type, grph.attributes, inthis.state.selectedLayerOptions)\r\n });\r\n inthis.layer.graphics.add(graphic);\r\n }\r\n });\r\n allrecords.push(queryParams[0]);\r\n let recordsReponse = {}\r\n recordsReponse[inthis.state.selectedLayerOptions.SubscribedMasterFieldsKey] = allrecords.join(\",\");\r\n //Additional parameter, if layer url to be used\r\n recordsReponse['SELECT_LAYER_URL'] = inthis.state.selectedLayerOptions.Url;\r\n inthis.props.onSaveorUpdateMapResponse(recordsReponse);\r\n })\r\n\r\n }\r\n\r\n isSelectionValid = (selectedLayerOptions, selectrecord, inthis) => {\r\n let isValid = true;\r\n if (selectedLayerOptions.HasValidation == true) {\r\n const validatRules = selectedLayerOptions.Validation;\r\n validatRules.forEach(function (validatRule) {\r\n if (validatRule != null && validatRule.FieldName != null && validatRule.AllowedValues != null && validatRule.AllowedValues.length > 0) {\r\n let fildVal = selectrecord.attributes[validatRule.FieldName]\r\n if (validatRule.AllowedValues.indexOf(fildVal) == -1) {\r\n alert(\"Selected route is not allowed. Selected route has \" + validatRule.FieldName + \" is \" + fildVal);\r\n if (isValid == true)\r\n isValid = false;\r\n //inthis.props.snackbarMessage(\"Selected route is not allowed. Selected route has \"+validatRule.FieldName +\" is \"+fildVal, \"E\");\r\n\r\n }\r\n }\r\n });\r\n\r\n }\r\n return isValid;\r\n }\r\n getselectedRecordId = (objidkey, objval, selectedField) => {\r\n if (!objidkey) {\r\n let objidkey = Object.keys(objval).find(k => k == \"OBJECTID\")\r\n if (!objidkey)\r\n objidkey = Object.keys(objval).find(k => k == \"objectId\")\r\n }\r\n const objectId = objval[objidkey];\r\n let selectedrecord = objval[selectedField];\r\n if (selectedrecord && typeof selectedrecord === 'string')\r\n selectedrecord = selectedrecord.trim()\r\n return { objidkey: objidkey, selectedrecord: selectedrecord }\r\n\r\n }\r\n buildColumns(fields) {\r\n let columns = [];\r\n fields.forEach(field => {\r\n if (field.name != \"GLOBALID\" || field.name != \"Join_Count\" || field.name != \"TARGET_FID\" || field.name.indexOf(\".Area\") !== -1 || field.name.indexOf(\".Len\") !== -1 || field.name.indexOf(\".AREA\") !== -1 || field.name.indexOf(\".LEN\") !== -1) {\r\n if (field.name === \"OBJECTID\") {\r\n columns.push({\r\n field: field.name,\r\n label: field.name,\r\n sortable: true,\r\n hidden: true,\r\n show: false\r\n })\r\n } else {\r\n columns.push({\r\n field: field.name,\r\n label: field.alias,\r\n sortable: true,\r\n show: true\r\n })\r\n }\r\n }\r\n });\r\n return columns;\r\n }\r\n\r\n selectionChange = (event) => {\r\n let tempData = this.state.gridData\r\n tempData.map(item => {\r\n let currentdataitem = event?.dataItem ? event.dataItem : event.dataItems[0];\r\n if (this.props.SubModuleKey == 'VIOLATIONS')\r\n item.selected = false;\r\n\r\n if (item.OBJECTID && item.OBJECTID === currentdataitem.OBJECTID) {\r\n item.selected = !currentdataitem.selected;\r\n } else if (item.ObjectId && item.ObjectId === currentdataitem.ObjectId) {\r\n item.selected = !currentdataitem.selected;\r\n }\r\n let searchfieldkey = this.state.selectedLayerOptions ? this.state.selectedLayerOptions.SearchField : \"Id\";\r\n if (item[searchfieldkey] && item[searchfieldkey] === currentdataitem[searchfieldkey]){\r\n item.selected = !currentdataitem.selected;\r\n }\r\n return item;\r\n });\r\n this.setState({ gridData: tempData, columns: this.columns, showGrid: true }, () => {\r\n this.onSelectionChange(event, this)\r\n })\r\n };\r\n\r\n headerSelectionChange = (event) => {\r\n let tempData = this.state.gridData\r\n const checked = event.syntheticEvent.target.checked;\r\n tempData.forEach((item) => {\r\n item['selected'] = checked;\r\n });\r\n this.setState({ gridData: tempData }, () => {\r\n this.onSelectionChange(event, this)\r\n })\r\n };\r\n\r\n clearGridData = () => {\r\n if (document.getElementsByClassName(\"dataTableInfo\") && document.getElementsByClassName(\"dataTableInfo\").length > 0)\r\n document.getElementsByClassName(\"dataTableInfo\")[0].innerHTML = \"<b> No Data found </b>\"\r\n this.gridresponse = null\r\n this.griddata = []\r\n this.columns = []\r\n this.setState({ gridData: this.griddata, columns: this.columns, showGrid: false });\r\n }\r\n\r\n render() {\r\n let layerkey = this.props.layerkey || -1;\r\n const { gridData, columns, canEdit, isGridView } = this.state\r\n\r\n return (\r\n <div id=\"DatTableParent\" style={{ order: this.props.order }}>\r\n <div id=\"DatTable\" className=\"map-datatable-container\">\r\n Data Table <span class=\"info\" className=\"dataTableInfo\"></span> <span class=\"info\" className=\"selectdFeatures\"></span> <span class=\"esri-icon-erase\" style={{ \"display\": \"none\" }}></span>\r\n {this.state.selectedLayerOptions && gridData && gridData.length > 0 && this.state.showGrid && <Grid\r\n style={{ height: \"250px\", width: (canEdit && isGridView) ? '600px' : '1000px', overflow: 'auto' }}\r\n resizable={true}\r\n sortable={true}\r\n data={gridData}\r\n selectable={{\r\n enabled: true,\r\n drag: false,\r\n cell: false,\r\n }}\r\n selectedField=\"selected\"\r\n onSelectionChange={this.selectionChange}\r\n onHeaderSelectionChange={this.headerSelectionChange}\r\n >\r\n <Column\r\n field=\"selected\"\r\n width=\"100px\"\r\n headerSelectionValue={\r\n gridData && gridData.length > 0 && gridData.findIndex(dataItem => dataItem.selected === false) === -1\r\n }\r\n />\r\n {columns && columns.length > 0 && columns.map(each => { if (each.show) return <Column field={each.field} title={each.label} width=\"130px\" /> })}\r\n </Grid>}\r\n </div>\r\n </div>\r\n\r\n );\r\n }\r\n\r\n}\r\nconst CDatTableActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage }, dispatch);\r\n}\r\nCDatTable = connect(null, CDatTableActions)(CDatTable)\r\nexport default CDatTable;","import React, { Component } from 'react';\r\nimport ReactDOM from \"react-dom\";\r\nimport { loadModules } from 'esri-loader';\r\nclass CHome extends Component {\r\n constructor(props) {\r\n super(props); \r\n this.state = { \r\n view: this.props.view\r\n } \r\n this.startup(\r\n this.props\r\n ); \r\n } \r\n \r\n startup = (config) => {\r\n loadModules([\r\n \"esri/widgets/Home\"\r\n ]).then(([Home]) => {\r\n this.homecontainer = ReactDOM.findDOMNode(this);\r\n const home = new Home({ \r\n view: config.view,\r\n container: this.homecontainer\r\n }); \r\n config.view.ui.add(home, \"top-left\");\r\n this.props.widgetRenderCallBack(\"Home\")\r\n });\r\n } \r\n\r\n render() {\r\n return (\r\n <div className=\"home-box\" style={{order:this.props.order}}>\r\n \r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default CHome;","import React, { useEffect, useState } from 'react';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport QueryBuilder from '../../dnd/widgets/validationrules/mainquerybuilder'\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport SaveIcon from '@material-ui/icons/FilterListSharp';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { getEnvVariable } from '../../../../modules/environmentalList';\r\nimport { GetData } from '../../../controls/helpers/requests';\r\nimport { formatQuery as Formatter } from 'react-querybuilder';\r\nimport DatePicker from '../../../controls/components/datetimepicker'\r\nimport TextBox from '../../../modules/form/cformtextbox';\r\nimport Dropdown from '../../../modules/form/cformdropdown';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n flexGrow: 1,\r\n },\r\n menuButton: {\r\n marginRight: theme.spacing(2),\r\n },\r\n toolbar: {\r\n alignItems: 'flex-start',\r\n paddingTop: theme.spacing(1),\r\n },\r\n title: {\r\n flexGrow: 1,\r\n alignSelf: 'flex-end',\r\n },\r\n}));\r\n\r\nexport default function FormDialog(props) {\r\n const classes = useStyles();\r\n // const [query, setQuery] = useState(JSON.parse(localStorage.getItem('layerQuery')) || {})\r\n const [fields, setFields] = useState([])\r\n const [unitsdomain, setDomains] = useState([])\r\n const [isArchive, setIsArchive] = useState([])\r\n const [reload, setReload] = useState(false)\r\n\r\n\r\n useEffect(() => {\r\n let url = getEnvVariable('Admin') + `/api/Domains/values?domainkey=UNITS`;\r\n GetData(url, false, '', false).then(list => {\r\n if (list)\r\n setDomains(list);\r\n })\r\n props.widgetRenderCallBack(\"LayerFilter\");\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (props.layerId) {\r\n let url = `${getEnvVariable('Admin')}/api/Layers/FiltersBuilder/${props.layerId}`;\r\n GetData(url).then(fieldsdata => {\r\n if (fieldsdata && fieldsdata.rulesBuilder && fieldsdata.rulesBuilder.length > 0)\r\n setFields(fieldsdata.rulesBuilder);\r\n setIsArchive(fieldsdata.isArchive);\r\n })\r\n }\r\n }, [props.layerId])\r\n\r\n const handleLayersQuery = (tquery) => {\r\n let tempQuery = JSON.parse(localStorage.getItem('layerQuery')) || {}\r\n if (tempQuery && tempQuery[props.layerId]) {\r\n tempQuery[props.layerId]['query'] = tquery\r\n }\r\n else {\r\n tempQuery[props.layerId] = {};\r\n tempQuery[props.layerId]['query'] = tquery\r\n }\r\n localStorage.setItem('layerQuery', JSON.stringify(tempQuery));\r\n setReload(!reload)\r\n }\r\n\r\n const handleSave = () => {\r\n let tempquery = JSON.parse(localStorage.getItem('layerQuery')) || {};\r\n tempquery[props.layerId]['query'] = Formatter(tempquery[props.layerId].query, 'sql')\r\n props.handlelayerFilter(tempquery[props.layerId]);\r\n }\r\n\r\n const handleChange = (evt) => {\r\n const { name, value } = evt.target;\r\n let tempQuery = JSON.parse(localStorage.getItem('layerQuery')) || {}\r\n if (tempQuery && tempQuery[props.layerId]) {\r\n tempQuery[props.layerId][name] = value\r\n }\r\n else {\r\n tempQuery[props.layerId] = {}\r\n tempQuery[props.layerId][name] = value\r\n }\r\n localStorage.setItem('layerQuery', JSON.stringify(tempQuery))\r\n setReload(!reload)\r\n }\r\n\r\n const query = JSON.parse(localStorage.getItem('layerQuery')) || {};\r\n return (\r\n <div style={{ order: props.order }}>\r\n {reload}\r\n <Dialog open={props.showLayerFilter || false} onClose={props.layerFilter} aria-labelledby=\"form-dialog-title\" fullWidth={true}\r\n maxWidth={\"md\"}>\r\n <div className={classes.root}>\r\n <AppBar position=\"static\" color=\"secondary\">\r\n <Toolbar variant=\"dense\" className={classes.toolbar}>\r\n <Typography variant=\"h6\" className={classes.title} > <span aria-hidden=\"true\" className=\"material-icons\">filter_alt</span>Layer Filters </Typography>\r\n {query && query[props.layerId] !== '' && <IconButton edge=\"end\" color=\"inherit\" onClick={handleSave} aria-label=\"Apply Filter\" title=\"Apply Filter\"> <SaveIcon /> </IconButton>} \r\n <IconButton color=\"inherit\" onClick={() => props.layerFilter(null)} aria-label=\"close\" title=\"Close\"> <CloseIcon /> </IconButton>\r\n </Toolbar>\r\n </AppBar>\r\n </div>\r\n <DialogContent>\r\n <label className=\"fw-bold\">Filter By Value</label>\r\n <QueryBuilder fields={fields || []} query={query && Object.keys(query).length > 0 && query[props.layerId] && query[props.layerId].query || null}\r\n onQueryChange={handleLayersQuery} />\r\n <label className=\"fw-bold\">Filter By Distance</label>\r\n <div className=\"row col-sm-12\">\r\n <TextBox className=\"col-sm-6\" label={'Distance'} xtype=\"number\" edit={true} handleFieldChange={(evt) => handleChange(evt)} name=\"Distance\" value={query && Object.keys(query).length > 0 && query[props.layerId] && query[props.layerId].Distance || 0} />\r\n <Dropdown className=\"col-sm-6\" label={'Units'} edit={true} handleFieldChange={(evt) => handleChange(evt)} name=\"Units\" value={query && Object.keys(query).length > 0 && query[props.layerId] && query[props.layerId].Units || ''}\r\n dropdownvalues={unitsdomain || []} transformProps={{\r\n \"value\": \"Value\",\r\n \"name\": \"Name\"\r\n }} />\r\n </div>\r\n {isArchive && <div><label className=\"fw-bold\">Filter By Date</label><br />\r\n <DatePicker value={query && Object.keys(query).length > 0 && query[props.layerId] && query[props.layerId].Asofdate || ''} name=\"Asofdate\" handleFieldValue={(evt) => handleChange(evt)} />\r\n </div>}\r\n </DialogContent>\r\n </Dialog >\r\n </div>\r\n );\r\n}","import React, { Component } from 'react';\r\nimport ReactDOM from \"react-dom\";\r\nimport { loadModules } from 'esri-loader';\r\nclass CLocate extends Component {\r\n constructor(props) {\r\n super(props); \r\n console.log(\"Locate:: \",this.props);\r\n this.state = { \r\n view: this.props.view\r\n } \r\n this.startup(\r\n this.props\r\n ); \r\n } \r\n \r\n startup = (config) => {\r\n loadModules([\r\n \"esri/widgets/Locate\"\r\n ]).then(([Locate]) => {\r\n this.locatecontainer = ReactDOM.findDOMNode(this);\r\n const locate = new Locate({ \r\n view: config.view,\r\n container: this.locatecontainer\r\n }); \r\n config.view.ui.add(locate, \"top-left\");\r\n this.props.widgetRenderCallBack(\"Locate\")\r\n });\r\n } \r\n\r\n render() {\r\n return (\r\n <div className=\"locate-box\" style={{order:this.props.order}}>\r\n \r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default CLocate;","import React, { Component } from 'react';\r\nimport ReactDOM from \"react-dom\";\r\nimport { loadModules } from 'esri-loader';\r\nimport { TaxParcelTask, TaxParcelTaskFeatureLayer } from '../eps/taxParcelTask';\r\nimport { MapConstants } from '../util/mapConstants';\r\nimport { QueryTask, QueryTaskBufferWithGeom, CenterAndZoom, EsriRequest } from '../util/queryTask';\r\nimport loadingimg from '../../../resources/gis-loading.gif'\r\nimport { xyToLngLat, getLatLong, GetArea, getXYFromGeom } from '../util/mercatorUtils'\r\n\r\nconst gridFields = [\r\n \"OBJECTID\",\r\n \"Taxlot\",\r\n \"MapTaxlot\",\r\n \"MapNumber\",\r\n \"County\"\r\n];\r\n\r\n\r\nlet queryResponse\r\nlet gridtaxlots\r\nclass CCompMultiLocationBufferCalc extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n view: this.props.view,\r\n units: \"feet\",\r\n distance: \"3000\",\r\n selected:[]\r\n }\r\n this.startup(\r\n this.props\r\n );\r\n\r\n this.bufferSearch = this.bufferSearch.bind(this);\r\n //this.selectTaxlotWithinBuffer = this.selectTaxlotWithinBuffer.bind(this);\r\n }\r\n\r\n defaultGridColumns() {\r\n return [\r\n { \"field\": \"RTUnique\", \"label\": \"Route#\", \"sortable\": true, get: function(object){\r\n let a = object.RTUnique.split('-');\r\n let result=\"\";\r\n if(a.length > 1){\r\n result = result + a[1].trim();\r\n }\r\n if(a.length > 2){\r\n result = result + ' ' + a[2].trim();\r\n }\r\n if(a.length > 4){\r\n result = result + ' ' + a[3].trim();\r\n }\r\n \r\n return result.toString()\r\n } \r\n },\r\n { \"field\": \"Routename\", \"label\": \"Route Name\", \"sortable\": true },\r\n { \"field\": \"CountyName\", \"label\": \"County\", \"sortable\": true },\r\n { \"field\": \"Distance\", \"label\": \"Distance(ft)\", \"sortable\": true, get: function(object){\r\n return object.Distance.toFixed(2);\r\n } \r\n }, \r\n { \"field\": \"MilePoint\", \"label\": \"Mile Point\", \"sortable\": true},\r\n { \"field\": \"RTUnique\", \"label\": \"Route Unique Number\", \"sortable\": true}\r\n ]\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState){ \r\n if(this.props.coordinates.longitude != prevProps.coordinates.longitude){\r\n this.bufferSearch(this) \r\n }\r\n if(this.props.clearsketch != prevProps.clearsketch){\r\n let inthis = this;\r\n setTimeout(function(){ \r\n inthis.projectGridData([])\r\n }, 5000); \r\n }\r\n }\r\n\r\n // componentDidMount(){\r\n // this.bufferSearch(this);\r\n // }\r\n\r\n startup = (config) => {\r\n loadModules([\r\n \"dgrid/OnDemandGrid\",\r\n \"dgrid/extensions/ColumnHider\",\r\n \"dgrid/Selection\"\r\n ]).then(([OnDemandGrid, ColumnHider, Selection]) => { \r\n if(document.getElementById(\"multilocationbuffererror\"))\r\n document.getElementById(\"multilocationbuffererror\").innerHTML = \"\"\r\n \r\n if(document.getElementById(\"multiLocationFeatureCount\"))\r\n document.getElementById(\"multiLocationFeatureCount\").innerHTML = \"\"\r\n \r\n if(document.getElementById(\"multiLocationSaveMsg\"))\r\n document.getElementById(\"multiLocationSaveMsg\").innerHTML = \"\"\r\n const inThis = this; \r\n let columns = this.defaultGridColumns();\r\n // create a new onDemandGrid with its selection and columnhider\r\n // extensions. Set the columns of the grid to display attribute \r\n this.grid = new (OnDemandGrid.createSubclass([Selection, ColumnHider]))(\r\n { columns: columns },\r\n inThis.props.parentcal + \"grid\"\r\n );\r\n // add a row-click listener on the grid. This will be used\r\n // to highlight the corresponding feature on the view\r\n this.grid.on(\"dgrid-select\", (event) => this.selectFeatureFromGrid(event, this));\r\n this.bufferSearch(this);\r\n });\r\n \r\n }\r\n\r\n\r\n\r\n bufferSearch = (inthis) => {\r\n \r\n if(document.getElementById(\"multilocationbuffererror\"))\r\n document.getElementById(\"multilocationbuffererror\").innerHTML = \"\"\r\n \r\n if(document.getElementById(\"multiLocationFeatureCount\"))\r\n document.getElementById(\"multiLocationFeatureCount\").innerHTML = \"\"\r\n \r\n if(document.getElementById(\"multiLocationSaveMsg\"))\r\n document.getElementById(\"multiLocationSaveMsg\").innerHTML = \"\" \r\n \r\n if(inthis.projectGridData)\r\n inthis.projectGridData([])\r\n \r\n inthis.showLoading(true); \r\n let distance = inthis.state.distance;\r\n let x = inthis.props.coordinates.longitude;//-84.48977212775438;\r\n let y = inthis.props.coordinates.latitude; // 38.0379900098567;\r\n getXYFromGeom(inthis.props.coordinates.graphic.geometry).then(res =>{\r\n if(res.x && res.y){ \r\n let queryTaskConfigMultiLocation = {\r\n url: `https://maps.kytc.ky.gov/arcgis/rest/services/MeasuredRoute/MapServer/exts/RouteMetrics/GetMultipleRouteInfo?X=${res.x}&Y=${res.y}&SearchRadius=${distance}`\r\n }\r\n EsriRequest(queryTaskConfigMultiLocation, null , 102763).then(\r\n response => {\r\n inthis.showLoading(false);\r\n if (response && response.RouteInfos && response.RouteInfos.length > 0) { \r\n const routeUNQ = response.RouteInfos.filter(a => a.GovLevelCode == '01'); \r\n //console.log(routeUNQ) \r\n inthis.processResponse(routeUNQ)\r\n }\r\n })\r\n }\r\n })\r\n \r\n }\r\n\r\n processResponse(response) {\r\n queryResponse = response\r\n //let allAttributes = response.features.map(a => a.attributes);\r\n this.projectGridData(response) \r\n }\r\n \r\n\r\n projectGridData(data) {\r\n loadModules([\r\n \"dstore/Memory\",\r\n \"dstore/legacy/StoreAdapter\",\r\n \"dgrid/OnDemandGrid\",\r\n \"dgrid/extensions/ColumnHider\",\r\n \"dgrid/Selection\",\r\n \"dijit/registry\"\r\n ]).then(([Memory, StoreAdapter, OnDemandGrid, ColumnHider, Selection,registry]) => {\r\n let columns = this.defaultGridColumns() //this.props.bufferCalcLayer && this.props.bufferCalcLayer.GridTemplate ? this.props.bufferCalcLayer.GridTemplate : this.defaultGridColumns()\r\n // create a new onDemandGrid with its selection and columnhider\r\n // extensions. Set the columns of the grid to display attribute \r\n let gridid = this.props.parentcal + \"grid\";\r\n var theGrid = registry.byId(gridid);\r\n if(data && Array.isArray(data)){\r\n //dggrid are depend on the id, adding uniuqe details if not exists\r\n data.forEach(rec => {\r\n if(!rec.id){\r\n rec.id = rec.RTUnique\r\n }\r\n });\r\n }\r\n if(this.grid){\r\n this.grid.set(\"collection\", new Memory({\r\n data: data\r\n })); \r\n }else{\r\n this.grid = new (OnDemandGrid.createSubclass([Selection, ColumnHider]))(\r\n { columns: columns },\r\n this.props.parentcal + \"grid\"\r\n );\r\n this.grid.on(\"dgrid-select\", (event) => this.selectFeatureFromGrid(event, this));\r\n }\r\n \r\n })\r\n } \r\n \r\n\r\n \r\n\r\n\r\n /************************************************\r\n * fires when user clicks a row in the grid\r\n * get the corresponding graphic and select it\r\n *************************************************/\r\n selectFeatureFromGrid(event, inthis) {\r\n // get the ObjectID value from the clicked row\r\n const row = event.rows[0];\r\n const RTUnique = row.data.RTUnique;\r\n const MilePoint = row.data.MilePoint;\r\n const routeUNQ = queryResponse.filter(a => a.RTUnique === RTUnique);\r\n console.log(routeUNQ);\r\n if(document.getElementById(\"multiLocationFeatureCount\"))\r\n document.getElementById(\"multiLocationFeatureCount\").innerHTML = \"Selected route \"+RTUnique+\" with milepoint \"+MilePoint; \r\n let requestURL = `https://maps.kytc.ky.gov/arcgis/rest/services/MeasuredRoute/MapServer/exts/RouteMetrics/GetXYByRouteAndMP?RT_UNIQUE=${RTUnique}&MP=${MilePoint}`\r\n let requestConfig = {\r\n url: requestURL\r\n } \r\n \r\n EsriRequest(requestConfig, null , 102763).then(\r\n response => {\r\n inthis.showLoading(false);\r\n if (response && response.XYResults && response.XYResults.length > 0) { \r\n let firstres = response.XYResults[0]; \r\n let selected = [];\r\n let selecteddetail = routeUNQ[0];\r\n delete selecteddetail.id;\r\n selecteddetail.X = firstres.x;\r\n selecteddetail.Y = firstres.y; \r\n console.log('selected detail with XYYYYYYYY', selected); \r\n // xyToLngLat( { x: firstres.x, y: firstres.y}, 102763).then(latlong => {\r\n // let msg = \"Selected route \"+RTUnique+\" with milepoint \"+MilePoint+\" lat/long \"+latlong.lat+\"/\"+latlong.long; \r\n // document.getElementById(\"multiLocationFeatureCount\").innerHTML = msg;\r\n // selecteddetail.Longitude = latlong.long;\r\n // selecteddetail.Latitude = latlong.lat;\r\n // selected.push(selecteddetail);\r\n // inthis.setState({selected: selected}); \r\n // })\r\n getLatLong(firstres.x, firstres.y) .then(latlong =>{\r\n let msg = \"Selected route \"+RTUnique+\" with milepoint \"+MilePoint+\" lat/long \"+latlong.lat+\"/\"+latlong.long; \r\n if(document.getElementById(\"multiLocationFeatureCount\"))\r\n document.getElementById(\"multiLocationFeatureCount\").innerHTML = msg;\r\n console.log('selected graphics', inthis.props.coordinates.graphic);\r\n GetArea(inthis.props.coordinates.graphic.geometry).then(areares => {\r\n console.log(areares)\r\n selecteddetail.Longitude = latlong.long;\r\n selecteddetail.Latitude = latlong.lat;\r\n selecteddetail.GeomLongitude = inthis.props.coordinates.longitude;\r\n selecteddetail.GeomLatitude = inthis.props.coordinates.latitude;\r\n selecteddetail.GeomType = inthis.props.coordinates.type;\r\n selecteddetail.GeomArea = areares;\r\n selecteddetail.RouteUniqueNumber = RTUnique;\r\n selecteddetail.Status = 'A';\r\n selected.push(selecteddetail); \r\n if(inthis.props.coordinates.graphic){\r\n inthis.props.coordinates.graphic.setAttribute(\"MultipleLocations\", selected)\r\n }\r\n inthis.setState({selected: selected});\r\n })\r\n }) \r\n //inthis.processResponse(response.RouteInfos)\r\n }\r\n })\r\n\r\n }\r\n\r\n \r\n\r\n errorCallback(error) {\r\n console.log(\"error:\", error);\r\n }\r\n\r\n showLoading(canShow) {\r\n let dom = document.getElementById(\"multiLocLoadingImg\");\r\n if (dom) {\r\n dom.style.display = canShow ? \"\" : \"none\";\r\n }\r\n }\r\n\r\n\r\n updateState(event, inthis) {\r\n \r\n if(document.getElementById(\"multilocationbuffererror\"))\r\n document.getElementById(\"multilocationbuffererror\").innerHTML = \"\"\r\n let name = event.target.name\r\n let val = event.target.value\r\n inthis.setState({ [name]: val })\r\n }\r\n\r\n \r\n\r\n clearTaxLots(inthis) {\r\n inthis.projectGridData([])\r\n }\r\n\r\n saveSelection(inthis) {\r\n inthis.showLoading(true);\r\n console.log(inthis.state.selected);\r\n //Currently saving only one selection can make it multiple on requirement\r\n let currentResult = inthis.state.selected[0] ;\r\n currentResult.RouteUniqueNumber = currentResult.RTUnique;\r\n this.props.multipleLocationHandler(currentResult); \r\n if(document.getElementById(\"multiLocationSaveMsg\"))\r\n document.getElementById(\"multiLocationSaveMsg\").innerHTML = \"Saved Successfully !!\";\r\n inthis.showLoading(false);\r\n }\r\n\r\n render() {\r\n let layerkey = this.props.layerkey || -1;\r\n return (\r\n <div id={\"cbuffereditArea\" + layerkey} className=\"map-customexpand-container Buffer-box \">\r\n <div id=\"addFeatureDiv\" >\r\n <p>\r\n <h6 class=\"list-heading\"><b>Search and select location within buffer</b></h6>\r\n <b> <h5> <span class=\"info\" id=\"multiLocationSaveMsg\" style={{ \"color\": \"green\" }}></span> </h5> </b>\r\n </p>\r\n <div id=\"addTemplatesDivBuffer1\" style={{ \"marginTop\": \"2px\" }}>\r\n <label id=\"multilocationbuffererror\" style={{ \"color\": \"red\" }}></label>\r\n </div>\r\n <div id=\"addTemplatesDivBuffer2\" style={{ \"marginTop\": \"1px\" }}>\r\n <label style={{ \"width\": \"15%\" }}>Distance:</label>\r\n <input style={{ \"width\": \"20%\", \"height\": \"30px\" }} id=\"distance\" type=\"number\" name=\"distance\" min=\"1\" value={this.state.distance} onChange={(event) => this.updateState(event, this)} />\r\n\r\n \r\n\r\n <label style={{ \"width\": \"10%\" }}>Units:</label>\r\n <select style={{ \"width\": \"20%\", \"height\": \"30px\" }} id=\"units\" name=\"units\" value={this.state.units} onChange={(event) => this.updateState(event, this)}>\r\n <option value=\"feet\">Feet (ft)</option>\r\n {/* <option value=\"meters\">Meters (m)</option>\r\n <option value=\"kilometers\">Kilometers (km)</option>\r\n <option value=\"miles\">Miles (mi)</option>\r\n <option value=\"us-nautical-miles\">Nautical Miles (NM -US)</option>\r\n <option value=\"nautical-miles\">Nautical Miles (NM)</option> */}\r\n </select>\r\n <button id=\"buffersearch\" style={{ \"margin-left\": \"4px\", \"background\": \"#bff3bf\" }} type=\"button\" class=\"my_button buffersearch\" onClick={(inthis) => this.bufferSearch(this)}>Search</button>\r\n <button id=\"selecttaxlots\" style={{ \"margin-left\": \"4px\", \"background\": \"#f1b7b7\" }} type=\"button\" class=\"my_button selecttaxlots\" onClick={(inthis) => this.clearTaxLots(this)}>Clear</button>\r\n {/* <button id=\"saveselection\" style={{ \"margin-left\": \"4px\", \"background\": \"#a3c7f3\" }} type=\"button\" class=\"my_button saveselection\" onClick={(inthis) => this.saveSelection(this)}>Save</button> */}\r\n\r\n <img id=\"multiLocLoadingImg\" src={loadingimg} style={{ \"height\": \"30px\", \"display\": \"none\" }} />\r\n\r\n </div>\r\n <div id=\"addTemplatesDivBuffer3\" style={{ \"marginTop\": \"3px\" }}>\r\n\r\n </div>\r\n\r\n {/* Gridview for the selected buffer */}\r\n <div id=\"gridDisplay\">\r\n <span class=\"info\" id=\"multiLocationFeatureCount\" style={{ \"color\": \"blue\" }}></span> \r\n <div id={this.props.parentcal + \"grid\"}></div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n} \r\n\r\nexport default CCompMultiLocationBufferCalc;","import React, { Component } from 'react';\r\nimport ReactDOM from \"react-dom\";\r\nimport { loadModules } from 'esri-loader';\r\nimport { QueryTask, QueryTaskBufferWithGeom, CenterAndZoom, EsriRequest } from '../util/queryTask';\r\nimport { none } from 'ramda';\r\nimport { snackbarMessage, Confirmation } from '../../../actions';\r\nimport { bindActionCreators } from 'redux'\r\nimport { connect } from 'react-redux';\r\nimport { xyToLngLat, getLatLong, GetArea, getXYFromGeom } from '../util/mercatorUtils'\r\n\r\nimport { SaveMultipleLocations, GetRecordValuesFromPrimaryLocation, UpdateApplicationGISFields, UpdateMultipleLocations } from '../eps/multipleLocationServices';\r\n\r\nclass CLocationCompare extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n view: this.props.view\r\n }\r\n this.startup(\r\n this.props\r\n );\r\n }\r\n\r\n startup = (config) => {\r\n loadModules([\r\n \"esri/core/watchUtils\"\r\n ]).then(([watchUtils]) => {\r\n this.homecontainer = ReactDOM.findDOMNode(this);\r\n let content = document.getElementById('location-compare');\r\n let divElement = document.createElement('div');\r\n divElement.onclick = () => this.compareGISData(config)\r\n divElement.innerHTML = content.innerHTML;\r\n config.view.ui.add(divElement, \"top-left\");\r\n this.props.widgetRenderCallBack(\"MultiLocationSelector\");\r\n });\r\n }\r\n\r\n compareGISData(config) {\r\n this.props.snackbarMessage('Please wait fetching information from GIS layer', 'info');\r\n this.GetCurrentGISInformation();\r\n //this.props.Confirmation((evt) => this.onConfirm(evt, this), (evt) =>this.onCancel(evt, this), 'Found difference in location gis. Update to new information?', true);\r\n }\r\n\r\n onConfirm(event, inthis) {\r\n inthis.props.Confirmation(null, null, null, false);\r\n setTimeout(function () { inthis.props.snackbarMessage('Primary information updated successfully !!', 'success'); }, 2000);\r\n }\r\n\r\n onCancel(event, inthis) {\r\n inthis.props.Confirmation(null, null, null, false);\r\n }\r\n\r\n GetCurrentGISInformation = () => {\r\n if (this.props.options && this.props.options.MultipleLocationData) {\r\n let primaryloc = this.props.options.MultipleLocationData.filter(a => a.IsPrimary == 'Y')\r\n\r\n if (primaryloc && primaryloc.length > 0) {\r\n let x = primaryloc[0].X;\r\n let y = primaryloc[0].Y;\r\n let queryTaskConfigMultiLocation = {\r\n url: `https://maps.kytc.ky.gov/arcgis/rest/services/MeasuredRoute/MapServer/exts/RouteMetrics/GetMultipleRouteInfo?X=${x}&Y=${y}&SearchRadius=2`\r\n }\r\n EsriRequest(queryTaskConfigMultiLocation, null, 102763).then(\r\n response => {\r\n if (response && response.RouteInfos && response.RouteInfos.length > 0) {\r\n const routeUNQ = response.RouteInfos.filter(a => a.GovLevelCode == '01');\r\n let propsDiffer = this.compareObjects(primaryloc[0], routeUNQ[0]);\r\n let isEqual = propsDiffer.length === 0;\r\n if (isEqual)\r\n this.props.snackbarMessage('No changes has been found after comparing', 'info');\r\n else {\r\n this.props.snackbarMessage('Changes found, update if required.', 'info');\r\n this.updateLocationInformaiton(primaryloc[0], routeUNQ[0], propsDiffer);\r\n }\r\n }\r\n }).catch(ex => {\r\n console.error(ex)\r\n })\r\n }\r\n }\r\n }\r\n\r\n updateLocationInformaiton(primary, gisrow, propsDiffer) {\r\n this.props.Confirmation(() => this.onConfirmation(primary, gisrow, propsDiffer), this.onConfirmationClose, propsDiffer.join() + ' are differing. Would you like to update?', true);\r\n }\r\n\r\n onConfirmation = (primary, gisrow, propsDiffer) => {\r\n propsDiffer.forEach(element => {\r\n primary[element] = gisrow[element]\r\n });\r\n let siteid = this.props.options['SITE_PERMIT_TYPE_ID'];\r\n let recordid = primary['RefId'];\r\n if (siteid && recordid) {\r\n UpdateMultipleLocations(primary['Id'], recordid, primary).then(res => {\r\n console.log(res)\r\n //this.props.snackbarMessage('Primary location information update sucessfully', 'success');\r\n })\r\n let recorddetails = GetRecordValuesFromPrimaryLocation(primary);\r\n UpdateApplicationGISFields(siteid, recordid, recorddetails).then(appres => {\r\n console.log(appres)\r\n //this.props.snackbarMessage('Application location information update sucessfully', 'success');\r\n })\r\n }\r\n this.props.snackbarMessage('Please wait updating', 'info');\r\n this.props.Confirmation(null, null, null, false);\r\n }\r\n\r\n\r\n onConfirmationClose = (evt) => {\r\n this.props.Confirmation(null, null, null, false);\r\n }\r\n\r\n compareObjects = (o1, o2) => {\r\n let propsDiffer = []\r\n for (var p in o1) {\r\n if (o1.hasOwnProperty(p) && o2.hasOwnProperty(p)) {\r\n if (o1[p] !== o2[p]) {\r\n propsDiffer.push(p);\r\n }\r\n }\r\n }\r\n return propsDiffer;\r\n // diff = propsDiffer.join();\r\n // if(propsDiffer.length > 0)\r\n // return false;\r\n\r\n // return true;\r\n };\r\n\r\n\r\n\r\n\r\n render() {\r\n return (\r\n <div class=\"location-compare\" style={{ order: this.props.order }}>\r\n <div id=\"location-compare\" style={{ 'display': 'none' }}>\r\n <div class=\"locationcompare-box esri-custom-location esri-widget--button esri-widget\" role=\"button\" tabindex=\"0\" aria-label=\"Compare and update primary location with GIS\" title=\"Compare and update primary location with GIS\">\r\n <span aria-hidden=\"true\" class=\"esri-icon esri-icon-refresh\"></span>\r\n <span class=\"esri-icon-font-fallback-text\">Locate</span>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage, Confirmation }, dispatch);\r\n}\r\nCLocationCompare = connect(null, mapActions)(CLocationCompare)\r\nexport default CLocationCompare;","import React, { Component } from 'react';\r\nimport ReactDOM from \"react-dom\";\r\nimport { loadModules } from 'esri-loader';\r\nimport { QueryTask, CenterAndZoom } from '../util/queryTask';\r\nimport { none } from 'ramda';\r\nimport { snackbarMessage, Confirmation } from '../../../actions';\r\nimport { bindActionCreators } from 'redux'\r\nimport { connect } from 'react-redux';\r\nclass CLocationZoom extends Component {\r\n constructor(props) {\r\n super(props); \r\n this.state = { \r\n view: this.props.view\r\n } \r\n this.startup(\r\n this.props\r\n ); \r\n } \r\n \r\n startup = (config) => {\r\n loadModules([\r\n \"esri/core/watchUtils\" \r\n ]).then(([watchUtils]) => {\r\n this.homecontainer = ReactDOM.findDOMNode(this);\r\n // var elem = document.getElementsByClassName('locationzoom-box') \r\n let content = document.getElementById('location-zoom');\r\n let divElement = document.createElement('div');\r\n divElement.onclick= () => this.zoomTo(config)\r\n divElement.innerHTML = content.innerHTML; \r\n config.view.ui.add(divElement, \"top-left\");\r\n });\r\n } \r\n\r\n zoomTo(config){\r\n let layer = config.view.map.layers.find(function (layer) {\r\n return layer.title === \"Sketch Layer\";\r\n });\r\n if(layer && layer.graphics && layer.graphics.items.length > 0){ \r\n console.log('zooming to location') \r\n CenterAndZoom(config.view, layer.graphics.items[0].geometry, 12);\r\n }else{\r\n this.props.snackbarMessage('No selected information found to zoom into the location.', 'info');\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <div class=\"location-zoom\">\r\n <div id=\"location-zoom\" style={{'display':'none'}}>\r\n <div class=\"locationzoom-box esri-custom-location esri-widget--button esri-widget\" role=\"button\" tabindex=\"0\" aria-label=\"Go to location\" title=\"Go to location\">\r\n <span aria-hidden=\"true\" class=\"esri-icon esri-icon-locate\"></span>\r\n <span class=\"esri-icon-font-fallback-text\">Locate</span>\r\n </div>\r\n </div> \r\n {/* <div id=\"location-zoom\" class=\"esri-home esri-widget--button esri-widget esri-component\" role=\"button\" tabindex=\"0\" aria-label=\"Go to location\" title=\"Go to location\">\r\n <span aria-hidden=\"true\" class=\"esri-icon esri-icon-home\"></span>\r\n <span class=\"esri-icon-font-fallback-text\">Home</span>\r\n </div> */}\r\n </div> \r\n );\r\n }\r\n}\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage, Confirmation }, dispatch);\r\n}\r\n\r\nCLocationZoom = connect(null, mapActions)(CLocationZoom)\r\n\r\nexport default CLocationZoom;","import React, { Component } from 'react';\r\nimport ReactDOM from \"react-dom\";\r\nimport { loadModules } from 'esri-loader';\r\nclass CMeasurement extends Component {\r\n constructor(props) {\r\n super(props); \r\n this.state = { \r\n view: this.props.view\r\n } \r\n this.startup(\r\n this.props\r\n ); \r\n } \r\n \r\n \r\n startup = (config) => {\r\n\r\n \r\n \r\n loadModules([\r\n \"esri/core/watchUtils\",\r\n \"esri/widgets/Expand\",\r\n \"esri/widgets/DistanceMeasurement2D\",\r\n \"esri/widgets/AreaMeasurement2D\"\r\n ]).then(([watchUtils, Expand, DistanceMeasurement, AreaMeasurement]) => {\r\n \r\n const measurement = new DistanceMeasurement({\r\n view: config.view,\r\n unit: \"feet\"\r\n }); \r\n if (config.Tools && config.Tools.indexOf(\"polygon\")>-1){\r\n measurement = new AreaMeasurement({\r\n view: config.view,\r\n unit: \"feet\"\r\n });\r\n }\r\n this.measurementcontainer = ReactDOM.findDOMNode(this);\r\n this.measurement = measurement;\r\n \r\n const measurementExpand = new Expand({\r\n collapseTooltip: \"Collapse Measurement Tool\",\r\n expandTooltip: \"Expand Measurement Tool\",\r\n view: config.view,\r\n content: measurement,\r\n container: this.measurementcontainer\r\n }); \r\n measurement.on(\"measure-start\",function(evt){ \r\n console.log(evt,'measurement started')\r\n })\r\n\r\n measurement.on(\"measure-end\",function(evt){ \r\n console.log(evt)\r\n })\r\n config.view.ui.add(measurementExpand, \"top-right\");\r\n this.props.widgetRenderCallBack(\"Measurement\");\r\n \r\n const inThis = this;\r\n watchUtils.pausable(measurementExpand, \"expanded\", function (newValue, oldValue) { \r\n inThis.props.onexpanded(measurementExpand, newValue);\r\n if(newValue){\r\n inThis.addClearTool(inThis) \r\n } \r\n });\r\n });\r\n }\r\n \r\n addClearTool(inthis){\r\n //let theDiv = document.getElementsByClassName(\"esri-direct-line-measurement-3d__actions\");\r\n let isElementExist = document.getElementsByClassName(\"measurement-clear\")\r\n if(isElementExist && isElementExist.length > 0){\r\n return;\r\n }else{\r\n let parentdiv = document.createElement('div')\r\n parentdiv.setAttribute(\"class\",\"esri-direct-line-measurement-3d__actions\"); \r\n parentdiv.style.paddingTop = '3px';\r\n\r\n let element = document.createElement('button');\r\n element.setAttribute(\"id\",\"measurement-clear\")\r\n element.setAttribute(\"class\",\"measurement-clear esri-button esri-button--secondary\") \r\n element.innerHTML=\"Clear\"\r\n element.onclick = () => inthis.clearMeasurement(inthis);\r\n parentdiv.appendChild(element);\r\n\r\n let currDocElem = inthis.measurementcontainer;\r\n if(currDocElem){\r\n var container = document.getElementsByClassName('esri-direct-line-measurement-3d__container');\r\n if(container && Array.isArray(container) && container.length > 0)\r\n container[0].appendChild(parentdiv)\r\n }\r\n } \r\n }\r\n\r\n clearMeasurement(inthis){\r\n if(inthis.measurement && inthis.measurement.viewModel)\r\n inthis.measurement.viewModel.clearMeasurement()\r\n }\r\n\r\n render() {\r\n return (\r\n <div className=\"Measurement-box\" style={{order:this.props.order}}>\r\n \r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default CMeasurement;","import { loadModules } from 'esri-loader';\r\n\r\nexport function xyToLngLat(cooridnates, spatialReference = null) {\r\n return new Promise((resolve, reject) => {\r\n loadModules([ \r\n \"esri/geometry/support/webMercatorUtils\"\r\n ]).then(([webMercatorUtils]) => {\r\n if(cooridnates.x && cooridnates.y){\r\n let sReference = spatialReference ? spatialReference : 102763\r\n let latlong = webMercatorUtils.xyToLngLat(cooridnates.x, cooridnates.y);\r\n console.log('to LATLONG',latlong);\r\n resolve({ lat : latlong[1] , long: latlong[0]}); \r\n }else{\r\n reject('No coordinates')\r\n }\r\n })\r\n });\r\n};\r\n\r\nexport function getLatLong(X,Y){\r\n\r\n return (new Promise(function (resolve, reject) {\r\n loadModules([\"esri/tasks/GeometryService\",\r\n \"esri/geometry/Point\",\r\n \"esri/tasks/support/ProjectParameters\",\r\n \"esri/geometry/SpatialReference\"]).then(([GeometryService, Point, ProjectParameters, SpatialReference]) => {\r\n var XCoord = parseInt(X, 10);\r\n var YCoord = parseInt(Y, 10);\r\n\r\n var inSR = new SpatialReference({wkid: 102763 });\r\n var outSR = new SpatialReference({wkid: 102100 });\r\n\r\n var gsvc = new GeometryService(\"https://maps.kytc.ky.gov/arcgis/rest/services/Utilities/Geometry/GeometryServer\");\r\n var inputpoint = new Point(XCoord, YCoord, inSR);\r\n var prjParams = new ProjectParameters();\r\n prjParams.geometries = [inputpoint];\r\n prjParams.outSR = outSR;\r\n\r\n gsvc.project(prjParams).then(res => {\r\n console.log(res);\r\n resolve({ lat : res[0].latitude , long: res[0].longitude}); \r\n //resolve(res);\r\n });\r\n\r\n // gsvc.on(\"project-complete\",function(outputpoint){\r\n // console.log(outputpoint); \r\n // resolve(outputpoint);\r\n // });\r\n\r\n // gsvc.on(\"error\",function(err){\r\n // reject(err);\r\n // })\r\n\r\n })\r\n\r\n\r\n \r\n }));//promise\r\n}\r\n\r\nexport function getXYFromGeom(geom){\r\n\r\n return (new Promise(function (resolve, reject) {\r\n loadModules([\"esri/tasks/GeometryService\",\r\n \"esri/geometry/Point\",\r\n \"esri/tasks/support/ProjectParameters\",\r\n \"esri/geometry/SpatialReference\"]).then(([GeometryService, Point, ProjectParameters, SpatialReference]) => {\r\n //var XCoord = parseInt(X, 10);\r\n //var YCoord = parseInt(Y, 10);\r\n\r\n //var inSR = new SpatialReference({wkid: 102100 });\r\n var outSR = new SpatialReference({wkid: 102763 });\r\n\r\n var gsvc = new GeometryService(\"https://maps.kytc.ky.gov/arcgis/rest/services/Utilities/Geometry/GeometryServer\");\r\n //var inputpoint = new Point(XCoord, YCoord, inSR);\r\n var prjParams = new ProjectParameters();\r\n prjParams.geometries = [geom];\r\n prjParams.outSR = outSR;\r\n\r\n gsvc.project(prjParams).then(res => {\r\n console.log(res);\r\n if(geom.type == 'point'){\r\n resolve({ lat : geom.latitude , long: geom.longitude , x: res[0].x , y: res[0].y }); \r\n }else if(geom.type == \"polyline\"){ \r\n resolve({ lat : geom.extent.center.latitude , long: geom.extent.center.longitude , x: res[0].extent.center.x , y: res[0].extent.center.y }); \r\n }else{\r\n resolve({ lat : res[0].centroid.latitude , long: res[0].centroid.longitude , x: res[0].centroid.x , y: res[0].centroid.y }); \r\n }\r\n \r\n //resolve(res);\r\n }); \r\n\r\n })\r\n \r\n }));//promise\r\n}\r\n\r\nexport function GetArea(geom){\r\n return new Promise((resolve, reject) => {\r\n loadModules([ \r\n \"esri/geometry/geometryEngine\"\r\n ]).then(([GeometryEngine]) => {\r\n let area = GeometryEngine.geodesicArea(geom, \"acres\");\r\n resolve(area); \r\n })\r\n });\r\n}\r\n","import React, { Component } from 'react';\r\nimport ReactDOM from \"react-dom\";\r\nimport { loadModules } from 'esri-loader';\r\nimport { TaxParcelTask, TaxParcelTaskFeatureLayer } from '../eps/taxParcelTask';\r\nimport { MapConstants } from '../util/mapConstants';\r\nimport {QueryTask, QueryTaskBufferWithGeom, CenterAndZoom } from '../util/queryTask';\r\nimport CCompMultiLocationBufferCalc from './compmultilocationbuffercalc'\r\n\r\nclass CMultiLocationSelector extends Component {\r\n constructor(props) {\r\n super(props); \r\n this.state = { \r\n view: this.props.view,\r\n units:\"feet\",\r\n distance: \"0\"\r\n } \r\n this.startup(\r\n this.props\r\n ); \r\n }\r\n \r\n \r\n startup = (config) => { \r\n \r\n loadModules([\r\n \"esri/core/watchUtils\",\r\n \"esri/widgets/Expand\", \r\n ]).then(([watchUtils, Expand]) => { \r\n this.multilocationcalccontainer = ReactDOM.findDOMNode(this); \r\n let domEle = document.getElementsByClassName(\"map-locationselector-container\");\r\n if(domEle){\r\n const locationcalcExpand = new Expand({\r\n collapseTooltip: \"Collapse Location Selection Tool\",\r\n expandTooltip: \"Expand Location Selection Tool\",\r\n view: config.view,\r\n //content: node,\r\n content: domEle[0],\r\n //container: this.buffercalccontainer,\r\n expandIconClass: \"esri-icon-applications\",\r\n expanded:true\r\n }); \r\n config.view.ui.add(locationcalcExpand, \"bottom-left\"); \r\n this.props.widgetRenderCallBack(\"MultiLocationSelector\"); \r\n const inThis = this;\r\n watchUtils.pausable(locationcalcExpand, \"expanded\", function (newValue, oldValue) { \r\n inThis.props.onexpanded(locationcalcExpand, newValue);\r\n });\r\n }\r\n });\r\n }\r\n \r\n bufferCalcLayer(){\r\n return (this.props.options && this.props.options.LayerOptions.length > 0) ? this.props.options.LayerOptions : {};\r\n }\r\n \r\n render() {\r\n return (\r\n <div id=\"multiLocationSelectorParent\" style={{order:this.props.order}}>\r\n <div id=\"multiLocationSelector\" className=\"map-locationselector-container\">\r\n <CCompMultiLocationBufferCalc {...this.props} \r\n bufferCalcLayer = {this.bufferCalcLayer()} \r\n canEdit={this.props.canEdit} \r\n parentcal=\"multilocation\" \r\n coordinates={this.props.coordinates}\r\n multipleLocationHandler={this.props.multipleLocationHandler}/> \r\n </div>\r\n </div>\r\n \r\n );\r\n }\r\n\r\n}\r\n\r\nexport default CMultiLocationSelector;","import React, { Component } from 'react';\r\nimport ReactDOM from \"react-dom\";\r\nimport { loadModules } from 'esri-loader';\r\nclass CPrint extends Component {\r\n constructor(props) {\r\n super(props); \r\n this.state = { \r\n view: this.props.view\r\n } \r\n this.startup(\r\n this.props\r\n ); \r\n } \r\n startup = (config) => {\r\n loadModules([\r\n \"esri/core/watchUtils\",\r\n \"esri/widgets/Expand\",\r\n \"esri/widgets/Print\" \r\n ]).then(([watchUtils, Expand, Print]) => { \r\n let prntServiceURL = \"\";\r\n if(config.options && config.options.printOptions && config.options.printOptions.serviceURL)\r\n prntServiceURL =config.options.printOptions.serviceURL;\r\n\r\n var print = new Print({\r\n view: config.view,\r\n // specify your own print service\r\n printServiceUrl: prntServiceURL\r\n });\r\n\r\n this.printcontainer = ReactDOM.findDOMNode(this); \r\n const printExpand = new Expand({\r\n collapseTooltip: \"Collapse Print Widget\",\r\n expandTooltip: \"Expand Print Widget\",\r\n view: config.view,\r\n content: print,\r\n container: this.printcontainer\r\n });\r\n config.view.ui.add(printExpand, \"top-right\");\r\n this.props.widgetRenderCallBack(\"Print\");\r\n const inThis = this;\r\n watchUtils.pausable(printExpand, \"expanded\", function (newValue, oldValue) { \r\n inThis.props.onexpanded(printExpand, newValue);\r\n });\r\n });\r\n }\r\n \r\n\r\n render() {\r\n return (\r\n <div className=\"Print-box\" style={{order:this.props.order}}>\r\n \r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default CPrint;","import React, { Component } from 'react';\r\nimport ReactDOM from \"react-dom\";\r\nimport { loadModules } from 'esri-loader';\r\nimport { TaxParcelTask, TaxParcelTaskFeatureLayer } from '../eps/taxParcelTask';\r\nimport { MapConstants } from '../util/mapConstants';\r\nimport { GISLookupTask } from '../eps/GISLookupTask';\r\nimport { QueryTaskExecuteWithrelation,QueryTaskExecuteZoomToReponse,QueryTaskExecuteZoomAddLayerToResponse } from '../util/queryTask';\r\nimport { getEnvVariable } from '../../../../modules/environmentalList';\r\n//import { all } from 'ramda';\r\n\r\n\r\nclass CSearch extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n view: this.props.view,\r\n options: this.props.options,\r\n approachaddress: ''\r\n }\r\n this.mapConstants = new MapConstants();\r\n this.startup(\r\n this.props\r\n );\r\n }\r\n\r\n\r\n startup = (config) => {\r\n loadModules([\r\n \"esri/core/watchUtils\",\r\n \"esri/widgets/Expand\",\r\n \"esri/widgets/Search\",\r\n \"esri/tasks/Locator\",\r\n \"esri/layers/FeatureLayer\"\r\n ]).then(([watchUtils, Expand, Search, Locator, FeatureLayer]) => {\r\n let modulekey = getEnvVariable('ModuleKey');\r\n const inThis = this;\r\n let searchSources=[];\r\n let searchSuffix = (config.options && config.options.searchOptions && config.options.searchOptions.State) ? \" \"+config.options.searchOptions.State : \" \"\r\n // Address search always on top\r\n searchSources.push({\r\n locator: new Locator(\"//geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer\"), \r\n suffix: `${searchSuffix},USA`,\r\n countryCode:\"USA\",\r\n singleLineFieldName: \"SingleLine\",\r\n outFields: [\"Addr_type\"],\r\n name: \"Address Search\",\r\n placeholder: \"Address Search\",\r\n withinViewEnabled: true,\r\n });\r\n\r\n if(config.options.SearchLayerListOptions && config.options.SearchLayerListOptions.length>0)\r\n {\r\n config.options.SearchLayerListOptions.forEach(function (searchLayer) {\r\n let searchresprefix = searchLayer.title.slice(0, 6) +\"..\";\r\n let searchfeatureLayer = new FeatureLayer({\r\n url: searchLayer.url,\r\n id:searchLayer.id,\r\n outFields: [\"*\"],\r\n popupTemplate: {\r\n // autocasts as new PopupTemplate()\r\n title: searchLayer.SearchField+\": {\"+searchLayer.SearchField+\"} </br>{\"+searchLayer.SearchField+\"}\",\r\n overwriteActions: true\r\n }\r\n });\r\n searchSources.push({\r\n featureLayer: searchfeatureLayer,\r\n searchFields: [searchLayer.SearchField],\r\n displayField: searchLayer.SearchField,\r\n exactMatch: false,\r\n outFields: [\"*\"],\r\n name: searchLayer.title+\" Search\",\r\n placeholder: searchLayer.SearchField+\" Search\",\r\n suggestionsEnabled: true,\r\n minSuggestCharacters: 0,\r\n resultGraphicEnabled: false,\r\n withinViewEnabled: true,\r\n //suggestionTemplate: searchLayer.SearchField //searchresprefix + \"{\"+searchLayer.SearchField+\"}\",\r\n })\r\n });\r\n }\r\n this.searchcontainer = ReactDOM.findDOMNode(this);\r\n const search = new Search({\r\n view: config.view,\r\n includeDefaultSources: false,\r\n sources:searchSources,\r\n searchAllEnabled: false,\r\n //container: this.searchcontainer\r\n //locationEnabled : true\r\n });\r\n search.viewModel.defaultSymbol = {\r\n type: \"picture-marker\",\r\n url: \"/dist/images/pin-icon.jpg\",\r\n size: 24,\r\n width: 24,\r\n height: 24,\r\n xoffset: 0,\r\n yoffset: 0\r\n };\r\n search.on(\"search-start\", function (event) {\r\n //console.log('search-start') \r\n });\r\n\r\n search.on(\"search-focus\", function(event){\r\n //console.log(\"Search input textbox is focused.\");\r\n inThis.setInfoMessage(event); \r\n });\r\n\r\n search.viewModel.on(\"suggest-start\", function (event) {\r\n //console.log('suggest-start');\r\n inThis.setLoadingMessage(event, true);\r\n });\r\n search.viewModel.on(\"suggest\", function (event) {\r\n //console.log('suggest')\r\n });\r\n search.on(\"search-complete\", function (event) {\r\n //console.log('search-complete')\r\n });\r\n search.viewModel.on(\"select-result\", function (event) {\r\n //console.log('search-result')\r\n //inThis.QueryTaxParcel(\"all\", true);\r\n let approachaddress = (event && event.result) ? event.result.name : \"\"\r\n inThis.setState({ approachaddress : approachaddress } , () =>{\r\n //First default address search\r\n if (event.target.activeSourceIndex === 0){\r\n inThis.AddressSearchForLayers(event.result.feature)\r\n }else{\r\n inThis.setLoadingMessage(event, false);\r\n inThis.presentTaxLotLayerWithRenderer(event.result.feature)\r\n }\r\n })\r\n });\r\n /*\r\n search.goToOverride = function (view, goToParams) {\r\n return view.goTo(goToParams.target, goToParams.options);\r\n };\r\n */\r\n search.viewModel.allSources.on(\"change\", ({ item }) => {\r\n //console.log(item)\r\n })\r\n\r\n const searchExpand = new Expand({\r\n collapseTooltip: \"Collapse Search\",\r\n expandTooltip: \"Expand Search\",\r\n view: config.view,\r\n content: search\r\n });\r\n config.view.ui.add(searchExpand, \"top-right\");\r\n inThis.props.widgetRenderCallBack(\"Search\")\r\n\r\n\r\n watchUtils.pausable(searchExpand, \"expanded\", function (newValue, oldValue) {\r\n inThis.props.onexpanded(searchExpand, newValue);\r\n });\r\n let mapType = config && config.options.LayerOptionsConfig ? config.options.LayerOptionsConfig.MapType : [];\r\n\r\n if((modulekey == 'AMES' || modulekey == 'MPS' || modulekey == 'UPS') && mapType.includes(\"A\")){\r\n config.view.watch('zoom', (newValue, oldValue, property, object) => this.onZoomLevelChange(newValue, oldValue, property, object, this));\r\n }\r\n \r\n });\r\n }\r\n\r\n setInfoMessage(event){ \r\n //console.log('Info message started', event, '-',event.target.activeSource.name)\r\n if(this.searchcontainer){\r\n if(event && event.target.activeSource && event.target.activeSource.name)\r\n var parentNodes = document.getElementsByClassName('esri-ui');\r\n if(parentNodes[0]){\r\n var childlable = parentNodes[0].querySelector(\".Search-box-layerInfo-label\");\r\n if(childlable){\r\n childlable.innerHTML = \"selected layer: \"+ event.target.activeSource.name;\r\n }else{\r\n let search_info = this.searchcontainer.getElementsByClassName(\"Search-box-layerInfo\");\r\n //let search_infolbl = this.searchcontainer.getElementsByClassName(\"Search-box-layerInfo-label\");\r\n //search_infolbl[0].innerHTML = \"Selected:\"+ event.target.activeSource.name;\r\n //search_info[0].innerHTML = search_infolbl[0];\r\n search_info[0].style.display = \"inline-block\";\r\n parentNodes[0].prepend(search_info[0]);\r\n }\r\n } \r\n }\r\n }\r\n\r\n setLoadingMessage(event, isSet){\r\n let parentNodes = document.getElementsByClassName('esri-ui');\r\n let childlable = parentNodes[0].querySelector(\".Search-box-layerInfo-label\"); \r\n parentNodes[0].querySelector(\".Search-box-layerInfo-label\").innerHTML.replace(\"Searching data from\", \"\");\r\n let lblInnerHTML = parentNodes[0].querySelector(\".Search-box-layerInfo-label\").innerHTML; \r\n lblInnerHTML = lblInnerHTML.replace(\"Searching data from \", \"\");\r\n if(childlable){\r\n if(isSet){ \r\n parentNodes[0].querySelector(\".Search-box-layerInfo-label\").innerHTML = \"Searching data from \" + lblInnerHTML;\r\n }else{\r\n parentNodes[0].querySelector(\".Search-box-layerInfo-label\").innerHTML = lblInnerHTML;\r\n }\r\n }\r\n }\r\n\r\n onZoomLevelChange(newValue, oldValue, property, object, inthis){\r\n // //console.log(\"New value: \", newValue,\r\n // \"<br>Old value: \", oldValue,\r\n // \"<br>Watched property: \", property,\r\n // \"<br>Watched object: \", object);\r\n if(newValue > 14){\r\n //console.log(inthis, \"<br> Extent: \", inthis.props.view.extent)\r\n loadModules([\r\n \"esri/Graphic\",\r\n \"esri/geometry/Point\",\r\n ]).then(([Graphic, Point]) => {\r\n let queryEXp = this.props.options && this.props.options.tasks ? this.props.options.tasks.TaxParcels.queryExpression : '';\r\n var graphic = new Graphic({\r\n geometry: new Point({\r\n x: object.center.longitude,\r\n y: object.center.latitude\r\n }),\r\n attributes: { MapTaxlot : queryEXp }\r\n })\r\n inthis.AddressSearchForZoom(graphic);\r\n })\r\n }\r\n }\r\n\r\n QueryForCountyInformationByLayers(options, feature) {\r\n let inThis = this\r\n\r\n let taxlayersinformation = options.CountyLayerOptions;\r\n let allPromise = []\r\n if (taxlayersinformation && taxlayersinformation.length > 0) {\r\n for (var i = 0; i < taxlayersinformation.length; i++) {\r\n let eachpromise = this.QueryTaskPromise(taxlayersinformation[i], \"1=1\", \"\", feature)\r\n allPromise.push(eachpromise);\r\n }\r\n }\r\n Promise.all(allPromise).then((data) => {\r\n //console.log('promise data out for finding taxlot layer ', data);\r\n let layermatch = data.filter(a => a.count && a.count > 0)\r\n if (layermatch && layermatch.length > 0) {\r\n let layeraddressed = data.filter(a => a.count && a.count > 0)[0];\r\n let sourcetaxloturl = layeraddressed.sourcetaxloturl;\r\n //console.log(sourcetaxloturl);\r\n if (sourcetaxloturl) {\r\n // this.afterSearch(sourcetaxloturl, ['all'], geom, null)\r\n this.presentTaxLotLayerWithRenderer(sourcetaxloturl, feature);\r\n }\r\n }\r\n //Added condition for KEPT not to pass taxlot url\r\n else{\r\n //console.log('Search geom', feature);\r\n //this.afterSearch(\"\", ['all'], geom, null)\r\n }\r\n })\r\n }\r\n\r\n AddressSearchForZoom(feature) {\r\n let inThis = this\r\n let allPromise = [];\r\n let allCountyTaxlotLayers = this.state.options.CountyLayerOptions;\r\n if (allCountyTaxlotLayers && allCountyTaxlotLayers.length > 0) {\r\n for (var i = 0; i < allCountyTaxlotLayers.length; i++) {\r\n let eachpromise = this.QueryTaskPromise(allCountyTaxlotLayers[i], null, \"\", feature)\r\n allPromise.push(eachpromise);\r\n }\r\n }\r\n Promise.all(allPromise).then((data) => {\r\n let layermatch = data.filter(a => a.count && a.count > 0)\r\n if (layermatch && layermatch.length > 0) {\r\n let layeraddressed = data.filter(a => a.count && a.count > 0)[0];\r\n let sourcetaxloturl = (layeraddressed && layeraddressed.sourcetaxloturl) ? layeraddressed.sourcetaxloturl : null;\r\n if (sourcetaxloturl) {\r\n //console.log('source taxlot found..', feature, sourcetaxloturl);\r\n let customfeature = feature;\r\n if(feature && feature.layer)\r\n customfeature.layer.url = sourcetaxloturl;\r\n else\r\n customfeature.layer = { url : sourcetaxloturl};\r\n\r\n inThis.presentTaxLotLayerWithRenderer(customfeature, false);\r\n }\r\n }\r\n }).then((error) => {\r\n //console.log('promise all after search ----' + error);\r\n })\r\n }\r\n\r\n\r\n AddressSearchForLayers(feature) {\r\n let inThis = this\r\n let allPromise = [];\r\n let allCountyTaxlotLayers = this.state.options.CountyLayerOptions;\r\n if (allCountyTaxlotLayers && allCountyTaxlotLayers.length > 0) {\r\n for (var i = 0; i < allCountyTaxlotLayers.length; i++) {\r\n let eachpromise = this.QueryTaskPromise(allCountyTaxlotLayers[i], null, \"\", feature)\r\n allPromise.push(eachpromise);\r\n }\r\n }\r\n Promise.all(allPromise).then((data) => {\r\n let layermatch = data.filter(a => a.count && a.count > 0)\r\n if (layermatch && layermatch.length > 0) {\r\n let layeraddressed = data.filter(a => a.count && a.count > 0)[0];\r\n let sourcetaxloturl = (layeraddressed && layeraddressed.sourcetaxloturl) ? layeraddressed.sourcetaxloturl : null;\r\n if (sourcetaxloturl) {\r\n //console.log('source taxlot found..', feature, sourcetaxloturl);\r\n let customfeature = feature;\r\n if(feature && feature.layer)\r\n customfeature.layer.url = sourcetaxloturl;\r\n else\r\n customfeature.layer = { url : sourcetaxloturl};\r\n\r\n inThis.presentTaxLotLayerWithRenderer(customfeature);\r\n }\r\n }\r\n }).then((error) => {\r\n //console.log('promise all after search ----' + error);\r\n })\r\n }\r\n\r\n presentTaxLotLayerWithRenderer(feature, zoomonly= true){\r\n //console.log('presentTaxLotLayerWithRenderer----------');\r\n if(feature && feature.layer && feature.layer.url){\r\n let config = { url: feature.layer.layerId ? `${feature.layer.url}/${feature.layer.layerId}` : `${feature.layer.url}`}\r\n QueryTaskExecuteZoomAddLayerToResponse(this.state.view,this.state.options, config, feature, this.mapConstants,\"SearchField\",zoomonly )\r\n .then(res => {\r\n if(this.props.setSearchLayerConfigData){\r\n this.props.setSearchLayerConfigData(config.url, feature)\r\n }\r\n // if(this.props.setDefaultSelectWidgetLayer)\r\n // this.props.setDefaultSelectWidgetLayer(config.url);\r\n //console.log(res);\r\n })\r\n }\r\n }\r\n\r\n QueryForInformationByLayers(Layeroptions, searchterm) {\r\n let inThis = this\r\n let allPromise = [];\r\n let querycondition = Layeroptions.SearchField+\" = '\" + searchterm + \"'\"\r\n let eachpromise = this.QueryTaskPromise(Layeroptions, querycondition, \"\", null)\r\n allPromise.push(eachpromise);\r\n Promise.all(allPromise).then((data) => {\r\n let layermatch = data.filter(a => a.count && a.count > 0)\r\n if (layermatch && layermatch.length > 0) {\r\n this.afterSearch(Layeroptions, [searchterm, 'all'], null, searchterm)\r\n }\r\n }).then((error) => {\r\n //console.log('promise all after search ----' + error);\r\n })\r\n }\r\n\r\n QueryForTaxLotInformationByLayers(options, searchterm) {\r\n let inThis = this\r\n let taxlayersinformation = options.CountyLayerOptions;\r\n let allPromise = [];\r\n let searchtermquery = searchterm.split('').join('%');\r\n let querycondition = \"MapTaxlot = '\" + searchterm + \"'\"\r\n if (taxlayersinformation && taxlayersinformation.length > 0) {\r\n for (var i = 0; i < taxlayersinformation.length; i++) {\r\n let eachpromise = this.QueryTaskPromise(taxlayersinformation[i], querycondition, \"\", null)\r\n allPromise.push(eachpromise);\r\n }\r\n }\r\n Promise.all(allPromise).then((data) => {\r\n let layermatch = data.filter(a => a.count && a.count > 0)\r\n if (layermatch && layermatch.length > 0) {\r\n let layeraddressed = data.filter(a => a.count && a.count > 0)[0];\r\n let sourcetaxloturl = (layeraddressed && layeraddressed.sourcetaxloturl) ? layeraddressed.sourcetaxloturl : null;\r\n if (sourcetaxloturl) {\r\n this.afterSearch(sourcetaxloturl, [searchterm, 'all'], null, searchterm)\r\n }\r\n }\r\n }).then((error) => {\r\n //console.log('promise all after search ----' + error);\r\n })\r\n }\r\n\r\n afterSearch(layerOptions, searchQueries, geom, searchterm) {\r\n //let searchQueries = [searchterm, 'all'];\r\n let allProm = [];\r\n if (searchQueries && searchQueries.length > 0) {\r\n for (var i = 0; i < searchQueries.length; i++) {\r\n allProm.push(this.ShowMapLayers(searchQueries[i],layerOptions, true, searchterm));\r\n\r\n }\r\n }\r\n Promise.all(allProm).then((data) => {\r\n this.GetMasterGISFieldsData(layerOptions, searchterm, geom);\r\n })\r\n\r\n }\r\n\r\n QueryTaskPromise(config, querycondition, spatialReference, inputgeom) {\r\n return new Promise((resolve, reject) => {\r\n loadModules([\r\n \"esri/tasks/support/Query\", \"esri/tasks/QueryTask\", \"esri/geometry/Point\", \"esri/geometry/SpatialReference\"\r\n ]).then(([Query, QueryTask, Point, SpatialReference]) => {\r\n const query = new Query();\r\n if(querycondition){\r\n if(config.defaultExpression)\r\n querycondition=(!querycondition || querycondition==\"()\" || querycondition==\"1=1\")?(config.defaultExpression):((\"(\"+config.defaultExpression+\")\")+\" and \"+querycondition)\r\n query.where = querycondition;\r\n }else{\r\n query.where = \"1=1\"\r\n }\r\n query.outFields = ['*'];\r\n query.spatialReference = spatialReference || 2992;\r\n //query.returnGeometry = false;\r\n query.outSpatialReference = spatialReference || 2992;\r\n //query.returnIdsOnly = false;\r\n\r\n if (inputgeom && inputgeom != null) {\r\n query.geometry = inputgeom.geometry;\r\n //query.spatialRelationship = \"intersects\";\r\n query.spatialRelationship = \"esriSpatialRelEnvelopeIntersects\";\r\n }\r\n\r\n const queryTask = new QueryTask({\r\n url: config.url\r\n });\r\n\r\n queryTask.executeForCount(query).then(\r\n count => {\r\n let response = {\r\n count: count,\r\n sourcetaxloturl: config.url\r\n }\r\n //response.sourcetaxloturl = config.url;\r\n resolve(response);\r\n }\r\n , error => {\r\n //console.log(\"WebMap: error\", error);\r\n resolve({});\r\n }\r\n );\r\n })\r\n });\r\n }\r\n\r\n\r\n GetMasterGISFieldsData(url, taxlotnumber, geom) {\r\n let lookupdata = this.props.options.MasterLookupFields\r\n let inThis = this;\r\n let approachaddress = this.state.approachaddress;\r\n //console.log('lookup data', lookupdata);\r\n if (lookupdata && lookupdata.length > 0) {\r\n\r\n if (geom) {\r\n GISLookupTask(this.props.options,geom, lookupdata).then((masterdataresponse) => {\r\n let mapinformation = {\r\n 'TAX_PARCEL_LAYER': url,\r\n 'TAX_PARCEL_IDS': taxlotnumber,\r\n 'APPROACH_ADDRESS': approachaddress,\r\n ...masterdataresponse\r\n }\r\n if(inThis.props.setStateMapInformation)\r\n inThis.props.setStateMapInformation(mapinformation);\r\n })\r\n } else {\r\n let queryExpression = \"MapTaxlot = '\" + taxlotnumber + \"'\"\r\n let config = { url: url }\r\n QueryTaskExecuteWithrelation(config, queryExpression, this.props.options.viewProperties.extent.spatialReference , null).then(\r\n response => {\r\n let geom = response.features[0].geometry;\r\n GISLookupTask(this.props.options,geom, lookupdata).then((masterdataresponse) => {\r\n let mapinformation = {\r\n 'TAX_PARCEL_LAYER': url,\r\n 'TAX_PARCEL_IDS': taxlotnumber,\r\n 'APPROACH_ADDRESS': approachaddress,\r\n ...masterdataresponse\r\n }\r\n if(inThis.props.setStateMapInformation)\r\n inThis.props.setStateMapInformation(mapinformation);\r\n })\r\n }\r\n )\r\n }\r\n }\r\n }\r\n\r\n\r\n render() {\r\n return (\r\n <div className=\"Search-box\" style={{order:this.props.order}}> \r\n <div className=\"Search-box-layerInfo\" style={{\"width\": \"100%\",\"color\": \"#01ff0c\", \"background\": \"#0000005e\", \r\n \"text-align\": \"center\",\"display\":\"none\"}}> \r\n <label className=\"Search-box-layerInfo-label\">selected layer: Address search</label> \r\n </div> \r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default CSearch;","import React, { Component } from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport {\r\n List,\r\n ListItem,\r\n ListItemText,\r\n ListItemIcon,\r\n IconButton,\r\n ListItemSecondaryAction\r\n} from \"@material-ui/core\";\r\nimport RootRef from \"@material-ui/core/RootRef\";\r\nimport { DragDropContext, Droppable, Draggable } from \"react-beautiful-dnd\";\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport BookmarkBorderIcon from '@material-ui/icons/BookmarkBorder';\r\nimport ShareIcon from '@material-ui/icons/Share';\r\n// fake data generator\r\nconst getItems = count =>\r\n Array.from({ length: count }, (v, k) => k).map(k => ({\r\n id: `item-${k}`,\r\n primary: `item ${k}`,\r\n secondary: k % 2 === 0 ? `Whatever for ${k}` : undefined\r\n }));\r\n\r\n// a little function to help us with reordering the result\r\nconst reorder = (list, startIndex, endIndex) => {\r\n const result = Array.from(list);\r\n const [removed] = result.splice(startIndex, 1);\r\n result.splice(endIndex, 0, removed);\r\n\r\n return result;\r\n};\r\n\r\nconst getItemStyle = (isDragging, draggableStyle) => ({\r\n // styles we need to apply on draggables\r\n ...draggableStyle,\r\n\r\n ...(isDragging && {\r\n background: \"rgb(235,235,235)\"\r\n })\r\n});\r\n\r\nconst getListStyle = isDraggingOver => ({\r\n //background: isDraggingOver ? 'lightblue' : 'lightgrey',\r\n});\r\n\r\nclass DndList extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n items: props.data\r\n };\r\n this.onDragEnd = this.onDragEnd.bind(this);\r\n }\r\n\r\n onDragEnd(result) {\r\n // dropped outside the list\r\n if (!result.destination) {\r\n return;\r\n }\r\n\r\n const items = reorder(\r\n this.state.items,\r\n result.source.index,\r\n result.destination.index\r\n );\r\n \r\n this.props.handleReorder(items);\r\n this.setState({\r\n items\r\n }); \r\n }\r\n\r\n // Normally you would want to split things out into separate components.\r\n // But in this example everything is just done in one place for simplicity\r\n render() {\r\n return (\r\n <DragDropContext onDragEnd={this.onDragEnd}>\r\n <Droppable droppableId=\"droppable\">\r\n {(provided, snapshot) => (\r\n <RootRef rootRef={provided.innerRef}>\r\n <List style={getListStyle(snapshot.isDraggingOver)}>\r\n {this.state.items.map((item, index) => (\r\n <Draggable key={item.OBJECTID} draggableId={item.OBJECTID} index={index}>\r\n {(provided, snapshot) => (\r\n <ListItem button onClick={(evt)=> {this.props.handleShow(evt, item)}} \r\n ContainerComponent=\"li\"\r\n ContainerProps={{ ref: provided.innerRef }}\r\n {...provided.draggableProps}\r\n {...provided.dragHandleProps}\r\n style={getItemStyle(\r\n snapshot.isDragging,\r\n provided.draggableProps.style\r\n )}\r\n >\r\n <ListItemIcon>\r\n <BookmarkBorderIcon />\r\n </ListItemIcon>\r\n <ListItemText\r\n primary={item.NAME}\r\n />\r\n <ListItemSecondaryAction>\r\n {/* { this.props.username == item.USERNAME && \r\n <IconButton edge=\"end\" \r\n style={item.SHARE == 'Y'? { color: '#00f708' }:{}}\r\n variant=\"outlined\"\r\n onClick={(evt)=> {this.props.handleShare(evt, item)}}>\r\n <ShareIcon />\r\n </IconButton>\r\n } */}\r\n { this.props.username == item.USERNAME && \r\n <IconButton edge=\"end\" aria-label=\"delete\" onClick={(evt)=> {this.props.handleTrash(evt, item)}}>\r\n <DeleteIcon />\r\n </IconButton>\r\n }\r\n </ListItemSecondaryAction>\r\n </ListItem>\r\n )}\r\n </Draggable>\r\n ))}\r\n {provided.placeholder}\r\n </List>\r\n </RootRef>\r\n )}\r\n </Droppable>\r\n </DragDropContext>\r\n );\r\n }\r\n}\r\n\r\nexport default DndList;","import FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Icon from '@material-ui/core/Icon';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Radio from '@material-ui/core/Radio';\r\nimport RadioGroup from '@material-ui/core/RadioGroup';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport SaveIcon from '@material-ui/icons/Save';\r\nimport { withStyles } from '@material-ui/styles';\r\nimport { loadModules } from 'esri-loader';\r\nimport PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport ReactDOM from \"react-dom\";\r\nimport { getEnvVariable } from \"../../../../modules/environmentalList\";\r\nimport DndList from './dndlist';\r\n\r\nconst styles = theme => ({\r\n button: {\r\n\r\n },\r\n containerbg: {\r\n backgroundColor: '#fff',\r\n width: '30em'\r\n },\r\n listing: {\r\n padding: '0.5em 0',\r\n height: \"20em\"\r\n },\r\n root: {\r\n\r\n },\r\n txtf: {\r\n width: '24em',\r\n padding: '0 1em 0 0'\r\n },\r\n highlight: { color: 'green[500]' },\r\n centeralign: { textAlign: \"center\", padding: \"2em 0\" },\r\n scrollList: { height: \"20em\" }\r\n});\r\n\r\nclass BookmarkControl extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.bcrdom = React.createRef();\r\n this.url = getEnvVariable('ArcGIS') + `/rest/services/AWS_KEPT_Test/Bookmarks/FeatureServer/0`;\r\n this.state = {\r\n options: this.props.options,\r\n choice: 'E',\r\n newgraphic: null,\r\n drawcounter: 0,\r\n allbookmarks: [],\r\n loading: true,\r\n highlight: false,\r\n choisemssage: 'Draw Box on Map for Bookmark',\r\n listupdated: new Date().getTime()\r\n }\r\n\r\n this.startup(\r\n this.props\r\n );\r\n }\r\n\r\n startup = (config) => {\r\n\r\n loadModules([\r\n \"esri/widgets/Expand\",\r\n \"esri/layers/GraphicsLayer\",\r\n \"esri/views/2d/draw/Draw\",\r\n \"esri/Graphic\",\r\n \"esri/geometry/Extent\", \"esri/layers/FeatureLayer\", \"esri/geometry/Polyline\",\r\n \"esri/geometry/support/webMercatorUtils\"\r\n ]).then(([Expand, GraphicsLayer, Draw, Graphic, Extent, FeatureLayer, Polyline, webMercatorUtils]) => {\r\n\r\n this.url = this.state.options.searchbookmarks.url ? this.state.options.searchbookmarks.url : this.url;\r\n this.Graphic = Graphic;\r\n this.Polyline = Polyline;\r\n this.Extent = Extent;\r\n this.webMercatorUtils = webMercatorUtils;\r\n this.sbcontainer = ReactDOM.findDOMNode(this);\r\n let defi = '';\r\n if (this.state.options.searchbookmarks.appname) {\r\n defi = defi + \" APPNAME ='\" + this.state.options.searchbookmarks.appname + \"'\";\r\n }\r\n if (this.state.options.searchbookmarks.username) {\r\n defi = defi + \" AND (USERNAME ='\" + this.state.options.searchbookmarks.username +\r\n \"' OR SHARE='Y' )\";\r\n } else {\r\n defi = defi + \" AND SHARE='Y' \";\r\n }\r\n\r\n this.bookmarkLayer = new FeatureLayer({\r\n id: \"bookmark_feature_layer\",\r\n url: this.url,\r\n outFields: [\"*\"],\r\n definitionExpression: defi,\r\n visible: false\r\n });\r\n\r\n this.glayer = new GraphicsLayer({ id: 'searchbookmarklyrid' });\r\n\r\n this.props.view.map.add(this.glayer);\r\n\r\n this.draw = new Draw({\r\n view: this.props.view\r\n });\r\n\r\n this.getAll();\r\n });\r\n }\r\n\r\n onSearchStart = () => {\r\n this.setState({\r\n newgraphic: null,\r\n newbookmarkname: null,\r\n saved: false,\r\n highlight: {}\r\n });\r\n\r\n var action = this.draw.create(\"rectangle\");\r\n action.on([\"vertex-add\", \"vertex-remove\", \"cursor-update\", \"redo\",\r\n \"undo\"\r\n ], this.updateVertices);\r\n action.on([\"draw-complete\"\r\n ], this.drawComplete);\r\n this.props.view.focus();\r\n }\r\n\r\n updateVertices = (event) => {\r\n // create a polyline from returned vertices\r\n const graphic = this.createGraphic(event);\r\n this.addtoDrawLayer(graphic);\r\n }\r\n\r\n createGraphic = (event, towebmarker, docenter) => {\r\n const vertices = event.vertices;\r\n\r\n if (vertices && vertices.length > 1) {\r\n let geometry = null;\r\n if (towebmarker) {\r\n geometry = new this.Extent({\r\n xmin: vertices[0][0],\r\n xmax: vertices[1][0],\r\n ymin: vertices[0][1],\r\n ymax: vertices[1][1],\r\n spatialReference: { wkid: 4326 }\r\n });\r\n geometry = this.webMercatorUtils.geographicToWebMercator(geometry)\r\n } else {\r\n geometry = new this.Extent({\r\n xmin: vertices[0][0],\r\n xmax: vertices[1][0],\r\n ymin: vertices[0][1],\r\n ymax: vertices[1][1],\r\n spatialReference: { wkid: this.props.options.viewProperties.extent.spatialReference }\r\n });\r\n }\r\n\r\n // a graphic representing the polyline that is being drawn\r\n let symbl = this.state.options.searchbookmarks.defaultSymbol;\r\n const graphic = new this.Graphic({\r\n geometry: geometry,\r\n symbol: symbl\r\n });\r\n\r\n return graphic;\r\n } else {\r\n return null;\r\n }\r\n }\r\n addtoDrawLayer(graphic, docenter) {\r\n this.glayer.removeAll();\r\n\r\n if (graphic) {\r\n this.glayer.add(graphic);\r\n if (docenter) this.props.view.goTo([graphic]);\r\n }\r\n }\r\n drawComplete = (event) => {\r\n var graphic = this.createGraphic(event, false, false);\r\n this.addtoDrawLayer(graphic, false);\r\n let counter = this.state.drawcounter + 1;\r\n let nme = this.state.options.searchbookmarks.defaultName ?\r\n this.state.options.searchbookmarks.defaultName : 'Bookmark #';\r\n this.setState({\r\n newgraphic: graphic,\r\n newbookmarkname: nme + counter,\r\n drawcounter: counter\r\n });\r\n\r\n }\r\n\r\n handleChoices = (event) => {\r\n let msg = this.state.options.searchbookmarks.defaultMessage ?\r\n this.state.options.searchbookmarks.defaultMessage :\r\n 'Draw Box on Map for Bookmark';\r\n if (event.target.value == 'S') {\r\n msg = 'Draw Box on Map for Search & Bookmark'\r\n\r\n }\r\n this.setState({\r\n choice: event.target.value,\r\n choisemssage: msg\r\n });\r\n }\r\n\r\n changeValue(e, type) {\r\n const value = e.target.value;\r\n const nextState = {};\r\n\r\n if (!value) {\r\n let err = 'Name is Empty.';\r\n nextState['noName'] = err\r\n } else {\r\n nextState[type] = value;\r\n }\r\n this.setState(nextState);\r\n }\r\n\r\n handleSaveBookmark = () => {\r\n if (this.state.newgraphic) {\r\n\r\n const name = this.state.newbookmarkname;\r\n const geometry = this.state.newgraphic.geometry;\r\n const mgeom = this.webMercatorUtils.webMercatorToGeographic(geometry);\r\n const paths = [[mgeom.xmin, mgeom.ymin], [mgeom.xmax, mgeom.ymax]];\r\n const line = new this.Polyline({ hasZ: false, hasM: false, paths: paths, spatialReference: { wkid: 4326 } });\r\n const graphic = new this.Graphic({\r\n geometry: line,\r\n attributes: {\r\n NAME: name,\r\n APPNAME: this.state.options.searchbookmarks.appname ?\r\n this.state.options.searchbookmarks.appname : '',\r\n SHARE: 'N',\r\n USERNAME: this.state.options.searchbookmarks.username\r\n }\r\n });\r\n this.addtoDrawLayer(null);\r\n this.addToLayer(graphic);\r\n }\r\n\r\n }\r\n deleteFromLayer(graphic) {\r\n let g = { ...graphic };\r\n delete g.extent;\r\n\r\n let todelete = new this.Graphic({ geometry: graphic.extent, attributes: g });\r\n this.setState({ loading: true }, () => {\r\n this.bookmarkLayer.applyEdits({\r\n deleteFeatures: [todelete],\r\n\r\n }).then((res) => {\r\n\r\n let bookmarks = [...this.state.allbookmarks];\r\n let idx = bookmarks.findIndex((x) => { return x.OBJECTID == g.OBJECTID })\r\n bookmarks.splice(idx, 1);\r\n this.setState({ loading: false, allbookmarks: bookmarks, listupdated: new Date().getTime() });\r\n })\r\n });\r\n\r\n\r\n }\r\n\r\n addToLayer(graphic) {\r\n this.setState({ loading: true }, () => {\r\n\r\n this.bookmarkLayer.applyEdits({\r\n addFeatures: [graphic],\r\n\r\n }).then((res) => {\r\n let added = res.addFeatureResults[0];\r\n\r\n let addedfinal = { OBJECTID: added.objectId, extent: graphic.geometry, ...graphic.attributes }\r\n let bookmarks = [...this.state.allbookmarks];\r\n\r\n bookmarks = bookmarks.concat([addedfinal]);\r\n\r\n this.setState({ loading: false, allbookmarks: bookmarks, newgraphic: null, newbookmarkname: null, listupdated: new Date().getTime() });\r\n })\r\n\r\n });\r\n\r\n\r\n }\r\n getAll() {\r\n\r\n let query = this.bookmarkLayer.createQuery();\r\n this.bookmarkLayer.queryFeatures(query).then((response) => {\r\n var features = response.features;\r\n features = features.map((q) => {\r\n return { extent: q.geometry, ...q.attributes }\r\n });\r\n\r\n this.setState({ loading: false, allbookmarks: features, listupdated: new Date().getTime() });\r\n });\r\n }\r\n componentDidMount() {\r\n this.node = ReactDOM.findDOMNode(this);\r\n }\r\n\r\n\r\n handleShow = (evt, data) => {\r\n const paths = data.extent.paths;\r\n const e = { vertices: paths[0] }\r\n var g = this.createGraphic(e, true, true);\r\n this.addtoDrawLayer(g, true);\r\n this.setState({\r\n highlight: data\r\n })\r\n }\r\n handleTrash = (evt, data) => {\r\n this.deleteFromLayer(data);\r\n }\r\n handleReorder = (data) => {\r\n let temp = [...data];\r\n this.setState({\r\n allbookmarks: temp,\r\n })\r\n }\r\n handleShare = (evt, data) => {\r\n let g = { ...data };\r\n delete g.extent;\r\n g.SHARE = g.SHARE == 'Y' ? 'N' : 'Y';\r\n data.SHARE = g.SHARE;\r\n let toupdate = new this.Graphic({ geometry: data.extent, attributes: g });\r\n this.setState({ loading: true }, () => {\r\n this.bookmarkLayer.applyEdits({\r\n updateFeatures: [toupdate],\r\n\r\n }).then((res) => {\r\n\r\n let bookmarks = [...this.state.allbookmarks];\r\n let idx = bookmarks.findIndex((x) => { return x.OBJECTID == g.OBJECTID })\r\n bookmarks.splice(idx, 1, data);\r\n\r\n this.setState({ loading: false, allbookmarks: bookmarks, listupdated: new Date().getTime() });\r\n })\r\n });\r\n }\r\n render() {\r\n const { classes } = this.props;\r\n if (this.state.loading) {\r\n return (<div className=\"searchbookmark-box\" ref={this.bcrdom} className={classes.containerbg}><h3 className={classes.centeralign} >Loading...</h3></div>)\r\n }\r\n return (\r\n <div className=\"searchbookmark-box\" ref={this.bcrdom} className={classes.containerbg} style={{ order: this.props.order }}>\r\n <div style={{ padding: '1em ' }}>\r\n <div>\r\n <h5>Bookmarks</h5>\r\n </div>\r\n <RadioGroup row aria-label=\"bookmarkChoices\" name=\"bookmarkChoices\" style={{ 'display': 'none' }}\r\n value={this.state.choice} onChange={this.handleChoices}>\r\n <FormControlLabel value=\"E\" control={<Radio />} label=\"Extent\" />\r\n <FormControlLabel value=\"S\" control={<Radio />} label=\"Search\" />\r\n </RadioGroup>\r\n <IconButton variant=\"outlined\"\r\n className={classes.button}\r\n onClick={this.onSearchStart} > <Icon className=\"esri-icon-sketch-rectangle\" /> </IconButton>\r\n <div style={{ padding: '0 0.5em ' }}> <p> {this.state.options.searchbookmarks ?\r\n this.state.options.searchbookmarks.defaultMessage :\r\n 'Draw Box on Map for Bookmark'}</p></div>\r\n {this.state.newgraphic &&\r\n (<form className={classes.root} noValidate autoComplete=\"off\">\r\n <TextField\r\n hintText=\"Enter Name\"\r\n floatingLabelText=\"Name\"\r\n className={classes.txtf}\r\n type=\"text\"\r\n name=\"newbookmarkname\"\r\n errorText={this.state.noName}\r\n defaultValue={this.state.newbookmarkname}\r\n onChange={e => this.changeValue(e, 'newbookmarkname')}\r\n />\r\n <IconButton edge=\"end\"\r\n variant=\"outlined\"\r\n onClick={this.handleSaveBookmark} >\r\n <SaveIcon />\r\n </IconButton>\r\n </form>)\r\n\r\n }\r\n\r\n <div className={classes.listing} style={{ overflow: 'auto' }} >\r\n {/* <ScrollArea horizontal={false} className={classes.scrollList}> */}\r\n <DndList data={this.state.allbookmarks} key={this.state.listupdated}\r\n username={this.state.options.searchbookmarks.username}\r\n appname={this.state.options.searchbookmarks.appname}\r\n highlight={this.state.highlight}\r\n highlightClass={classes.highlight}\r\n handleShare={this.handleShare.bind(this)}\r\n handleTrash={this.handleTrash.bind(this)}\r\n handleShow={this.handleShow.bind(this)} handleReorder={this.handleReorder.bind(this)}></DndList>\r\n {/* </ScrollArea> */}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nBookmarkControl.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n};\r\n\r\nexport default withStyles(styles)(BookmarkControl);","import React, { Component } from 'react';\r\nimport ReactDOM from \"react-dom\";\r\nimport { loadModules } from 'esri-loader';\r\nimport BookmarkBorderIcon from '@material-ui/icons/BookmarkBorder';\r\nimport { Paper } from '@material-ui/core';\r\nimport BookmarkControl from './bookmarkcontrol'\r\nclass SearchBookmark extends Component {\r\n constructor(props) {\r\n super(props); \r\n this.bcrdom = React.createRef();\r\n this.state = { \r\n view: this.props.view,\r\n options:this.props.options\r\n } \r\n\r\n this.startup(\r\n this.props\r\n ); \r\n } \r\n\r\n \r\n startup = (config) => {\r\n\r\n loadModules([\r\n \"esri/widgets/Expand\",\r\n \"esri/core/watchUtils\"\r\n ]).then(([Expand,watchUtils]) => {\r\n this.sbcontainer = ReactDOM.findDOMNode(this);\r\n const basemapExpand = new Expand({\r\n collapseTooltip: \"Collapse Search & Bookmark\",\r\n expandTooltip: \"Expand Search & Bookmark\",\r\n view: config.view,\r\n content: this.bcrdom.current.node,\r\n expandIconClass: 'esri-icon-bookmark'\r\n }); \r\n config.view.ui.add(basemapExpand, \"top-right\");\r\n this.props.widgetRenderCallBack(\"SearchBookmark\");\r\n const inThis = this;\r\n watchUtils.pausable(basemapExpand, \"expanded\", function (newValue, oldValue) { \r\n inThis.props.onexpanded(basemapExpand, newValue);\r\n\t\t\t\tif(!newValue)inThis.bcrdom.current.addtoDrawLayer(null)\r\n });\r\n });\r\n }\r\n\r\n\r\n render() {\r\n return (\r\n <BookmarkControl options={this.state.options.searchbookmarks} \r\n view={this.state.view} options={this.state.options} ref={this.bcrdom} style={{order:this.props.order}}></BookmarkControl>\r\n );\r\n }\r\n}\r\nexport default SearchBookmark","import React, { Component } from 'react';\r\nimport ReactDOM from \"react-dom\";\r\n\r\nimport { loadModules } from 'esri-loader';\r\nimport { GeometryEngineTask } from '../util/geometryEngineTask';\r\nimport Dropdown from '../../../modules/form/cformdropdown';\r\nimport { GISLookupTask, GISLookupTaskWithGeom } from '../eps/GISLookupTask';\r\nimport { ApplyEditsGeometry } from '../eps/applyEditsFeaturesTaskKEPT';\r\nimport { getEnvVariable } from '../../../../modules/environmentalList';\r\n\r\nclass CSelect extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n view: this.props.view,\r\n options: this.props.options,\r\n SelectLayerListOptions: this.props.options.SelectLayerListOptions,\r\n selectedLayerId: 0,\r\n mapConstants: this.props.mapConstants,\r\n spatialReference: this.props.spatialReference,\r\n tools: [\"point\", \"polygon\", \"rectangle\", \"circle\"],\r\n bufferdistance: null,\r\n SingleSelect: false,\r\n bufferunits: \"feet\",\r\n enableSave: false,\r\n selectedLayerOptions: {}\r\n }\r\n this.startup(\r\n this.props\r\n );\r\n this.counter = 1\r\n this.onSaveorUpdate = this.onSaveorUpdate.bind(this);\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (this.props.clearsketch != prevProps.clearsketch && this.layer) {\r\n this.layer.graphics.removeAll();\r\n }\r\n if (this.props.layerCustomFilters && this.props.SubModuleKey) {\r\n this.setDefaultSelectLayerByModule();\r\n }\r\n if (this.props.defaultSelectLayer && this.props.defaultSelectLayer != this.state.selectedLayerOptions.Url) {\r\n this.setDefaultSelectLayerByUrl(this.props.defaultSelectLayer);\r\n }\r\n if (this.props.options && this.props.options.tasks && this.props.options.tasks.TaxParcels &&\r\n this.state.selectedLayerOptions.Url != this.props.options.tasks.TaxParcels.url) {\r\n let defaulturl = this.state.options.tasks.TaxParcels.url;\r\n this.setDefaultSelectLayerByUrl(defaulturl);\r\n }\r\n }\r\n\r\n setDefaultSelectLayerByUrl(url) {\r\n if (url && Array.isArray(this.state.SelectLayerListOptions)) {\r\n let selectlayer = this.state.SelectLayerListOptions.find(a => a.Url.includes(url));\r\n let val = selectlayer ? selectlayer.Id : null;\r\n if (val)\r\n this.handleChange({ target: { value: val } })\r\n else\r\n console.log('No layer matching for the select widget records')\r\n\r\n //alert('No layer matching for the select widget records');\r\n }\r\n }\r\n\r\n setDefaultSelectLayerByModule() {\r\n let customfilter = this.props.layerCustomFilters;\r\n if (customfilter) {\r\n let layers = this.props.view.map.layers.filter(function (layer) {\r\n return layer.LayerOptions && (layer.LayerOptions.CanSelect == \"Y\"\r\n && layer.LayerOptions.Category.includes('S') && layer.LayerOptions.SelectionSubModules.includes(customfilter));\r\n });\r\n if (layers && layers.length > 0 && this.state.selectedLayerId != layers.items[0].LayerOptions.Id) {\r\n //this.setState({selectedLayerId : layers.items[0].LayerOptions.Id })\r\n this.handleChange({ target: { value: layers.items[0].LayerOptions.Id } })\r\n }\r\n }\r\n }\r\n\r\n RemoveNode = (clazzName) => {\r\n let node = this.selectcontainer.getElementsByClassName(clazzName);\r\n if (node !== null && node.length > 0)\r\n node[0].remove();\r\n\r\n }\r\n\r\n HideNode = (clazzName) => {\r\n let node = this.selectcontainer.getElementsByClassName(clazzName);\r\n if (node !== null && node.length > 0)\r\n node[0].style.display = \"none\";\r\n\r\n }\r\n\r\n ShowNode = (clazzName) => {\r\n let node = this.selectcontainer.getElementsByClassName(clazzName);\r\n if (node !== null && node.length > 0)\r\n node[0].style.display = \"inline-block\";\r\n\r\n }\r\n\r\n OnToolLoad = (Tools) => {\r\n this.state.view.popup.close();\r\n // esri-select__section esri-select__tool-section\r\n\r\n if (this.selectcontainer) {\r\n this.RemoveNode(\"esri-icon-undo\");\r\n this.RemoveNode(\"esri-icon-redo\");\r\n this.RemoveNode(\"esri-icon-map-pin\");\r\n this.RemoveNode(\"esri-icon-polyline\");\r\n\r\n let select_ToolBox_Widget_options = this.selectcontainer.getElementsByClassName(\"select_ToolBox_Widget_options\");\r\n let toolboxdom = this.selectcontainer.getElementsByClassName(\"esri-sketch esri-widget\")\r\n if (toolboxdom && toolboxdom.length > 0)\r\n toolboxdom[0].prepend(select_ToolBox_Widget_options[0]);\r\n\r\n var parentNodes = this.selectcontainer.getElementsByClassName(\"esri-sketch__section esri-sketch__tool-section\")\r\n let pointbuffer_Widget_options = this.selectcontainer.getElementsByClassName(\"pointbuffer_Widget_options\");\r\n let singleselection_Widget_options = this.selectcontainer.getElementsByClassName(\"singleselection_Widget_options\");\r\n let clearselection_Widget_options = this.selectcontainer.getElementsByClassName(\"clearselection_Widget_options\");\r\n if (parentNodes && parentNodes.length > 0) {\r\n parentNodes[1].append(singleselection_Widget_options[0]);\r\n parentNodes[1].append(pointbuffer_Widget_options[0]);\r\n parentNodes[1].append(clearselection_Widget_options[0]);\r\n }\r\n //this.RemoveNode(\"esri-sketch__button esri-icon-cursor\");\r\n if (Tools && Tools.indexOf(\"polygon\") === -1)\r\n this.HideNode(\"esri-icon-polygon\");\r\n else\r\n this.ShowNode(\"esri-icon-polygon\");\r\n\r\n if (Tools && Tools.indexOf(\"rectangle\") === -1)\r\n this.HideNode(\"esri-icon-checkbox-unchecked\");\r\n else\r\n this.ShowNode(\"esri-icon-checkbox-unchecked\");\r\n\r\n if (Tools && Tools.indexOf(\"circle\") === -1)\r\n this.HideNode(\"esri-icon-radio-unchecked\");\r\n else\r\n this.ShowNode(\"esri-icon-radio-unchecked\");\r\n\r\n if (Tools && Tools.indexOf(\"pointbuffer\") === -1)\r\n this.HideNode(\"pointbuffer_Widget_options\");\r\n else\r\n this.ShowNode(\"pointbuffer_Widget_options\");\r\n\r\n if (Tools && Tools.indexOf(\"point\") === -1)\r\n this.HideNode(\"singleselection_Widget_options\");\r\n else {\r\n\r\n this.ShowNode(\"singleselection_Widget_options\");\r\n if (this.props.SelectGeomInsteadOfDraw == true)\r\n this.onSingleSelect();//Default Selection is single\r\n\r\n }\r\n this.ShowNode(\"clearselection_Widget_options\");\r\n }\r\n\r\n }\r\n\r\n startup = (config) => {\r\n if (this.state.SelectLayerListOptions && this.state.SelectLayerListOptions.length > 0) {\r\n if (this.state.SelectLayerListOptions.length == 1) {\r\n this.state.selectedLayerOptions = this.state.SelectLayerListOptions[0];\r\n this.state.selectedLayerId = this.state.selectedLayerOptions.Id;\r\n }\r\n\r\n loadModules([\r\n \"esri/core/watchUtils\",\r\n \"esri/widgets/Expand\",\r\n \"esri/widgets/Sketch\",\r\n \"esri/widgets/Sketch/SketchViewModel\",\r\n \"esri/layers/GraphicsLayer\",\r\n \"esri/layers/FeatureLayer\"\r\n ]).then(([watchUtils, Expand, SelectTool, selectViewModel, GraphicsLayer, FeatureLayer]) => {\r\n\r\n this.layer = config.view.map.layers.find(function (layer) {\r\n return layer.title === \"Selected Graphices Layer\";\r\n });\r\n\r\n if (!this.layer) {\r\n this.layer = new GraphicsLayer({\r\n \"title\": \"Selected Graphices Layer\", listMode: 'hide'\r\n });\r\n }\r\n //this.state.graphicsLayer\r\n this.selectVM = new selectViewModel({\r\n //updateOnGraphicClick: false,\r\n pointSymbol: this.state.mapConstants.PointSymbolHidden,\r\n polylineSymbol: this.state.mapConstants.LineSymbol,\r\n polygonSymbol: this.state.mapConstants.PolygonNoFillSymbol,\r\n view: config.view,\r\n layer: this.layer,\r\n //updateOnGraphicClick:false\r\n });\r\n const selectTool = new SelectTool({\r\n layer: this.layer,\r\n viewModel: this.selectVM,\r\n availableCreateTools: this.state.tools\r\n });\r\n this.selectcontainer = ReactDOM.findDOMNode(this);\r\n const selectExpand = new Expand({\r\n expandIconClass: \"esri-icon-cursor expand-tour-cursor\",\r\n collapseTooltip: \"Collapse Select Tool\",\r\n expandTooltip: \"Expand Select Tool\",\r\n view: config.view,\r\n container: this.selectcontainer,\r\n content: selectTool\r\n });\r\n config.view.map.layers.add(this.layer, 1);\r\n config.view.ui.add(this.selectcontainer, \"top-right\");\r\n\r\n // Listen to selectViewModel's events.\r\n this.selectVM.on(\"create\", this.onGraphicCreate);\r\n this.selectVM.on(\"update\", this.onGraphicUpdate);\r\n this.selectVM.on(\"delete\", this.onGraphicdelete);\r\n watchUtils.pausable(this.selectVM, \"activeTool\", this.onActiveTool);\r\n this.props.widgetRenderCallBack(\"Select\");\r\n const inThis = this;\r\n watchUtils.pausable(selectExpand, \"expanded\", function (newValue, oldValue) {\r\n inThis.OnToolLoad(inThis.state.selectedLayerOptions != null ? inThis.state.selectedLayerOptions.SelectTools : inThis.state.tools);\r\n inThis.props.onexpanded(selectExpand, newValue);\r\n });\r\n this.OnToolLoad(this.state.selectedLayerOptions != null ? this.state.selectedLayerOptions.SelectTools : this.state.tools);\r\n });\r\n }\r\n }\r\n\r\n onActiveTool = (tooltype) => {\r\n if (this.state.selectedLayerId && this.state.selectedLayerId > 0) {\r\n if (tooltype != null) {\r\n this.layer.graphics.removeAll();\r\n }\r\n } else {\r\n //alert('Please select the layer');\r\n console.log('Please select the layer');\r\n }\r\n }\r\n\r\n onGraphicCreate = (event) => {\r\n this.state.view.popup.close();\r\n // event.stopPropagation();\r\n var flag = false;\r\n if (event.state === \"complete\") {\r\n if (this.props.view.zoom < 8) {\r\n //alert('Please zoom in further');\r\n this.layer.remove(event.graphic);\r\n } else {\r\n if (event.tool == \"point\" && this.state.SingleSelect)//adding buffer point\r\n {\r\n this.bufferGraphic(event, flag, 50, this.state.bufferunits)\r\n }\r\n else if (event.tool == \"point\" && this.state.bufferdistance)//adding buffer point\r\n {\r\n this.bufferGraphic(event, flag, this.state.bufferdistance, this.state.bufferunits)\r\n }\r\n else {\r\n this.onGraphicCreateComplete(event, flag);\r\n }\r\n }\r\n }\r\n }\r\n bufferGraphic(event, flag, bufferdistance, bufferunits) {\r\n const inthis = this;\r\n loadModules([\r\n \"esri/Graphic\",\r\n ]).then(([Graphic]) => {\r\n GeometryEngineTask({ \"geometries\": [event.graphic.geometry], \"type\": \"buffer\", \"distance\": bufferdistance, \"unit\": bufferunits }).then(\r\n GeomEngineresponse => {\r\n inthis.pointgraphic = event.graphic\r\n let g = new Graphic(GeomEngineresponse[0]);\r\n g.symbol = inthis.state.mapConstants.PolygonNoFillSymbol;\r\n event.graphic = g;\r\n inthis.layer.graphics.add(g);\r\n this.onGraphicCreateComplete(event, flag);\r\n },\r\n GeomEngineerror => {\r\n console.log(GeomEngineerror);\r\n });\r\n });\r\n }\r\n\r\n onGraphicCreateComplete(event, flag) {\r\n this.graphic = event.graphic;\r\n //Graphic fetch\r\n this.onAreaSelection()\r\n }\r\n onGraphicdelete = (event) => {\r\n this.graphic = null;\r\n this.onSaveorUpdate()\r\n }\r\n\r\n onGraphicUpdate = (event) => {\r\n this.state.view.popup.close();\r\n this.setState({ enableSave: true })\r\n this.graphic = event.graphics[0];\r\n /* if(event.state==\"cancel\"){\r\n this.graphic=null;\r\n this.onSaveorUpdate()\r\n }else{\r\n this.graphic = event.graphics[0];\r\n }*/\r\n }\r\n\r\n //Specific to KEPT for selecting multiple locations\r\n onAreaSelection(cleargraphic) {\r\n this.counter = this.counter + 1;\r\n let graphicJson = {}\r\n if (this.graphic)\r\n graphicJson = { counter: this.counter, type: this.graphic.geometry.type, graphic: this.graphic }\r\n else\r\n graphicJson = { counter: this.counter, cleargraphic: cleargraphic }\r\n if (this.props.onAreaSelection) {\r\n if (this.state.selectedLayerOptions)\r\n this.state.selectedLayerOptions.AutoSelect = false;\r\n\r\n if (this.state.SingleSelect) {\r\n if (this.state.selectedLayerOptions)\r\n this.state.selectedLayerOptions.AutoSelect = this.state.SingleSelect;\r\n\r\n this.removeGraphic(this.graphic);\r\n this.removeGraphic(this.pointgraphic);\r\n if (this.props.SelectGeomInsteadOfDraw == true)\r\n this.onSingleSelect();//Default Selection is single\r\n //this.setState({SingleSelect: false})\r\n }\r\n this.props.onAreaSelection(graphicJson, this.state.selectedLayerOptions);\r\n if (getEnvVariable('ModuleKey') == 'AEPS') {\r\n this.setGISLookUpFieldsData()\r\n }\r\n\r\n }\r\n }\r\n\r\n setGISLookUpFieldsData() {\r\n if (this.props.onSelectSaveorUpdate)\r\n this.props.onSelectSaveorUpdate([this.graphic], \"point\");\r\n }\r\n\r\n\r\n\r\n removeGraphic(graphic) {\r\n if (graphic) {\r\n this.layer.graphics.remove(graphic);\r\n }\r\n }\r\n handleChange(evt) {\r\n const { value } = evt.target;\r\n const selectedLayerId = value;\r\n const selectedLayerOptions = this.state.SelectLayerListOptions.find(res => { return res.Id === value });\r\n if (selectedLayerOptions != null && this.state.selectedLayerId != selectedLayerId) {\r\n this.setState({ selectedLayerId: selectedLayerId, selectedLayerOptions: selectedLayerOptions })\r\n this.onAreaSelection(true);\r\n this.OnToolLoad(selectedLayerOptions.SelectTools);\r\n }\r\n }\r\n updateState(event, inthis) {\r\n let name = event.target.name\r\n let val = event.target.value\r\n inthis.setState({ [name]: val })\r\n }\r\n\r\n onSaveorUpdate = () => {\r\n if (this.graphic !== null) {\r\n if (this.selectVM && this.layer) {\r\n this.selectVM.cancel()\r\n\r\n this.layer.graphics.add(this.graphic);\r\n this.onAreaSelection(false)\r\n }\r\n } else {\r\n this.onAreaSelection(true);\r\n }\r\n this.setState({ enableSave: false })\r\n }\r\n onBufferPoint = () => {\r\n if (this.state.bufferdistance)\r\n this.selectVM.create(\"point\");\r\n else\r\n alert(\"please enter Buffer Distance\")\r\n }\r\n onSingleSelect = () => {\r\n this.setState({ SingleSelect: true })\r\n this.selectVM.create(\"point\");\r\n }\r\n\r\n onClear = () => {\r\n if (this.props.onAreaClear)\r\n this.props.onAreaClear();\r\n }\r\n\r\n\r\n render() {\r\n return (\r\n <div className=\"select_ToolBox_Widget\" style={{ order: this.props.order }}>\r\n <div className=\"select_ToolBox_Widget_options\" style={{ \"padding\": \"5px\", \"Width\": \"150px\" }}>\r\n {this.state.SelectLayerListOptions.length > 1 && <span>\r\n <Dropdown label={'Select Layer'} edit={true} handleFieldChange={(evt) => this.handleChange(evt)} name=\"selectedLayerId\" value={this.state.selectedLayerId || 0}\r\n dropdownvalues={this.state.SelectLayerListOptions || []} transformProps={{\r\n \"value\": \"Id\",\r\n \"name\": \"title\"\r\n }} />\r\n </span>}\r\n </div>\r\n <span className=\"singleselection_Widget_options\" style={{ \"width\": \"max-content\" }}>\r\n <span className=\"singleselection_Widget_options\" style={{ \"width\": \"max-content\" }}>\r\n <span style={{ \"position\": \"relative\", \"cursor\": \"pointer\" }}>\r\n <button aria-label=\"Select\" className=\"esri-sketch__button esri-icon-applications\" title=\"Single Select\" style={{ \"display\": \"inline-block\" }} onClick={this.onSingleSelect}></button>\r\n </span>\r\n </span>\r\n </span>\r\n <span className=\"clearselection_Widget_options\" style={{ \"width\": \"max-content\" }}>\r\n <span className=\"clearselection_Widget_options\" style={{ \"width\": \"max-content\" }}>\r\n <span style={{ \"position\": \"relative\", \"cursor\": \"pointer\" }}>\r\n <button aria-label=\"Clear\" className=\"esri-sketch__button esri-icon-close-circled\" title=\"Clear Selection\" style={{ \"display\": \"inline-block\" }} onClick={this.onClear}></button>\r\n </span>\r\n </span>\r\n </span>\r\n <span className=\"pointbuffer_Widget_options\" style={{ \"width\": \"max-content\" }}>\r\n <span className=\"pointWithBuffer_Widget_options\" style={{ \"width\": \"max-content\" }}>\r\n <span style={{ \"position\": \"relative\", \"cursor\": \"pointer\" }}>\r\n <button aria-label=\"Draw a point (Buffer)\" className=\"esri-sketch__button esri-icon-radio-checked\" title=\"Draw a point (Buffer)\" style={{ \"display\": \"inline-block\" }} onClick={this.onBufferPoint}></button>\r\n </span>\r\n\r\n \r\n <input style={{ \"width\": \"120px\", \"height\": \"30px\" }} id=\"bufferdistance\" title=\"Buffer distance in feets\" className=\"bufferdistance\" type=\"number\" name=\"bufferdistance\" min=\"1\" placeholder=\"Buffer (Feets)\" value={this.state.bufferdistance} onChange={(event) => this.updateState(event, this)} />\r\n \r\n </span>\r\n {this.state.enableSave && <span style={{ \"position\": \"relative\", \"cursor\": \"pointer\" }} aria-label=\"Save\" title=\"Save\" role=\"button\">\r\n <button aria-label=\"Save\" className=\"esri-sketch__button esri-icon-save\" title=\"Save\" style={{ \"display\": \"inline-block\" }} onClick={this.onSaveorUpdate}></button>\r\n </span>\r\n }\r\n {/*<select style={{ \"width\": \"70px\", \"height\": \"30px\" }} id=\"bufferunits\" name=\"units\" className=\"bufferunits\" value={this.state.bufferunits} onChange={(event) => this.updateState(event, this)}>\r\n <option value=\"\">Units</option>\r\n <option value=\"feet\">Feet (ft)</option>\r\n <option value=\"meters\">Meters (m)</option>\r\n <option value=\"kilometers\">Kilometers (km)</option>\r\n <option value=\"miles\">Miles (mi)</option>\r\n </select>\r\n */}\r\n </span>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default CSelect;","import React, { Component } from 'react';\r\nimport ReactDOM from \"react-dom\";\r\n\r\nimport { loadModules } from 'esri-loader';\r\nimport { GeometryEngineTask } from '../util/geometryEngineTask';\r\n\r\n//AMES specific for pointing existing selection\r\nimport Radio from '@material-ui/core/Radio';\r\nimport RadioGroup from '@material-ui/core/RadioGroup';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormLabel from '@material-ui/core/FormLabel';\r\nimport Popover from '@material-ui/core/Popover';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Button from '@material-ui/core/Button';\r\nimport TextField from '@material-ui/core/TextField';\r\n//import { GetMasterLookUpValues, GetMasterGISFieldsData } from '../eps/lookupDataTaskKEPT'\r\nimport { GISLookupTask, GISLookupTaskWithGeom } from '../eps/GISLookupTask'\r\n\r\nimport { snackbarMessage, Confirmation } from '../../../actions';\r\nimport { bindActionCreators } from 'redux'\r\nimport { connect } from 'react-redux';\r\nimport { SketchDistanceValidatorTask } from '../eps/SketchDistanceValidator'\r\n\r\nclass CSketch extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n view: this.props.view,\r\n MapBussinessRules: this.props.options.MapBussinessRules,\r\n mapConstants: this.props.mapConstants,\r\n spatialReference: this.props.spatialReference,\r\n showPointType: false,\r\n pointType: '',\r\n ProposedPointGeom: [],\r\n ExistingPointGeom: [],\r\n enableTaxlot: false,\r\n anchorEl: null,\r\n showGraphicFieldEdit: false,\r\n anchorEl1: null,\r\n graphicFieldEditName: '',\r\n graphicFieldEditDesc: '',\r\n selectedGraphicType: ''\r\n }\r\n this.startup(\r\n this.props\r\n );\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (this.props.clearsketch != prevProps.clearsketch && this.layer) {\r\n this.layer.removeAll();\r\n }\r\n }\r\n\r\n\r\n\r\n RemoveNode = (clazzName) => {\r\n let node = this.sketchcontainer.getElementsByClassName(clazzName);\r\n if (node !== null && node.length > 0)\r\n node[0].remove();\r\n }\r\n\r\n RemoveTools = (Tools) => {\r\n if (Tools.indexOf(\"point\") === -1)\r\n this.RemoveNode(\"esri-icon-map-pin\");\r\n if (Tools.indexOf(\"polyline\") === -1)\r\n this.RemoveNode(\"esri-icon-polyline\");\r\n if (Tools.indexOf(\"polygon\") === -1) {\r\n this.RemoveNode(\"esri-icon-polygon\");\r\n this.RemoveNode(\"esri-sketch__button esri-icon-checkbox-unchecked\");\r\n this.RemoveNode(\"esri-sketch__button esri-icon-radio-unchecked\");\r\n }\r\n\r\n }\r\n startup = (config) => {\r\n loadModules([\r\n \"esri/core/watchUtils\",\r\n \"esri/widgets/Expand\",\r\n \"esri/widgets/Sketch\",\r\n \"esri/widgets/Sketch/SketchViewModel\",\r\n \"esri/layers/GraphicsLayer\",\r\n \"esri/layers/FeatureLayer\"\r\n ]).then(([watchUtils, Expand, Sketch, SketchViewModel, GraphicsLayer, FeatureLayer]) => {\r\n if (config.options.drawOptions.Tools && config.options.drawOptions.Tools.length > 0) {\r\n //if (1==1) {\r\n this.graphic = null;\r\n this.layer = config.view.map.layers.find(function (layer) {\r\n return layer.title === \"Sketch Layer\";\r\n });\r\n\r\n if (!this.layer) {\r\n this.layer = new GraphicsLayer({\r\n \"title\": \"Sketch Layer\", listMode: 'hide'\r\n });\r\n }\r\n //this.state.graphicsLayer\r\n this.sketchVM = new SketchViewModel({\r\n //updateOnGraphicClick: false,\r\n pointSymbol: (this.props.SubModuleKey == \"COLLISION\" || this.props.SubModuleKey == \"INVESTIGATION\") ? this.state.mapConstants.getSVGPointtSymbol() : this.state.mapConstants.ExistingPointSymbol,\r\n polylineSymbol: this.state.mapConstants.LineSymbol,\r\n polygonSymbol: this.state.mapConstants.PolygonFillSymbol,\r\n view: config.view,\r\n layer: this.layer\r\n });\r\n this.sketch = new Sketch({\r\n layer: this.layer,\r\n viewModel: this.sketchVM,\r\n availableCreateTools: config.options.drawOptions.Tools, //config.options.drawOptions.Tools\r\n creationMode: \"single\",\r\n defaultUpdateOptions: { tool: \"move\" }\r\n });\r\n this.sketch.on(\"delete\", this.onGraphicDelete);\r\n this.sketchcontainer = ReactDOM.findDOMNode(this);\r\n\r\n const sketchExpand = new Expand({\r\n collapseTooltip: \"Collapse Draw Tool\",\r\n expandTooltip: \"Expand Draw Tool\",\r\n view: config.view,\r\n container: this.sketchcontainer,\r\n content: this.sketch\r\n });\r\n config.view.map.layers.add(this.layer, (config.options.drawOptions.LayerIndex || 1));\r\n // watchUtils.whenDefinedOnce(this.sketchcontainer, \"ready\", function(evt){\r\n // console.info('sketch widget loaded ---------------');\r\n // alert('sketch loaded ')\r\n // });\r\n config.view.ui.add(this.sketchcontainer, \"top-right\");\r\n\r\n // Listen to sketchViewModel's events.\r\n this.sketchVM.on(\"create\", this.onGraphicCreate);\r\n this.sketchVM.on(\"update\", this.onGraphicUpdate);\r\n this.sketchVM.on(\"delete\", this.onGraphicDelete);\r\n watchUtils.pausable(this.sketchVM, \"activeTool\", this.onActiveTool);\r\n this.props.widgetRenderCallBack(\"Sketch\");\r\n const inThis = this;\r\n watchUtils.pausable(sketchExpand, \"expanded\", function (newValue, oldValue) {\r\n inThis.RemoveTools(config.options.drawOptions.Tools);\r\n inThis.props.onexpanded(sketchExpand, newValue);\r\n });\r\n // watchUtils.whenOnce(this.sketchVM, \"ready\",function(evt){\r\n // console.log(evt);\r\n // alert('Widget is ready to use')\r\n // })\r\n }\r\n });\r\n }\r\n\r\n onActiveTool = (tooltype) => {\r\n if (tooltype != null) {\r\n let fetchGeomType = this.props.fetchGeomType || []\r\n let isTwoWayPoint = (fetchGeomType.includes(\"E\") && fetchGeomType.includes(\"P\")) ? true : false;\r\n var isAllowMultiple = false;\r\n if (this.props.options.drawOptions.AllowMultiple) {\r\n if (tooltype == \"point\")\r\n isAllowMultiple = this.props.options.drawOptions.AllowMultiple.Points;\r\n else if (tooltype == \"polyline\")\r\n isAllowMultiple = this.props.options.drawOptions.AllowMultiple.Lines;\r\n else if (tooltype == \"polygon\" || tooltype == \"rectangle\" || tooltype == \"circle\")\r\n isAllowMultiple = this.props.options.drawOptions.AllowMultiple.Polygons;\r\n }\r\n //this.props.options.AllowMultiple !== true\r\n if (tooltype && (this.props.options.drawOptions.Tools.indexOf(tooltype) !== -1) && isAllowMultiple !== true && isTwoWayPoint !== true)\r\n this.layer.graphics.removeAll();// Remove as per Gemo Type\r\n\r\n if ((tooltype === \"point\" || tooltype == \"polyline\" || tooltype == \"polygon\" || tooltype == \"rectangle\" || tooltype == \"circle\") && isTwoWayPoint === true) {\r\n let anchorEl = ReactDOM.findDOMNode(this).getElementsByClassName(\"esri-sketch\")[0]\r\n let anchorEl1 = ReactDOM.findDOMNode(this).getElementsByClassName(\"sketch_ToolBox_Widget\")[0]\r\n this.setState({ anchorEl: anchorEl, anchorEl1: anchorEl1 })\r\n this.setPointTypeChange(this.state.pointType, true)\r\n } else if ((tooltype === \"point\" || tooltype == \"polyline\" || tooltype == \"polygon\" || tooltype == \"rectangle\" || tooltype == \"circle\") && isTwoWayPoint !== true) {\r\n this.setState({ pointType: fetchGeomType[0] })\r\n }\r\n } else { this.setState({ pointType: '' }) }\r\n\r\n }\r\n\r\n onGraphicCreate = (event) => {\r\n // event.stopPropagation(); \r\n var flag = false;\r\n if (event.state === \"complete\") {\r\n if (this.props.view.zoom < 15) {\r\n this.props.snackbarMessage('Please zoom in further', 'info');\r\n this.layer.remove(event.graphic);\r\n } else {\r\n if(this.props.options && Array.isArray(this.props.options.SketchValidationLayers) \r\n && this.props.options.SketchValidationLayers.length > 0 ){\r\n this.validateSketchDistance(event, flag); \r\n }else{\r\n this.onGraphicCreateComplete(event, flag);\r\n } \r\n }\r\n }\r\n this.checkForSaveorUpdate(flag, false);\r\n }\r\n\r\n\r\n validateSketchDistance(event, flag){\r\n SketchDistanceValidatorTask(this.props.options, event.graphic, this.props.options.SketchValidationLayers).then((gisres) => {\r\n if(gisres && Array.isArray(gisres)){\r\n let errLayers = [];\r\n let errText = \"\";\r\n gisres.forEach(function (lres) {\r\n console.log(lres.Layer.Name,'-----------------------',lres.ResponseCount);\r\n if(lres && lres.ResponseCount === 0){\r\n errLayers.push(lres.Layer);\r\n errText = errText + \"\"+lres.Layer.DisplayName+\"(\"+lres.Layer.ValidationDistance+\"ft) \"\r\n } \r\n });\r\n if(errLayers && errLayers.length > 0){\r\n this.props.snackbarMessage('Selected location(map pin) is beyond the allowed range of the '+errText , 'info');\r\n this.layer.remove(event.graphic);\r\n }else{\r\n this.onGraphicCreateComplete(event, flag);\r\n } \r\n }else{\r\n this.onGraphicCreateComplete(event, flag);\r\n }\r\n console.log(gisres)\r\n })\r\n }\r\n\r\n onGraphicCreateComplete(event, flag) {\r\n //Changing the second point color here : AMES\r\n if (event.tool && event.tool === \"point\") {\r\n console.log(event.graphic,\"Ponttttttttttttttttttttttttttttttttttt\")\r\n if (this.state.pointType === \"P\") {\r\n event.graphic.symbol = this.state.mapConstants.PointSymbol;\r\n this.state.ProposedPointGeom.push(event.graphic);\r\n } else {\r\n this.state.ExistingPointGeom.push(event.graphic)\r\n }\r\n }\r\n if (this.state.spatialReference) {\r\n console.log('spatialReference----', this.state.spatialReference)\r\n let graphicies = [event.graphic.geometry]\r\n GeometryEngineTask({\r\n \"geometries\": graphicies, \"spatialReference\": this.state.spatialReference, \"type\": \"project\"\r\n }).then(\r\n geomEngineResponse => {\r\n if (geomEngineResponse) {\r\n console.log('Projection after sketch ------------------', geomEngineResponse)\r\n }\r\n },\r\n geomEngineerror => {\r\n });\r\n flag = true;\r\n }\r\n\r\n if (this.state.MapBussinessRules) {\r\n let inthis = this;\r\n let graphicies = [event.graphic.geometry];\r\n console.log('spatialReference----', this.state.spatialReference)\r\n GeometryEngineTask({\r\n \"geometries\": graphicies, \"spatialReference\": this.state.spatialReference, MapBussinessRules: this.props.options.MapBussinessRules, ValidateOf: \"GEOMETRY_LENGTH\", \"type\": \"validateBussinessRules\", units: \"miles\"\r\n }).then(\r\n validateBussinessRulesResponse => {\r\n if (validateBussinessRulesResponse && validateBussinessRulesResponse.length > 0) {\r\n validateBussinessRulesResponse.forEach(vbr => {\r\n if (vbr.IsValidationFalied) {\r\n inthis.props.snackbarMessage(vbr.alertMessage.message, vbr.alertMessage.type);\r\n inthis.layer.remove(event.graphic);\r\n }\r\n });\r\n }\r\n },\r\n validateBussinessRuleseerror => {\r\n });\r\n }\r\n if (this.props.options && this.props.options.MasterLookupFields) {\r\n GISLookupTask(this.props.options, event.graphic, this.props.options.MasterLookupFields).then((gisres) => {\r\n if (this.props.setStateMapInformation)\r\n this.props.setStateMapInformation(gisres);\r\n })\r\n }\r\n //Graphic fetch\r\n if (this.props.hasMultiLocationSelector == true && this.props.onGraphicSelection) {\r\n this.props.onGraphicSelection(this.getSelectionData(event.graphic.geometry.type, event.graphic));\r\n //Remove no location selected geometry (Privously drawn geometry has location selection and remove it)\r\n let graphicitems = this.layer.graphics.items;\r\n let nolocationgraphics = graphicitems.filter((a, index) => (index + 1) != graphicitems.length && (typeof (a.attributes) === \"undefined\" || a.attributes === null));\r\n if (nolocationgraphics && Array.isArray(nolocationgraphics) && nolocationgraphics.length > 0) {\r\n nolocationgraphics.forEach(grph => {\r\n this.layer.graphics.remove(grph);\r\n });\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n onGraphicUpdate = (event) => {\r\n let currgraphic = event.graphics[0];\r\n this.graphic = currgraphic;\r\n if (event.state == \"cancel\" && this.props.onGraphicSelection && currgraphic.attributes) {\r\n if (this.props.hasMultiLocationSelector == true\r\n && this.props.options\r\n && Array.isArray(this.props.options.MultipleLocationData)) {\r\n let hasgraphic = this.layer.graphics.items.filter(a => a.attributes.OBJECTID == currgraphic.attributes.OBJECTID);\r\n let isprimary = this.props.options.MultipleLocationData.filter(a => a.ObjectId == currgraphic.attributes.OBJECTID && a.IsPrimary == 'Y')\r\n if (hasgraphic && hasgraphic.length <= 0 && isprimary.length > 0) {\r\n this.layer.graphics.add(this.graphic);\r\n this.props.snackbarMessage('Primary location cannot be deleted', 'error');\r\n }\r\n } else {\r\n this.props.Confirmation(this.onDelete, this.onCancelConfirmation, 'Are You sure you want to remove the map location?', true);\r\n }\r\n }\r\n else {\r\n this.checkForSaveorUpdate(false, false);\r\n let currentgraphicType = event.graphics[0].geometry.type\r\n if (currgraphic.attributes) {\r\n let name = currgraphic.attributes.Name\r\n let desc = currgraphic.attributes.Description\r\n //this.showEditTemplate(true, currentgraphicType, name, desc);\r\n }\r\n }\r\n }\r\n\r\n removeGraphic(graphic) {\r\n if (graphic) {\r\n this.layer.graphics.remove(graphic);\r\n }\r\n }\r\n\r\n onCancelConfirmation = () => {\r\n this.props.Confirmation(null, null, null, false);\r\n }\r\n\r\n onDelete = () => {\r\n this.props.Confirmation(null, null, null, false);\r\n }\r\n\r\n onGraphicDelete = (event) => {\r\n //alert(event)\r\n }\r\n\r\n\r\n //Specific to KEPT for selecting multiple locations\r\n getSelectionData(type, graphic) {\r\n if (type == 'point')\r\n return { type: type, OBJECTID: (graphic.attributes ? graphic.attributes.OBJECTID : -1), MasterTable_Id: (graphic.attributes ? graphic.attributes.MasterTable_Id : -1), latitude: graphic.geometry.latitude, longitude: graphic.geometry.longitude, graphic: graphic }\r\n if (type == 'polygon')\r\n return { type: type, OBJECTID: (graphic.attributes ? graphic.attributes.OBJECTID : -1), MasterTable_Id: (graphic.attributes ? graphic.attributes.MasterTable_Id : -1), latitude: graphic.geometry.centroid.latitude, longitude: graphic.geometry.centroid.longitude, graphic: graphic }\r\n if (type == 'polyline')\r\n return { type: type, OBJECTID: (graphic.attributes ? graphic.attributes.OBJECTID : -1), MasterTable_Id: (graphic.attributes ? graphic.attributes.MasterTable_Id : -1), latitude: graphic.geometry.extent.center.latitude, longitude: graphic.geometry.extent.center.longitude, graphic: graphic }\r\n if (type == 'multipoint')\r\n return { type: type, OBJECTID: (graphic.attributes ? graphic.attributes.OBJECTID : -1), MasterTable_Id: (graphic.attributes ? graphic.attributes.MasterTable_Id : -1), latitude: graphic.geometry.extent.center.latitude, longitude: graphic.geometry.extent.center.longitude, graphic: graphic }\r\n\r\n return {}\r\n }\r\n\r\n showEditTemplate(check, currgraphic, name, desc) {\r\n this.setState({\r\n showGraphicFieldEdit: check,\r\n selectedGraphicType: currgraphic,\r\n graphicFieldEditName: name,\r\n graphicFieldEditDesc: desc\r\n })\r\n }\r\n\r\n checkForSaveorUpdate = (eventflag, hideflag) => {\r\n let fetchGeomType = this.props.fetchGeomType || []\r\n let isTwoWayPoint = (fetchGeomType.includes(\"E\") && fetchGeomType.includes(\"P\")) ? true : false;\r\n if (isTwoWayPoint === true) {\r\n let hasProposedGeom = false;\r\n let hasExistsGeom = false;\r\n let svgPointtSymbol = this.state.mapConstants.getSVGPointtSymbol()\r\n this.layer.graphics.forEach(element => {\r\n if (element && (element.symbol.url === this.state.mapConstants.ExistingPointSymbol.url || (svgPointtSymbol && element.symbol.url === svgPointtSymbol.url))) {\r\n hasExistsGeom = true;\r\n } else if (element && element.symbol.url === this.state.mapConstants.PointSymbol.url) {\r\n hasProposedGeom = true;\r\n }\r\n });\r\n let flag = eventflag ? eventflag : this.layer.graphics !== null && this.layer.graphics.length > 0;\r\n if (hasProposedGeom === true || hasExistsGeom === true) {\r\n //Enable save button.(see above condition)\r\n flag = hideflag ? !hideflag : flag;\r\n } else {\r\n flag = false;\r\n }\r\n this.setState({\r\n enableSave: flag\r\n });\r\n } else {\r\n let flag = eventflag ? eventflag : this.layer.graphics !== null && this.layer.graphics.length > 0;\r\n flag = hideflag ? !hideflag : flag;\r\n this.setState({\r\n enableSave: flag\r\n });\r\n }\r\n }\r\n\r\n onSaveorUpdate = () => {\r\n //this.layer.graphics.items.filter(a => !a.attributes)\r\n if (this.layer.graphics !== null && this.layer.graphics.length > 0\r\n && this.props.hasMultiLocationSelector == true) {\r\n if (this.layer.graphics.items.filter(a => !a.attributes).length > 0) {\r\n this.props.snackbarMessage('Please select primary location for the geometry', 'error');\r\n return;\r\n }\r\n }\r\n this.setState({ enableSave: false });\r\n this.props.onSave(this.layer).then(\r\n response => {\r\n this.checkForSaveorUpdate(false, true);\r\n if (this.props.hasMultiLocationSelector) {\r\n this.layer.graphics.forEach(graphicTo => {\r\n if (graphicTo && graphicTo.attributes\r\n && graphicTo.attributes.MultipleLocations) {\r\n graphicTo.attributes.MultipleLocations = null;\r\n }\r\n })\r\n }\r\n },\r\n error => {\r\n console.log(\"onSaveorUpdate:: error:: \", error);\r\n }\r\n );\r\n }\r\n\r\n onTaxlotSelect = () => {\r\n //alert('Please populate taxlot information');\r\n }\r\n\r\n setPointTypeChange(value, show) {\r\n this.setState({\r\n ...this.state,\r\n pointType: value,\r\n showPointType: show\r\n })\r\n }\r\n\r\n pointTypeChange = (event) => {\r\n this.clearGraphicsTwoWay(event.target.value)\r\n this.setPointTypeChange(event.target.value, false)\r\n }\r\n\r\n onRequestClose = () => {\r\n this.setPointTypeChange(this.state.pointType, false)\r\n }\r\n\r\n clearGraphicsTwoWay(type) {\r\n if (type === \"P\") {\r\n\r\n //this.layer.graphics.removeMany(this.layer.graphics.filter(a => a.symbol === this.state.mapConstants.PointSymbol));\r\n this.layer.graphics.forEach(element => {\r\n if (element && element.symbol.url === this.state.mapConstants.PointSymbol.url) {\r\n this.layer.graphics.remove(element)\r\n }\r\n\r\n });\r\n } else if (type === \"E\") {\r\n //this.layer.graphics.removeMany(this.layer.graphics.filter(a => a.symbol === this.state.mapConstants.ExistingPointSymbol));\r\n this.layer.graphics.forEach(element => {\r\n if (element && element.symbol.url === this.state.mapConstants.ExistingPointSymbol.url) {\r\n this.layer.graphics.remove(element)\r\n }\r\n });\r\n }\r\n }\r\n\r\n saveGraphicFieldEdit(inthis) {\r\n if (inthis.layer.graphics !== null && inthis.layer.graphics.length > 0) {\r\n let graphic = inthis.layer.graphics.items.filter(g => { return g.geometry.type == inthis.state.selectedGraphicType })[0]\r\n if (graphic) {\r\n inthis.layer.graphics.items.filter(g => { return g.geometry.type == inthis.state.selectedGraphicType })[0].attributes.Name = inthis.state.graphicFieldEditName;\r\n inthis.layer.graphics.items.filter(g => { return g.geometry.type == inthis.state.selectedGraphicType })[0].attributes.Description = inthis.state.graphicFieldEditDesc;\r\n inthis.onSaveorUpdate();\r\n }\r\n }\r\n inthis.showEditTemplate(false, '', '', '');\r\n }\r\n\r\n render() {\r\n return (\r\n <div className=\"sketch_ToolBox_Widget\" style={{ display: 'flex', order: this.props.order }}>\r\n {\r\n this.state.enableSave &&\r\n <div aria-label=\"Save\" title=\"Save\" role=\"button\" tabIndex=\"0\" className=\"esri-widget--button\">\r\n <div className=\"sketch_ToolBox_save esri-icon-save\" onClick={() => this.onSaveorUpdate()}></div>\r\n </div>\r\n }\r\n {\r\n this.state.enableTaxlot &&\r\n <div aria-label=\"Taxlot\" title=\"Select Taxlot\" role=\"button\" tabIndex=\"1\" className=\"esri-widget--button\">\r\n <div className=\"sketch_ToolBox_polygon esri-icon-link\" onClick={this.onTaxlotSelect}></div>\r\n </div>\r\n }\r\n\r\n {\r\n this.state.showGraphicFieldEdit &&\r\n <div class=\"\">\r\n <Popover className=\"sketch-fieldeditor\"\r\n //id={id}\r\n open={this.state.showGraphicFieldEdit}\r\n anchorEl={this.state.anchorEl1}\r\n //onClose={handleClose}\r\n anchorOrigin={{\r\n vertical: 'center',\r\n horizontal: 'center',\r\n }}\r\n transformOrigin={{\r\n vertical: 'center',\r\n horizontal: 'center',\r\n }}\r\n onClose={() => this.showEditTemplate(false, '', '', '')}\r\n\r\n >\r\n <FormControl component=\"fieldset\" className=\"popover-custom\" style={{ padding: '5px', minWidth: '400px' }}>\r\n <div className=\"col\" slot=\"end\">\r\n <Button variant=\"contained\" color=\"primary\" onClick={() => this.saveGraphicFieldEdit(this)} >\r\n Update\r\n </Button>\r\n </div>\r\n <div className=\"col\">\r\n <TextField id=\"standard-basic\" label=\"Name\" value={this.state.graphicFieldEditName} onChange={(evt) => this.setState({ graphicFieldEditName: evt.target.value })} />\r\n </div>\r\n <div className=\"col\">\r\n <TextField\r\n id=\"standard-multiline-flexible\"\r\n label=\"Description\"\r\n multiline\r\n rowsMax={4}\r\n onChange={(evt) => this.setState({ graphicFieldEditDesc: evt.target.value })}\r\n value={this.state.graphicFieldEditDesc}\r\n />\r\n </div>\r\n </FormControl>\r\n\r\n\r\n </Popover>\r\n </div>\r\n }\r\n\r\n {\r\n this.state.showPointType \r\n // <div class=\"\">\r\n // <Popover className=\"sketch-twoway\"\r\n // //id={id}\r\n // open={this.state.showPointType}\r\n // anchorEl={this.state.anchorEl}\r\n // //onClose={handleClose}\r\n // anchorOrigin={{\r\n // vertical: 'bottom',\r\n // horizontal: 'left',\r\n // }}\r\n // transformOrigin={{\r\n // vertical: 'bottom',\r\n // horizontal: 'left',\r\n // }}\r\n // onClose={this.onRequestClose}\r\n // >\r\n // <FormControl component=\"fieldset\" className=\"popover-custom\" style={{ padding: '5px' }}>\r\n // <FormLabel component=\"legend\" style={{ padding: '5px' }}>Select type</FormLabel>\r\n // <RadioGroup aria-label=\"Selection\" name=\"Selection\" value={this.state.pointType} onChange={this.pointTypeChange}>\r\n // <FormControlLabel value=\"P\" control={<Radio />} label=\"Proposed\" />\r\n // <FormControlLabel value=\"E\" control={<Radio />} label=\"Existing\" />\r\n // </RadioGroup>\r\n // </FormControl>\r\n // </Popover>\r\n // </div>\r\n }\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage, Confirmation }, dispatch);\r\n}\r\n\r\nCSketch = connect(null, mapActions)(CSketch)\r\nexport default CSketch;","import { loadModules } from 'esri-loader';\r\n//import { GeometryEngineTask } from '../util/geometryEngineTask';\r\nimport { QueryTaskExecuteWithrelation, QueryTaskExecuteBufferWithrelation } from '../util/queryTask';\r\n\r\n\r\n\r\n/**\r\n * GIS fetch lookup using features\r\n * @param {*} features\r\n * @param {*} validationlayers\r\n */\r\nexport function SketchDistanceValidatorTask(config, features, validationlayers) {\r\n console.log('Sketch validation for layers *********', validationlayers)\r\n let geometries = [];\r\n\r\n //caluclating only on the single geom, need to change for multiple\r\n geometries.push(features)\r\n return new Promise((resolve, reject) => {\r\n if (validationlayers && validationlayers.length > 0) {\r\n let allPromises = [];\r\n\r\n validationlayers.forEach(function (layer) {\r\n // let FieldKey = layer.FieldKey;\r\n // let NameReference = layer.NameReference;\r\n // let ValueReference = layer.ValueReference;\r\n let ServiceUrl = layer.Url || layer.url;\r\n let BufferDistance = layer.ValidationDistance;\r\n\r\n let eachpromise = new Promise((resolve, reject) => {\r\n let gisFeatureLayer = { url:ServiceUrl, Token: layer.Token, TokenExpiration: layer.TokenExpiration }; \r\n let queryExpression = \"1=1\";\r\n let inputgeom;\r\n\r\n //verify geometries and get the center if multiple\r\n if (geometries && geometries.length > 1) {\r\n inputgeom = geometries[0];\r\n } else {\r\n inputgeom = geometries[0];\r\n }\r\n QueryTaskExecuteBufferWithrelation(gisFeatureLayer, queryExpression, config.viewProperties.extent.spatialReference, inputgeom, BufferDistance, \"feet\").then(\r\n response => { \r\n if (response && response.features && response.features.length > 0){\r\n resolve({\"Layer\": layer, \"ResponseCount\": response.features.length});\r\n }else{\r\n resolve({\"Layer\": layer, \"ResponseCount\": 0});\r\n }\r\n },\r\n error => {\r\n console.log(error);\r\n resolve({});\r\n }\r\n )\r\n });\r\n allPromises.push(eachpromise);\r\n })\r\n Promise.all(allPromises).then((data) => { \r\n resolve(data);\r\n });\r\n } else {\r\n console.log({ error: 'No geometries found to gis lookup task' })\r\n resolve({});\r\n }\r\n })\r\n}\r\n\r\n\r\n// export function UserAccessControlValidation(masterlookupdata){\r\n// try {\r\n// let profile = localStorage.getItem('profile') && JSON.parse(localStorage.getItem('profile'));\r\n// let isInternal = profile && profile.portal === \"I\"; \r\n\r\n// if (isInternal && profile.configType == 'S' && profile.moduleSiteAccess) {\r\n// let sites = Object.keys(profile.moduleSiteAccess);\r\n// if (Array.isArray(sites) && sites.length > 0) {\r\n// let siteid = masterlookupdata.find(a => a.FieldKey == \"SITE_GISID\")\r\n// return IsArrayIncludes(sites, masterlookupdata.find(a => a.FieldKey == \"SITE_GISID\").)\r\n// }\r\n// } else if (isInternal && profile.configType == 'D' && profile.moduleDistrictAccess) {\r\n// let districts = Object.keys(profile.moduleDistrictAccess);\r\n// if (Array.isArray(districts) && districts.length > 0) {\r\n// return \" District_Id in (\" + districts.join(\",\") + \")\";\r\n// }\r\n// } else if (isInternal && profile.configType == 'R' && profile.moduleRegionAccess) {\r\n// let regions = Object.keys(profile.moduleRegionAccess);\r\n// if (Array.isArray(regions) && regions.length > 0) {\r\n// return \" Region_Id in (\" + regions.join(\",\") + \")\";\r\n// }\r\n// } else if (!isInternal) {\r\n// return \" Owner ='\" + profile.modulePermissions[0].companyId + \"'\";\r\n// }\r\n \r\n// } catch (error) {\r\n// console.log(error);\r\n// }\r\n// }\r\n\r\n// export function IsArrayIncludes(currarr){\r\n// try { \r\n// return true;\r\n// } catch (error) {\r\n// console.log(error);\r\n// }\r\n// return false;\r\n// }\r\n\r\n\r\n","import React, { Component } from 'react';\r\nimport { loadModules } from 'esri-loader';\r\nimport ReactDOM from \"react-dom\";\r\nimport { Icon } from '@material-ui/core';\r\nimport { MapConstants } from '../util/mapConstants';\r\n\r\nclass CSelector extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n view: this.props.view,\r\n isSelected: false,\r\n highlightdata: [],\r\n highlighttaxlotdata: [],\r\n selectedTaxLots: [],\r\n primaryTaxLot: ''\r\n }\r\n this.startup(\r\n this.props\r\n );\r\n this.mapConstants = new MapConstants();\r\n }\r\n\r\n\r\n startup = (config) => {\r\n loadModules([\r\n \"esri/core/watchUtils\",\r\n \"esri/widgets/Widget\",\r\n \"esri/widgets/Sketch/SketchViewModel\"\r\n ]).then(([watchUtils, Widget, SketchViewModel]) => {\r\n let vm = new SketchViewModel();\r\n vm.view = config.view;\r\n //this.setState({ vm: vm });\r\n //watchUtils.init(config.view, \"sketch\", this.onChange);\r\n const node = ReactDOM.findDOMNode(this);\r\n config.view.ui.add(node, \"top-right\");\r\n });\r\n\r\n let objIndex = this.props.options.FieldsData.findIndex((obj => obj.Fieldkey == \"TAX_PARCEL_IDS\"));\r\n if (objIndex > 0) {\r\n let pretaxlotdata = this.props.options.FieldsData[objIndex].FieldValue\r\n if (pretaxlotdata && pretaxlotdata != \"\") {\r\n let predata = pretaxlotdata.split(\",\");\r\n this.setState({ selectedTaxLots: predata })\r\n // this.state.selectedTaxLots = predata\r\n }\r\n }\r\n\r\n let GeomObjIndex = this.props.options.FieldsData.findIndex((obj => obj.Fieldkey == \"TAX_PARCEL_IDS_GEOM\"));\r\n if (GeomObjIndex > 0) {\r\n let pretaxlotdatageom = this.props.options.FieldsData[GeomObjIndex].FieldValue\r\n if (pretaxlotdatageom && Array.isArray(pretaxlotdatageom) && pretaxlotdatageom.length > 0) {\r\n this.setState({ highlighttaxlotdata: pretaxlotdatageom })\r\n // this.state.highlighttaxlotdata = pretaxlotdatageom\r\n }\r\n }\r\n this.props.widgetRenderCallBack(\"TaxlotSelector\");\r\n let inThis = this;\r\n //Binding on click event on the map for selection\r\n config.view.on(\"click\", function (event) {\r\n let screenPoint = { x: event.x, y: event.y };\r\n\r\n //alert('selected taxlot button ---' +inThis.state.isSelected)\r\n // Only when user selected taxlot button-----\r\n if (inThis.state.isSelected) {\r\n // Search for graphics at the pointer clicked location\r\n config.view.hitTest(event).then(function (response) {\r\n //AMES specific highlighting the polygon\r\n //response.results[0].graphic.geometry.type\r\n if (response.results.length > 0) {\r\n const isPolygon = (response.results[0].graphic && response.results[0].graphic.geometry\r\n && response.results[0].graphic.geometry.type === \"polygon\");\r\n if (isPolygon) {\r\n loadModules([\r\n \"esri/layers/GraphicsLayer\"\r\n ]).then(([GraphicsLayer]) => {\r\n\r\n inThis.hightlightlayer = config.view.map.layers.find(function (layer) {\r\n return layer.title === \"Highlight Layer\";\r\n });\r\n\r\n if (!inThis.hightlightlayer) {\r\n inThis.hightlightlayer = new GraphicsLayer({\r\n \"title\": \"Highlight Layer\", listMode: 'hide'\r\n });\r\n config.view.map.layers.add(inThis.hightlightlayer, 0);\r\n }\r\n\r\n try {\r\n\r\n //let geometry = response.results[0].graphic.geometry;\r\n let graphic = response.results[0].graphic;\r\n let MapTaxlot = graphic.attributes.PIN || graphic.attributes.Taxlot;\r\n let primaryTaxLot = inThis.state.primaryTaxLot;\r\n\r\n if (graphic) {\r\n let existingtaxlotsgeom = inThis.getTaxlotsGeom()\r\n if (existingtaxlotsgeom && Array.isArray(existingtaxlotsgeom) && existingtaxlotsgeom.length > 0) {\r\n let preselection = []\r\n if (inThis.state.highlighttaxlotdata.length > 0) {\r\n preselection = inThis.state.highlighttaxlotdata.map(a => a.attributes.PIN)\r\n }\r\n existingtaxlotsgeom.forEach(each => {\r\n if (!preselection.includes(each.attributes.PIN)) {\r\n inThis.state.highlighttaxlotdata.push(each)\r\n }\r\n })\r\n //inThis.state.highlighttaxlotdata.concat(existingtaxlotsgeom);\r\n }\r\n\r\n //Adding graphics to highlight\r\n if (!inThis.state.highlighttaxlotdata.includes(graphic)) {\r\n inThis.state.highlighttaxlotdata.push(graphic);\r\n } else {\r\n const index = inThis.state.highlighttaxlotdata.indexOf(graphic);\r\n if (index > -1) {\r\n inThis.state.highlighttaxlotdata.splice(index, 1);\r\n }\r\n }\r\n\r\n let symbol = inThis.mapConstants.PolygonFillSymbol\r\n let secondarysymbol = inThis.mapConstants.PolygonFillSymbolSecondary\r\n let defaultsymbol = inThis.mapConstants.PolygonFillSymbolReset\r\n\r\n\r\n if (inThis.state.selectedTaxLots && inThis.state.selectedTaxLots.length == 0) {\r\n primaryTaxLot = MapTaxlot;\r\n } else {\r\n primaryTaxLot = inThis.state.selectedTaxLots[0];\r\n }\r\n\r\n\r\n if (!inThis.state.selectedTaxLots.includes(MapTaxlot)) {\r\n inThis.state.selectedTaxLots.push(MapTaxlot);\r\n } else {\r\n const index = inThis.state.selectedTaxLots.indexOf(MapTaxlot);\r\n if (index > -1) {\r\n inThis.state.selectedTaxLots.splice(index, 1);\r\n }\r\n }\r\n\r\n inThis.hightlightlayer.graphics.removeAll();\r\n inThis.state.highlighttaxlotdata.length > 0 && inThis.state.highlighttaxlotdata.map((eachgraphic, index) => {\r\n let eachTaxlot = eachgraphic.attributes.PIN;\r\n config.view.graphics.remove(eachgraphic); // make sure to remmove previous highlighted feature\r\n if (inThis.state.selectedTaxLots.includes(eachTaxlot)) {\r\n if (primaryTaxLot == eachTaxlot) //index === 0 &&\r\n eachgraphic.symbol = symbol;\r\n else\r\n eachgraphic.symbol = secondarysymbol\r\n } else {\r\n eachgraphic.symbol = defaultsymbol;\r\n }\r\n //eachgraphic.attributes.ishighlight = \"true\";\r\n\r\n inThis.hightlightlayer.graphics.add(eachgraphic);\r\n })\r\n //Adding taxparcels to the parent state\r\n if (inThis.props.addTaxParcels)\r\n inThis.props.addTaxParcels(inThis.state.selectedTaxLots.join())\r\n //document.getElementById(\"selectedTaxLots\").innerHTML = inThis.state.selectedTaxLots.join();\r\n inThis.setState({ isSelected: false, primaryTaxLot: primaryTaxLot, selectedTaxLots: inThis.state.selectedTaxLots })\r\n }\r\n\r\n } catch (e) {\r\n console.log(e);\r\n\r\n }\r\n\r\n })\r\n }\r\n }\r\n });\r\n }\r\n }.bind(this));\r\n }\r\n\r\n\r\n getTaxlotsGeom() {\r\n let GeomObjIndex = this.props.options.FieldsData.findIndex((obj => obj.Fieldkey == \"TAX_PARCEL_IDS_GEOM\"));\r\n if (GeomObjIndex > 0) {\r\n let pretaxlotdatageom = this.props.options.FieldsData[GeomObjIndex].FieldValue\r\n if (pretaxlotdatageom && Array.isArray(pretaxlotdatageom) && pretaxlotdatageom.length > 0) {\r\n this.setState({ highlighttaxlotdata: pretaxlotdatageom })\r\n // this.state.highlighttaxlotdata = pretaxlotdatageom\r\n }\r\n return pretaxlotdatageom\r\n }\r\n return []\r\n }\r\n\r\n getTaxlotsMapNumbers() {\r\n let objIndex = this.props.options.FieldsData.findIndex((obj => obj.Fieldkey == \"TAX_PARCEL_IDS\"));\r\n if (objIndex > 0) {\r\n let pretaxlotdata = this.props.options.FieldsData[objIndex].FieldValue\r\n if (pretaxlotdata && pretaxlotdata != \"\") {\r\n let predata = pretaxlotdata.split(\",\");\r\n this.setState({ selectedTaxLots: predata })\r\n // this.state.selectedTaxLots = predata\r\n }\r\n return pretaxlotdata\r\n }\r\n\r\n return []\r\n }\r\n\r\n onChange = (value) => {\r\n alert(value);\r\n\r\n };\r\n\r\n onSelect = (value) => {\r\n let preValue = this.state.isSelected\r\n this.setState({ isSelected: !preValue });\r\n\r\n };\r\n\r\n\r\n render() {\r\n\r\n const isSelectedClass = this.state.isSelected ? \"map-taxlot-btn map-selector-highlight\" : \"map-taxlot-btn\";\r\n const selIcon = this.state.isSelected ? 'edit_location' : 'beenhereoutlined'\r\n return (\r\n <span className=\"map-taxlot-btn\" style={{order:this.props.order}}>\r\n <Icon className=\"map-button raised\" onClick={this.onSelect} title=\"Select TaxLot\"> {selIcon} </Icon>\r\n </span>\r\n );\r\n }\r\n}\r\n\r\nexport default CSelector;","import React, { Component } from 'react';\r\nimport { loadModules } from 'esri-loader';\r\nimport ReactDOM from \"react-dom\";\r\nimport { Icon } from '@material-ui/core';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\n\r\nclass CZoom extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n maxZoomed: false,\r\n minZoomed: false,\r\n view: this.props.view\r\n }\r\n this.startup(\r\n this.props\r\n );\r\n }\r\n\r\n\r\n startup = (config) => {\r\n loadModules([\r\n \"esri/core/watchUtils\",\r\n \"esri/widgets/Zoom/ZoomViewModel\"\r\n ]).then(([watchUtils, ZoomViewModel]) => {\r\n try {\r\n let vm = new ZoomViewModel();\r\n vm.view = config.view;\r\n this.setState({ vm: vm });\r\n watchUtils.init(config.view, \"zoom\", this.onZoomChange);\r\n const node = ReactDOM.findDOMNode(this);\r\n config.view.ui.add(node, \"top-left\");\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n this.props.widgetRenderCallBack(\"Zoom\")\r\n });\r\n }\r\n\r\n\r\n onZoomChange = (value, oldValue, property, object) => {\r\n this.setState({\r\n maxZoomed: value === this.state.view.constraints.maxZoom,\r\n minZoomed: value === this.state.view.constraints.minZoom\r\n });\r\n };\r\n\r\n zoomIn = () => {\r\n if (!this.state.maxZoomed) {\r\n this.state.vm.zoomIn();\r\n }\r\n };\r\n\r\n zoomOut = () => {\r\n if (!this.state.minZoomed) {\r\n this.state.vm.zoomOut();\r\n }\r\n };\r\n\r\n render() {\r\n const maxstate = this.state.maxZoomed ? \"map-button circle raised disable\" : \"map-button circle raised\";\r\n const minstate = this.state.minZoomed ? \"map-button circle raised disable\" : \"map-button circle raised\";\r\n return (\r\n <span className=\"map-zoom-btns\">\r\n <Tooltip title=\"Zoom In\" placement=\"bottom-start\">\r\n <Icon className={maxstate} onClick={this.zoomIn}>add</Icon>\r\n </Tooltip>\r\n\r\n <br />\r\n <Tooltip title=\"Zoom Out\" placement=\"bottom-start\">\r\n <Icon className={minstate} onClick={this.zoomOut}>remove</Icon>\r\n </Tooltip>\r\n\r\n </span>\r\n );\r\n }\r\n}\r\n\r\nexport default CZoom;","import React, { Component } from 'react';\r\nimport { FeaturesLayerGraphicsTaskAddLookup_NoDraw } from '../eps/featuresLayersTaskKEPT';\r\n//import { TaxParcelTaskFeatureLayer,TaxParcelLayerTask } from '../eps/taxParcelTask';\r\n//import TaxParcelSearch from './TaxParcelSearch';\r\nimport { AddLayers } from '../util/layers';\r\nimport { CenterAndZoomWithUnionPointZoom, QuerySelectedTask, QueryTask } from \"../util/queryTask\";\r\nimport ActionsLayerList from './actionsLayerList';\r\nimport BasemapGallery from './basemapGallery';\r\nimport CDatTable from './dataTable';\r\nimport Home from './home';\r\nimport LayerFilter from './layerfilter';\r\nimport Locate from './locate';\r\nimport LocationCompare from './locationcompare';\r\nimport LocationZoom from './locationzoom';\r\nimport Measurement from './measurement';\r\nimport MultiLocationSelector from './multilocationselector';\r\nimport Print from './print';\r\nimport Search from './search';\r\nimport SearchBookmark from './searchbookmark';\r\nimport CSelect from './select';\r\nimport Sketch from './sketch';\r\nimport Selector from './taxlotselector';\r\nimport Zoom from './zoom';\r\nimport { GISLookupTask } from '../eps/GISLookupTask';\r\nimport { getEnvVariable } from '../../../../modules/environmentalList';\r\nimport { createRequest, requestApi } from '../../../controls/helpers/rest';\r\n\r\n\r\n/*\r\nimport Loadable from 'react-loadable';\r\n\r\nfunction Loading(props) {\r\n return <div>Loading...</div>;\r\n}\r\n\r\nfunction fakeAPI() {\r\n return Promise.resolve({ title: \"Yolo\", body: \"This is a cool post\" });\r\n}\r\n\r\nconst LoadableBar = Loadable.Map({\r\n loader: {\r\n Post: () => import(\"./measurement\"),\r\n Draw3: () => import(\"./draw\"),\r\n Data: () => fakeAPI(),\r\n },\r\n render(loaded, props) {\r\n const Post = loaded.Post.default;\r\n const Draw3 = loaded.Draw3.default;\r\n const Data = loaded.Data;\r\n return <div><Post {...props} /><Draw3 {...props} /></div>;\r\n },\r\n loading: Loading\r\n});\r\n*/\r\nclass CConfig extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n view: this.props.view,\r\n options: this.props.options,\r\n SubModuleKey: this.props.SubModuleKey,\r\n spatialReference: this.props.options.viewProperties.extent.spatialReference,//this.state.view.spatialReference\r\n mapConstants: this.props.mapConstants,\r\n mapdata: this.props.mapdata,\r\n selectiondata: this.props.selectiondata,\r\n highlightdata: [],\r\n highlighttaxlotdata: [],\r\n selectedTaxLots: [],\r\n components: [],\r\n graphiccoordinates: {}, // on geometry selection\r\n highlightedGraphics: null,\r\n widgetrender: [],\r\n defaultSelectLayer: ''\r\n };\r\n this.startup(\r\n this.state.view,\r\n this.state.options,\r\n this.state.mapdata,\r\n this.state.selectiondata\r\n );\r\n }\r\n\r\n async componentDidUpdate(prevProps, prevState) {\r\n if (this.props.selectiondata && (this.props.selectiondata !== prevState.selectiondata)) {\r\n this.setState({\r\n view: this.props.view,\r\n options: this.props.options,\r\n mapdata: this.props.mapdata,\r\n selectiondata: this.props.selectiondata,\r\n SubModuleKey: this.props.SubModuleKey\r\n }, () => {\r\n this.highlightSelectedData(this.state.selectiondata);\r\n })\r\n }\r\n if (this.props.mapdata && !this.arraysEqualCheck(this.props.mapdata,prevState.mapdata)) {\r\n this.AddMapLayers(this.props.view, this.props.options, this.props.mapdata, true);\r\n this.setState({\r\n view: this.props.view,\r\n options: this.props.options,\r\n mapdata: this.props.mapdata,\r\n selectiondata: this.props.selectiondata,\r\n SubModuleKey: this.props.SubModuleKey\r\n }, () => {\r\n console.log('Grid fileter ---', this.props.mapdata);\r\n if(!this.isRecordLayerAdded(this.state.view, this.state.options))\r\n this.AddMapLayers(this.state.view, this.state.options, this.state.mapdata, true); \r\n })\r\n }\r\n\r\n if ((this.props.permitTypeId && this.props.permitTypeId !== prevProps.permitTypeId) ||\r\n (this.props.layerCustomFilters && this.props.layerCustomFilters !== prevProps.layerCustomFilters) ||\r\n (this.props.layerCustomFilters)) {\r\n this.filterRecordLayers(this.props.SubModuleKey, this.props.permitTypeId)\r\n }\r\n }\r\n\r\n isRecordLayerAdded(view, options){\r\n try{\r\n let recordlayers = view.map.layers.filter(function (layer) {\r\n return layer.LayerOptions && (layer.LayerOptions.IsRecord === \"Y\");\r\n });\r\n let recordFeatureLayerListOptions = options.FeatureLayerListOptions.filter(a => a.IsRecord === 'Y' );\r\n return recordlayers.length == recordFeatureLayerListOptions.length;\r\n }catch(e){\r\n console.log(e);\r\n }\r\n return false;\r\n }\r\n\r\n\r\n arraysEqualCheck(a, b) {\r\n //if (a === b) return true;\r\n if (a == null || b == null) return false;\r\n if (a.length !== b.length) return false;\r\n \r\n a.sort();\r\n b.sort();\r\n \r\n for (let i = 0; i < a.length; ++i) {\r\n if (a[i] !== b[i]) return false;\r\n }\r\n return true;\r\n }\r\n\r\n filterRecordLayers = (subModuleKey, permitTypeId) => {\r\n let inthis = this;\r\n\r\n let layers = this.state.view.map.layers.filter(function (layer) {\r\n return layer.LayerOptions && (layer.LayerOptions.IsRecord === \"Y\");\r\n });\r\n if (subModuleKey === 'VIOLATIONS' && this.props.layerCustomFilters != 'VIOLATIONS') {\r\n layers = this.state.view.map.layers.filter(function (layer) {\r\n return layer.LayerOptions && (layer.LayerOptions.IsRecord === \"Y\"\r\n || layer.LayerOptions.Category.includes('S'));\r\n });\r\n }\r\n console.log('Layers to be filtered ---------', layers);\r\n let mappedSubModuleKey = (subModuleKey === 'VIOLATIONS' ? this.props.layerCustomFilters : subModuleKey)\r\n let definitionExpression = inthis.GetUserLayerExpression(subModuleKey, permitTypeId);\r\n let selectRecordDefinitionExpression = inthis.GetUserLayerExpression(mappedSubModuleKey, permitTypeId);\r\n\r\n layers.map(function (lyr) {\r\n //console.log('mapping layer---------',lyr);\r\n let layerDefinitionExpressionFilter = (lyr.LayerOptions.Category.includes(\"S\") && subModuleKey === 'VIOLATIONS') ? selectRecordDefinitionExpression : definitionExpression\r\n let defaultLayerExpression = lyr.LayerOptions.defaultExpression;\r\n let layerDefinitionExpression = (!layerDefinitionExpressionFilter || layerDefinitionExpressionFilter === \"()\" || layerDefinitionExpressionFilter === \"1=1\") ? (defaultLayerExpression) : ((\"(\" + defaultLayerExpression + \")\") + \" and \" + layerDefinitionExpressionFilter);\r\n lyr.definitionExpression = layerDefinitionExpression;\r\n })\r\n if (subModuleKey === 'VIOLATIONS' && mappedSubModuleKey) {\r\n this.hideLayersFromList(subModuleKey, permitTypeId, mappedSubModuleKey);\r\n }\r\n if (this.state.highlightedGraphics) {\r\n this.state.highlightedGraphics.remove();\r\n }\r\n }\r\n\r\n hideLayersFromList(subModuleKey, permitTypeId, mappedSubModuleKey) {\r\n let hidelayers = this.state.view.map.layers.filter(function (layer) {\r\n return layer.LayerOptions && (layer.LayerOptions.Category.includes('S') && !layer.LayerOptions.SelectionSubModules.includes(mappedSubModuleKey));\r\n });\r\n let showlayers = this.state.view.map.layers.filter(function (layer) {\r\n return layer.LayerOptions && (layer.LayerOptions.Category.includes('S') && layer.LayerOptions.SelectionSubModules.includes(mappedSubModuleKey));\r\n });\r\n hidelayers.map(function (lyr) {\r\n console.log('Hidden --------------' + lyr.LayerOptions.DisplayName, lyr.LayerOptions.SelectionSubModules, lyr.LayerOptions.IsRecord)\r\n lyr.definitionExpression = \"1 <> 1\";\r\n lyr.listMode = \"hide\";\r\n })\r\n showlayers.map(function (lyr) {\r\n console.log('Showing --------------' + lyr.LayerOptions.DisplayName, lyr.LayerOptions.SelectionSubModules, lyr.LayerOptions.IsRecord)\r\n lyr.listMode = \"show\";\r\n })\r\n }\r\n\r\n GetUserLayerExpression(subModuleKey, permitTypeId) {\r\n let definition = \"1=1\"\r\n let profile = localStorage.getItem('profile') && JSON.parse(localStorage.getItem('profile'))\r\n let userExpression = this.GetUserAccessQueryExpressions(profile);\r\n let isInternal = profile && profile.portal === \"I\";\r\n if (subModuleKey && permitTypeId > 0 && isInternal) {\r\n definition = \" SubModuleKey = '\" + subModuleKey + \"' AND Site_Permit_Type_Id = '\" + permitTypeId + \"' \";\r\n } else if (subModuleKey) {\r\n definition = \" SubModuleKey = '\" + subModuleKey + \"' \";\r\n }\r\n if (userExpression) {\r\n definition = definition + \" AND \" + userExpression;\r\n }\r\n return definition;\r\n }\r\n\r\n GetUserAccessQueryExpressions(profile) {\r\n if (profile) {\r\n let isInternal = profile && profile.portal === \"I\";\r\n if (isInternal && profile.configType == 'S' && profile.moduleSiteAccess) {\r\n let sites = Object.keys(profile.moduleSiteAccess);\r\n if (Array.isArray(sites) && sites.length > 0) {\r\n return \" Site_Id in (\" + sites.join(\",\") + \")\";\r\n }\r\n } else if (isInternal && profile.configType == 'D' && profile.moduleDistrictAccess) {\r\n let districts = Object.keys(profile.moduleDistrictAccess);\r\n if (Array.isArray(districts) && districts.length > 0) {\r\n return \" District_Id in (\" + districts.join(\",\") + \")\";\r\n }\r\n } else if (isInternal && profile.configType == 'R' && profile.moduleRegionAccess) {\r\n let regions = Object.keys(profile.moduleRegionAccess);\r\n if (Array.isArray(regions) && regions.length > 0) {\r\n return \" Region_Id in (\" + regions.join(\",\") + \")\";\r\n }\r\n } else if (!isInternal) {\r\n return \" Owner ='\" + profile.modulePermissions[0].companyId + \"'\";\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n componentDidMount() {\r\n const { compmap } = this.props;\r\n if (compmap)\r\n this.state.options.widgets.map(async (each) => await this.addComponent(each))\r\n\r\n this.setWidgetOptions();\r\n }\r\n\r\n addComponent = async type => {\r\n const { compmap } = this.props;\r\n this.setState({\r\n components: this.state.components.push(compmap[type])\r\n })\r\n };\r\n\r\n //for fetching the required url\r\n getFeatureLayerURL(tasks, url) {\r\n let customTaxLot = tasks;\r\n customTaxLot.TaxParcels.url = url\r\n return customTaxLot\r\n }\r\n\r\n startup = (view, options, mapdata) => {\r\n this.AddMapLayers(view, options, mapdata);\r\n }\r\n\r\n AddMapLayers(view, options, mapdata, hasrecordlayers=false){\r\n if (view && options) { \r\n //Record/Grid layers will be loaded based on the pagination\r\n let featureLayerListOptions = options.FeatureLayerListOptions.filter(a => (!a.SubModuleKey || a.SubModuleKey === 'COMMON' || a.SubModuleKeys.includes(this.state.SubModuleKey)) && a.IsRecord !== 'Y' && (a.KEY !== 'RECORD_HIGHLIGHT_LAYER' && a.key !== 'RECORD_HIGHLIGHT_LAYER'));//this.props.SubModuleKey\r\n if (this.state.options && this.state.options.mapkey === 'landing_map') {\r\n featureLayerListOptions = options.FeatureLayerListOptions.filter(a => a.Category.includes('L'));\r\n }\r\n if (this.state.options && (this.state.options.mapkey === 'EPS_map_ADD' || this.state.options.mapkey === 'AMES_MapSelect')) {\r\n featureLayerListOptions = featureLayerListOptions.filter(a => a.Category.includes('A')); \r\n }\r\n if (this.state.options && this.state.options.mapkey === 'EPS_map_EDIT' ) {\r\n featureLayerListOptions = featureLayerListOptions.filter(a => a.Category.includes('R')); \r\n }\r\n if (this.state.options && this.state.options.mapkey === 'EPS_map_GRID') {\r\n featureLayerListOptions = featureLayerListOptions.filter(a => a.Category.includes('G')); \r\n }\r\n if(hasrecordlayers || (this.state.options && this.state.options.mapkey === 'EPS_map_GRID')){\r\n let recordFeatureLayerListOptions = options.FeatureLayerListOptions.filter(a => (!a.SubModuleKey || a.SubModuleKey === 'COMMON' || \r\n a.SubModuleKeys.includes(this.state.SubModuleKey)) && (a.IsRecord === 'Y' || (a.KEY === 'RECORD_HIGHLIGHT_LAYER' || a.key === 'RECORD_HIGHLIGHT_LAYER')) );//this.props.SubModuleKey\r\n console.log('Grid fileter ---', recordFeatureLayerListOptions);\r\n featureLayerListOptions = featureLayerListOptions.concat(recordFeatureLayerListOptions);\r\n }\r\n\r\n // Add layers and actions to the map\r\n AddLayers(view, featureLayerListOptions, mapdata, options.mapkey, this.props.mapConstants, this.state.SubModuleKey,this.state.layersList,this.state.statusList).then(\r\n response => {\r\n let highlightrenderer = {\r\n type: \"simple-marker\", // autocasts as new SimpleMarkerSymbol()\r\n color: \"green\",\r\n size: 8,\r\n outline: { // autocasts as new SimpleLineSymbol()\r\n width: 0.5,\r\n color: \"green\"\r\n }\r\n };\r\n this.setState({ view: view })\r\n let mapLayers = view.map.layers;\r\n let reqLayer = mapLayers.filter(function (ly) { if (ly.Key === 'CenterGeomService') { return ly; } });\r\n\r\n let inThis = this;\r\n\r\n //This binding is only for the Grid view row and pin selector\r\n if (this.props.isGridView || this.props.addMapJson) {\r\n view.on(\"click\", function (event) {\r\n let screenPoint = { x: event.x, y: event.y };\r\n // Search for graphics at the clicked location\r\n view.hitTest(event).then(function (response) {\r\n console.log('HIT TEST*********************')\r\n //AMES specific highlighting the polygon\r\n //response.results[0].graphic.geometry.type\r\n if (response.results.length > 0) {\r\n const isPolygon = (response.results[0].graphic && response.results[0].graphic.geometry\r\n && response.results[0].graphic.geometry.type === \"polygon\");\r\n\r\n if (isPolygon) {\r\n\r\n\r\n } else {\r\n if (response.results.length) {\r\n view.graphics.removeAll();\r\n let graphic = response.results.filter(function (result) {\r\n // check if the graphic belongs to the layer of interest\r\n return result.graphic.layer === reqLayer._items[0];\r\n })[0].graphic;\r\n // do something with the result graphic\r\n if (graphic) {\r\n //view.graphics.remove(graphic);\r\n if (!inThis.state.highlightdata.includes(graphic.attributes.ObjectId)) {\r\n inThis.state.highlightdata.push(graphic.attributes.ObjectId);\r\n }\r\n inThis.props.handleSeclectionfromMap(inThis.state.highlightdata);\r\n graphic.symbol = highlightrenderer;\r\n graphic.attributes.ishighlight = \"true\";\r\n // graphic.attributes.Permit_Type_Id = \"-999\";\r\n view.graphics.remove(graphic);\r\n view.graphics.add(graphic);\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n });\r\n }.bind(this));\r\n }\r\n this.QuerySelectedData();\r\n },\r\n error => {\r\n console.log(error);\r\n }\r\n );\r\n\r\n }\r\n\r\n }\r\n\r\n // AddRecordLayers = (view, options, mapdata) => {\r\n // let featureLayerListOptions = options.FeatureLayerListOptions.filter(a => (!a.SubModuleKey || a.SubModuleKey === 'COMMON' || \r\n // a.SubModuleKeys.includes(this.state.SubModuleKey)) && (a.IsRecord === 'Y' || (a.KEY === 'RECORD_HIGHLIGHT_LAYER' || a.key === 'RECORD_HIGHLIGHT_LAYER')) );//this.props.SubModuleKey\r\n // console.log('Grid fileter ---', featureLayerListOptions);\r\n // // Add layers and actions to the map\r\n // AddLayers(view, featureLayerListOptions, mapdata, options.mapkey, this.props.mapConstants, this.state.SubModuleKey,this.state.layersList,this.state.statusList).then(\r\n // response => {\r\n // let highlightrenderer = {\r\n // type: \"simple-marker\", // autocasts as new SimpleMarkerSymbol()\r\n // color: \"green\",\r\n // size: 8,\r\n // outline: { // autocasts as new SimpleLineSymbol()\r\n // width: 0.5,\r\n // color: \"green\"\r\n // }\r\n // };\r\n // this.setState({ view: view })\r\n // let mapLayers = view.map.layers;\r\n // let reqLayer = mapLayers.filter(function (ly) { if (ly.Key === 'CenterGeomService') { return ly;} });\r\n // //let centerzoomlayer = mapLayers.filter(a => a.LayerOptions.KEY == \"RECORD_HIGHLIGHT_LAYER\" )\r\n\r\n // let inThis = this;\r\n\r\n // //This binding is only for the Grid view row and pin selector\r\n // if (this.props.isGridView || this.props.addMapJson) {\r\n // view.on(\"click\", function (event) {\r\n // let screenPoint = { x: event.x, y: event.y };\r\n // // Search for graphics at the clicked location\r\n // view.hitTest(event).then(function (response) {\r\n\r\n // //AMES specific highlighting the polygon\r\n // //response.results[0].graphic.geometry.type\r\n // if (response.results.length > 0) {\r\n // const isPolygon = (response.results[0].graphic && response.results[0].graphic.geometry\r\n // && response.results[0].graphic.geometry.type === \"polygon\");\r\n\r\n // if (isPolygon) {\r\n\r\n\r\n // } else {\r\n // if (response.results.length) {\r\n // view.graphics.removeAll();\r\n // let graphic = response.results.filter(function (result) {\r\n // // check if the graphic belongs to the layer of interest\r\n // return result.graphic.layer === reqLayer._items[0];\r\n // })[0].graphic;\r\n // // do something with the result graphic\r\n // if (graphic) {\r\n // //view.graphics.remove(graphic);\r\n // if (!inThis.state.highlightdata.includes(graphic.attributes.ObjectId)) {\r\n // inThis.state.highlightdata.push(graphic.attributes.ObjectId);\r\n // }\r\n\r\n // inThis.props.handleSeclectionfromMap(inThis.state.highlightdata);\r\n // graphic.symbol = highlightrenderer;\r\n // graphic.attributes.ishighlight = \"true\";\r\n // // graphic.attributes.Permit_Type_Id = \"-999\";\r\n // view.graphics.remove(graphic);\r\n // view.graphics.add(graphic);\r\n\r\n // }\r\n // }\r\n // }\r\n\r\n // }\r\n\r\n // });\r\n // }.bind(this));\r\n // }\r\n // // if( centerzoomlayer){\r\n // // centerzoomlayer.queryExtent().then((response) => { \r\n // // CenterAndZoomWithUnionPointZoom(view, response.features, inThis.state.options.viewProperties.zoom);\r\n // // })\r\n // // }\r\n\r\n // this.QuerySelectedData();\r\n // },\r\n // error => {\r\n // console.log(error);\r\n // }\r\n // );\r\n // }\r\n\r\n highlightSelectedData = (selectiondata) => {\r\n let layers = this.state.view.map.layers.filter(function (layer) {\r\n return layer.LayerOptions && (layer.LayerOptions.KEY === \"CenterGeomService\" || \r\n layer.LayerOptions.IsRecord === \"Y\" || \r\n layer.LayerOptions.KEY === \"RECORD_HIGHLIGHT_LAYER\");\r\n });\r\n\r\n if (this.state.highlightedGraphics) {\r\n this.state.highlightedGraphics.remove();\r\n }\r\n layers.forEach(layer => {\r\n this.highlightSelectedDataWrapper(layer, selectiondata);\r\n });\r\n\r\n }\r\n\r\n highlightSelectedDataWrapper = (layer, selectiondata) => {\r\n let inthis = this\r\n if (layer && selectiondata && selectiondata.length > 0) {\r\n this.state.view.whenLayerView(layer).then(function (lyrView) {\r\n let querycondition = \"Id in(\" + selectiondata.toString() + \")\";\r\n console.log('highlightSelectedDataWrapper----------spatialReference', inthis.state.view.spatialReference)\r\n QueryTask(layer.LayerOptions, querycondition, inthis.state.view.spatialReference).then((response) => {\r\n response.features.forEach((s) => {\r\n if (s && s.geometry)\r\n s.symbol = inthis.state.mapConstants.getHighlightsymbol(inthis.state.SubModuleKey, s.geometry.type, s.attributes, layer.LayerOptions);\r\n else\r\n s.symbol = inthis.state.mapConstants.getHighlightsymbol(inthis.state.SubModuleKey, \"point\", s.attributes, layer.LayerOptions);\r\n });\r\n if (response.features.length > 0 && lyrView.layer)\r\n inthis.setState({ highlightedGraphics: lyrView.highlight(response.features) });\r\n else {\r\n inthis.setState({ highlightedGraphics: null });\r\n }\r\n if (layer.LayerOptions && (layer.LayerOptions.KEY === \"CenterGeomService\" || \r\n layer.LayerOptions.IsRecord === \"Y\" || \r\n layer.LayerOptions.KEY === \"RECORD_HIGHLIGHT_LAYER\")){ \r\n CenterAndZoomWithUnionPointZoom(inthis.state.view, response.features, inthis.state.options.viewProperties.zoom)\r\n }\r\n \r\n });\r\n });\r\n } else {\r\n inthis.setState({ highlightedGraphics: null });\r\n }\r\n }\r\n\r\n QuerySelectedData = () => {\r\n if (this.props.SelectGeomInsteadOfDraw === \"Y\") {\r\n if (this.props.options && this.props.options.FieldsData && this.props.options.FieldsData.length > 0 && this.state.options.SelectLayerListOptions && this.state.options.SelectLayerListOptions && this.state.options.SelectLayerListOptions.length > 0) {\r\n let allPromise = []\r\n let inthis = this;\r\n this.state.options.SelectLayerListOptions.forEach(function (layerOptions) {\r\n const { SelectField, SubscribedMasterFieldsKey, defaultExpression } = layerOptions\r\n if (SelectField && SubscribedMasterFieldsKey) {\r\n let objIndex = inthis.props.options.FieldsData.findIndex((obj => obj.Fieldkey === SubscribedMasterFieldsKey));\r\n if (objIndex >= 0) {\r\n let selectedField = inthis.props.options.FieldsData[objIndex]\r\n if (selectedField && selectedField.FieldValue) {\r\n const fieldValues = selectedField.FieldValue.split(\",\");\r\n let fieldValuesStr = fieldValues.join(\"','\")\r\n let queryexpression = SelectField + \" in ('\" + fieldValuesStr + \"')\";\r\n if (defaultExpression && defaultExpression !== \"1=1\") {//Sql query with default Expression\r\n queryexpression = ((\"(\" + defaultExpression + \")\") + \" and \" + queryexpression);\r\n }\r\n let promise = QuerySelectedTask(inthis.state.SubModuleKey, layerOptions, inthis.state.view, inthis.state.mapConstants, queryexpression, inthis.state.view.spatialReference, inthis.state.options.viewProperties.zoom)//inthis.state.options.viewProperties.extent.spatialReference,\r\n allPromise.push(promise);\r\n }\r\n }\r\n }\r\n })\r\n Promise.all(allPromise).then((data) => {\r\n //Pass geometries in array directly here...\r\n console.log('Selected Geom map response ', data);\r\n let lookupdatabytype = this.props.gisDomainLookupData\r\n if (lookupdatabytype != null && data != null && data[0] != null && data[0].features[0] != null) {\r\n var selectrecordGeom = data[0].features[0].geometry;\r\n if (data[0].geometryType != \"point\") {\r\n if (selectrecordGeom && selectrecordGeom.extent !== undefined || selectrecordGeom.extent !== null)\r\n selectrecordGeom = selectrecordGeom.extent.center;\r\n }\r\n FeaturesLayerGraphicsTaskAddLookup_NoDraw(this.state.options, [selectrecordGeom], lookupdatabytype).then(response => {\r\n console.log('GIS hitting map response ', response);\r\n //this.state.graphiccoordinates.latitude &&\r\n //this.state.graphiccoordinates.longitude &&\r\n response[\"MAP_CENTER_LATITUDE\"] = selectrecordGeom.latitude;\r\n response[\"MAP_CENTER_LONGITUDE\"] = selectrecordGeom.longitude;\r\n this.props.onSaveorUpdateMapResponse(response);\r\n },\r\n error => {\r\n console.log(error);\r\n })\r\n }\r\n })\r\n }\r\n }\r\n }\r\n\r\n OnExpanded = (widget, value) => {\r\n this.state.view.popup.close();\r\n if (value === true && this.ExpandedWidget && this.ExpandedWidget.expanded && this.ExpandedWidget !== widget) {\r\n this.ExpandedWidget.collapse();\r\n }\r\n if (value === true)\r\n this.ExpandedWidget = widget;\r\n }\r\n\r\n onGraphicSelection = (coordinates) => {\r\n console.log(coordinates)\r\n this.setState({ graphiccoordinates: coordinates });\r\n }\r\n\r\n onAreaSelection = (coordinates, selectedLayerOptions) => {\r\n this.setState({ selectedArea: coordinates, selectedLayerOptions: selectedLayerOptions }, () => {\r\n let coordinatesfilter = coordinates;\r\n coordinatesfilter.cleargraphic = false;\r\n this.setState({ selectedArea: coordinatesfilter })\r\n });\r\n }\r\n\r\n onAreaClear = () => {\r\n this.setState({ clearAreaSelection: !this.state.clearAreaSelection });\r\n }\r\n\r\n onClearSelection = () => {\r\n if (this.state.featureTable)\r\n this.state.featureTable.clearSelection();\r\n }\r\n\r\n onDataTableLoad = (featureTable, selectedLayer) => {\r\n this.setState({ featureTable: featureTable, selectedLayer: selectedLayer });\r\n }\r\n handlelayerFilter = (query) => {\r\n this.setState({ layerFilterQuery: query, showLayerFilter: false })\r\n }\r\n\r\n getMapCenterData() {\r\n if (this.state.options && this.state.options.FieldsData) {\r\n let latlong = this.state.options.FieldsData.filter(f => {\r\n return (f.Fieldkey === (\"MAP_CENTER_LATITUDE\") || f.Fieldkey === (\"MAP_CENTER_LONGITUDE\"));\r\n }).map(f => f.FieldValue)\r\n return latlong.filter(function (el) {\r\n return el != null && el != '';\r\n });\r\n }\r\n return [];\r\n }\r\n\r\n setWidgetOptions = () => {\r\n if (this.state.options && Array.isArray(this.state.options.widgets)) {\r\n let widgetrenderer = [];\r\n widgetrenderer.push({ \"Zoom\": false })\r\n let read = [{\r\n url: getEnvVariable('Admin') + `/api/MasterPermitTypes/All`,\r\n type: 'get'\r\n },\r\n {\r\n url: getEnvVariable('Admin') + `/api/ApplicationStatus/All`,\r\n type: 'get'\r\n }]\r\n Promise.all(read.map(each => requestApi(createRequest(each, {}, null)).catch(error => { return error; }))).then(resp => {\r\n const [layersList, statusList,] = resp;\r\n this.setState({ widgetrender: widgetrenderer, layersList: layersList, statusList: statusList })\r\n })\r\n\r\n }\r\n }\r\n\r\n widgetRenderCallBack = (name) => {\r\n //NOT USING CAN BE EXTENDED IN FUTURE\r\n\r\n }\r\n // Map search with lookup fileds added.\r\n setSearchLayerConfigData = (lyr, feature) => {\r\n //console.log(feature); \r\n let searchdomainlookup = this.props && Array.isArray(this.props.gisDomainLookupData) ? this.props.gisDomainLookupData.filter(a => a.FieldFetchGeomType == \"S\") : [];\r\n if (Array.isArray(searchdomainlookup) && searchdomainlookup.length > 0) {\r\n GISLookupTask(this.state.options, { geometry: feature.geometry }, searchdomainlookup).then((gisres) => {\r\n console.log('GIS search result featuers----', gisres, feature);\r\n if (this.props.onSaveorUpdateMapResponse)\r\n this.props.onSaveorUpdateMapResponse(gisres);\r\n })\r\n }\r\n this.setState({ defaultSelectLayer: lyr });\r\n }\r\n\r\n // <LoadableBar options={this.state.options.drawOptions} view={this.state.view} />\r\n render() {\r\n const { options, showLayerFilter, layerFilterQuery, layerId, widgetrender } = this.state\r\n const { widgets } = options\r\n const { canEdit, isGridView } = this.props;\r\n let mapcenterlatlong = this.getMapCenterData();\r\n\r\n return (\r\n <div id=\"Widgets-Config\" className=\"Widgets-Config\">\r\n {\r\n this.state.options.widgets.indexOf(\"Zoom\") > -1 && <Zoom options={this.state.options.zoomOptions} view={this.state.view} widgetRenderCallBack={this.widgetRenderCallBack} order={this.state.options.widgets.indexOf(\"Zoom\")} />\r\n }\r\n {\r\n this.state.options.widgets.indexOf(\"Home\") > -1 && <Home view={this.state.view} widgetRenderCallBack={this.widgetRenderCallBack} order={this.state.options.widgets.indexOf(\"Home\")} />\r\n }\r\n {\r\n this.state.options.widgets.indexOf(\"Locate\") > -1 && <Locate view={this.state.view} widgetRenderCallBack={this.widgetRenderCallBack} order={this.state.options.widgets.indexOf(\"Locate\")} />\r\n }\r\n {\r\n this.state.options.widgets.indexOf(\"Search\") > -1 && <Search options={this.state.options} view={this.state.view} spatialReference={this.state.spatialReference}\r\n onexpanded={this.OnExpanded} setStateMapInformation={this.props.setStateMapInformation}\r\n canEdit={canEdit} widgetRenderCallBack={this.widgetRenderCallBack}\r\n order={this.state.options.widgets.indexOf(\"Search\")}\r\n setDefaultSelectWidgetLayer={(lyr) => { this.setState({ defaultSelectLayer: lyr }) }}\r\n setSearchLayerConfigData={this.setSearchLayerConfigData} />\r\n }\r\n {\r\n this.state.options.widgets.indexOf(\"BasemapGallery\") > -1 && <BasemapGallery options={this.state.options.basemap} view={this.state.view} onexpanded={this.OnExpanded} widgetRenderCallBack={this.widgetRenderCallBack} order={this.state.options.widgets.indexOf(\"BasemapGallery\")} />\r\n }\r\n {\r\n // this.state.options.LayerOptions && this.state.options.widgets.indexOf(\"LayerList\") > -1 && <LayerList options={this.state.options.LayerOptions} view={this.state.view} onexpanded={this.OnExpanded} />\r\n }\r\n {\r\n this.state.options.LayerOptions && this.state.options.widgets.indexOf(\"LayerList\") > -1 && <ActionsLayerList\r\n options={this.state.options}\r\n view={this.state.view}\r\n onexpanded={this.OnExpanded}\r\n addTaxParcels={this.props.addTaxParcels}\r\n parentcal=\"actionlayer\"\r\n layerFilter={(id) => { this.setState({ showLayerFilter: true, layerId: id }) }}\r\n layerFilterQuery={layerFilterQuery}\r\n spatialReference={this.state.spatialReference} widgetRenderCallBack={this.widgetRenderCallBack} order={this.state.options.widgets.indexOf(\"LayerList\")} />\r\n }\r\n {\r\n this.state.options.widgets.indexOf(\"Measurement\") > -1 && <Measurement options={this.state.options.drawOptions} view={this.state.view} onexpanded={this.OnExpanded} widgetRenderCallBack={this.widgetRenderCallBack} order={this.state.options.widgets.indexOf(\"Measurement\")} />\r\n }\r\n {\r\n (this.state.options.widgets.indexOf(\"TaxlotSelector\") > -1 && canEdit && this.state.options.hastaxlotlayer === \"Y\") && <Selector options={this.state.options} view={this.state.view} addTaxParcels={this.props.addTaxParcels} widgetRenderCallBack={this.widgetRenderCallBack} order={this.state.options.widgets.indexOf(\"TaxlotSelector\")} />\r\n }\r\n {/* {\r\n this.state.options.widgets.indexOf(\"BufferCalc\") > -1 && <BufferCalc view={this.state.view} options={this.state.options} onexpanded={this.OnExpanded} addTaxParcels={this.props.addTaxParcels} parentcal=\"buffercalc\" canEdit={canEdit} />\r\n } */}\r\n {\r\n this.state.options.widgets.indexOf(\"Print\") > -1 && <Print view={this.state.view} options={this.state.options} onexpanded={this.OnExpanded} widgetRenderCallBack={this.widgetRenderCallBack} order={this.state.options.widgets.indexOf(\"Print\")} />\r\n }\r\n {\r\n (this.state.options.widgets.indexOf(\"Sketch\") > -1 && canEdit) && <Sketch options={this.state.options}\r\n view={this.state.view} onexpanded={this.OnExpanded}\r\n SelectGeomInsteadOfDraw={this.props.SelectGeomInsteadOfDraw != \"N\"}\r\n hasMultiLocationSelector={this.props.HasMultiLocationSelector === \"Y\"} //{this.state.options.widgets.indexOf(\"MultiLocationSelector\") > -1}\r\n onSave={this.props.onSaveorUpdate}\r\n mapConstants={this.state.mapConstants}\r\n spatialReference={this.state.spatialReference}\r\n ref={(sketch) => { this.sketch = sketch; }}\r\n fetchGeomType={this.props.fetchGeomType}\r\n onGraphicSelection={this.onGraphicSelection}\r\n SubModuleKey={this.state.SubModuleKey}\r\n setStateMapInformation={this.props.setStateMapInformation}\r\n clearsketch={this.props.clearsketch} widgetRenderCallBack={this.widgetRenderCallBack}\r\n order={this.state.options.widgets.indexOf(\"Sketch\")}\r\n />\r\n }\r\n {\r\n this.state.options && this.state.options.searchbookmarks && this.state.options.widgets.indexOf(\"SearchBookmark\") > -1 && <SearchBookmark //options={this.state.options.searchbookmarks}\r\n view={this.state.view} options={this.state.options}\r\n onexpanded={this.OnExpanded} widgetRenderCallBack={this.widgetRenderCallBack}\r\n order={this.state.options.widgets.indexOf(\"SearchBookmark\")} />\r\n }\r\n {this.state.options.widgets.indexOf(\"MultiLocationSelector\") && this.props.HasMultiLocationSelector === \"Y\" &&\r\n this.state.graphiccoordinates &&\r\n this.state.graphiccoordinates.latitude &&\r\n this.state.graphiccoordinates.longitude &&\r\n <MultiLocationSelector view={this.state.view} options={this.state.options}\r\n onexpanded={this.OnExpanded} addTaxParcels={this.props.addTaxParcels}\r\n parentcal=\"MultiLocationSelector\" canEdit={canEdit}\r\n coordinates={this.state.graphiccoordinates}\r\n multipleLocationHandler={this.props.multipleLocationHandler}\r\n clearsketch={this.props.clearsketch} widgetRenderCallBack={this.widgetRenderCallBack}\r\n order={this.state.options.widgets.indexOf(\"MultiLocationSelector\")} />\r\n }\r\n {(this.state.options.widgets.indexOf(\"LayerFilter\") > -1) && <LayerFilter showLayerFilter={showLayerFilter} layerId={layerId} layerFilter={(id) => { this.setState({ showLayerFilter: !this.state.showLayerFilter, layerId: id }) }}\r\n handlelayerFilter={this.handlelayerFilter} widgetRenderCallBack={this.widgetRenderCallBack}\r\n order={this.state.options.widgets.indexOf(\"LayerFilter\")} />\r\n }\r\n {\r\n (this.state.options.widgets.indexOf(\"Select\") > -1 &&\r\n this.state.options.SelectLayerListOptions && this.state.options.SelectLayerListOptions.length > 0\r\n && this.props.layerCustomFilters !== 'VIOLATIONS')\r\n && <CSelect options={this.state.options}\r\n view={this.state.view} onexpanded={this.OnExpanded}\r\n spatialReference={this.state.spatialReference}\r\n mapConstants={this.state.mapConstants}\r\n ref={(csselect) => { this.csselect = csselect; }}\r\n onAreaSelection={this.onAreaSelection}\r\n SelectGeomInsteadOfDraw={this.props.SelectGeomInsteadOfDraw != \"N\"}\r\n clearsketch={this.props.clearsketch} widgetRenderCallBack={this.widgetRenderCallBack}\r\n order={this.state.options.widgets.indexOf(\"Select\")}\r\n layerCustomFilters={this.props.layerCustomFilters}\r\n SubModuleKey={this.state.SubModuleKey}\r\n defaultSelectLayer={this.state.defaultSelectLayer}\r\n onAreaClear={this.onAreaClear}\r\n onSelectSaveorUpdate={this.props.onSelectSaveorUpdate}\r\n />\r\n }\r\n {\r\n this.state.options.widgets.indexOf(\"DatTable\") &&\r\n this.state.selectedArea &&\r\n this.state.selectedArea.counter &&\r\n this.state.selectedLayerOptions &&\r\n this.state.selectedLayerOptions.Id &&\r\n <CDatTable view={this.state.view} options={this.state.options}\r\n onexpanded={this.OnExpanded} canEdit={canEdit} isGridView={isGridView}\r\n onDataTableLoad={this.onDataTableLoad}\r\n mapConstants={this.state.mapConstants}\r\n spatialReference={this.state.spatialReference}\r\n selectedLayerOptions={this.state.selectedLayerOptions}\r\n onSaveorUpdateMapResponse={this.props.onSaveorUpdateMapResponse}\r\n selectedArea={this.state.selectedArea}\r\n SubModuleKey={this.state.SubModuleKey}\r\n SelectGeomInsteadOfDraw={this.props.SelectGeomInsteadOfDraw != \"N\"}\r\n setStateMapInformation={this.props.setStateMapInformation}\r\n clearsketch={this.props.clearsketch} widgetRenderCallBack={this.widgetRenderCallBack}\r\n order={this.state.options.widgets.indexOf(\"DatTable\")}\r\n clearAreaSelection={this.state.clearAreaSelection}\r\n />\r\n }\r\n {\r\n mapcenterlatlong.length > 0 && <LocationZoom view={this.state.view} widgetRenderCallBack={this.widgetRenderCallBack} />\r\n }\r\n {\r\n (this.state.options.widgets.indexOf(\"MultiLocationSelector\") > -1 &&\r\n this.state.options &&\r\n Array.isArray(this.state.options.MultipleLocationData) &&\r\n this.state.options.MultipleLocationData.length > 0) && <LocationCompare view={this.state.view} options={this.state.options} widgetRenderCallBack={this.widgetRenderCallBack} order={this.state.options.widgets.indexOf(\"MultiLocationSelector\")} />\r\n }\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default CConfig;","import { Map } from '@esri/react-arcgis';\r\nimport React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport { getEnvVariable } from '../../../modules/environmentalList'; //src\\modules\\environmentalList.js\r\nimport { snackbarMessage } from '../../actions';\r\nimport { createRequest, requestApi } from '../../controls/helpers/rest';\r\nimport { ApplyEditsFeatures, ApplyEditsGeometry } from './eps/applyEditsFeaturesTaskKEPT';\r\nimport { FeaturesLayerGraphicsTask, FeaturesLayerGraphicsTaskAddLookup } from './eps/featuresLayersTaskKEPT'; //featuresLayersTask\r\nimport { MapSettings } from './eps/mapSettings';\r\nimport { TaxParcelCenter } from './eps/taxParcelCenter';\r\nimport { TaxParcelTaskFeatureLayer, TaxParcelLayerTask } from './eps/taxParcelTask';\r\nimport { MapConstants } from './util/mapConstants';\r\nimport WidgetsConfig from './widgets/widgetsconfig';\r\n//import { compmap } from '../../wrappers/commap'\r\n\r\nclass CMap extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n options: null,\r\n gisDomainLookupData: [],\r\n SubModuleKey: this.props.SubModuleKey,\r\n view: null,\r\n map: null,\r\n prevSITE_PERMIT_TYPE_ID: null,\r\n layers: [],\r\n allmapsettings: [],\r\n mapbussinesRules: null,\r\n sectionmapsettings: null\r\n };\r\n\r\n this.OnMapLoad = this.OnMapLoad.bind(this);\r\n this.mapConstants = new MapConstants();\r\n }\r\n\r\n componentDidMount() {\r\n //this.OnMapLoad()\r\n let read = [{\r\n url: getEnvVariable('Admin') + `/api/MapAppSettings/AllMapSettings`,\r\n type: 'get'\r\n },\r\n {\r\n url: getEnvVariable('Admin') + `/api/Layers/All/Active`,\r\n type: 'get'\r\n }]\r\n if (this.props.options && this.props.options.SITE_PERMIT_TYPE_ID) {\r\n read.push({ url: getEnvVariable('AdminConfig') + `/api/SitePermitTypeSection/MapSettings/${this.props.options.SITE_PERMIT_TYPE_ID}`, type: 'get' })\r\n read.push({ url: getEnvVariable('Application') + `/api/BusinessRules/MapRules/${this.props.options.SITE_PERMIT_TYPE_ID}`, type: 'get' })\r\n }\r\n Promise.all(read.map(each => requestApi(createRequest(each, {}, null)).catch(error => { return error; }))).then(resp => {\r\n const [allmapsettingsReq, layersReq, sectionmapsettingsReq, mapbussinesRulesReq] = resp;\r\n this.setState({\r\n prevSITE_PERMIT_TYPE_ID: this.props.SITE_PERMIT_TYPE_ID, layes: layersReq,\r\n allmapsettings: allmapsettingsReq, sectionmapsettings: sectionmapsettingsReq, mapbussinesRules: mapbussinesRulesReq\r\n }, () => {\r\n //performance fix for layers and mapallsettings\r\n this.handleMapSettings(layersReq, allmapsettingsReq, sectionmapsettingsReq, mapbussinesRulesReq);\r\n })\r\n })\r\n }\r\n\r\n handleMapSettings = (layers = null, allmapsettings = null, sectionmapsettings = null, mapbussinesRules = null) => {\r\n let tempLayers = layers || this.state.layers || [];\r\n let tempallmalsettings = allmapsettings || this.state.allmapsettings || []\r\n let tempmapbussinesRules = mapbussinesRules || this.state.mapbussinesRules || null;\r\n let tempsectionmapsettings = sectionmapsettings || this.state.sectionmapsettings || null\r\n this.SelectGeomInsteadOfDraw = getEnvVariable('SelectGeomInsteadOfDraw')\r\n this.HasMultiLocationSelector = getEnvVariable('HasMultiLocationSelector')\r\n MapSettings(this.props.options, this.props.SubModuleKey, tempLayers, tempallmalsettings, tempsectionmapsettings, tempmapbussinesRules).then(applyResponses => {\r\n this.setState({ options: applyResponses, gisDomainLookupData: this.props.gisDomainLookupData })\r\n });\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (this.props.selectedtaxparcel !== prevProps.selectedtaxparcel) {\r\n //this.handleMapSettings();\r\n this.taxParcelCenterAndZoom(this.props.selectedtaxparcel);\r\n this.OnMapLoad(this.state.map, this.state.view);\r\n }\r\n if (this.props.mapClear !== prevProps.mapClear && this.props.mapClear === true) {\r\n this.clearGraphics()\r\n }\r\n if (this.props.SITE_PERMIT_TYPE_ID && prevState.prevSITE_PERMIT_TYPE_ID && (prevState.prevSITE_PERMIT_TYPE_ID !== this.props.SITE_PERMIT_TYPE_ID)) {\r\n\r\n this.setState({ prevSITE_PERMIT_TYPE_ID: this.props.SITE_PERMIT_TYPE_ID }, () => {\r\n this.handleMapSettings();\r\n })\r\n }\r\n if (this.props.TAX_PARCEL_LAYER && this.props.TAX_PARCEL_LAYER !== prevProps.TAX_PARCEL_LAYER) {\r\n this.OnMapLoad(this.state.map, this.state.view);\r\n }\r\n }\r\n\r\n\r\n\r\n OnMapLoad(map, view) {\r\n this.setState({ view: view, map: map }, () => {\r\n console.log(map, \"Mapppppppppppppppppppppppppppppppppppppppppppppp\");\r\n this.centerAndZoom(view.center, view, this.state.options.viewProperties.initialzoom);//view.center this.state.options.viewProperties.extent\r\n if (this.state.options.FeatureLayers && this.state.options.FieldsData) {\r\n if (this.props.isAdd) {\r\n let lookupdatabytype = this.props.gisDomainLookupData;\r\n let fetchGeomType = this.props.fetchGeomType || []\r\n\r\n lookupdatabytype = lookupdatabytype.filter(a => fetchGeomType.includes(a.FieldFetchGeomType) || a.FieldFetchGeomType == 'B');\r\n FeaturesLayerGraphicsTaskAddLookup(view, this.state.options, this.mapConstants, this.state.options.viewProperties.zoom, lookupdatabytype, this.state.SubModuleKey).then(\r\n response => {\r\n this.props.onSaveorUpdateMapResponse(response);\r\n },\r\n error => {\r\n console.log(error);\r\n });\r\n\r\n } else {\r\n FeaturesLayerGraphicsTask(view, this.state.options, this.mapConstants, this.state.options.viewProperties.zoom, this.state.SubModuleKey).then(\r\n response => {\r\n },\r\n error => {\r\n console.log(error);\r\n });\r\n }\r\n\r\n }\r\n this.showTaxParcelLayer();\r\n })\r\n }\r\n\r\n\r\n showTaxParcelLayer = () => {\r\n if (this.state.options && this.state.options.tasks && this.state.options.tasks.TaxParcels) {\r\n let TaxParcels = this.state.options.tasks.TaxParcels;\r\n if (this.state.options && Array.isArray(this.state.options.SelectLayerListOptions)) {\r\n let selectedlayer = this.state.options.SelectLayerListOptions.find(a => a.Url.includes(this.state.options.tasks.TaxParcels.url))\r\n\r\n let SelectField = selectedlayer ? selectedlayer['SelectField'] : 'MapTaxlot';\r\n let features = { attributes: { [SelectField]: TaxParcels.queryExpression } }\r\n if (TaxParcels.url) {\r\n TaxParcelLayerTask(this.state.view, this.state.options, TaxParcels, features, this.mapConstants).then(taxpres => {\r\n console.log(taxpres);\r\n })\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n centerAndZoom = (extent, view, zoom) => {\r\n if (extent && view && zoom) {\r\n view.goTo(extent).then(function () {\r\n if (zoom > view.zoom)\r\n view.zoom = zoom\r\n });\r\n\r\n }\r\n }\r\n taxParcelCenterAndZoom = (taxparcel) => {\r\n if (this.state.options && this.state.options.tasks)\r\n TaxParcelCenter(this.state.view, this.state.options.tasks, taxparcel, this.mapConstants, this.state.options.viewProperties.zoom).then(\r\n response => {\r\n });\r\n }\r\n\r\n QueryTaxParcel = (queryexpression, isReset) => {\r\n if (this.state.options && this.state.options.tasks)\r\n return new Promise((resolve, reject) => {\r\n //let queryExpressionref = this.state.options.tasks.TaxParcels.queryExpression\r\n //Specific to AMES - using TaxParcelTaskFeatureLayer instead of TaxParcelTask\r\n TaxParcelTaskFeatureLayer(this.state.view, this.state.options.tasks, queryexpression, this.mapConstants, this.state.options.viewProperties.zoom, isReset).then(\r\n response => {\r\n if (this.props.taxparcelresponse)\r\n this.props.taxparcelresponse(response)\r\n if (response && response.graphics && response.graphics.length > 0) {\r\n let objIndex = this.props.options.FieldsData.findIndex((obj => obj.Fieldkey == \"TAX_PARCEL_IDS_GEOM\"));\r\n if (objIndex > 0)\r\n this.props.options.FieldsData[objIndex].FieldValue = response.graphics\r\n }\r\n resolve(response);\r\n },\r\n error => {\r\n console.log(error);\r\n reject({ \"error\": error });\r\n });\r\n });\r\n }\r\n\r\n\r\n onSaveorUpdate = (layer) => {\r\n return new Promise((resolve, reject) => {\r\n //Last true/false : AMES specific for propsed/existing data\r\n let fetchGeomType = this.props.fetchGeomType || []\r\n let isTwoWay = (fetchGeomType.includes(\"E\") && fetchGeomType.includes(\"P\")) ? true : false;\r\n this.setLoader(true);\r\n ApplyEditsFeatures(this.state.options, this.mapConstants, layer, this.props.userId, fetchGeomType, this.props.gisDomainLookupData/*this.state.view.spatialReference*/, this.state.SubModuleKey).then(\r\n applyObjectids => {\r\n this.props.onSaveorUpdateMapResponse(applyObjectids, this.state.options.viewProperties.extent.spatialReference);\r\n this.props.snackbarMessage('Map Information Saved Successfully', 'success');\r\n this.setLoader(false);\r\n resolve(applyObjectids);\r\n },\r\n error => {\r\n console.log(error);\r\n this.props.snackbarMessage('Invalid data. Please check the information', 'error');\r\n reject({ \"error\": error });\r\n });\r\n });\r\n }\r\n\r\n getLoaderHTML() {\r\n var dom = document.createElement('div');\r\n dom.className = \"esri-saving-message-info\";\r\n dom.innerHTML = '<div className=\"Saving-Info\" style=\"width:100%; color: #01ff0c; background: #0000005e; text-align: center; display:block\"> <b> <label className=\"Search-box-layerInfo-label\">Please wait processing GIS domain lookup ... </label> </b> </div>';\r\n return dom;\r\n }\r\n\r\n setLoader(show) {\r\n var parentNodes = document.getElementsByClassName('esri-ui');\r\n var elements = document.getElementsByClassName('esri-saving-message-info');\r\n while (elements.length > 0) {\r\n elements[0].parentNode.removeChild(elements[0]);\r\n }\r\n if (show)\r\n parentNodes[0].prepend(this.getLoaderHTML());\r\n }\r\n\r\n onSelectSaveorUpdate = (grapohics, type) => {\r\n try {\r\n ApplyEditsGeometry(this.state.options, this.mapConstants, grapohics, this.props.userId, type, this.props.gisDomainLookupData, this.state.SubModuleKey).then(applyObjectids => {\r\n this.props.onSaveorUpdateMapResponse(applyObjectids, this.state.options.viewProperties.extent.spatialReference);\r\n this.props.snackbarMessage('Map Information Saved Successfully', 'success');\r\n console.log(applyObjectids);\r\n })\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n clearGraphics() {\r\n //this.state.map.graphics.clear();\r\n //this.state.view.graphics.removeAll()\r\n //let mview = this.state.view\r\n\r\n this.state.map.layers.filter(l => l.title === \"Sketch Layer\").forEach(element => {\r\n element.graphics.removeAll();\r\n });\r\n let mmap = this.state.map\r\n this.setState({ map: mmap })\r\n this.props.onSaveorUpdateMapResponse({})\r\n }\r\n\r\n addTaxParcels(inthis, data) {\r\n if (this.props.addTaxParcels) {\r\n this.props.addTaxParcels(data)\r\n } else {\r\n let propdata = { \"TAX_PARCEL_IDS\": data }\r\n this.props.onSaveorUpdateMapResponse(propdata);\r\n }\r\n }\r\n\r\n multipleLocationHandler(inthis, data) {\r\n if (inthis.props.options.MultipleLocationData)\r\n inthis.props.options.MultipleLocationData.push(data);\r\n\r\n let currentoptions = inthis.state.options;\r\n currentoptions.MultipleLocationData.push(data);\r\n inthis.setState({ options: currentoptions });\r\n if (inthis.props.multipleLocationHandler)\r\n inthis.props.multipleLocationHandler(data);\r\n }\r\n\r\n //id={this.state.options.containerID}\r\n\r\n getViewProperties() {\r\n const stateoptions = this.state.options;\r\n const viewProperties = stateoptions.viewProperties;\r\n const basemapviewprops = viewProperties;\r\n let basemapprops = { ...basemapviewprops }\r\n /*if (stateoptions && basemapprops) {\r\n const basemapextent = basemapviewprops.extent\r\n let spatialref = basemapextent['basemap_spatialReference'];\r\n if (typeof spatialref === 'number') {\r\n console.log('Base map spatial reference ---------', spatialref);\r\n basemapprops.extent = {}\r\n let customextent = { ...basemapextent }\r\n customextent['spatialReference'] = spatialref; \r\n basemapprops.extent = customextent;\r\n //basemapprops.extent['spatialReference'] = spatialref\r\n }\r\n }*/\r\n //console.log('getViewProperties----------',this.state.options, basemapprops);\r\n return basemapprops;\r\n }\r\n\r\n render() {\r\n const { width, compmap, customMapHeight = null } = this.props;\r\n const height = `calc(120vh - ${customMapHeight ? customMapHeight + 'px' : '305px'})`;\r\n if (this.state.options) {\r\n console.log(this.state.options.basemap, 'BASEMAP Changes')\r\n }\r\n console.log('Base map spatial reference ---------', this.state);\r\n\r\n return (\r\n <div>\r\n {this.state.options &&\r\n <Map className=\"full-screen-map\"\r\n onLoad={this.OnMapLoad}\r\n mapProperties={{ spatialReference: this.state.options.viewProperties.extent.spatialReference }}\r\n viewProperties={this.getViewProperties()}\r\n style={{ width: width ? width : '100%', height: height ? height : '84vh' }}>\r\n\r\n {\r\n this.state.view && <WidgetsConfig\r\n handleSeclectionfromMap={this.props.handleSeclectionfromMap}\r\n SubModuleKey={this.props.SubModuleKey}\r\n gisDomainLookupData={this.props.gisDomainLookupData}\r\n SelectGeomInsteadOfDraw={this.SelectGeomInsteadOfDraw}\r\n HasMultiLocationSelector={this.HasMultiLocationSelector}\r\n options={this.state.options}\r\n onSaveorUpdate={this.onSaveorUpdate}\r\n view={this.state.view}\r\n mapConstants={this.mapConstants}\r\n mapdata={this.props.mapdata}\r\n selectiondata={this.props.selectiondata}\r\n addTaxParcels={(data) => this.addTaxParcels(this, data)}\r\n setStateMapInformation={this.props.setStateMapInformation}\r\n isGridView={this.props.isGridView}\r\n fetchGeomType={this.props.fetchGeomType}\r\n canEdit={this.props.canEdit}\r\n compmap={compmap}\r\n onSaveorUpdateMapResponse={this.props.onSaveorUpdateMapResponse}\r\n multipleLocationHandler={(data) => this.multipleLocationHandler(this, data)}\r\n handlelayerFilter={this.props.handlelayerFilter}\r\n fields={this.props.fields || []}\r\n clearsketch={this.props.clearsketch}\r\n permitTypeId={this.props.permitTypeId}\r\n layerCustomFilters={this.props.layerCustomFilters}\r\n onSelectSaveorUpdate={this.onSelectSaveorUpdate}\r\n />\r\n }\r\n </Map>}\r\n {!this.state.options && <div> </div>}\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage }, dispatch);\r\n}\r\nCMap = connect(null, mapActions)(CMap)\r\nexport default CMap;\r\n\r\n","import { loadModules } from 'esri-loader';\r\nimport { QueryTask, CenterAndZoom, setCenterforMapviewwithFlag, setCenterforMapviewNoFlag,QueryTaskExecuteZoomAddLayerToResponse } from '../util/queryTask';\r\nimport { GeometryEngineTask } from '../util/geometryEngineTask';\r\n\r\nexport function TaxParcelTask(view, config, queryexpression, mapConstants, zoom, isReset = false) {\r\n return new Promise((resolve, reject) => {\r\n if (!loadModules) {\r\n reject('TaxParcelTask: ArcGIS API is not loaded');\r\n return;\r\n }\r\n const TaxParcelzoom = zoom;\r\n if (config && config.TaxParcels) {\r\n config.TaxParcels.queryExpression = queryexpression\r\n\r\n if (config.TaxParcels.queryExpression == null || config.TaxParcels.queryExpression == \"\" || config.TaxParcels.queryExpression == \"1!=1\") {\r\n resolve({ \"Message\": \"Invalid Expression\" });\r\n } else {\r\n if (queryexpression != null && queryexpression != \"\") {\r\n // Specific to AMES project.\r\n //Showing all the taxparcels on the map. Checking the condition for all here\r\n if (queryexpression === 'all') {\r\n\r\n if (queryexpression != undefined && queryexpression != null && queryexpression != \"\") {\r\n //let parcelIdarra = queryexpression.split(\",\");\r\n let geometries = [];\r\n\r\n let querycondition = \"1=1\";\r\n config.TaxParcels.queryExpression = querycondition;\r\n let layer = view.map.layers.find(function (layer) {\r\n return layer.title === \"Tax Parcel Graphics Layer\";\r\n });\r\n\r\n QueryTask(config.TaxParcels, querycondition, 4326).then(\r\n response => {\r\n if (response && response.features) {\r\n loadModules([\r\n \"esri/Graphic\",\r\n \"esri/layers/GraphicsLayer\",\r\n \"esri/layers/FeatureLayer\"\r\n ]).then(([Graphic, GraphicsLayer, FeatureLayer]) => {\r\n\r\n if (!layer) {\r\n layer = new GraphicsLayer({\r\n \"title\": \"Tax Parcel Graphics Layer\", listMode: 'hide'\r\n });\r\n }\r\n if (isReset)\r\n //layer.graphics.removeAll();\r\n\r\n response.features.forEach(function (item) {\r\n //console.log(parcelIdarra[i],\"----------------------parcel Id to test ----------\");\r\n if (item && item.geometry && item.geometry.centroid) {\r\n let taxparcelcenter = item.geometry.centroid;\r\n setCenterforMapviewNoFlag(view, parseFloat(taxparcelcenter.x), parseFloat(taxparcelcenter.y), 4326);\r\n }\r\n geometries.push(item.geometry);\r\n let g = new Graphic({\r\n geometry: item.geometry,\r\n attributes: item.attributes,\r\n symbol: mapConstants.PolygonNoFillSymbol\r\n });\r\n layer.graphics.add(g);\r\n\r\n });\r\n\r\n if (geometries.length > 0) {\r\n if (geometries.length > 1) {\r\n GeometryEngineTask({ \"geometries\": geometries, \"type\": \"union\" }).then(\r\n GeomEngineresponse => {\r\n if (GeomEngineresponse && GeomEngineresponse.centroid)\r\n CenterAndZoom(view, GeomEngineresponse.centroid, TaxParcelzoom);\r\n },\r\n GeomEngineerror => {\r\n // console.log(GeomEngineerror);\r\n });\r\n } else if (geometries.length === 1) {\r\n CenterAndZoom(view, geometries[0], TaxParcelzoom);\r\n }\r\n }\r\n\r\n view.map.layers.add(layer, (config.TaxParcels.LayerIndex || 0));\r\n resolve({ \"Message\": geometries.length + \" Tax Parcels Added\" });\r\n });\r\n }\r\n else {\r\n resolve({ \"Message\": \"Tax Parcels not found\" });\r\n }\r\n },\r\n error => {\r\n console.log(error);\r\n reject({ \"error\": error });\r\n }\r\n );\r\n\r\n }\r\n\r\n } else {\r\n if (queryexpression != undefined && queryexpression != null && queryexpression != \"\") {\r\n let parcelIdarra = queryexpression.split(\",\");\r\n let geometries = [];\r\n for (let i = 0; i <= parcelIdarra.length; i++) {\r\n\r\n if (parcelIdarra[i] != undefined && parcelIdarra[i] != \"\") {\r\n let taxparcelTosend = parcelIdarra[i].split('').join('%');\r\n let querycondition = \"MapTaxlot like('\" + taxparcelTosend + \"')\";\r\n config.TaxParcels.queryExpression = querycondition;\r\n let layer = view.map.layers.find(function (layer) {\r\n return layer.title === \"Tax Parcel Graphics Layer\";\r\n });\r\n\r\n QueryTask(config.TaxParcels, querycondition, 4326).then(\r\n response => {\r\n if (response && response.features) {\r\n loadModules([\r\n \"esri/Graphic\",\r\n \"esri/layers/GraphicsLayer\"\r\n ]).then(([Graphic, GraphicsLayer]) => {\r\n\r\n if (!layer) {\r\n layer = new GraphicsLayer({\r\n \"title\": \"Tax Parcel Graphics Layer\", listMode: 'hide'\r\n });\r\n }\r\n if (isReset)\r\n //layer.graphics.removeAll();\r\n\r\n response.features.forEach(function (item) {\r\n if (item && item.attributes.PIN === parcelIdarra[i]) {\r\n if (item && item.geometry && item.geometry.centroid) {\r\n let taxparcelcenter = item.geometry.centroid;\r\n setCenterforMapviewwithFlag(view, parseFloat(taxparcelcenter.x), parseFloat(taxparcelcenter.y),\r\n 4326, mapConstants.greenFlagsymbol);\r\n\r\n }\r\n geometries.push(item.geometry);\r\n let g = new Graphic({\r\n geometry: item.geometry,\r\n attributes: item.attributes,\r\n symbol: mapConstants.PolygonFillSymbol\r\n });\r\n layer.graphics.add(g);\r\n\r\n }\r\n\r\n });\r\n if (geometries.length > 0) {\r\n if (geometries.length > 1) {\r\n GeometryEngineTask({ \"geometries\": geometries, \"type\": \"union\" }).then(\r\n GeomEngineresponse => {\r\n if (GeomEngineresponse && GeomEngineresponse.centroid)\r\n CenterAndZoom(view, GeomEngineresponse.centroid, TaxParcelzoom);\r\n },\r\n GeomEngineerror => {\r\n // console.log(GeomEngineerror);\r\n });\r\n } else if (geometries.length === 1) {\r\n CenterAndZoom(view, geometries[0], TaxParcelzoom);\r\n }\r\n }\r\n view.map.layers.add(layer, (config.TaxParcels.LayerIndex || 0));\r\n resolve({ \"Message\": geometries.length + \" Tax Parcels Added\" });\r\n });\r\n }\r\n else {\r\n resolve({ \"Message\": \"Tax Parcels not found\" });\r\n }\r\n },\r\n error => {\r\n console.log(error);\r\n reject({ \"error\": error });\r\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 function TaxParcelTaskFeatureLayer(view, config, queryexpression, mapConstants, zoom, showTaxLayer = false, seltaxlotnumber = null) {\r\n return new Promise((resolve, reject) => {\r\n if (!loadModules) {\r\n reject('TaxParcelTask: ArcGIS API is not loaded');\r\n return;\r\n }\r\n const TaxParcelzoom = zoom;\r\n\r\n if (config && config.TaxParcels) {\r\n config.TaxParcels.queryExpression = queryexpression\r\n\r\n if (config.TaxParcels.queryExpression == null || config.TaxParcels.queryExpression == \"\" || config.TaxParcels.queryExpression == \"1!=1\") {\r\n resolve({ \"Message\": \"Invalid Expression\" });\r\n } else {\r\n if (queryexpression != null && queryexpression != \"\") {\r\n // Specific to AMES project.\r\n //Showing all the taxparcels on the map. Checking the condition for all here\r\n if (queryexpression === 'all') {\r\n\r\n if (queryexpression != undefined && queryexpression != null && queryexpression != \"\") {\r\n //let parcelIdarra = queryexpression.split(\",\");\r\n let geometries = [];\r\n\r\n let querycondition = \"1=1\";\r\n config.TaxParcels.queryExpression = querycondition;\r\n\r\n let layer = view.map.layers.find(function (layer) {\r\n return layer.title === \"Tax Parcel Feature Layer\";\r\n });\r\n\r\n QueryTask(config.TaxParcels, querycondition, 4326).then(\r\n response => {\r\n if (response && response.features) {\r\n loadModules([\r\n \"esri/layers/FeatureLayer\",\r\n \"esri/PopupTemplate\"\r\n ]).then(([FeatureLayer, PopupTemplate]) => {\r\n\r\n if (layer) {\r\n view.map.layers.remove(layer);\r\n }\r\n layer = new FeatureLayer({\r\n \"title\": \"Tax Parcel Feature Layer\",\r\n \"url\": config.TaxParcels.url\r\n });\r\n\r\n //Filling the taxparcel layer with tranperent opacity\r\n var filltaxlotsymbol = {\r\n type: \"simple-fill\",\r\n // autocasts as new SimpleFillSymbol()\r\n color: [132, 186, 245, 0.05],\r\n style: \"solid\",\r\n outline: {\r\n // autocasts as new SimpleLineSymbol()\r\n color: \"orange\",\r\n width: 1\r\n }\r\n };\r\n\r\n layer.renderer = {\r\n type: \"simple\",\r\n symbol: filltaxlotsymbol\r\n };\r\n\r\n let title = \"Taxlot Info -AMES\";\r\n let popupTemplate = new PopupTemplate({\r\n // autocasts as new PopupTemplate()\r\n title: title,\r\n content: [{\r\n type: \"fields\",\r\n fieldInfos: [{\r\n fieldName: \"County\",\r\n label: \"County\"\r\n },\r\n {\r\n fieldName: \"MapNumber\",\r\n label: \"MapNumber\"\r\n },\r\n {\r\n fieldName: \"Taxlot\",\r\n label: \"Taxlot\"\r\n },\r\n {\r\n fieldName: \"MapTaxlot\",\r\n label: \"MapTaxlot\"\r\n }]\r\n }]\r\n });\r\n\r\n //layer.popupTemplate = popupTemplate;\r\n layer.outFields = \"*\";\r\n view.map.layers.add(layer, 0);\r\n\r\n try {\r\n //Center and zoom to the taxlot layer for taxlot search\r\n let item = response.features[0];\r\n\r\n //Zoom to the selected taxlot number if exists\r\n if (seltaxlotnumber)\r\n item = response.features.filter(a => a.attributes.PIN == seltaxlotnumber)[0]\r\n\r\n if (item && item.geometry && item.geometry.centroid) {\r\n let taxparcelcenter = item.geometry.centroid;\r\n setCenterforMapviewNoFlag(view, parseFloat(taxparcelcenter.x), parseFloat(taxparcelcenter.y), 4326);\r\n }\r\n if (item && item.geometries)\r\n geometries.push(item.geometry);\r\n\r\n if (geometries.length > 0) {\r\n if (geometries.length > 1) {\r\n GeometryEngineTask({ \"geometries\": geometries, \"type\": \"union\" }).then(\r\n GeomEngineresponse => {\r\n if (GeomEngineresponse && GeomEngineresponse.centroid)\r\n CenterAndZoom(view, GeomEngineresponse.centroid, TaxParcelzoom);\r\n },\r\n GeomEngineerror => {\r\n // console.log(GeomEngineerror);\r\n });\r\n } else if (geometries.length === 1) {\r\n CenterAndZoom(view, geometries[0], TaxParcelzoom);\r\n }\r\n }\r\n } catch (e) { }\r\n\r\n\r\n\r\n resolve({ \"Message\": geometries.length + \" Tax Parcels Added\" });\r\n });\r\n }\r\n else {\r\n resolve({ \"Message\": \"Tax Parcels not found\" });\r\n }\r\n },\r\n error => {\r\n console.log(error);\r\n reject({ \"error\": error });\r\n }\r\n );\r\n\r\n }\r\n\r\n } else {\r\n if (queryexpression != undefined && queryexpression != null && queryexpression != \"\") {\r\n let parcelIdarra = queryexpression.split(\",\");\r\n let geometries = [];\r\n let taxparcelgraphics = [];\r\n let primaryTaxLot = parcelIdarra && parcelIdarra.length > 0 ? parcelIdarra[0] : null\r\n let queryTaxlotsString = ''\r\n for (var i = 0; i < parcelIdarra.length; i++) {\r\n if (queryTaxlotsString === \"\") {\r\n if (parcelIdarra[i] && parcelIdarra[i] != null)\r\n queryTaxlotsString = \"'\" + parcelIdarra[i] + \"'\";\r\n } else {\r\n if (parcelIdarra[i] && parcelIdarra[i] != null)\r\n queryTaxlotsString = queryTaxlotsString + \",'\" + parcelIdarra[i] + \"'\";\r\n }\r\n }\r\n let querycondition = \"MapTaxlot in (\" + queryTaxlotsString + \")\";\r\n config.TaxParcels.queryExpression = querycondition;\r\n\r\n let layer = view.map.layers.find(function (layer) {\r\n //return layer.title === \"Tax Parcel Graphic Layer\";\r\n return layer.title === \"Highlight Layer\";\r\n });\r\n\r\n QueryTask(config.TaxParcels, querycondition, 4326).then(\r\n response => {\r\n if (response && response.features) {\r\n loadModules([\r\n \"esri/Graphic\",\r\n \"esri/layers/GraphicsLayer\",\r\n \"esri/layers/FeatureLayer\",\r\n \"esri/PopupTemplate\"\r\n ]).then(([Graphic, GraphicsLayer, FeatureLayer, PopupTemplate]) => {\r\n\r\n if (!layer) {\r\n layer = new GraphicsLayer({\r\n //\"title\": \"Tax Parcel Graphic Layer\", listMode: 'hide'\r\n \"title\": \"Highlight Layer\", listMode: 'hide'\r\n });\r\n }\r\n layer.graphics.removeAll();\r\n response.features.forEach(function (item, index) {\r\n if (item && item.geometry && item.geometry.centroid) {\r\n let taxparcelcenter = item.geometry.centroid;\r\n setCenterforMapviewNoFlag(view, parseFloat(taxparcelcenter.x), parseFloat(taxparcelcenter.y),\r\n 4326);\r\n }\r\n geometries.push(item.geometry);\r\n let g = new Graphic({\r\n geometry: item.geometry,\r\n attributes: item.attributes,\r\n symbol: (primaryTaxLot && primaryTaxLot == item.attributes.PIN) ? mapConstants.PolygonFillSymbol : mapConstants.PolygonFillSymbolSecondary\r\n });\r\n taxparcelgraphics.push(g);\r\n if (layer.graphics)\r\n layer.graphics.add(g);\r\n });\r\n if (geometries.length > 0) {\r\n if (geometries.length > 1) {\r\n GeometryEngineTask({ \"geometries\": geometries, \"type\": \"union\" }).then(\r\n GeomEngineresponse => {\r\n if (GeomEngineresponse && GeomEngineresponse.centroid)\r\n CenterAndZoom(view, GeomEngineresponse.centroid, TaxParcelzoom);\r\n },\r\n GeomEngineerror => {\r\n // console.log(GeomEngineerror);\r\n });\r\n } else if (geometries.length === 1) {\r\n CenterAndZoom(view, geometries[0], TaxParcelzoom);\r\n }\r\n }\r\n view.map.layers.add(layer, (config.TaxParcels.LayerIndex || 0));\r\n //Set geom information to MAPConstanstans, process further for simplified zoom levels and search\r\n resolve({ \"Message\": geometries.length + \" Tax Parcels Added\", graphics: taxparcelgraphics });\r\n });\r\n }\r\n else {\r\n resolve({ \"Message\": \"Tax Parcels not found\" });\r\n }\r\n },\r\n error => {\r\n console.log(error);\r\n reject({ \"error\": error });\r\n }\r\n );\r\n\r\n // for (let i = 0; i <= parcelIdarra.length; i++) {\r\n //let taxparcelTosend = parcelIdarra[i].split('').join('%');\r\n // if (parcelIdarra[i] != undefined && parcelIdarra[i] != \"\") {\r\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 function TaxParcelLayerTask(view, options, config, feature, mapConstants, queryField=\"SearchField\") {\r\n return new Promise((resolve, reject) => {\r\n QueryTaskExecuteZoomAddLayerToResponse(view, options, config, feature, mapConstants, queryField).then(res => {\r\n resolve(res)\r\n })\r\n })\r\n}\r\n","import { loadModules } from 'esri-loader';\r\nimport { QueryTask, CenterAndZoom, setCenterforMapviewwithFlag } from '../util/queryTask';\r\nimport { GeometryEngineTask } from '../util/geometryEngineTask';\r\n\r\nexport function TaxParcelCenter(view, config, queryexpression, mapConstants, zoom, isReset = false) {\r\n return new Promise((resolve, reject) => {\r\n if (!loadModules) {\r\n reject('TaxParcelTask: ArcGIS API is not loaded');\r\n return;\r\n }\r\n const TaxParcelzoom = zoom;\r\n if (config && config.TaxParcels) {\r\n config.TaxParcels.queryExpression = queryexpression\r\n\r\n if (config.TaxParcels.queryExpression == null || config.TaxParcels.queryExpression == \"\" || config.TaxParcels.queryExpression == \"1!=1\") {\r\n resolve({ \"Message\": \"Invalid Expression\" });\r\n } else {\r\n if (queryexpression != null && queryexpression != \"\") {\r\n if (queryexpression != undefined && queryexpression != null && queryexpression != \"\") {\r\n let parcelIdarra = queryexpression.split();\r\n let geometries = []; \r\n let queryTaxlotsString = ''\r\n for(var i =0; i<parcelIdarra.length; i++ ){\r\n if(queryTaxlotsString === \"\"){\r\n if(parcelIdarra[i] && parcelIdarra[i] != null)\r\n queryTaxlotsString = \"'\"+parcelIdarra[i]+\"'\";\r\n }else{\r\n if(parcelIdarra[i] && parcelIdarra[i] != null)\r\n queryTaxlotsString = queryTaxlotsString + \",'\"+parcelIdarra[i]+\"'\";\r\n } \r\n }\r\n let querycondition = \"PIN in (\" + queryTaxlotsString + \")\";\r\n\r\n\r\n \r\n let layer = view.map.layers.find(function (layer) {\r\n return layer.title === \"Tax Parcel Graphics Layer\";\r\n });\r\n\r\n QueryTask(config.TaxParcels, querycondition, view.spatialReference).then(\r\n response => {\r\n if (response && response.features) {\r\n loadModules([\r\n \"esri/Graphic\",\r\n \"esri/layers/GraphicsLayer\"\r\n ]).then(([Graphic, GraphicsLayer]) => {\r\n\r\n if (!layer) {\r\n layer = new GraphicsLayer({\r\n \"title\": \"Tax Parcel Graphics Layer\", listMode: 'hide'\r\n });\r\n } \r\n\r\n response.features.forEach(function (item) {\r\n if(item && item.attributes.PIN===parcelIdarra[i]){ \r\n geometries.push(item.geometry);\r\n }\r\n });\r\n if (geometries.length > 0) {\r\n if (geometries.length > 1) {\r\n GeometryEngineTask({ \"geometries\": geometries, \"type\": \"union\" }).then(\r\n GeomEngineresponse => {\r\n if (GeomEngineresponse && GeomEngineresponse.centroid)\r\n CenterAndZoom(view, GeomEngineresponse.centroid, TaxParcelzoom);\r\n },\r\n GeomEngineerror => {\r\n // console.log(GeomEngineerror);\r\n });\r\n } else if (geometries.length === 1) {\r\n CenterAndZoom(view, geometries[0], TaxParcelzoom);\r\n }\r\n } \r\n resolve({ \"Message\": geometries.length + \" Tax Parcels centered\" });\r\n });\r\n }\r\n else {\r\n resolve({ \"Message\": \"Tax Parcels not found\" });\r\n }\r\n },\r\n error => {\r\n console.log(error);\r\n reject({ \"error\": error });\r\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","import { createRequest, createGridRequest, requestApi } from '../../helpers/rest'\r\n\r\nexport const customSave = async (params, newData, mapActionsToEffects, savetype) => {\r\n let save = mapActionsToEffects[savetype]\r\n let read = save['read']\r\n let allProm = [];\r\n let fieldValues = {...newData, ...params}\r\n read.map(function(each){\r\n allProm.push(requestApi(createRequest(each, fieldValues)))\r\n })\r\n\r\n const dataval = await Promise.all(allProm).then(results => {\r\n if (results)\r\n return { ...results[0] }\r\n }).catch(error => {\r\n return 'fail'\r\n\r\n })\r\n return dataval\r\n}\r\n\r\nexport const customUpdate = async (params, newData, mapActionsToEffects, savetype) => {\r\n let save = mapActionsToEffects[savetype]\r\n let read = save['read']\r\n let url = read[0].url\r\n read[0].url = `${url.replace(`{Id}`, newData.Id)}`;\r\n let allProm = [];\r\n let fieldValues = {...newData, ...params}\r\n read.map(function(each){\r\n allProm.push(requestApi(createRequest(each, fieldValues)))\r\n })\r\n\r\nconst dataval = await Promise.all(allProm).then(results => {\r\n if (results)\r\n return { ...results[0] }\r\n}).catch(error => {\r\n return 'fail'\r\n\r\n})\r\nreturn dataval\r\n}","import { GetData } from \"../../../core/controls/helpers/requests\"\r\nimport { getEnvVariable } from \"../../../modules/environmentalList\"\r\n\r\nexport const getDropdown = async (type) => {\r\n if (type) {\r\n let url = getEnvVariable('Admin') + `/api/DomainsMapper/Grid/${type}` //getEnvVariable('Admin') + `/api/Domains/values?domainkey=${type}`\r\n return await GetData(url).then(res => {\r\n return res;\r\n // let dropdown = {};\r\n // for (let index = 0; index < res.length; index++) {\r\n // const element = res[index];\r\n // dropdown[element.value] = element.name;\r\n // }\r\n // return dropdown || {}\r\n })\r\n }\r\n return undefined\r\n}","import React, { useState, useEffect } from \"react\";\r\nimport MaterialTable from '@material-table/core';\r\nimport { FormHelperText, FormControl } from \"@material-ui/core\";\r\nimport { customSave, customUpdate } from \"./custom/sectionscustomsave\"\r\nimport { useParams } from \"react-router-dom\";\r\nimport { createRequest, requestApi } from \"../helpers/rest\";\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport { getDropdown } from \"../helpers/domainapi\";\r\nimport DefaultSettings from \"./settings\";\r\nimport moment from 'moment';\r\n\r\nconst Table = props => {\r\n const { handleFieldValue, handlerowClick, hideEditIcon = false, extraProps, shareProps, required, tooltip, columns, actions, toolbar, handleUpdate, handleSave, ...otherProps } = props\r\n const { label, title, helperText, name, xtype, fullWidth, disabled, subname, Urls, edit, isDelete, handleDelete, isUpdate = true, tableName, contexthelp, ...otherConfigs } = otherProps;\r\n const [requiredfield, setRequired] = useState('')\r\n const [error, setError] = useState(false)\r\n const [refresh, setRefresh] = useState(false)\r\n const params = useParams()\r\n\r\n let editicon = hideEditIcon ? false : (edit ? edit : props && props.sharedProps && props.sharedProps.edit ? props.sharedProps.edit : false)\r\n const [gridData, setGridData] = useState({\r\n data: [],\r\n columns: [],\r\n resolve: () => { },\r\n updatedAt: new Date()\r\n });\r\n\r\n useEffect(() => {\r\n if (Urls && Urls.get) {\r\n Promise.all(Urls.get.read.map(each => requestApi(createRequest(each, {}, params)).catch(error => { return error; }))).then(response => {\r\n const [data] = response\r\n gridData.resolve();\r\n setGrid(data.map(x => x.data), columns)\r\n })\r\n }\r\n else setGrid(props.value, extraProps.columns)\r\n }, [])\r\n\r\n\r\n useEffect(() => {\r\n setGrid(props.value, extraProps.columns)\r\n }, [props.value])\r\n\r\n const setGrid = (data = [], columns = []) => {\r\n getDomainApi().then(result => {\r\n setGridData({\r\n data: data,\r\n columns: columns.map(x => {\r\n return {\r\n ...x, lookup: (result && result[x.field]) ? result[x.field].reduce((acc, curr) => { return { ...acc, [curr.value]: curr.name } }, {}) : (x.lookup || undefined)\r\n }\r\n }),\r\n resolve: () => { },\r\n updatedAt: new Date()\r\n })\r\n })\r\n }\r\n\r\n const getDomainApi = (each = []) => {\r\n return getDropdown(tableName)\r\n }\r\n\r\n\r\n useEffect(() => {\r\n if (props.value || (gridData.data && gridData.data.length > 0)) {\r\n gridData.resolve();\r\n setGridData({\r\n data: (props.value || gridData.data),\r\n columns: gridData.columns,\r\n resolve: () => { },\r\n updatedAt: new Date()\r\n })\r\n setRefresh(!refresh)\r\n // setGrid((props.value || gridData.data), columns)\r\n }\r\n }, [gridData.data, props.value]);\r\n\r\n const onRowAdd = newData =>\r\n new Promise((resolve, reject) => {\r\n let currentObj = gridData.columns.filter(each => { if (each.setCurrentUser === true || each.setCurrentDate === true) return each })\r\n if (currentObj && currentObj.length > 0)\r\n currentObj.map(each => {\r\n if (each.setCurrentUser) {\r\n newData[each.field] = localStorage.getItem('profile') ? JSON.parse(localStorage.getItem('profile')).userId : ''\r\n }\r\n else if (each.setCurrentDate){\r\n newData[each.field] = moment(new Date()).format('MM/DD/YYYY')\r\n }\r\n })\r\n if (props.customsave) {\r\n if (Urls && Urls.save) {\r\n Promise.all(Urls.save.read.map(each => requestApi(createRequest(each, newData, params)).catch(error => { return error; }))).then(response => {\r\n const [result] = response;\r\n let tempData = gridData.data || [];\r\n tempData.push(result)\r\n let data = [...tempData];\r\n // data.push(result);\r\n if (data !== 'fail') {\r\n setGrid(data, columns)\r\n setError(false)\r\n setRequired('')\r\n const updatedAt = new Date();\r\n setGridData({ ...gridData, 'data': data, columns: gridData.columns, updatedAt, resolve });\r\n handleFieldValue({ target: { name: name, value: data, checked: false, hold: true }, currentTarget: { dataset: null } })\r\n setRefresh(!refresh)\r\n // setRefresh(!refresh)\r\n // setGridData({\r\n // data: data,\r\n // columns: gridData.columns,\r\n // resolve: resolve,\r\n // updatedAt: updatedAt\r\n // })\r\n\r\n }\r\n })\r\n }\r\n else {\r\n if (handleSave) {\r\n let data = [...gridData.data];\r\n handleSave(newData);\r\n data.push(newData);\r\n setError(false)\r\n setRequired('')\r\n // const updatedAt = new Date();\r\n setGridData({\r\n data: data,\r\n columns: gridData.columns,\r\n resolve: resolve,\r\n updatedAt: new Date()\r\n })\r\n }\r\n }\r\n }\r\n else {\r\n let data = [...gridData.data];\r\n data.push(newData);\r\n setError(false)\r\n setRequired('')\r\n handleFieldValue({ target: { name: name, value: data, checked: false, hold: true }, currentTarget: { dataset: null } })\r\n setGridData({\r\n data: data,\r\n columns: gridData.columns,\r\n resolve: resolve,\r\n updatedAt: new Date()\r\n })\r\n // setGridData({ ...gridData, data, updatedAt, resolve });\r\n\r\n }\r\n });\r\n\r\n\r\n const onRowUpdate = (newData, oldData) =>\r\n new Promise((resolve, reject) => {\r\n if (props.customsave) {\r\n if (Urls && Urls.update) {\r\n Promise.all(Urls.update.read.map(each => requestApi(createRequest(each, { ...newData, ...params })).catch(error => { return error; }))).then(response => {\r\n const [result] = response;\r\n let data = [...gridData.data];\r\n const index = oldData.tableData.id;\r\n data[index] = newData;\r\n if (data != 'fail') {\r\n setGrid(data, columns)\r\n setError(false)\r\n setRequired('')\r\n const updatedAt = new Date();\r\n setGridData({ ...gridData, data, updatedAt, resolve });\r\n handleFieldValue({ target: { name: name, value: data, checked: false, hold: true }, currentTarget: { dataset: null } })\r\n setRefresh(!refresh)\r\n }\r\n })\r\n }\r\n else {\r\n if (handleUpdate) {\r\n handleUpdate(newData);\r\n let data = [...gridData.data];\r\n const index = oldData.tableData.id;\r\n setError(false)\r\n setRequired('')\r\n data[index] = newData;\r\n const updatedAt = new Date();\r\n setGridData({ ...gridData, data, updatedAt, resolve });\r\n }\r\n }\r\n }\r\n else {\r\n let data = [...gridData.data];\r\n const index = oldData.tableData.id;\r\n setError(false)\r\n setRequired('')\r\n data[index] = newData;\r\n const updatedAt = new Date();\r\n setGridData({ ...gridData, data, updatedAt, resolve });\r\n handleFieldValue({ target: { name: name, value: data, checked: false, hold: true }, currentTarget: { dataset: null } })\r\n }\r\n });\r\n\r\n const onRowDelete = oldData =>\r\n new Promise((resolve, reject) => {\r\n let data = [...gridData.data];\r\n const index = oldData.tableData.id;\r\n data.splice(index, 1);\r\n const updatedAt = new Date();\r\n setGridData({ ...gridData, data, updatedAt, resolve });\r\n if (props.customsave) {\r\n if (handleDelete) {\r\n handleDelete(oldData);\r\n setGridData({ ...gridData, data, updatedAt, resolve });\r\n }\r\n else {\r\n let savetype = 'delete'\r\n customSave(props.matchparams, oldData, props.mapActionsToEffects, savetype).then(function (finaldata) {\r\n if (finaldata != 'fail') {\r\n data = finaldata\r\n setGridData({ ...gridData, data, updatedAt, resolve });\r\n handleFieldValue({ target: { name: name, value: data, checked: false, hold: true }, currentTarget: { dataset: null } })\r\n }\r\n })\r\n }\r\n }\r\n else {\r\n handleFieldValue({ target: { name: name, value: data, checked: false, hold: true }, currentTarget: { dataset: null } })\r\n }\r\n });\r\n\r\n const rowClick = (e, rowData) => {\r\n if (rowData.Id && disabled !== true)\r\n handlerowClick({ target: { name: name, value: true, checked: false }, currentTarget: { dataset: null } }, rowData)\r\n }\r\n\r\n //hold value will hold the mapactions exceuting in habdlefieldvalue function , for individual components use in json\r\n\r\n return (\r\n <FormControl error={error} fullWidth={fullWidth ? fullWidth : true} required={required} disabled={disabled || false}>\r\n <InputLabel style={{ fontWeight: 'bold', color: error ? 'red' : 'black' }} shrink> {label} {tooltip && <Tooltip title={tooltip ? tooltip : null}\r\n placement=\"bottom-start\" ><HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em', color: '#007bff', marginLeft: 5 }} onClick={(evt) => contexthelp ?\r\n DefaultSettings.showDrawer(contexthelp) : evt.preventDefault()} />\r\n </Tooltip>} </InputLabel>\r\n {refresh}\r\n <MaterialTable\r\n disabled={disabled || false}\r\n actions={actions}\r\n title={title || label || \"\"}\r\n // style={{ height: '500px','overflow':'auto'}}\r\n onRowClick={rowClick}\r\n columns={gridData.columns}\r\n data={gridData.data}\r\n doubleHorizontalScroll={true}\r\n options={{\r\n search: false,\r\n paging: false,\r\n maxBodyHeight: '500px',\r\n overflowY: 'auto',\r\n emptyRowsWhenPaging: true,\r\n addRowPosition: 'first',\r\n toolbar: (toolbar === false || disabled) ? false : hideEditIcon ? true : ((editicon && disabled !== true) || disabled),\r\n actionsColumnIndex: -1,\r\n headerStyle: {\r\n fontWeight: 'bold'\r\n }\r\n }}\r\n editable={{\r\n isEditable: ((rowData, rows) => (editicon && disabled !== true ? true : false)),\r\n // isDeletable: rowData => (edit && !disabled) || disabled,\r\n onRowAdd: onRowAdd, //disabled ? false :\r\n onRowUpdate: isUpdate && !hideEditIcon ? onRowUpdate : null,\r\n onRowDelete: isDelete ? onRowDelete : null,\r\n }}\r\n />\r\n <FormHelperText color=\"secondary\">{requiredfield}</FormHelperText>\r\n </FormControl>\r\n );\r\n};\r\n\r\nexport default Table;\r\n","import { evaluate } from 'mathjs'\r\nimport moment from 'moment';\r\nconst _ = require('lodash');\r\n\r\n\r\nconst extract = ([beg, end]) => {\r\n const matcher = new RegExp(`${beg}(.*?)${end}`, 'gm');\r\n const normalise = (str) => str.slice(beg.length, end.length * -1);\r\n return function (str) {\r\n if (str)\r\n return (str || \"\").match(matcher).map(normalise);\r\n }\r\n}\r\n\r\nexport const Evaluate = (value, fieldValues, currentrefIds = [], dynamicData = [], sendActualVal = false) => {\r\n let fieldKeys = []\r\n let temp = value.toString()\r\n let tempsendActualVal = sendActualVal || false\r\n\r\n try {\r\n if ((currentrefIds && currentrefIds.length > 0) || Object.keys(dynamicData).length > 0) {\r\n fieldKeys = extract(['{{', '}}'])(value)\r\n fieldKeys && fieldKeys.forEach(each => {\r\n if (!fieldValues.hasOwnProperty(each)) {\r\n let obj = dynamicData[each].find(each => each.refIds.includes(currentrefIds[0]))\r\n temp = _.replace(temp, new RegExp(`{{${each}}}`, \"g\"), obj.value || 0)\r\n }\r\n else temp = _.replace(temp, new RegExp(`{{${each}}}`, \"g\"), fieldValues[each] || 0)\r\n })\r\n }\r\n else {\r\n fieldKeys = Object.keys(fieldValues);\r\n fieldKeys && fieldKeys.forEach(each => {\r\n //setting current user and current date (temp)\r\n if (temp === '{{CURRENT_USERID}}') {\r\n temp = localStorage.getItem('profile') ? JSON.parse(localStorage.getItem('profile')).userId : ''\r\n tempsendActualVal = true\r\n }\r\n else if (temp === '{{CURRENT_USERNAME}}') {\r\n temp = localStorage.getItem('profile') ? JSON.parse(localStorage.getItem('profile')).name : ''\r\n tempsendActualVal = true\r\n }\r\n else if (temp === '{{CURRENT_DATE}}') {\r\n temp = moment(new Date()).format('MM/DD/YYYY')\r\n tempsendActualVal = true\r\n }\r\n // else if (temp.includes('{{CURRENT_DATE}}')) {\r\n // let date = temp.split(',')\r\n // temp = moment(new Date()).add((date && date[1]) || 0, 'days').format('MM/DD/YYYY')\r\n // tempsendActualVal = true\r\n // }\r\n else if (temp === '{{CURRENT_DATETIME}}') {\r\n temp = moment(new Date()).format('MM/DD/YYYY hh:mm a')\r\n tempsendActualVal = true\r\n }\r\n else temp = _.replace(temp, new RegExp(`{{${each}}}`, \"g\"), fieldValues[each] || 0)\r\n })\r\n }\r\n let finalvalue = tempsendActualVal ? temp : evaluate(temp)\r\n if (finalvalue || finalvalue === false)\r\n if (isNaN(finalvalue) || finalvalue === true || finalvalue === false)\r\n return finalvalue //=== 0 ? 0 : finalvalue\r\n else return (finalvalue % 1 !== 0) ? finalvalue.toFixed(4) : finalvalue //Math.abs(\r\n else return finalvalue //=== 0 ? null : 0\r\n }\r\n catch (error) {\r\n if (temp && fieldValues && fieldValues['OverRideCalVal'] === undefined)\r\n return temp === true ? true : false\r\n else return temp\r\n //console.log(error)\r\n }\r\n // return 0\r\n}\r\n\r\nexport const DynamicEvaluate = (each, fieldValues, dynamicData, fields) => {\r\n const { name, type, value } = each;\r\n let currentrefIds = [];\r\n if (fields && fields.length > 0 && fields.find(element => element === name)) {\r\n if (dynamicData[name] && dynamicData[name].length > 0 && type)\r\n return dynamicData[name].filter((dyn, index) => {\r\n if ((dyn.value ? dyn.value : '') === (typeof value === 'number' ? value.toString() : value) && type === '=') {\r\n currentrefIds = [...currentrefIds, dyn.refIds]\r\n return currentrefIds\r\n }\r\n if (Number(dyn.value) !== Number(value) && type === '!=') {\r\n currentrefIds = [...currentrefIds, dyn.refIds]\r\n return currentrefIds\r\n }\r\n if (Number(dyn.value) > Number(value) && type === '>') {\r\n currentrefIds = [...currentrefIds, dyn.refIds]\r\n return currentrefIds\r\n }\r\n if (Number(dyn.value) < Number(value) && type === '<') {\r\n currentrefIds = [...currentrefIds, dyn.refIds]\r\n return currentrefIds\r\n }\r\n if (Number(dyn.value) <= Number(value) && type === '<=') {\r\n currentrefIds = [...currentrefIds, dyn.refIds]\r\n return currentrefIds\r\n }\r\n if (Number(dyn.value) >= Number(value) && type === '>=') {\r\n currentrefIds = [...currentrefIds, dyn.refIds]\r\n return currentrefIds\r\n }\r\n if (type === 'CE')\r\n return Evaluate(value, fieldValues, [], dynamicData)\r\n // else if (currentrefIds.length === 0 && index === dynamicData[name].length - 1) {\r\n // return [false, []];\r\n // }\r\n // else return [false, []];\r\n })\r\n }\r\n else {\r\n let temp = (value && value.toString()) || ''\r\n let tempString = {}\r\n let fieldKeys = extract(['{{', '}}'])(value)\r\n fieldKeys && fieldKeys.forEach(each => {\r\n if (fieldValues.hasOwnProperty(each)) {\r\n _.replace(temp, new RegExp(`{{${each}}}`, \"g\"), fieldValues[each] || 0)\r\n tempString['value'] = fieldValues[each]\r\n }\r\n else tempString['name'] = each\r\n })\r\n if (temp) {\r\n if (temp.includes('>=')) {\r\n tempString['type'] = '>'\r\n }\r\n else if (temp.includes('<')) {\r\n tempString['type'] = '<'\r\n }\r\n else if (temp.includes('=')) {\r\n tempString['type'] = '='\r\n }\r\n }\r\n let data = DynamicEvaluate(tempString, fieldValues, dynamicData, fieldKeys.filter(e => !fieldValues[e]))\r\n if (data && data[0])\r\n return data[0].refIds\r\n }\r\n}\r\n\r\n","import NewApplicationWorkflow from './newapplicationworkflow'\r\nexport const ExternalApplicationSidebar = {\r\n 'WRSINQUIRY': {\r\n \"type\": \"applicationdrawer\",\r\n \"order\": 2,\r\n \"key\": \"drawer\",\r\n \"options\": {\r\n \"icon\": \"alarm\",\r\n \"open\": true,\r\n \"iconsonly\": true,\r\n anchor: 'right',\r\n orientation: 'vertical',\r\n \"items\": [\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Tax Lots\",\r\n \"icon\": \"fa fa-comments-o\",\r\n \"materialicon\": \"beenhereoutlined\",\r\n \"style\": {\r\n 'color': '#d95f09'\r\n },\r\n \"link\": [\r\n {\r\n \"routes\": [\r\n {\r\n \"route\": \"/Records\",\r\n \"routeParams\": \"key\",\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid\"\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid1\"\r\n },\r\n {\r\n \"route\": \"/taxlots\",\r\n },\r\n ],\r\n }\r\n ],\r\n \"key\": \"taxlots\"\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Contacts\",\r\n \"icon\": \"fa fa-user-circle-o\",\r\n \"materialicon\": \"contacts\",\r\n \"style\": {\r\n 'color': '#64b5f6'\r\n },\r\n \"link\": [\r\n {\r\n \"routes\": [\r\n {\r\n \"route\": \"/Records\",\r\n \"routeParams\": \"key\",\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid\"\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid1\"\r\n },\r\n {\r\n \"route\": \"/contacts\",\r\n },\r\n ],\r\n }\r\n ],\r\n key: 'contacts'\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Notes\",\r\n \"icon\": \"fa fa-sticky-note-o\",\r\n \"materialicon\": \"note\",\r\n \"style\": {\r\n 'color': '#b26a00'\r\n },\r\n \"link\": [\r\n {\r\n \"routes\": [\r\n {\r\n \"route\": \"/Records\",\r\n \"routeParams\": \"key\",\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid\"\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid1\"\r\n },\r\n {\r\n \"route\": \"/notes\",\r\n },\r\n ],\r\n }\r\n ],\r\n \"key\": \"notes\"\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Attachments\",\r\n \"icon\": \"fa fa-paperclip\",\r\n \"materialicon\": \"attach_file\",\r\n \"style\": {\r\n 'color': '#f48fb1'\r\n },\r\n \"link\": [\r\n {\r\n \"routes\": [\r\n {\r\n \"route\": \"/Records\",\r\n \"routeParams\": \"key\",\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid\"\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid1\"\r\n },\r\n {\r\n \"route\": \"/attachments\",\r\n },\r\n ],\r\n }\r\n ],\r\n \"key\": \"attachments\"\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Images\",\r\n \"icon\": \"fa fa-files-o\",\r\n \"materialicon\": \"wallpaper\",\r\n \"style\": {\r\n 'color': '#ffb300'\r\n },\r\n \"link\": [\r\n {\r\n \"routes\": [\r\n {\r\n \"route\": \"/Records\",\r\n \"routeParams\": \"key\",\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid\"\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid1\"\r\n },\r\n {\r\n \"route\": \"/images\",\r\n },\r\n ],\r\n }\r\n ],\r\n key: 'images'\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Discussions\",\r\n \"key\": \"discussions\",\r\n \"materialicon\": \"chat\",\r\n \"style\": {\r\n 'color': '#607d8b'\r\n },\r\n // \"link\": [\r\n // {\r\n // \"link\": \"/Record\",\r\n // //\"linkParams\": \"routeid1\"\r\n // },\r\n // {\r\n // \"type\": 'sublink',\r\n // \"link\": \"/discussions\",\r\n // \"regionidParams\": \"/\",\r\n // \"appcontactidParams\": \"/\"\r\n // }\r\n // ],\r\n // \"icon\": \"fa fa-file-text\",\r\n // },\r\n \"link\": [\r\n {\r\n \"routes\": [\r\n {\r\n \"route\": \"/Records\",\r\n \"routeParams\": \"key\",\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid\"\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid1\"\r\n },\r\n {\r\n \"route\": \"/discussions\",\r\n },\r\n ],\r\n }\r\n ],\r\n \"icon\": \"fa fa-file-text\",\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Existing Land Uses\",\r\n \"icon\": \"fa fa-comments-o\",\r\n \"materialicon\": \"landscape\",\r\n \"style\": {\r\n 'color': '#00BFA5'\r\n },\r\n \"link\": [\r\n {\r\n \"routes\": [\r\n {\r\n \"route\": \"/Records\",\r\n \"routeParams\": \"key\",\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid\"\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid1\"\r\n },\r\n {\r\n \"route\": \"/existinglanduse\",\r\n },\r\n ],\r\n }\r\n ],\r\n \"key\": \"existinglanduse\"\r\n },\r\n { //refer for new sidebar\r\n \"type\": \"menu\",\r\n \"title\": \"Proposed Land Uses\",\r\n \"icon\": \"fa fa-comments-o\",\r\n \"materialicon\": \"eject\",\r\n \"style\": {\r\n 'color': '#96332c'\r\n },\r\n \"link\": [\r\n {\r\n \"routes\": [\r\n {\r\n \"route\": \"/Records\",\r\n \"routeParams\": \"key\",\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid\"\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid1\"\r\n },\r\n {\r\n \"route\": \"/proposedlanduse\",\r\n },\r\n ],\r\n }\r\n ],\r\n \"key\": \"proposedlanduse\"\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Notices\",\r\n \"icon\": \"fa fa-building\",\r\n \"materialicon\": \"tab\",\r\n \"style\": {\r\n 'color': '#8bc34a'\r\n },\r\n \"link\": [\r\n {\r\n \"routes\": [\r\n {\r\n \"route\": \"/Records\",\r\n \"routeParams\": \"key\",\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid\"\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid1\"\r\n },\r\n {\r\n \"route\": \"/notices\",\r\n },\r\n ],\r\n }\r\n \r\n ],\r\n // \"icon\": \"fa fa-file-text\",\r\n \"key\": \"notices\"\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Notification Log\",\r\n \"icon\": \"fa fa-envelope-o\",\r\n \"materialicon\": \"notifications_active\",\r\n \"style\": {\r\n 'color': '#40c4ff'\r\n },\r\n \"link\": [\r\n { \"routes\": [\r\n {\r\n \"route\": \"/Records\",\r\n \"routeParams\": \"key\",\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid\"\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid1\"\r\n },\r\n {\r\n \"route\": \"/notificationlog\",\r\n },\r\n ],\r\n }\r\n \r\n ],\r\n key: 'notificationlog'\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"History\",\r\n \"icon\": \"fa fa-files-o\",\r\n \"materialicon\": \"history\",\r\n \"style\": {\r\n 'color': '#f44336'\r\n },\r\n \"link\": [\r\n {\r\n \"routes\": [\r\n {\r\n \"route\": \"/Records\",\r\n \"routeParams\": \"key\",\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid\"\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid1\"\r\n },\r\n {\r\n \"route\": \"/history\",\r\n },\r\n ],\r\n }\r\n ],\r\n key: 'history'\r\n },\r\n \r\n \r\n \r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Description Of Construction\",\r\n // \"icon\": \"fa fa-files-o\",\r\n // \"materialicon\": \"featured_play_list\",\r\n // \"style\": {\r\n // 'color': '#6c3575'\r\n // },\r\n // \"link\": [\r\n // {\r\n // \"link\": \"/Record\"\r\n // },\r\n // {\r\n // \"link\": \"/Descofconstruction\",\r\n // \"type\": 'sublink',\r\n // //\"params\": \"applicationnumber\"\r\n // }\r\n // ],\r\n // key: 'descriptionofconstruction'\r\n // },\r\n\r\n \r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Inspection\",\r\n // \"icon\": \"fa fa-files-o\",\r\n // \"materialicon\": \"policy\",\r\n // \"style\": {\r\n // 'color': '#827717'\r\n // },\r\n // \"link\": [\r\n // {\r\n // \"routes\": [\r\n // {\r\n // \"route\": \"/Records\",\r\n // \"routeParams\": \"key\",\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid\"\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid1\"\r\n // },\r\n // {\r\n // \"route\": \"/inspections\",\r\n // },\r\n // ],\r\n // }\r\n // ],\r\n // \"key\": \"inspections\"\r\n // },\r\n\r\n \r\n \r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Workflow\",\r\n \"icon\": \"fa fa-files-o\",\r\n \"materialicon\": \"call_split\",\r\n \"style\": {\r\n 'color': '#3e2723'\r\n },\r\n button: {\r\n type: 'slidingbutton',\r\n \"materialicon\": \"call_split\",\r\n \"key\": \"workflowbutton\",\r\n \"options\": {\r\n \"icon\": true,\r\n \"name\": \"Workflow\",\r\n \"customstyling\": true,\r\n \"buttonprops\": {\r\n \"text\": \"Workflow\"\r\n }\r\n },\r\n components: [\r\n NewApplicationWorkflow\r\n ]\r\n },\r\n // \"link\": [\r\n // {\r\n // \"link\": \"/Administration/applicationreview/\",\r\n // \"params\": \"applicationnumber\"\r\n // },\r\n // {\r\n // \"type\": 'sublink',\r\n // \"link\": \"/Workflow\",\r\n\r\n // }\r\n // // /Administration/applicationreview/{applicationnumber}/Workflow\r\n // ],\r\n key: 'workflow'\r\n },\r\n\r\n ]\r\n }\r\n },\r\n 'WRSAPPLICATIONS': {\r\n \"type\": \"applicationdrawer\",\r\n \"order\": 2,\r\n \"key\": \"drawer\",\r\n \"options\": {\r\n \"icon\": \"alarm\",\r\n \"open\": true,\r\n \"iconsonly\": true,\r\n anchor: 'right',\r\n orientation: 'vertical',\r\n \"items\": [\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Existing Land Uses\",\r\n \"icon\": \"fa fa-comments-o\",\r\n \"materialicon\": \"landscape\",\r\n \"style\": {\r\n 'color': '#00BFA5'\r\n },\r\n \"link\": [\r\n {\r\n \"routes\": [\r\n {\r\n \"route\": \"/Records\",\r\n \"routeParams\": \"key\",\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid\"\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid1\"\r\n },\r\n {\r\n \"route\": \"/existinglanduse\",\r\n },\r\n ],\r\n }\r\n ],\r\n \"key\": \"existinglanduse\"\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Proposed Land Uses\",\r\n \"icon\": \"fa fa-comments-o\",\r\n \"materialicon\": \"eject\",\r\n \"style\": {\r\n 'color': '#96332c'\r\n },\r\n \"link\": [\r\n {\r\n \"routes\": [\r\n {\r\n \"route\": \"/Records\",\r\n \"routeParams\": \"key\",\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid\"\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid1\"\r\n },\r\n {\r\n \"route\": \"/proposedlanduse\",\r\n },\r\n ],\r\n }\r\n ],\r\n \"key\": \"proposedlanduse\"\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Contacts\",\r\n \"icon\": \"fa fa-user-circle-o\",\r\n \"materialicon\": \"contacts\",\r\n \"style\": {\r\n 'color': '#64b5f6'\r\n },\r\n \"link\": [\r\n {\r\n \"routes\": [\r\n {\r\n \"route\": \"/Records\",\r\n \"routeParams\": \"key\",\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid\"\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid1\"\r\n },\r\n {\r\n \"route\": \"/contacts\",\r\n },\r\n ],\r\n }\r\n ],\r\n key: 'contacts'\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Tax Lots\",\r\n \"icon\": \"fa fa-comments-o\",\r\n \"materialicon\": \"beenhereoutlined\",\r\n \"style\": {\r\n 'color': '#d95f09'\r\n },\r\n \"link\": [\r\n {\r\n \"routes\": [\r\n {\r\n \"route\": \"/Records\",\r\n \"routeParams\": \"key\",\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid\"\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid1\"\r\n },\r\n {\r\n \"route\": \"/taxlots\",\r\n },\r\n ],\r\n }\r\n ],\r\n \"key\": \"taxlots\"\r\n },\r\n \r\n\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Collaboration\",\r\n // \"icon\": \"fa fa-comments-o\",\r\n // \"materialicon\": \"group_work\",\r\n // \"style\": {\r\n // 'color': '#2c3f7d'\r\n // },\r\n // \"link\": [\r\n // {\r\n // \"routes\": [\r\n // {\r\n // \"route\": \"/Records\",\r\n // \"routeParams\": \"key\",\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid\"\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid1\"\r\n // },\r\n // {\r\n // \"route\": \"/collaboration\",\r\n // },\r\n // ],\r\n // }\r\n // ],\r\n // \"key\": \"collaboration\"\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"History\",\r\n // \"icon\": \"fa fa-files-o\",\r\n // \"materialicon\": \"history\",\r\n // \"style\": {\r\n // 'color': '#f44336'\r\n // },\r\n // \"link\": [\r\n // {\r\n // \"routes\": [\r\n // {\r\n // \"route\": \"/Records\",\r\n // \"routeParams\": \"key\",\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid\"\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid1\"\r\n // },\r\n // {\r\n // \"route\": \"/history\",\r\n // },\r\n // ],\r\n // }\r\n // ],\r\n // key: 'history'\r\n // },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Notes\",\r\n \"icon\": \"fa fa-sticky-note-o\",\r\n \"materialicon\": \"note\",\r\n \"style\": {\r\n 'color': '#b26a00'\r\n },\r\n \"link\": [\r\n {\r\n \"routes\": [\r\n {\r\n \"route\": \"/Records\",\r\n \"routeParams\": \"key\",\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid\"\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid1\"\r\n },\r\n {\r\n \"route\": \"/notes\",\r\n },\r\n ],\r\n }\r\n\r\n ],\r\n \"key\": \"notes\"\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Discussions\",\r\n \"key\": \"discussions\",\r\n \"materialicon\": \"chat\",\r\n \"style\": {\r\n 'color': '#607d8b'\r\n },\r\n \"link\": [\r\n {\r\n \"routes\": [\r\n {\r\n \"route\": \"/Records\",\r\n \"routeParams\": \"key\",\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid\"\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid1\"\r\n },\r\n {\r\n \"route\": \"/discussions\",\r\n },\r\n ],\r\n }\r\n ],\r\n \"key\": \"discussions\"\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Notices\",\r\n \"icon\": \"fa fa-building\",\r\n \"materialicon\": \"tab\",\r\n \"style\": {\r\n 'color': '#8bc34a'\r\n },\r\n \"link\": [\r\n {\r\n \"routes\": [\r\n {\r\n \"route\": \"/Records\",\r\n \"routeParams\": \"key\",\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid\"\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid1\"\r\n },\r\n {\r\n \"route\": \"/notices\",\r\n },\r\n ],\r\n }\r\n\r\n ],\r\n // \"icon\": \"fa fa-file-text\",\r\n \"key\": \"notices\"\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Notification Log\",\r\n \"icon\": \"fa fa-envelope-o\",\r\n \"materialicon\": \"notifications_active\",\r\n \"style\": {\r\n 'color': '#40c4ff'\r\n },\r\n \"link\": [\r\n {\r\n \"routes\": [\r\n {\r\n \"route\": \"/Records\",\r\n \"routeParams\": \"key\",\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid\"\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid1\"\r\n },\r\n {\r\n \"route\": \"/notificationlog\",\r\n },\r\n ],\r\n }\r\n ],\r\n \"key\": \"notificationlog\"\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Attachments\",\r\n \"icon\": \"fa fa-paperclip\",\r\n \"materialicon\": \"attach_file\",\r\n \"style\": {\r\n 'color': '#f48fb1'\r\n },\r\n \"link\": [\r\n {\r\n \"routes\": [\r\n {\r\n \"route\": \"/Records\",\r\n \"routeParams\": \"key\",\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid\"\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid1\"\r\n },\r\n {\r\n \"route\": \"/attachments\",\r\n },\r\n ],\r\n }\r\n\r\n ],\r\n \"key\": \"attachments\"\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Images\",\r\n \"icon\": \"fa fa-files-o\",\r\n \"materialicon\": \"wallpaper\",\r\n \"style\": {\r\n 'color': '#ffb300'\r\n },\r\n \"link\": [\r\n {\r\n \"routes\": [\r\n {\r\n \"route\": \"/Records\",\r\n \"routeParams\": \"key\",\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid\"\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid1\"\r\n },\r\n {\r\n \"route\": \"/images\",\r\n },\r\n ],\r\n }\r\n\r\n ],\r\n key: 'images'\r\n },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"History\",\r\n \"icon\": \"fa fa-files-o\",\r\n \"materialicon\": \"history\",\r\n \"style\": {\r\n 'color': '#f44336'\r\n },\r\n \"link\": [\r\n {\r\n \"routes\": [\r\n {\r\n \"route\": \"/Records\",\r\n \"routeParams\": \"key\",\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid\"\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid1\"\r\n },\r\n {\r\n \"route\": \"/history\",\r\n },\r\n ],\r\n }\r\n ],\r\n key: 'history'\r\n },\r\n \r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Property Group\",\r\n // \"icon\": \"fa fa-comments-o\",\r\n // \"materialicon\": \"home_work\",\r\n // \"style\": {\r\n // 'color': '#7b1fa2'\r\n // },\r\n // \"link\": [\r\n // {\r\n // \"routes\": [\r\n // {\r\n // \"route\": \"/Records\",\r\n // \"routeParams\": \"key\",\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid\"\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid1\"\r\n // },\r\n // {\r\n // \"route\": \"/propertydetails\",\r\n // },\r\n // ],\r\n // }\r\n // ],\r\n // \"key\": \"propertydetails\"\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Change of Use\",\r\n // \"icon\": \"fa fa-comments-o\",\r\n // \"materialicon\": \"shuffle\",\r\n // hide: true,\r\n // \"style\": {\r\n // 'color': '#607d8b'\r\n // },\r\n // \"link\": [\r\n // {\r\n // \"routes\": [\r\n // {\r\n // \"route\": \"/Records\",\r\n // \"routeParams\": \"key\",\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid\"\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid1\"\r\n // },\r\n // {\r\n // \"route\": \"/changeofuse\",\r\n // },\r\n // ],\r\n // }\r\n // ],\r\n // \"key\": \"changeofuse\"\r\n // },\r\n\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Insurance and Bonds\",\r\n // \"icon\": \"fa fa-comments-o\",\r\n // \"materialicon\": \"account_balance_wallet\",\r\n // \"style\": {\r\n // 'color': '#ea156d'\r\n // },\r\n // \"link\": [\r\n // {\r\n // \"routes\": [\r\n // {\r\n // \"route\": \"/Records\",\r\n // \"routeParams\": \"key\",\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid\"\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid1\"\r\n // },\r\n // {\r\n // \"route\": \"/insuranceandbonds\",\r\n // },\r\n // ],\r\n // }\r\n // ],\r\n // \"key\": \"InsuranceAndBond\"\r\n // },\r\n\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Completeness Review\",\r\n // \"icon\": \"fa fa-comments-o\",\r\n // \"materialicon\": \"assignment_turned_in\",\r\n // \"style\": {\r\n // 'color': '#0c4986'\r\n // },\r\n // \"link\": [{\r\n // \"routes\": [\r\n // {\r\n // \"route\": \"/Records\",\r\n // \"routeParams\": \"key\",\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid\"\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid1\"\r\n // },\r\n // {\r\n // \"route\": \"/completenesscheck\",\r\n // },\r\n // ],\r\n // }\r\n // ],\r\n // \"key\": \"CompletenessCheck\"\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Site Visit\",\r\n // \"icon\": \"fa fa-comments-o\",\r\n // \"materialicon\": \"work_outlineIcon\",\r\n // \"style\": {\r\n // 'color': '#bf0b3e'\r\n // },\r\n // \"link\": [\r\n // {\r\n // \"routes\": [\r\n // {\r\n // \"route\": \"/Records\",\r\n // \"routeParams\": \"key\",\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid\"\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid1\"\r\n // },\r\n // {\r\n // \"route\": \"/sitevisit\",\r\n // },\r\n // ],\r\n // }\r\n // ],\r\n // \"key\": \"sitevisit\"\r\n // },\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Design\",\r\n // \"icon\": \"fa fa-comments-o\",\r\n // \"materialicon\": \"category\",\r\n // \"style\": {\r\n // 'color': '#f9a825'\r\n // },\r\n // \"link\": [\r\n // {\r\n // \"routes\": [\r\n // {\r\n // \"route\": \"/Records\",\r\n // \"routeParams\": \"key\",\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid\"\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid1\"\r\n // },\r\n // {\r\n // \"route\": \"/design\",\r\n // },\r\n // ],\r\n // }\r\n\r\n // ],\r\n // \"key\": \"design\"\r\n // },\r\n \r\n \r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Description Of Construction\",\r\n // \"icon\": \"fa fa-files-o\",\r\n // \"materialicon\": \"featured_play_list\",\r\n // \"style\": {\r\n // 'color': '#6c3575'\r\n // },\r\n // \"link\": [\r\n // {\r\n // \"routes\": [\r\n // {\r\n // \"route\": \"/Records\",\r\n // \"routeParams\": \"key\",\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid\"\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid1\"\r\n // },\r\n // {\r\n // \"route\": \"/descriptionofconstruction\",\r\n // },\r\n // ],\r\n // }\r\n\r\n // ],\r\n // key: 'descriptionofconstruction'\r\n // },\r\n {\r\n \"type\": \"menu\",\r\n \"title\": \"Workflow\",\r\n \"icon\": \"fa fa-files-o\",\r\n \"materialicon\": \"call_split\",\r\n \"style\": {\r\n 'color': '#3e2723'\r\n },\r\n button: {\r\n type: 'slidingbutton',\r\n \"materialicon\": \"call_split\",\r\n \"key\": \"workflowbutton\",\r\n \"options\": {\r\n \"icon\": true,\r\n \"name\": \"Workflow\",\r\n \"customstyling\": true,\r\n \"buttonprops\": {\r\n \"text\": \"Workflow\"\r\n }\r\n },\r\n components: [\r\n NewApplicationWorkflow\r\n ]\r\n },\r\n // \"link\": [\r\n // {\r\n // \"link\": \"/Administration/applicationreview/\",\r\n // \"params\": \"applicationnumber\"\r\n // },\r\n // {\r\n // \"type\": 'sublink',\r\n // \"link\": \"/Workflow\",\r\n\r\n // }\r\n // // /Administration/applicationreview/{applicationnumber}/Workflow\r\n // ],\r\n key: 'workflow'\r\n },\r\n \r\n\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Inspection\",\r\n // \"icon\": \"fa fa-files-o\",\r\n // \"materialicon\": \"policy\",\r\n // \"style\": {\r\n // 'color': '#827717'\r\n // },\r\n // \"link\": [\r\n // {\r\n // \"routes\": [\r\n // {\r\n // \"route\": \"/Records\",\r\n // \"routeParams\": \"key\",\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid\"\r\n // },\r\n // {\r\n // \"route\": \"\",\r\n // \"routeParams\": \"routeid1\"\r\n // },\r\n // {\r\n // \"route\": \"/inspections\",\r\n // },\r\n // ],\r\n // }\r\n // ],\r\n // \"key\": \"inspections\"\r\n // },\r\n\r\n\r\n // {\r\n // \"type\": \"menu\",\r\n // \"title\": \"Internal Comments\",\r\n // \"icon\": \"fa fa-comments-o\",\r\n // \"materialicon\": \"people_alt\",\r\n // \"style\": {\r\n // 'color': '#9fa8da'\r\n // },\r\n // \"link\": [\r\n // {\r\n // \"link\": \"/Administration/applicationreview\",\r\n // //\"linkParams\": \"routeid1\"\r\n // },\r\n // {\r\n // \"type\": 'sublink',\r\n // \"link\": \"/internalcomments\",\r\n\r\n // }\r\n // ],\r\n // \"key\": \"internalcomments\"\r\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 Description: Creates drawer on the left side. Needs to be modified to make it generic.\r\n Required props: Used internally by other components.\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\nimport { Divider, Icon, Tooltip } from '@material-ui/core';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Box from '@material-ui/core/Box';\r\nimport Drawer from '@material-ui/core/Drawer';\r\nimport ListItem from '@material-ui/core/ListItem';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport Tabs from '@material-ui/core/Tabs';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport PropTypes from 'prop-types';\r\nimport React, { Component, Fragment } from 'react';\r\nimport { Link, withRouter } from \"react-router-dom\";\r\nimport { handleRules } from '../../core/controls/effects/effects';\r\n\r\nconst styles = theme => ({\r\n paperAnchorRight: {\r\n top: 'auto',\r\n maxHeight: '100%',\r\n },\r\n root: {\r\n width: 300\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 <Typography\r\n component=\"div\"\r\n role=\"tabpanel\"\r\n hidden={value !== index}\r\n id={`scrollable-force-tabpanel-${index}`}\r\n aria-labelledby={`scrollable-force-tab-${index}`}\r\n {...other}\r\n >\r\n {value === index && <Box p={3}>{children}</Box>}\r\n </Typography>\r\n );\r\n}\r\n\r\nTabPanel.propTypes = {\r\n children: PropTypes.node,\r\n index: PropTypes.any.isRequired,\r\n value: PropTypes.any.isRequired,\r\n};\r\n\r\nfunction a11yProps(index) {\r\n return {\r\n id: `scrollable-force-tab-${index}`,\r\n 'aria-controls': `scrollable-force-tabpanel-${index}`,\r\n };\r\n}\r\n\r\nclass LeftSideBar extends Component {\r\n\r\n state = {\r\n open: false,\r\n value: 0,\r\n }\r\n /**\r\n *********************************************************\r\n Description: renders the sidebar with icons. Each icon is a link which when clicked changes the route\r\n Required props: N/A.\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n\r\n componentDidMount() {\r\n this.setState({ open: this.props.open })\r\n }\r\n componentDidUpdate(prevProps, prevState) {\r\n if (this.props.open !== prevProps.open) {\r\n this.setState({ open: this.props.open })\r\n }\r\n if ((this.props && this.props.match && this.props.match.params && prevProps.match && prevProps.match.params) && (this.props.match.params.sidebar !== prevProps.match.params.sidebar)) {\r\n this.handleClose();\r\n }\r\n }\r\n handleOpen = () => {\r\n this.setState({ open: true })\r\n };\r\n\r\n handleClose = () => {\r\n let e = {}\r\n this.props.handleSidebar(e, false)\r\n this.setState({ open: false });\r\n\r\n };\r\n\r\n handleChange = () => {\r\n\r\n }\r\n\r\n sidebarList = () => {\r\n const { options, fieldValues } = this.props\r\n const { items } = options\r\n let pathcontains = this.props && this.props.match && this.props.match.url ? this.props.match.url.substring(this.props.match.url.lastIndexOf('/') + 1) : \"\"\r\n let displayOrientation = options && options.orientation ? options.orientation : 'horizontal'\r\n return (\r\n items && items.map((each, idx) => {\r\n const { key, link, hidecondition, check } = each\r\n let path = ''\r\n let condition = null;\r\n if (check) {\r\n condition = !handleRules(check, fieldValues)\r\n }\r\n else if (hidecondition) {\r\n hidecondition.forEach(element => {\r\n const { Name, Value, prevcondition, getfrom, notEquals } = element;\r\n\r\n let getdatafrom = getfrom === \"localstorage\" ? 'localstorage' : getfrom === \"requestdata\" ?\r\n ['reqdata'] : getfrom === \"dataItem\" ? this.props.dataItem : getfrom === \"params\" && this.props &&\r\n this.props.match && this.props.match.params ? this.props.match.params : this.props\r\n if (getdatafrom) {\r\n condition = prevcondition && prevcondition === 'or' && condition === true ? true :\r\n prevcondition === 'and' && condition === false ? false : (notEquals ? (getfrom === \"localstorage\" ? localStorage.getItem(Name) !== Value :\r\n getdatafrom[Name] !== Value) : (getfrom === \"localstorage\" ? localStorage.getItem(Name) === Value : getdatafrom[Name] === Value)) ? true : false\r\n }\r\n });\r\n }\r\n if (condition) {\r\n return null\r\n }\r\n else if (link) {\r\n if (Array.isArray(link)) {\r\n link.forEach(e => {\r\n const { link, type, routes, linkParams, params } = e\r\n if (Array.isArray(routes)) {\r\n routes.forEach(each => {\r\n const { route, routeParams, matchProps } = each\r\n if (routeParams) {\r\n path += route + \"/\" + this.props.match.params[routeParams]\r\n }\r\n else if (matchProps) {\r\n path += route + \"/\" + this.props.results[matchProps]\r\n }\r\n else {\r\n path += route\r\n }\r\n })\r\n }\r\n else {\r\n if (linkParams) path += link + this.props.match.params[linkParams]\r\n else if (params) path += link + this.props[params]\r\n else path += link\r\n }\r\n\r\n })\r\n }\r\n else path = link\r\n return <div className={each.hide ? this.props.hide ? 'd-none' : 'd-block' : 'd-block'} key={idx}><Tooltip title={each.title} placement=\"top\">\r\n <Link key={key} to={path} >\r\n <ListItem button style={{ backgroundColor: (key === pathcontains) ? \"#d8e7f3\" : \"#ffffff\" }}>\r\n < Icon fontSize=\"small\" style={each.style}>{each.materialicon}</Icon>\r\n {(key === pathcontains) && <Typography variant=\"caption\" display=\"block\" style={{ color: \"#0076A5\" }} className=\"pl-1 pt-1\" gutterBottom>\r\n <b>{each.title}</b>\r\n </Typography>}\r\n {(key !== pathcontains) && <Typography variant=\"caption\" display=\"block\" style={{ color: \"#000000\" }} className=\"pl-1 pt-1\" gutterBottom>\r\n {each.title}\r\n </Typography>}\r\n </ListItem>\r\n {displayOrientation === 'vertical' && <Divider />}\r\n </Link>\r\n </Tooltip>\r\n </div>\r\n }\r\n })\r\n )\r\n }\r\n\r\n\r\n render() {\r\n const { classes, options, } = this.props\r\n const { open } = this.state\r\n let displayOrientation = options && options.orientation ? options.orientation : 'horizontal'\r\n return (\r\n <Fragment>\r\n {displayOrientation === 'horizontal' && <AppBar position=\"static\" color=\"#808080\" className='col-sm-12'>\r\n <Tabs\r\n value={this.state.value}\r\n onChange={this.handleChange}\r\n indicatorColor=\"white\"\r\n variant=\"scrollable\"\r\n scrollButtons=\"auto\"\r\n aria-label=\"scrollable auto tabs example\"\r\n >\r\n {this.sidebarList()}\r\n </Tabs>\r\n </AppBar>}\r\n {displayOrientation === 'vertical' && <div className=\"eps-application-drawer\">\r\n <Drawer\r\n open={open}\r\n anchor=\"right\"\r\n classes={{\r\n paperAnchorRight: classes.paperAnchorRight,\r\n root: classes.root\r\n }}\r\n onClose={this.handleClose}\r\n >\r\n {this.sidebarList()}\r\n </Drawer></div>}\r\n </Fragment>\r\n )\r\n }\r\n\r\n}\r\n\r\nexport default withStyles(styles)(withRouter(LeftSideBar));","/**\r\n *********************************************************\r\n Description: Form Fields Container.Manages Form fields.\r\n Required props: type of the form and form fields (components) are required.\r\n limitations : Can be used only when you need that fields should be completely controlled by Form. For example, cannot be used in scenarios where map is\r\n included as map is not controlled by form. Contains validations, displaying the components based on certain conditions, enabling or disabling the components based on conditions,\r\n getting the values from service and saving the values.\r\n *********************************************************\r\n**/\r\n\r\n\r\n\r\n\r\nimport Button from '@material-ui/core/Button';\r\nimport moment from 'moment';\r\nimport React, { Component, Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { bindActionCreators } from 'redux';\r\nimport NotificatinoEditor from \"../../controls/components/custom/notificationeditor\";\r\nimport { snackbarMessage, unsavedData, setRecordData } from '../../actions';\r\nimport { getEnvVariable } from '../../../modules/environmentalList';\r\nimport CustomAlert from './calertbox';\r\nimport FormHeader from './cformheader';\r\nimport ConfirmationDialog from './confirmationdialog';\r\nimport SubForm from './csubform';\r\nimport { requestApi } from './utilities';\r\nimport { globalvalidate } from './validations';\r\n//import { createRequest } from '../../controls/helpers/rest';\r\nimport { conditionsHandle } from '../../modules/form/conditions';\r\nimport { setProfile } from '../../security/actions';\r\nimport DefaultSettings from '../../controls/components/settings';\r\nconst _ = require('lodash');\r\n\r\nconst initvalues = {\r\n dropdown: '',\r\n textbox: '',\r\n checkbox: false,\r\n radio: false,\r\n text: ''\r\n}\r\n\r\nconst formstyles = {\r\n formcontainer: {\r\n //margin: 15\r\n },\r\n formrow: {\r\n margin: 10\r\n },\r\n\r\n itemrow: {\r\n margin: 0\r\n }\r\n}\r\n\r\nclass CFormContainer extends Component {\r\n constructor(props) {\r\n\r\n /**\r\n *********************************************************\r\n Description: Initialisation of the component.\r\n formControlsConfigs: contains the initial configuration details of each form field\r\n formControls: Manages the values the of form fields. It contains errors, value, dropdownvalues, edit, display, effect,\r\n display - property that hides or shows the components.\r\n edit - to show in editable or non-editable format.\r\n dropdownvalues- necessary for dropdowns.\r\n effect - Currenlty, it is used for initial hiding or showing of the components.Needs to remove this property and use display.\r\n errors - Whether the field has an error.\r\n\r\n results: Contains final results to be saved.\r\n errors: It is a boolean value. If there are errors the form will not be saved.\r\n changedFieldName: It is an array and contains the name and value of the fields whose values have changed. This is needed to update the values in the fields. Values\r\n are passed from form to the fields.\r\n errfieldnames: Contains error and helpertext corresponding to each field mapped accroding to fieldname.\r\n subcomp: remove subcomp property\r\n Required props: compmap, components, options\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n\r\n\r\n super(props);\r\n // stores all the configs except values and validations of form fields\r\n this.formControlsConfigs = {};\r\n // stores values and validations of form fields\r\n this.storeFormControlInitValues = {};\r\n\r\n const { compmap, components, options, customedit } = props\r\n const { headerProps } = options\r\n const { editbutton } = headerProps ? headerProps : {}\r\n\r\n this.effects = {}\r\n this.initialresults = null\r\n components.forEach(each => {\r\n const { options, type } = each\r\n const { name, initialvalue, conditions, ...otherOptions } = options\r\n const transformProps = options.transformProps\r\n // stores the intial confiurations of fields\r\n this.formControlsConfigs[name] = { name: name, type: type, conditions: conditions, ...otherOptions }\r\n // whether to hide or show the field initially\r\n this.effects[name] = {\r\n show: true,\r\n hide: false,\r\n load: false\r\n }\r\n this.storeFormControlInitValues[name] = {\r\n value: transformProps ? transformProps[initialvalue] : (initialvalue || initvalues[type]),\r\n error: false,\r\n touched: 0,\r\n dropdownvalues: null,\r\n edit: customedit || (typeof editbutton !== 'undefined' ? (!editbutton || false) : false),\r\n editduplicate: !editbutton || false,\r\n effect: this.effects[name],\r\n callbacksave: false\r\n }\r\n })\r\n let tempinitalResults = this.props.results || this.setInitialResults()\r\n\r\n this.state = {\r\n formControls: { ...this.storeFormControlInitValues },\r\n results: tempinitalResults,\r\n compareresults: tempinitalResults,\r\n changedFieldName: null,\r\n errors: false,\r\n errfieldnames: {},\r\n opensnackbar: false,\r\n snackbarmessageType: '',\r\n snackbarmessage: '',\r\n components: components,\r\n subcomp: {},\r\n isedited: false,\r\n showview: false,\r\n showsavebtn: false,\r\n isfieldchanged: false,\r\n displayalert: false,\r\n openNotificationEditor: false,\r\n openconfirmation: false,\r\n closeviewconfirmation: false,\r\n navigatingnext: false,\r\n navigatingprev: false,\r\n hideediticon: false,\r\n hideduplicateicon: false,\r\n callbacksaveval: false,\r\n hidesavebutton: false,\r\n customvalue: {}\r\n };\r\n\r\n\r\n }\r\n\r\n /**\r\n *********************************************************\r\n Description: Used when the form components needs to be a child of other component.Get the field values from other component rather than fetching the values.\r\n Required props: results.\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (this.props && this.props.showcustomvalidations && prevProps.hascustomvalidations !== this.props.hascustomvalidations) {\r\n if (!(_.isEmpty(this.props.errordata))) {\r\n this.onError(this.props.errordata)\r\n }\r\n }\r\n if (prevState !== this.state && !this.props.options.excludegetstate) {\r\n return this.props.getState && this.props.getState(this.state);\r\n }\r\n\r\n if (prevProps.results !== this.props.results) {\r\n const { formControls } = this.state\r\n let tempformControls = {}\r\n let tempchangedFieldName = []\r\n const { results } = this.props\r\n if (results) {// Added as this is undefined on change of section\r\n let resultskeys = Object.keys(results)\r\n resultskeys.forEach(each => {\r\n if (formControls[each]) {\r\n tempformControls[each] = { ...formControls[each], value: results[each] }\r\n tempchangedFieldName.push({ name: each, value: results[each] })\r\n }\r\n })\r\n this.setState({\r\n results: this.props.results,\r\n formControls: tempformControls,\r\n changedFieldName: tempchangedFieldName\r\n }, () => {\r\n this.fieldConfiguration(this.props.components, this.state.results, null, {})\r\n })\r\n }\r\n }\r\n else if (prevProps.dataItem !== this.props.dataItem) {\r\n if (this.props.options.hideEditIcon && this.props.options.hidecondition) {\r\n let condition = null;\r\n condition = conditionsHandle(this.props, this.props.initialloadextrainfo && this.props.initialloadextrainfo.results ? this.props.initialloadextrainfo.results : this.props.initialloadextrainfo)\r\n condition = condition ? condition.condition : false\r\n let adminuser = (this.props.accessPermissions.isAdmin === \"Y\" || this.props.accessPermissions.isSuperAdmin === \"Y\") ? true : false\r\n this.setState({ hideediticon: adminuser === true ? false : condition, hideduplicateicon: adminuser === true ? false : this.props.options.hideDuplicateIcon ? condition : false })\r\n }\r\n this.didmountinitialload();\r\n }\r\n else if (this.props.customSave) {\r\n this.handleSave()\r\n }\r\n }\r\n\r\n\r\n /**\r\n *********************************************************\r\nDescription: Used to convert all non-editable components to editable.refresh the page with new results\r\nRequired props: N/A\r\n limitations : N/A\r\n*********************************************************\r\n**/\r\n getlatestFormData = () => {\r\n const { formControls, results, showview } = this.state\r\n let formControlsKeys = Object.keys(formControls)\r\n let newformControls = {}\r\n formControlsKeys.forEach(each => {\r\n newformControls[each] = { ...formControls[each], edit: showview ? !showview : true }\r\n });\r\n this.setState({\r\n results: this.state.results,\r\n formControls: newformControls,\r\n changedFieldName: formControlsKeys.map(each => {\r\n return { ...formControls[each], edit: showview ? !showview : true, name: each }\r\n }),\r\n editbutton: true,\r\n isedited: showview ? !showview : true,\r\n showview: false,\r\n }, () => {\r\n this.fieldConfiguration(this.props.components, this.state.results, false, {})\r\n })\r\n }\r\n\r\n\r\n\r\n /**\r\n *********************************************************\r\n Description: Used to convert all non-editable components to editable.Get all form field\r\n components and change its edit property to true and push it to changedFieldName.\r\n Required props: N/A\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n\r\n handleEdit = (e, duplicate) => {\r\n if (this.props && this.props.options && this.props.options.IsBuildMGR === true && getEnvVariable('BuildScopeMGR') === true) {\r\n if (DefaultSettings.getAlert() != null)\r\n DefaultSettings.getAlert().show(\"This functionality is not in release scope, so you can't add or update. Please contact build manager\", 'warning');\r\n }\r\n else {\r\n if (!this.state.onLoadValidate && this.props && this.props.actions && this.props.actions.Validate && this.props.actions.Validate.onLoadLayerURLRequest) {\r\n let e = { target: { innerText: 'Validate' } }\r\n this.handleIconClick(e, true);\r\n }\r\n if (duplicate) {\r\n this.props.unsavedData({ ...this.state, duplicate: true })\r\n }\r\n else {\r\n this.props.unsavedData(this.state);\r\n }\r\n\r\n const { options } = this.props\r\n if (options.headerProps && options.headerProps.editbutton) {\r\n const { formControls, showview } = this.state\r\n const formControlsKeys = Object.keys(formControls)\r\n let newformControls = {}\r\n formControlsKeys.forEach(each => {\r\n newformControls[each] = { ...formControls[each], edit: showview ? !showview : true, editduplicate: duplicate }\r\n });\r\n this.setState({\r\n editbutton: true,\r\n isedited: showview ? !showview : true,\r\n iseditduplicate: duplicate,\r\n showview: false,\r\n showsavebtn: true,\r\n formControls: newformControls,\r\n displayalert: false,\r\n changedFieldName: formControlsKeys.map(each => {\r\n return { ...formControls[each], edit: showview ? !showview : true, editduplicate: duplicate, name: each }\r\n })\r\n }, () => {\r\n this.handleDisplay();\r\n })\r\n }\r\n }\r\n }\r\n\r\n\r\n handleView = (results, setnewResults) => {\r\n const { options } = this.props\r\n if (results && setnewResults && this.props && this.props.match && this.props.match.params && options.viewroutesId && results[options.viewroutesId]) {\r\n let pathname = this.props.location.pathname\r\n this.props.match.params.Id = results[options.viewroutesId]\r\n pathname = pathname.substring(0, pathname.lastIndexOf(\"/\"))\r\n pathname = pathname + '/' + this.props.match.params.Id\r\n this.props.onClose();\r\n this.props.history.push(pathname);\r\n }\r\n else {\r\n if (options.headerProps && options.headerProps.editbutton) {\r\n const { formControls, showview, editbutton } = this.state\r\n const formControlsKeys = Object.keys(formControls)\r\n let newformControls = {}\r\n formControlsKeys.forEach(each => {\r\n newformControls[each] = { ...formControls[each], edit: showview ? !showview : true, value: each.split(\".\").reduce((res, prop) => { return res && res[prop] }, results) }\r\n });\r\n //options.headerProps.updateresult ? { ...formControls[each], edit: showview ? !showview : true, value: results[each] } : { ...formControls[each], edit: showview }\r\n this.setState({\r\n editbutton: !editbutton,\r\n isedited: showview ? !showview : true,\r\n showview: false,\r\n showsavebtn: showview ? !showview : true,\r\n formControls: newformControls,\r\n changedFieldName: formControlsKeys.map(each => {\r\n return {\r\n ...formControls[each], edit: showview ? !showview : true, name: each,\r\n value: each.split(\".\").reduce((res, prop) => { return res && res[prop] }, results)\r\n }\r\n })\r\n //options.headerProps.updateresult ?\r\n // : formControlsKeys.map(each => {\r\n // return { ...formControls[each], edit: showview ? !showview : true, name: each }\r\n // })\r\n }, () => {\r\n this.handleDisplay();\r\n })\r\n }\r\n\r\n }\r\n }\r\n /**\r\n *\r\n *********************************************************\r\n Description: based on the result hide and show of components\r\n Required props: N/A\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n\r\n handleOnResultEdit = (each) => {\r\n const { formControls } = this.state;\r\n return { name: each.options.name, ...formControls[each.options.name], edit: false }//each.hideOnNoResult ? false : true\r\n }\r\n\r\n /**\r\n *********************************************************\r\n Description: Hide certain components based on other components value.When there is a change in value on the\r\n component or on initial loading check the conditions on the components. If the conditions match show the component\r\n else hide it.\r\n Required props: N/A\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n\r\n displayCondition = (conditions, name, results, otherval) => {\r\n let out = 'd-block';\r\n\r\n if (conditions && (conditions.accessPortal && conditions.accessPortal === this.props.accessPermissions.portal) ||\r\n (conditions.ModuleKey && (conditions.ModuleKey === getEnvVariable('ModuleKey')))) {\r\n out = 'd-none';\r\n }\r\n else if (conditions && conditions.showOnModuleKey && getEnvVariable('ModuleKey') && conditions.showOnModuleKey !== getEnvVariable('ModuleKey')) {\r\n out = 'd-none';\r\n }\r\n\r\n else if (conditions && conditions.hideonconfigType) {\r\n for (let each of conditions.hideonconfigType)\r\n if (each.configType === this.props.accessPermissions.configType) {\r\n out = 'd-none';\r\n return out;\r\n }\r\n }\r\n else if (conditions && conditions.hide && conditions.hide.hideonconfigType && this.props.initialloadextrainfo.results) {\r\n if (Array.isArray(conditions.hide)) {\r\n Object.keys(conditions.hide).forEach(e => {\r\n const val = conditions.hide[e];\r\n Object.keys(val).forEach(f => {\r\n const secval = val[f]\r\n if (this.props.initialloadextrainfo && this.props.initialloadextrainfo.results[f]) {\r\n if (val.getdatafrom === \"initiaload\" && secval === this.props.initialloadextrainfo.results[f]) {\r\n out = 'd-none';\r\n }\r\n }\r\n })\r\n\r\n })\r\n }\r\n else {\r\n Object.keys(conditions.hide).forEach(e => {\r\n const val = conditions.hide[e];\r\n if (this.props.initialloadextrainfo.results && this.props.initialloadextrainfo.results[e]) {\r\n if (conditions.hide.getdatafrom === \"initiaload\" && val === this.props.initialloadextrainfo.results[e]) {\r\n out = 'd-none';\r\n }\r\n }\r\n })\r\n }\r\n }\r\n else if (results) {\r\n if (conditions && conditions.show) {\r\n Object.keys(conditions.show).forEach(e => {\r\n const val = conditions.show[e]\r\n if (Array.isArray(val)) {\r\n if (!val.includes(results[e]))\r\n out = 'd-none';\r\n }\r\n else {\r\n if (val !== results[e]) {\r\n out = 'd-none';\r\n }\r\n\r\n }\r\n })\r\n }\r\n if (conditions && conditions.hidecontains) {\r\n Object.keys(conditions.hidecontains).forEach(e => {\r\n let val = conditions.hidecontains[e]\r\n if (results && results[e] && !(results[e].includes(val))) {\r\n out = 'd-none';\r\n }\r\n })\r\n }\r\n\r\n if (conditions && conditions.hide) {\r\n if (conditions.hide.matchProps) {\r\n const matchProps = conditions.hide.matchProps\r\n if (matchProps) {\r\n if (Array.isArray(matchProps)) {\r\n matchProps.forEach(each => {\r\n const { key, value } = each\r\n if (results[key] ? results[key] === value : false) return out = 'd-none'\r\n })\r\n }\r\n else {\r\n if (matchProps.results || (matchProps && matchProps.results && matchProps.results.length > 0)) return 'd-none'\r\n else return 'd-block'\r\n }\r\n }\r\n }\r\n else {\r\n if (Array.isArray(conditions.hide)) {\r\n Object.keys(conditions.hide).forEach(e => {\r\n if (conditions.hide[e].nestedhidedataItem || conditions.hide[e].isLocalStorage) {\r\n let dataItemKey = conditions.hide[e].nestedhidedataItem\r\n let val = conditions.hide[e].value\r\n if (this.props && this.props.dataItem && this.props.dataItem[dataItemKey] && this.props.dataItem[dataItemKey] === val)\r\n return out = 'd-none'\r\n else {\r\n if (conditions.hide[e].isLocalStorage && localStorage.getItem(conditions.hide[e].isLocalStorage) === conditions.hide[e].value) {\r\n return out = 'd-none'\r\n }\r\n }\r\n }\r\n else if (conditions.hide[e].nestedhide) {\r\n let nested = conditions.hide[e].nestedhide\r\n if (results[nested['isnested']][nested['nestedkey']] ? results[nested['isnested']][nested['nestedkey']] === nested['value'] : false) return out = 'd-none'\r\n }\r\n else {\r\n const val = conditions.hide[e];\r\n Object.keys(val).forEach(f => {\r\n const secval = val[f]\r\n if (Array.isArray(val)) {\r\n if (secval.includes(results[f]))\r\n out = 'd-none';\r\n }\r\n else {\r\n if ((_.isNull(results[f]) && _.isNull(secval))) {\r\n out = 'd-none';\r\n }\r\n else if (f === 'edit' && secval === this.state.isedited)\r\n out = 'd-none';\r\n else if (secval === results[f]) {\r\n out = 'd-none';\r\n }\r\n }\r\n })\r\n }\r\n })\r\n }\r\n else {\r\n Object.keys(conditions.hide).forEach(e => {\r\n let val = conditions.hide[e]\r\n let otherval = conditions && conditions.hideanotherval ? conditions.hideanotherval[e] : conditions.hide[e]\r\n if (Array.isArray(val)) {\r\n if (val.includes(results[e]))\r\n out = 'd-none';\r\n }\r\n else {\r\n if (val === results[e]) {\r\n out = 'd-none';\r\n }\r\n else if (otherval === results[e]) {\r\n out = 'd-none';\r\n }\r\n }\r\n\r\n\r\n\r\n })\r\n }\r\n return out;\r\n }\r\n }\r\n\r\n if (conditions && conditions.hideonnull) {\r\n if (this.props.dataItem) {\r\n Object.keys(conditions.hideonnull).forEach(e => {\r\n let dataItemval = this.props.dataItem[e]\r\n const val = conditions.hideonnull[e]\r\n if (dataItemval === val)\r\n out = 'd-none';\r\n })\r\n }\r\n }\r\n if (conditions && conditions.hideall) {\r\n out = 'd-none';\r\n }\r\n }\r\n\r\n return out\r\n }\r\n\r\n /**\r\n *********************************************************\r\n Description: Enable or disable certain components based on other components value. When there is a\r\n change in value on the component or on initial loading check the conditions on the components. If the conditions match enable the component\r\n or else disable the component.\r\n Required props: N/A\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n\r\n\r\n enableConditions = (conditions, name, results) => {\r\n let disabled = true;\r\n if (results)// Added as results is undefined on change of section\r\n {\r\n if (conditions && conditions.enable) {\r\n Object.keys(conditions.enable).forEach(e => {\r\n const val = conditions.enable[e]\r\n if (Array.isArray(val)) {\r\n if (val.includes(results[e]))\r\n disabled = false;\r\n }\r\n else {\r\n if (val === results[e]) {\r\n disabled = false;\r\n }\r\n if (val !== results[e]) {\r\n disabled = true;\r\n }\r\n }\r\n })\r\n return disabled;\r\n }\r\n }\r\n return disabled\r\n }\r\n\r\n\r\n requiredConditions = (conditions, results) => {\r\n let isrequired = true;\r\n if (results) {\r\n const objKeys = Object.keys(conditions.required)\r\n objKeys.forEach(res => {\r\n if (conditions && conditions.required && isrequired) {\r\n if (conditions.required[res] === results[res])\r\n isrequired = true;\r\n else { isrequired = false };\r\n }\r\n })\r\n\r\n }\r\n return isrequired\r\n }\r\n /**\r\n *********************************************************\r\n Description: Setintialvalues of the results object. When form loads we set the results object with the inital values of its field components or the values is set to empty.\r\n Required props: components\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n\r\n\r\n setInitialResults = () => {\r\n const { components, compmap, accessPermissions } = this.props\r\n let results = {}\r\n components.forEach(each => {\r\n const { options } = each\r\n let { name, multiplenames, initialvalue, intialvaluedata } = options;\r\n if (initialvalue === 'profile') {\r\n initialvalue = accessPermissions.name\r\n }\r\n else if (initialvalue === 'dataItem') {\r\n if (intialvaluedata && Array.isArray(intialvaluedata) && intialvaluedata.length > 0) {\r\n let firstinitialvalue = this.props && this.props.dataItem && this.props.dataItem[intialvaluedata[0]] ? this.props.dataItem[intialvaluedata[0]] : this.props && this.props.match && this.props.match.params && this.props.match.params[intialvaluedata[1]] ? this.props.match.params[intialvaluedata[1]] : ''\r\n initialvalue = _.isObject(firstinitialvalue) && firstinitialvalue[intialvaluedata[1]] ? firstinitialvalue[intialvaluedata[1]] : firstinitialvalue\r\n }\r\n else {\r\n initialvalue = this.props && this.props.dataItem && this.props.dataItem[intialvaluedata] ? this.props.dataItem[intialvaluedata] : this.props && this.props.match && this.props.match.params && this.props.match.params[intialvaluedata] ? this.props.match.params[intialvaluedata] : ''\r\n\r\n }\r\n }\r\n else if (initialvalue === 'todaydate') {\r\n initialvalue = new Date()\r\n }\r\n if (name) {\r\n if (multiplenames) {\r\n multiplenames.forEach(e => {\r\n results[e] = initialvalue || ''\r\n })\r\n }\r\n else {\r\n const splitName = name.split(\".\")\r\n if (splitName.length > 2) {\r\n if (results[splitName[0]]) (results[splitName[0]][splitName[1]][splitName[2]] = (initialvalue || ''))\r\n else results[splitName[0]] = { [splitName[1]]: { [splitName[2]]: (initialvalue || '') } }\r\n\r\n }\r\n else if (splitName.length > 1) {\r\n if (results[splitName[0]]) (results[splitName[0]][splitName[1]] = (initialvalue || ''))\r\n else results[splitName[0]] = { [splitName[1]]: (initialvalue || '') }\r\n\r\n }\r\n else {\r\n results[name] = _.isNull(initialvalue) ? initialvalue : initialvalue ? (initialvalue === 0 ? '0' : initialvalue) : ''\r\n }\r\n }\r\n\r\n }\r\n })\r\n return results || {}\r\n }\r\n\r\n loadurl = (compread) => {\r\n let val = this.props[compread.getdatafrom][compread.value]\r\n let requesturl = compread['urllist'] && compread['urllist'][val] ? compread['urllist'][val] : compread['urllist']['default']\r\n return requesturl.get\r\n }\r\n /**\r\n *********************************************************\r\n Description: Fetch dropdownvalues or values of the form fields and initialize corresponding fields. Read prop on\r\n the form field components is used to fetch individual component values. Required fields are set.\r\n Required props: components, results, requiredFieldNamesInUpperCase, anotherProps. AnotherProps are extraProps that the form components received from parent component.\r\n Components names are required.\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n\r\n fieldConfiguration = (components, results, requiredFieldNamesInUpperCase, toolTipFieldNamesInUpperCase, anotherProps, compareresults, helpContext) => {\r\n\r\n const { actions } = this.props;\r\n let formControls = {};\r\n let changedFieldName = []\r\n this.requiredFields = {}\r\n let newcomponents = [...this.state.components]\r\n let subcomp = { ...this.state.subcomp }\r\n const { checkresults } = this.props.options;\r\n let count = 0;\r\n let compreadresult = 0\r\n if (this.props.errors && this.props.errfieldnames) {\r\n Object.keys(this.props.errfieldnames).forEach(function (key) {\r\n requiredFieldNamesInUpperCase[key.toUpperCase()] = true\r\n });\r\n }\r\n let tempFieldFormControls = []\r\n components.forEach(each => {\r\n const { options } = each\r\n const { name, values, conditions, transformProps, receiveValues, hideOnNoResult } = options ? options : {}\r\n const display = conditions ? this.displayCondition(conditions, name, results) : '';\r\n const disabled = (conditions && conditions.enable) ? this.enableConditions(conditions, name, results) : false\r\n const compcrud = options ? options.crud : null\r\n let compread = compcrud && !compcrud.avoidread ? compcrud.read : null\r\n const compget = compread ? compread.urllist ? this.loadurl(compread) : compread.get : null;\r\n compread = compread && compread.urllist ? { ...compread, get: compget } : compread\r\n //const {read,avoidread}\r\n const { matchProps, routeProps, customId, customProps, initialloadextrainfoProps } = compget ? compget : {}\r\n\r\n let ids = [], id\r\n if (Array.isArray(initialloadextrainfoProps) && this.props.initialloadextrainfo && this.props.initialloadextrainfo.results) {\r\n initialloadextrainfoProps.forEach(each => {\r\n const { value } = each\r\n ids.push({ key: value, value: this.props.initialloadextrainfo.results[value] })\r\n })\r\n }\r\n if (Array.isArray(routeProps)) {\r\n routeProps.forEach(each => {\r\n const { value } = each\r\n ids.push({ key: value, value: this.props.match.params[value] })\r\n })\r\n }\r\n\r\n\r\n else if (routeProps) {\r\n if (this.props.customId)\r\n id = this.props.customId\r\n else id = routeProps ? this.props.match.params[routeProps.value] : null\r\n }\r\n else if (matchProps) {\r\n id = results[matchProps.value]\r\n }\r\n\r\n if (Array.isArray(customProps)) {\r\n customProps.forEach(each => {\r\n const { custom } = each\r\n ids.push({ key: custom, value: this.props.dataItem[custom] })\r\n })\r\n }\r\n\r\n let extraProps = {}\r\n receiveValues && receiveValues.forEach(each => {\r\n const { paramname, valuefromparent } = each\r\n extraProps[paramname] = results[valuefromparent] || anotherProps[valuefromparent]\r\n })\r\n\r\n\r\n let required = name ? (requiredFieldNamesInUpperCase ? (requiredFieldNamesInUpperCase[name.toUpperCase()] ? requiredFieldNamesInUpperCase[name.toUpperCase()] : false) : false) : false\r\n this.requiredFields[name] = required;\r\n const tooltip = name ? (toolTipFieldNamesInUpperCase ? (toolTipFieldNamesInUpperCase[name.toUpperCase()] ? toolTipFieldNamesInUpperCase[name.toUpperCase()] : '') : '') : ''\r\n required = (conditions && conditions.required) ? this.requiredConditions(conditions, results) : required;;\r\n const helpContextMsg = name ? (helpContext ? (helpContext[name.toUpperCase()] ? helpContext[name.toUpperCase()] : '') : '') : ''\r\n\r\n if (compread) {\r\n count = count + 1;\r\n if (compread.geom) {\r\n compread = {\r\n \"geom\": {\r\n \"url\": { \"url\": results.Url, \"type\": \"layerFieldsInfo\" }\r\n }\r\n }\r\n }\r\n requestApi(compread, (ids.length > 0 ? ids : id), results ? results : null).then(resp => {\r\n compreadresult = compreadresult + 1;\r\n // for individual form fields if needs to fetch data\r\n if (name) {\r\n const val = name.split(\".\").reduce((res, prop) => { return res && res[prop] }, results)\r\n const value = transformProps ? (transformProps[val] ? transformProps[val] : val) : val\r\n //const otherchangedFieldNames = this.handleEffects(name, value)\r\n const otherchangedFieldNames = []\r\n formControls[name] = {\r\n ...this.state.formControls[name],\r\n value: value, //== null ? (resp.find (each=>each.isdefaut === y)).value : value, // check value is null ? (resp.find (each=>each.isdefaut === y)).value ||value\r\n required: required,\r\n tooltip: tooltip,\r\n contexthelp: helpContextMsg,\r\n display: display,\r\n disabled: disabled,\r\n dropdownvalues: compcrud.subname ? resp[compcrud.subname] : resp || null,\r\n extraProps: { ...extraProps }\r\n }\r\n tempFieldFormControls.push({ name: name, ...formControls[name] })\r\n if (count === compreadresult)\r\n changedFieldName.push(...tempFieldFormControls)\r\n\r\n this.setState({\r\n formControls: { ...this.state.formControls, ...formControls },\r\n //required: required,\r\n compareresults: { ...this.state.compareresults, [name]: value, ...compareresults },\r\n changedFieldName: changedFieldName.concat(otherchangedFieldNames),\r\n results: { ...this.state.results, [name]: value, ...results },\r\n }, () => {\r\n // this.handleDisplay()\r\n if (actions && actions[name] && results && results[name])\r\n this.handleDataLoad(name, results[name], null, results)\r\n })\r\n }\r\n })\r\n\r\n }\r\n else {\r\n if (name) {\r\n //const otherchangedFieldNames = this.handleEffects(name, value)\r\n\r\n const otherchangedFieldNames = []\r\n const val = name.split(\".\").reduce((res, prop) => { return res && res[prop] }, results)\r\n const value = transformProps ? (transformProps[val] ? transformProps[val] : val) : val\r\n formControls[name] = {\r\n ...this.state.formControls[name],\r\n value: value,\r\n required: required,\r\n tooltip: tooltip,\r\n contexthelp: helpContextMsg,\r\n display: display,\r\n disabled: disabled,\r\n dropdownvalues: values || null,\r\n extraProps: { ...extraProps }\r\n }\r\n changedFieldName = changedFieldName.concat(otherchangedFieldNames)\r\n if (checkresults && Object.keys(results) === 0) {\r\n formControls[name].edit = each.options.hideOnNoResult ? false : true;\r\n changedFieldName.push({ name: name, ...formControls[name] })\r\n if (actions && actions[name] && results && results[name])\r\n this.handleDataLoad(name, value)\r\n } else {\r\n changedFieldName.push({ name: name, ...formControls[name] })\r\n if (actions && actions[name] && results && results[name])\r\n this.handleDataLoad(name, results[name], null, results)\r\n\r\n }\r\n\r\n }\r\n }\r\n })\r\n if (count === 0) {\r\n\r\n }\r\n this.setState({\r\n results: { ...this.state.results, ...this.initialresults }, // { ...this.state.results, ...results},\r\n compareresults: { ...compareresults },\r\n formControls: { ...this.state.formControls, ...formControls },\r\n changedFieldName: changedFieldName,\r\n //errfieldnames: requiredFields,\r\n components: newcomponents,\r\n subcomp: subcomp\r\n }, () => {\r\n this.handleDisplay()\r\n })\r\n\r\n }\r\n\r\n /**\r\n *********************************************************\r\n Description: Fetch validations for the form fields.Validation prop on the form is used to fetch the validations. Names on the validations results are mapped to the corresponding names of the fields\r\n for storing the field validations. Required fields are also stored.\r\n Required props: options, components.\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n\r\n handleResultValues = () => {\r\n const { results } = this.props;\r\n const { formControls } = this.state;\r\n let tempformControls = {}\r\n let tempchangedFieldName = []\r\n let resultskeys = Object.keys(results)\r\n resultskeys.forEach(each => {\r\n if (formControls[each]) {\r\n tempformControls[each] = { ...formControls[each], value: results[each] }\r\n tempchangedFieldName.push({ name: each, value: results[each] })\r\n }\r\n })\r\n this.setState({\r\n results: this.props.results,\r\n formControls: tempformControls,\r\n changedFieldName: tempchangedFieldName\r\n })\r\n }\r\n componentDidMount() {\r\n if (this.props.options.hideEditIcon && (this.props.options.hidecondition || this.props.options.isexternal)) {\r\n let condition = null;\r\n condition = conditionsHandle(this.props, this.props.initialloadextrainfo && this.props.initialloadextrainfo.results ? this.props.initialloadextrainfo.results : this.props.initialloadextrainfo)\r\n condition = condition ? condition.condition : false\r\n let adminuser = (this.props.accessPermissions.isAdmin === \"Y\" || this.props.accessPermissions.isSuperAdmin === \"Y\") ? true : false\r\n this.setState({ hideediticon: adminuser === true ? false : this.props.options.isexternal ? true : condition, hideduplicateicon: adminuser === true ? false : this.props.options.hideDuplicateIcon ? condition : false })\r\n }\r\n this.didmountinitialload();\r\n }\r\n\r\n loopobj(resultdata) {\r\n let resultdataval = { ...resultdata }\r\n for (const property in resultdataval) {\r\n if (!Array.isArray(resultdataval[property]) && _.isObject(resultdataval[property])) {\r\n resultdataval = { ...resultdataval, [property]: { ...resultdataval[property], IsDuplicate: \"Y\" } }\r\n for (const propertyval in resultdataval[property]) {\r\n if (!Array.isArray(resultdataval[property][propertyval]) && (_.isObject(resultdataval[property][propertyval]))) {\r\n resultdataval = { ...resultdataval, [property]: { ...resultdataval[property], [propertyval]: { ...resultdataval[property][propertyval], IsDuplicate: \"Y\" } } }\r\n }\r\n // else if(Array.isArray(resultdataval[property][propertyval]) &&(_.isObject(resultdataval[property][propertyval])))\r\n // {\r\n // let arr = [...resultdataval[property][propertyval]]\r\n // let arrobj = resultdataval[property][propertyval].length>0 ? resultdataval[property][propertyval][0] : resultdataval[property][propertyval]\r\n // if(_.isObject(arrobj)) {\r\n // arrobj['IsDuplicate'] = 'Y'\r\n // arr = [arrobj]\r\n // }\r\n // resultdataval = {...resultdataval, [property] : {...resultdataval[property], [propertyval] : [...arr]}}\r\n // }\r\n }\r\n }\r\n }\r\n return resultdataval\r\n }\r\n\r\n didmountinitialload() {\r\n const { type, options, components, extraProps, dataItem } = this.props\r\n const { crud, validations } = options ? options : {}\r\n const { read } = crud ? crud : {}\r\n const { get } = read ? read : {}\r\n const { routeProps, customProps, hidepath, passingProps } = get ? get : {}\r\n let ids = [], id\r\n if (hidepath) {\r\n id = this.props.accessPermissions.userId;\r\n }\r\n else {\r\n if (Array.isArray(routeProps)) {\r\n routeProps.forEach(each => {\r\n const { value, custom } = each;\r\n if (custom) {\r\n ids.push({ key: custom, value: dataItem[get.customProps.value] || dataItem[\"Id\"] })\r\n }\r\n else ids.push({ key: value, value: this.props.match.params[value] })\r\n })\r\n }\r\n if (Array.isArray(customProps)) {\r\n customProps.forEach(each => {\r\n const { value, custom } = each;\r\n if (custom) {\r\n ids.push({ key: custom, value: dataItem[custom] })\r\n }\r\n else ids.push({ key: value, value: this.props.match.params[value] })\r\n })\r\n }\r\n else if (routeProps) {\r\n id = routeProps ? this.props.match.params[routeProps.value] : null\r\n }\r\n else if (customProps) {\r\n id = customProps ? dataItem[get.customProps.value] || dataItem.Id : null\r\n }\r\n else if (passingProps) {\r\n id = passingProps ? this.props.passingProps : null\r\n }\r\n }\r\n const self = this\r\n let aryofvalidations = []\r\n if (!Array.isArray(validations)) {\r\n aryofvalidations.push(validations)\r\n }\r\n else aryofvalidations = validations\r\n if (read && validations) {\r\n this.props.unsavedData(null);\r\n requestApi(read, (ids.length > 0 ? ids : id)).then(results => {\r\n if (results && Object.keys(results).length > 0)\r\n this.initialresults = results;\r\n else this.initialresults = this.state.results;\r\n if (this.props.options.checkresultval && !results.FieldKey) {\r\n this.handleEdit();\r\n }\r\n Promise.all(aryofvalidations.map(each => requestApi(each)))\r\n .then(function (values) {\r\n let formControls = {};\r\n let changedFieldName = []\r\n let xvalidations = {}, requiredFieldNamesInUpperCase = {}, toolTipFieldNamesInUpperCase = {}, helpContext = {}\r\n validations && values.forEach((each, index) => {\r\n const { transformProps } = aryofvalidations[index] ? aryofvalidations[index] : {}\r\n const { subfieldname, addsubfieldname, replaceTable } = transformProps ? transformProps : {}\r\n const subfieldnamelength = subfieldname ? subfieldname.length : 0\r\n each && each.length > 0 && each.forEach(each => {\r\n let validationname = replaceTable ? each[transformProps.name].replace(replaceTable.current, replaceTable.replace).slice(subfieldnamelength)\r\n : each[transformProps.name].slice(subfieldnamelength)\r\n\r\n if (addsubfieldname) validationname = addsubfieldname + validationname\r\n if (each.Type === 'R') requiredFieldNamesInUpperCase[validationname] = true\r\n if (each.Type === 'T') toolTipFieldNamesInUpperCase[validationname] = each.Message || ''\r\n if (each.Type === 'H') helpContext[validationname] = each.Message || ''\r\n if (Array.isArray(xvalidations[validationname])) {\r\n const len = xvalidations[validationname].length\r\n const lastvalidation = xvalidations[validationname][len - 1]\r\n if (each.Order > lastvalidation.Order) xvalidations[validationname].push(each)\r\n else xvalidations[validationname].unshift(each)\r\n }\r\n else {\r\n xvalidations[validationname] = [each]\r\n }\r\n })\r\n self.validations = xvalidations\r\n self.requiredFieldNamesInUpperCase = requiredFieldNamesInUpperCase\r\n self.toolTipFieldNamesInUpperCase = toolTipFieldNamesInUpperCase\r\n self.helpContext = helpContext\r\n\r\n\r\n })\r\n self.fieldConfiguration(components, results, requiredFieldNamesInUpperCase, toolTipFieldNamesInUpperCase, extraProps, results, helpContext)\r\n })\r\n .catch(err => {\r\n console.log(err)\r\n\r\n })\r\n })\r\n }\r\n if (read && !validations) {\r\n this.props.unsavedData(null);\r\n requestApi(read, (ids.length > 0 ? ids : id)).then(results => {\r\n this.initialresults = results;\r\n Promise.all(aryofvalidations.map(each => requestApi(each)))\r\n .then(function (values) {\r\n let formControls = {};\r\n let changedFieldName = []\r\n let xvalidations = {}, requiredFieldNamesInUpperCase = {}, toolTipFieldNamesInUpperCase = {}, helpContext = {}\r\n validations && values.forEach((each, index) => {\r\n const { transformProps } = aryofvalidations[index] ? aryofvalidations[index] : {}\r\n const { subfieldname, addsubfieldname, replaceTable } = transformProps ? transformProps : {}\r\n const subfieldnamelength = subfieldname ? subfieldname.length : 0\r\n each && each.forEach(each => {\r\n let validationname = replaceTable ? each[transformProps.name].replace(replaceTable.current, replaceTable.replace).slice(subfieldnamelength)\r\n : each[transformProps.name].slice(subfieldnamelength)\r\n if (addsubfieldname) validationname = addsubfieldname + validationname\r\n if (each.Type === 'R') requiredFieldNamesInUpperCase[validationname] = true\r\n if (each.Type === 'T') toolTipFieldNamesInUpperCase[validationname] = each.Message || ''\r\n if (each.Type === 'H') helpContext[validationname] = each.Message || ''\r\n\r\n if (Array.isArray(xvalidations[validationname])) {\r\n const len = xvalidations[validationname].length\r\n const lastvalidation = xvalidations[validationname][len - 1]\r\n if (each.Order > lastvalidation.Order) xvalidations[validationname].push(each)\r\n else xvalidations[validationname].unshift(each)\r\n }\r\n else {\r\n xvalidations[validationname] = [each]\r\n }\r\n })\r\n self.validations = xvalidations\r\n self.requiredFieldNamesInUpperCase = requiredFieldNamesInUpperCase\r\n self.toolTipFieldNamesInUpperCase = toolTipFieldNamesInUpperCase\r\n self.helpContext = helpContext\r\n\r\n\r\n\r\n })\r\n self.fieldConfiguration(components, results, requiredFieldNamesInUpperCase, toolTipFieldNamesInUpperCase, extraProps, {}, helpContext)\r\n })\r\n .catch(err => {\r\n console.log(err)\r\n })\r\n })\r\n }\r\n\r\n if (!read && validations) {\r\n this.props.unsavedData(null);\r\n let requiredFieldNamesInUpperCase = {}\r\n let toolTipFieldNamesInUpperCase = {}\r\n let helpContext = {}\r\n aryofvalidations && Promise.all(aryofvalidations.map(each => requestApi(each)))\r\n .then(function (values) {\r\n //\r\n let formControls = {};\r\n let changedFieldName = []\r\n let xvalidations = {}\r\n validations && values.forEach((each, index) => {\r\n const { transformProps } = aryofvalidations[index] ? aryofvalidations[index] : {}\r\n const { subfieldname, addsubfieldname, replaceTable } = transformProps ? transformProps : {}\r\n const subfieldnamelength = subfieldname ? subfieldname.length : 0\r\n each && each.forEach(each => {\r\n let validationname = replaceTable ? each[transformProps.name].replace(replaceTable.current, replaceTable.replace).slice(subfieldnamelength)\r\n : each[transformProps.name].slice(subfieldnamelength)\r\n if (addsubfieldname) validationname = addsubfieldname + validationname\r\n if (each.Type === 'R') requiredFieldNamesInUpperCase[validationname] = true\r\n if (each.Type === 'T') toolTipFieldNamesInUpperCase[validationname] = each.Message || ''\r\n if (each.Type === 'H') helpContext[validationname] = each.Message || ''\r\n if (Array.isArray(xvalidations[validationname])) {\r\n const len = xvalidations[validationname].length\r\n const lastvalidation = xvalidations[validationname][len - 1]\r\n if (each.Order > lastvalidation.Order) xvalidations[validationname].push(each)\r\n else xvalidations[validationname].unshift(each)\r\n }\r\n else {\r\n xvalidations[validationname] = [each]\r\n }\r\n })\r\n self.validations = xvalidations\r\n self.requiredFieldNamesInUpperCase = requiredFieldNamesInUpperCase\r\n self.toolTipFieldNamesInUpperCase = toolTipFieldNamesInUpperCase\r\n self.helpContext = helpContext\r\n })\r\n self.fieldConfiguration(components, self.state.results, requiredFieldNamesInUpperCase, toolTipFieldNamesInUpperCase, extraProps, self.state.results, helpContext)\r\n })\r\n .catch(err => {\r\n console.log(err)\r\n })\r\n\r\n }\r\n if (!read && !validations) {\r\n //\r\n this.props.unsavedData(null);\r\n let formControls = {};\r\n let changedFieldName = []\r\n let xvalidations = {}, requiredFieldNamesInUpperCase = {}, toolTipFieldNamesInUpperCase = {}, helpContext = {}\r\n validations && validations.forEach((each, index) => {\r\n const { transformProps } = aryofvalidations[index] ? aryofvalidations[index] : {}\r\n const { subfieldname, addsubfieldname, replaceTable } = transformProps ? transformProps : {}\r\n const subfieldnamelength = subfieldname ? subfieldname.length : 0\r\n each && each.forEach(each => {\r\n let validationname = replaceTable ? each[transformProps.name].replace(replaceTable.current, replaceTable.replace).slice(subfieldnamelength)\r\n : each[transformProps.name].slice(subfieldnamelength)\r\n if (addsubfieldname) validationname = addsubfieldname + validationname\r\n if (each.Type === 'R') requiredFieldNamesInUpperCase[validationname] = true\r\n if (each.Type === 'T') toolTipFieldNamesInUpperCase[validationname] = each.Message || ''\r\n if (each.Type === 'H') helpContext[validationname] = each.Message || ''\r\n if (Array.isArray(xvalidations[validationname])) {\r\n const len = xvalidations[validationname].length\r\n const lastvalidation = xvalidations[validationname][len - 1]\r\n if (each.Order > lastvalidation.Order) xvalidations[validationname].push(each)\r\n else xvalidations[validationname].unshift(each)\r\n }\r\n else {\r\n xvalidations[validationname] = [each]\r\n }\r\n })\r\n self.validations = xvalidations\r\n self.requiredFieldNamesInUpperCase = requiredFieldNamesInUpperCase\r\n self.toolTipFieldNamesInUpperCase = toolTipFieldNamesInUpperCase\r\n self.helpContext = helpContext\r\n })\r\n self.fieldConfiguration(components, self.state.results, requiredFieldNamesInUpperCase, toolTipFieldNamesInUpperCase, extraProps, {}, helpContext)\r\n\r\n }\r\n\r\n }\r\n /**\r\n *********************************************************\r\n Description: Insert values in the results where properties are nested. Split the name in json at '.' , go through the array with the names split at '.' and insert the value.\r\n Required props: objProperty, len, splitName, value.\r\n objProperty: results\r\n len: length of the splitname array.\r\n splitname: Array contains the names of the form field\r\n value: value to be stored\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n\r\n changeResults = (objProperty, len, splitName, value) => {\r\n if (len === 0) return value\r\n else {\r\n const index = splitName.length - len\r\n const name = splitName[index]\r\n if (name) return { ...objProperty, [name]: this.changeResults(objProperty[name], --len, splitName, value) }\r\n }\r\n }\r\n /**\r\n *********************************************************\r\n Description: Handles value for form fields to save in the results object. Checks the type of the components, transforms the value and return it.\r\n Required props: value, checked, name\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n handleValue = (value, checked, name) => {\r\n const { transformProps, multiple, type } = this.formControlsConfigs[name] ? this.formControlsConfigs[name] : {}\r\n switch (type) {\r\n case 'formcheckbox':\r\n return transformProps ? (transformProps[checked] ? transformProps[checked] : checked) : checked\r\n case 'formdropdown':\r\n return multiple && Array.isArray(value) ? value.join(',') : value\r\n case 'date':\r\n return moment(value).format('MM/DD/YYYY')\r\n case 'datetime-local':\r\n return moment(value).format('MM/DD/YYYY hh:mm:ss A')\r\n case 'formswitch':\r\n return transformProps ? (transformProps[checked] ? transformProps[checked] : checked) : checked\r\n default:\r\n return transformProps ? (transformProps[value] ? transformProps[value] : value) : value\r\n }\r\n }\r\n\r\n /**\r\n *********************************************************\r\n Description: Handles value and the errors for form fields. Once the value of the field is changed by user, validates the values against the validations. If there are errors, sets the errors and the value or\r\n else the value is set. Also, handles components display (hide or show, enable or disable).\r\n Required props: event\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n\r\n handleFieldChange = (event) => {\r\n const { actions } = this.props;\r\n //\r\n const { components, formControls, results, customvalue } = this.state\r\n const { name, checked, type } = event.target\r\n let value = this.handleValue(event.target.value, checked, name)\r\n const otherchangedFieldNames = []\r\n const splitName = name.split(\".\")\r\n const newResults = splitName.length > 1 ? this.changeResults(this.state.results, splitName.length, splitName, value) : null\r\n const nameinuppercase = name.toUpperCase()\r\n const { errfieldnames } = this.state\r\n if (customvalue && Object.keys(customvalue).length > 0 && !(results && results[customvalue.name] === \"\")) {\r\n let e = {\r\n target: {\r\n name: event.target.name,\r\n value: event.target.value\r\n }\r\n }\r\n this.setState({\r\n results: ({ ...this.state.results, [customvalue.name]: customvalue.result })\r\n }, () => this.handleFieldChangeData(e))\r\n }\r\n else {\r\n let e = {\r\n target: {\r\n name: event.target.name,\r\n value: event.target.value,\r\n checked: event.target.checked,\r\n type: event.target.type\r\n }\r\n }\r\n this.handleFieldChangeData(e)\r\n }\r\n\r\n }\r\n\r\n\r\n handleFieldChangeData = (event) => {\r\n const { actions } = this.props;\r\n //\r\n const { components, formControls, results, customvalue } = this.state\r\n const { name, checked, type } = event.target\r\n let value = this.handleValue(event.target.value, checked, name)\r\n const otherchangedFieldNames = []\r\n const splitName = name.split(\".\")\r\n const newResults = splitName.length > 1 ? this.changeResults(this.state.results, splitName.length, splitName, value) : null\r\n const nameinuppercase = name.toUpperCase()\r\n const { errfieldnames } = this.state\r\n if (this.validations && this.validations[nameinuppercase]) {//\r\n const err = globalvalidate({ [name]: this.validations[nameinuppercase] }, { [name]: value })\r\n let error, helperText\r\n if (err && err[name]) {\r\n error = err[name].error\r\n helperText = err[name].errortext\r\n }\r\n let setotherfield = this.props && this.props.components ? _.find(this.props.components, { 'key': name }) : null\r\n let otherfield = setotherfield ? setotherfield.options : null\r\n let removefields = setotherfield && setotherfield.options && setotherfield.options.removeotherfield ? setotherfield.options.removeotherfield : null\r\n let removefielddependency = setotherfield && setotherfield.options && setotherfield.options.removeotherfielddependency ? setotherfield.options.removeotherfielddependency : null\r\n let fielddependencyname = value === \"\" ? (setotherfield && setotherfield.options && setotherfield.options.fielddependencyname ? setotherfield.options.fielddependencyname : null) : null\r\n if (this.formControlsConfigs[name].hasconditionaldropdownfield) {\r\n let hasconditionaldropdownfield = this.formControlsConfigs[name].hasconditionaldropdownfield\r\n let hasconditionaldropdownvalues = this.formControlsConfigs[name].hasconditionaldropdownvalues[value]\r\n let valuesdata = this.props.options.conditionaldropdownvalues[hasconditionaldropdownfield][hasconditionaldropdownvalues]\r\n this.formControlsConfigs = { ...this.formControlsConfigs, [hasconditionaldropdownfield]: { ...this.formControlsConfigs[hasconditionaldropdownfield], values: valuesdata } }\r\n let changedFieldNames = otherchangedFieldNames.map(e => {\r\n const { name, display, disabled, error, helperText, required } = e\r\n if (e.key === [hasconditionaldropdownfield]) {\r\n return { ...this.state.formControls[hasconditionaldropdownfield], dropdownvalues: valuesdata }\r\n }\r\n return e\r\n })\r\n this.setState({\r\n results: (newResults || { ...this.state.results, [name]: value }),\r\n formControls: { ...this.state.formControls, [name]: { ...this.state.formControls[name], value: value, error: error, helperText: helperText }, [hasconditionaldropdownfield]: { ...this.state.formControls[hasconditionaldropdownfield], dropdownvalues: valuesdata } },\r\n components: this.state.components.map(e => {\r\n if (e.key === [hasconditionaldropdownfield]) {\r\n return { ...e, options: { ...e.options, values: valuesdata } }\r\n }\r\n return e\r\n }),\r\n changedFieldName: [{ name: name, value: value, error: error, helperText: helperText, dropdownvalues: this.state.formControls[name].dropdownvalues }].concat(changedFieldNames),\r\n errors: error,\r\n isfieldchanged: true,\r\n errfieldnames: { ...this.state.errfieldnames, [name]: { filled: true, error: error } }\r\n }\r\n , () => {\r\n this.handleSetValue(removefielddependency, fielddependencyname, newResults, name, value, removefields, error, helperText, otherchangedFieldNames, 0)\r\n }\r\n )\r\n\r\n }\r\n else if (removefields && removefields.length > 0) {\r\n this.handleSetValue(removefielddependency, fielddependencyname, newResults, name, value, removefields, error, helperText, otherchangedFieldNames, 0)\r\n\r\n }\r\n else {\r\n this.setState({\r\n results: (newResults || { ...this.state.results, [name]: value }),\r\n formControls: { ...this.state.formControls, [name]: { ...this.state.formControls[name], value: value, error: error, helperText: helperText } },\r\n changedFieldName: [{ name: name, value: value, error: error, helperText: helperText, dropdownvalues: this.state.formControls[name].dropdownvalues }].concat(otherchangedFieldNames),\r\n errors: error,\r\n isfieldchanged: true,\r\n errfieldnames: { ...this.state.errfieldnames, [name]: { filled: true, error: error } }\r\n }\r\n , () => {\r\n this.props.unsavedData(this.state);\r\n this.handleDisplay();\r\n if (actions && actions[name])\r\n this.handleDataLoad(name, value);\r\n }\r\n )\r\n }\r\n\r\n }\r\n else {\r\n this.setState({\r\n results: (newResults || { ...this.state.results, [name]: value }),\r\n formControls: { ...this.state.formControls, [name]: { ...this.state.formControls[name], value: value } },\r\n changedFieldName: [{ name: name, value: value, dropdownvalues: (this.state.formControls[name] && this.state.formControls[name].dropdownvalues) || [] }].concat(otherchangedFieldNames),\r\n errors: false,\r\n isfieldchanged: true,\r\n }, () => {\r\n this.props.unsavedData(this.state);\r\n this.handleDisplay();\r\n if (actions && actions[name])\r\n this.handleDataLoad(name, value);\r\n })\r\n }\r\n }\r\n\r\n handleSetValue = (removefielddependency, fielddependencyname, newResults, name, value, removefields, error, helperText, otherchangedFieldNames, count) => {\r\n const { actions } = this.props;\r\n if (count < removefields.length) {\r\n let { removefield, changedvalue } = removefields[count]\r\n this.setState({\r\n ...this.state,\r\n results: removefielddependency ? (fielddependencyname ? newResults || { ...this.state.results, [name]: value, [removefield]: _.isNull(changedvalue) ? changedvalue : changedvalue ? changedvalue : '', [removefielddependency]: '', [fielddependencyname]: '' } : newResults || { ...this.state.results, [name]: value, [removefield]: _.isNull(changedvalue) ? changedvalue : changedvalue ? changedvalue : '', [removefielddependency]: '' }) :\r\n (newResults || { ...this.state.results, [name]: value, [removefield]: _.isNull(changedvalue) ? changedvalue : changedvalue ? changedvalue : '' }),\r\n formControls: removefielddependency ? fielddependencyname ?\r\n {\r\n ...this.state.formControls, [name]: { ...this.state.formControls[name], value: value, error: error, helperText: helperText }, [removefield]: { ...this.state.formControls[removefield], value: _.isNull(changedvalue) ? changedvalue : changedvalue ? changedvalue : '', error: error, helperText: helperText }, [removefielddependency]: { ...this.state.formControls[removefielddependency], value: '', error: error, helperText: helperText }, [fielddependencyname]: { ...this.state.formControls[fielddependencyname], value: '', error: error, helperText: helperText }\r\n } : {\r\n ...this.state.formControls, [name]: { ...this.state.formControls[name], value: value, error: error, helperText: helperText }, [removefield]: { ...this.state.formControls[removefield], value: _.isNull(changedvalue) ? changedvalue : changedvalue ? changedvalue : '', error: error, helperText: helperText }, [removefielddependency]: { ...this.state.formControls[removefielddependency], value: '', error: error, helperText: helperText }\r\n } :\r\n {\r\n ...this.state.formControls, [name]: { ...this.state.formControls[name], value: value, error: error, helperText: helperText }, [removefield]: { ...this.state.formControls[removefield], value: _.isNull(changedvalue) ? changedvalue : changedvalue ? changedvalue : '', error: error, helperText: helperText }\r\n },\r\n changedFieldName: removefielddependency ? fielddependencyname ?\r\n [{ name: name, value: value, error: error, helperText: helperText, dropdownvalues: this.state.formControls[name].dropdownvalues }, { name: removefield, value: _.isNull(changedvalue) ? changedvalue : changedvalue ? changedvalue : '', error: error, helperText: helperText, dropdownvalues: this.state.formControls[removefield].dropdownvalues }, { name: removefielddependency, value: '', error: error, helperText: helperText, dropdownvalues: this.state.formControls[removefielddependency].dropdownvalues }, { name: fielddependencyname, value: '', error: error, helperText: helperText, dropdownvalues: this.state.formControls[fielddependencyname].dropdownvalues }].concat(otherchangedFieldNames)\r\n :\r\n [{ name: name, value: value, error: error, helperText: helperText, dropdownvalues: this.state.formControls[name].dropdownvalues }, { name: removefield, value: _.isNull(changedvalue) ? changedvalue : changedvalue ? changedvalue : '', error: error, helperText: helperText, dropdownvalues: this.state.formControls[removefield].dropdownvalues }, { name: removefielddependency, value: '', error: error, helperText: helperText, dropdownvalues: this.state.formControls[removefielddependency].dropdownvalues }].concat(otherchangedFieldNames)\r\n :\r\n [{ name: name, value: value, error: error, helperText: helperText, dropdownvalues: this.state.formControls[name].dropdownvalues }, { name: removefield, value: _.isNull(changedvalue) ? changedvalue : changedvalue ? changedvalue : '', error: error, helperText: helperText, dropdownvalues: this.state.formControls[removefield].dropdownvalues }].concat(otherchangedFieldNames),\r\n errors: error,\r\n isfieldchanged: true,\r\n errfieldnames: removefielddependency ?\r\n { ...this.state.errfieldnames, [name]: { filled: true, error: error }, [removefielddependency]: { filled: true, error: false }, [removefielddependency]: { filled: true, error: false } } :\r\n { ...this.state.errfieldnames, [name]: { filled: true, error: error } },\r\n }, () => {\r\n this.props.unsavedData(this.state);\r\n this.handleDisplay();\r\n if (actions && actions[name])\r\n this.handleDataLoad(name, value);\r\n this.handleSetValue(removefielddependency, fielddependencyname, newResults, name, value, removefields, error, helperText, otherchangedFieldNames, count + 1)\r\n })\r\n }\r\n\r\n }\r\n\r\n handleSlide = () => {\r\n const { results } = this.state;\r\n const { actions } = this.props\r\n if (actions && actions.slide)\r\n this.handleDataLoad(actions.slide, results[actions.slide], true);\r\n }\r\n\r\n handleIconClick = (event, isEdit = false) => {\r\n const { actions } = this.props;\r\n const { name, checked, type, innerText } = event.target;\r\n this.handleDataLoad(name ? name : innerText, null, null, null, isEdit);\r\n }\r\n\r\n handleDataLoad = (label, value, slide, viewresults, isEdit) => {\r\n const { actions } = this.props;\r\n const { name, read, getread } = actions[label];\r\n if (actions && actions[label] && actions[label].type === 'load' && !slide) {\r\n const { get } = read\r\n const { url, routeProps, matchProps } = get;\r\n const { results } = this.state;\r\n let ids = [], id\r\n if (Array.isArray(routeProps)) {\r\n routeProps.forEach(each => {\r\n const { value } = each\r\n ids.push({ key: value, value: this.props.match.params[value] })\r\n })\r\n }\r\n else if (routeProps) id = routeProps ? this.props.match.params[routeProps.value] : null\r\n else if (matchProps) {\r\n id = results[matchProps.value]\r\n }\r\n requestApi(read, (id || ids), results).then(response => {\r\n if (Array.isArray(name)) {\r\n name.forEach(e => {\r\n const { getvalue, setvalue } = e\r\n this.setState({\r\n results: ({ ...this.state.results, [setvalue]: response[getvalue] }),\r\n formControls: { ...this.state.formControls, [setvalue]: { ...this.state.formControls[setvalue], value: response[getvalue] } },\r\n changedFieldName: [{ name: setvalue, value: response[getvalue] }],\r\n errors: false,\r\n isfieldchanged: true,\r\n })\r\n })\r\n }\r\n else {\r\n actions && actions[label] && requestApi(read, value).then(response => {\r\n this.setState({\r\n results: ({ ...this.state.results, [name]: '' }),\r\n formControls: { ...this.state.formControls, [name]: { ...this.state.formControls[name], value: '', dropdownvalues: response } },\r\n changedFieldName: [{ name: name, value: '', dropdownvalues: response }],\r\n errors: false,\r\n isfieldchanged: true,\r\n })\r\n })\r\n }\r\n }).catch(ex => {\r\n console.error(ex)\r\n })\r\n }\r\n else if (actions && actions[label] && actions[label].type === 'value' && !slide) {\r\n const { name, type } = actions[label]\r\n if (viewresults)\r\n this.setState({\r\n results: ({ ...this.state.results, [name]: viewresults[name] }),\r\n formControls: {\r\n ...this.state.formControls, [name]: {\r\n ...this.state.formControls[name],\r\n dropdownvalues: viewresults[label], value: viewresults[name], dataoptions: viewresults\r\n }\r\n },\r\n changedFieldName: [{\r\n name: name, dropdownvalues: viewresults[label], value: viewresults[name],\r\n dataoptions: viewresults\r\n }],\r\n errors: false,\r\n isfieldchanged: true,\r\n })\r\n else this.setState({\r\n results: ({ ...this.state.results, [name]: this.state.results[name] }),\r\n formControls: { ...this.state.formControls, [name]: { ...this.state.formControls[name], dropdownvalues: value, value: this.state.results[name], dataoptions: this.state.results } },\r\n changedFieldName: [{ name: name, dropdownvalues: value, value: this.state.results[name], dataoptions: this.state.results }],\r\n errors: false,\r\n isfieldchanged: true,\r\n })\r\n }\r\n\r\n else if (actions && actions[label] && actions[label].type === 'GISRequest' && !slide) {\r\n const { name, type, from, initialLoad } = actions[label]\r\n let url = ''\r\n let gisdata = null\r\n // let callRequest = this.state.editbutton ? initialLoad : false\r\n let GisDropdown = this.state.formControls[label].dropdownvalues || [];\r\n if (GisDropdown && GisDropdown.length > 0) {\r\n gisdata = GisDropdown.find(gisdd => gisdd['Id'] === value)//.Url\r\n url = gisdata && gisdata.Url || ''\r\n }\r\n let gissurl = {\r\n \"geom\": {\r\n \"url\": { \"url\": url, \"type\": \"Info\" }\r\n }\r\n }\r\n actions && actions[label] && requestApi(gissurl).then(response => {\r\n if (response)\r\n if (Array.isArray(name)) {\r\n let tempChangedField = this.state.changedFieldName;\r\n let tempformControls = this.state.formControls\r\n let tempResults = this.state.results\r\n name.forEach(e => {\r\n const { key, subkey } = e\r\n tempChangedField = tempChangedField.filter(each => each.name !== key)\r\n tempChangedField.push({ name: key, dropdownvalues: (key === subkey) ? response : viewresults ? viewresults[subkey] : this.state.results[subkey], value: viewresults ? viewresults[key] : this.state.results[key] })\r\n tempformControls = { ...tempformControls, [key]: { ...tempformControls[key], dropdownvalues: (key === subkey) ? response : viewresults ? viewresults[subkey] : this.state.results[subkey], value: viewresults ? viewresults[key] : this.state.results[key] } }\r\n tempResults = ({ ...tempResults, [key]: viewresults ? viewresults[key] : tempResults[subkey] })\r\n })\r\n this.setState({\r\n results: tempResults,\r\n formControls: tempformControls,\r\n changedFieldName: tempChangedField,\r\n errors: false,\r\n isfieldchanged: true,\r\n })\r\n }\r\n // else this.setState({\r\n // results: ({ ...this.state.results, [from]: viewresults ? viewresults[from] : this.state.results[from] }),\r\n // formControls: { ...this.state.formControls, [from]: { ...this.state.formControls[from], value: viewresults ? viewresults[from] : this.state.results[from] } },\r\n // changedFieldName: [{ name: from, dropdownvalues: [], value: viewresults ? viewresults[from] : this.state.results[from], error: true, helperText: \"Invalid Service Request URL\" }],\r\n // errors: false,\r\n // isfieldchanged: true,\r\n // })\r\n }).catch(ex => {\r\n this.setState({\r\n results: ({ ...this.state.results, [from]: viewresults ? viewresults[from] : this.state.results[from] }),\r\n formControls: { ...this.state.formControls, [from]: { ...this.state.formControls[from], value: viewresults ? viewresults[from] : this.state.results[from] } },\r\n changedFieldName: [{ name: from, value: viewresults ? viewresults[from] : this.state.results[from], error: true, helperText: \"Invalid Service Request URL\" }],\r\n errors: false,\r\n isfieldchanged: true,\r\n })\r\n })\r\n }\r\n\r\n else if (actions && actions[label] && actions[label].type === 'LayerURLRequest' && !slide) {\r\n const { name, type, from, initialLoad } = actions[label]\r\n let gisdata = null\r\n let gissurl = {\r\n \"geom\": {\r\n \"url\": { \"url\": this.state.results.Url, \"type\": \"layerinfo\" }\r\n }\r\n }\r\n actions && actions[label] && requestApi(gissurl).then(response => {\r\n if (response) {\r\n let tempResults = this.state.results;\r\n let tempformControls = this.state.formControls;\r\n let tempchangedFieldName = []\r\n if (Array.isArray(name)) {\r\n name.forEach(e => {\r\n const { key, subkey, dropdown } = e\r\n tempResults = { ...tempResults, [key]: (subkey && !isEdit) ? response[subkey] : tempResults[key] }\r\n tempformControls = {\r\n ...tempformControls, [key]: {\r\n ...tempformControls[key], value: (subkey && !isEdit) ? response[subkey] :\r\n tempResults[key], dropdownvalues: dropdown ? response[key] : tempformControls[key].dropdownvalues\r\n }\r\n }\r\n tempchangedFieldName = [{\r\n name: key, value: !isEdit ? response[subkey] :\r\n tempResults[subkey], dropdownvalues: dropdown ? response[key] : tempformControls[key].dropdownvalues\r\n }]\r\n })\r\n this.setState({\r\n results: tempResults,\r\n formControls: tempformControls,\r\n changedFieldName: tempchangedFieldName,\r\n errors: false,\r\n isfieldchanged: true,\r\n }, () => {\r\n this.handleDisplay();\r\n })\r\n }\r\n }\r\n }).catch(ex => {\r\n this.setState({\r\n results: ({ ...this.state.results, [from]: viewresults ? viewresults[from] : this.state.results[from] }),\r\n formControls: { ...this.state.formControls, [from]: { ...this.state.formControls[from], value: viewresults ? viewresults[from] : this.state.results[from] } },\r\n changedFieldName: [{ name: from, value: viewresults ? viewresults[from] : this.state.results[from], error: true, helperText: \"Invalid Service Request URL\" }],\r\n errors: false,\r\n isfieldchanged: true,\r\n })\r\n })\r\n }\r\n else if (actions && actions[label] && actions[label].type === 'LoaddropdownMultipleRequest' && !slide) {\r\n const { urllist, type, from, initialLoad } = actions[label]\r\n let requesturl = '';\r\n let configType = this.props.accessPermissions.configType\r\n requesturl = urllist[configType]\r\n actions && actions[label] && requestApi(requesturl, null, this.state.results).then(response => {\r\n if (response)\r\n if (Array.isArray(name)) {\r\n name.forEach(e => {\r\n this.setState({\r\n results: ({ ...this.state.results, [label]: '' }),\r\n formControls: { ...this.state.formControls, [label]: { ...this.state.formControls[label], value: '', dropdownvalues: response } },\r\n changedFieldName: [{ name: label, value: '', dropdownvalues: response }],\r\n errors: false,\r\n isfieldchanged: true,\r\n })\r\n })\r\n }\r\n // else this.setState({\r\n // results: ({ ...this.state.results, [from]: viewresults ? viewresults[from] : this.state.results[from] }),\r\n // formControls: { ...this.state.formControls, [from]: { ...this.state.formControls[from], value: viewresults ? viewresults[from] : this.state.results[from] } },\r\n // changedFieldName: [{ name: from, dropdownvalues: [], value: viewresults ? viewresults[from] : this.state.results[from], error: true, helperText: \"Invalid Service Request URL\" }],\r\n // errors: false,\r\n // isfieldchanged: true,\r\n // })\r\n }).catch(ex => {\r\n this.setState({\r\n results: ({ ...this.state.results, [from]: viewresults ? viewresults[from] : this.state.results[from] }),\r\n formControls: { ...this.state.formControls, [from]: { ...this.state.formControls[from], value: viewresults ? viewresults[from] : this.state.results[from] } },\r\n changedFieldName: [{ name: from, value: viewresults ? viewresults[from] : this.state.results[from], error: true, helperText: \"Invalid Service Request URL\" }],\r\n errors: false,\r\n isfieldchanged: true,\r\n })\r\n })\r\n }\r\n // else if (actions && actions[label] && actions[label].type === 'properties' && !slide) {\r\n // let status = 'invalid'\r\n // if (actions[label].value === this.state.results[label]) {\r\n // status = 'valid'\r\n // }\r\n // if (Array.isArray(actions[label][status])) {\r\n // actions[label][status].forEach(e => {\r\n // const { key, ...otherProperties } = e\r\n // this.setState({\r\n // formControls: { ...this.state.formControls, [key]: { ...this.state.formControls[key], ...otherProperties } },\r\n // changedFieldName: this.state.changedFieldName.push({ name: key, value: this.state.results[key] , ...otherProperties }),\r\n // errors: false,\r\n // isfieldchanged: true,\r\n // })\r\n // })\r\n // }\r\n // }\r\n else if (actions && actions[label] && slide) {\r\n const { get } = getread\r\n const { url, routeProps, matchProps } = get;\r\n const { results } = this.state;\r\n let ids = [], id\r\n if (Array.isArray(routeProps)) {\r\n routeProps.forEach(each => {\r\n const { value } = each\r\n ids.push({ key: value, value: this.props.match.params[value] })\r\n })\r\n }\r\n else if (routeProps) id = routeProps ? this.props.match.params[routeProps.value] : null\r\n else if (matchProps) {\r\n id = results[matchProps.value]\r\n }\r\n actions && actions[label] && requestApi(getread, (id || ids), results).then(response => {\r\n this.setState({\r\n results: ({ ...this.state.results, [label]: '' }),\r\n formControls: { ...this.state.formControls, [label]: { ...this.state.formControls[label], value: '', dropdownvalues: response } },\r\n changedFieldName: [{ name: label, value: '', dropdownvalues: response }],\r\n errors: false,\r\n isfieldchanged: true,\r\n })\r\n }).catch(ex => {\r\n console.error(ex)\r\n })\r\n }\r\n }\r\n\r\n /**\r\n *********************************************************\r\n Description: Handles show or hide, enable or disable of the field components.checks if conditions exists and calls the displaycondition and enableconditions function. Changed values are set to hide or show, enable or disable\r\n the component.\r\n else the value is set. Also, handles components display (hide or show, enable or disable).\r\n Required props: results, formControls\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n\r\n\r\n handleDisplay = (name) => {\r\n const { results, formControls } = this.state;\r\n let newformControls = {}\r\n let changed = [];\r\n let newchanged = [];\r\n var tempchange = {};\r\n Object.keys(formControls).forEach(e => {\r\n const { conditions, display, dependency, disabled, label, required } = this.formControlsConfigs[e];\r\n const newDisplay = conditions ? this.displayCondition(conditions, name, results) : display;\r\n const newdisabled = (conditions && conditions.enable) ? this.enableConditions(conditions, name, results) : false\r\n const isrequired = (conditions && conditions.required) ? this.requiredConditions(conditions, results) : formControls[e].required;\r\n const newdependency = (dependency) ? this.dependencyFields(dependency, e, label, results) : null\r\n let res;\r\n if (conditions && conditions.required)\r\n this.requiredFields[e] = isrequired;\r\n if (display !== newDisplay) {\r\n res = { name: e, display: newDisplay }\r\n newformControls[e] = { ...formControls[e], name: e, display: newDisplay, disabled: (disabled !== newdisabled) ? newdisabled : disabled }\r\n }\r\n if (disabled !== newdisabled) {\r\n if (res) res = { ...res, disabled: newdisabled };\r\n newformControls[e] = { ...formControls[e], name: e, disabled: newdisabled }\r\n }\r\n if (required !== isrequired) {\r\n if (res) res = { ...res, required: isrequired }\r\n else res = { name: e, required: isrequired }\r\n newformControls[e] = { ...formControls[e], name: e, required: isrequired, display: isrequired ? 'd-block' : formControls[e].display, disabled: (disabled !== newdisabled) ? newdisabled : disabled }\r\n }\r\n if (newdependency !== null) {\r\n if (newdependency.error)\r\n res = { ...res, error: newdependency.error, helperText: newdependency.helperText }\r\n else {\r\n res = newdependency;\r\n // eslint-disable-next-line no-unused-expressions\r\n newdependency.name ? newformControls[newdependency.name] =\r\n { ...formControls[newdependency.name], name: newdependency.name, value: newdependency.value } : ''\r\n }\r\n }\r\n if (res) changed.push(res)\r\n if (res) {\r\n if (tempchange.name && tempchange.name === res.name) {\r\n res = { ...tempchange, ...res }\r\n newchanged.push(res)\r\n }\r\n else {\r\n tempchange = res;\r\n }\r\n }\r\n })\r\n\r\n let finalformControls = { ...this.state.formControls, ...newformControls }\r\n let setval = newchanged ? _.find(newchanged, ['assignval', true]) : _.find(changed, ['assignval', true])\r\n if (setval && setval.name) {\r\n let finalval = setval.value\r\n let name = setval.name\r\n this.setState({\r\n results: ({ ...this.state.results, [name]: finalval }),\r\n formControls: finalformControls,\r\n changedFieldName: newchanged.map(e => {\r\n const { name, display, disabled, error, helperText, required } = e\r\n return { ...finalformControls[name], name: name, display: display, disabled: disabled, error: error, helperText: helperText, value: finalval, required: required }\r\n })\r\n })\r\n }\r\n else {\r\n this.setState({\r\n formControls: finalformControls,\r\n changedFieldName: changed.map(e => {\r\n const { name, display, disabled, error, helperText, required } = e\r\n return { ...finalformControls[name], name: name, display: display, error: error, helperText: helperText, required: required }\r\n })\r\n })\r\n }\r\n }\r\n\r\n /**\r\n *********************************************************\r\n Deprecated\r\n Description: Displaying the error text based on other field\r\n Required props: N/A\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n\r\n\r\n dependencyFields = (dependency, name, label, results) => {\r\n if (results) {\r\n if (dependency && dependency.maxLength) {\r\n if (Number(results[name]) > Number(results[dependency.maxLength])) {\r\n return { error: true, helperText: `${label} is greater than ${dependency.label}` }\r\n }\r\n else return null\r\n }\r\n else if (dependency && dependency.equal) {\r\n if (results[name].length > 0 && results[name] !== results[dependency.equal]) {\r\n this.setState({ hidesavebutton: true })\r\n return { error: true, helperText: `${name} does not match` }\r\n }\r\n else {\r\n this.setState({ hidesavebutton: false })\r\n return null\r\n }\r\n }\r\n else if (dependency && dependency.multiply) {\r\n const { results, formControls } = this.state;\r\n let dropval, selectedval, finaldropval, fieldval, finalfieldval, finalval\r\n if (dependency.requestApi && dependency.url) { //requestapi\r\n //for later use\r\n }\r\n if (dependency.requireddropdownval && dependency.dropdowns && dependency.dropdownfields.length > 0) { //dropdowns\r\n dependency.dropdownfields.forEach((e, i) => {\r\n dropval = formControls[e.fieldname].dropdownvalues\r\n if (dropval) {\r\n selectedval = _.find(dropval, { Value: this.state.results[e.fieldname] })[dependency.requireddropdownval]\r\n }\r\n })\r\n finaldropval = !finaldropval ? selectedval : finaldropval * selectedval\r\n }\r\n if (dependency.field && dependency.fields && dependency.fields.length > 0) { // fields\r\n dependency.fields.forEach((e, i) => {\r\n fieldval = this.state.results[e.fieldname]\r\n })\r\n finalfieldval = !finalfieldval ? fieldval : finalfieldval * fieldval\r\n }\r\n //result conditions\r\n if (dependency.dropdowns && dependency.fields) {\r\n if (finalfieldval !== \"\") {\r\n finalval = finaldropval * finalfieldval\r\n return { name: dependency.multiply, dropdownvalues: null, value: finalval, assignval: true }\r\n }\r\n else {\r\n return { name: dependency.multiply, dropdownvalues: null, value: \"\", assignval: true }\r\n }\r\n }\r\n }\r\n else if (dependency && dependency.isAdmin) {\r\n if (results[dependency.isAdmin]) {\r\n if (this.state.isfieldchanged && (results[dependency.isAdmin] === \"N\" || results[dependency.isAdmin] === \"Y\") && this.state.changedFieldName[0].name === dependency.isAdmin) {\r\n this.setState({ isfieldchanged: false }, () => {\r\n this.props.snackbarMessage(dependency.isAdminAlert, 'info');\r\n })\r\n\r\n }\r\n this.props.options.crud.read.get.addURL = `?isadmin=${results[dependency.isAdmin]}`;\r\n this.props.match.addURL = `?isadmin=${results[dependency.isAdmin]}`;\r\n return { error: false, helperText: `` }\r\n }\r\n }\r\n\r\n else if (dependency && dependency.isStatus) {\r\n if (results[dependency.isStatus].Status) {\r\n if (this.state.isfieldchanged && results[dependency.isStatus].Status === dependency.statusValue\r\n && this.state.changedFieldName[0].name === dependency.statusField && this.state.changedFieldName[0].value === dependency.statusValue) {\r\n this.state.isfieldchanged = false;\r\n if (results[dependency.statusCheck] !== \"Y\") {\r\n let readURL = { get: { url: `${dependency.statusURL}/${this.props.match.params[dependency.statusID]}` } }\r\n requestApi(readURL, (this.props.match.params[dependency.statusID])).then(results => {\r\n if (!results) {\r\n let changed = [];\r\n const { formControls } = this.state;\r\n let res = { name: dependency.statusTarget, error: true, helperText: dependency.helperText }\r\n changed.push(res);\r\n this.setState({\r\n errors: true,\r\n changedFieldName: changed.map(e => {\r\n const { name, display, disabled, error, helperText } = e\r\n return { ...formControls[name], name: name, display: display, disabled: disabled, error: error, helperText: helperText }\r\n })\r\n })\r\n }\r\n }).catch(error => { });\r\n }\r\n }\r\n return { error: false, helperText: `` }\r\n }\r\n }\r\n }\r\n return null\r\n }\r\n\r\n\r\n\r\n\r\n /**\r\n *********************************************************\r\n Description: Hanldes errors for the fields after saving. Maps the error object to field names of the form and then sets them to display the errors.\r\n Required props: errors object after saving.\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n\r\n\r\n onError = (errors) => {\r\n let save = true\r\n const { results, formControls } = this.state\r\n const errfieldnames = Object.keys(errors)\r\n let changedNames = [], errformControls = {}\r\n errfieldnames.forEach(each => {\r\n if (errors[each].error) save = false\r\n if (formControls[each] !== undefined) {\r\n errformControls[each] = {\r\n value: formControls[each].value,//{...fieldValues[each],error:true,helperText:err[each].reduce((sum = '', val) => sum + val)},\r\n error: errors[each].error,\r\n touched: 1,\r\n dropdownvalues: this.state.formControls[each].dropdownvalues,\r\n helperText: errors[each].errortext\r\n }\r\n }\r\n let errorstate = false, errorval = ''\r\n if (errors[each]) {\r\n if (Array.isArray(errors[each])) {\r\n errorstate = true\r\n errorval = errors[each][0]\r\n }\r\n else {\r\n errorstate = errors[each].error\r\n errorval = errors[each].errortext\r\n }\r\n\r\n }\r\n if (formControls[each] !== undefined) {\r\n changedNames.push({\r\n name: each,\r\n value: formControls[each].value,//{...fieldValues[each],error:true,helperText:err[each].reduce((sum = '', val) => sum + val)},\r\n error: errorstate,\r\n touched: 1,\r\n dropdownvalues: this.state.formControls[each].dropdownvalues,\r\n helperText: errorval\r\n })\r\n }\r\n })\r\n this.setState({\r\n formControls: { ...formControls, ...errformControls },\r\n changedFieldName: changedNames\r\n })\r\n return save\r\n }\r\n\r\n // /**\r\n // *********************************************************\r\n // Description: Used to convert all non-editable components to editable.refresh the page with new results\r\n // Required props: N/A\r\n // limitations : N/A\r\n // *********************************************************\r\n // **/\r\n // getlatestFormData = () => {\r\n // const { formControls, results, showview } = this.state\r\n // let formControlsKeys = Object.keys(formControls)\r\n // let newformControls = {}\r\n // formControlsKeys.forEach(each => {\r\n // newformControls[each] = { ...formControls[each], edit: showview ? !showview : true }\r\n // });\r\n // this.setState({\r\n // results: this.state.results,\r\n // formControls: newformControls,\r\n // changedFieldName: formControlsKeys.map(each => {\r\n // return { ...formControls[each], edit: showview ? !showview : true, name: each }\r\n // }),\r\n // editbutton: true,\r\n // isedited: showview ? !showview : true,\r\n // showview: false,\r\n // }, () => {\r\n // this.fieldConfiguration(this.props.components, this.state.results, false, {})\r\n // })\r\n // }\r\n\r\n customnoticesave = (result, name, savetype) => {\r\n const { formControls, showview } = this.state\r\n const formControlsKeys = Object.keys(formControls)\r\n if (savetype === 'initialsave') {\r\n this.setState({\r\n callbacksaveval: !this.state.callbacksaveval,\r\n changedFieldName: formControlsKeys.map(each => {\r\n return { ...formControls[each], callbacksave: !this.state.callbacksaveval }\r\n })\r\n })\r\n }\r\n else if (savetype === 'finalsave') {\r\n let resultitems = {}\r\n this.props.options.customsavenames.forEach(element => {\r\n resultitems[element] = result[element]\r\n\r\n });\r\n this.setState({\r\n results: ({ ...this.state.results, ...resultitems })\r\n }, () => this.handleSave())\r\n }\r\n else if (savetype === 'includeinresults') {\r\n this.setState({\r\n customvalue: { 'name': name, 'result': result },\r\n results: ({ ...this.state.results, [name]: result })\r\n })\r\n }\r\n else this.setState({\r\n results: ({ ...this.state.results, [name]: result })\r\n })\r\n\r\n }\r\n\r\n /**\r\n *********************************************************\r\n Description: Saves or updates the results. create the url using configuration properties from json(url,routeProps,matchProps). Verifies if all the required fields are filled and then saves\r\n the results. If errors exist corresponding fields with errors are set. Alerts if saved successfully or if there are errors.\r\n Required props: options.put or options.post\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n\r\n handleSave = (e, duplicaterecord) => {\r\n let urlpathname = this.props.location.pathname\r\n const id = this.props.match.params.routeid\r\n if (this.props && this.props.options && this.props.options.IsBuildMGR === true && getEnvVariable('BuildScopeMGR') === true) {\r\n if (DefaultSettings.getAlert() != null)\r\n DefaultSettings.getAlert().show(\"This functionality is not in release scope, so you can't add or update. Please contact build manager\", 'warning');\r\n }\r\n else {\r\n const { options, customSave, actions, dataItem } = this.props\r\n\r\n const { crud } = options\r\n const save = duplicaterecord ? crud.duplicate : crud.update\r\n const { message, alert } = save\r\n const { put, post } = save || {}\r\n const { conditions } = put || {}\r\n let ids = [], id\r\n\r\n if (put) {\r\n let createput = true\r\n if (conditions) {\r\n if (!this.state.results[conditions.results]) createput = false\r\n }\r\n if (createput) {\r\n const { routeProps, matchProps, customProps } = save.put\r\n if (save.put && (save.put.matchProps || save.put.routeProps || save.put.customProps) && Array.isArray(save.put.matchProps || save.put.routeProps || save.put.customProps)) {\r\n const tempsaveprops = save.put.matchProps || save.put.routeProps || save.put.customProps\r\n tempsaveprops.forEach(each => {\r\n const { value, custom } = each\r\n if (custom) {\r\n ids.push({ key: custom, value: this.props.dataItem[custom] })\r\n }\r\n else {\r\n ids.push({ key: value, value: this.props.match.params[value] })\r\n }\r\n })\r\n }\r\n else {\r\n id = this.props.match.params.routeid\r\n }\r\n }\r\n else {\r\n const { routeProps, matchProps } = save.post\r\n if (save.post && (save.post.matchProps || save.post.routeProps) && Array.isArray(save.post.matchProps || save.post.routeProps)) {\r\n const tempsaveprops = save.post.matchProps || save.post.routeProps\r\n tempsaveprops.forEach(each => {\r\n const { value } = each\r\n ids.push({ key: value, value: this.props.match.params[value] })\r\n })\r\n }\r\n else {\r\n const { routeProps, matchProps } = save.post\r\n id = routeProps ? this.props.match.params[routeProps.value] : null\r\n }\r\n }\r\n\r\n }\r\n else if (post) {\r\n const { routeProps, matchProps, customProps } = save.post\r\n if (save.post && (save.post.matchProps || save.post.routeProps || save.post.customProps) && Array.isArray(save.post.matchProps || save.post.routeProps || save.post.customProps)) {\r\n const tempsaveprops = save.post.matchProps || save.post.routeProps || save.post.customProps\r\n tempsaveprops.forEach(each => {\r\n const { value, custom, hidepath, hidepathval } = each\r\n hidepathval ? ids.push({ key: hidepathval, value: this.props.accessPermissions[hidepathval] }) : hidepath ? ids.push({ key: hidepath, value: this.props.accessPermissions.userId }) : custom ? ids.push({ key: custom, value: this.props.dataItem[custom] }) : ids.push({ key: value, value: this.props.match.params[value] })\r\n })\r\n }\r\n else {\r\n const { routeProps, matchProps, customProps } = save.post\r\n id = routeProps ? this.props.match.params[routeProps.value] : (customProps ? this.props.dataItem[customProps.custom] : null)\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n if (save || customSave) {\r\n const { results, formControls, errors, errfieldnames } = this.state\r\n //const errfieldnameskeys = Object.keys(errfieldnames)\r\n //const errors = globalvalidate(this.validations, formControls)\r\n // const xsave = this.onError(errors)\r\n const requiredFields = this.requiredFields\r\n const requiredFieldsKeys = requiredFields && Object.keys(requiredFields)\r\n let changedFieldName = []\r\n let err\r\n if (requiredFieldsKeys) {\r\n requiredFieldsKeys.forEach(each => { //!errors &&\r\n if (requiredFields[each]) {\r\n const value = formControls[each].value\r\n if ((value === null) || (value === undefined) || (value === '') || (value && Array.isArray(value) && value.length < 1)) {\r\n err = true\r\n changedFieldName.push({ ...this.state.formControls[each], name: each, error: true, helperText: 'Field is Required' })\r\n\r\n }\r\n }\r\n if (this.state.formControls[each]) {\r\n const value = formControls[each].value\r\n const error = formControls[each].error\r\n if (value && error) {\r\n err = true\r\n changedFieldName.push({ ...this.state.formControls[each], name: each, error: true })\r\n\r\n }\r\n }\r\n })\r\n }\r\n if (err) {\r\n this.setState({\r\n errors: true,\r\n changedFieldName: changedFieldName\r\n }, () => {\r\n if (this.props.customSave) this.props.handleCustomSave()\r\n })\r\n\r\n }\r\n else {\r\n const { components, options, formgridadd, sidepopupadd, slide } = this.props\r\n const { addtoresults, title, tabadd } = options ? options : { addtoresults: {} }\r\n let res\r\n res = duplicaterecord ? { ...this.state.results, ...addtoresults, IsDuplicate: \"Y\" } : { ...this.state.results, ...addtoresults }\r\n if (duplicaterecord) {\r\n let resultdata = { ...res }\r\n resultdata = this.loopobj(resultdata)\r\n res = resultdata\r\n }\r\n components.forEach(each => {\r\n const { options } = each\r\n const { excludefromresults, name, allowDataItem, setValue, assignValue } = options ? options : {}\r\n if (excludefromresults) delete res[name]\r\n if (allowDataItem) res[assignValue] = this.props.dataItem[setValue];\r\n })\r\n if (errors) {\r\n const formControlsKeys = Object.keys(this.state.formControls);\r\n\r\n this.setState({\r\n changedFieldName: formControlsKeys.map(each => {\r\n return { ...formControls[each], name: each }\r\n })\r\n })\r\n } else requestApi(save, (id || ids), res, null, alert, message).then(results => {\r\n const { headerProps, tabadd } = options\r\n const { navigateview, navigateadd, navigateclose, setnewResults, clearResults } = headerProps;\r\n this.props.unsavedData(null);\r\n if (save && save.put && save.put.isProfile)\r\n this.props.setProfile(true)\r\n if (this.state.formsave) {\r\n //tabadd : to save in sliding page but its doesnot close sliding page\r\n if (tabadd) {\r\n this.setState({ formsave: false })\r\n }\r\n else {\r\n this.props.onClose();\r\n this.setState({ formsave: false })\r\n }\r\n }\r\n if (navigateview) {\r\n\r\n if (!duplicaterecord && results && results.UpdatedBy && results.UpdatedBy !== null) {\r\n this.setState({ showview: true, results: results, compareresults: results, showsavebtn: false, closeviewconfirmation: true }, () => {\r\n this.handleView(results, setnewResults)\r\n })\r\n\r\n }\r\n else if (duplicaterecord) {\r\n\r\n let pathname = this.props.location.pathname\r\n this.props.match.params.Id = results[options.viewroutesId]\r\n pathname = pathname.substring(0, pathname.lastIndexOf(\"/\"))\r\n this.props.history.push(pathname);\r\n this.props.onClose();\r\n }\r\n else {\r\n this.handleView(results, true)\r\n\r\n }\r\n }\r\n if (navigateclose) {\r\n this.props.onClose();\r\n }\r\n if (navigateadd) {\r\n // To close the sliding page.\r\n if ((formgridadd || sidepopupadd)) {\r\n\r\n this.props.accessPermissions.portal === 'I' && this.handleNotificationEdit(results);\r\n if (this.props.accessPermissions.portal === 'E') {\r\n let pathname = this.props.location.pathname\r\n if (results && this.props && this.props.match && this.props.match.params && options.afterSaveroutesId) {\r\n this.props.match.params.Id = results[options.afterSaveroutesId]\r\n pathname = pathname + '/' + this.props.match.params.Id\r\n }\r\n this.props.onClose();\r\n this.props.history.push(pathname);\r\n }\r\n }\r\n else {\r\n const { afterSaveroutes = {} } = options;\r\n const { connectingroute = null, connectingrouteid = null, routeparams = null, routeparams2 = null, route = null, existparams = null } = afterSaveroutes;\r\n if (Array.isArray(afterSaveroutes)) {\r\n let path = ''\r\n afterSaveroutes.forEach(each => {\r\n const { route, routeParams, matchProps } = each\r\n if (routeParams) {\r\n path += route + \"/\" + this.props.match.params[routeParams]\r\n }\r\n else if (matchProps) {\r\n path += route + \"/\" + results[matchProps]\r\n }\r\n else {\r\n path += route\r\n }\r\n })\r\n this.props.history.push(path)\r\n }\r\n if (routeparams2 !== '2' && routeparams && connectingroute && connectingrouteid) {\r\n this.props.history.push(route + routeparams && results[routeparams] + routeparams2 && results[routeparams2] + connectingroute + results[connectingrouteid])\r\n }\r\n else if (routeparams2 === '2') {\r\n this.props.history.push(route + this.props.match.params['routeid'] + '/' + this.props.match.params['routeid1'] + connectingroute + results[connectingrouteid])\r\n }\r\n else if (connectingroute) {\r\n if (existparams) {\r\n this.props.history.push(route + this.props.match.params[existparams] + connectingroute)\r\n }\r\n else\r\n if (connectingrouteid) {\r\n if (results[routeparams]) { this.props.history.push(route + results[routeparams] + connectingroute + results[connectingrouteid]) }\r\n else { this.props.history.push(route + this.props.match.params[routeparams] + connectingroute + results[connectingrouteid]) }\r\n } else {\r\n this.props.history.push(route + results[routeparams] + connectingroute)\r\n }\r\n }\r\n if (afterSaveroutes) this.props.history.push(afterSaveroutes.route + results[afterSaveroutes.routeparams])\r\n\r\n }\r\n }\r\n }).catch(error => {\r\n console.log(error)\r\n error.then(err => {\r\n if (err.errors) this.onError(err.errors)\r\n else this.onError(err)\r\n })\r\n })\r\n }\r\n }\r\n // }\r\n }\r\n }\r\n\r\n /**\r\n * Handle Back to navigate to custom and history screen\r\n *\r\n * Required Props: back url, edit = true or false\r\n */\r\n handleBack = (e, closeconfirmation, stayInSamePage) => {\r\n const { options } = this.props\r\n const { back, nocondition } = options;\r\n const { routes, popupback, issubgrid } = back;\r\n let nocond = nocondition ? false : true\r\n let checkcond = this.props && this.props.header && this.props.header.unsaveddata ?\r\n !(_.isEqual(this.props.header.unsaveddata.results, this.props.header.unsaveddata.compareresults)) && !closeconfirmation && !this.state.closeviewconfirmation : false\r\n let insamepage = this.props && this.props.header && this.props.header.unsaveddata && this.props.header.unsaveddata.duplicate ? true : stayInSamePage\r\n\r\n if (popupback) {\r\n if (checkcond && nocond) {\r\n if (stayInSamePage) {\r\n this.setState({ openconfirmation: false, navigatingnext: false, navigatingprev: false })\r\n }\r\n else {\r\n this.setState({ openconfirmation: true, navigatingnext: false, navigatingprev: false })\r\n }\r\n }\r\n else {\r\n if (insamepage && !closeconfirmation && !stayInSamePage && nocond) {\r\n this.setState({ openconfirmation: true, navigatingnext: false, navigatingprev: false })\r\n }\r\n else if (insamepage && !closeconfirmation && stayInSamePage && nocond) {\r\n this.setState({ openconfirmation: false, navigatingnext: false, navigatingprev: false })\r\n }\r\n else {\r\n let pathname = this.props.location.pathname\r\n if (this.props && this.props.match && this.props.match.params && (this.props.match.params.Id || this.props.match.params.id) && !issubgrid) {\r\n this.props.match.params.Id = undefined\r\n pathname = pathname.substring(0, pathname.lastIndexOf(\"/\"))\r\n }\r\n this.props.onClose()\r\n this.props.history.push(pathname)\r\n }\r\n }\r\n }\r\n\r\n else {\r\n if (Array.isArray(routes)) {\r\n let path = ''\r\n routes.forEach(each => {\r\n const { route, routeParams, matchProps } = each\r\n if (routeParams) {\r\n path += route + \"/\" + this.props.match.params[routeParams]\r\n }\r\n else if (matchProps) {\r\n path += route + \"/\" + this.props.results[matchProps] //---correct: unused\r\n }\r\n else {\r\n path += route\r\n }\r\n })\r\n this.props.history.push(path)\r\n }\r\n }\r\n }\r\n\r\n /* user can choose whether to edit or not , displays alert message */\r\n chooseEditAlert = () => {\r\n this.setState({ displayalert: true })\r\n }\r\n\r\n closeAlert = () => {\r\n this.setState({ displayalert: false })\r\n }\r\n\r\n handleNotificationEdit = (result) => {\r\n const { options } = this.props\r\n if (options && options.notificationkey) {\r\n //Check any notifications\r\n let eventDetails = {\r\n SubModuleKey: \"APPLICATIONS\",\r\n SitePermitTypeId: this.props.match.params.routeid,\r\n EventId: this.props.match.params.routeid1,\r\n EventOnKey: options.notificationkey || '',//'FIELD_VALUE_CHANGE',\r\n }\r\n\r\n requestApi({ post: { url: getEnvVariable('Notification') + `/api/NotificationTrigger/HasAnyNotifications` } }, null, eventDetails, null, alert = true).then(results => {\r\n if (results) {\r\n this.setState({ openNotificationEditor: true })\r\n }\r\n else {\r\n let pathname = this.props.location.pathname\r\n if (result && this.props && this.props.match && this.props.match.params && options.afterSaveroutesId) {\r\n this.props.match.params.Id = result[options.afterSaveroutesId]\r\n pathname = pathname + '/' + this.props.match.params.Id\r\n }\r\n this.props.onClose();\r\n this.props.history.push(pathname);\r\n }\r\n })\r\n }\r\n else {\r\n\r\n\r\n let pathname = this.props.location.pathname\r\n if (result && this.props && this.props.match && this.props.match.params && options.afterSaveroutesId) {\r\n this.props.match.params.Id = result[options.afterSaveroutesId]\r\n pathname = pathname + '/' + this.props.match.params.Id\r\n }\r\n this.props.onClose();\r\n this.props.history.push({\r\n pathname: pathname,\r\n state: result\r\n });\r\n // this.props.history.push(pathname);\r\n }\r\n }\r\n\r\n handleNotificationClose = (isSent) => {\r\n this.setState({ openNotificationEditor: false });\r\n if (isSent) {\r\n this.props.snackbarMessage('Notification sent successfully', 'success');\r\n }\r\n this.props.onClose();\r\n }\r\n\r\n nextItem = (e, closeconfirmation, stayInSamePage) => {\r\n let checkcond = this.props && this.props.header && this.props.header.unsaveddata ?\r\n !(_.isEqual(this.props.header.unsaveddata.results, this.props.header.unsaveddata.compareresults)) && !closeconfirmation : false\r\n let insamepage = this.props.header.unsaveddata && this.props.header.unsaveddata.duplicate ? true : stayInSamePage\r\n\r\n if (checkcond) {\r\n if (stayInSamePage) {\r\n this.setState({ openconfirmation: false, navigatingnext: true, navigatingprev: false })\r\n }\r\n else {\r\n this.setState({ openconfirmation: true, navigatingnext: true, navigatingprev: false })\r\n }\r\n }\r\n else {\r\n if (insamepage && !closeconfirmation && !stayInSamePage) {\r\n this.setState({ openconfirmation: true, navigatingnext: false, navigatingprev: false })\r\n }\r\n else if (insamepage && !closeconfirmation && stayInSamePage) {\r\n this.setState({ openconfirmation: false, navigatingnext: false, navigatingprev: false })\r\n }\r\n else {\r\n this.setState({ openconfirmation: false, navigatingnext: true, navigatingprev: false }, () => {\r\n this.props.onNextItemClick()\r\n })\r\n }\r\n }\r\n }\r\n\r\n prevItem = (e, closeconfirmation, stayInSamePage) => {\r\n\r\n let checkcond = this.props && this.props.header && this.props.header.unsaveddata ?\r\n !(_.isEqual(this.props.header.unsaveddata.results, this.props.header.unsaveddata.compareresults)) && !closeconfirmation : false\r\n let insamepage = this.props.header.unsaveddata && this.props.header.unsaveddata.duplicate ? true : stayInSamePage\r\n if (checkcond) {\r\n if (stayInSamePage) {\r\n this.setState({ openconfirmation: false, navigatingprev: true, navigatingnext: false })\r\n }\r\n else {\r\n this.setState({ openconfirmation: true, navigatingprev: true, navigatingnext: false })\r\n }\r\n }\r\n else {\r\n if (insamepage && !closeconfirmation && !stayInSamePage) {\r\n this.setState({ openconfirmation: true, navigatingnext: false, navigatingprev: false })\r\n }\r\n else if (insamepage && !closeconfirmation && stayInSamePage) {\r\n this.setState({ openconfirmation: false, navigatingnext: false, navigatingprev: false })\r\n }\r\n else {\r\n this.setState({ openconfirmation: false, navigatingprev: true, navigatingnext: false }, () => {\r\n this.props.onPrevItemClick()\r\n })\r\n }\r\n }\r\n }\r\n\r\n /**\r\n *********************************************************\r\n Description: Renders the components.Subform manages the layout of the component. Form sends the changed field values to subform to update the field values. Form header contains\r\n save and edit actions.\r\n Required props: N/A\r\n limitations : N/A\r\n *********************************************************\r\n **/\r\n\r\n render() {\r\n const { options, defaults, order, type, compmap, className, styles, accessPermissions, accessLevelPermissions, windowHeight, hideEdit, dataItem, hideEditCheckVal, onFullScreen, onExitFullScreen, fullscreen, exitfullscreen, onNextItemClick, onPrevItemClick, ...otherProps } = this.props;\r\n const { crud, title, headerProps, hideheaderprops, savebtn, saveappbtn, designprops, historyalign, alignresend,alignprofile,hidescroll, hideEditCheckValue, hideEditButton, hideEditCheckName, } = options ? options : {}\r\n const { savebutton, editbutton, backbutton, savetemplatebutton, closebutton, breadcrumbs, sendbutton, nonstickyposition, navigateup, navigatedown, duplicatebutton, hasrolebasedcondition, historyurl } = headerProps ? headerProps : {}\r\n const save = crud ? crud.update : null\r\n const { errors, isedited, iseditduplicate, showsavebtn, displayalert, openNotificationEditor, openconfirmation, hideediticon, hideduplicateicon } = this.state\r\n let accessfrom = getEnvVariable('ConfigType') == 'R' ? 'moduleRegionAccess' : getEnvVariable('ConfigType') == 'D' ? 'moduleDistrictAccess' : 'moduleSiteAccess'\r\n let roleaccess = this.props.accessPermissions && this.props.accessPermissions[accessfrom] && this.props.accessPermissions[accessfrom] ? Object.values(this.props.accessPermissions[accessfrom]).includes('Add') ? 'CanAdd' : Object.values(this.props.accessPermissions[accessfrom]).includes('Update') ? 'CanEdit' : Object.values(this.props.accessPermissions[accessfrom]).includes('Read') ? 'CanRead' : 'CanAdd' : 'CanAdd'\r\n let portal = this.props.accessPermissions ? this.props.accessPermissions.portal : null\r\n let canAdd = (!roleaccess || !portal) ? true : portal === \"I\" && roleaccess === \"CanAdd\" ? true : (!hasrolebasedcondition || portal === \"E\") ? true : false\r\n let canEdit = (!roleaccess || !portal) ? true : portal === \"I\" && roleaccess === \"CanEdit\" ? true : (!hasrolebasedcondition || portal === \"E\") ? true : false\r\n let canRead = (!roleaccess || !portal) ? true : portal === \"I\" && roleaccess === \"CanRead\" ? true : (!hasrolebasedcondition || portal === \"E\") ? true : false\r\n return (\r\n <Fragment>\r\n <form onSubmit={this.handleSubmit} className={className} style={{ ...formstyles.formcontainer, ...styles }}>\r\n <div className={!designprops ? (!hidescroll ? \"eps-content-scroll\" : '') : ''} style={{ height: !designprops ? (!windowHeight ? window.innerHeight - 50 : '') : '' }}>\r\n\r\n {headerProps && !hideheaderprops && <FormHeader accessPermissions={accessPermissions} nonstickyposition={nonstickyposition} rowrenderedslide={this.props.rowrenderedslide} SaveTemplateInfo={this.customnoticesave} savetemplatebutton={savetemplatebutton}\r\n accessLevelPermissions={accessLevelPermissions} breadcrumbs={breadcrumbs} title={title} handleEdit={hideEdit && hideEditCheckVal ? (dataItem[hideEditCheckVal] === 'N' ? this.chooseEditAlert : this.handleEdit) : this.handleEdit} onFullScreen={onFullScreen} onExitFullScreen={onExitFullScreen} fullscreen={fullscreen} exitfullscreen={exitfullscreen} onNextItem={this.nextItem} onPrevItem={this.prevItem}\r\n handleSave={this.handleSave} handleClose={this.handleClose} editbutton={((hideEditButton && dataItem[hideEditCheckName] === hideEditCheckValue) || hideediticon) ? false : (canAdd || canEdit) ? editbutton : false} handleBack={this.handleBack} dataItem={dataItem} navigateup={navigateup} navigatedown={navigatedown}\r\n historyurl={historyurl} results={this.state.results}\r\n savebutton={editbutton ? (showsavebtn ? (savebutton) : (false)) : (canAdd || canEdit) ? savebutton : false} duplicatebutton={hideduplicateicon ? false : (canAdd || canEdit) ? duplicatebutton : false} backbutton={backbutton} isedited={isedited} iseditduplicate={iseditduplicate} designprops={designprops} historyalign={historyalign} alignresend={alignresend} alignprofile={alignprofile} sendbutton={sendbutton} />}\r\n {displayalert && <CustomAlert handleEdit={this.handleEdit} open={displayalert} message={' Are you sure, you want to edit ?'} closeAlert={this.closeAlert} severity={'Warning'} isAction={true} />}\r\n < SubForm {...this.props} effects={this.effects} compmap={compmap} changedFieldName={this.state.changedFieldName}\r\n handleFieldChange={this.handleFieldChange} handleIconClick={this.handleIconClick} results={this.state.formControls} res={this.state.results} addSubGrid={true}\r\n handleSlide={this.handleSlide} customnoticesave={this.customnoticesave} />\r\n\r\n {\r\n (savebtn || saveappbtn) &&\r\n <div className=\"col-sm-12\">\r\n <Button\r\n className=\"col-sm-2 float-right\"\r\n variant=\"contained\"\r\n color={this.state.hidesavebutton ? \"inherit\" : \"primary\"}\r\n disabled={this.state.hidesavebutton}\r\n onClick={() => { this.setState({ formsave: true }, () => this.handleSave(true)) }}\r\n >\r\n Save\r\n </Button>\r\n </div>\r\n }\r\n {openconfirmation && <ConfirmationDialog open={this.state.openconfirmation} handleBack={this.handleBack} navigatingnext={this.state.navigatingnext} navigatingprev={this.state.navigatingprev} nextItem={this.nextItem} prevItem={this.prevItem} />}\r\n {openNotificationEditor && <NotificatinoEditor\r\n openNotificationSlide={true}\r\n handleNotificationClose={this.handleNotificationClose}\r\n recordid={this.props.match.params.routeid1}\r\n sitepermittypeid={this.props.match.params.routeid}\r\n key={options.notificationkey}\r\n isFieldValueChange={false}\r\n eventonkey={options.notificationkey}\r\n />}\r\n </div>\r\n </form>\r\n </Fragment>\r\n );\r\n }\r\n\r\n}\r\n\r\nconst mapProps = (state) => {\r\n return state\r\n}\r\n\r\n// export const unsavedresultsReducer = (state = null, action) => {\r\n// switch (action.type) {\r\n// case 'UNSAVED_RESULTS':\r\n// return action.unsavedresults\r\n\r\n// default:\r\n// return state\r\n// }\r\n// }\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage, unsavedData, setRecordData, setProfile }, dispatch);\r\n}\r\n\r\nCFormContainer = connect(mapProps, mapActions)(CFormContainer)\r\nexport default withRouter(CFormContainer)\r\n","import FormControl from '@material-ui/core/FormControl';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Select from '@material-ui/core/Select';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { bindActionCreators } from 'redux';\r\nimport { setSectionsReload, snackbarMessage } from '../../core/actions';\r\nimport ConfirmationPopup from '../../core/controls/components/confirmationPopup';\r\nimport { GetData, PutData } from '../../core/modules/form/formsapi';\r\nimport { getEnvVariable } from '../environmentalList';\r\n\r\nvar inthis;\r\nclass CWorkflow extends Component {\r\n constructor(props) {\r\n super(props);\r\n // const { options } = props\r\n const { WorkflowId, SitePermitTypeId, ApplicationID } = props ? props : { WorkflowId: 0, SitePermitTypeId: 0, ApplicationID: 0 }\r\n this.state = {\r\n SitePermitTypeId: SitePermitTypeId,//this.props.apptypeId,\r\n WorkflowId: WorkflowId,\r\n // ParentWorkflowId: 0,\r\n ApplicationID: ApplicationID,//this.props.applicationid,\r\n // siteID: 0,\r\n workflowOptions: [],\r\n workflowStatus: 0,\r\n isApprover: false,\r\n isAssigned: true,\r\n currentTaskAssigned: 0,\r\n workflowStage: '',\r\n workflowTask: {},\r\n isForceInspection: false,\r\n currentStatus: '',\r\n message: '',\r\n statusOpen: false,\r\n prevStatusVal: ''\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n inthis = this;\r\n if (inthis.props.value !== '' && parseInt(inthis.props.value) > 0 && inthis.props.edit)\r\n this.loadWorkflowObject(inthis.props.value);\r\n else this.loadWorkflowObject();\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevProps.FieldKey === \"WORKFLOW_STATUS\" && this.props && this.props.value && this.props.value !== '' && prevProps.value !== this.props.value) {\r\n inthis = this;\r\n this.loadWorkflowObject(inthis.props.value);\r\n }\r\n }\r\n\r\n reload = () => {\r\n const current = this.props.location.pathname;\r\n this.props.history.replace(`/reload`);\r\n setTimeout(() => {\r\n this.props.history.replace(current);\r\n });\r\n }\r\n\r\n loadWorkflowObject(tworkflowId) {\r\n let tempWorkflowId = tworkflowId ? tworkflowId : inthis.state.WorkflowId\r\n if (typeof window.workflowObj !== \"undefined\" && tempWorkflowId && tempWorkflowId > 0) {\r\n try { //Verify the workflow access\r\n console.log(\"tworkflowId\" + tworkflowId + \"state tworkflowId\" + inthis.state.WorkflowId)\r\n\r\n window.workflowObj.data.getTasks(function (q) {\r\n window.workflowObj.data.getFlow(tempWorkflowId, function (retFlow) {\r\n var currFlow = retFlow.currflow;\r\n if (q.length === 0) {\r\n inthis.setState({ workflowStatus: currFlow.status, workflowOptions: currFlow.options, WorkflowId: tworkflowId ? tworkflowId : inthis.state.WorkflowId }, () => {\r\n inthis && inthis.props && inthis.props.handleFieldValue({ target: { value: '', name: 'WORKFLOW_STATUS', checked: false }, currentTarget: { dataset: null } })\r\n });\r\n } else {\r\n //From currflow check assigneduserid (userid) and disable workflow dropdown.\r\n var currTask = null;\r\n for (var i = 0; i < q.length; i++) {\r\n var task = q[i];\r\n if (task.flowid === tempWorkflowId) {\r\n currTask = task;\r\n break;\r\n }\r\n }\r\n if (currTask !== null) {\r\n console.log(task.approver, task.investigator, 'task.investigator --- Inspection check');\r\n inthis.setState({\r\n workflowTask: currTask,\r\n isApprover: currTask.approver,\r\n isAssigned: currTask.assignee === inthis.props.accessPermissions.userId, //(task.assignee === localStorage.username),//Compare with current loggedin user\r\n workflowStatus: currFlow.status,\r\n workflowOptions: currFlow.options,\r\n currentTaskAssigned: currTask.assignee,\r\n workflowStage: currFlow.group,\r\n isForceInspection: currTask.investigator,\r\n WorkflowId: tworkflowId ? tworkflowId : inthis.state.WorkflowId\r\n }, () => {\r\n inthis && inthis.props && inthis.props.handleFieldValue({ target: { value: '', name: 'WORKFLOW_STATUS', checked: false }, currentTarget: { dataset: null } })\r\n });\r\n } else {\r\n let isApprover = null\r\n let xml = retFlow.xml\r\n let regexp = /flowable:assignee=\"([a-z]*)\" flowable:approver=\"true\"/g\r\n let match = regexp.exec(xml)\r\n while (match !== null) {\r\n // matched text: match[0]\r\n // match start: match.index\r\n // capturing group n: match[n]\r\n isApprover = match[1]\r\n break\r\n }\r\n isApprover = inthis.props.accessPermissions.userId === isApprover //Compare with current loggedin user\r\n inthis.setState({\r\n workflowStatus: currFlow.status,\r\n isApprover: isApprover,\r\n workflowOptions: currFlow.options,\r\n currentTaskAssigned: currFlow.userid,\r\n workflowStage: currFlow.group,\r\n isAssigned: false,\r\n WorkflowId: tworkflowId ? tworkflowId : inthis.state.WorkflowId\r\n }, () => {\r\n inthis && inthis.props && inthis.props.handleFieldValue({ target: { value: '', name: 'WORKFLOW_STATUS', checked: false }, currentTarget: { dataset: null } })\r\n });\r\n }\r\n }\r\n });\r\n })\r\n }\r\n catch (ex) {\r\n this.props.handleFieldValue({ target: { value: '', name: 'WORKFLOW_STATUS', checked: false } })\r\n }\r\n }\r\n }\r\n\r\n handleSnackBarClose = (event, reason) => {\r\n if (reason === 'clickaway') {\r\n return;\r\n }\r\n };\r\n\r\n\r\n\r\n hasInspection(e) {\r\n //Check application has any inspection\r\n var sourceURL = getEnvVariable('Application') + `/api/InspectionSimple/${this.state.ApplicationID}/Grid`;\r\n GetData(sourceURL, \"\").then(results => {\r\n console.log(results);\r\n if (results && results.data && Array.isArray(results.data) && results.data.length > 0) {\r\n this.changeWorkflowStatus(e);\r\n } else {\r\n inthis.props.snackbarMessage(`Inspection Check : Please add inspection to continue workflow`, 'error');\r\n }\r\n })\r\n }\r\n\r\n changeWorkflowStatus(e) {\r\n let workflowChangeObj = { task: this.state.workflowTask, comment: \"No Comment\", action: e.target.value }\r\n //status changed to approved while workflow recommended\r\n let workflowStatusUpdateUrl = getEnvVariable('Application') + \"/api/Application/UpdateWorkflow/\" + this.state.SitePermitTypeId + \"/\" + this.state.ApplicationID + \"?&status=\" + e.target.value + \"&workflowid=\" + this.state.WorkflowId;\r\n if (e.target.value === \"Recommended\") {\r\n let ApplicationStatusUpdateUrl = \"\"\r\n if (this.state.workflowTask.approver === true) {\r\n ApplicationStatusUpdateUrl = getEnvVariable('Application') + `/api/Application/UpdateStatus/` + this.state.SitePermitTypeId + \"/\" + this.state.ApplicationID + `?stage=Approved&isUpdateStatus=true`\r\n }\r\n else if (this.state.workflowTask.issuer === true) {\r\n ApplicationStatusUpdateUrl = getEnvVariable('Application') + `/api/Application/UpdateStatus/` + this.state.SitePermitTypeId + \"/\" + this.state.ApplicationID + `?stage=Issued&isUpdateStatus=true`\r\n }\r\n try {\r\n // workflowChangeObj.task.name = \"Investigate\";\r\n this.props.snackbarMessage(`Please wait Workflow status is changing to ${e.target.value} `, 'info')\r\n window.workflowObj.data.complete(workflowChangeObj, function (q) {\r\n PutData(workflowStatusUpdateUrl, null).then(res => {\r\n if (ApplicationStatusUpdateUrl !== \"\") {\r\n PutData(ApplicationStatusUpdateUrl, null).then(rappes => {\r\n inthis.props.snackbarMessage(`Workflow status changed to ${e.target.value} Successfully`, 'success')\r\n inthis.setState({ workflowStatus: e.target.value }, () => {\r\n inthis.reload();\r\n inthis.props.setSectionsReload(true)\r\n inthis.loadWorkflowObject()\r\n })\r\n })\r\n }\r\n else {\r\n inthis.props.snackbarMessage(`Workflow status changed to ${e.target.value} Successfully`, 'success')\r\n inthis.setState({ workflowStatus: e.target.value }, () => {\r\n inthis.reload();\r\n inthis.props.setSectionsReload(true)\r\n inthis.loadWorkflowObject()\r\n })\r\n }\r\n\r\n }).catch(ex => {\r\n console.log(\"here workflow excep\")\r\n inthis.props.snackbarMessage(`Workflow status changed to ${e.target.value} Successfully`, 'success')\r\n inthis.setState({ workflowStatus: e.target.value }, () => {\r\n inthis.reload();\r\n inthis.props.setSectionsReload(true)\r\n inthis.loadWorkflowObject()\r\n })\r\n // inthis.props.snackbarMessage(`Workflow status failed to changed to ${e.target.value} `, 'error')\r\n })\r\n // inthis.setState({ workflowStatus: e.target.value }, () => {\r\n // inthis.props.setSectionsReload(true)\r\n // inthis.loadWorkflowObject()\r\n // })\r\n }, function (e) {\r\n inthis.props.snackbarMessage(`Workflow status changed to ${e.target.value} Successfully`, 'success')\r\n inthis.setState({ workflowStatus: e.target.value }, () => {\r\n inthis.reload();\r\n inthis.props.setSectionsReload(true)\r\n inthis.loadWorkflowObject()\r\n })\r\n //inthis.props.snackbarMessage(`Workflow status failed to changed to ${e.target.value} `, 'error')\r\n });\r\n } catch (e) { inthis.props.snackbarMessage(`Workflow status failed to changed to ${e.target.value} `, 'error') }\r\n\r\n }\r\n else {\r\n try {\r\n this.props.snackbarMessage(`Please wait Workflow status is changing to ${e.target.value} `, 'info')\r\n window.workflowObj.data.complete(workflowChangeObj, function (q) {\r\n PutData(workflowStatusUpdateUrl, null).then(res => {\r\n inthis.props.snackbarMessage(`Workflow status changed to ${e.target.value} Successfully`, 'success')\r\n inthis.setState({ workflowStatus: e.target.value }, () => {\r\n inthis.reload();\r\n inthis.props.setSectionsReload(true)\r\n inthis.loadWorkflowObject()\r\n })\r\n }).catch(ex => {\r\n inthis.props.snackbarMessage(`Workflow status changed to ${e.target.value} Successfully`, 'success')\r\n inthis.setState({ workflowStatus: e.target.value }, () => {\r\n inthis.reload();\r\n inthis.props.setSectionsReload(true)\r\n inthis.loadWorkflowObject()\r\n })\r\n // inthis.props.snackbarMessage(`Workflow status failed to changed to ${e.target.value} `, 'error')\r\n })\r\n // inthis.setState({ workflowStatus: e.target.value }, () => {\r\n // inthis.props.setSectionsReload(true)\r\n // inthis.loadWorkflowObject()\r\n // })\r\n }, function (e) {\r\n inthis.props.snackbarMessage(`Workflow status changed to ${e.target.value} Successfully`, 'success')\r\n inthis.setState({ workflowStatus: e.target.value }, () => {\r\n inthis.reload();\r\n inthis.props.setSectionsReload(true)\r\n inthis.loadWorkflowObject()\r\n })\r\n //inthis.props.snackbarMessage(`Workflow status failed to changed to ${e.target.value} `, 'error')\r\n });\r\n } catch (e) { inthis.props.snackbarMessage(`Workflow status failed to changed to ${e.target.value} `, 'error') }\r\n }\r\n\r\n }\r\n\r\n\r\n handleStatusClose = () => {\r\n this.setState({ statusOpen: false, currentStatus: \"\", prevStatusVal: '', message: '' });\r\n }\r\n\r\n //Permit approver - yes show only label\r\n //he is recommending, You are the permit approver,recommending will approve this Application - Are u sure u want to recommend\r\n // he is not recommend ->You are the permit approver,Not recommending will deny the Application - Are u sure u want to not recommend\r\n //extender - yes\r\n //inspection needed - yes\r\n\r\n\r\n handleDropdownChange = (e) => {\r\n let prevVal = this.state.workflowStatus;\r\n let mgs = this.state.workflowStage === 'Permit Approver' ? `You are the permit approver, ${e.target.value} will ${e.target.value === 'Recommended' ? 'Approve' : \"Deny\"} Application.` : \"\"\r\n this.setState({\r\n statusOpen: true, prevStatusVal: prevVal, currentStatus: e, message: `${mgs} Are you sure to change the status to ${e.target.value}`\r\n });\r\n }\r\n\r\n handleSelectChange = (e) => {\r\n if (this.state.isForceInspection)\r\n this.hasInspection(e);\r\n else\r\n this.changeWorkflowStatus(e);\r\n }\r\n\r\n handleStatusSubmit = () => {\r\n this.setState({ statusOpen: false, prevStatusVal: '', message: '' }, () => {\r\n this.handleSelectChange(this.state.currentStatus)\r\n });\r\n }\r\n\r\n render() {\r\n const { edit, value, tooltip } = this.props;\r\n let valueindex = 0;\r\n let newworkflowoptions = this.state.workflowOptions\r\n let removedworkflowoptions = [\"Not Started\", \"Not Forwarded\", \"Waiting\", \"Approved\", \"Denied\"]\r\n if (this.state.workflowOptions && this.state.workflowOptions.length > 0) {\r\n newworkflowoptions = this.state.workflowOptions.filter(element => {\r\n if (!removedworkflowoptions.includes(element.name)) {\r\n return element\r\n }\r\n });\r\n valueindex = this.state.workflowOptions.findIndex(x => x.value === (this.state.workflowStatus || value));\r\n }\r\n\r\n return (\r\n <div className=\"sketch_ToolBox_Widget\" >\r\n <ConfirmationPopup value={this.state.statusOpen || false} onSubmit={this.handleStatusSubmit} onClose={this.handleStatusClose}\r\n title=\"Status Change\" description={this.state.message || \"\"} />\r\n {this.state.WorkflowId && parseInt(this.state.WorkflowId) > 0 ? (\r\n <span >\r\n {edit &&\r\n <FormControl className=\"col-sm-12\" >\r\n <InputLabel >{'Workflow Status'}</InputLabel>\r\n <Select\r\n disabled={!this.state.isAssigned || this.state.applicationStatus === 30 || this.state.applicationStatus === 50 || (this.props.accessPermissions.isAdmin === \"N\" && !this.state.isAssigned)}\r\n value={this.state.workflowStatus}\r\n onChange={this.handleDropdownChange}\r\n className=\"col-sm-12\"\r\n >\r\n {newworkflowoptions.map(m => { return <MenuItem disabled={m.disabled} value={m.value}> {m.name}</MenuItem> })}\r\n </Select>\r\n </FormControl>\r\n }\r\n {!edit && <div>\r\n <Typography variant={'caption'} className=\"fw-bold\" >{'Workflow Status'} < Tooltip title={tooltip ? tooltip : 'Workflow status'} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em' }} />\r\n </Tooltip> </Typography><br />\r\n <Typography variant={'body2'} className=\"text-secondary\" color={'textPrimary'}> {(this.state.workflowOptions && this.state.workflowOptions[valueindex]) ? this.state.workflowOptions[valueindex].name : 'No Status'} </Typography>\r\n </div>}\r\n </span>\r\n ) : (< div >\r\n <Typography variant={'caption'} className=\"text-secondary\">{'Workflow Status'} < Tooltip title={tooltip ? tooltip : 'Workflow status'} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em' }} />\r\n </Tooltip> </Typography><br />\r\n <Typography variant={'body2'} className=\"fw-bold\" color={'textPrimary'}>{'N/A'} </Typography>\r\n </div>)\r\n }\r\n </div>\r\n );\r\n }\r\n\r\n\r\n componentDidCatch(error, info) {\r\n console.log(error);\r\n }\r\n}\r\n\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage, setSectionsReload }, dispatch);\r\n}\r\n\r\nCWorkflow = connect(null, mapActions)(CWorkflow)\r\nexport default withRouter(CWorkflow);\r\n\r\n\r\n// /*disabled={!this.state.isAssigned} */\r\n/*disabled = {!this.state.isAssigned || this.state.applicationStatus === 30 || this.state.applicationStatus === 50}*/","import AppBar from '@material-ui/core/AppBar';\r\nimport Drawer from '@material-ui/core/Drawer';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport SnapshotIcon from '@material-ui/icons/FilterCenterFocus';\r\nimport React, { useState, useEffect } from 'react';\r\nimport { useParams } from 'react-router-dom';\r\nimport { getEnvVariable } from '../../../modules/environmentalList';\r\nimport { createRequest, requestApi } from '../helpers/rest';\r\nimport DefaultSettings from './settings';\r\nimport Tabs from '@material-ui/core/Tabs';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport PropTypes from 'prop-types';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Box from '@material-ui/core/Box';\r\nimport Accordion from '@material-ui/core/Accordion';\r\nimport AccordionSummary from '@material-ui/core/AccordionSummary';\r\nimport AccordionDetails from '@material-ui/core/AccordionDetails';\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 TableContainer from '@material-ui/core/TableContainer';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\r\nimport moment from \"moment\";\r\nimport TextBox from './textbox';\r\nfunction TabPanel(props) {\r\n const { children, value, index, ...other } = props;\r\n\r\n return (\r\n <div\r\n role=\"tabpanel\"\r\n hidden={value !== index}\r\n id={`scrollable-prevent-tabpanel-${index}`}\r\n aria-labelledby={`scrollable-prevent-tab-${index}`}\r\n {...other}\r\n >\r\n {value === index && (\r\n <Box p={3}>\r\n <Typography>{children}</Typography>\r\n </Box>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nTabPanel.propTypes = {\r\n children: PropTypes.node,\r\n index: PropTypes.any.isRequired,\r\n value: PropTypes.any.isRequired,\r\n};\r\n\r\nfunction a11yProps(index) {\r\n return {\r\n id: `scrollable-prevent-tab-${index}`,\r\n 'aria-controls': `scrollable-prevent-tabpanel-${index}`,\r\n };\r\n}\r\n\r\n// const useStyles = makeStyles((theme) => ({\r\n// root: {\r\n// flexGrow: 1,\r\n// width: '100%',\r\n// backgroundColor: theme.palette.background.paper,\r\n// },\r\n// }));\r\n\r\n\r\n\r\nexport default function RulesSnapShot({ fieldValues, fieldProps }) {\r\n const [open, setOpen] = useState(false)\r\n // const [data, setData] = useState({})\r\n // const [businessrules, setBusinessRules] = useState([])\r\n const [applicationstate, setApplicationState] = useState([])\r\n const params = useParams();\r\n const [value, setValue] = React.useState(1);\r\n\r\n\r\n const handleTabChange = (event, newValue) => {\r\n setValue(newValue);\r\n };\r\n\r\n const toggleDrawer = (event) => {\r\n setOpen(!open);\r\n };\r\n\r\n useEffect(() => {\r\n if (open) {\r\n let datakeysurl = [\r\n // {\r\n // url: getEnvVariable('Application') + `/api/BusinessRulesUserActivity/RecordState/{routeid1}`,\r\n // \"routeProps\": [{\r\n // name: \"routeid1\",\r\n // key: \"routeid1\",\r\n // },\r\n // {\r\n // name: \"routeid\",\r\n // key: \"routeid\",\r\n // }],\r\n // type: 'get'\r\n // },\r\n {\r\n url: getEnvVariable('Application') + `/api/BusinessRulesUserActivity/RecordState/{routeid1}`,\r\n \"routeProps\": [{\r\n name: \"routeid1\",\r\n key: \"routeid1\",\r\n },],\r\n type: 'get',\r\n }]\r\n\r\n Promise.all(datakeysurl.map(each => requestApi(createRequest(each, {}, params)))).then(datacustomkeys => {\r\n const [RecordHiddenState = null] = datacustomkeys //businessrules = [],\r\n // setBusinessRules(businessrules)\r\n setApplicationState(RecordHiddenState)\r\n })\r\n }\r\n\r\n }, [open])\r\n\r\n\r\n return (\r\n <div>\r\n <IconButton className=\"zoom\" title={'Business Rules Snapshot'} color={\"inherit\"} onClick={toggleDrawer} size='small'> <SnapshotIcon /> </IconButton>\r\n <Drawer anchor={'right'} open={open} onClose={toggleDrawer} PaperProps={{ style: { width: 700 } }} >\r\n <AppBar position=\"static\" color='secondary'>\r\n <Toolbar variant=\"dense\">\r\n <Typography variant=\"h6\" color=\"inherit\" className={'flex-grow-1'}>\r\n {'Business Rules Snapshot'}\r\n </Typography>\r\n <IconButton\r\n className='float-right'\r\n edge=\"end\"\r\n onClick={toggleDrawer}\r\n color=\"inherit\"\r\n >\r\n <CloseIcon />\r\n </IconButton>\r\n </Toolbar>\r\n </AppBar>\r\n <AppBar position=\"static\" color=\"white\">\r\n <Tabs\r\n value={value}\r\n onChange={handleTabChange}\r\n indicatorColor=\"primary\"\r\n textColor=\"white\"\r\n variant=\"fullWidth\"\r\n scrollButtons=\"auto\"\r\n >\r\n {/* <Tab label=\"Rules SnapShot\" {...a11yProps(0)} /> */}\r\n <Tab label=\"Current Application State Triggered By Rules\" {...a11yProps(1)} />\r\n </Tabs>\r\n </AppBar>\r\n {/* <TabPanel value={value} index={0}>\r\n <TimeLine businessrules={businessrules} fieldProps={fieldProps} />\r\n </TabPanel> */}\r\n <TabPanel value={value} index={1}>\r\n <RecordCurrentState fieldProps={fieldProps} applicationstate={applicationstate} />\r\n </TabPanel>\r\n </Drawer>\r\n </div >\r\n );\r\n}\r\n\r\n// function TimeLine({ businessrules, fieldProps }) {\r\n// const [expanded, setExpanded] = useState(false);\r\n// const [searchValue, setsearchValue] = useState('');\r\n// const [businessobj, setBusinessRuleObj] = useState({})\r\n// const [refresh, setRefreh] = useState(false)\r\n// const [fieldKeys, setfieldKeys] = useState(fieldProps && Object.keys(fieldProps).length > 0 ? Object.keys(fieldProps) : [])\r\n\r\n// const handleAccordianChange = (panel) => (event, isExpanded) => {\r\n// setExpanded(isExpanded ? panel : false);\r\n// };\r\n\r\n// const handleSearchValue = (evt) => {\r\n// const { name, value } = evt.target\r\n// setsearchValue(value);\r\n// createBusinessRules(value)\r\n// }\r\n\r\n// useEffect(() => {\r\n// createBusinessRules()\r\n// }, [])\r\n\r\n\r\n// const createBusinessRules = (value = '') => {\r\n// let tempbusinessobj = {};\r\n// let appKeys = Object.keys(fieldProps).filter(each => each.toLowerCase().includes(value.toLowerCase()));\r\n// appKeys.forEach(appkey => {\r\n// if ((fieldProps[appkey].label.toLowerCase()).includes(value.toLowerCase())) {\r\n// let appKeyObj = businessrules.filter(each => each.EventField === appkey);\r\n// tempbusinessobj[appkey] = appKeyObj;\r\n// }\r\n// })\r\n// setBusinessRuleObj(tempbusinessobj);\r\n// setfieldKeys(appKeys)\r\n// setRefreh(!refresh)\r\n// }\r\n\r\n\r\n// return (<div className='col-12' style={{ maxHeight: window.innerHeight - 145, overflow: 'auto' }}>\r\n// {refresh}\r\n// <TextBox className=\"col-10 row\" label=\"Search\" name=\"search\" value={searchValue} handleFieldValue={handleSearchValue} />\r\n// <div className='my-1' />\r\n// {fieldKeys && fieldKeys.length > 0 && fieldKeys.map(each => {\r\n// return <><Accordion expanded={expanded === each} onChange={handleAccordianChange(each)}>\r\n// <AccordionSummary\r\n// expandIcon={<ExpandMoreIcon />}\r\n// aria-controls=\"panel1bh-content\"\r\n// id=\"panel1bh-header\"\r\n// >\r\n// <Typography variant=\"subtitle2\" gutterBottom>{fieldProps[each].label}</Typography>\r\n// </AccordionSummary>\r\n// <AccordionDetails>\r\n// <TableContainer component={Paper}>\r\n// <Table aria-label=\"simple table\">\r\n// <TableHead>\r\n// <TableRow>\r\n// <TableCell align=\"right\">Trigger Time</TableCell>\r\n// <TableCell align=\"right\">Trigger By</TableCell>\r\n// <TableCell align=\"right\">Required</TableCell>\r\n// <TableCell align=\"right\">Visible</TableCell>\r\n// <TableCell align=\"right\">Disabled</TableCell>\r\n// </TableRow>\r\n// </TableHead>\r\n// <TableBody>\r\n// {businessobj && Object.keys(businessobj).length > 0 && businessobj[each] && businessobj[each].map(eachBus => {\r\n// return <TableRow key={eachBus.EventField + eachBus.EventAt}>\r\n// <TableCell align=\"right\" component=\"th\" scope=\"row\">\r\n// {moment(eachBus.EventAt).format('MM/DD/YYYY hh:mm:ss A')}\r\n// </TableCell>\r\n// <TableCell align=\"right\">{fieldProps[eachBus.EventField].label}</TableCell>\r\n// <TableCell align=\"right\">{eachBus.Required === 'Y' ? 'Yes' : 'No'}</TableCell>\r\n\r\n// <TableCell align=\"right\"> {eachBus.IsDisabled === 'Y' ? 'Yes' : 'No'}</TableCell>\r\n// <TableCell align=\"right\">{eachBus.IsVisible === 'Y' ? 'Yes' : 'No'}</TableCell>\r\n// </TableRow>\r\n// }\r\n// )}\r\n// </TableBody>\r\n// </Table>\r\n// </TableContainer>\r\n// </AccordionDetails>\r\n// </Accordion>\r\n// <div className='my-1' />\r\n// </>\r\n// })}\r\n// </div>)\r\n\r\n// }\r\n\r\nfunction RecordCurrentState({ fieldProps, applicationstate }) {\r\n return <TableContainer component={Paper} style={{ height: window.innerHeight - 145, overflow: 'auto' }}>\r\n <Table stickyHeader aria-label=\"simple table\">\r\n <TableHead >\r\n <TableRow>\r\n {/* <TableCell align=\"right\">Trigger Time</TableCell> */}\r\n <TableCell >Field</TableCell>\r\n <TableCell >Required</TableCell>\r\n <TableCell >Visible</TableCell>\r\n <TableCell >Disabled</TableCell>\r\n </TableRow>\r\n </TableHead>\r\n <TableBody >\r\n {applicationstate && applicationstate.length > 0 && applicationstate.map(eachBus => {\r\n return <TableRow key={eachBus.EventField + eachBus.EventAt}>\r\n {/* <TableCell component=\"th\" scope=\"row\">\r\n {moment(eachBus.EventAt).format('MM/DD/YYYY hh:mm:ss A')}\r\n </TableCell> */}\r\n <TableCell >{(fieldProps && fieldProps[eachBus.EventField] && fieldProps[eachBus.EventField].label) || eachBus.EventField || ''}</TableCell>\r\n <TableCell >{eachBus.Required === 'Y' ? 'Yes' : 'No'}</TableCell>\r\n\r\n <TableCell > {eachBus.IsDisabled === 'Y' ? 'Yes' : 'No'}</TableCell>\r\n <TableCell >{eachBus.IsVisible === 'Y' ? 'Yes' : 'No'}</TableCell>\r\n </TableRow>\r\n }\r\n )}\r\n </TableBody>\r\n </Table>\r\n </TableContainer>\r\n\r\n}","import IconButton from '@material-ui/core/IconButton';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward';\r\nimport ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\r\nimport CancelIcon from '@material-ui/icons/Cancel';\r\nimport ChevronLeftIcon from '@material-ui/icons/ChevronLeft';\r\nimport FilterListIcon from '@material-ui/icons/ClearAll';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport SaveReportIcon from '@material-ui/icons/Description';\r\nimport DraftsIcon from '@material-ui/icons/Drafts';\r\nimport DynamicFeedIcon from '@material-ui/icons/DynamicFeed';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport FileCopyIcon from '@material-ui/icons/FileCopy';\r\nimport ForwardIcon from '@material-ui/icons/Forward';\r\nimport FullscreenIcon from '@material-ui/icons/Fullscreen';\r\nimport FullscreenExitIcon from '@material-ui/icons/FullscreenExit';\r\nimport GetAppIcon from '@material-ui/icons/GetApp';\r\nimport TourIcon from '@material-ui/icons/LocalLibraryTwoTone';\r\nimport MarkunreadIcon from '@material-ui/icons/Markunread';\r\nimport RefreshIcon from '@material-ui/icons/Refresh';\r\nimport LockIcon from '@material-ui/icons/Lock';\r\nimport UnlockIcon from '@material-ui/icons/LockOpen';\r\nimport SaveIcon from '@material-ui/icons/Save';\r\nimport ExportExcel from '@material-ui/icons/SaveAlt';\r\nimport SystemUpdateAltIcon from '@material-ui/icons/SystemUpdateAlt';\r\nimport React from \"react\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { showTour } from '../../actions';\r\nimport AssignmentReturnIcon from '@material-ui/icons/AssignmentReturn';\r\nimport MenuIconOpen from '@material-ui/icons/Menu';\r\nimport CallSplit from '@material-ui/icons/CallSplit';\r\nimport PauseCircleFilledIcon from '@material-ui/icons/PauseCircleFilled';\r\nimport HistoryIcon from '@material-ui/icons/History';\r\nimport DoneAll from '@material-ui/icons/DoneAll';\r\nimport CheckBox from '@material-ui/icons/CheckBox';\r\nimport History from './history';\r\nimport MissingItemsDrawer from './custom/missinglists';\r\nimport RulesSnapShot from './rulesSnapshot';\r\nimport Preview from '@material-ui/icons/Visibility';\r\nimport QuickView from './quickview';\r\nimport DeleteForeverIcon from '@material-ui/icons/DeleteForever';\r\nimport { getEnvVariable } from '../../../modules/environmentalList';\r\n//import Filter from '@material-ui/icons/FilterList';\r\nconst _ = require('lodash');\r\n\r\nconst fieldTypes = {\r\n edit: EditIcon,\r\n add: AddIcon,\r\n save: SaveIcon,\r\n close: CloseIcon,\r\n back: ChevronLeftIcon,\r\n duplicate: FileCopyIcon,\r\n cloneitems: DynamicFeedIcon,\r\n download: GetAppIcon,\r\n refresh: RefreshIcon,\r\n lock: LockIcon,\r\n unlock: UnlockIcon,\r\n reports: SaveReportIcon,\r\n excel: ExportExcel,\r\n clear: FilterListIcon,\r\n submit: ForwardIcon,\r\n markread: DraftsIcon,\r\n markunread: MarkunreadIcon,\r\n cancel: CancelIcon,\r\n previtem: ArrowUpwardIcon,\r\n nextitem: ArrowDownwardIcon,\r\n fullscreen: FullscreenIcon,\r\n exitfullscreen: FullscreenExitIcon,\r\n tour: TourIcon,\r\n downloadpermit: SystemUpdateAltIcon,\r\n withdraw: AssignmentReturnIcon,\r\n moreitems: MenuIconOpen,\r\n call_split: CallSplit,\r\n pause: PauseCircleFilledIcon,\r\n history: HistoryIcon,\r\n check_box: CheckBox,\r\n doneall: DoneAll,\r\n preview: Preview,\r\n quickview: QuickView,\r\n delete: DeleteForeverIcon\r\n //filter: Filter\r\n}\r\n\r\nexport default function Icons(props) {\r\n const { icon, type, title, color, hidevalue, menudisplay, sharedProps, name, showon, hideon, hideanother, showOnly, historyurl, fieldValues, hideByValues,\r\n urlparams, fieldProps, ...otherProps } = props\r\n const EachComp = fieldTypes[icon]\r\n const dispatch = useDispatch();\r\n \r\n const getColor = () => {\r\n let module = getEnvVariable('ModuleKey')\r\n switch (module) {\r\n case 'AEPS':\r\n return 'rgba(0, 53, 95, 255)'\r\n case 'AMES':\r\n return '#1976d2'\r\n default:\r\n return '';\r\n }\r\n }\r\n const Conditions = () => {\r\n if (hideByValues && hideByValues.length > 0 || showOnly) {\r\n let hideResult = hideByValues.find(each => {\r\n if (each['condition']) {\r\n if (each['value'] && sharedProps[each['name']] && sharedProps[each['name']].includes(each['value']))\r\n return each\r\n }\r\n else if (each['value'] == sharedProps[each['name']])\r\n return each\r\n })\r\n if (hideResult && showOnly) {\r\n let profile = JSON.parse(localStorage.getItem('profile'))\r\n // let role = JSON.parse(localStorage.getItem('roles')) && JSON.parse(localStorage.getItem('roles')).find(each => each.RoleType === showOnly)\r\n let isRoleBased = ((profile && profile.modulePermissions && profile.modulePermissions.length > 0 &&\r\n profile.modulePermissions.find(each => each.roleTypeName === 'RAME')) || (profile && profile.isAdmin === 'Y')) //role.Id.toString()\r\n return isRoleBased ? ((sharedProps && (sharedProps[hideon] === hidevalue || sharedProps[hideanother] === hidevalue)) ? true : false) : hideResult\r\n\r\n }\r\n else return hideResult ? true : false;\r\n }\r\n\r\n else if (((name === 'fullscreen' || name === 'exitfullscreen') && (sharedProps && (sharedProps[name] === true))) ||\r\n (sharedProps && sharedProps.allgriddata && (name === 'nextitem' || name === 'previtem') && (_.isEmpty(sharedProps.allgriddata))) ||\r\n (otherProps.onClick === \"hidedisplay\" || (sharedProps && (sharedProps[hideon] === hidevalue || sharedProps[hideanother] === hidevalue))))\r\n return true\r\n else return false\r\n }\r\n if (Conditions())\r\n return null\r\n else if (name === 'tour') {\r\n return <i className={name} onClick={() => { dispatch(showTour(true)) }}><IconButton title={title ? title : ''} color={color ? color : \"inherit\"}> <EachComp /> </IconButton ></i>\r\n }\r\n else if (name === 'history') {\r\n return <History url={historyurl} fieldValues={fieldValues} sharedProps={sharedProps} />\r\n }\r\n else if (name === 'required') {\r\n return <MissingItemsDrawer fieldValues={fieldValues} urlparams={urlparams} label={title} />\r\n }\r\n else if (name === 'dcrequired') {\r\n return <MissingItemsDrawer fieldProps={fieldProps} fieldValues={fieldValues} urlparams={urlparams} label={title} name={name} />\r\n }\r\n else if (name === 'rulessnapshot') {\r\n return <RulesSnapShot fieldValues={fieldValues} fieldProps={fieldProps} />\r\n }\r\n else if (menudisplay) {\r\n return <EachComp className={name} style={{ color: color || \"inherit\" }} />\r\n }\r\n else if (name === 'quickview') {\r\n return <QuickView fieldValues={fieldValues} sharedProps={sharedProps} />\r\n }\r\n else return <i className={name + ' zoom mx-2'} {...otherProps}><IconButton style={{ backgroundColor: 'white', color: color || getColor() }} title={title ? title : ''} >\r\n <EachComp fontSize=\"medium\" />\r\n </IconButton></i>\r\n}\r\n\r\n","\r\nexport const validation = (values, transformProps, fieldKeys) => {\r\n const { removesubfieldname, addsubfieldname } = transformProps ? transformProps : {}\r\n const removesubfieldnamelength = removesubfieldname ? (removesubfieldname.length) : 0\r\n return values.reduce((accum, each) => {\r\n const { validations, required, tooltip, contexthelp, sectionToolTips } = accum\r\n const { Key, Type, Order } = each\r\n let name = Key.slice(removesubfieldnamelength)\r\n if (addsubfieldname) name = addsubfieldname + name\r\n if (fieldKeys && fieldKeys.length > 0) {\r\n fieldKeys.forEach(element => {\r\n if (element.toUpperCase() === name)\r\n name = element\r\n });\r\n }\r\n if (Type === 'R') required.push(name)\r\n if (Type === 'T') tooltip[name] = each.Message || ''\r\n if (Type === 'P') sectionToolTips[name] = each.Message || '' // add section tooltips\r\n if (Type === 'H') contexthelp[name] = each.Message || ''\r\n if (validations[name]) validations[name].push(each)\r\n else validations[name] = [each]\r\n // if (Type === 'T') toolTipFieldNamesInUpperCase[validationname] = each.Message || ''\r\n return accum\r\n }, { validations: {}, required: [], tooltip: {}, contexthelp: {}, sectionToolTips: {} })\r\n}\r\n\r\nexport const objectConversion = (o, s) => {\r\n s = s.replace(/\\[(\\w+)\\]/g, '.$1'); // convert indexes to properties\r\n s = s.replace(/^\\./, ''); // strip a leading dot\r\n let a = s.split('.');\r\n for (let i = 0, n = a.length; i < n; ++i) {\r\n let k = a[i];\r\n if (k in o) {\r\n o = o[k];\r\n } else {\r\n return '';\r\n }\r\n }\r\n return o;\r\n}\r\n","import Button from '@material-ui/core/Button';\r\nimport Icon from '@material-ui/core/Icon';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport Alert from '@material-ui/lab/Alert';\r\nimport React, { Fragment, useEffect, useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\n\r\n// const useStyles = makeStyles((theme) => ({\r\n// root: {\r\n// width: '100%',\r\n// '& > * + *': {\r\n// marginTop: theme.spacing(3),\r\n// },\r\n// },\r\n// }));\r\n\r\nfunction ActionAlerts(props) {\r\n const { severity, isAction, style, icon, buttonLabels } = props;\r\n //const classes = useStyles();\r\n const [message, setMessage] = useState(props.message)\r\n const [showalertcond, setShowAlertCond] = useState(true)\r\n const handleAlertActions = (val) => {\r\n setShowAlertCond(false)\r\n props.handleAlerts(val)\r\n }\r\n useEffect(() => {\r\n setMessage(props.message)\r\n }, [props.message])\r\n return (\r\n <div className='py-1'>\r\n {showalertcond && <Alert severity={severity} style={style}\r\n action={\r\n <Fragment>\r\n {isAction && <Button onClick={() => props.handleEdit()} color=\"inherit\" size=\"small\"> <b> Yes </b> </Button>}\r\n {isAction && <Button onClick={() => props.closeAlert()} color=\"inherit\" size=\"small\"> <b>No</b> </Button>}\r\n {buttonLabels && buttonLabels.length > 0 && buttonLabels.map(each => {\r\n return <Button onClick={() => handleAlertActions(each.value)} color=\"inherit\" size=\"small\"><b>{each.name}</b> </Button>\r\n })}\r\n </Fragment>\r\n }\r\n >\r\n <div> <b>{message}</b> </div>\r\n </Alert>}\r\n </div >\r\n );\r\n}\r\n\r\nexport default ActionAlerts","import { getEnvVariable } from '../../../../modules/environmentalList';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { requestApi } from '../../../modules/form/utilities';\r\nimport { GetData, PostData, PutData } from '../../helpers/requests';\r\n\r\nexport const Download = (downloadObject, routeid, routeid1) => {\r\n //let Group = GetAppDownloadGroup(downloadObject.Key);\r\n let body = {};\r\n body['sitePermitTypeId'] = routeid //383\r\n body['masterTableId'] = routeid1 //23649\r\n body['sideBarItems'] = [\"Images\",\"AppWorkNotification\",\"WorkNotifVolunteers\"]\r\n //body['sideBarDataItemFullData'] = [\"AppWorkNotification\"]\r\n //body['sideBarDataItems'] = {\"AppWorkNotification\" : \"50\" }\r\n\r\n let url = getEnvVariable('Application') + `/api/Application/FieldValues`;\r\n fetchData('POST', url, null, body, true).then(returndata => {\r\n if (returndata && downloadObject.Group) {\r\n let formattedData = GetMailMergeFormatFromObj(downloadObject.Group, returndata); //get group here\r\n console.log(formattedData);\r\n ProjectDownloadMailMerge(downloadObject, formattedData);\r\n } else {\r\n ProjectDownload(downloadObject, []);\r\n }\r\n })\r\n}\r\n\r\nexport const DownloadWithSideBarData = (downloadObject, routeid, routeid1, datatiems) => {\r\n //let Group = GetAppDownloadGroup(downloadObject.Key); 371\r\n\r\n let body = {};\r\n body['sitePermitTypeId'] = routeid //383\r\n body['masterTableId'] = routeid1 //23649\r\n body['sideBarItems'] = [\"Images\",\"AppWorkNotification\",\"WorkNotifVolunteers\"]\r\n body['sideBarDataItemFullData'] = [\"AppWorkNotification\"]\r\n body['sideBarDataItems'] = datatiems\r\n\r\n let url = getEnvVariable('Application') + `/api/Application/FieldValues`;\r\n fetchData('POST', url, null, body, true).then(returndata => {\r\n if (returndata && downloadObject.Group) {\r\n let formattedData = GetMailMergeFormatFromObj(downloadObject.Group, returndata); //get group here\r\n console.log(formattedData);\r\n ProjectDownloadMailMerge(downloadObject, formattedData);\r\n } else {\r\n ProjectDownload(downloadObject, []);\r\n }\r\n })\r\n}\r\n\r\n\r\nexport const fetchData = (requestType, url, queryParam, body, alert = false) => {\r\n\r\n const queryStr = queryParam != null ? `${url}?${queryParam}` : `${url}`\r\n\r\n if (requestType == \"GET\") {\r\n return GetData(queryStr);\r\n }\r\n else if (requestType == \"POST\") {\r\n return PostData(queryStr, body, alert);\r\n }\r\n else if (requestType == \"PUT\")\r\n return PutData(queryStr, body);\r\n}\r\n\r\n\r\nexport const GetAppDownloadGroup = (key) => {\r\n // return \"RECYCLERS\";\r\n}\r\n\r\nexport const GetDataPromise = (sourceURL) => {\r\n return new Promise((resolve, reject) => {\r\n requestApi({ get: { url:sourceURL } },null, null).then(results => {\r\n if(results)\r\n resolve(results)\r\n\r\n }).catch(ex =>{\r\n resolve([])\r\n })\r\n })\r\n}\r\n\r\nexport const GetMailMergeFormatFromObj = (group, dataobj) => {\r\n let schema = [];\r\n let parentObj = {}\r\n let parentfields = [];\r\n let parentvalues = [];\r\n let relationtableobjs = [];\r\n if(Array.isArray(dataobj)){\r\n dataobj.forEach(each => {\r\n const { Key, Value, Entity} = each\r\n parentObj.name = group;\r\n parentObj.id = group;\r\n if (Value != null && (typeof Value === 'string' || typeof Value === 'number') && Value != 'SIDEBARENTITY' ) {\r\n parentfields.push({ \"name\": Key.replace(/ /g,''), \"id\": Key.replace(/ /g,'') })\r\n parentvalues.push(Value)\r\n } else if (Value != null && Array.isArray(Value) && Value.length>0) {\r\n console.log('Fetching it from the array group--------')\r\n let relationtables = GetMailMergeFormatFromArray(group, Key, Value);\r\n relationtableobjs.push(relationtables);\r\n } else if (Value != null && typeof Value === 'object' && Value != 'SIDEBARENTITY') {\r\n let relationtables = GetMailMergeFormatFromObj(Key, Value)\r\n relationtableobjs.push(relationtables);\r\n }else if(Value != null && Value == 'SIDEBARENTITY'){\r\n if(Entity && Array.isArray(Entity)){\r\n let relationtables = GetMailMergeFormatFromArray(group, Key, Entity);\r\n relationtableobjs.push(relationtables);\r\n }else if(typeof Entity === 'object'){\r\n let relationtables = GetMailMergeFormatFromObj_Defined(group, Key, Entity);\r\n relationtableobjs.push(relationtables);\r\n }\r\n }\r\n })\r\n }\r\n\r\n schema.push({\r\n \"name\": group,\r\n \"id\": group,\r\n \"fields\": parentfields,\r\n \"values\": [parentvalues]\r\n })\r\n if (relationtableobjs.length > 0) {\r\n relationtableobjs.forEach(eachrelationtable => {\r\n //schema.push(e);\r\n if (Array.isArray(eachrelationtable)) {\r\n eachrelationtable.forEach(eachrelatiochildobj => {\r\n schema.push(eachrelatiochildobj);\r\n })\r\n }\r\n })\r\n }\r\n return schema;\r\n}\r\n\r\nexport const GetMailMergeFormatFromObj_Defined = (parenttablename, group, dataobj) => {\r\n let schema = [];\r\n let parentObj = {}\r\n let parentfields = [];\r\n let parentvalues = [];\r\n let relationtableobjs = [];\r\n\r\n for (const [key, value] of Object.entries(dataobj)) {\r\n console.log(`${key}: ${value}`);\r\n if (value != null && (typeof value === 'string' || typeof value === 'number') ) {\r\n parentfields.push({ \"name\": key.replace(/ /g,''), \"id\": key.replace(/ /g,'') })\r\n parentvalues.push(value)\r\n }\r\n else if (value != null && Array.isArray(value) && value.length>0) {\r\n let relationtables = GetMailMergeFormatFromArray(group, key, value);\r\n relationtableobjs.push(relationtables);\r\n }else if (value != null && typeof value === 'object' ){\r\n let relationtables = GetMailMergeFormatFromObj_Defined(key, value)\r\n relationtableobjs.push(relationtables);\r\n }\r\n }\r\n let groupName = firstLetterCaps(group)\r\n\r\n schema.push({\r\n \"name\": group,\r\n \"id\": group,\r\n \"fields\": parentfields,\r\n \"values\": [parentvalues],\r\n \"relation\": parenttablename + \"Id = %\" + groupName + \".id%\"\r\n })\r\n if (relationtableobjs.length > 0) {\r\n relationtableobjs.forEach(eachrelationtable => {\r\n //schema.push(e);\r\n if (Array.isArray(eachrelationtable)) {\r\n eachrelationtable.forEach(eachrelatiochildobj => {\r\n schema.push(eachrelatiochildobj);\r\n })\r\n }\r\n })\r\n }\r\n return schema;\r\n}\r\n\r\n// Check for nested data if any\r\nexport const GetMailMergeFormatFromArray = (parenttablename, group, arr) => {\r\n let schema = [];\r\n let parentObj = {}\r\n let parentfields = [];\r\n let parentvalues = [];\r\n let relationtableobjs = [];\r\n console.log(arr);\r\n if (arr.length > 0) {\r\n for (var i = 0; i < arr.length; i++) {\r\n let valuesarr = [];\r\n if (arr[i]) {\r\n for (const [key, value] of Object.entries(arr[i])) {\r\n if (value != null && (typeof value === 'string' || typeof value === 'number')) {\r\n if (i == 0) {\r\n parentfields.push({ \"name\": key.replace(/ /g,''), \"id\": key.replace(/ /g,'') })\r\n }\r\n valuesarr.push(value)\r\n } else if (value != null && Array.isArray(value) && value.length > 0) {\r\n let relationtables = GetMailMergeFormatFromArray(group, key, value);\r\n relationtableobjs.push(relationtables);\r\n } else if (value != null && typeof value === 'object') {\r\n let relationtables = GetMailMergeFormatFromObj(key, value);\r\n relationtableobjs.push(relationtables);\r\n }\r\n }\r\n parentvalues.push(valuesarr)\r\n }\r\n }\r\n\r\n let relationtablename = firstLetterSmall(parenttablename)\r\n let groupName = firstLetterCaps(group)\r\n schema.push({\r\n \"name\": groupName,\r\n \"id\": groupName,\r\n \"fields\": parentfields,\r\n \"values\": parentvalues,\r\n \"relation\": relationtablename + \"ID = %\" + groupName + \".id%\"\r\n })\r\n if (relationtableobjs.length > 0) {\r\n relationtableobjs.forEach(eachrelationtable => {\r\n //schema.push(e);\r\n if (Array.isArray(eachrelationtable)) {\r\n eachrelationtable.forEach(eachrelatiochildobj => {\r\n schema.push(eachrelatiochildobj);\r\n })\r\n }\r\n })\r\n }\r\n }\r\n return schema;\r\n}\r\n\r\nexport const firstLetterSmall = (string) => {\r\n return string.charAt(0).toLowerCase() + string.slice(1);\r\n\r\n}\r\n\r\nexport const firstLetterCaps = (string) => {\r\n return string.charAt(0).toUpperCase() + string.slice(1);\r\n\r\n}\r\n\r\nexport const ProjectDownloadMailMerge = (e, appdetails) => {\r\n\r\n console.log(e);\r\n requestApi({ post: { url: getEnvVariable('AppDownloadAPI') + `/Editor/DownloadTemplateMerger/${e.DownloadId}` } }, null, appdetails, null, false, \"Downloaded Successfully\")\r\n .then(data => {\r\n if (data) {\r\n console.log(data);\r\n const downloadLink = document.createElement(\"a\");\r\n downloadLink.href = data.base64PDFFileContent;//dFile\r\n downloadLink.download = data.fileName; //fileName\r\n downloadLink.click();\r\n downloadLink.remove();\r\n }\r\n })\r\n}\r\n\r\nexport const DownloadInvoice = (invoiceid, downloadid) => {\r\n return new Promise((resolve, reject) => {\r\n let url = getEnvVariable('Payment') + `Invoice/FullInvoice/${invoiceid}`;\r\n let downloadObject={\"Group\":\"Invoice\", \"DownloadId\":downloadid }\r\n fetchData('GET', url, null, null, true).then(returndata => {\r\n if (returndata) {\r\n let tabledata = GetTableDataToCustomFormat(returndata)\r\n let formattedData = GetMailMergeFormatFromObj(\"Invoices\", tabledata); //get group here\r\n console.log(formattedData);\r\n ProjectDownloadMailMergeGetContent(downloadObject, formattedData).then(downloadres=>{\r\n resolve(downloadres)\r\n });\r\n } else {\r\n ProjectDownloadMailMergeGetContent(downloadObject, []).then(downloadres=>{\r\n resolve(downloadres)\r\n });\r\n }\r\n })\r\n })\r\n}\r\n\r\nfunction GetTableDataToCustomFormat(tabledata){\r\n //let resdata = {IsTemplate: false, Key: \"Record Id\",Label: \"24022\",Section: null,TemplateId: null,Value: \"24022\"};\r\n let returnval = [{IsTemplate: false, Key: \"\",Label: \"\",Section: null,TemplateId: null,Value: \"\"}]\r\n for (const [key, value] of Object.entries(tabledata)) {\r\n returnval.push({IsTemplate: false, Key: key,Label: key,Section: null,TemplateId: null,Value: value})\r\n }\r\n return returnval;\r\n}\r\n\r\n\r\nexport const ProjectDownloadMailMergeGetContent = (e, appdetails) => {\r\n return new Promise((resolve, reject) => {\r\n console.log(e);\r\n requestApi({ post: { url: getEnvVariable('AppDownloadAPI') + `/Editor/DownloadTemplateMerger/${e.DownloadId}` } }, null, appdetails)\r\n .then(data => {\r\n resolve(data)\r\n })\r\n })\r\n}\r\n\r\nexport const ProjectDownload = (e, appdetails) => {\r\n\r\n console.log(e);\r\n requestApi({ post: { url: getEnvVariable('AppDownloadAPI') + `/Template/DownloadTemplate/${e.DownloadId}` } }, null, appdetails)\r\n .then(data => {\r\n if (data) {\r\n console.log(data);\r\n const downloadLink = document.createElement(\"a\");\r\n downloadLink.href = data.base64PDFFileContent;//dFile\r\n downloadLink.download = data.fileName; //fileName\r\n downloadLink.click();\r\n downloadLink.remove();\r\n }\r\n })\r\n}","\r\nimport React, { Component, Fragment } from 'react';\r\nimport { withStyles } from '@material-ui/core';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Backdrop from '@material-ui/core/Backdrop';\r\n\r\nconst styles = theme => ({\r\n backdrop: {\r\n zIndex: theme.zIndex.drawer + 1,\r\n color: '#fff',\r\n },\r\n});\r\n\r\nclass BackDrop extends Component {\r\n\r\n state = {\r\n open: false\r\n }\r\n\r\n backdropOpen = () => {\r\n this.setState({ open: true })\r\n }\r\n\r\n\r\n backdropClose = () => {\r\n this.setState({ open: false })\r\n }\r\n\r\n render() {\r\n const { open } = this.state;\r\n const { classes } = this.props\r\n return (\r\n <Fragment>\r\n <Backdrop className={classes.backdrop} open={open} >\r\n <CircularProgress color=\"inherit\" />\r\n </Backdrop>\r\n </Fragment>\r\n )\r\n }\r\n\r\n}\r\n\r\nexport default withStyles(styles)(BackDrop);","import React, { Fragment, useEffect, useState, useRef } from \"react\"\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport { useDispatch } from \"react-redux\";\r\nimport { passtabData } from '../../../actions';\r\nconst _ = require('lodash');\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n //width: 500,\r\n '& > * + *': {\r\n marginTop: theme.spacing(3),\r\n },\r\n },\r\n}));\r\n\r\n\r\nexport default function Tags(props) {\r\n const { name, Name, value, handleFieldChange, options, dropdownvalues, dataItem, defaultSelValue, tooltip, edit, defaultdataset, error, required, helperText } = props\r\n let items = dropdownvalues && options.sublist ? dropdownvalues[options.sublist] : dropdownvalues ? dropdownvalues : []\r\n let namevalue = name || Name\r\n let passtabinfo = defaultdataset ? props.header[defaultdataset] : null\r\n let passtabinfoval = passtabinfo ? passtabinfo[namevalue] : []\r\n let [defaultitems, setDefaultitems] = useState(value || [])\r\n const dispatch = useDispatch();\r\n\r\n useEffect(() => {\r\n if (passtabinfoval && items.length > 0 && Array.isArray(passtabinfoval) && passtabinfoval.length > 0 ) {\r\n let result = [];\r\n _.forEach(items, function (n, key) {\r\n _.forEach(passtabinfoval, function (n2, key2) {\r\n if (n.id === n2.id) {\r\n result.push(n);\r\n }\r\n });\r\n });\r\n\r\n if(result.length === 0){\r\n _.forEach(passtabinfoval, function (n2, key2) {\r\n result.push(n2);\r\n });\r\n }\r\n result = [...new Set(result)]\r\n setDefaultitems(result);\r\n const e = {\r\n target: {\r\n name: name || Name || options.name,\r\n value: result\r\n }\r\n }\r\n if(props.handleFieldChange)\r\n props.handleFieldChange(e)\r\n\r\n\r\n dispatch(passtabData(null));\r\n }\r\n\r\n }, [dropdownvalues])\r\n\r\n\r\n\r\n const handleChange = (event, values) => {\r\n let resultdata = values.map(a => a.Id);\r\n let stringformatvalues = [...new Set(resultdata)].join()\r\n\r\n const e = {\r\n target: {\r\n name: name || Name || options.name,\r\n value: values\r\n\r\n }\r\n }\r\n setDefaultitems(values)\r\n //defaultitems = values\r\n if (options.savestringformat) {\r\n const e1 = {\r\n target: {\r\n name: name || Name || options.name,\r\n value: stringformatvalues\r\n }\r\n }\r\n props.handleFieldChange(e1)\r\n defaultitems = dropdownvalues.filter(a => value.split(',').includes(a.Id.toString()))\r\n } else\r\n props.handleFieldChange(e)\r\n }\r\n\r\n if (options.savestringformat) {\r\n defaultitems = dropdownvalues ? dropdownvalues.filter(a => value.split(',').includes(a.Id.toString())) : []\r\n // setDefaultitems(val) ---correct: unused value\r\n }\r\n\r\n\r\n if (dataItem && options.itemname) {\r\n if (dataItem[options.itemname] && dataItem[options.itemname] !== \"\") {\r\n let dataitemvalue = dataItem[options.itemname];\r\n if (dataitemvalue) {\r\n dataitemvalue = dataitemvalue.toString();\r\n let dataitemarray = dataitemvalue.split(\",\");\r\n if (Array.isArray(dataitemarray)) {\r\n defaultitems = items.filter(a => dataitemarray.includes(a.id.toString()))\r\n }\r\n }\r\n }\r\n } else if (defaultSelValue) {\r\n let selitemarray = defaultSelValue.split(\",\");\r\n if (Array.isArray(selitemarray)) {\r\n defaultitems = items.filter(a => selitemarray.includes(a.id.toString()))\r\n }\r\n }\r\n\r\n\r\n if (edit === false) {\r\n let resultdata = defaultitems.map(a => a.Name);\r\n let displayvalues = [...new Set(resultdata)].join()\r\n // let getvalue = (items) => items.name || items.Name //--correct: unused value\r\n return <Fragment>\r\n {tooltip && <div > <Typography variant={'caption'} className=\"text-secondary\">{options.label} \r\n < Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em' }} />\r\n </Tooltip> </Typography> <Typography className=\"fw-bold\" variant={'body2'} color={'textPrimary'} >{displayvalues} </Typography>\r\n </div>}\r\n {!tooltip && <div > <Typography variant={'caption'} className=\"text-secondary\">{options.label} </Typography>\r\n <Typography className=\"fw-bold\" variant={'body2'} color={'textPrimary'} >{displayvalues} </Typography>\r\n </div>}\r\n </Fragment >\r\n }\r\n else {\r\n return (\r\n <Autocomplete\r\n key={name || options.name}\r\n fullWidth\r\n multiple\r\n name={namevalue}\r\n id=\"tags-standard\"\r\n options={items}\r\n getOptionLabel={(items) => items.name || items.Name}\r\n onChange={handleChange}\r\n filterSelectedOptions\r\n defaultValue={items[0]}\r\n value={defaultitems}\r\n disabled={options.disabled}\r\n renderInput={(params) => (\r\n <TextField\r\n required={required}\r\n error={error}\r\n fullWidth\r\n {...params}\r\n onChange={handleFieldChange}\r\n name={namevalue}\r\n variant=\"standard\"\r\n label={options.label}\r\n placeholder={options.placeholder}\r\n helperText={helperText}\r\n InputLabelProps={{\r\n shrink: true,\r\n }\r\n }\r\n />\r\n )}\r\n />\r\n\r\n );\r\n }\r\n}\r\n\r\n","import Icon from '@material-ui/core/Icon';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport withWidth from '@material-ui/core/withWidth';\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\r\nimport React, { Fragment } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport Breadcrumbs from '@material-ui/core/Breadcrumbs';\r\nimport Link from '@material-ui/core/Link';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport { getEnvVariable } from '../../../modules/environmentalList';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n link: {\r\n display: 'flex',\r\n },\r\n icon: {\r\n //marginRight: theme.spacing(0.5),\r\n width: 25,\r\n height: 22,\r\n paddingTop: 4\r\n\r\n },\r\n}));\r\n\r\nconst useStyleLink = makeStyles((theme)=> ({\r\n link:{\r\n display:'flex',\r\n },\r\n icon:{\r\n display:'flex',\r\n justifyContent:'center',\r\n paddingBottom:3,\r\n width: 25,\r\n\r\n }\r\n}));\r\n\r\nfunction BreadCrumbs(props) {\r\n\r\n const CSSColorClasses = (style = '') => {\r\n let module = getEnvVariable('ModuleKey')\r\n switch (module) {\r\n case 'WRS':\r\n return '#0076A5'\r\n case 'FORWARD':\r\n return '#074078'\r\n case 'UPS':\r\n return '#337ab7'\r\n // case 'AMES':\r\n // return 'rgb(41,51,82) !important'\r\n default:\r\n return '#6200ea';\r\n }\r\n }\r\n\r\n const classes = useStyles();\r\n const classes2 = useStyleLink();\r\n return <Breadcrumbs aria-label=\"breadcrumb\" className={props.className + ' ' || ''} style={{ padding: '0px' }}>\r\n {props.items && props.items.map((e, i) => {\r\n if (!e.ishide) {\r\n if (e.tab)\r\n localStorage.setItem('tab', e.tab);\r\n let path = ''\r\n if (e.href && e.href.routes) {\r\n if (Array.isArray(e.href.routes)) {\r\n e.href.routes.forEach(each => {\r\n const { route, routeParams, matchProps } = each\r\n if (routeParams) {\r\n path += route + \"/\" + props.match.params[routeParams]\r\n }\r\n else if (matchProps) {\r\n path += route + \"/\" + props.results && props.results[matchProps]\r\n }\r\n else {\r\n path += route\r\n }\r\n })\r\n }\r\n }\r\n return (e.href) ? <Link href={path !== '' ? path : e.href} className={classes.link + e.className} style={{ color: e.color ? 'white' : '' }} >\r\n {e.materialicon && <Icon size='small' className={classes.icon} style={{ fontSize: e.fontSize || '20px' }} >{e.materialicon}</Icon>}\r\n {e.link} {\r\n props.moreicon && <IconButton aria-haspopup=\"true\" onClick={props.handleBreadcrumbMenu} >\r\n <ExpandMoreIcon className={classes.icon} style={{ color: e.color ? e.color : CSSColorClasses() }} />\r\n </IconButton>\r\n }\r\n </Link> :\r\n <Typography className={classes2.link} style={{ color: (e.class === 'text-light') ? 'white' : (e.color || CSSColorClasses()) }}>\r\n {e.materialicon && <Icon size='small' className={classes2.icon} style={{ fontSize: e.fontSize || '20px' }}>{e.materialicon}</Icon>}\r\n {e.link}\r\n </Typography>\r\n\r\n\r\n }\r\n\r\n })}\r\n </Breadcrumbs >\r\n\r\n}\r\n\r\nexport default withWidth()(withRouter(BreadCrumbs));","import MomentUtils from '@date-io/moment';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport { KeyboardDatePicker, MuiPickersUtilsProvider } from \"@material-ui/pickers\";\r\nimport moment from \"moment\";\r\nimport React, { Fragment, useEffect, useState } from \"react\";\r\nimport DefaultSettings from './settings';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\n\r\nexport default function WRSDatePicker(props) {\r\n const { name, options, value, handleFieldValue, edit, required, disabled, extraProps, error, helperText, contexthelp, allowedValues = [], ...otherProps } = props\r\n const { label, xtype, fullWidth, tooltip, FieldProps, ...otherConfigs } = otherProps;\r\n let val = ((value === null) || (value === undefined) || (value === '')) ? '' : value;\r\n const [range, setRange] = useState({})\r\n const [reload, setReload] = useState(false)\r\n let dateFormat = extraProps && extraProps.dateFormat ? extraProps.dateFormat : \"MM/DD\"\r\n val = val ? moment(val).format(\"MM/DD\") : '';\r\n let currentDate = 'N';\r\n let pastDate = false;\r\n let futureDate = false;\r\n let currdate = false;\r\n let fieldprops = null;\r\n let fieldAllowedProps = null;\r\n if (FieldProps || (allowedValues && allowedValues.length === 1)) {\r\n fieldprops = JSON.parse(FieldProps)\r\n fieldAllowedProps = (allowedValues && allowedValues.length === 1) ? JSON.parse(allowedValues[0]) : null\r\n currentDate = (fieldprops['CurrentDefaultDate'] === true || fieldprops['CurrentDefaultDate'] === 'Y' ||\r\n (fieldAllowedProps && fieldAllowedProps['CurrentDefaultDate'] === 'Y')) ? 'Y' : 'N';\r\n if (fieldprops['AllowDate'] === 'CD') {\r\n pastDate = true;\r\n futureDate = true;\r\n }\r\n else if (fieldprops['AllowDate'] === 'PD' && currentDate == 'Y') {\r\n pastDate = true;\r\n futureDate = false;\r\n currdate = true;\r\n }\r\n else if (fieldprops['AllowDate'] === 'PD') {\r\n pastDate = true;\r\n futureDate = false;\r\n }\r\n else if (fieldprops['AllowDate'] === 'FD') {\r\n pastDate = false;\r\n futureDate = true;\r\n }\r\n if (currentDate === 'Y' && val === '') {\r\n let convertMoment = moment(new Date(), 'MM/DD').format('MM/DD')\r\n let events = { target: { value: convertMoment, name: name, checked: false }, currentTarget: { dataset: null } }\r\n handleFieldValue(events);\r\n }\r\n }\r\n useEffect(() => {\r\n if (pastDate && currdate) {\r\n range['maxDate'] = (new Date())\r\n setRange(range)\r\n setReload(!reload)\r\n }\r\n else if (pastDate) {\r\n range['maxDate'] = (val === '' ? new Date() : new Date(val))\r\n setRange(range)\r\n setReload(!reload)\r\n }\r\n else if (futureDate) {\r\n range['minDate'] = (val === '' ? new Date() : new Date(val));\r\n setRange(range)\r\n setReload(!reload)\r\n }\r\n }, [])\r\n\r\n\r\n return (\r\n <Fragment>\r\n {reload}\r\n <FormControl className={name} fullWidth={fullWidth ? fullWidth : true} required={required} error={error} disabled={disabled || false} >\r\n <InputLabel style={{ fontWeight: 'bold', color: error ? 'red' : 'black' }} shrink>{label}{tooltip &&\r\n <Tooltip title={tooltip ? tooltip : null}\r\n placement=\"bottom-start\" ><HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em', color: '#007bff', marginLeft: 5 }}\r\n onClick={(evt) => contexthelp ?\r\n DefaultSettings.showDrawer(contexthelp) : evt.preventDefault()} />\r\n </Tooltip>} </InputLabel>\r\n <div className='pt-3'></div>\r\n <MuiPickersUtilsProvider utils={MomentUtils} >\r\n <KeyboardDatePicker\r\n disabled={disabled || false}\r\n //clearable\r\n error={error}\r\n variant=\"filled\"\r\n InputProps={{\r\n style: {\r\n height: 23.5\r\n }\r\n }}\r\n ampm={false}\r\n value={((currentDate === 'Y' && !val && val != \"\") ? new Date() : (val === '' || val === 'Invalid date' ? null : val)) || null}\r\n {...range}\r\n onChange={(e) => handleFieldValue({ target: { value: e ? moment(e, dateFormat).format(dateFormat) : null, name: name, checked: false, }, currentTarget: { dataset: null } })}\r\n name={name}\r\n {...otherConfigs}\r\n format={dateFormat}\r\n\r\n />\r\n </MuiPickersUtilsProvider>\r\n {helperText && <FormHelperText>{helperText}</FormHelperText>}\r\n </FormControl>\r\n </Fragment >\r\n );\r\n}","import FormControl from '@material-ui/core/FormControl';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport React from \"react\";\r\nimport DefaultSettings from './settings';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\n\r\nexport default function DaysTimer(props) {\r\n const { name, options, value, handleFieldValue, edit, extraProps, required, disabled, helperText, error, contexthelp, ...otherProps } = props\r\n const { label, xtype, fullWidth, tooltip, FieldProps, ...otherConfigs } = otherProps;\r\n // let val = ((value === null) || (value === undefined) || (value === '')) ? null : new Date(value);\r\n\r\n return (\r\n <FormControl className={name} fullWidth={fullWidth ? fullWidth : true} error={error} required={required} disabled={disabled || false}>\r\n <InputLabel style={{ fontWeight: 'bold', color: error ? 'red' : 'black' }} shrink> {label} {tooltip && <Tooltip title={tooltip ? tooltip : null}\r\n placement=\"bottom-start\" ><HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em',color: '#007bff' }} onClick={(evt) => contexthelp ?\r\n DefaultSettings.showDrawer(contexthelp) : evt.preventDefault()} />\r\n </Tooltip>} </InputLabel>\r\n <div className='pt-2'></div>\r\n <TextField\r\n disabled = {disabled || false}\r\n id=\"time\"\r\n name={name}\r\n type=\"time\"\r\n value={value}\r\n //disabled={disabled || false}\r\n onChange={(e) => handleFieldValue({ target: { value: e.target.value, name: name, checked: false, }, currentTarget: { dataset: null } })}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n inputProps={{\r\n step: 300, // 5 min\r\n }}\r\n {...otherConfigs}\r\n {...extraProps}\r\n />\r\n {helperText && <FormHelperText>{helperText}</FormHelperText>}\r\n </FormControl>\r\n );\r\n}\r\n","// *https://www.registers.service.gov.uk/registers/country/use-the-api*\r\n//import fetch from 'cross-fetch';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport React from 'react';\r\nimport { GetFetchProps, getToken } from '../../modules/header';\r\nimport { createRequest, requestApi } from '../helpers/rest';\r\nimport DefaultSettings from './settings';\r\n//import { prop } from 'ramda';\r\n\r\nexport default function Asynchronous(props) {\r\n const { value, handleFieldValue, extraProps, shareProps, tooltip, disabled, contexthelp, error, required, className, isAvoid, ...otherProps } = props\r\n const { label, name, items, fullWidth, helperText, handleEffectUpdates, handleEffect, defaultdataset, ...otherconfigs } = otherProps\r\n let { transformProps, optionsurl, selecturl } = extraProps || {}\r\n let autoOptions = []\r\n const [open, setOpen] = React.useState(false);\r\n const [loading, setLoading] = React.useState(false);\r\n const [prevVal, setValue] = React.useState(value ? value : null);\r\n const [options, setOptions] = React.useState([]);\r\n const [originalOptions, setOriginalOptions] = React.useState([]);\r\n\r\n if (items && Array.isArray(items)) {\r\n items.map((each, index) => {\r\n const { label, value } = transformProps\r\n const name = each[label]\r\n const key = each[value]\r\n autoOptions.push({ label: name, value: key })\r\n\r\n })\r\n }\r\n else if (items && typeof items === 'object') {\r\n const { label, value } = transformProps\r\n const name = items[label]\r\n const key = items[value]\r\n autoOptions.push({ label: name, value: key })\r\n }\r\n\r\n let curVal = props.value ? props.value : null\r\n if (items && items.length === 0 && selecturl && prevVal !== curVal) {\r\n let selectedItems = [];\r\n setValue(props.value)\r\n selecturl['body'] = { [name]: value }\r\n requestApi(createRequest(selecturl, selecturl.body, null)).then(res => {\r\n if (res && res[name]) {\r\n selectedItems.push(res[name])\r\n selectedItems && Array.isArray(selectedItems) && selectedItems.map((each, index) => {\r\n const { label, value } = transformProps\r\n const name = each[label]\r\n const key = each[value]\r\n autoOptions.push({ label: name, value: key })\r\n })\r\n }\r\n })\r\n }\r\n\r\n // setOptions(autoOptions)\r\n // const loading = open && autoOptions.length === 0;\r\n\r\n\r\n const handleInputChange = (event, value, reason) => {\r\n if (isAvoid) {\r\n setValue(value)\r\n }\r\n else {\r\n let autoResults = [];\r\n if (value.length > 0 && optionsurl && (reason !== 'reset')) {\r\n setLoading(true)\r\n var active = true;\r\n (async () => {\r\n const response = await fetch(`${optionsurl.url + value}`, {\r\n method: 'GET',\r\n ...GetFetchProps()\r\n })\r\n const results = await response.json();\r\n if (active) {\r\n results && Array.isArray(results) && results.map((each, index) => {\r\n const { label, value } = transformProps\r\n const name = each[label]\r\n const key = each[value]\r\n autoResults.push({ label: name, value: key })\r\n })\r\n setOriginalOptions(results)\r\n autoOptions = autoResults\r\n setOptions(autoResults);\r\n setValue(value)\r\n setLoading(false)\r\n }\r\n })();\r\n }\r\n return () => {\r\n active = false;\r\n };\r\n }\r\n }\r\n\r\n const handleChangeAuto = (event, option) => {\r\n console.log(event, option)\r\n if (handleEffectUpdates && handleEffect)\r\n handleEffectUpdates([{ ...handleEffect, items: originalOptions }])\r\n handleFieldValue({ target: { name: name, value: option ? option.value : '', checked: false }, currentTarget: { dataset: null } })\r\n }\r\n\r\n\r\n React.useEffect(() => {\r\n if (!open) {\r\n // setOptions([]);\r\n autoOptions = []\r\n }\r\n }, [open]);\r\n let assignoptions = autoOptions || []\r\n if (options && options.length > 0) {\r\n assignoptions = options;\r\n }\r\n let fargmentval = props.value && props.value !== '' && assignoptions && assignoptions.length > 0 && assignoptions.find(each => { if (each.value && props.value && (each.value).toString() === (props.value).toString()) return each }) || null\r\n return (\r\n <FormControl fullWidth={fullWidth || true} required={required} error={error} >\r\n <InputLabel style={{ fontWeight: 'bold', color: error ? 'red' : 'black' }} shrink> {label} {tooltip && <Tooltip title={tooltip ? tooltip : null}\r\n placement=\"bottom-start\" ><HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em', color: '#007bff', marginLeft: 5 }} onClick={(evt) => contexthelp ? DefaultSettings.showDrawer(contexthelp) : evt.preventDefault()} />\r\n </Tooltip>} </InputLabel>\r\n <Autocomplete\r\n className='pt-1'\r\n //value={value}\r\n //value={value && value !== '' && autoOptions && autoOptions.length > 0 && autoOptions.find(each => each.value === value)}\r\n disabled={disabled || false}\r\n value={fargmentval || ''}\r\n defaultValue={fargmentval}\r\n open={open}\r\n onOpen={() => {\r\n setOpen(true);\r\n }}\r\n onClose={() => {\r\n setOpen(false);\r\n }}\r\n getOptionSelected={(option, value) => option.value === value.value}\r\n getOptionLabel={(option) => option.label || \"\"}\r\n onInputChange={handleInputChange}\r\n onChange={(event, option) => handleChangeAuto(event, option)}\r\n options={options && options.length > 0 ? options : autoOptions}\r\n loading={loading}\r\n renderInput={params => (\r\n <TextField\r\n placeholder='Please enter text to search'\r\n {...params}\r\n error={error}\r\n {...otherconfigs}\r\n InputProps={{\r\n ...params.InputProps,\r\n endAdornment: (\r\n <React.Fragment>\r\n {loading ? <CircularProgress color=\"inherit\" size={20} /> : null}\r\n {params.InputProps.endAdornment}\r\n </React.Fragment>\r\n ),\r\n }}\r\n />\r\n )}\r\n />\r\n {helperText && <FormHelperText>{helperText}</FormHelperText>}\r\n\r\n </FormControl>\r\n );\r\n}\r\n","/**\r\n *********************************************************\r\n Description: Handles two layer drawer component. The second layer drawer component has a back button.\r\n Required props: type.\r\n limitations : Doesn't handle any state except for the first layer drawer. Second layer drawer back button state needs to be handle within the parent. Changedresp\r\n not used anywhere\r\n *********************************************************\r\n**/\r\n\r\nimport React, { Fragment } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport Drawer from '@material-ui/core/Drawer';\r\nimport Button from '@material-ui/core/Button';\r\nimport Icon from '@material-ui/core/Icon';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport BackIcon from '@material-ui/icons/ArrowBack';\r\nimport { Typography } from '@material-ui/core';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\r\nimport WorkFlow from '../../../modules/workflow/workflow';\r\nimport AddWorkFlow from '../../../modules/workflow/addworkflow';\r\nimport { withRouter } from 'react-router-dom';\r\n\r\nconst styles = {\r\n drawerPaper: {\r\n width: 900,\r\n },\r\n paperWidth: {\r\n width: window.innerWidth - 280\r\n },\r\n fullscreen: {\r\n width: window.innerWidth\r\n },\r\n dragger: {\r\n width: '7px',\r\n cursor: 'ew-resize',\r\n padding: '4px 0 0',\r\n borderTop: '1px solid #ddd',\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n bottom: 0,\r\n zIndex: '100',\r\n //backgroundColor: '#f4f7f9'\r\n }\r\n};\r\nconst drawerPapers = 900;\r\nconst paperWidths = window.innerWidth - 280;\r\nconst fullscreens = window.innerWidth;\r\nconst checkwidth = 960\r\n\r\nclass CSlidingPage extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.handleMousemove.bind(this);\r\n this.state = {\r\n right: this.props.open || false,\r\n fullscreen: false,\r\n exitfullscreen: true,\r\n isResizing: false,\r\n lastDownX: 0,\r\n newWidth: null,\r\n dataItemVal: this.props.dataItem,\r\n ItemIndex: this.props.presentItemIndex,\r\n isDragging: false,\r\n width: window.innerWidth\r\n }\r\n }\r\n\r\n updateDimensions = () => {\r\n if (window.innerWidth < checkwidth) {\r\n this.setState({ width: window.innerWidth });\r\n }\r\n else {\r\n this.setState({ width: drawerPapers });\r\n }\r\n };\r\n\r\n componentDidMount() {\r\n document.addEventListener('mousemove', e => this.handleMousemove(e));\r\n document.addEventListener('mouseup', e => this.handleMouseup(e));\r\n window.addEventListener('resize', this.updateDimensions);\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener('resize', this.updateDimensions);\r\n }\r\n\r\n\r\n toggleDrawer = (side, open) => () => {\r\n const { dataItem, addSubGrid } = this.props;\r\n const { dataItemVal } = this.state\r\n this.setState({\r\n [side]: open,\r\n }, () => {\r\n if (!this.state.right && (dataItemVal || dataItem || addSubGrid)) {\r\n this.props.handleSlide(open);\r\n }\r\n });\r\n };\r\n\r\n /****for resizing drawer *******/\r\n handleMousedown = e => {\r\n this.setState({ isResizing: true, lastDownX: e.clientX });\r\n };\r\n\r\n handleMousemove = e => {\r\n // we don't want to do anything if we aren't resizing.\r\n if (!this.state.isResizing) {\r\n return;\r\n }\r\n let offsetRight =\r\n document.body.offsetWidth - (e.clientX - document.body.offsetLeft);\r\n let minWidth = 700;\r\n let maxWidth = window.innerWidth - 200\r\n\r\n if (offsetRight > minWidth && offsetRight < maxWidth) {\r\n this.setState({ newWidth: { width: offsetRight }, isDragging: true });\r\n }\r\n if (offsetRight > minWidth && offsetRight < maxWidth) {\r\n localStorage.setItem(this.props.location.pathname + \"-panelwidth\", JSON.stringify({ width: offsetRight }));\r\n }\r\n };\r\n\r\n handleMouseup = e => {\r\n if (this.state.isDragging) {\r\n this.setState({ isResizing: false, isDragging: false });\r\n }\r\n };\r\n\r\n\r\n changedresp = (resp) => {\r\n this.props.changedresp(resp)\r\n }\r\n\r\n onFullScreen = () => {\r\n this.setState({ fullscreen: true, exitfullscreen: false })\r\n }\r\n\r\n onExitFullScreen = () => {\r\n this.setState({ fullscreen: false, exitfullscreen: true })\r\n }\r\n\r\n onNextItemClick = () => {\r\n const { completedata } = this.props\r\n let fulldata = Array.isArray(completedata) ? completedata : completedata.data\r\n const { ItemIndex } = this.state\r\n if (ItemIndex >= 0 && ItemIndex < fulldata.length - 1) {\r\n let nextItem = fulldata[ItemIndex + 1]\r\n if (this.props.location.pathname == '/Administration/applicationtypes') {\r\n let resultantdata = JSON.parse(localStorage.getItem('griddataItem'));\r\n if (resultantdata !== null && resultantdata.Id != nextItem.Id) {\r\n localStorage.removeItem('griddataItem')\r\n localStorage.setItem('griddataItem', JSON.stringify(nextItem));\r\n }\r\n }\r\n this.setState({ dataItemVal: nextItem, ItemIndex: ItemIndex + 1 },\r\n () => {\r\n this.props.onNextClick(nextItem);\r\n })\r\n }\r\n }\r\n onPrevItemClick = () => {\r\n const { completedata } = this.props\r\n let fulldata = Array.isArray(completedata) ? completedata : completedata.data\r\n const { ItemIndex } = this.state\r\n if (ItemIndex > 0 && ItemIndex <= fulldata.length - 1) {\r\n let prevItem = fulldata[ItemIndex - 1]\r\n if (this.props.location.pathname == '/Administration/applicationtypes') {\r\n\r\n let resultantdata = JSON.parse(localStorage.getItem('griddataItem'));\r\n if (resultantdata !== null && resultantdata.Id != prevItem.Id) {\r\n localStorage.removeItem('griddataItem')\r\n localStorage.setItem('griddataItem', JSON.stringify(prevItem));\r\n console.log(resultantdata);\r\n console.log(prevItem);\r\n }\r\n }\r\n\r\n this.setState({ dataItemVal: prevItem, ItemIndex: ItemIndex - 1 },\r\n () => {\r\n this.props.onPrevClick(prevItem);\r\n })\r\n }\r\n }\r\n\r\n render() {\r\n const { classes, initialresp, togglebackslider, extraProps, edit, dataItem, customprops, customId, parentId, addSubGrid, completedata, presentItemIndex } = this.props;\r\n const { options, components, compmap, paperWidth } = this.props\r\n const { buttonprops, name, back, icon } = options;\r\n const { newWidth, dataItemVal } = this.state\r\n let resizewidth = JSON.parse(localStorage.getItem(this.props.location.pathname + \"-panelwidth\"));\r\n let resizedwidthnum = resizewidth && resizewidth['width']\r\n return (\r\n <div>\r\n {!back &&\r\n <Fragment>\r\n {!icon && !this.props.open && <div className={!edit ? \"row\" : \"\"}>\r\n <Button disabled={!edit ? true : false} variant=\"contained\" color={edit ? 'primary' : 'default'}\r\n onClick={this.toggleDrawer('right', true)} key=\"buttontoslide\">{name}</Button></div>}\r\n {icon && !this.props.open &&\r\n <Tooltip title={this.props.options.name} aria-label=\"add\">\r\n <MenuItem style={{ margin: 0 }} color=\"primary\" onClick={this.toggleDrawer('right', true)}>\r\n\r\n <Icon title={name} >{this.props.materialicon}</Icon>\r\n {this.props.options.customstyling && <Typography variant=\"caption\" display=\"block\" style={{ color: \"#000000\" }} className=\"pl-1 pt-1\" gutterBottom>\r\n {this.props.options.name}\r\n </Typography>}\r\n {!this.props.options.customstyling && <ListItemText style={{ color: 'black' }}>{this.props.options.name}</ListItemText>}\r\n </MenuItem>\r\n </Tooltip>}\r\n <Drawer anchor=\"right\" disableBackdropClick open={this.state.right} onClose={this.toggleDrawer('right', false)}\r\n key=\"slider\" className=\"col-sm-4\"\r\n classes={{\r\n paper: ((dataItemVal || dataItem || addSubGrid) && !paperWidth) ? (!this.state.fullscreen ? (resizewidth ? resizewidth : classes.drawerPaper) : classes.fullscreen) : classes.paperWidth,\r\n }}\r\n PaperProps={{\r\n style: {\r\n width: this.state.width > checkwidth ? (!this.state.fullscreen ? (resizedwidthnum ? resizedwidthnum : drawerPapers)\r\n : fullscreens) : this.state.width\r\n }\r\n }}\r\n // PaperProps={{ style: !this.state.fullscreen ? resizewidth : '' }}\r\n disableEnforceFocus={true}\r\n disableAutoFocus={true}\r\n >\r\n <div\r\n onMouseDown={event => {\r\n this.handleMousedown(event);\r\n }}\r\n className={classes.dragger}\r\n />\r\n {components && components.map((each, index) => {\r\n const { options, type, key } = each\r\n if (type == 'workflow') {\r\n return <WorkFlow dataItem={dataItem} compmap={compmap} onClose={this.toggleDrawer('right', false)} key={key || index}\r\n {...this.props}\r\n extraProps={{ ...extraProps }} {...each}\r\n customprops={customprops}\r\n customId={customId}\r\n parentId={parentId}\r\n initialresp={initialresp} changedresp={this.changedresp} handleClose={this.props.handleClose} />\r\n }\r\n if (type == 'addworkflow') {\r\n return <AddWorkFlow dataItem={dataItem} compmap={compmap} onClose={this.toggleDrawer('right', false)} key={key || index}\r\n {...this.props}\r\n extraProps={{ ...extraProps }} {...each}\r\n customprops={customprops}\r\n customId={customId}\r\n parentId={parentId}\r\n initialresp={initialresp} changedresp={this.changedresp} handleClose={this.props.handleClose} />\r\n }\r\n else {\r\n const EachComp = compmap[type]\r\n return <EachComp dataItem={dataItemVal || dataItem} compmap={compmap} onClose={this.toggleDrawer('right', false)} key={key || index}\r\n accessPermissions={this.props.accessPermissions}\r\n initialloadextrainfo={this.props.initialloadextrainfo}\r\n configType={this.props.accessPermissions.configType}\r\n extraProps={{ ...extraProps }} {...each}\r\n customprops={customprops}\r\n customId={customId}\r\n parentId={parentId}\r\n initialresp={initialresp} changedresp={this.changedresp} onFullScreen={this.onFullScreen} onExitFullScreen={this.onExitFullScreen} fullscreen={this.state.fullscreen} exitfullscreen={this.state.exitfullscreen} onNextItemClick={this.onNextItemClick} onPrevItemClick={this.onPrevItemClick}\r\n rowrenderedslide={this.props.rowrenderedslide}\r\n handleCustomBack={this.props.handleCustomBack} />\r\n }\r\n })}\r\n {this.props.children}\r\n </Drawer>\r\n </Fragment>\r\n }\r\n {back &&\r\n <Drawer anchor=\"right\" disableBackdropClick open={togglebackslider} key=\"backslider\" classes={{\r\n paper: classes.drawerPaper,\r\n }} disableEnforceFocus={true}\r\n disableAutoFocus={true}>\r\n <div\r\n onMouseDown={event => {\r\n this.handleMousedown(event);\r\n }}\r\n className={classes.dragger}\r\n />\r\n {<div className=\"pl-2 \"><IconButton onClick={this.props.handleBackSlider(false)} aria-label=\"back\">\r\n <BackIcon />\r\n </IconButton></div>}\r\n {components && components.map((each, index) => {\r\n const { options, type, key } = each\r\n const EachComp = compmap[type]\r\n return <EachComp dataItem={dataItemVal || dataItem} compmap={compmap} key={key || index}\r\n extraProps={{ ...extraProps }} {...each} initialresp={initialresp} changedresp={this.changedresp} customprops={customprops} parentId={parentId}\r\n onFullScreen={this.onFullScreen} onExitFullScreen={this.onExitFullScreen} fullscreen={this.state.fullscreen} exitfullscreen={this.state.exitfullscreen} onNextItemClick={this.onNextItemClick} onPrevItemClick={this.onPrevItemClick} rowrenderedslide={this.props.rowrenderedslide} />\r\n })}\r\n {this.props.children}\r\n </Drawer>\r\n }\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nCSlidingPage.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n};\r\n\r\nexport default withStyles(styles, { withTheme: true })(withRouter(CSlidingPage));\r\n\r\n\r\n","import React, { Fragment } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Box from '@material-ui/core/Box';\r\nimport Button from '@material-ui/core/Button';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport { green, pink, teal } from '@material-ui/core/colors';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport Avatar from '@material-ui/core/Avatar';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Textbox from './textbox';\r\nimport DefaultSettings from './settings';\r\nimport moment from 'moment';\r\nimport { getEnvVariable } from '../../../modules/environmentalList';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n display: 'flex',\r\n '& > *': {\r\n margin: theme.spacing(1),\r\n },\r\n },\r\n pink: {\r\n color: theme.palette.getContrastText(pink[500]),\r\n backgroundColor: pink[500],\r\n },\r\n green: {\r\n color: '#fff',\r\n backgroundColor: green[500],\r\n },\r\n teal: {\r\n color: theme.palette.getContrastText(teal[500]),\r\n backgroundColor: teal[500],\r\n },\r\n}));\r\n\r\n\r\nfunction CircularProgressWithLabel(props) {\r\n const { name, label, view } = props\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n const [open, setOpen] = React.useState(false);\r\n const [dailog, setDialog] = React.useState(false)\r\n const [changeDate, setText] = React.useState(props.currentDay)\r\n const [error, seterror] = React.useState(false)\r\n\r\n const classes = useStyles();\r\n const handleClick = (event) => {\r\n if (!view) {\r\n setAnchorEl(event.currentTarget);\r\n setOpen(true);\r\n }\r\n else event.preventDefault();\r\n };\r\n\r\n const handleValidation = () => {\r\n if (parseInt(changeDate) > 0 && props.name) {\r\n setDialog(false);\r\n seterror(false)\r\n props.handleFieldValue(props.name, changeDate);\r\n }\r\n else seterror(true)\r\n\r\n // if (parseInt(changeDate) <= parseInt(props.totalDays)) {\r\n // setDialog(false);\r\n // seterror(false)\r\n // props.handleFieldValue('currentDay', changeDate);\r\n // }\r\n // else seterror(true)\r\n }\r\n\r\n let colorClass = ''\r\n if (props.eventState === 'X') {\r\n colorClass = classes.pink\r\n }\r\n else if (props.eventState === 'S')\r\n colorClass = classes.green\r\n else if (props.eventState === 'R')\r\n colorClass = classes.teal\r\n return (\r\n <Fragment>\r\n <Box className=\"pt-3\" position=\"relative\" display=\"inline-flex\" >\r\n <CircularProgress variant=\"static\" {...props} />\r\n <Box\r\n top={18}\r\n left={3}\r\n bottom={0}\r\n right={0}\r\n position=\"absolute\"\r\n alignItems=\"center\"\r\n justifyContent=\"center\"\r\n >\r\n <IconButton disabled={props.disabled} className={getEnvVariable('AccessPortal') === 'E' ? 'none-pointer' : ''} onClick={(evt) => { getEnvVariable('AccessPortal') === 'E' ? evt.preventDefault() : handleClick(evt) }}> <Avatar className={colorClass}\r\n style={{ height: 30, width: 30 }} >{`${Math.round(props.currentDay || 0)}`}</Avatar></IconButton>\r\n </Box>\r\n </Box>\r\n <Menu\r\n id=\"long-menu\"\r\n anchorEl={anchorEl}\r\n keepMounted\r\n open={open}\r\n onClose={() => setOpen(false)}\r\n >\r\n {props.items && props.items.length > 0 && props.items.map((item, index) => {\r\n return <MenuItem key={index.toString()} selected={props.eventState === item.value}\r\n onClick={() => props.handleFieldValue('event', item.value)}>{item.name === \"emptyspace\" ? \"\" : item.name}</MenuItem>\r\n })}\r\n <MenuItem onClick={() => setDialog(true)}>Edit</MenuItem>\r\n </Menu>\r\n <Dialog open={dailog} onClose={() => setDialog(false)} aria-labelledby=\"form-dialog-title\">\r\n <DialogTitle id=\"form-dialog-title\">Change the {label}</DialogTitle>\r\n <DialogContent>\r\n <Textbox\r\n autoFocus\r\n margin=\"dense\"\r\n name=\"changeDate\"\r\n error={error}\r\n value={changeDate}\r\n helperText={error ? \" Clock should be greater than zero \" : ''}\r\n label={label}\r\n type=\"number\"\r\n handleFieldValue={(e) => { setText(e.target.value) }}\r\n fullWidth\r\n />\r\n </DialogContent>\r\n <DialogActions>\r\n <Button onClick={() => { seterror(false); setDialog(false) }} color=\"primary\">\r\n Cancel\r\n </Button>\r\n <Button onClick={() => handleValidation()} color=\"primary\">\r\n Save\r\n </Button>\r\n </DialogActions>\r\n </Dialog>\r\n </Fragment >\r\n );\r\n}\r\n\r\n\r\nexport default function CircularStatic(props) {\r\n const { handleFieldValue, extraProps, shareProps, error, required, tooltip, disabled, contexthelp, FieldIsSpellCheck, view, ...otherProps } = props\r\n const { label, helperText, name, xtype, fullWidth, items, ...otherConfigs } = otherProps;\r\n const { extraFields } = extraProps || {}\r\n const [progress, setProgress] = React.useState(null);\r\n const [eventState, setEvent] = React.useState(null);\r\n let value = { 'currentDay': props && props.value || 0, 'totalDays': (extraFields && extraFields.totalDays && extraFields.totalDays.value), 'event': (extraFields && extraFields.event && extraFields.event.value) }\r\n\r\n\r\n React.useEffect(() => {\r\n if (value && value.currentDay)\r\n setProgress((100 * parseInt(value.currentDay)) / value.totalDays)\r\n else setProgress(0)\r\n }, [value && value.currentDay]);\r\n\r\n React.useEffect(() => {\r\n setEvent(eventState || value.event)\r\n }, []);\r\n\r\n const handleChange = (desc, val) => {\r\n if (desc === 'currentDay') {\r\n setProgress(val)\r\n handleFieldValue({ target: { value: val, name: extraFields.totalDays.fieldKey, checked: false }, currentTarget: { dataset: null } })\r\n handleFieldValue({ target: { value: val, name: name, checked: false }, currentTarget: { dataset: null } })\r\n }\r\n else if (desc === 'event') {\r\n setEvent(val)\r\n handleFieldValue({ target: { value: val, name: extraFields.event.fieldKey, checked: false }, currentTarget: { dataset: null } })\r\n }\r\n else handleFieldValue({ target: { value: val, name: name, checked: false }, currentTarget: { dataset: null } })\r\n }\r\n var currentDate = moment(new Date()).format('MM/DD/YYYY');\r\n var timerDate = props.value && props.value > 0 ? moment(currentDate).add(props.value, 'd') : '';\r\n if (props.value !== '' && props.value !== undefined && props.value)\r\n return <FormControl fullWidth={fullWidth ? fullWidth : true} error={error} required={required}>\r\n <InputLabel style={{ fontWeight: 'bold', color: error ? 'red' : 'black' }} shrink> {label} {tooltip && <Tooltip title={tooltip ? tooltip : null}\r\n placement=\"bottom-start\" ><HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em', color: '#007bff', marginLeft: 5 }} onClick={(evt) => contexthelp ?\r\n DefaultSettings.showDrawer(contexthelp) : evt.preventDefault()} />\r\n </Tooltip>} </InputLabel>\r\n <CircularProgressWithLabel value={progress} label={label} view={view} name={name}{...value} disabled={disabled || false} items={items}\r\n eventState={eventState} handleFieldValue={handleChange} />\r\n {timerDate && <Typography className=\"text-secondary\">\r\n {timerDate.format('MM/DD/YYYY')}\r\n </Typography>}\r\n {helperText && <FormHelperText>{helperText}</FormHelperText>}\r\n </FormControl >\r\n else return <div className='d-none'></div>\r\n}\r\n","/**\r\n *********************************************************\r\n Description: Formheader component.\r\n Required props: N/A\r\n limitations : Doesn't handle state. Needs to handle state in parent component for save, edit button\r\n *********************************************************\r\n**/\r\n\r\nimport React, { Fragment } from 'react';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport { withRouter } from 'react-router-dom'\r\nimport Fab from '@material-ui/core/Fab';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport SaveIcon from '@material-ui/icons/Save';\r\nimport AddIcon from '@material-ui/icons/Add';\r\n\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport BreadCrumb from '../breadcrumbs';\r\nimport Icon from '@material-ui/core/Icon';\r\nimport ChevronLeftIcon from '@material-ui/icons/ChevronLeft';\r\nimport { getSiteAccess } from '../header';\r\nimport SendIcon from '@material-ui/icons/Send';\r\nimport ExportExcel from '@material-ui/icons/SaveAlt';\r\nimport FilterListIcon from '@material-ui/icons/ClearAll';\r\nimport FullscreenIcon from '@material-ui/icons/Fullscreen';\r\nimport FullscreenExitIcon from '@material-ui/icons/FullscreenExit';\r\nimport ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\r\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward';\r\nimport KendoHeader from '../../controls/components/kendoheader';\r\nimport FileCopyIcon from '@material-ui/icons/FileCopy';\r\nimport { getEnvVariable } from '../../../modules/environmentalList';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport DoneOutlineIcon from '@material-ui/icons/DoneOutline';\r\nimport ContactMailIcon from '@material-ui/icons/ContactMail';\r\nimport NotesIcon from '@material-ui/icons/Notes';\r\nimport Print from '@material-ui/icons/Print';\r\nimport CachedIcon from '@material-ui/icons/Cached';\r\nimport GetAppIcon from '@material-ui/icons/GetApp';\r\nimport History from '../../controls/components/history';\r\n\r\nconst items = [{\r\n name: 'Export Current Page',\r\n action: 'filtercurrent'\r\n},\r\n{\r\n name: 'Export All Pages',\r\n action: 'filterall'\r\n}\r\n]\r\n\r\nconst styles = {\r\n root: {\r\n flexGrow: 1,\r\n },\r\n grow: {\r\n flexGrow: 1,\r\n },\r\n menuButton: {\r\n\r\n },\r\n};\r\nconst checkwidth = 960\r\n\r\nclass CFormHeader extends React.Component {\r\n\r\n state = {\r\n openSlide: false,\r\n width: window.innerWidth,\r\n displayicon: window.innerWidth > checkwidth ? true : false,\r\n anchorEl: null\r\n }\r\n\r\n updateDimensions = () => {\r\n if (window.innerWidth < checkwidth) {\r\n this.setState({ width: window.innerWidth, displayicon: false });\r\n }\r\n else {\r\n this.setState({ displayicon: true });\r\n }\r\n };\r\n\r\n\r\n componentDidMount() {\r\n window.addEventListener('resize', this.updateDimensions);\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener('resize', this.updateDimensions);\r\n }\r\n\r\n\r\n /**\r\n *********************************************************\r\n Description: Renders the form header with action icons. When the user accessPermissions Add and Edit button are activated.\r\n Required props: N/A\r\n limitations : Doesn't handle state. Needs to handle state in parent component for save, edit button\r\n *********************************************************\r\n**/\r\n handleAdd = () => {\r\n const { sidebar } = this.props\r\n if (sidebar) {\r\n this.setState({ openSlide: true }, () => { this.props.handleFormGrid() })\r\n }\r\n else {\r\n this.props.handleAdd();\r\n }\r\n }\r\n\r\n\r\n handleSlide = () => {\r\n this.setState({ openSlide: false }, () => this.props.handleSlide())\r\n }\r\n\r\n\r\n handleExport = (event) => {\r\n this.setState({ anchorEl: event.currentTarget })\r\n };\r\n\r\n handleClose = (evt, action) => {\r\n this.setState({ anchorEl: null }, () => {\r\n if (action === 'filterall' || action === 'filtercurrent')\r\n this.props.export(action)\r\n })\r\n };\r\n\r\n\r\n CreateNewRecord = (options) => (event) => {\r\n const { crud } = options\r\n const { create } = crud\r\n const { link } = create;\r\n if (link && Array.isArray(link)) {\r\n let pushLink = '';\r\n link.forEach(each => {\r\n const { link, matchProps } = each\r\n pushLink += link + (matchProps ? (this.props.match.params[matchProps.value] && ('/' + this.props.match.params[matchProps.value])) : '');\r\n link && this.props.history.replace(`${pushLink}`)\r\n })\r\n }\r\n else if (link.type === 'sublink') {\r\n this.props.history.push(`${this.props.location.pathname}${link.link}`)\r\n }\r\n else {\r\n link && this.props.history.push(`${link.link}`)\r\n }\r\n\r\n }\r\n\r\n getColor = () => {\r\n let module = getEnvVariable('ModuleKey')\r\n switch (module) {\r\n case 'AEPS':\r\n return 'rgba(0, 53, 95, 255)'\r\n case 'AMES':\r\n return '#1976d2'\r\n default:\r\n return '';\r\n }\r\n }\r\n\r\n /**\r\n * Custombutton\r\n * Use: Allows the user to add custom button along with edit , handleCustom triggers the function in the moduel by props\r\n */\r\n render() {\r\n\r\n const { actions, title, customtitle, customicon, doneoutline, contactbutton, notesbutton, printbutton, custombutton, components, compmap,\r\n add, editbutton, savebutton, savetemplatebutton, sendtemplatebutton, addbutton, backbutton, historyurl, historyalign, alignresend,alignprofile, results,\r\n closebutton, handleClose, accessPermissions, accessLevelPermissions, breadcrumbs, materialicon, isedited, customprops, customId, designprops, sendbutton,\r\n gridprops, reportbutton, excelbutton, filterbutton, onFullScreen, onExitFullScreen, fullscreen, exitfullscreen, dataItem, nonstickyposition, navigateup,\r\n navigatedown, customheader, duplicatebutton, iseditduplicate, rowrenderedslide, hasclearfix, resetbutton, downloadbutton, className, refreshbutton } = this.props;\r\n const { isAdmin } = accessPermissions ? accessPermissions : {}\r\n const addaccessPermissions = getEnvVariable('AccessPortal') === \"I\" ? (isAdmin ? (isAdmin === 'Y') : null) : (true)\r\n const editaccessPermissions = isAdmin ? (isAdmin === 'Y') : null;\r\n const { openSlide } = this.state\r\n // const showaddedit = getSiteAccess(moduleInput ? moduleInput : null)\r\n return (\r\n <Fragment>\r\n {designprops && <div className={\"float-end \" + className}>\r\n {alignresend && <span> </span>}\r\n {editbutton && !isedited && <Fab size=\"small\" color=\"secondary\" aria-label=\"Edit\" className=\"float-end\" title={`Edit ${title}`} onClick={(e) => this.props.handleEdit(e, false)}>\r\n <EditIcon fontSize=\"medium\" />\r\n </Fab>}\r\n {alignprofile && <span> </span>}\r\n {hasclearfix && <div className='clearfix' />}\r\n <div className=\"float-end\"> </div>\r\n {duplicatebutton && !isedited && getEnvVariable('AccessPortal' !== 'E') && <Fab size=\"small\" color=\"secondary\" aria-label=\"Clone\" className=\"float-end\" title={`Clone ${title}`} onClick={(e) => this.props.handleEdit(e, true)}>\r\n <FileCopyIcon fontSize=\"medium\" />\r\n </Fab>}\r\n {historyurl && !historyalign && <span> </span>}\r\n\r\n {hasclearfix && <div className='clearfix' />}\r\n {savebutton && iseditduplicate && <Fab size=\"small\" color=\"secondary\" aria-label=\"Save\" className=\"float-end\" title={`Save ${title}`} onClick={(e) => this.props.handleSave(e, true)}>\r\n <SaveIcon fontSize=\"medium\" />\r\n </Fab>}\r\n {refreshbutton && <Fab size=\"small\" color=\"secondary\" aria-label=\"Save\" className=\"float-end\" title={`Refresh ${title}`} onClick={(e) => this.props.handleRefresh(e, true)}>\r\n <CachedIcon fontSize=\"medium\" />\r\n </Fab>}\r\n {savebutton && !iseditduplicate && <Fab size=\"small\" color=\"secondary\" aria-label=\"Save\" className=\"float-end mx-2\" title={`Save ${title}`} onClick={(e) => this.props.handleSave(e, false)}>\r\n <SaveIcon fontSize=\"medium\" />\r\n </Fab>}\r\n {savetemplatebutton && <Fab size=\"small\" color=\"secondary\" aria-label=\"Save\" className=\"float-end\" title=\"Send\" onClick={(e) => this.props.SaveTemplateInfo(null, null, 'initialsave')}>\r\n <SendIcon fontSize=\"medium\" />\r\n </Fab>}\r\n {hasclearfix && <div className='clearfix' />}\r\n {sendbutton && <Fab size=\"small\" color=\"secondary\" aria-label=\"Save\" className=\"float-end\" title=\"Send\" onClick={this.props.handleSave}>\r\n <SendIcon fontSize=\"medium\" />\r\n </Fab>}\r\n {alignresend && isedited && <span> </span>}\r\n {historyurl && <History url={historyurl} fieldValues={results} />}\r\n {hasclearfix && <div className='clearfix' />}\r\n {contactbutton &&\r\n <Fab size=\"small\" color=\"secondary\" aria-label=\"Save\" className=\"float-end\" title=\"Non Responders\" onClick={(e) => this.props.handleContact(e, true)}>\r\n <ContactMailIcon fontSize=\"medium\" />\r\n </Fab>}\r\n {notesbutton &&\r\n <Fab size=\"small\" color=\"secondary\" aria-label=\"Save\" className=\"float-end\" title=\"Notes\" onClick={this.props.handleNotes}>\r\n <NotesIcon fontSize=\"medium\" />\r\n </Fab>}\r\n {hasclearfix && <div className='clearfix' />}\r\n {doneoutline &&\r\n <Fab size=\"small\" color=\"secondary\" aria-label=\"Save\" className=\"float-end\" title=\"Send\" onClick={(e) => this.props.handleDoneOutline(e, false)}>\r\n <DoneOutlineIcon fontSize=\"medium\" />\r\n </Fab>}\r\n {hasclearfix && <div className='clearfix' />}\r\n {printbutton &&\r\n <Fab size=\"small\" color=\"secondary\" aria-label=\"Print\" className=\"float-end\" title=\"Print\" onClick={this.props.handlePrint}>\r\n <Print fontSize=\"medium\" />\r\n </Fab>}\r\n </div>}\r\n {hasclearfix && <div className='clearfix' />}\r\n {this.props.headerProps && this.props.headerProps.kendogridprops && <KendoHeader {...this.props.headerProps} {...{\r\n addOnsByName:\r\n {\r\n add: {\r\n onClick: (this.props.addtype && this.props.addtype === 'CreateNewRecord') ?\r\n this.CreateNewRecord(this.props.addactions[0].options) : this.handleAdd\r\n }, excel: { onClick: this.props.export }, reports:\r\n { onClick: this.props.saveReport }, clear: { onClick: this.props.clearFilters }, back: { onClick: this.props.handleBack },\r\n }\r\n }} />}\r\n {gridprops && <div>\r\n {(addaccessPermissions) && actions && actions.map(each => {\r\n const { type, options, key, sidepopup } = each\r\n switch ((add === false) ? '' : type) {\r\n case 'createnewrecordicon':\r\n return <div>\r\n <div className=\"float-end\"> </div>\r\n <Fab className=\"float-md-right\" size=\"small\" color=\"primary\" title={\"Add \" + title} aria-label=\"add\" key={key} onClick={sidepopup ? this.handleAdd : this.CreateNewRecord(options)}>\r\n <AddIcon />\r\n </Fab>\r\n </div>\r\n\r\n }\r\n })}\r\n {/* <Fab size=\"small\" color=\"primary\" aria-label=\"Export to Excel\" title=\"Export to Excel\" className=\"col float-end\" onClick={this.props.export}>\r\n <ExportExcel />\r\n </Fab> */}\r\n <Fab size=\"small\" color=\"primary\" aria-label=\"Export to Excel\" title=\"Export to Excel\" className=\"col float-end\" onClick={this.handleExport}>\r\n <ExportExcel />\r\n </Fab>\r\n <Menu\r\n id=\"simple-menu\"\r\n anchorEl={this.state.anchorEl}\r\n keepMounted\r\n open={Boolean(this.state.anchorEl)}\r\n onClose={this.handleClose}\r\n >\r\n {items.map(each => { return <MenuItem onClick={(evt) => this.handleClose(evt, each.action)}>{each.name}</MenuItem> })}\r\n </Menu>\r\n <Fab size=\"small\" color=\"primary\" aria-label=\"Save Report\" className=\"float-end\" title=\"Save Report\" onClick={this.props.saveReport}>\r\n <SaveIcon />\r\n </Fab>\r\n\r\n <Fab size=\"small\" color=\"primary\" aria-label=\"Save Report\" className=\"float-end\" title=\"Clear Filters\" onClick={this.props.clearFilters}>\r\n <FilterListIcon />\r\n </Fab>\r\n </div>\r\n }\r\n {!designprops && !customheader && <AppBar position={nonstickyposition ? \"static\" : \"sticky\"} color='secondary'>\r\n <Toolbar variant=\"dense\">\r\n {breadcrumbs && <div className=\"pt-2\">\r\n <BreadCrumb breadcrumbs={breadcrumbs} dataItem={dataItem} />\r\n </div>}{!breadcrumbs && <div className=\"row \">{materialicon && <Fragment><Icon style={{ lineHeight: '29px' }}>{materialicon}</Icon> </Fragment>}{title}</div>}\r\n\r\n <div className='flex-grow-1' />\r\n <div>\r\n {custombutton && <i className=\"zoom m-1\" onClick={this.props.handleCustom} ><IconButton title={customtitle || title} className=\"zoom m-1\" style={{ backgroundColor: 'white', color: this.getColor() }}>\r\n <Icon fontSize=\"medium\">{customicon}</Icon>\r\n </IconButton></i>}\r\n {resetbutton && <i className=\"zoom m-1\" onClick={(e) => this.props.handleReset(e)} ><IconButton className=\"zoom m-1\" title=\"Reset\" style={{ backgroundColor: 'white', color: this.getColor() }}>\r\n <CachedIcon fontSize=\"medium\" />\r\n </IconButton></i>}\r\n {backbutton && <i className=\"zoom m-1\" onClick={(e) => this.props.handleBack(e)} ><IconButton className=\"zoom m-1\" title=\"Back\" style={{ backgroundColor: 'white', color: this.getColor() }}>\r\n <ChevronLeftIcon fontSize=\"medium\" />\r\n </IconButton></i>}\r\n {filterbutton && <i className=\"zoom m-1\" onClick={this.props.clearFilters}><IconButton className=\"zoom m-1\" title=\"Clear Filters\" style={{ backgroundColor: 'white', color: this.getColor() }}>\r\n <FilterListIcon fontSize=\"medium\" />\r\n </IconButton></i>}\r\n {reportbutton && <i className=\"zoom m-1\" onClick={this.props.saveReport}><IconButton className=\"zoom m-1\" title=\"Save Report\" style={{ backgroundColor: 'white', color: this.getColor() }}>\r\n <SaveIcon fontSize=\"medium\" />\r\n </IconButton></i>}\r\n {refreshbutton && <i className=\"zoom m-1\" onClick={this.props.handleRefresh}><IconButton className=\"zoom m-1\" title=\"Refresh Cache\" style={{ backgroundColor: 'white', color: this.getColor() }}>\r\n <CachedIcon fontSize=\"medium\" />\r\n </IconButton></i>}\r\n {excelbutton &&\r\n <Fragment>\r\n <i className=\"zoom m-1\" onClick={this.handleExport}><IconButton className=\"zoom m-1\" title=\"Export to Excel\" style={{ backgroundColor: 'white', color: this.getColor() }}>\r\n <ExportExcel fontSize=\"medium\" />\r\n </IconButton></i>\r\n <Menu\r\n id=\"simple-menu\"\r\n anchorEl={this.state.anchorEl}\r\n keepMounted\r\n open={Boolean(this.state.anchorEl)}\r\n onClose={this.handleClose}\r\n >\r\n {items.map(each => { return <MenuItem onClick={(evt) => this.handleClose(evt, each.action)}>{each.name}</MenuItem> })}\r\n </Menu>\r\n </Fragment>\r\n }\r\n {downloadbutton && <i className=\"zoom m-1\" onClick={this.props.handleDownload}><IconButton className=\"zoom m-1\" title=\"Download\" style={{ backgroundColor: 'white', color: this.getColor() }}>\r\n <GetAppIcon fontSize=\"medium\" />\r\n </IconButton></i>}\r\n {addbutton && <i className=\"zoom m-1\" onClick={this.handleAdd}><IconButton className=\"zoom m-1\" title={`Add ${title}`} style={{ backgroundColor: 'white', color: this.getColor() }}>\r\n <AddIcon fontSize=\"medium\" />\r\n </IconButton></i>}\r\n {editbutton && !isedited && <i className=\"zoom m-1\" onClick={this.props.handleEdit} > <IconButton className=\"zoom m-1\" title={`Edit ${title}`} style={{ backgroundColor: 'white', color: this.getColor() }}>\r\n <EditIcon fontSize=\"medium\" />\r\n </IconButton></i>}\r\n\r\n {duplicatebutton && !isedited && getEnvVariable('AccessPortal' !== 'E') && <i className=\"zoom m-1\" onClick={(e) => this.props.handleEdit(e, true)}><IconButton className=\"zoom m-1\" title={`Clone ${title}`} style={{ backgroundColor: 'white', color: this.getColor() }}>\r\n <FileCopyIcon fontSize=\"medium\" />\r\n </IconButton></i>}\r\n\r\n\r\n {savebutton && iseditduplicate && <i className=\"zoom m-1\" onClick={(e) => this.props.handleSave(e, true)} ><IconButton className=\"zoom m-1\" title={`Save ${title}`} style={{ backgroundColor: 'white', color: 'green' }}>\r\n <SaveIcon fontSize=\"medium\" />\r\n </IconButton></i>}\r\n {savebutton && !iseditduplicate && <i className=\"zoom m-1\" onClick={(e) => this.props.handleSave(e, false)} ><IconButton className=\"zoom m-1\" title={`Save ${title}`} style={{ backgroundColor: 'white', color: 'green' }}>\r\n <SaveIcon fontSize=\"medium\" />\r\n </IconButton></i>}\r\n {historyurl && <History url={historyurl} fieldValues={results} />}\r\n {closebutton && <i className=\"zoom m-1\" onClick={this.props.handleClose} ><IconButton className=\"zoom m-1\" title=\"Close\" style={{ backgroundColor: 'white', color: this.getColor() }}>\r\n <CloseIcon fontSize=\"medium\" />\r\n </IconButton></i>}\r\n {sendbutton && <i className=\"zoom m-1\" onClick={this.props.handleSave} ><IconButton className=\"zoom m-1\" title=\"Send\" style={{ backgroundColor: 'white', color: this.getColor() }}>\r\n <SendIcon fontSize=\"medium\" />\r\n </IconButton></i>}\r\n {savetemplatebutton && <i className=\"zoom m-1\" onClick={(e) => this.props.SaveTemplateInfo(null, null, 'initialsave')} ><IconButton className=\"zoom m-1\" title=\"Send\" style={{ backgroundColor: 'white', color: 'green' }}>\r\n <SendIcon fontSize=\"medium\" />\r\n </IconButton></i>}\r\n {sendtemplatebutton && <i className=\"zoom m-1\" onClick={(e) => this.props.SaveTemplateInfo(null, null, 'initialsave')} ><IconButton className=\"zoom m-1\" title=\"Email Me\" style={{ backgroundColor: 'white', color: 'green' }}>\r\n <SendIcon fontSize=\"medium\" />\r\n </IconButton></i>}\r\n {rowrenderedslide && navigateup && <i className=\"zoom m-1\" onClick={this.props.onPrevItemClick ? this.props.onPrevItemClick : this.props.onPrevItem} ><IconButton className=\"zoom m-1\" title=\"Previous Item\" style={{ backgroundColor: 'white', color: this.getColor() }}>\r\n <ArrowUpwardIcon fontSize=\"medium\" />\r\n </IconButton></i>}\r\n {rowrenderedslide && navigatedown && <i className=\"zoom m-1\" onClick={this.props.onNextItemClick ? this.props.onNextItemClick : this.props.onNextItem} ><IconButton className=\"zoom m-1\" title=\"Next Item\" style={{ backgroundColor: 'white', color: this.getColor() }}>\r\n <ArrowDownwardIcon fontSize=\"medium\" />\r\n </IconButton></i>}\r\n {this.state.displayicon && !fullscreen && exitfullscreen && <i className=\"zoom m-1\" onClick={this.props.onFullScreen} ><IconButton className=\"zoom m-1\" title=\"FullScreen\" style={{ backgroundColor: 'white', color: this.getColor() }}>\r\n <FullscreenIcon fontSize=\"medium\" />\r\n </IconButton></i>}\r\n {this.state.displayicon && fullscreen && <i className=\"zoom m-1\" onClick={this.props.onExitFullScreen} ><IconButton className=\"zoom m-1\" title=\"Exit FullScreen\" style={{ backgroundColor: 'white', color: this.getColor() }}>\r\n <FullscreenExitIcon fontSize=\"medium\" />\r\n </IconButton></i>}\r\n\r\n </div>\r\n </Toolbar>\r\n </AppBar>}\r\n {/* subgrid - represents the form header true or false*/\r\n openSlide && components && components.map(each => {\r\n const EachComp = compmap[each.type]\r\n return <EachComp {...each} key={each.key} handleSlide={this.handleSlide} addSubGrid={true} compmap={compmap}\r\n accessPermissions={accessPermissions} accessLevelPermissions={accessLevelPermissions} customprops={customprops}\r\n customId={customId} dataItem={this.props.dataItem} handleCustomBack={this.props.handleCustomBack} />\r\n })\r\n }\r\n </Fragment >\r\n\r\n );\r\n }\r\n}\r\nexport default withRouter(CFormHeader);\r\n","import { getEnvVariable } from '../../modules/environmentalList';\r\nimport newsavedreportstypes from '../reports/savedreports';\r\nconst abc = {\r\n \"type\": \"grid\",\r\n \"key\": \"agencyusersloginhistorygrid\",\r\n \"gridkey\": 'agencyusersloginhistorygrid',\r\n \"order\": 1,\r\n \"options\": {\r\n receiveValues: [{ paramname: 'userId', valuefromparent: 'userId' }],\r\n sidepopupgridheight: true,\r\n \"crud\": {\r\n \"read\": {\r\n \"get\": {\r\n \"url\": getEnvVariable('MasterAdmin')+`/api/InternalUser/LoginHistory/Grid/`+getEnvVariable('ModuleKey')+`/{userId}`,\r\n \"customProps\": {\r\n \"value\": \"userId\"\r\n }\r\n }\r\n }\r\n },\r\n \"back\": {\r\n \"routes\": [\r\n {\r\n \"route\": \"/Administration/agencyusers\",\r\n \"routeParams\": \"routeid\",\r\n },\r\n ],\r\n },\r\n headerProps: {\r\n title: \"User(s) Login History\",\r\n actions: [\r\n {\r\n type: 'fab',\r\n icon: 'clear',\r\n name: 'clear',\r\n color: 'primary',\r\n title: 'Clear Filters',\r\n menucolor: '#22a9b3'\r\n },\r\n\r\n {\r\n type: 'menu',\r\n icon: 'excel',\r\n name: 'excel',\r\n color: 'primary',\r\n title: 'Export to Excel',\r\n menucolor: '#c90685',\r\n items: [{\r\n name: 'Export Current Page',\r\n action: 'filtercurrent'\r\n },\r\n {\r\n name: 'Export All Pages',\r\n action: 'filterall'\r\n }\r\n ]\r\n },\r\n // {\r\n // type: 'fab',\r\n // icon: 'reports',\r\n // name: 'reports',\r\n // color: 'primary',\r\n // title: 'Save Report',\r\n // menucolor: '#C85A54'\r\n // },\r\n\r\n ]\r\n },\r\n savedreports: {\r\n ...newsavedreportstypes\r\n },\r\n \"gridcolumns\": [\r\n {\r\n \"title\": \"IP Address\",\r\n \"field\": \"Ip\",\r\n \"show\": true,\r\n //width: 200,\r\n },\r\n {\r\n \"title\": \"Is Success\",\r\n \"field\": \"IsSuccessDesc\",\r\n \"show\": true,\r\n //width: 100,\r\n },\r\n {\r\n \"title\": \"Login Date\",\r\n \"field\": \"LoginDate\",\r\n \"show\": true,\r\n //width: 200,\r\n }\r\n ]\r\n }\r\n}\r\nexport default abc","import { getEnvVariable } from '../../modules/environmentalList';\r\nimport agencyuserloginhistory from './userprofileabc';\r\nconst userprofile = {\r\n \"type\": \"slidingbutton\",\r\n \"key\": \"agencyusersprofileformslidingbutton\",\r\n \"options\": {\r\n \"row\": 6,\r\n \"col\": 4,\r\n \"width\": 2,\r\n \"buttonprops\": {\r\n \"text\": \"Users\",\r\n \"size\": \"large\",\r\n \"color\": \"primary\",\r\n \"variant\": \"contained\"\r\n },\r\n excludefromresults: true,\r\n \"label\": \"Users\",\r\n \"name\": \"Users\",\r\n receiveValues: [{ paramname: 'userId', valuefromparent: 'userId' }],\r\n },\r\n open: true,\r\n components: [{\r\n \"type\": \"formcontainer\",\r\n \"key\": \"agencyusersform\",\r\n \"options\": {\r\n \"title\": \"User\",\r\n headerProps: {\r\n \"editbutton\": false,\r\n \"savebutton\": false,\r\n \"backbutton\": true,\r\n \"closebutton\": false,\r\n \"navigateview\": true,\r\n \"breadcrumbs\": [\r\n { \"link\": \"View/Edit User\", \"materialicon\": \"person\", className: 'eps-breadcrumb-item', class: 'text-light' }\r\n ],\r\n },\r\n hidescroll: true,\r\n \"name\": \"agencyusersform\",\r\n \"back\": {\r\n \"routes\": [{\r\n \"route\": \"/Administration/userprofile\",\r\n \"exactRoute\": true\r\n },],\r\n \"popupback\": true\r\n }\r\n },\r\n \"sidepopupadd\": true,\r\n \"components\": [\r\n {\r\n \"type\": \"ctab\",\r\n \"key\": \"tab\",\r\n hidemargin: true,\r\n \"name\": \"agencyuserstabform\",\r\n excludefromresults: true,\r\n \"options\": {\r\n tabinfo: [\r\n {\r\n tablabel: \"View/Edit User\",\r\n tabkey: 0\r\n },\r\n {\r\n tablabel: \"Access Control\",\r\n tabkey: 1,\r\n alttabkey:3,\r\n 'profileaccesscontrol' : 'Y',\r\n isadmintabkey:3\r\n },\r\n // {\r\n // tablabel: \"Temporary Roles\",\r\n // tabkey: 2\r\n // },\r\n // {\r\n // tablabel: \"Update Password\",\r\n // tabkey: 2,\r\n // 'profilepwd' : 'Y',\r\n // 'hidetab': true,\r\n // \"hidetabval\": \"I\",\r\n // \"aftersavetab\": true,\r\n // isLocalStorage: 'IWAAUTH',\r\n // alttabkey: 3\r\n // },\r\n {\r\n tablabel: \"Login History\",\r\n tabkey: 3\r\n\r\n },\r\n ],\r\n },\r\n \"components\": [\r\n {\r\n \"tabkey\": 0,\r\n \"type\": \"formcontainer\",\r\n \"key\": \"agencyusersform\",\r\n \"options\": {\r\n \"totalcolumns\": 2,\r\n \"totalrows\": 18,\r\n \"alignitem\": \"center\",\r\n \"title\": \"User\",\r\n \"name\": \"agencyusersform\",\r\n \"routes\": {\r\n \"route\": \"/Administration/userprofile\",\r\n \"routeParams\": \":routeid\",\r\n \"exactRoute\": true\r\n },\r\n className: 'siteclass',\r\n styles: {\r\n //margin: 15\r\n },\r\n headerProps: {\r\n \"editbutton\": true,\r\n \"savebutton\": true,\r\n \"backbutton\": true,\r\n \"closebutton\": false,\r\n \"navigateview\": true,\r\n // \"duplicatebutton\": true,\r\n },\r\n designprops: true,\r\n alignprofile: true,\r\n \"name\": \"agencyusersform\",\r\n \"crud\": {\r\n \"read\": {\r\n \"get\": {\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/${getEnvVariable('ModuleKey')}InternalUser/${getEnvVariable('ModuleKey')}UserById`,\r\n \"customProps\": {\r\n \"value\": \"userId\"\r\n }\r\n }\r\n },\r\n \"update\": {\r\n \"put\": {\r\n \"isProfile\": true,\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/${getEnvVariable('ModuleKey')}InternalUser/${getEnvVariable('ModuleKey')}Update`,\r\n }\r\n },\r\n // \"duplicate\": {\r\n // \"post\": {\r\n // \"url\": getEnvVariable('MasterAdmin') + `/api/WRSInternalUser/` + getEnvVariable('ModuleKey') + `/getEnvVariable('ModuleKey') + Add`,\r\n // }\r\n // }\r\n },\r\n \"validations\": [\r\n {\r\n get: {\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/ProjectMessages/RulesByName?name=master.users`\r\n },\r\n transformProps: {\r\n name: 'Key',\r\n subfieldname: 'MASTER.USERS_',\r\n addsubfieldname: 'USER.'\r\n }\r\n },\r\n {\r\n get: {\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/ProjectMessages/RulesByName?name=master.internalusers`\r\n },\r\n transformProps: {\r\n name: 'Key',\r\n subfieldname: 'MASTER.INTERNALUSERS_'\r\n }\r\n }\r\n ],\r\n },\r\n \"components\": [\r\n {\r\n \"type\": \"fileupload\",\r\n \"key\": \"userimageupload\",\r\n \"options\": {\r\n \"row\": 0,\r\n \"col\": 0,\r\n \"width\": 5,\r\n \"height\":5,\r\n \"text\": \"Profile Picture \",\r\n \"name\": \"UserImageUI\",\r\n \"profile\": true,\r\n \"defaultImage\": \"resources/Default-UserImg.jpg\"\r\n }\r\n },\r\n // {\r\n // \"type\": \"fileupload\",\r\n // \"key\": \"signatureupload\",\r\n // \"options\": {\r\n // \"row\": 0,\r\n // \"col\": 1,\r\n // \"width\": 6,\r\n // \"text\": \"Signature \",\r\n // \"name\": \"SignatureImageUI\",\r\n // \"defaultImage\": \"/resources/Default-UserImg.jpg\"\r\n // }\r\n // },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"username\",\r\n \"options\": {\r\n \"row\": 1,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"label\": \"Username\",\r\n \"name\": \"User.UserName\",\r\n \"disabled\": true,\r\n conditions: {\r\n enable: true,\r\n }\r\n },\r\n \"inputProps\": {\r\n \"maxLength\": 100\r\n }\r\n },\r\n // {\r\n // \"type\": \"infotext\",\r\n // \"key\": \"Infotext\",\r\n // \"options\": {\r\n // \"row\": 2,\r\n // \"col\": 0,\r\n // \"width\": 12,\r\n // \"text\": \"Username Policy:\",\r\n\r\n // }\r\n // },\r\n // {\r\n // \"type\": \"infotext\",\r\n // \"key\": \"Infotext\",\r\n // \"options\": {\r\n // \"row\": 2,\r\n // \"col\": 0,\r\n // \"width\": 12,\r\n // \"text\": \"1. Username can contain letters (a-z), numbers (0-9), underscore (_) and periods (.).\",\r\n\r\n // }\r\n // },\r\n // {\r\n // \"type\": \"infotext\",\r\n // \"key\": \"Infotext\",\r\n // \"options\": {\r\n // \"row\": 2,\r\n // \"col\": 0,\r\n // \"width\": 12,\r\n // \"text\": \"2.Username cannot contain an ampersand (&), equals sign (=), apostrophe ('), dash (-), plus sign (+), comma (,), brackets (<,>)\"\r\n\r\n // }\r\n // },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"firstname\",\r\n \"options\": {\r\n \"row\": 3,\r\n \"col\": 0,\r\n \"width\": 6,\r\n \"label\": \"First Name\",\r\n \"name\": \"User.FirstName\"\r\n },\r\n\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"lastname\",\r\n \"options\": {\r\n \"row\": 3,\r\n \"col\": 0,\r\n \"width\": 6,\r\n \"label\": \"Last Name\",\r\n \"name\": \"User.LastName\"\r\n },\r\n\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"title\",\r\n \"options\": {\r\n \"row\": 5,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"label\": \"Title\",\r\n \"name\": \"Title\",\r\n \"disabled\": true,\r\n conditions: {\r\n enable: true,\r\n }\r\n },\r\n\r\n },\r\n {\r\n \"type\": \"formdropdown\",\r\n \"key\": \"UserType\",\r\n \"options\": {\r\n \"row\": 6,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"label\": \"User Type\",\r\n \"name\": \"UserType\",\r\n \"id\": \"DomainType\",\r\n \"disabled\": true,\r\n conditions: {\r\n enable: true,\r\n },\r\n \"crud\": {\r\n \"read\": {\r\n \"get\": {\r\n \"url\": getEnvVariable('Admin') + `/api/Domains/values?domainkey=USER_TYPE`\r\n // \"url\":\"http://localhost:6004/WRS-admin/api/Domains/values?domainkey=USER_TYPE\",\r\n \r\n }\r\n }\r\n },\r\n \"transformProps\": {\r\n \"value\": \"Value\",\r\n \"name\": \"Name\"\r\n }\r\n }\r\n },\r\n {\r\n \"type\": \"formdropdown\",\r\n \"key\": \"companyId\",\r\n \"options\": {\r\n \"row\": 7,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"label\": \"Contractor\",\r\n \"name\": \"companyId\",\r\n \"disabled\": true,\r\n conditions: {\r\n enable: true,\r\n },\r\n \"crud\": {\r\n \"read\": {\r\n \"get\": {\r\n //\"url\": getEnvVariable('MasterAdmin') + `/api/CompanyInternal/All/Active`,\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/CompanyInternal/`+ getEnvVariable('ModuleKey') +`/All/Active`\r\n // \"url\":\"http://localhost:8002/WRS-master-admin/api/CompanyInternal/WRS/All/Active\"\r\n }\r\n }\r\n },\r\n \"transformProps\": {\r\n \"value\": \"Id\",\r\n \"name\": \"Name\"\r\n },\r\n conditions: { \r\n hide: { UserType:'D'},// For Contractor,County,County as Contractor,'' the field is Disabled.\r\n },\r\n // removeotherfield: [\r\n // { changedvalue: 0 },\r\n // ]\r\n },\r\n }, \r\n // {\r\n // \"type\": \"formtextbox\",\r\n // \"key\": \"department\",\r\n // \"options\": {\r\n // \"row\": 5,\r\n // \"col\": 0,\r\n // \"width\": 12,\r\n // \"label\": \"Department\",\r\n // \"name\": \"Department\"\r\n // },\r\n\r\n // },\r\n // {\r\n // \"type\": \"formtextbox\",\r\n // \"key\": \"company\",\r\n // \"options\": {\r\n // \"row\": 6,\r\n // \"col\": 0,\r\n // \"width\": 12,\r\n // \"label\": \"Company\",\r\n // \"name\": \"Company\"\r\n // },\r\n\r\n // },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"email\",\r\n \"options\": {\r\n \"row\": 8,\r\n \"col\": 0,\r\n \"width\": 6,\r\n \"label\": \"Email\",\r\n \"name\": \"Email\"\r\n },\r\n\r\n },\r\n {\r\n \"type\": \"cformphonetext\",\r\n \"key\": \"Phone\",\r\n \"options\": {\r\n \"row\": 8,\r\n \"col\": 1,\r\n \"width\": 6,\r\n \"label\": \"Phone\",\r\n \"name\": \"Phone\"\r\n }\r\n },\r\n {\r\n \"type\": \"formswitch\",\r\n \"key\": \"switch\",\r\n \"options\": {\r\n \"row\": 9,\r\n \"col\": 0,\r\n \"width\": 3,\r\n \"label\": \"Status\",\r\n \"disabled\": true,\r\n conditions: {\r\n enable: true,\r\n },\r\n \"name\": \"User.Status\",\r\n dependency: {\r\n isStatus: \"User\",\r\n statusURL: getEnvVariable('Admin') + `/api/Users/IsAtleastOneUserAccessById`,\r\n statusCheck: \"IsAdmin\",\r\n statusID: \"routeid\",\r\n statusTarget: \"UserAccessControl\",\r\n statusField: \"User.Status\",\r\n statusValue: \"A\",\r\n helperText: \"Atleast one Group/Role/County should be selected\"\r\n },\r\n \"transformProps\": {\r\n \"A\": true,\r\n \"I\": false,\r\n true: \"A\",\r\n false: \"I\"\r\n }\r\n }\r\n },\r\n {\r\n \"type\": \"formcheckbox\",\r\n \"key\": \"IsAdmin\",\r\n \"options\": {\r\n \"row\": 10,\r\n \"col\": 0,\r\n \"width\": 6,\r\n \"label\": \"Administrator\",\r\n \"tooltip\": \"If admin role is checked then it overrides entire access control\",\r\n \"name\": \"IsAdmin\",\r\n dependency: {\r\n isAdmin: \"IsAdmin\",\r\n isAdminAlert: \"Selecting / Unselecting Admin will override the entire Access Control\"\r\n },\r\n initialvalue: 'I',\r\n \"transformProps\": {\r\n \"Y\": true,\r\n \"N\": false,\r\n true: \"Y\",\r\n false: \"N\"\r\n },\r\n \"disabled\": true,\r\n conditions: {\r\n enable: true,\r\n },\r\n removeotherfield: [\r\n { removefield: 'IsRequestAdmin', changedvalue: 'N' },\r\n ]\r\n }\r\n },\r\n {\r\n \"type\": \"formcheckbox\",\r\n \"key\": \"IsRequestAdmin\",\r\n \"options\": {\r\n \"row\": 10,\r\n \"col\": 1,\r\n \"width\": 6,\r\n \"label\": \"Authorization Approver\",\r\n \"name\": \"IsRequestAdmin\",\r\n initialvalue: 'I',\r\n \"transformProps\": {\r\n \"Y\": true,\r\n \"N\": false,\r\n true: \"Y\",\r\n false: \"N\"\r\n },\r\n // \"disabled\": true,\r\n // conditions: {\r\n // disabled: {UserType: 'D'||'C'||'CC'||'CO'}\r\n // },\r\n \"disabled\": true,\r\n conditions: {\r\n enable: true,\r\n },\r\n removeotherfield: [\r\n { removefield: 'IsRequestAdmin', changedvalue: 'N' },\r\n ]\r\n }\r\n },\r\n {\r\n \"type\": \"formcheckbox\",\r\n \"key\": \"IsSendNotification\",\r\n \"options\": {\r\n \"row\": 11,\r\n \"col\": 0,\r\n \"width\": 6,\r\n \"label\": \"Can receive Dashboard Notifications\",\r\n \"name\": \"IsSendNotification\",\r\n \"disabled\": true,\r\n conditions: {\r\n enable: true,\r\n },\r\n initialvalue: 'N',\r\n \"transformProps\": {\r\n \"Y\": true,\r\n \"N\": false,\r\n true: \"Y\",\r\n false: \"N\"\r\n },\r\n },\r\n },\r\n {\r\n \"type\": \"formcheckbox\",\r\n \"key\": \"IsSendEmailNotification\",\r\n \"options\": {\r\n \"row\": 11,\r\n \"col\": 1,\r\n \"width\": 6,\r\n \"label\": \"Can receive Email Notifications (Primary User)\",\r\n \"name\": \"IsSendEmailNotification\",\r\n \"disabled\": true,\r\n conditions: {\r\n enable: true,\r\n },\r\n initialvalue: 'N',\r\n \"transformProps\": {\r\n \"Y\": true,\r\n \"N\": false,\r\n true: \"Y\",\r\n false: \"N\"\r\n },\r\n },\r\n },\r\n\r\n {\r\n \"type\": \"formcheckbox\",\r\n \"key\": \"isMobileAccess\",\r\n \"options\": {\r\n \"row\": 10,\r\n \"col\": 1,\r\n \"width\": 6,\r\n \"label\": \"Mobile Access\",\r\n \"name\": \"IsMobile\",\r\n \"disabled\": true,\r\n conditions: {\r\n enable: true,\r\n },\r\n initialvalue: 'I',\r\n \"transformProps\": {\r\n \"Y\": true,\r\n \"N\": false,\r\n true: \"Y\",\r\n false: \"N\"\r\n }\r\n }\r\n },\r\n\r\n {\r\n \"type\": \"historydate\",\r\n \"key\": \"datecreated\",\r\n \"options\": {\r\n \"row\": 12,\r\n \"col\": 0,\r\n \"width\": 6,\r\n \"text\": \"Created On: \",\r\n \"name\": \"CreatedOn\"\r\n }\r\n },\r\n {\r\n \"type\": \"historyuser\",\r\n \"key\": \"createdby\",\r\n \"options\": {\r\n \"row\": 12,\r\n \"col\": 1,\r\n \"width\": 6,\r\n \"text\": \"Created By: \",\r\n \"name\": \"CreatedByName\"\r\n }\r\n },\r\n {\r\n \"type\": \"historydate\",\r\n \"key\": \"updatedon\",\r\n \"options\": {\r\n \"row\": 13,\r\n \"col\": 0,\r\n \"width\": 6,\r\n \"text\": \"Updated On: \",\r\n \"name\": \"UpdatedOn\"\r\n }\r\n },\r\n {\r\n \"type\": \"historyuser\",\r\n \"key\": \"updatedbyname\",\r\n \"options\": {\r\n \"row\": 13,\r\n \"col\": 1,\r\n \"width\": 6,\r\n \"text\": \"Updated By: \",\r\n \"name\": \"UpdatedByName\"\r\n }\r\n },\r\n // {\r\n // \"type\": \"infotext\",\r\n // \"key\": \"Infotext\",\r\n // \"options\": {\r\n // \"row\": 14,\r\n // \"col\": 0,\r\n // \"width\": 12,\r\n // \"text\": \"Note: User is not active. Once you save your information and click on the send activation link button, an email will be dispatched to the provided email address containing instructions for activating new account.\",\r\n\r\n // }\r\n // },\r\n ]\r\n },\r\n // {\r\n // \"tabkey\": 1,\r\n // \"type\": \"treeview\",\r\n // \"key\": \"treeviewaccesscontrol\",\r\n // \"options\": {\r\n // \"width\": 12,\r\n // \"row\": 0,\r\n // \"col\": 0,\r\n // save: true,\r\n // \"title\": 'User Access Control',\r\n // headerProps: {\r\n // \"savebutton\": true,\r\n // \"closebutton\": true\r\n // },\r\n // viewMode: true,\r\n // designprops: true,\r\n // \"crud\": {\r\n // \"read\": {\r\n // \"get\": {\r\n // \"url\": getEnvVariable('Admin') + `/api/Users/UserAccessControlById/`,\r\n // \"customProps\": {\r\n // \"custom\": \"userId\"\r\n // }\r\n // }\r\n // },\r\n // \"update\": {\r\n // \"put\": {\r\n // \"url\": getEnvVariable('Admin') + `/api/Users/SetUserAccessControl/`,\r\n // \"customProps\": {\r\n // \"custom\": \"userId\"\r\n // }\r\n // }\r\n // }\r\n // },\r\n // },\r\n // },\r\n {\r\n \"tabkey\": 1,\r\n \"type\": \"accessControl\",\r\n \"key\": \"treeviewaccesscontrol\",\r\n name: 'UserAccessControl',\r\n \"disabled\":true,\r\n \"options\": {\r\n name: 'UserAccessControl',\r\n \"title\": 'User Access Control',\r\n read: [\r\n {// this url will change based on recordsref\r\n url: getEnvVariable('Admin') + `/api/Users/UserAccessControlById/`,\r\n type: 'get',\r\n customProps: {\r\n value: \"userId\",\r\n },\r\n },\r\n {// this url will change based on recordsref\r\n url: getEnvVariable('MasterAdmin') + `/api/WRSInternalUser/WRSUserById/`,\r\n type: 'get',\r\n customProps: {\r\n value: \"userId\",\r\n },\r\n },\r\n // {// this url will change based on recordsref\r\n // url: getEnvVariable('Admin') + `/api/Users/SetUserAccessControl/`,\r\n // type: 'post',\r\n // customProps: {\r\n // value: \"userId\",\r\n // },\r\n // },\r\n ]\r\n },\r\n },\r\n {\r\n \"tabkey\": 2,\r\n \"type\": \"formcontainer\",\r\n \"key\": \"updatepassword\",\r\n \"options\": {\r\n \"totalcolumns\": 2,\r\n \"totalrows\": 13,\r\n \"alignitem\": \"center\",\r\n \"title\": \"Update password\",\r\n // \"savebtn\": true,\r\n headerProps: {\r\n \"savebutton\": true,\r\n \"closebutton\": true,\r\n \"navigateadd\": true,\r\n \"editbutton\": false,\r\n },\r\n // style:{\r\n // \"padding-left\": 20,\r\n // },\r\n designprops: true,\r\n alignprofile: true,\r\n \"tabadd\": true,\r\n \"crud\": {\r\n \"update\": {\r\n \"post\": {\r\n \"url\": getEnvVariable('Admin') + '/api/Users/UpdatePassword',\r\n \"customProps\": {\r\n \"custom\": \"userId\"\r\n }\r\n },\r\n }\r\n },\r\n \"validations\": [\r\n {\r\n get: {\r\n \"url\": getEnvVariable('MasterAdmin') + `/api/ProjectMessages/RulesByName?name=master.users`\r\n },\r\n transformProps: {\r\n name: 'Key',\r\n subfieldname: 'MASTER.USERS_',\r\n }\r\n },\r\n ],\r\n },\r\n\r\n \"components\": [\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"newpassword\",\r\n \"options\": {\r\n \"row\": 2,\r\n \"col\": 0,\r\n \"width\": 12,\r\n // \"margin-left\": 2,\r\n \"label\": \"New Password\",\r\n \"name\": \"newpassword\",\r\n \"xtype\": \"password\",\r\n },\r\n // style:{\r\n // marginRight : '15px',\r\n // },\r\n // className: 'col-10 m-2'\r\n\r\n },\r\n {\r\n \"type\": \"formtextbox\",\r\n \"key\": \"Password\",\r\n \"options\": {\r\n \"row\": 3,\r\n \"col\": 0,\r\n \"width\": 12,\r\n // \"margin\": 2,\r\n \"label\": \"Confirm Password\",\r\n \"name\": \"Password\",\r\n \"xtype\": \"password\",\r\n dependency: {\r\n equal: 'newpassword'\r\n },\r\n // className: 'col-10 m-1'\r\n \r\n },\r\n\r\n },\r\n {\r\n \"type\": \"infotext\",\r\n \"key\": \"Infotext\",\r\n \"options\": {\r\n \"row\": 1,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"text\": \"Password Policy:\",\r\n\r\n }\r\n },\r\n {\r\n \"type\": \"infotext\",\r\n \"key\": \"Infotext\",\r\n \"options\": {\r\n \"row\": 1,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"text\": \"1. Password must contain at least 10 characters.\",\r\n\r\n }\r\n },\r\n {\r\n \"type\": \"infotext\",\r\n \"key\": \"Infotext\",\r\n \"options\": {\r\n \"row\": 1,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"text\": \"2. Password should includes 1 Uppercase Alphabet[A-Z], 1 Lowercase Alphabet[a-z], 1 number[0-9], 1 Special Character.\",\r\n\r\n }\r\n },\r\n // {\r\n // \"type\": \"infotext\",\r\n // \"key\": \"Infotext\",\r\n // \"options\": {\r\n // \"row\": 2,\r\n // \"col\": 0,\r\n // \"width\": 12,\r\n // \"text\": \"3. Password cannot contain spaces at the begin/end, Applicant Name, Username and cannot use the last five passwords.\",\r\n\r\n // }\r\n // },\r\n // {\r\n // \"type\": \"formcheckbox\",\r\n // \"key\": \"IsForcePasswordUpdate\",\r\n // \"options\": {\r\n // \"row\": 8,\r\n // \"col\": 0,\r\n // \"width\": 12,\r\n // \"label\": \"Require this user to change the password when login\",\r\n // \"name\": \"IsForcePasswordUpdate\",\r\n // initialvalue: 'N',\r\n // \"transformProps\": {\r\n // \"Y\": true,\r\n // \"N\": false,\r\n // true: \"Y\",\r\n // false: \"N\"\r\n // }\r\n // }\r\n // },\r\n ]\r\n },\r\n {\r\n \"tabkey\": 3,\r\n ...agencyuserloginhistory\r\n },\r\n ]\r\n },\r\n ]\r\n }]\r\n}\r\n\r\nexport default userprofile","import { toDataSourceRequestString } from '@progress/kendo-data-query';\r\nimport { getEnvVariable } from '../../../modules/environmentalList';\r\nimport { asyncgetData, GetData } from '../helpers/requests';\r\n//import { getEnvVariable } from '../../../modules/environmentalList';\r\n\r\nexport const getOptions = (data, columns, dataState, url) => {\r\n let gridoptions = {\r\n excel: {\r\n fileName: \"Excel.xlsx\",\r\n allPages: true,\r\n // filterable: true\r\n },\r\n withdatastateformat: dataState,\r\n dataSource: {\r\n type: \"webapi\",\r\n transport: {\r\n read: {\r\n url: url + '?',\r\n datastate: `${toDataSourceRequestString(dataState)}`,\r\n // headers: this.headers\r\n }\r\n },\r\n change: () => {\r\n },\r\n pageSize: 20,\r\n total: data.length,\r\n skip: 0,\r\n take: 20,\r\n serverPaging: true,\r\n serverSorting: true,\r\n serverFiltering: true,\r\n serverGrouping: true,\r\n serverAggregates: true,\r\n schema: {\r\n data: \"data\",\r\n total: \"total\",\r\n errors: \"errors\"\r\n }\r\n },\r\n // change: () => this.onChange(),\r\n pageable: {\r\n refresh: true,\r\n buttonCount: 5,\r\n pageSizes: [10, 20, 30, 40, 50, 100],\r\n },\r\n //dataBound: () => this.onLoad(),\r\n selectable: 'single row',\r\n columnMenu: true,\r\n sortable: true,\r\n resizable: true,\r\n scrollable: true,\r\n reorderable: true,\r\n columns: (columns || []).filter(each => {\r\n if (each.show)\r\n return { ...each, width: each.width || 200, filterable: each.filterable || { multi: true, search: true } }\r\n }),\r\n noRecords: {\r\n template: \"<p class='lead'>No data available.</p>\"\r\n },\r\n }\r\n return gridoptions\r\n}\r\n\r\n// export const loadReports = async (id, readurl, matchparams) => {\r\n// let existingReportsURL = getEnvVariable('Report')+`/Reports/Report?id=${id}`\r\n// let otherrequest\r\n// await getData(existingReportsURL).then(res => {\r\n// let anotherrequest\r\n// if (res) {\r\n// let opts = JSON.parse(res.ReportJsonQueryStr)\r\n// let readurlvalue = readurl[0]\r\n// let gridurl = readurlvalue['gridreporturl']\r\n// let ids = []\r\n// readurlvalue['matchProps'].forEach(each => {\r\n// const { key, name } = each\r\n// ids.push({ key: key, value: matchparams[name] })\r\n// })\r\n// ids.forEach(each => {\r\n// const { key, value } = each;\r\n// gridurl = `${gridurl.replace(`{${key}}`, value)}`;\r\n// })\r\n// let url = gridurl;\r\n// let queryStr = opts.dataSource.transport.read.datastate || null;\r\n// if (queryStr)\r\n// url = `${url}${queryStr}`\r\n// anotherrequest = {\r\n// load: {\r\n// rules: [{\r\n// run: {\r\n// valid: [{\r\n// type: 'grid',\r\n// \"read\": [\r\n// {\r\n// url: url,\r\n// \"matchProps\": [{\r\n// name: \"routeid1\",\r\n// key: \"routeid1\",\r\n// }],\r\n// type: 'get',\r\n// saveAs: {\r\n// key: 'data'\r\n// }\r\n// }\r\n// ]\r\n// },\r\n// ]\r\n// }\r\n// }]\r\n// }\r\n// }\r\n\r\n// }\r\n// otherrequest = anotherrequest\r\n// }\r\n// )\r\n// return otherrequest\r\n// }\r\n\r\nconst loadreportinfo = async (Id) => {\r\n let existingReportsURL = getEnvVariable('Report') + `/api/Reports/Report?id=${Id}`\r\n let datastate;\r\n let columnsdata\r\n await GetData(existingReportsURL, false, '', true).then(res => {\r\n if (res) {\r\n let opts = JSON.parse(res.ReportJsonQueryStr)\r\n let newdatastateval = opts.withdatastateformat\r\n columnsdata = opts.columns\r\n console.log(newdatastateval)\r\n datastate = newdatastateval\r\n }\r\n else {\r\n datastate = { skip: 0, take: 20 }\r\n columnsdata = null\r\n }\r\n })\r\n return { datastate, columnsdata }\r\n}\r\n\r\nexport const loadreportdata = async (gridkey, Id) => {\r\n let existingReportsURL = getEnvVariable('Report') + `/api/Reports/Default/${gridkey}`\r\n let datastate\r\n if (Id) {\r\n datastate = await loadreportinfo(Id)\r\n }\r\n else {\r\n await asyncgetData(existingReportsURL, true).then(async res => {\r\n if (res && res.Id > 0) {\r\n datastate = await loadreportinfo(res.Id)\r\n } else {\r\n datastate = (localStorage.getItem(gridkey) && JSON.parse(localStorage.getItem(gridkey))) || { skip: 0, take: 20 }\r\n }\r\n })\r\n }\r\n return datastate\r\n}","import React, { useRef, useState, Fragment, useEffect } from 'react';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport Button from '@material-ui/core/Button';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport InboxIcon from '@material-ui/icons/MoveToInbox';\r\nimport DraftsIcon from '@material-ui/icons/Drafts';\r\nimport SendIcon from '@material-ui/icons/Send';\r\nimport Preview from '@material-ui/icons/Visibility';\r\nimport Fab from '@material-ui/core/Fab';\r\n//import FilterListIcon from '@material-ui/icons/ClearAll';\r\nimport MarkunreadIcon from '@material-ui/icons/Markunread';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport AllInboxIcon from '@material-ui/icons/AllInbox';\r\nimport FilterListIcon from '@material-ui/icons/FilterList';\r\nimport BackspaceIcon from '@material-ui/icons/Backspace';\r\nimport MarkunreadMailboxIcon from '@material-ui/icons/MarkunreadMailbox';\r\nimport CallToActionIcon from '@material-ui/icons/CallToAction';\r\n\r\nconst StyledMenu = withStyles({\r\n paper: {\r\n border: '1px solid #d3d4d5',\r\n },\r\n})((props) => (\r\n <Menu\r\n elevation={0}\r\n getContentAnchorEl={null}\r\n anchorOrigin={{\r\n vertical: 'bottom',\r\n horizontal: 'center',\r\n }}\r\n transformOrigin={{\r\n vertical: 'top',\r\n horizontal: 'center',\r\n }}\r\n {...props}\r\n />\r\n));\r\n\r\nconst StyledMenuItem = withStyles((theme) => ({\r\n root: {\r\n '&:focus': {\r\n backgroundColor: theme.palette.primary.main,\r\n '& .MuiListItemIcon-root, & .MuiListItemText-primary': {\r\n color: theme.palette.common.white,\r\n },\r\n },\r\n },\r\n}))(MenuItem);\r\n\r\n\r\nconst iconMapper = {\r\n filter:FilterListIcon,\r\n markread: DraftsIcon,\r\n markunread: MarkunreadIcon, \r\n allinbox: AllInboxIcon,\r\n quickview: FilterListIcon, \r\n dismissed: BackspaceIcon,\r\n undismissed: CallToActionIcon\r\n}\r\n\r\nexport default function QuickView(props) {\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n const [menuItems, setMenuItems] = React.useState([]);\r\n const [value, setValue] = React.useState([]);\r\n\r\n const handleClick = (event) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n useEffect(() => {\r\n console.log(props,'---------quick view ');\r\n if(props.loadonclick){\r\n loadQuickViewMenu();\r\n }else{\r\n setDefaultMenuItems()\r\n }\r\n }, [])\r\n\r\n const setDefaultMenuItems = () => {\r\n setMenuItems(props.items)\r\n }\r\n\r\n const loadQuickViewMenu =() =>{\r\n console.log('Need props for loading quick menu');\r\n }\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const menuClicked = (event, val) => {\r\n console.log(val);\r\n setValue(val); \r\n // if(props.onClick)\r\n // props.onClick(event, val)\r\n }\r\n\r\n const IconComp = iconMapper[props.icon] ;\r\n\r\n return (\r\n <div> \r\n {IconComp && \r\n <i>\r\n <Fab size=\"small\" color=\"primary\" aria-label={props.title} className=\"float-right\" title={props.title} onClick={handleClick}> \r\n <IconComp fontSize=\"small\" />\r\n </Fab> \r\n </i> \r\n }\r\n \r\n <StyledMenu\r\n id=\"customized-menu\"\r\n anchorEl={anchorEl}\r\n keepMounted\r\n open={Boolean(anchorEl)}\r\n onClose={handleClose} \r\n value = {value} \r\n >\r\n {Array.isArray(menuItems) && menuItems.map(item => {\r\n const Itemicon = iconMapper[item.icon];\r\n return (<StyledMenuItem value={item.name} onClick={(evt) => menuClicked(evt, item.value) }>\r\n <ListItemIcon>\r\n <Itemicon fontSize=\"small\" /> \r\n </ListItemIcon>\r\n <ListItemText primary={item.name} />\r\n </StyledMenuItem>)\r\n }) }\r\n {/* { Array.isArray(menuItems) && } */}\r\n </StyledMenu>\r\n </div>\r\n );\r\n}\r\n","\r\n\r\nexport const historyJson = {\r\n headerProps: {\r\n title: \"History\",\r\n\r\n actions: [\r\n {\r\n type: 'fab',\r\n icon: 'clear',\r\n name: 'clear',\r\n color: 'primary',\r\n title: 'Clear Filters',\r\n menucolor: '#22a9b3',\r\n hideon: 'clear',\r\n hidevalue: false\r\n },\r\n\r\n {\r\n type: 'menu',\r\n icon: 'excel',\r\n name: 'excel',\r\n color: 'primary',\r\n title: 'Export to Excel',\r\n menucolor: '#c90685',\r\n hideon: 'excel',\r\n hidevalue: false,\r\n items: [{\r\n name: 'Export Current Page',\r\n action: 'filtercurrent'\r\n },\r\n {\r\n name: 'Export All Pages',\r\n action: 'filterall'\r\n }\r\n ]\r\n },\r\n\r\n ]\r\n },\r\n\r\n header: {\r\n name: \"header\",\r\n type: 'header',\r\n title: 'History',\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": \"History\", \"materialicon\": \"history\", className: 'eps-breadcrumb-item ', class: 'text-light' },\r\n ]\r\n }\r\n ],\r\n actions: [\r\n {\r\n type: 'icon',\r\n icon: 'back',\r\n name: 'back',\r\n hideon: 'back',\r\n hidevalue: false\r\n },\r\n ],\r\n },\r\n columns: [\r\n {\r\n \"title\": \"Field Name\",\r\n \"field\": \"FieldName\",\r\n \"show\": true,\r\n \"width\": 200,\r\n },\r\n {\r\n \"title\": \"Old Value\",\r\n \"field\": \"OldValue\",\r\n \"show\": true,\r\n \"width\": 150,\r\n },\r\n {\r\n \"title\": \"New Value\",\r\n \"field\": \"NewValue\",\r\n \"show\": true,\r\n \"width\": 150,\r\n\r\n },\r\n {\r\n \"title\": \"Updated By\",\r\n \"field\": \"CreatedByName\",\r\n \"show\": true,\r\n \"width\": 200,\r\n\r\n },\r\n {\r\n \"title\": \"Updated On\",\r\n \"field\": \"CreatedOn\",\r\n \"show\": true,\r\n \"width\": 200,\r\n filter: \"date\",\r\n convert: \"MM/DD/YYYY hh:mm:ss A\"\r\n },\r\n ],\r\n}\r\n\r\nexport const ApplicationhistoryJson = {\r\n headerProps: {\r\n title: \"History\",\r\n\r\n actions: [\r\n {\r\n type: 'fab',\r\n icon: 'clear',\r\n name: 'clear',\r\n color: 'primary',\r\n title: 'Clear Filters',\r\n menucolor: '#22a9b3',\r\n hideon: 'clear',\r\n hidevalue: false\r\n },\r\n\r\n {\r\n type: 'menu',\r\n icon: 'excel',\r\n name: 'excel',\r\n color: 'primary',\r\n title: 'Export to Excel',\r\n menucolor: '#c90685',\r\n hideon: 'excel',\r\n hidevalue: false,\r\n items: [{\r\n name: 'Export Current Page',\r\n action: 'filtercurrent'\r\n },\r\n {\r\n name: 'Export All Pages',\r\n action: 'filterall'\r\n }\r\n ]\r\n },\r\n\r\n ]\r\n },\r\n\r\n header: {\r\n name: \"header\",\r\n type: 'header',\r\n title: 'History',\r\n components: [\r\n {\r\n type: 'breadcrumbs',\r\n items: [\r\n { \"link\": \"History\", \"materialicon\": \"history\", className: 'eps-breadcrumb-item ', class: 'text-light' },\r\n ]\r\n }\r\n ],\r\n actions: [\r\n {\r\n type: 'icon',\r\n icon: 'back',\r\n name: 'back',\r\n hideon: 'back',\r\n hidevalue: false\r\n },\r\n ],\r\n },\r\n columns: [\r\n {\r\n \"title\": \"Field Name\",\r\n \"field\": \"Field\",\r\n \"show\": true,\r\n \"width\": 150,\r\n },\r\n {\r\n \"title\": \"Old Value\",\r\n \"field\": \"OldValue\",\r\n \"show\": true,\r\n \"width\": 150,\r\n },\r\n {\r\n \"title\": \"New Value\",\r\n \"field\": \"NewValue\",\r\n \"show\": true,\r\n \"width\": 150,\r\n\r\n },\r\n {\r\n \"title\": \"Updated By\",\r\n \"field\": \"UpdatedBy\",\r\n \"show\": true,\r\n \"width\": 200,\r\n\r\n },\r\n {\r\n \"title\": \"Updated On\",\r\n \"field\": \"UpdatedOn\",\r\n \"show\": true,\r\n \"width\": 200,\r\n filter: \"date\",\r\n convert: \"MM/DD/YYYY hh:mm:ss A\"\r\n },\r\n ],\r\n}","import SwipeableDrawer from '@material-ui/core/SwipeableDrawer';\r\nimport { toDataSourceRequestString } from '@progress/kendo-data-query';\r\nimport { ExcelExport } from '@progress/kendo-react-excel-export';\r\nimport { Grid, GridColumn, GridColumnMenuFilter } from \"@progress/kendo-react-grid\";\r\nimport React, { useRef, useState, Fragment, useEffect } from 'react';\r\nimport { createRequest, requestApi } from '../../controls/helpers/rest';\r\nimport { CustomColumnMenu } from './customColumnMenu';\r\nimport Header from './header';\r\nimport GridHeader from './kendoheader';\r\nimport { historyJson } from '../../../controls/jsons/history'\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport HistoryIcon from '@material-ui/icons/History';\r\nimport { useParams } from 'react-router-dom';\r\nimport Fab from '@material-ui/core/Fab';\r\nimport moment from 'moment';\r\nconst _ = require('lodash');\r\n\r\nexport default function History({ url = '', fieldValues = null, sharedProps = null }) {\r\n const [data, setData] = useState([]);\r\n const [total, setTotal] = useState(0)\r\n const [isexport, setExport] = useState(false);\r\n const _export = useRef(null)\r\n const [historyOpen, setHistoryOpen] = useState(false)\r\n const [columns, setColumns] = useState(historyJson.columns)\r\n const [datastate, setDataState] = useState({\r\n skip: 0, take: 10\r\n })\r\n const handleExport = (actiontype) => {\r\n GridResults(datastate, actiontype)\r\n }\r\n const params = useParams()\r\n\r\n useEffect(() => {\r\n if (historyOpen) {\r\n GridResults(datastate, false)\r\n }\r\n }, [historyOpen])\r\n\r\n const GridResults = (dataState, actiontype) => {\r\n let req = url\r\n const queryStr = `${toDataSourceRequestString(dataState)}`;\r\n let querystractiontype = actiontype && actiontype == 'filterall' && dataState && dataState.filter && !(_.isEmpty(dataState.filter)) ? queryStr.split('&')[0] : queryStr\r\n let request = [{\r\n url: actiontype && actiontype == 'filterall' && !(dataState && dataState.filter && !(_.isEmpty(dataState.filter))) ? req.url : req.url + `${querystractiontype}`,\r\n type: req.type,\r\n routeProps: req.routeProps,\r\n matchProps: req.matchProps\r\n }]\r\n Promise.all(request.map(each => requestApi(createRequest(each, fieldValues ? fieldValues : sharedProps, params)).catch(error => { return error; }))).then(response => {\r\n const [table] = response\r\n\r\n setTotal(table.total)\r\n if (actiontype) {\r\n setExport(true)\r\n let dataval = actiontype == \"filterall\" ? table.data : data\r\n _export.current.save(dataval, columns);\r\n }\r\n else {\r\n table && table.data && table.data.map(res => {\r\n if (res.CreatedOn) {\r\n res.CreatedOn = res.CreatedOn !== null ? moment(res.CreatedOn).format('MM/DD/YYYY hh:mm:ss A') : \"\"\r\n }\r\n })\r\n setData(table.data)\r\n setDataState(dataState)\r\n setExport(false)\r\n }\r\n\r\n })\r\n }\r\n\r\n const handleDataStateChange = (changeEvent) => {\r\n let tempDatastate = changeEvent.dataState;\r\n setDataState(tempDatastate)\r\n GridResults(tempDatastate, false)\r\n }\r\n\r\n const NoDataDisplay = (props, field) => {\r\n if (props.rowType === \"groupHeader\") {\r\n return null;\r\n }\r\n else if (props.dataItem['Id'] !== 0 && (props.dataItem[field] == null || props.dataItem[field] == '')) {\r\n return <td style={{ color: '#adabaa' }}> N/A </td>\r\n }\r\n else return <td > {props.dataItem['Id'] !== 0 ? props.dataItem[field] : \"\"} </td>\r\n }\r\n\r\n const DisplayValue = (props, field) => {\r\n if (props.rowType === \"groupHeader\") {\r\n return null;\r\n }\r\n else if (field == 'OldValueDesc') {\r\n if ((props.dataItem['OldValueDesc'] == null || props.dataItem['OldValueDesc'] == ''))\r\n return <td > {props.dataItem['OldValue']}</td>\r\n else return <td > {props.dataItem['OldValueDesc']}</td>\r\n }\r\n else if (field == 'NewValueDesc') {\r\n if ((props.dataItem['NewValueDesc'] == null || props.dataItem['NewValueDesc'] == ''))\r\n return <td > {props.dataItem['NewValue']}</td>\r\n else return <td > {props.dataItem['NewValueDesc']}</td>\r\n }\r\n else return <td > </td>\r\n }\r\n\r\n const clearFilters = () => {\r\n setDataState({ skip: 0, take: 10 })\r\n GridResults({ skip: 0, take: 10 }, false);\r\n }\r\n\r\n const onColumnsSubmit = (columnsState) => {\r\n setColumns(columnsState)\r\n }\r\n\r\n return <Fragment>\r\n {url.fabicon && <Fab size=\"small\" color=\"secondary\" aria-label=\"History\" className=\"float-end mr-4\" title=\"History\" onClick={() => setHistoryOpen(true)}>\r\n <HistoryIcon fontSize=\"small\" />\r\n </Fab>}\r\n {!url.fabicon && <IconButton className=\" zoom m-1\" style={{ backgroundColor: 'white', color: '#808080' }} onClick={() => setHistoryOpen(true)} title={'History'} color={\"inherit\"}> <HistoryIcon fontSize=\"small\" /> </IconButton>}\r\n\r\n <SwipeableDrawer disableEnforceFocus={true}\r\n anchor={'right'}\r\n open={historyOpen}\r\n onClose={() => setHistoryOpen(false)}\r\n PaperProps={{ style: { width: 900 } }}\r\n\r\n >\r\n <Header {...historyJson.header} {...{ addOnsByName: { back: { onClick: () => setHistoryOpen(false) } } }} />\r\n {historyJson.headerProps && <GridHeader {...historyJson.headerProps} {...{ addOnsByName: { clear: { onClick: clearFilters }, excel: { onClick: handleExport } } }} />}\r\n <div className=\"col\" style={{ height: window.innerHeight - 100, overflow: 'auto' }}>\r\n <ExcelExport\r\n data={data}\r\n fileName={url.title || 'History.xlsx'}\r\n ref={_export}\r\n >\r\n\r\n <Grid\r\n reorderable\r\n sortable={true}\r\n // className='col-sm-12'\r\n onDataStateChange={handleDataStateChange}\r\n //ref={_grid}\r\n resizable\r\n data={data || []}\r\n total={total || 0}\r\n {...datastate}\r\n style={{ height: '100%', width: '100%' }}\r\n pageable={{\r\n buttonCount: 2,\r\n info: true,\r\n type: 'numeric',\r\n pageSizes: true,\r\n previousNext: true\r\n }}\r\n >\r\n {(columns || []).map((each, index) => {\r\n if (each.show && (each.field == 'UpdatedOn' || each.field == 'UpdatedByName' || each.field == 'CreatedOn' || each.field == 'CreatedByName'))\r\n return <GridColumn {...each} filter={each.filter}\r\n title={isexport ? each.title : <span className={GridColumnMenuFilter.active(each.field, (datastate && datastate.filter)) ? 'text-primary' : ''}>{each.title}</span>}\r\n key={index} datastate\r\n cell={e => NoDataDisplay(e, each.field)} columnMenu={\r\n props =>\r\n <CustomColumnMenu\r\n {...props}\r\n columns={columns}\r\n onColumnsSubmit={onColumnsSubmit}\r\n />\r\n } />\r\n if (each.show && (each.field == 'OldValueDesc' || each.field == 'NewValueDesc'))\r\n return <GridColumn {...each} filter={each.filter}\r\n title={isexport ? each.title : <span className={GridColumnMenuFilter.active(each.field, (datastate && datastate.filter)) ? 'text-primary' : ''}>{each.title}</span>}\r\n key={index} datastate\r\n cell={e => DisplayValue(e, each.field)} columnMenu={\r\n props =>\r\n <CustomColumnMenu\r\n {...props}\r\n columns={columns}\r\n onColumnsSubmit={onColumnsSubmit}\r\n />\r\n } />\r\n else if (each.show) return <GridColumn {...each} filter={each.filter} key={index}\r\n title={isexport ? each.title : <span className={GridColumnMenuFilter.active(each.field, (datastate && datastate.filter)) ? 'text-primary' : ''}>{each.title}</span>}\r\n datastate cell={e => NoDataDisplay(e, each.field)}\r\n columnMenu={\r\n props =>\r\n <CustomColumnMenu\r\n {...props}\r\n columns={columns}\r\n onColumnsSubmit={onColumnsSubmit}\r\n />\r\n } />\r\n })}\r\n </Grid>\r\n </ExcelExport>\r\n </div>\r\n </SwipeableDrawer>\r\n </Fragment>\r\n}\r\n","import { loadModules } from 'esri-loader';\r\nimport { result } from 'lodash-es';\r\nimport { GeometryEngineTask } from '../util/geometryEngineTask';\r\n\r\nexport function QueryTask(config, querycondition, spatialReference) {\r\n return new Promise((resolve, reject) => {\r\n console.log('QueryTask------------------SR', spatialReference)\r\n if (!loadModules) {\r\n reject('QueryTask: ArcGIS API is not loaded');\r\n return;\r\n }\r\n QueryTaskExecute(config, querycondition, spatialReference).then(\r\n response => {\r\n resolve(response);\r\n },\r\n error => {\r\n reject(error);\r\n }\r\n );\r\n });\r\n};\r\n\r\nfunction QueryTaskExecute(config, querycondition, spatialReference) {\r\n return new Promise((resolve, reject) => {\r\n loadModules([\r\n \"esri/tasks/support/Query\", \"esri/tasks/QueryTask\", \"esri/geometry/Point\", \"esri/geometry/SpatialReference\"\r\n ]).then(([Query, QueryTask, Point, SpatialReference]) => {\r\n if (config && config.url) {\r\n console.log('---------------QueryTaskExecute-----------------------')\r\n const query = new Query();\r\n if (querycondition) {\r\n if (config.defaultExpression)\r\n querycondition = (!querycondition || querycondition == \"()\" || querycondition == \"1=1\") ? (config.defaultExpression) : ((\"(\" + config.defaultExpression + \")\") + \" and \" + querycondition)\r\n query.where = querycondition;\r\n }\r\n\r\n query.outFields = ['*'];\r\n console.log('spatialReference',spatialReference)\r\n query.spatialReference = spatialReference || 2992;\r\n query.returnGeometry = true;\r\n query.outSpatialReference = spatialReference || 2992;\r\n const queryTask = new QueryTask({\r\n url: config.url\r\n });\r\n\r\n queryTask.execute(query).then(\r\n response => {\r\n resolve(response);\r\n },\r\n error => {\r\n console.log(\"QueryTaskExecute error-------------\")\r\n console.error(\"WebMap: error\", error);\r\n reject(error);\r\n }\r\n );\r\n\r\n } else {\r\n resolve({ customerrormessage: 'no url present for query' });\r\n }\r\n\r\n })\r\n });\r\n}\r\n\r\nexport function QuerySelectedTask(subModuleKey, config, view, mapConstants, querycondition, spatialReference, zoom) {\r\n return new Promise((resolve, reject) => {\r\n if (!loadModules) {\r\n reject('QueryTask: ArcGIS API is not loaded');\r\n return;\r\n }\r\n QuerySelectedTaskExecute(subModuleKey, config, view, mapConstants, querycondition, spatialReference, zoom).then(\r\n response => {\r\n resolve(response);\r\n },\r\n error => {\r\n reject(error);\r\n }\r\n );\r\n });\r\n};\r\n\r\nfunction QuerySelectedTaskExecute(subModuleKey, config, view, mapConstants, querycondition, spatialReference, zoom) {\r\n return new Promise((resolve, reject) => {\r\n loadModules([\r\n \"esri/Graphic\",\r\n \"esri/layers/GraphicsLayer\",\r\n \"esri/layers/FeatureLayer\",\r\n \"esri/tasks/support/Query\",\r\n \"esri/tasks/QueryTask\",\r\n \"esri/geometry/Point\",\r\n \"esri/geometry/SpatialReference\"\r\n ]).then(([Graphic, GraphicsLayer, FeatureLayer, Query, QueryTask, Point, SpatialReference]) => {\r\n if (config && config.url) {\r\n /*let layer = view.map.layers.find(function (layer) {\r\n return layer.title === config.title;//\"Data Table Seleced Records_\"+config.id;\r\n });\r\n let isNew=!layer;\r\n if (isNew) {\r\n layer = new FeatureLayer({\r\n \"title\": config.title//\"Data Table Seleced Records_\"+config.id, listMode: 'hide'\r\n });\r\n }*/\r\n console.log('---------------QueryTaskExecute-----------------------')\r\n let layer = view.map.layers.find(function (layer) {\r\n return layer.title === \"Data Table Seleced Records_\" + config.id;\r\n });\r\n let isNew = !layer;\r\n if (isNew) {\r\n layer = new GraphicsLayer({\r\n \"title\": \"Data Table Seleced Records_\" + config.id, listMode: 'hide'\r\n });\r\n }\r\n\r\n const query = new Query();\r\n if (querycondition) {\r\n if (config.defaultExpression && config.defaultExpression !== \"1=1\")\r\n querycondition = (!querycondition || querycondition == \"()\" || querycondition == \"1=1\") ? (config.defaultExpression) : ((\"(\" + config.defaultExpression + \")\") + \" and \" + querycondition)\r\n query.where = querycondition;\r\n }\r\n let highlightSelect = null\r\n let geometries = []\r\n /*view.whenLayerView(layer).then(function (lyrView) {\r\n // creates the query that will be used to obtain the features needed for the highlight\r\n var querylayer = layer.createQuery();\r\n querylayer.where = querycondition;\r\n layer.queryFeatures(querylayer).then(\r\n response => {\r\n if (highlightSelect) {\r\n highlightSelect.remove();\r\n }\r\n response.features.forEach((item) => {\r\n item.symbol =mapConstants.getHighlightsymbol(subModuleKey,item.geometry.type,item.attributes,config);//mapConstants.getHighlightsymbol(subModuleKey,s.geometry.type,s.attributes,config);\r\n geometries.push(item.geometry)\r\n });\r\n highlightSelect = lyrView.highlight(response.features)\r\n CenterAndZoomWithUnion(view,geometries,zoom)\r\n },\r\n error => {\r\n console.log(\"QueryTaskExecute error-------------\")\r\n console.error(\"WebMap: error\", error);\r\n reject(error);\r\n });\r\n });*/\r\n query.outFields = ['*'];\r\n query.spatialReference = spatialReference || 26957;\r\n query.returnGeometry = true;\r\n query.outSpatialReference = spatialReference || 26957;\r\n const queryTask = new QueryTask({\r\n url: config.url\r\n });\r\n queryTask.execute(query).then(\r\n response => {\r\n if (response && response.features) {\r\n /*view.whenLayerView(layer).then(function (lyrView) {\r\n response.features.forEach((item) => {\r\n item.symbol =mapConstants.getHighlightsymbol(subModuleKey,item.geometry.type,item.attributes,config);//mapConstants.getHighlightsymbol(subModuleKey,s.geometry.type,s.attributes,config);\r\n geometries.push(item.geometry)\r\n highlightSelect=lyrView.highlight(item.attributes['OBJECTID'])\r\n });*/\r\n\r\n response.features.forEach(function (item) {\r\n let g = new Graphic({\r\n geometry: item.geometry,\r\n attributes: item.attributes,\r\n symbol: mapConstants.getHighlightsymbol(subModuleKey, item.geometry.type, item.attributes, config)//mapConstants.getsymbol(item.geometry.type,true,config)//\r\n });\r\n geometries.push(g.geometry)\r\n layer.graphics.add(g);\r\n });\r\n if (isNew)\r\n view.map.layers.add(layer, 0);\r\n CenterAndZoomWithUnion(view, geometries, zoom)\r\n //});\r\n }\r\n resolve(response);\r\n },\r\n error => {\r\n console.log(\"QueryTaskExecute error-------------\")\r\n console.error(\"WebMap: error\", error);\r\n reject(error);\r\n }\r\n );\r\n\r\n } else {\r\n resolve({ customerrormessage: 'no url present for query' });\r\n }\r\n\r\n })\r\n });\r\n}\r\n\r\nexport function CenterAndZoom(view, graphic, defaultZoom) {\r\n if (view && graphic) {\r\n view.goTo(graphic).then(function () {\r\n if (defaultZoom && defaultZoom > view.zoom)\r\n view.zoom = defaultZoom\r\n });\r\n }\r\n}\r\n\r\nexport function CenterAndZoomWithUnion(view, graphics, defaultZoom) {\r\n if (graphics && graphics.length > 0) {\r\n if (graphics.length > 1) {\r\n GeometryEngineTask({ geometries: graphics, type: \"union\" })\r\n .then((GeomEngineresponse) => {\r\n if (GeomEngineresponse) {\r\n if (GeomEngineresponse.centroid)\r\n CenterAndZoom(view, GeomEngineresponse.centroid, defaultZoom);\r\n else if (GeomEngineresponse.extent)\r\n CenterAndZoom(view, GeomEngineresponse.extent, defaultZoom);\r\n }\r\n },\r\n (GeomEngineerror) => {\r\n console.log(GeomEngineerror);\r\n }\r\n );\r\n } else if (graphics.length === 1) {\r\n CenterAndZoom(view, graphics[0], defaultZoom);\r\n }\r\n }\r\n}\r\n\r\nexport function setCenterforMapviewwithFlag(view, xCenter, yCenter, spid, symbol) {\r\n return new Promise((resolve, reject) => {\r\n loadModules([\r\n \"esri/geometry/Point\", \"esri/geometry/SpatialReference\", \"esri/Graphic\",\r\n ]).then(([Point, SpatialReference, Graphic]) => {\r\n if (xCenter && xCenter != undefined && xCenter != null) {\r\n let spatialReference = new SpatialReference(spid);\r\n let geomPt = new Point(xCenter, yCenter, spatialReference);\r\n let g = new Graphic({\r\n geometry: geomPt,\r\n symbol: symbol\r\n });\r\n view.graphics.add(g);\r\n //view.center = geomPt;\r\n }\r\n })\r\n });\r\n}\r\n\r\nexport function setCenterforMapviewNoFlag(view, xCenter, yCenter, spid) {\r\n return new Promise((resolve, reject) => {\r\n loadModules([\r\n \"esri/geometry/Point\", \"esri/geometry/SpatialReference\", \"esri/Graphic\",\r\n ]).then(([Point, SpatialReference, Graphic]) => {\r\n if (xCenter && xCenter != undefined && xCenter != null) {\r\n let spatialReference = new SpatialReference(spid);\r\n let geomPt = new Point(xCenter, yCenter, spatialReference);\r\n let g = new Graphic({\r\n geometry: geomPt\r\n });\r\n view.graphics.add(g);\r\n //view.center = geomPt;\r\n }\r\n })\r\n });\r\n}\r\n\r\nexport function QueryTaskExecuteWithrelation(config, querycondition, spatialReference, inputgeom) {\r\n return new Promise((resolve, reject) => {\r\n loadModules([\r\n \"esri/tasks/support/Query\", \"esri/tasks/QueryTask\", \"esri/geometry/Point\", \"esri/geometry/SpatialReference\"\r\n ]).then(([Query, QueryTask, Point, SpatialReference]) => {\r\n console.log('---------------QueryTaskExecuteWithrelation-----------------------')\r\n const query = new Query();\r\n if (config.url.indexOf('/query') === -1) {\r\n if (querycondition) {\r\n if (config.defaultExpression)\r\n querycondition = (!querycondition || querycondition == \"()\" || querycondition == \"1=1\") ? (config.defaultExpression) : ((\"(\" + config.defaultExpression + \")\") + \" and \" + querycondition)\r\n query.where = querycondition;\r\n }\r\n }\r\n query.outFields = ['*'];\r\n query.spatialReference = spatialReference || 2992;\r\n query.returnGeometry = true;\r\n query.outSpatialReference = spatialReference || 2992;\r\n if (inputgeom != null) {\r\n query.geometry = inputgeom.geometry;\r\n query.spatialRelationship = \"intersects\";\r\n }\r\n const queryTask = new QueryTask({\r\n url: config.url\r\n });\r\n\r\n queryTask.execute(query).then(\r\n response => {\r\n resolve(response);\r\n },\r\n error => {\r\n console.log(\"query info \", querycondition, config.url, query.where);\r\n console.error(\"WebMap: error\", error);\r\n reject(error);\r\n }\r\n );\r\n })\r\n });\r\n}\r\n\r\n\r\nexport function QueryTaskExecuteBufferWithrelation(config, querycondition, spatialReference, inputgeom, buffer, units = \"meters\") {\r\n return new Promise((resolve, reject) => {\r\n loadModules([\r\n \"esri/tasks/support/Query\", \"esri/tasks/QueryTask\", \"esri/geometry/Point\", \"esri/geometry/SpatialReference\",\"esri/config\"\r\n ]).then(([Query, QueryTask, Point, SpatialReference, esriConfig]) => {\r\n // console.log('---------------QueryTaskExecuteBufferWithrelation-----------------------')\r\n //console.log(querycondition, spatialReference, inputgeom, buffer, units)\r\n if (config && config.Token && config.TokenExpiration) {\r\n esriConfig.request.interceptors.push({\r\n urls: config.url,\r\n before: function (params) {\r\n params.requestOptions.query = params.requestOptions.query || {};\r\n params.requestOptions.query.token = config.Token;\r\n params.requestOptions.query.expiration = config.TokenExpiration;\r\n }\r\n });\r\n }\r\n const query = new Query();\r\n if (config.url.indexOf('/query') === -1) {\r\n if (querycondition) {\r\n if (config.defaultExpression)\r\n querycondition = (!querycondition || querycondition == \"()\" || querycondition == \"1=1\") ? (config.defaultExpression) : ((\"(\" + config.defaultExpression + \")\") + \" and \" + querycondition)\r\n query.where = querycondition;\r\n }\r\n }\r\n query.outFields = ['*'];\r\n query.spatialReference = spatialReference || 2992;\r\n query.returnGeometry = true;\r\n query.outSpatialReference = spatialReference || 2992;\r\n if (inputgeom != null) {\r\n query.geometry = inputgeom.geometry;\r\n query.spatialRelationship = \"intersects\";\r\n }\r\n if (buffer && buffer > 0) {\r\n query.distance = buffer; // queries all features within 1 mile of the point\r\n query.units = units;\r\n }\r\n\r\n const queryTask = new QueryTask({\r\n url: config.url\r\n });\r\n\r\n queryTask.execute(query).then(\r\n response => {\r\n resolve(response);\r\n },\r\n error => {\r\n console.log(\"query info \", querycondition, config.url, query.where);\r\n console.log('Following error is just informational purpose.... NOT AN ISSUE OF LAYERS')\r\n console.error(\"WebMap: error\", error);\r\n resolve({ \"features\": [{ \"attributes\": {} }] })\r\n //reject(error);\r\n }\r\n );\r\n })\r\n });\r\n}\r\n\r\n\r\nexport function QueryTaskBufferWithGeom(config, querycondition, spatialReference, inputgeom, buffer, unit) {\r\n return new Promise((resolve, reject) => {\r\n loadModules([\r\n \"esri/tasks/support/Query\", \"esri/tasks/QueryTask\", \"esri/geometry/Point\", \"esri/geometry/SpatialReference\"\r\n ]).then(([Query, QueryTask, Point, SpatialReference]) => {\r\n console.log('---------------QueryTaskBufferWithGeom-----------------------')\r\n const query = new Query();\r\n if (querycondition) {\r\n if (config.defaultExpression)\r\n querycondition = (!querycondition || querycondition == \"()\" || querycondition == \"1=1\") ? (config.defaultExpression) : ((\"(\" + config.defaultExpression + \")\") + \" and \" + querycondition)\r\n query.where = querycondition;\r\n }\r\n query.outFields = ['*'];\r\n query.spatialReference = spatialReference || 2992;\r\n query.returnGeometry = true;\r\n query.outSpatialReference = spatialReference || 2992;\r\n if (inputgeom != null) {\r\n query.geometry = inputgeom;\r\n query.spatialRelationship = \"intersects\";\r\n }\r\n if (buffer && buffer > 0) {\r\n query.distance = buffer;\r\n query.units = unit;\r\n }\r\n const queryTask = new QueryTask({\r\n url: config.url\r\n });\r\n\r\n queryTask.execute(query).then(\r\n response => {\r\n resolve(response);\r\n },\r\n error => {\r\n console.log(\"query info \", querycondition, config.url, query.where);\r\n console.error(\"WebMap: error\", error);\r\n reject(error);\r\n }\r\n );\r\n })\r\n });\r\n}\r\n\r\nexport function EsriRequest(config, querycondition, spatialReference) {\r\n return new Promise((resolve, reject) => {\r\n if (!loadModules) {\r\n reject('QueryTask: ArcGIS API is not loaded');\r\n return;\r\n }\r\n EsriRequestExecute(config, querycondition, spatialReference).then(\r\n response => {\r\n resolve(response);\r\n },\r\n error => {\r\n reject(error);\r\n }\r\n );\r\n });\r\n}\r\n\r\nfunction EsriRequestExecute(config, querycondition, spatialReference) {\r\n return new Promise((resolve, reject) => {\r\n loadModules([\r\n \"esri/tasks/support/Query\", \"esri/tasks/QueryTask\", \"esri/geometry/Point\",\r\n \"esri/geometry/SpatialReference\", \"esri/request\"\r\n ]).then(([Query, QueryTask, Point, SpatialReference, esriRequest]) => {\r\n if (config && config.url) {\r\n // Define the 'options' for the request\r\n var options = {\r\n query: {\r\n f: \"pjson\"\r\n },\r\n responseType: \"pjson\"\r\n };\r\n esriRequest(config.url, options).then(function (response) {\r\n console.log(\"response\", response);\r\n resolve(JSON.parse(response.data))\r\n });\r\n } else {\r\n resolve({ customerrormessage: 'no url present for query' });\r\n }\r\n\r\n })\r\n });\r\n}\r\n\r\nfunction QueryTaskExecuteMultipleLocation(config, querycondition, spatialReference) {\r\n return new Promise((resolve, reject) => {\r\n loadModules([\r\n \"esri/tasks/support/Query\", \"esri/tasks/QueryTask\", \"esri/geometry/Point\", \"esri/geometry/SpatialReference\"\r\n ]).then(([Query, QueryTask, Point, SpatialReference]) => {\r\n if (config && config.url) {\r\n\r\n const query = new Query();\r\n if (querycondition) {\r\n if (config.defaultExpression)\r\n querycondition = (!querycondition || querycondition == \"()\" || querycondition == \"1=1\") ? (config.defaultExpression) : ((\"(\" + config.defaultExpression + \")\") + \" and \" + querycondition)\r\n query.where = querycondition;\r\n }\r\n\r\n query.outFields = ['*'];\r\n query.units = 'feet';\r\n //query.spatialReference = spatialReference || 2992;\r\n query.returnGeometry = true;\r\n //query.outSpatialReference = spatialReference || 2992;\r\n const queryTask = new QueryTask(config.url);\r\n // queryTask.execute(query, function(featureSet){\r\n // // for (var x = 0; x < featureSet.features.length; x++) {\r\n // // dataArray.push(featureSet.features[x].attributes.RTUnique);\r\n // // }\r\n // console.log(featureSet);\r\n // resolve(featureSet);\r\n // }, function(error){\r\n // console.log(error);\r\n // });\r\n let queryReponseData = queryTask.execute(query);\r\n console.log(queryReponseData);\r\n queryReponseData.then(\r\n function (response) {\r\n resolve(response);\r\n }, function (m) {\r\n resolve(m);\r\n },\r\n function (error) {\r\n console.log(\"QueryTaskExecute error-------------\")\r\n console.error(\"WebMap: error\", error);\r\n reject(error);\r\n }\r\n );\r\n\r\n } else {\r\n resolve({ customerrormessage: 'no url present for query' });\r\n }\r\n\r\n })\r\n });\r\n}\r\n\r\nfunction GeoProcessingRequestAsync(config, querycondition, spatialReference) {\r\n loadModules([\r\n \"esri/tasks/support/Query\", \"esri/tasks/QueryTask\", \"esri/geometry/Point\", \"esri/geometry/SpatialReference\"\r\n ]).then(([Query, QueryTask, Point, SpatialReference]) => {\r\n if (config && config.url) {\r\n\r\n const query = new Query();\r\n if (querycondition) {\r\n if (config.defaultExpression)\r\n querycondition = (!querycondition || querycondition == \"()\" || querycondition == \"1=1\") ? (config.defaultExpression) : ((\"(\" + config.defaultExpression + \")\") + \" and \" + querycondition)\r\n query.where = querycondition;\r\n }\r\n\r\n query.outFields = ['*'];\r\n query.units = 'feet';\r\n //query.spatialReference = spatialReference || 2992;\r\n query.returnGeometry = true;\r\n //query.outSpatialReference = spatialReference || 2992;\r\n const queryTask = new QueryTask({\r\n url: config.url\r\n });\r\n\r\n var queryResult = queryTask.execute(query);\r\n console.log(queryResult);\r\n\r\n\r\n } else {\r\n // code correction: 'resolve' is not defined no - undef\r\n // resolve({ customerrormessage: 'no url present for query' });\r\n }\r\n })\r\n return null;\r\n}\r\n\r\nfunction GeoProcessingRequestNormalization(config, querycondition, spatialReference) {\r\n return new Promise((resolve, reject) => {\r\n loadModules([\r\n \"esri/tasks/support/Query\", \"esri/tasks/QueryTask\", \"esri/geometry/Point\",\r\n \"esri/geometry/SpatialReference\", \"esri/tasks/Geoprocessor\"\r\n ]).then(([Query, QueryTask, Point, SpatialReference, Geoprocessor]) => {\r\n if (config && config.url) {\r\n var gp = new Geoprocessor(config.url);\r\n gp.execute({}, displayTrack);\r\n function displayTrack(results, messages) {\r\n console.log(results)\r\n // //do something with the results\r\n // var features = results[0].value.features;\r\n }\r\n } else {\r\n resolve({ customerrormessage: 'no url present for query' });\r\n }\r\n })\r\n\r\n })\r\n\r\n}\r\n\r\n// async function GetProcessAsync(config, querycondition, spatialReference){\r\n// var attr = await attributes(config, querycondition, spatialReference);\r\n\r\n// async function attributes(config, querycondition, spatialReference){\r\n// loadModules([\r\n// \"esri/tasks/support/Query\", \"esri/tasks/QueryTask\",\"esri/geometry/Point\",\"esri/geometry/SpatialReference\"\r\n// ]).then(([Query, QueryTask,Point,SpatialReference]) => {\r\n// if(config && config.url){\r\n\r\n// const query = new Query();\r\n// if(querycondition)\r\n// query.where = querycondition;\r\n\r\n// query.outFields = ['*'];\r\n// query.units = 'feet';\r\n// query.returnGeometry = true;\r\n// const queryTask = new QueryTask({\r\n// url: config.url\r\n// });\r\n// var response = queryTask.execute(query);\r\n// var fs = await response.promise;\r\n// return fs;\r\n// }\r\n// })\r\n// };\r\n// console.log(attr)\r\n\r\n// }\r\n\r\n\r\nexport function QueryTaskExecuteZoomToReponse(view, config, queryexpression, mapConstants, zoom, spatialReference, queryField = \"SearchField\") {\r\n return new Promise((resolve, reject) => {\r\n if (!loadModules) {\r\n reject('QueryTaskExecuteZoomToRepons: ArcGIS API is not loaded');\r\n return;\r\n }\r\n if (queryexpression == null || queryexpression == \"\" || queryexpression == \"1!=1\") {\r\n resolve({ \"Message\": \"Invalid Expression\" });\r\n }\r\n else {\r\n if (queryexpression != null && queryexpression != \"\") {\r\n // Specific to AMES project.\r\n if (queryexpression != undefined && queryexpression != null && queryexpression != \"\") {\r\n let queryParams = queryexpression.split(\",\");\r\n let geometries = [];\r\n let resultgraphics = [];\r\n let queryPrimaryParam = queryParams && queryParams.length > 0 ? queryParams[0] : null\r\n let queryParamsStr = ''\r\n for (var i = 0; i < queryParams.length; i++) {\r\n if (queryParamsStr === \"\") {\r\n if (queryParams[i] && queryParams[i] != null)\r\n queryParamsStr = \"'\" + queryParams[i] + \"'\";\r\n } else {\r\n if (queryParams[i] && queryParams[i] != null)\r\n queryParamsStr = queryParamsStr + \",'\" + queryParams[i] + \"'\";\r\n }\r\n }\r\n let queryFieldName = config[queryField];\r\n let querycondition = queryFieldName + \" in (\" + queryParamsStr + \")\";\r\n\r\n let layer = view.map.layers.find(function (layer) {\r\n return layer.title === \"Highlight Layer\";\r\n });\r\n console.log('QueryTaskExecuteZoomToReponse---------');\r\n QueryTask(config, querycondition, spatialReference).then(\r\n response => {\r\n if (response && response.features) {\r\n loadModules([\r\n \"esri/Graphic\",\r\n \"esri/layers/GraphicsLayer\",\r\n \"esri/layers/FeatureLayer\",\r\n \"esri/PopupTemplate\"\r\n ]).then(([Graphic, GraphicsLayer, FeatureLayer, PopupTemplate]) => {\r\n if (!layer) {\r\n layer = new GraphicsLayer({\r\n //\"title\": \"Tax Parcel Graphic Layer\", listMode: 'hide'\r\n \"title\": \"Highlight Layer\", listMode: 'hide'\r\n });\r\n }\r\n layer.graphics.removeAll();\r\n response.features.forEach(function (item, index) {\r\n if (item && item.geometry && item.geometry.centroid) {\r\n let center = item.geometry.centroid;\r\n setCenterforMapviewNoFlag(view, parseFloat(center.x), parseFloat(center.y), spatialReference);\r\n }\r\n geometries.push(item.geometry);\r\n let g = new Graphic({\r\n geometry: item.geometry,\r\n attributes: item.attributes,\r\n symbol: (queryPrimaryParam && queryPrimaryParam == item.attributes[queryFieldName]) ? mapConstants.PolygonFillSymbol : mapConstants.PolygonFillSymbolSecondary\r\n });\r\n resultgraphics.push(g);\r\n if (layer.graphics)\r\n layer.graphics.add(g);\r\n });\r\n if (geometries.length > 0) {\r\n if (geometries.length > 1) {\r\n GeometryEngineTask({ \"geometries\": geometries, \"type\": \"union\" }).then(\r\n GeomEngineresponse => {\r\n if (GeomEngineresponse && GeomEngineresponse.centroid)\r\n CenterAndZoom(view, GeomEngineresponse.centroid, zoom);\r\n },\r\n GeomEngineerror => {\r\n // console.log(GeomEngineerror);\r\n });\r\n } else if (geometries.length === 1) {\r\n CenterAndZoom(view, geometries[0], zoom);\r\n }\r\n }\r\n view.map.layers.add(layer, 0);\r\n //Set geom information to MAPConstanstans, process further for simplified zoom levels and search\r\n resolve({ \"Message\": geometries.length + \" Search Completed\", graphics: geometries });\r\n });\r\n }\r\n else {\r\n resolve({ \"Message\": \"Search Completed\" });\r\n }\r\n },\r\n error => {\r\n console.log(error);\r\n reject({ \"error\": error });\r\n }\r\n );\r\n\r\n }\r\n }\r\n\r\n }\r\n });\r\n};\r\n\r\n\r\nexport function CenterAndZoomWithUnionPointZoom(view, graphics, defaultZoom) {\r\n if (graphics && graphics.length > 0) {\r\n if (graphics.length > 1) {\r\n GeometryEngineTask({ geometries: graphics, type: \"unionpointzoom\" })\r\n .then((GeomEngineresponse) => {\r\n if (GeomEngineresponse) {\r\n if (GeomEngineresponse.extent)\r\n CenterAndZoom(view, GeomEngineresponse.extent); \r\n else if (GeomEngineresponse.centroid)\r\n CenterAndZoom(view, GeomEngineresponse.centroid, defaultZoom);\r\n }\r\n },\r\n (GeomEngineerror) => {\r\n console.log(GeomEngineerror);\r\n }\r\n );\r\n } else if (graphics.length === 1) {\r\n CenterAndZoom(view, graphics[0], defaultZoom);\r\n }\r\n }\r\n}\r\n\r\n\r\nexport function QueryTaskExecuteZoomAddLayerToResponse(view, options, config, feature, mapConstants,\r\n queryField = \"SearchField\", zoomonly = false) {\r\n return new Promise((resolve, reject) => {\r\n let zoom = options.viewProperties.zoom;\r\n let spatialReference = options.viewProperties.extent.spatialReference;\r\n\r\n if (!loadModules) {\r\n reject('QueryTaskExecuteZoomToRepons: ArcGIS API is not loaded');\r\n return;\r\n }\r\n let queryParams = []\r\n let selectedLayer = options.SelectLayerListOptions.find(a => a.Url.includes(config.url));\r\n let selectedfield = selectedLayer.SelectField; \r\n if(selectedLayer){ \r\n if (feature.attributes && feature.attributes[selectedfield]) {\r\n queryParams = feature.attributes[selectedfield] ? feature.attributes[selectedfield].toString().split(\",\"):[];\r\n }\r\n } \r\n let geometries = [];\r\n let queryParamsStr = ''\r\n for (var i = 0; i < queryParams.length; i++) {\r\n if (queryParamsStr === \"\") {\r\n if (queryParams[i] && queryParams[i] != null)\r\n queryParamsStr = \"'\" + queryParams[i] + \"'\";\r\n } else {\r\n if (queryParams[i] && queryParams[i] != null)\r\n queryParamsStr = queryParamsStr + \",'\" + queryParams[i] + \"'\";\r\n }\r\n }\r\n\r\n loadModules([\"esri/Graphic\",\r\n \"esri/layers/GraphicsLayer\",\r\n \"esri/layers/FeatureLayer\",\r\n \"esri/PopupTemplate\"\r\n ]).then(([Graphic, GraphicsLayer, FeatureLayer, PopupTemplate]) => {\r\n //Adding only feature layer for taxlot\r\n let premaplayer = view.map.layers.find(function (layer) {\r\n return layer.title === \"Taxlot selector\";\r\n });\r\n view.map.layers.remove(premaplayer);\r\n let maplayer = new FeatureLayer({\r\n title: 'Taxlot selector',\r\n url: config.url,\r\n visible: true\r\n })\r\n let rendereruniqueValueInfos = []; \r\n if (!zoomonly) {\r\n queryParams.map((taxlotval, indx) => {\r\n let uniqvalObj = { value: taxlotval, symbol: mapConstants.PolygonFillSymbol, label: selectedfield };\r\n let primaryObjIndex = options.FieldsData.findIndex((obj => obj.Fieldkey === \"PRIMARY_TAX_PARCEL_IDS\"));\r\n if(primaryObjIndex > 0){\r\n var primaryrecordsel = options.FieldsData[primaryObjIndex].FieldValue;\r\n //console.log('primarly selected record-------------', primaryrecordsel);\r\n if(primaryrecordsel && primaryrecordsel===taxlotval){\r\n uniqvalObj = { value: primaryrecordsel, symbol: mapConstants.PolygonFillSymbolSecondary, label: selectedfield };\r\n }\r\n }else{\r\n if (indx == (queryParams.length - 1))\r\n uniqvalObj = { value: taxlotval, symbol: mapConstants.PolygonFillSymbolSecondary, label: selectedfield };\r\n }\r\n rendereruniqueValueInfos.push(uniqvalObj);\r\n })\r\n }\r\n\r\n const highlightrenderer = {\r\n type: \"unique-value\",\r\n defaultLabel: selectedfield,\r\n field: selectedfield,\r\n defaultSymbol: {\r\n type: \"simple-fill\",\r\n color: [255, 255, 153, 0.01],\r\n style: 'solid',\r\n outline: {\r\n type: \"simple-line\",\r\n color: '#09eb3a',\r\n width: \"2px\",\r\n style: \"solid\"\r\n }\r\n },\r\n uniqueValueInfos: rendereruniqueValueInfos\r\n };\r\n maplayer.renderer = highlightrenderer;\r\n\r\n maplayer.when(function () {\r\n maplayer.renderer.symbol.outline.color = '#09eb3a';\r\n });\r\n // //Add template\r\n // let popupTemplate = new PopupTemplate({\r\n // title: 'Select Primary Taxlot ( {MapTaxlot} )',\r\n // content: (evt) => PrimaryChangeContent(evt, view,options)\r\n // });\r\n // maplayer.popupTemplate = popupTemplate;\r\n\r\n view.map.layers.add(maplayer, view.map.layers.length - 2);\r\n if (feature && feature.geometry && zoomonly)\r\n CenterAndZoom(view, feature.geometry, zoom);\r\n\r\n //Set geom information to MAPConstanstans, process further for simplified zoom levels and search\r\n resolve({ \"Message\": geometries.length + \" Search Completed\", graphics: geometries });\r\n })\r\n });\r\n};\r\n\r\nfunction PrimaryChangeContent(evt, view, options) {\r\n console.log(evt, this);\r\n let selection = options.tasks.TaxParcels;\r\n var node = document.createElement(\"div\");\r\n let chk = document.createElement(\"input\");\r\n chk.type = \"checkbox\";\r\n chk.onclick = (evt1) => onPrimaryChage(view, evt.graphic.attributes);\r\n chk.id = \"primarycheck_id\";\r\n\r\n node.appendChild(chk);\r\n let brek = document.createElement(\"br\");\r\n let bold = document.createElement(\"b\");\r\n let lable = document.createElement(\"label\");\r\n lable.for = \"primarycheck_id\";\r\n lable.innerHTML = \" Is Primary Taxlot\";\r\n bold.appendChild(lable);\r\n node.appendChild(bold);\r\n node.appendChild(brek);\r\n node.appendChild(brek);\r\n\r\n let lablebody = document.createElement(\"label\");\r\n lablebody.innerHTML = \"Pre Selected taxlots are : \" + (selection.queryexpression ? selection.queryexpression : \"NA\");\r\n node.appendChild(lablebody);\r\n\r\n return node;\r\n}\r\n\r\nfunction GetSelectedTaxlots(view, options) {\r\n console.log(options);\r\n\r\n}\r\n\r\nfunction onPrimaryChage(view, selection) {\r\n console.log(view, selection);\r\n alert('Changed to primary' + selection)\r\n return true;\r\n}\r\n\r\nexport function TaxlotLayerListner(view) {\r\n try {\r\n view.on(\"click\", function (event) {\r\n view.hitTest(event).then(function (response) {\r\n console.log('all features at this point---', response);\r\n if (Array.isArray(response.results) && response.results.length > 0) {\r\n // Check for any taxlot layers data present on hit test\r\n let taxlots = response.results.filter(a => a.graphic.layer.title = \"Taxlot selector\");\r\n console.log(taxlots.results)\r\n }\r\n })\r\n })\r\n } catch (error) {\r\n console.log(error)\r\n }\r\n}","/**\r\n *********************************************************\r\n Description: Creates drawer on the left side. Needs to be modified to make it generic.\r\n Required props: Used internally by other components.\r\n limitations : N/A\r\n *********************************************************\r\n**/\r\nimport { AppBar, Toolbar } from \"@material-ui/core\";\r\nimport Drawer from '@material-ui/core/Drawer';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport SendIcon from '@material-ui/icons/Send';\r\nimport React, { Component, Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { bindActionCreators } from 'redux';\r\nimport ConfirmationDialog from \"../confirmationPopup\";\r\nimport { snackbarMessage } from '../../../actions';\r\nimport { getEnvVariable } from '../../../../modules/environmentalList';\r\nimport ProgressBar from '../../../modules/progress-bar';\r\nimport Template from '../../../modules/template/template';\r\nimport { createRequest, requestApi } from '../../helpers/rest';\r\n\r\n\r\nconst styles = theme => ({\r\n paperAnchorRight: {\r\n top: 'auto',\r\n maxHeight: '100%',\r\n width: '70%'\r\n },\r\n root: {\r\n width: '70%'\r\n }\r\n});\r\n\r\nclass NotificationEditor extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n open: this.props.openNotificationSlide,\r\n subject: '',\r\n recordDetails: [],\r\n eventDetails: [],\r\n internalNotificationTemplate: {},\r\n externalNotificationTemplate: {},\r\n isNotificationSent: false,\r\n confirmOpen: false,\r\n hasError: false,\r\n isSuccess: false\r\n }\r\n this.TemplateForm = React.createRef()\r\n }\r\n\r\n componentDidMount() {\r\n this.getLatestRecordDataDictionary();\r\n }\r\n\r\n\r\n getLatestRecordDataDictionary() {\r\n let siteid = this.props.sitepermittypeid || (this.props.sitePermitTypeId) || (this.props.history && this.props.match.params.routeid)\r\n let recordid = this.props.recordid || (this.props.history && this.props.match.params.routeid1)\r\n // let includeRecordData = this.props.includeRecordData || false;\r\n let SideBarDataItems = {}\r\n let sideBarItems = this.props.sideBarItems;\r\n sideBarItems && sideBarItems.forEach(element => {\r\n if (this.props.childTable)\r\n SideBarDataItems[element] = this.props.childTable.Id\r\n });\r\n let body = {\r\n 'sitePermitTypeId': siteid,\r\n 'masterTableId': recordid,\r\n 'SideBarDataItems': this.props.ParentValues ? {} : SideBarDataItems,\r\n 'sideBarItems': sideBarItems || [],\r\n // 'includeRecordData': includeRecordData,\r\n 'Values': this.props.ParentValues || '',\r\n 'Info': this.props.ParentTableName || ''\r\n }\r\n let applicationdataurl = {\r\n url: getEnvVariable('Application') + `/api/Application/FieldValues`,// /${siteid}/${recordid}`,\r\n type: 'post',\r\n alert: true\r\n }\r\n requestApi(createRequest(applicationdataurl, body)).then(results => {\r\n if (results) {\r\n this.setState({\r\n recordDetails: results\r\n }, () => {\r\n if (this.props.isFieldValueChange && this.props.isFieldValueChange === true) {\r\n this.getLastUpdatedFieldRecords()\r\n } else {\r\n this.getPossibleNotifications()\r\n }\r\n })\r\n }\r\n\r\n })\r\n }\r\n\r\n\r\n getLastUpdatedFieldRecords() {\r\n let newurl = {\r\n url: getEnvVariable('Application') + `/api/application/lastUpdatedRecordFields/${this.props.sitepermittypeid || (this.props.sitePermitTypeId)}/${this.props.recordid}`,\r\n type: 'get',\r\n // alert: true,\r\n // loader: true\r\n }\r\n // let newurl = getEnvVariable('Application')+`/api/application/lastUpdatedRecordFields/${this.props.sitepermittypeid}/${this.props.recordid}`;\r\n //requestApi({ get: { url: newurl, routeProps: {} } }, null)\r\n requestApi(createRequest(newurl)).then(results => {\r\n if (results) {\r\n this.setState({\r\n eventDetails: results\r\n }, () => this.getPossibleNotifications())\r\n }\r\n })\r\n }\r\n\r\n getPossibleNotifications() {\r\n // let getPossibleNotificationURL = getEnvVariable('Notification')+`/api/NotificationTrigger/PossibleNotifications`\r\n let eventDetails = {\r\n SubModuleKey: (this.props.childTable && this.props.childTable.key) || '',\r\n SitePermitTypeId: this.props.sitepermittypeid || (this.props.sitePermitTypeId),\r\n EventId: this.props.recordid,\r\n EventOnKey: this.props.eventonkey, // || 'FIELD_VALUE_CHANGE',//'FIELD_VALUE_CHANGE',\r\n EventDetails: this.state.eventDetails,\r\n DataDictionary: this.state.recordDetails,\r\n id: this.props.id\r\n }\r\n let requrl = {\r\n url: getEnvVariable('Hangfire') + `/api/NotificationTrigger/PossibleNotifications`,\r\n type: 'post',\r\n alert: true,\r\n loader: true\r\n }\r\n // requestApi({ post: { url: getPossibleNotificationURL, routeProps: {} } }, null, eventDetails)\r\n\r\n requestApi(createRequest(requrl, eventDetails)).then(results => {\r\n if (results && results.length > 0) {\r\n let internal = []\r\n internal = results.filter(a => {\r\n if (a.UseType === \"I\" && (((typeof this.props.id === 'string') ? a.NotificationSettingId.toString() : a.NotificationSettingId) === this.props.id))\r\n return a\r\n })\r\n let external = []\r\n external = results.filter(a => {\r\n if (a.UseType === \"E\"\r\n && (((typeof this.props.id === 'string') ? a.NotificationSettingId.toString() : a.NotificationSettingId) === this.props.id))\r\n return a\r\n })\r\n this.setState({\r\n internalNotificationTemplate: internal[0],\r\n externalNotificationTemplate: external[0]\r\n });\r\n //this.progressBar.complete()\r\n } else {\r\n this.setState({ hasError: true });\r\n }\r\n })\r\n }\r\n\r\n handleClose = () => {\r\n if (!this.state.isNotificationSent) {\r\n this.setState({ open: false }, () => {\r\n if (this.props.handleNotificationClose)\r\n this.props.handleNotificationClose(true);\r\n })\r\n // this.setState({ confirmOpen: true })\r\n } else {\r\n this.setState({ open: false }, () => {\r\n if (this.props.handleNotificationClose)\r\n this.props.handleNotificationClose(true);\r\n else\r\n this.setState({ isSuccess: true })\r\n })\r\n\r\n }\r\n\r\n }\r\n\r\n handleSave = () => {\r\n this.TemplateForm.current.GetTemplateFormats();\r\n }\r\n\r\n templateEditorSave(returnid) {\r\n // Not required, not saving template records\r\n }\r\n\r\n templateFormatsCallBack(inthis, template) {\r\n console.log(inthis, template);\r\n inthis.triggerManualNotification(template)\r\n }\r\n\r\n triggerManualNotification(templateformat) {\r\n let url = getEnvVariable('Hangfire') + `/api/NotificationTrigger/RaiseManualEventNotifications`\r\n let NotificationTemplateModel = [];\r\n let internal = this.state.internalNotificationTemplate\r\n if (internal && internal.NotificationSettingId && internal.NotificationSettingId > 0 && templateformat) {\r\n internal.NotificationSubject = templateformat.subject;\r\n internal.NotificationContentHTML = templateformat.fileContentHTML;\r\n internal.RefId = this.props.recordid;\r\n NotificationTemplateModel.push(this.state.internalNotificationTemplate)\r\n }\r\n let reqtriggerurl = {\r\n url: getEnvVariable('Hangfire') + `/api/NotificationTrigger/RaiseManualEventNotifications`,\r\n type: 'post',\r\n // alert: true,\r\n loader: true\r\n }\r\n if (NotificationTemplateModel.length > 0) {\r\n // requestApi({ post: { url: url, routeProps: {} } }, null, NotificationTemplateModel)\r\n requestApi(createRequest(reqtriggerurl, NotificationTemplateModel)).then(results => {\r\n if (results) {\r\n this.setState({ isNotificationSent: true }, () => {\r\n this.handleClose();\r\n })\r\n }\r\n })\r\n }\r\n }\r\n\r\n confirmSave(inthis) {\r\n inthis.setState({ open: false, confirmOpen: false })\r\n\r\n if (inthis.props.handleNotificationClose)\r\n inthis.props.handleNotificationClose();\r\n else\r\n this.setState({ isSuccess: true })\r\n\r\n }\r\n\r\n confirmClose(inthis) {\r\n inthis.setState({ confirmOpen: false })\r\n }\r\n\r\n render() {\r\n const { classes } = this.props\r\n const { open, confirmOpen, internalNotificationTemplate, externalNotificationTemplate, recordDetails, hasError, isSuccess } = this.state\r\n return (\r\n <Fragment>\r\n <Drawer\r\n open={open}\r\n anchor=\"right\"\r\n classes={{\r\n paperAnchorRight: classes.paperAnchorRight,\r\n root: classes.root\r\n }} onClose={this.handleClose}>\r\n <AppBar position=\"sticky\" color='secondary'>\r\n <Toolbar variant=\"dense\">\r\n Send Notification\r\n <div className='flex-grow-1' />\r\n <div>\r\n <i className=\"\" onClick={this.handleSave} >\r\n <IconButton title=\"Send\" color=\"inherit\">\r\n <SendIcon fontSize=\"small\" />\r\n </IconButton>\r\n </i>\r\n <i className=\"\" onClick={this.handleClose} >\r\n <IconButton title=\"Close\" color=\"inherit\">\r\n <CloseIcon fontSize=\"small\" />\r\n </IconButton>\r\n </i>\r\n </div>\r\n </Toolbar>\r\n </AppBar>\r\n <div> <ProgressBar ref={e => this.progressBar = e} /></div>\r\n <div className=\"col-12\">\r\n <Typography variant=\"subtitle2\" gutterBottom>\r\n Following notification content is generated based on settings. You can modify notification subject and body before sending.\r\n </Typography>\r\n {hasError && <div style={{ color: 'red' }}> No related notification settings found</div>}\r\n {isSuccess && <div style={{ color: 'green' }}> ****************************Notification sent successfully !!**********************************</div>}\r\n <Template ref={this.TemplateForm}\r\n handleTemplateId={this.templateEditorSave}\r\n entryData={recordDetails}\r\n // parentid={this.props.recordid || 0}\r\n isAdmin={false}\r\n templateId={getEnvVariable('AccessPortal') === 'I' ? (internalNotificationTemplate &&\r\n internalNotificationTemplate.TemplateId) ? internalNotificationTemplate.TemplateId :\r\n (externalNotificationTemplate && externalNotificationTemplate.TemplateId ? externalNotificationTemplate.TemplateId : 0) : 0}\r\n isEnabled={getEnvVariable('AccessPortal') === 'E' ? false : true}\r\n hasSubject={true}\r\n templateFormatsCallBack={(data) => this.templateFormatsCallBack(this, data)}\r\n canDownload={false}\r\n //refType={this.props.refType}\r\n // refId={this.props.id || 0}\r\n />\r\n {confirmOpen && <ConfirmationDialog open={true}\r\n description={\"Are you sure, you don't want to send this notification ? \"}\r\n title={\"Cancel sending notification\"}\r\n onSubmit={() => this.confirmSave(this)}\r\n onClose={() => this.confirmClose(this)}\r\n labels={[\"Don't Send\", \"Cancel\"]}\r\n />}\r\n\r\n </div>\r\n </Drawer>\r\n </Fragment>\r\n )\r\n }\r\n\r\n}\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage }, dispatch);\r\n}\r\n\r\nNotificationEditor = connect(null, mapActions)(NotificationEditor)\r\nNotificationEditor = withStyles(styles)(NotificationEditor);\r\nexport default (withRouter)(NotificationEditor);","import { getEnvVariable } from \"../../modules/environmentalList\";\r\n\r\nexport const getToken = () => {\r\n let token = localStorage.getItem('token') || null;\r\n if (!token)\r\n token = getEnvVariable('AccessPortal') === 'I' ? localStorage.getItem('internaltoken') : localStorage.getItem('externaltoken');\r\n return token || null\r\n}\r\n\r\nfunction getCookie(cname) {\r\n let name = cname + \"=\";\r\n let decodedCookie = decodeURIComponent(document.cookie);\r\n let ca = decodedCookie.split(';');\r\n for (let i = 0; i < ca.length; i++) {\r\n let c = ca[i];\r\n while (c.charAt(0) == ' ') {\r\n c = c.substring(1);\r\n }\r\n if (c.indexOf(name) == 0) {\r\n return c.substring(name.length, c.length);\r\n }\r\n }\r\n return \"\";\r\n}\r\n\r\nexport const GetHeaders = (urlencoded = false, noHeader = false) => {\r\n var token = getToken()\r\n let headers = {};\r\n let IWAAUTH = localStorage.getItem('IWAAUTH')\r\n if ((window.location && window.location.href.includes('Record')) || IWAAUTH) {\r\n headers = {}\r\n }\r\n if (token && IWAAUTH !== 'Y') {\r\n headers['Authorization'] = token\r\n headers['Cache-Control'] = 'no-store,no-cache'\r\n headers['Pragma'] = 'no-cache'\r\n if (urlencoded) {\r\n headers['Content-Type'] = 'application/x-www-form-urlencoded'\r\n } else {\r\n if (!noHeader) {\r\n headers['Content-Type'] = 'application/json';\r\n headers['accept'] = '*/*';\r\n }\r\n }\r\n }\r\n else {\r\n if (urlencoded) {\r\n headers['Content-Type'] = 'application/x-www-form-urlencoded'\r\n }\r\n }\r\n return headers\r\n}\r\n\r\nexport const GetFetchProps = (urlencoded = false, noHeader = false) => {\r\n let fetchProps = {};\r\n let IWAAUTH = localStorage.getItem('IWAAUTH')\r\n if (IWAAUTH === 'Y') {\r\n fetchProps['mode'] = 'cors'\r\n fetchProps['headers'] = GetHeaders(urlencoded)\r\n fetchProps['credentials'] = 'include'\r\n }\r\n else {\r\n // fetchProps['mode'] = 'cors'\r\n fetchProps['headers'] = GetHeaders(urlencoded, noHeader)\r\n }\r\n return fetchProps\r\n}\r\n\r\nexport const getSignInToken = () => {\r\n let token = localStorage.getItem('token');\r\n if (!token) {\r\n token = getToken();\r\n }\r\n return token || null\r\n}\r\n\r\n\r\nexport const getBasePath = () => {\r\n var basePath = process.env.REACT_APP_basePath;\r\n if (getEnvVariable('IsBasePath') === 'Y') {\r\n if (getEnvVariable('AccessPortal') === 'I') {\r\n basePath = ((getEnvVariable('InternalBasepath') && getEnvVariable('InternalBasepath')) || '/AMES-UI-Internal/#/');\r\n }\r\n else {\r\n basePath = getEnvVariable('ExternalBasepath') && getEnvVariable('ExternalBasepath') || '/AMES-UI-External/#/';\r\n }\r\n }\r\n return basePath\r\n}\r\n\r\nexport const getAccessById = (SiteId) => {\r\n let profile = JSON.parse(localStorage.getItem('profile'));\r\n if (profile && profile.isAdmin == 'Y') {\r\n return true\r\n }\r\n else {\r\n\r\n if (SiteId && SiteId != '-1') {\r\n let accesskeys = getAccess()\r\n let access = profile && Object.keys(accesskeys).find(e => e === SiteId)\r\n if (accesskeys[access] === 'Add')\r\n return true\r\n else if (access === 'Read')\r\n return false\r\n }\r\n else return false\r\n\r\n }\r\n}\r\n\r\nexport const getAccessKeys = () => {\r\n // and if ConfigType is S then use ModuleSiteAccess\r\n // and if ConfigType is R then use moduleRegionAccess\r\n // and if ConfigType is D then use ModuleDistrictAccess to restrict access level in ames record and side bar\r\n let profile = JSON.parse(localStorage.getItem('profile'));\r\n const { configType } = profile\r\n if (configType === 'D')\r\n return profile.ModuleDistrictAccess[Object.keys(profile.ModuleDistrictAccess)[0]]\r\n if (configType === 'R')\r\n return profile.moduleRegionAccess[Object.keys(profile.moduleRegionAccess)[0]]\r\n if (configType === 'S')\r\n return profile.ModuleSiteAccess[Object.keys(profile.ModuleSiteAccess)[0]]\r\n}\r\n\r\nexport const getAccess = () => {\r\n // and if ConfigType is S then use ModuleSiteAccess\r\n // and if ConfigType is R then use moduleRegionAccess\r\n // and if ConfigType is D then use ModuleDistrictAccess to restrict access level in ames record and side bar\r\n let profile = JSON.parse(localStorage.getItem('profile'));\r\n const { configType } = profile\r\n if (configType === 'D')\r\n return profile.moduleDistrictAccess\r\n if (configType === 'R')\r\n return profile.moduleRegionAccess\r\n if (configType === 'S')\r\n return profile.moduleSiteAccess\r\n}","import { loadModules } from 'esri-loader';\r\nimport { QueryTask, CenterAndZoom } from '../util/queryTask';\r\nimport { GeometryEngineTask } from '../util/geometryEngineTask';\r\nimport { GISLookupTask, GISLookupTaskWithGeom } from './GISLookupTask'\r\nimport MapConstants from '../util/mapConstants'\r\n\r\nexport function GetLookUpValues(coordinates, lookupFieldsData){\r\n return new Promise((resolve, reject) => {\r\n loadModules([\r\n \"esri/layers/GraphicsLayer\",\r\n \"esri/Graphic\",\r\n \"esri/geometry/Point\",\r\n \"esri/geometry/Multipoint\",\r\n 'esri/geometry/Polyline',\r\n 'esri/geometry/Polygon',\r\n 'esri/symbols/PictureMarkerSymbol', 'esri/geometry/SpatialReference',\r\n \"esri/layers/FeatureLayer\"\r\n ]).then(([GraphicsLayer, Graphic, Point, Multipoint, Polyline, Polygon,\r\n PictureMarkerSymbol, SpatialReference, FeatureLayer]) => {\r\n let xCenter = coordinates.X //5283726.000121132,\r\n let yCenter = coordinates.Y //3905064.999991983\r\n let spatialReference = new SpatialReference(102763);\r\n let geomPt = new Point(xCenter, yCenter,spatialReference);\r\n GISLookupTaskWithGeom([geomPt], lookupFieldsData).then(function (lookupDataresult) {\r\n resolve(lookupDataresult);\r\n })\r\n })\r\n })\r\n}\r\n\r\n\r\nexport function GetMasterLookUpValues(view, graphic){\r\n return new Promise((resolve, reject) => {\r\n loadModules([\r\n \"esri/layers/GraphicsLayer\",\r\n \"esri/Graphic\",\r\n \"esri/geometry/Point\",\r\n \"esri/geometry/Multipoint\",\r\n 'esri/geometry/Polyline',\r\n 'esri/geometry/Polygon',\r\n 'esri/symbols/PictureMarkerSymbol', 'esri/geometry/SpatialReference',\r\n \"esri/layers/FeatureLayer\"\r\n ]).then(([GraphicsLayer, Graphic, Point, Multipoint, Polyline, Polygon,\r\n PictureMarkerSymbol, SpatialReference, FeatureLayer]) => {\r\n resolve({'DISTRICT_ID' :'', 'COUNTY_ID':'', 'REGION_ID':'' })\r\n })\r\n })\r\n}\r\n\r\nexport function GetMasterGISFieldsData(options, geom) {\r\n return new Promise((resolve, reject) => {\r\n let lookupdata = options.MasterLookupFields;\r\n console.log('lookup data', lookupdata);\r\n if (lookupdata && lookupdata.length > 0) {\r\n if (geom) {\r\n GISLookupTask(options, geom, lookupdata).then((masterdataresponse) => {\r\n resolve(masterdataresponse)\r\n //inThis.props.setStateMapInformation(mapinformation);\r\n })\r\n }else{ resolve({}) }\r\n }else{\r\n resolve({})\r\n }\r\n })\r\n}\r\n\r\n\r\n","import Breadcrumbs from '@material-ui/core/Breadcrumbs';\r\nimport Icon from '@material-ui/core/Icon';\r\nimport Link from '@material-ui/core/Link';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport withWidth from '@material-ui/core/withWidth';\r\nimport React from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n link: {\r\n display: 'flex',\r\n },\r\n icon: {\r\n //marginRight: theme.spacing(0.5),\r\n width: 25,\r\n height: 22,\r\n fontSize: 25\r\n //marginRight: 2,\r\n },\r\n}));\r\n\r\nfunction IconBreadcrumbs(props) {\r\n const classes = useStyles();\r\n return (\r\n <nav aria-label=\"breadcrumb\">\r\n <ol className=\"breadcrumb p-0 pt-1\" style={{ backgroundColor: 'transparent !important' }}>\r\n {props.breadcrumbs && props.breadcrumbs.map((e, i) => {\r\n if (e.tab) localStorage.setItem('tab', e.tab);\r\n let path = ''\r\n if (e.href && e.href.routes) {\r\n if (Array.isArray(e.href.routes)) {\r\n e.href.routes.forEach(each => {\r\n const { route, routeParams, matchProps } = each\r\n if (routeParams) {\r\n path += route + \"/\" + props.match.params[routeParams]\r\n }\r\n else if (matchProps) {\r\n path += route + \"/\" + props.results[matchProps] //---correct: unused matchprops of results\r\n }\r\n else {\r\n path += route\r\n }\r\n })\r\n }\r\n }\r\n return <li className={e.className} key={String(i)}>\r\n {/*Updated By vijaya: Added Href condition, if we exists it will display like link or else it will displays like label. */}\r\n <Breadcrumbs aria-label=\"breadcrumb\" color={e.color || 'inherit'}>\r\n {(e.href) ? <Link color=\"inherit\" href={path !== '' ? path : e.href} className={classes.link}>\r\n <Icon className={classes.icon} style={{ fontSize: 20 }} > {e.materialicon}</Icon>\r\n {e.link}\r\n </Link> :\r\n <Typography color=\"inherit\" className={classes.link} style={{ color: e.color || 'inherit' }}>\r\n <Icon className={classes.icon} style={{ fontSize: 20 }} > {e.materialicon}</Icon>\r\n {e.link}\r\n </Typography>}\r\n </Breadcrumbs>\r\n\r\n </li>\r\n })}\r\n </ol>\r\n </nav>\r\n )\r\n\r\n}\r\nexport default withWidth()(withRouter(IconBreadcrumbs));\r\n\r\n","import React from \"react\"\r\nimport { Typography } from \"@material-ui/core\"\r\n\r\nexport default function Text(props) {\r\n const { title } = props\r\n return <Typography>\r\n {title}\r\n </Typography>\r\n}","import React from 'react';\r\nimport { getData, postRecordData, putRecordData } from '../rest';\r\nimport Drawer from '@material-ui/core/Drawer';\r\nimport DrawerContent from './dialogdrawercontent'\r\nimport { getEnvVariable } from '../../../modules/environmentalList';\r\n\r\nconst drawerWidth = 900;\r\nconst checkwidth = 960\r\n\r\nclass CustomizedDialogDemo extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n }\r\n state = {\r\n open: true,\r\n new: false,\r\n dialogOpen: true,\r\n anchorEl: null,\r\n width: window.innerWidth\r\n };\r\n\r\n updateDimensions = () => {\r\n if(window.innerWidth<checkwidth) {\r\n this.setState({ width: window.innerWidth});\r\n }\r\n };\r\n \r\n \r\n componentDidMount() {\r\n window.addEventListener('resize', this.updateDimensions);\r\n console.log(this.props.gridkey)\r\n this.setState({ dialogOpen: true }, () => {\r\n this.requestMaster()\r\n })\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener('resize', this.updateDimensions);\r\n }\r\n\r\n\r\n requestMaster = () => {\r\n let url = getEnvVariable('Report') + '/api/ReportMaster/All'\r\n getData(url).then(res => {\r\n let result = res.filter(e => {\r\n if (e.Key === 'SAVED_QUERIES') {\r\n return e\r\n }\r\n })\r\n this.setState({ masterreports: result })\r\n });\r\n\r\n }\r\n\r\n\r\n closeDialog = () => {\r\n this.setState({\r\n dialogOpen: false\r\n }, () => {\r\n if (this.props && this.props.close)\r\n this.props.close()\r\n })\r\n }\r\n\r\n\r\n render() {\r\n return (\r\n <div >\r\n {this.state.masterreports && this.state.masterreports.length > 0 &&\r\n <Drawer anchor=\"right\" open={(this.props && this.props.open) ? this.props.open : false} onClose={this.closeDialog} PaperProps={{ style: { width: this.state.width>1000? drawerWidth: this.state.width } }} >\r\n <DrawerContent {...this.props}/>\r\n </Drawer>\r\n }\r\n </div >\r\n );\r\n }\r\n}\r\n\r\nexport default CustomizedDialogDemo;","import React, { useRef, useEffect, useState } from 'react';\r\n//import './App.css';\r\nimport useDeepCompareEffect from 'use-deep-compare-effect'\r\nimport { getEnvVariable } from '../../../modules/environmentalList';\r\n\r\nexport default function TemplateView({ callBack, templateFormatsCallBack, setSubject, setAttachment,setReportsVal, ...props }) {\r\n const frameView = useRef(null);\r\n const [reload, setReload] = useState(false)\r\n\r\n useEffect(() => {\r\n const messageHandler = (message) => {\r\n if (getEnvVariable('TemplateURL') + ``.includes(message.origin)) {\r\n if (frameView.current && frameView.current.contentWindow) {\r\n console.log(message)\r\n if (message.data === 'Initialized')\r\n frameView.current.contentWindow.postMessage({ prop: { ...props } }, \"*\")\r\n if (message.data && message.data.messagetype === 'templateformat')\r\n templateFormatsCallBack(message.data)\r\n else if (message.data && message.data.messagetype === 'subject')\r\n setSubject(message.data)\r\n else if (message.data && message.data.id)\r\n callBack(message.data)\r\n else if (message.data && message.data.messagetype === 'attachments')\r\n setAttachment(message.data)\r\n else if (message.data && message.data.messagetype === 'reports')\r\n setReportsVal(message.data)\r\n else if (message.data && message.data.messagetype === 'validtemplate'){\r\n console.log(message.data);\r\n }\r\n\r\n }\r\n }\r\n }\r\n window.addEventListener('message', messageHandler)\r\n }, [])\r\n\r\n useDeepCompareEffect(() => {\r\n setTimeout(() => {\r\n if (frameView.current && frameView.current.contentWindow) {\r\n setReload(!reload)\r\n frameView.current.contentWindow.postMessage({ prop: { ...props } }, \"*\")\r\n }\r\n }, 400)\r\n\r\n }, [props])\r\n\r\n // useEffect(() => {\r\n // if (props.save && frameView.current && frameView.current.contentWindow) {\r\n // setReload(!reload)\r\n // frameView.current.contentWindow.postMessage({ prop: { ...props } }, \"*\")\r\n // }\r\n // }, [props.save])\r\n\r\n // useEffect(() => {\r\n // if (frameView.current && frameView.current.contentWindow) {\r\n // setReload(!reload)\r\n // frameView.current.contentWindow.postMessage({ prop: { ...props } }, \"*\")\r\n // }\r\n // }, [props.isEnabled])\r\n\r\n return (<div style={{ height: props.fullheight ? window.innerHeight : window.innerHeight - 210 }}>\r\n {reload}\r\n <iframe id='template-editor' src={getEnvVariable('TemplateURL') + ``} ref={frameView}\r\n frameBorder=\"0\"\r\n marginHeight=\"0\"\r\n marginWidth=\"0\"\r\n width=\"100%\"\r\n height=\"100%\"\r\n title='Template Editor'\r\n scrolling=\"auto\">\r\n </iframe>\r\n </div>)\r\n}\r\n\r\n// class Fancy extends React.Component {\r\n// constructor(props) {\r\n// super(props)\r\n// this.TemplateForm = React.createRef()\r\n// }\r\n\r\n// componentDidMount() {\r\n// }\r\n\r\n// saveTemplate = () => {\r\n// this.TemplateForm.current.saveTemplate();\r\n// }\r\n\r\n// GetTemplateFormats = () => {\r\n// this.TemplateForm.current.GetTemplateFormats();\r\n// }\r\n\r\n// render() {\r\n\r\n// return (\r\n// <div>\r\n// <SyncEditor ref={this.TemplateForm} {...this.props}/>\r\n\r\n// </div>\r\n// );\r\n// }\r\n// }\r\n\r\n// export default Fancy;\r\n\r\n\r\n","import AppBar from '@material-ui/core/AppBar';\r\nimport Box from '@material-ui/core/Box';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Select from '@material-ui/core/Select';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport Tabs from '@material-ui/core/Tabs';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport PropTypes from 'prop-types';\r\nimport React, { Component, Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { bindActionCreators } from 'redux';\r\nimport { setSectionsReload, snackbarMessage } from '../../core/actions';\r\nimport ConfirmationDialog from \"../../core/controls/components/confirmationPopup\";\r\nimport FormHeader from '../../core/modules/form/cformheader';\r\nimport { GetData, PutData } from '../../core/modules/form/formsapi';\r\nimport { requestApi } from '../../core/modules/form/utilities';\r\nimport { getEnvVariable } from '../../modules/environmentalList';\r\nconst _ = require('lodash');\r\n\r\nfunction TabPanel(props) {\r\n const { children, value, index, ...other } = props;\r\n\r\n return (\r\n <Typography\r\n component=\"div\"\r\n role=\"tabpanel\"\r\n hidden={value !== index}\r\n id={`scrollable-force-tabpanel-${index}`}\r\n aria-labelledby={`scrollable-force-tab-${index}`}\r\n {...other}\r\n >\r\n {value === index && <Box p={3}>{children}</Box>}\r\n </Typography>\r\n );\r\n}\r\n\r\nTabPanel.propTypes = {\r\n children: PropTypes.node,\r\n index: PropTypes.any.isRequired,\r\n value: PropTypes.any.isRequired,\r\n};\r\n\r\nfunction a11yProps(index) {\r\n return {\r\n id: `scrollable-force-tab-${index}`,\r\n 'aria-controls': `scrollable-force-tabpanel-${index}`,\r\n };\r\n}\r\n\r\nclass CWorkflow extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.isAdmin = this.props.options.params.isAdmin\r\n this.state = {\r\n options: this.props.options,\r\n SiteId: this.isAdmin && this.props && this.props.dataItem && this.props.dataItem['SiteId'] ? this.props.dataItem['SiteId'] : (this.props && this.props.extraProps && this.props.extraProps.SiteId ? this.props.extraProps.SiteId : null),\r\n RegionId: this.isAdmin && this.props && this.props.dataItem && this.props.dataItem['RegionId'] ? this.props.dataItem['RegionId'] : (this.props && this.props.extraProps && this.props.extraProps.RegionId ? this.props.extraProps.RegionId : null),\r\n DistrictId: this.isAdmin && this.props && this.props.dataItem && this.props.dataItem['DistrictId'] ? this.props.dataItem['DistrictId'] : (this.props && this.props.extraProps && this.props.extraProps.DistrictId ? this.props.extraProps.DistrictId : null),\r\n WorkflowId: this.isAdmin && this.props && this.props.dataItem && this.props.dataItem['WorkflowId'] ? this.props.dataItem['WorkflowId'] : (this.props && this.props.extraProps && this.props.extraProps.WorkflowId ? this.props.extraProps.WorkflowId : \"\"),\r\n //...this.props.options.params\r\n confirmationopen: false,\r\n workflowval: this.isAdmin && this.props && this.props.dataItem && this.props.dataItem['ParentWorkflowId'] ? this.props.dataItem['ParentWorkflowId'] : (this.props && this.props.extraProps && this.props.extraProps.ParentWorkflowId ? this.props.extraProps.ParentWorkflowId : \"\"),\r\n //---correct: duplicate use of same value: workflowappealval: this.isAdmin && this.props && this.props.dataItem && this.props.dataItem['ParentWorkflowId'] ? this.props.dataItem['ParentWorkflowId'] : (this.props && this.props.extraProps && this.props.extraProps.ParentWorkflowId ? this.props.extraProps.ParentWorkflowId : \"\"),\r\n workflowitems: [],\r\n disableddropdown: false,\r\n resetbutton: false,\r\n appealresetbutton: false,\r\n ParentWorkflowId: this.isAdmin && this.props && this.props.dataItem && this.props.dataItem['ParentWorkflowId'] ? this.props.dataItem['ParentWorkflowId'] : (this.props && this.props.extraProps && this.props.extraProps.ParentWorkflowId ? this.props.extraProps.ParentWorkflowId : \"\"),\r\n defaultworkflow: \"\",\r\n tabvalue: 0,\r\n workflowappealval: this.isAdmin && this.props && this.props.dataItem && this.props.dataItem['ParentAppealWorkflowId'] ? this.props.dataItem['ParentAppealWorkflowId'] : (this.props && this.props.extraProps && this.props.extraProps.ParentAppealWorkflowId ? this.props.extraProps.ParentAppealWorkflowId : \"\"),\r\n ParentWorkflowappealId: this.isAdmin && this.props && this.props.dataItem && this.props.dataItem['ParentAppealWorkflowId'] ? this.props.dataItem['ParentAppealWorkflowId'] : (this.props && this.props.extraProps && this.props.extraProps.ParentAppealWorkflowId ? this.props.extraProps.ParentAppealWorkflowId : \"\"),\r\n disabledappealdropdown: false,\r\n appealWorkflowId: this.isAdmin && this.props && this.props.dataItem && this.props.dataItem['AppealWorkflowId'] ? this.props.dataItem['AppealWorkflowId'] : (this.props && this.props.extraProps && this.props.extraProps.AppealWorkflowId ? this.props.extraProps.AppealWorkflowId : \"\"),\r\n // reloadWorkflowId: 0\r\n }\r\n this.configType = this.isAdmin ? this.props.accessPermissions.configType : this.props.extraProps.configType;\r\n this.configId = this.configType === 'R' ? this.state.RegionId : (this.configType === 'S' ? this.state.SiteId : (this.configType === 'D' ? this.state.DistrictId : '-1'));\r\n this.RoleRegionsurl = `/InternalAccessControlView/GetUserRoleConfigType/` + getEnvVariable('ModuleKey') + `/${this.configType}/?isAdmin=${this.isAdmin}&configIds=${this.configId}`;\r\n console.log(\"CWorkflow\", this.state)\r\n }\r\n\r\n paramvalue = (getvaluefromtype, paramname, value) => {\r\n switch (getvaluefromtype) {\r\n case 'route':\r\n return this.props.match.params[paramname]\r\n case 'value':\r\n case 'props':\r\n default: return value\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n //Load the the ID's based on the admin/application flow\r\n //var isAdmin = false;\r\n this.handleInitialState()\r\n\r\n }\r\n\r\n // componentDidUpdate(prevProps, prevState) {\r\n // if (prevProps.refresh !=== this.props.refresh) {\r\n // this.setState({ reloadWorkflowId: this.props.reloadWorkflowId }, () => {\r\n // this.props.snackbarMessage('Please wait, Information is reloading ', 'info')\r\n // this.handleInitialState()\r\n // })\r\n // }\r\n\r\n // }\r\n\r\n handleInitialState = () => {\r\n //Load the the ID's based on the admin/application flow\r\n //var isAdmin = false;\r\n const { options, extraProps } = this.props\r\n const { params } = options\r\n\r\n if (this.props && this.props.dataItem && this.props.dataItem.Id && (!this.state.SiteId || !this.state.RegionId || !this.state.DistrictId)) {\r\n let inforeadurl = {\r\n \"url\": getEnvVariable('AdminConfig') + `/api/SitePermitTypes/${this.props.dataItem.Id}`\r\n }\r\n requestApi({ get: inforeadurl }, '').then(res => {\r\n this.configId = this.configType === 'R' ? res.RegionId : (this.configType === 'S' ? res.SiteId : (this.configType === 'D' ? res.DistrictId : '-1'));\r\n this.RoleRegionsurl = `/InternalAccessControlView/GetUserRoleConfigType/` + getEnvVariable('ModuleKey') + `/${this.configType}/?isAdmin=${this.isAdmin}&configIds=${this.configId}`;\r\n this.setState({ SiteId: res.SiteId ? res.SiteId : null, RegionId: res.RegionId ? res.RegionId : null, DistrictId: res.DistrictId ? res.DistrictId : null })\r\n })\r\n }\r\n let tempparams = {}\r\n\r\n params && Object.keys(params).forEach(each => {\r\n if (typeof params[each] === 'object') {\r\n const { getvaluefromtype, paramname, value } = params[each]\r\n tempparams[each] = this.paramvalue(getvaluefromtype, paramname, value || (extraProps ? extraProps[paramname] : ''))\r\n }\r\n else tempparams[each] = params[each]\r\n })\r\n console.log('workflow params, extraProps---', tempparams, extraProps)\r\n //Load sitepermit types\r\n var sitepermittypeId\r\n if (this.isAdmin)\r\n sitepermittypeId = this.props.match.params && this.props.match.params.Id ? this.props.match.params.Id : (tempparams.SitePermitTypeId || this.props.dataItem['Id']);\r\n else\r\n sitepermittypeId = tempparams.SitePermitTypeId || this.props.extraProps.SitePermitTypeAppSettingsId;\r\n\r\n if (sitepermittypeId) {\r\n var sourceURL = getEnvVariable('AdminConfig') + `/api/SitePermitTypeAppSettings/${sitepermittypeId}/All`;\r\n //this.props.snackbarMessage('Please wait, Information is processing', 'info');\r\n GetData(sourceURL, \"\").then(results => {\r\n if (results && results.Id && results.Id > 0) {\r\n tempparams.SitePermitTypeAppSettingsId = results.Id;\r\n tempparams.sitepermittypeId = sitepermittypeId;\r\n this.setPageState(tempparams);\r\n } else {\r\n tempparams.SitePermitTypeAppSettingsId = -1;\r\n tempparams.sitepermittypeId = sitepermittypeId;\r\n this.setPageState(tempparams);\r\n }\r\n }).catch(ex => {\r\n console.log(ex);\r\n //this.props.snackbarMessage('Unable to process the workflow ', 'error')\r\n })\r\n\r\n } else {\r\n this.setPageState(tempparams);\r\n }\r\n }\r\n\r\n setPageState(tempparams) {\r\n this.setState({\r\n ...tempparams\r\n }, () => {\r\n if (this.isAdmin) {\r\n this.loadAdminflow();\r\n } else {\r\n this.loadMasterflow();\r\n }\r\n })\r\n }\r\n\r\n\r\n\r\n loadAdminflow() {\r\n const { sitepermittypeId } = this.state;\r\n var sourceURL = getEnvVariable('AdminConfig') + `/api/SitePermitTypeWorkflow/${sitepermittypeId}/All`;\r\n this.props.snackbarMessage('Please wait, Information is processing', 'info');\r\n GetData(sourceURL, \"\").then(results => {\r\n if (results && results.length > 0) {\r\n var firstResult = results[0];\r\n this.setState({ ...firstResult });\r\n }\r\n this.workflowprocessAdmin();\r\n }).catch(ex => {\r\n this.props.snackbarMessage('Unable to process the workflow ', 'error')\r\n })\r\n }\r\n\r\n loadMasterflow() {\r\n const { WorkflowId, appealWorkflowId, ParentWorkflowappealId, ParentWorkflowId, ApplicationID, sitepermittypeId /*sitePermitTypeId*/ } = this.state;\r\n var sourceURL = getEnvVariable('AdminConfig') + \"/api/SitePermitTypeWorkflow/\" + sitepermittypeId + `/${this.configId}/SitePermitWorkFlows`;\r\n if (sitepermittypeId && ApplicationID) {\r\n this.props.snackbarMessage('Please wait, Information is processing', 'info');\r\n GetData(sourceURL, \"\").then(results => {\r\n if (results && results.length > 0) {\r\n let defaultworkflowval = null\r\n let defaultworkflowitem = _.find(results, { IsDefault: 'Y' })\r\n defaultworkflowval = defaultworkflowitem ? defaultworkflowitem.WorkflowId : null\r\n let loadworkflow = WorkflowId === \"\" ? _.find(results, { IsDefault: 'Y' }) : ParentWorkflowId !== 0 ? _.find(results, { \"WorkflowId\": Number(ParentWorkflowId) }) : null\r\n var firstResult = loadworkflow ? loadworkflow : results[0];\r\n let loadappealworkflow = appealWorkflowId === \"\" ? _.find(results, { IsDefault: 'Y' }) : ParentWorkflowappealId !== 0 ? _.find(results, { \"WorkflowId\": Number(ParentWorkflowappealId) }) : null\r\n var firstappealResult = loadappealworkflow ? loadappealworkflow : results[0];\r\n this.setState({\r\n \"ParentWorkflowId\": WorkflowId ? WorkflowId : firstResult.WorkflowId, workflowitems: results, workflowval: loadworkflow ? firstResult.WorkflowId : \"\", disableddropdown: WorkflowId ? true : false, resetbutton: WorkflowId ? true : false, defaultworkflow: defaultworkflowval,\r\n \"ParentWorkflowappealId\": appealWorkflowId ? appealWorkflowId : firstappealResult.WorkflowId, workflowitems: results, workflowappealval: loadappealworkflow ? firstappealResult.WorkflowId : \"\", disabledappealdropdown: appealWorkflowId ? true : false, appealresetbutton: appealWorkflowId ? true : false, defaultworkflow: defaultworkflowval\r\n });\r\n } else {\r\n /* Loading workflow without default workflow */\r\n this.setState({ \"ParentWorkflowId\": 0, 'ParentWorkflowappealId': 0, disabledappealdropdown: false, disableddropdown: false, resetbutton: false, appealresetbutton: false, workflowval: \"\", workflowappealval: \"\" });\r\n }\r\n if (this.state.tabvalue === 0) {\r\n this.workflowprocessMain();\r\n }\r\n else {\r\n this.workflowAppealprocessMain();\r\n }\r\n\r\n }).catch(ex => {\r\n this.props.snackbarMessage('Unable to process the workflow ', 'error')\r\n })\r\n } else this.props.snackbarMessage('Unable to process the workflow ', 'error')\r\n }\r\n\r\n\r\n workflowprocessAdmin = () => {\r\n let inthis = this;\r\n const { WorkflowId, reloadWorkflowId, SitePermitTypeAppSettingsId, ApplicationID/*sitePermitTypeId*/, RegionId } = inthis.state;\r\n var isAdd = (WorkflowId) <= 0;\r\n\r\n if (typeof window.workflowObj !== \"undefined\") {\r\n //For administration save\r\n if (isAdd) {\r\n inthis.props.snackbarMessage('Please wait, Information is processing', 'info');\r\n window.workflowObj.render({\r\n isAdmin: inthis.isAdmin,\r\n el: \"#play\", userdata: inthis.RoleRegionsurl, success: function (e) {\r\n console.log(e);\r\n if (e.id) {\r\n let resultdata = {\r\n isDefault: 'N',\r\n }\r\n var sourceURL = getEnvVariable('AdminConfig') + \"/api/SitePermitTypeWorkflow/\" + SitePermitTypeAppSettingsId + \"/\" + e.id + \"/add\";\r\n let finalurl = { url: sourceURL }\r\n let url = { post: finalurl }\r\n requestApi(url, [], resultdata).then(response => {\r\n inthis.props.snackbarMessage('Workflow Saved Successfully', 'success')\r\n if (ApplicationID) { }\r\n //inthis.props.setSectionsReload(true) //window.location.reload();\r\n else inthis.props.onClose();\r\n }).catch(ex => {\r\n inthis.props.snackbarMessage('Unable to process the workflow ', 'error')\r\n })\r\n\r\n }\r\n }\r\n });\r\n } else {\r\n inthis.props.snackbarMessage('Please wait, Information is processing', 'info');\r\n window.workflowObj.render({\r\n isAdmin: inthis.isAdmin,\r\n id: inthis.state.WorkflowId,\r\n el: \"#play\", userdata: inthis.RoleRegionsurl, success: function (e) {\r\n console.log(e);\r\n inthis.props.snackbarMessage('Please wait, Information is processing', 'info');\r\n if (ApplicationID) { }\r\n //inthis.props.setSectionsReload(true) //window.location.reload();\r\n else {\r\n if (inthis.props.onClose)\r\n inthis.props.onClose();\r\n else\r\n inthis.props.snackbarMessage('Updated sucessfully', 'success');\r\n }\r\n\r\n }\r\n });\r\n }\r\n\r\n }\r\n }\r\n\r\n reload = () => {\r\n const current = this.props.location.pathname;\r\n this.props.history.replace(`/reload`);\r\n setTimeout(() => {\r\n this.props.history.replace(current);\r\n });\r\n }\r\n\r\n handleBack = () => {\r\n //this.props.onClose();\r\n // this.props.handleClose();\r\n // this.props.setSectionsReload(true)\r\n this.reload();\r\n }\r\n workflowprocessMain = () => {\r\n let inthis = this;\r\n const { WorkflowId, reloadWorkflowId, ParentWorkflowId, SitePermitTypeAppSettingsId, ApplicationID, RegionId, sitepermittypeId } = inthis.state;\r\n var isAdd = (WorkflowId) <= 0;\r\n if (typeof window.workflowObj !== \"undefined\") {\r\n //When loading from the application/permit will have parentid\r\n if (isAdd) {\r\n inthis.props.snackbarMessage('Please wait, Information is processing', 'info');\r\n window.workflowObj.render({\r\n parentid: ParentWorkflowId,\r\n isAdmin: inthis.isAdmin,\r\n el: \"#play\", userdata: inthis.RoleRegionsurl, success: function (e) {\r\n var parentworkflowidval = inthis.state.ParentWorkflowId !== \"\" ? inthis.state.ParentWorkflowId : 0\r\n let workflowid = e.id ? e.id : inthis.state.WorkflowId\r\n var applicationUpdateUrl = getEnvVariable('Application') + \"/api/Application/UpdateWorkflow/\" + sitepermittypeId + \"/\" + ApplicationID + \"?&status=&workflowid=\" + workflowid + \"&parentworkflowid=\" + parentworkflowidval;\r\n inthis.setState({ WorkflowId: e.id ? e.id : inthis.state.WorkflowId, reloadWorkflowId: e.id ? e.id : inthis.state.WorkflowId }, () => {\r\n PutData(applicationUpdateUrl, null).then(function (res) {\r\n window.workflowObj.data.submit(e.id, function () {\r\n // inthis.props.handlereload(inthis.state.reloadWorkflowId)\r\n inthis.props.snackbarMessage('Workflow Saved Successfully', 'success');\r\n //window.location.reload();\r\n inthis.props.setSectionsReload(true);\r\n inthis.handleBack()\r\n\r\n }, function () {\r\n inthis.props.snackbarMessage('Unable to process the workflow ', 'error')\r\n });\r\n });\r\n })\r\n }\r\n });\r\n }\r\n // PutData(applicationUpdateUrl, null).then(function (res) {\r\n\r\n // inthis.setState({disableddropdown: true, resetbutton: true})\r\n // inthis.props.snackbarMessage('Workflow Saved Successfully', 'success');\r\n // window.workflowObj.data.submit(e.id, function () {\r\n // window.workflowObj.data.getTasks(function (q) {\r\n // var currTask = null;\r\n // for (var i = 0; i < q.length; i++) {\r\n // var task = q[i];\r\n // if (task.flowid === e.id) {\r\n // currTask = task;\r\n // break;\r\n // }\r\n // }\r\n // // if (currTask !== null) {\r\n // // var workflowChangeObj = { task: task, comment: \"No Comment\", action: \"Started\" }\r\n // // window.workflowObj.data.complete(workflowChangeObj, function () {\r\n // // let workflowStatusUpdateUrl = getEnvVariable('Application') + \"/api/Application/UpdateWorkflow/\" + sitepermittypeId + \"/\" + ApplicationID + \"?&status=\" + \"Started\" + \"&workflowid=\" + workflowid;\r\n // // PutData(workflowStatusUpdateUrl, null).then(function (res1) {\r\n // // inthis.props.snackbarMessage('Workflow Saved Successfully', 'success');\r\n // // //window.location.reload();\r\n // // inthis.props.setSectionsReload(true)\r\n // // })\r\n // // })\r\n // // }\r\n // })\r\n\r\n // })\r\n\r\n\r\n\r\n // }, function () {\r\n // inthis.props.snackbarMessage('Unable to process the workflow ', 'error')\r\n // });\r\n // });\r\n else {\r\n\r\n inthis.props.snackbarMessage('Please wait, Information is processing', 'info');\r\n window.workflowObj.render({\r\n isAdmin: inthis.isAdmin,\r\n id: WorkflowId,\r\n parentid: ParentWorkflowId,\r\n el: \"#play\", userdata: inthis.RoleRegionsurl, success: function (e) {\r\n //window.workflowObj.data.submit(e.id, function () {\r\n inthis.props.snackbarMessage('Workflow Saved Successfully', 'success');\r\n inthis.props.setSectionsReload(true)\r\n //window.location.reload();\r\n //}, function () { inthis.props.snackbarMessage('Unable to process the workflow ', 'error'); }\r\n // )\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n workflowAppealprocessMain = () => {\r\n let inthis = this;\r\n const { appealWorkflowId, reloadWorkflowId, ParentWorkflowappealId, SitePermitTypeAppSettingsId, ApplicationID, RegionId, sitepermittypeId } = inthis.state;\r\n var isAdd = (appealWorkflowId) <= 0;\r\n if (typeof window.workflowObj !== \"undefined\") {\r\n if (isAdd) {\r\n inthis.props.snackbarMessage('Please wait, Information is processing', 'info');\r\n window.workflowObj.render({\r\n parentid: ParentWorkflowappealId ? ParentWorkflowappealId : 0,\r\n isAdmin: inthis.isAdmin,\r\n el: \"#play\", userdata: inthis.RoleRegionsurl, success: function (e) {\r\n var parentworkflowidval = inthis.state.ParentWorkflowappealId && inthis.state.ParentWorkflowappealId !== \"\" ? inthis.state.ParentWorkflowappealId : 0\r\n let workflowid = e.id ? e.id : inthis.state.appealWorkflowId\r\n var applicationUpdateUrl = getEnvVariable('Application') + \"/api/Application/UpdateAppealWorkflow/\" + sitepermittypeId + \"/\" + ApplicationID + \"?&status=&appealWorkflowid=\" + workflowid + \"&parentAppealworkflowid=\" + parentworkflowidval;\r\n inthis.setState({ appealWorkflowId: e.id ? e.id : inthis.state.appealWorkflowId, reloadWorkflowId: e.id ? e.id : inthis.state.appealWorkflowId }, () => {\r\n PutData(applicationUpdateUrl, null).then(function (res) {\r\n window.workflowObj.data.submit(e.id, function () {\r\n inthis.props.snackbarMessage('Workflow Saved Successfully', 'success');\r\n inthis.props.setSectionsReload(true);\r\n inthis.handleBack()\r\n }, function () {\r\n inthis.props.snackbarMessage('Unable to process the workflow ', 'error')\r\n });\r\n });\r\n })\r\n }\r\n });\r\n }\r\n else {\r\n inthis.props.snackbarMessage('Please wait, Information is processing', 'info');\r\n window.workflowObj.render({\r\n isAdmin: inthis.isAdmin,\r\n id: appealWorkflowId,\r\n parentid: ParentWorkflowappealId,\r\n el: \"#play\", userdata: inthis.RoleRegionsurl, success: function (e) {\r\n inthis.props.snackbarMessage('Workflow Saved Successfully', 'success');\r\n inthis.props.setSectionsReload(true)\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n\r\n handleReset = () => {\r\n this.setState({ confirmationopen: true })\r\n }\r\n\r\n handleClose = () => {\r\n this.setState({ confirmationopen: false })\r\n };\r\n\r\n confirmation = () => {\r\n if (this.state.tabvalue === 0) {\r\n this.setState({ confirmationopen: false, disableddropdown: false, workflowval: this.state.defaultworkflow, ParentWorkflowId: this.state.defaultworkflow, WorkflowId: \"\" }, () => this.workflowprocessMain())\r\n }\r\n else {\r\n this.setState({ confirmationopen: false, disabledappealdropdown: false, workflowappealval: this.state.defaultworkflow, ParentWorkflowappealId: this.state.defaultworkflow, appealWorkflowId: \"\" }, () => this.workflowAppealprocessMain())\r\n }\r\n //set parent workflowid to null\r\n }\r\n\r\n handleDropdownChange = (e) => {\r\n this.setState({ workflowval: e.target.value, ParentWorkflowId: e.target.value, disableddropdown: false, WorkflowId: \"\" }, () => this.workflowprocessMain());\r\n }\r\n\r\n handleTabChange = (event, newValue) => {\r\n this.setState({ tabvalue: newValue }, () => this.handleInitialState())\r\n }\r\n\r\n handleAppealsDropdownChange = (e) => {\r\n this.setState({ workflowappealval: e.target.value, ParentWorkflowappealId: e.target.value, disabledappealdropdown: false, appealWorkflowId: \"\" }, () => this.workflowAppealprocessMain());\r\n }\r\n\r\n displayworkflow = () => {\r\n const { styles, designprops, headerProps } = this.props.options\r\n const { siteID, opensnackbar, RegionId, workflowitems } = this.state\r\n const { backbutton } = headerProps ? headerProps : {}\r\n console.log('siteId------', siteID, RegionId)\r\n return (\r\n <div>\r\n <FormControl fullWidth className=\"col-sm-6 pl-3 pt-2\">\r\n <InputLabel shrink className=\"col-sm-6 pl-3 pt-2\">Select Workflow</InputLabel>\r\n <Select\r\n value={this.state.tabvalue === 0 ? this.state.workflowval : this.state.workflowappealval}\r\n onChange={this.state.tabvalue === 0 ? this.handleDropdownChange : this.handleAppealsDropdownChange}\r\n displayEmpty\r\n disabled={this.state.tabvalue === 0 ? this.state.disableddropdown : this.state.disabledappealdropdown}\r\n >\r\n <MenuItem value=\"\">\r\n <em>Create new workflow </em>\r\n </MenuItem>\r\n {workflowitems.map(each => {\r\n return (\r\n < MenuItem value={each.WorkflowId}>{each.WorkflowName}</MenuItem>\r\n )\r\n })}\r\n </Select>\r\n </FormControl>\r\n <div id=\"play\" className=\"workflow-wrapper\">\r\n </div>\r\n </div>\r\n )\r\n }\r\n\r\n render() {\r\n const { styles, designprops, headerProps } = this.props.options\r\n const { siteID, opensnackbar, RegionId, workflowitems } = this.state\r\n const { backbutton } = headerProps ? headerProps : {}\r\n console.log('siteId------', siteID, RegionId)\r\n return (\r\n <Fragment>\r\n <div className=\"sketch_ToolBox_Widget\" style={{ ...styles }} >\r\n {!designprops && <FormHeader title={`Workflow`} backbutton={backbutton} handleBack={this.handleBack} resetbutton={this.props && this.props.extraProps &&\r\n this.props.extraProps.ApprovedFlag && this.props.extraProps.ApprovedFlag === 'Y' ? false : true} handleReset={this.handleReset} />}\r\n <ConfirmationDialog value={this.state.confirmationopen} description=\"After reset if new workflow is not saved then previous workflow will be saved.\"\r\n title=\"Do you want to reset Workflow?\" onSubmit={this.confirmation} onClose={this.handleClose} />\r\n\r\n <AppBar position=\"static\" color=\"white\">\r\n <Tabs\r\n value={this.state.tabvalue}\r\n onChange={this.handleTabChange}\r\n indicatorColor=\"primary\"\r\n textColor=\"primary\"\r\n variant=\"scrollable\"\r\n scrollButtons=\"on\"\r\n aria-label=\"scrollable auto tabs example\"\r\n >\r\n <Tab label=\"Workflow\" {...a11yProps(0)} />\r\n {this.props.extraProps.FileAppeal === \"Y\" && <Tab label=\"Appeals\" {...a11yProps(1)} />}\r\n </Tabs>\r\n </AppBar>\r\n\r\n <TabPanel value={this.state.tabvalue} index={0}>{this.displayworkflow()}</TabPanel>\r\n <TabPanel value={this.state.tabvalue} index={1}>{this.displayworkflow()}</TabPanel>\r\n </div>\r\n </Fragment>\r\n\r\n )\r\n\r\n }\r\n\r\n\r\n componentDidCatch(error, info) {\r\n console.log(error);\r\n }\r\n}\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage, setSectionsReload }, dispatch);\r\n}\r\n\r\nCWorkflow = connect(null, mapActions)(CWorkflow)\r\nexport default withRouter(CWorkflow);\r\n","import FormControl from '@material-ui/core/FormControl';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Select from '@material-ui/core/Select';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { bindActionCreators } from 'redux';\r\nimport { setSectionsReload, snackbarMessage } from '../../core/actions';\r\nimport ConfirmationDialog from \"../../core/controls/components/confirmationPopup\";\r\nimport Switch from '../../core/controls/components/switch';\r\nimport FormHeader from '../../core/modules/form/cformheader';\r\nimport { GetData, PutData } from '../../core/modules/form/formsapi';\r\nimport { requestApi } from '../../core/modules/form/utilities';\r\nimport { getEnvVariable } from '../environmentalList';\r\nconst _ = require('lodash');\r\n\r\n\r\nclass CWorkflow extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.isAdmin = this.props.options.params.isAdmin\r\n this.state = {\r\n options: this.props.options,\r\n SiteId: this.isAdmin && this.props && this.props.dataItem && this.props.dataItem['SiteId'] ? this.props.dataItem['SiteId'] : (this.props && this.props.extraProps && this.props.extraProps.SiteId ? this.props.extraProps.SiteId : null),\r\n RegionId: this.isAdmin && this.props && this.props.dataItem && this.props.dataItem['RegionId'] ? this.props.dataItem['RegionId'] : (this.props && this.props.extraProps && this.props.extraProps.RegionId ? this.props.extraProps.RegionId : null),\r\n DistrictId: this.isAdmin && this.props && this.props.dataItem && this.props.dataItem['DistrictId'] ? this.props.dataItem['DistrictId'] : (this.props && this.props.extraProps && this.props.extraProps.DistrictId ? this.props.extraProps.DistrictId : null),\r\n workflowName: this.props && this.props.dataItem && this.props.dataItem.workflowinfo ? this.props.dataItem.workflowinfo.WorkflowName : null,\r\n workflowDescription: this.props && this.props.dataItem && this.props.dataItem.workflowinfo ? this.props.dataItem.workflowinfo.WorkflowDescription : null,\r\n workflownameerror: false,\r\n IsDefault: this.props && this.props.dataItem && this.props.dataItem.IsDefault && this.props.dataItem.workflowinfo && this.props.dataItem.workflowinfo.IsDefault ? this.props.dataItem.workflowinfo.IsDefault : 'N',\r\n workflownamehelpertext: null,\r\n addworkflowid: null,\r\n config: this.props && this.props.dataItem && this.props.dataItem.workflowinfo ? this.props.dataItem.workflowinfo.ConfigIds : null,\r\n filteredconfigItems: [],\r\n //configstring: this.props && this.props.dataItem && this.props.dataItem.workflowinfo ? this.props.dataItem.workflowinfo.ConfigIds : \"\",\r\n ParentWorkflowIdValue: this.props && this.props.dataItem && this.props.dataItem.workflowinfo ? this.props.dataItem.workflowinfo.WorkflowId : 0,\r\n confirmationopen: false,\r\n currentconfigId: null\r\n //...this.props.options.params\r\n }\r\n this.configType = this.isAdmin ? this.props.accessPermissions.configType : this.props.extraProps.configType;\r\n this.configtypeidval = this.configType === 'R' ? 'RegionId' : this.configType === 'S' ? 'SiteId' : this.configType === 'D' ? 'DistrictId' : 'DistrictId';\r\n this.configtypename = this.configType === 'R' ? 'Regions' : this.configType === 'S' ? 'Sites' : this.configType === 'D' ? 'Districts' : 'Districts';\r\n this.configId = this.configType === 'R' ? this.state.RegionId : (this.configType === 'S' ? this.state.SiteId : (this.configType === 'D' ? this.state.DistrictId : '-1'));\r\n this.RoleRegionsurl = `/InternalAccessControlView/GetUserRoleConfigType/${this.configId}/` + getEnvVariable('ModuleKey') + `/${this.configType}/?isAdmin=${this.isAdmin}`;\r\n console.log(\"CWorkflow\", this.state)\r\n }\r\n\r\n paramvalue = (getvaluefromtype, paramname, value) => {\r\n switch (getvaluefromtype) {\r\n case 'route':\r\n return this.props.match.params[paramname]\r\n case 'value':\r\n case 'props':\r\n default: return value\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n //Load the the ID's based on the admin/application flow\r\n //var isAdmin = false;\r\n const { options, extraProps } = this.props\r\n const { params } = options\r\n\r\n if (this.props && this.props.dataItem && this.props.dataItem.Id && (!this.state.SiteId || !this.state.RegionId || !this.state.DistrictId)) {\r\n let inforeadurl = {\r\n \"url\": getEnvVariable('AdminConfig') + `/api/SitePermitTypes/` + `${this.props.dataItem.Id}`\r\n }\r\n requestApi({ get: inforeadurl }, '').then(res => {\r\n this.configId = this.configType === 'R' ? res.RegionId : (this.configType === 'S' ? res.SiteId : (this.configType === 'D' ? res.DistrictId : '-1'));\r\n this.RoleRegionsurl = `/InternalAccessControlView/GetUserRoleConfigType/${this.configId}/` + getEnvVariable('ModuleKey') + `/${this.configType}/?isAdmin=${this.isAdmin}`;\r\n this.setState({ SiteId: res.SiteId ? res.SiteId : null, RegionId: res.RegionId ? res.RegionId : null, DistrictId: res.DistrictId ? res.DistrictId : null })\r\n })\r\n }\r\n\r\n let tempparams = {}\r\n let configtypedomains = {\r\n \"get\": {\r\n url: getEnvVariable('Admin') + `/api/${this.configtypename}/` + getEnvVariable('ModuleKey') + `/All/Active`,\r\n //url: getEnvVariable('Admin') + `/api/Districts/` + getEnvVariable('ModuleKey') + `/All/Active`,\r\n }\r\n }\r\n let configtypedropdown = {\r\n url: getEnvVariable('AdminConfig') + `/api/SitePermitTypesConfig/${this.props.dataItem.Id}/All`,\r\n }\r\n requestApi({ get: configtypedropdown }, '').then(res => {\r\n let selectedconfigtypes = res ? _.map(res, this.configtypeidval) : []\r\n this.setState({ configItems: selectedconfigtypes });\r\n requestApi(configtypedomains, '').then(res => {\r\n let configarray = [];\r\n let savedconfigitems = this.state.configItems;\r\n let domainres = res && res.map(x => savedconfigitems.includes(Number(x.Id)) ? x : false);\r\n var filtered = domainres.filter(Boolean);\r\n // let configidsdata = this.state.configstring.split(',');\r\n // if (configidsdata && configidsdata.length > 0) {\r\n // let configarraylist = filtered.map(x => configidsdata.includes(String(x.Id)) ? x : false);\r\n // configarray = configarraylist.filter(Boolean);\r\n // }\r\n if (this.state.config) {\r\n this.setState({ filteredconfigItems: filtered });\r\n }\r\n else {\r\n this.setState({ filteredconfigItems: filtered });\r\n }\r\n console.log(filtered);\r\n }\r\n );\r\n\r\n })\r\n params && Object.keys(params).forEach(each => {\r\n if (typeof params[each] === 'object') {\r\n const { getvaluefromtype, paramname, value } = params[each]\r\n tempparams[each] = this.paramvalue(getvaluefromtype, paramname, value || (extraProps ? extraProps[paramname] : ''))\r\n }\r\n else tempparams[each] = params[each]\r\n })\r\n console.log('workflow params, extraProps---', tempparams, extraProps)\r\n //Load sitepermit types\r\n var sitepermittypeId\r\n if (this.isAdmin)\r\n sitepermittypeId = this.props.match.params && this.props.match.params.Id ? this.props.match.params.Id : (tempparams.SitePermitTypeId || this.props.dataItem['Id']);\r\n else\r\n sitepermittypeId = tempparams.SitePermitTypeId || this.props.extraProps.SitePermitTypeAppSettingsId;\r\n\r\n if (sitepermittypeId) {\r\n var sourceURL = getEnvVariable('AdminConfig') + `/api/SitePermitTypeAppSettings/${sitepermittypeId}/All`;\r\n //this.props.snackbarMessage('Please wait, Information is processing', 'info');\r\n GetData(sourceURL, \"\").then(results => {\r\n if (results && results.Id && results.Id > 0) {\r\n tempparams.SitePermitTypeAppSettingsId = results.Id;\r\n tempparams.sitepermittypeId = sitepermittypeId;\r\n this.setPageState(tempparams);\r\n } else {\r\n tempparams.SitePermitTypeAppSettingsId = -1;\r\n tempparams.sitepermittypeId = sitepermittypeId;\r\n this.setPageState(tempparams);\r\n }\r\n }).catch(ex => {\r\n console.log(ex);\r\n //this.props.snackbarMessage('Unable to process the workflow ', 'error')\r\n })\r\n\r\n } else {\r\n // this.setPageState(tempparams);\r\n }\r\n\r\n }\r\n\r\n\r\n setPageState(tempparams) {\r\n this.setState({\r\n ...tempparams\r\n }, () => {\r\n if (this.isAdmin) {\r\n if (this.props && this.props.dataItem && this.props.dataItem.workflowinfo && this.props.dataItem.workflowinfo.Id) {\r\n this.loadAdminflow();\r\n }\r\n\r\n } else {\r\n this.loadMasterflow();\r\n }\r\n })\r\n }\r\n\r\n\r\n\r\n loadAdminflow() {\r\n const { SitePermitTypeAppSettingsId, sitepermittypeId } = this.state;\r\n var sourceURL = getEnvVariable('AdminConfig') + \"/api/SitePermitTypeWorkflow/\" + sitepermittypeId + \"/All\";\r\n this.props.snackbarMessage('Please wait, Information is processing', 'info');\r\n GetData(sourceURL, \"\").then(results => {\r\n if (results && results.length > 0 && !this.props.options.addnewworkflow) {\r\n let resultval = _.find(results, { 'Id': this.props.dataItem.workflowinfo.Id })\r\n var firstResult = resultval;\r\n this.setState({ ...firstResult });\r\n }\r\n this.workflowprocessAdmin();\r\n }).catch(ex => {\r\n this.props.snackbarMessage('Unable to process the workflow ', 'error')\r\n })\r\n }\r\n\r\n loadMasterflow() {\r\n const { WorkflowId, ParentWorkflowId, ApplicationID, SitePermitTypeAppSettingsId, sitepermittypeId /*sitePermitTypeId*/ } = this.state;\r\n var sourceURL = getEnvVariable('AdminConfig') + \"/api/SitePermitTypeWorkflow/\" + sitepermittypeId + \"/SitePermitWorkFlows\";\r\n if (sitepermittypeId && ApplicationID) {\r\n this.props.snackbarMessage('Please wait, Information is processing', 'info');\r\n GetData(sourceURL, \"\").then(results => {\r\n if (results && results.length > 0) {\r\n var firstResult = results[0];\r\n this.setState({ \"ParentWorkflowId\": firstResult.WorkflowId });\r\n } else {\r\n /* Loading workflow without default workflow */\r\n this.setState({ \"ParentWorkflowId\": 0 });\r\n }\r\n this.workflowprocessMain();\r\n }).catch(ex => {\r\n this.props.snackbarMessage('Unable to process the workflow ', 'error')\r\n })\r\n } else this.props.snackbarMessage('Unable to process the workflow ', 'error')\r\n }\r\n\r\n\r\n workflowprocessAdmin = () => {\r\n this.RoleRegionsurl = `/InternalAccessControlView/GetUserRoleConfigType/` + getEnvVariable('ModuleKey') + `/${this.configType}/?isAdmin=${this.isAdmin}&configIds=${this.state.config}`;\r\n //this.RoleRegionsurl = `/InternalAccessControlView/GetUserRoleConfigType/7/` + getEnvVariable('ModuleKey') + `/${this.configType}/?isAdmin=${this.isAdmin}`;\r\n let inthis = this;\r\n const { WorkflowId, ParentWorkflowIdValue, SiteId, SitePermitTypeAppSettingsId, ApplicationID/*sitePermitTypeId*/, RegionId } = inthis.state;\r\n var isAdd = WorkflowId <= 0 && ParentWorkflowIdValue <= 0;\r\n\r\n if (typeof window.workflowObj !== \"undefined\") {\r\n //For administration save\r\n if (isAdd) {\r\n inthis.props.snackbarMessage('Please wait, Information is processing', 'info');\r\n window.workflowObj.render({\r\n isAdmin: inthis.isAdmin,\r\n el: \"#play\", userdata: inthis.RoleRegionsurl, success: function (e) {\r\n console.log(e);\r\n if (e.id || inthis.state.addworkflowid) {\r\n inthis.setState({ addworkflowid: e.id ? e.id : inthis.state.addworkflowid });\r\n if (inthis.state.workflowName) {\r\n let configdata = inthis.state.config\r\n\r\n let resultdata = {\r\n workflowName: inthis.state.workflowName,\r\n workflowDescription: inthis.state.workflowDescription,\r\n IsDefault: inthis.state.IsDefault,\r\n workflowId: e.id ? e.id : inthis.state.addworkflowid,\r\n ConfigIds: configdata,\r\n }\r\n if (ParentWorkflowIdValue > 0) {\r\n resultdata['Id'] = inthis.state.Id;\r\n }\r\n\r\n var sourceURL = ParentWorkflowIdValue <= 0 ? getEnvVariable('AdminConfig') + \"/api/SitePermitTypeWorkflow/\" + `${inthis.state.SitePermitTypeAppSettingsId}` + \"/\" + resultdata.workflowId + \"/add\" : getEnvVariable('AdminConfig') + \"/api/SitePermitTypeWorkflow/\" + `${inthis.state.SitePermitTypeAppSettingsId}` + \"/update\";\r\n let finalurl = { url: sourceURL }\r\n let url = ParentWorkflowIdValue <= 0 ? { post: finalurl } : { put: finalurl }\r\n requestApi(url, [], resultdata).then(response => {\r\n //inthis.props.snackbarMessage('Workflow Saved Successfully', 'success')\r\n if (ApplicationID) {\r\n\r\n }\r\n else inthis.props.onClose();\r\n }).catch(errors => {\r\n errors.then(err => {\r\n if (err['WorkflowName']) {\r\n inthis.setState({ workflownameerror: true, workflownamehelpertext: err['WorkflowName'][0] });\r\n }\r\n //inthis.props.snackbarMessage('Unable to process the workflow ', 'error')\r\n })\r\n })\r\n\r\n }\r\n else {\r\n inthis.setState({ workflownameerror: inthis.state.workflowName ? false : true })\r\n }\r\n }\r\n }\r\n });\r\n } else {\r\n inthis.props.snackbarMessage('Please wait, Information is processing', 'info');\r\n window.workflowObj.render({\r\n isAdmin: inthis.isAdmin,\r\n id: inthis.state.WorkflowId,\r\n el: \"#play\", userdata: inthis.RoleRegionsurl, success: function (e) {\r\n console.log(e);\r\n inthis.props.snackbarMessage('Please wait, Information is processing', 'info');\r\n if (ApplicationID) {\r\n\r\n }\r\n else {\r\n if (inthis.state.workflowName) {\r\n let configdata = inthis.state.config\r\n let resultdata = {\r\n workflowName: inthis.state.workflowName,\r\n workflowDescription: inthis.state.workflowDescription,\r\n IsDefault: inthis.state.IsDefault,\r\n workflowId: inthis.state.WorkflowId,\r\n Id: inthis.state.Id,\r\n ConfigIds: configdata,\r\n }\r\n var sourceURL = getEnvVariable('AdminConfig') + \"/api/SitePermitTypeWorkflow/\" + `${inthis.state.SitePermitTypeAppSettingsId}` + \"/update\";\r\n let finalurl = { url: sourceURL }\r\n let url = { put: finalurl }\r\n requestApi(url, [], resultdata).then(response => {\r\n //inthis.props.snackbarMessage('Workflow Saved Successfully', 'success')\r\n if (ApplicationID) {\r\n\r\n }\r\n else inthis.props.onClose();\r\n }).catch(errors => {\r\n errors.then(err => {\r\n if (err['workflowName']) {\r\n inthis.setState({ workflownameerror: true, workflownamehelpertext: err['workflowName'][0] });\r\n }\r\n //inthis.props.snackbarMessage('Unable to process the workflow ', 'error')\r\n })\r\n })\r\n\r\n }\r\n else {\r\n inthis.setState({ workflownameerror: inthis.state.workflowName ? false : true })\r\n }\r\n }\r\n\r\n }\r\n });\r\n }\r\n\r\n }\r\n }\r\n handleBack = () => {\r\n let pathname = this.props.location.pathname\r\n this.props.history.push(pathname)\r\n this.props.onClose();\r\n //this.props.handleClose();\r\n //this.props.setSectionsReload(true)\r\n }\r\n workflowprocessMain = () => {\r\n let inthis = this;\r\n const { WorkflowId, SiteId, ParentWorkflowId, ParentWorkflowIdValue, SitePermitTypeAppSettingsId, ApplicationID, RegionId, sitepermittypeId } = inthis.state;\r\n var isAdd = WorkflowId <= 0 && ParentWorkflowIdValue <= 0;\r\n if (typeof window.workflowObj !== \"undefined\") {\r\n //When loading from the application/permit will have parentid\r\n if (isAdd) {\r\n inthis.props.snackbarMessage('Please wait, Information is processing', 'info');\r\n window.workflowObj.render({\r\n parentid: ParentWorkflowId,\r\n isAdmin: inthis.isAdmin,\r\n el: \"#play\", userdata: inthis.RoleRegionsurl, success: function (e) {\r\n var applicationUpdateUrl = getEnvVariable('Application') + \"/api/Application/UpdateWorkflow/\" + sitepermittypeId + \"/\" + ApplicationID + \"?&status=&workflowid=\" + e.id;\r\n inthis.setState({ WorkflowId: e.id }, () => {\r\n PutData(applicationUpdateUrl, null).then(function (res) {\r\n window.workflowObj.data.submit(e.id, function () {\r\n inthis.props.snackbarMessage('Workflow Saved Successfully', 'success');\r\n window.location.reload();\r\n //inthis.props.setSectionsReload(true)\r\n }, function () {\r\n inthis.props.snackbarMessage('Unable to process the workflow ', 'error')\r\n });\r\n });\r\n })\r\n }\r\n });\r\n } else {\r\n\r\n inthis.props.snackbarMessage('Please wait, Information is processing', 'info');\r\n window.workflowObj.render({\r\n isAdmin: inthis.isAdmin,\r\n id: WorkflowId,\r\n parentid: ParentWorkflowId,\r\n el: \"#play\", userdata: inthis.RoleRegionsurl, success: function (e) {\r\n //window.workflowObj.data.submit(e.id, function () {\r\n inthis.props.snackbarMessage('Workflow Saved Successfully', 'success');\r\n inthis.props.setSectionsReload(true)\r\n //window.location.reload();\r\n //}, function () { inthis.props.snackbarMessage('Unable to process the workflow ', 'error'); }\r\n // )\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n handlechange = (event) => {\r\n this.setState({ [event.target.name]: event.target.value, workflownameerror: false, workflownamehelpertext: null })\r\n }\r\n\r\n handleToggleChange = (event) => {\r\n this.setState({ IsDefault: event.target.value });\r\n }\r\n\r\n // handleConfigChange = (event, values) => {\r\n // // let resultdata = values.map(a => a.Id);\r\n // // let stringformatvalues = [...new Set(resultdata)].join()\r\n // this.setState({ config: event.target.value });\r\n // }\r\n\r\n handleConfigChange = (event) => {\r\n if (this.state.ParentWorkflowIdValue > 0) {\r\n this.setState({ confirmationopen: true, currentconfigId: event.target.value })\r\n }\r\n else {\r\n this.setState({ currentconfigId: event.target.value, config: event.target.value }, () => this.workflowprocessAdmin())\r\n\r\n }\r\n }\r\n\r\n confirmation = () => {\r\n if (this.state.ParentWorkflowIdValue > 0) {\r\n this.setState({ WorkflowId: 0, confirmationopen: false, config: this.state.currentconfigId, ParentWorkflowIdValue: 0 }, () => this.workflowprocessAdmin())\r\n }\r\n else {\r\n this.setState({ config: this.state.currentconfigId }, () => this.workflowprocessAdmin())\r\n }\r\n }\r\n\r\n handleClose = () => {\r\n this.setState({ confirmationopen: false })\r\n }\r\n\r\n render() {\r\n const { styles, designprops, headerProps } = this.props.options\r\n const { SiteId, opensnackbar, RegionId } = this.state\r\n const { backbutton } = headerProps ? headerProps : {}\r\n let extraProps = {\r\n \"transformProps\": {\r\n \"Y\": true,\r\n \"N\": false,\r\n \"true\": \"Y\",\r\n \"false\": \"N\"\r\n }\r\n }\r\n console.log('siteId------', SiteId, RegionId)\r\n return (\r\n <div className=\"sketch_ToolBox_Widget\" style={{ ...styles }} >\r\n {!designprops && <FormHeader title={`Workflow`} backbutton={backbutton} handleBack={this.handleBack} />}\r\n {this.state.confirmationopen && <ConfirmationDialog value={this.state.confirmationopen} description=\"Workflow will be reset\" title=\"Do you want to reset Workflow?\" onSubmit={this.confirmation} onClose={this.handleClose} />}\r\n <div className=\"pl-5 row\">\r\n <TextField className=\"pr-5 col-sm-10\"\r\n required\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n label=\"Name\" name=\"workflowName\" value={this.state.workflowName} onChange={this.handlechange} error={this.state.workflownameerror} helperText={this.state.workflownameerror ? this.state.workflownamehelpertext ? this.state.workflownamehelpertext : \"Name is required\" : \"\"} />\r\n </div>\r\n <div className=\"pl-5 row\">\r\n <TextField className=\"pr-5 col-sm-10\"\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n label=\"Description\" name=\"workflowDescription\" multiline onChange={this.handlechange} value={this.state.workflowDescription} />\r\n </div>\r\n {/* </div> */}\r\n {/* <div className=\"pl-5 col-sm-8 row\"> */}\r\n <FormControl className=\"pl-5 col-sm-8\">\r\n {/* */}\r\n <InputLabel className=\"pl-5\" shrink required={true}>{this.configtypename}</InputLabel>\r\n <Select\r\n value={this.state.config}\r\n onChange={this.handleConfigChange}\r\n //className=\"col-sm-8\"\r\n >\r\n {this.state.filteredconfigItems && this.state.filteredconfigItems.map(menu => {\r\n return <MenuItem value={menu.Id}> {menu.Name} </MenuItem>\r\n })}\r\n </Select>\r\n </FormControl>\r\n {/* </div> */}\r\n <div className=\"pl-5 row\">\r\n <Switch handleFieldValue={this.handleToggleChange} value={this.state.IsDefault} name=\"IsDefault\" label=\"Default Workflow\" extraProps={extraProps} />\r\n </div>\r\n <div id=\"play\" className=\"workflow-wrapper\"></div>\r\n </div>\r\n );\r\n }\r\n\r\n\r\n componentDidCatch(error, info) {\r\n console.log(error);\r\n }\r\n}\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage, setSectionsReload }, dispatch);\r\n}\r\n\r\nCWorkflow = connect(null, mapActions)(CWorkflow)\r\nexport default withRouter(CWorkflow);","/**\r\n *********************************************************\r\n Description: Textbox component. .\r\n Required props: type,value.\r\n limitations : N/A.\r\n *********************************************************\r\n**/\r\n\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport React, { useEffect, useState, Fragment } from \"react\";\r\nimport DefaultSettings from './settings';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport Box from '@material-ui/core/Box';\r\nimport { getColor } from '../../controls/components/custom/customcolor';\r\n\r\nexport default function TextBox(props) {\r\n const { value, handleFieldValue, multiline, extraProps, rowsMax, shareProps, error, required, tooltip, contexthelp, className, disabled, changefieldto, FieldIsSpellCheck, ...otherProps } = props\r\n const { label, helperText, name, xtype, fullWidth, inputProps, ...otherConfigs } = otherProps;\r\n\r\n const [currentVal, setCurrentVal] = useState(value)\r\n\r\n useEffect(() => {\r\n setCurrentVal(value)\r\n }, [value])\r\n\r\n let tlabel = (tooltip || contexthelp) ? <div style={{ fontWeight: 'bold', color: error ? 'red' : 'black' }}> {label} < Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em', color: '#007bff' }} onClick={() => DefaultSettings.showDrawer(contexthelp)} />\r\n </Tooltip> </div> : label;\r\n return (\r\n <Box className={className}>\r\n <FormControl fullWidth={fullWidth ? fullWidth : true} error={error} disabled={disabled || false} required={required} >\r\n <InputLabel style={{ fontWeight: 'bold', color: required ? getColor() : (error ? 'red' : 'black')}} shrink>{label}{tooltip && <Tooltip title={tooltip ? tooltip : null}\r\n placement=\"bottom-start\" ><HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em', color: '#007bff', marginLeft: 5 }} onClick={(evt) => contexthelp ?\r\n DefaultSettings.showDrawer(contexthelp) : evt.preventDefault()} />\r\n </Tooltip>}</InputLabel>\r\n <div className='pt-2'></div>\r\n <TextField\r\n error={error} required={required}\r\n fullWidth={fullWidth ? fullWidth : true}\r\n // label={tlabel}\r\n // className='pt-2'\r\n InputProps={{\r\n inputProps: inputProps\r\n }}\r\n multiline={multiline || (changefieldto === 'TA' ? true : false)}\r\n maxRows={rowsMax || 3}\r\n disabled={disabled || false}\r\n value={currentVal}\r\n type={xtype || 'text'}\r\n onChange={(evt) => { setCurrentVal(evt.target.value) }}\r\n onBlur={() => {\r\n handleFieldValue({ target: { value: currentVal, name: name, checked: false }, currentTarget: { dataset: null } })\r\n }}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n name={name}\r\n helperText={helperText}\r\n {...otherConfigs}\r\n {...extraProps}\r\n\r\n spellcheck={FieldIsSpellCheck === 'Y' ? true : false}\r\n />\r\n </FormControl>\r\n </Box>\r\n )\r\n}","/**\r\n *********************************************************\r\n Description: Textbox component. .\r\n Required props: type,value.\r\n limitations : N/A.\r\n *********************************************************\r\n**/\r\n\r\nimport React from \"react\";\r\n\r\n\r\nexport default function Link(props) {\r\n const { value, handleFieldValue, multiline, extraProps, rowsMax, shareProps, error, required, tooltip,\r\n contexthelp, disabled, changefieldto, linkurl, FieldIsSpellCheck, ...otherProps } = props\r\n const { label, helperText, name, xtype, fullWidth, ...otherConfigs } = otherProps;\r\n\r\n return (\r\n disabled ? <div style={{ color: 'rgba(0, 0, 0, 0.38)', fontSize: '12px' }} disabled={true} className=\"pointer\" > <u>{label} </u> </div> :\r\n <div style={{ color: 'blue', fontSize: '12px' }} onClick={() => { window.open((value || linkurl), '_blank').focus(); }} className=\"pointer\" > <u>{label} </u> </div>\r\n )\r\n}","import React, { Fragment } from 'react';\r\nimport Button from '@material-ui/core/Button';\r\nimport ButtonGroup from '@material-ui/core/ButtonGroup';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport _chunk from 'lodash/chunk';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport { useRef } from 'react';\r\nimport { useState } 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 InputLabel from '@material-ui/core/InputLabel';\r\nimport Paper from '@material-ui/core/Paper';\r\n\r\nexport default function BasicButtonGroup({ items = [], rows = 1, options = [], ...otherProps }) {\r\n const { Value, changeValue } = otherProps\r\n const [value, setValue] = React.useState(Value || '');\r\n const [insert, setInsertValue] = React.useState('');\r\n const [pos, setPos] = useState(0);\r\n const text = useRef(null);\r\n\r\n const handleClick = (val) => evt => {\r\n if (val === 'del')\r\n handleDel()\r\n else {\r\n val = val === 'Insert' ? `{{${insert}}}` : val\r\n setPos(pos + 1);\r\n const output = [value.slice(0, pos), val, value.slice(pos)].join('');\r\n setValue(output);\r\n showCaretPos(pos + 1)\r\n }\r\n }\r\n const showCaretPos = (val) => {\r\n setTimeout(() => {\r\n text.current.focus();\r\n text.current.setSelectionRange(val, val)\r\n }, 10)\r\n }\r\n const handlePos = () => {\r\n setPos(text.current.selectionStart)\r\n }\r\n const handleDel = () => {\r\n const output = [value.slice(0, pos - 1), value.slice(pos)].join('');\r\n setValue(output);\r\n setPos(pos - 1)\r\n showCaretPos(pos - 1)\r\n }\r\n const handleChange = (evt) => {\r\n const { value } = evt.target\r\n setInsertValue(value);\r\n }\r\n const handleSave = () => {\r\n changeValue(value)\r\n }\r\n\r\n const handleTextChange = (evt) => {\r\n setPos(pos + 1);\r\n // const output = [value.slice(0, pos), evt.target.value].join('');\r\n setValue(evt.target.value);\r\n showCaretPos(pos + 1)\r\n }\r\n\r\n return (\r\n <Paper className=\"row col-sm-12\">\r\n <TextField fullWidth label=\"Text Editor\" inputRef={text} onClick={handlePos} multiline={4} maxRows={4} value={value} onChange={handleTextChange} />\r\n <FormControl fullWidth>\r\n <InputLabel id=\"demo-simple-select-helper-label\">Fields</InputLabel>\r\n <Select onChange={handleChange} value={insert} displayEmpty>\r\n {options && options.length > 0 && options.map((opt, index) => { return <MenuItem key={index} value={opt.name}>{opt.label}</MenuItem> })}\r\n </Select>\r\n </FormControl>\r\n <div className=\"text-center col-sm-4 m-2\">\r\n {_chunk(items, rows).map((list, idx) => {\r\n return <ButtonGroup key={idx} color=\"primary\" aria-label=\"outlined primary button group\">\r\n {list.map((e, i) => {\r\n return <Button key={i} onClick={handleClick(e)}>{e}</Button>\r\n })}\r\n </ButtonGroup>\r\n })}\r\n <div className=\"text-center p-2\"> <Button size=\"small\" color=\"primary\" variant=\"contained\" onClick={handleSave}>Save</Button></div>\r\n </div>\r\n </Paper>\r\n );\r\n}\r\n\r\n","import Drawer from '@material-ui/core/Drawer';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport withWidth from '@material-ui/core/withWidth';\r\nimport React, { useCallback, useEffect, useState } from 'react';\r\nimport useContainer from './container';\r\n\r\nconst defaultDrawerWidth = 900;\r\nconst minDrawerWidth = 700;\r\nconst maxDrawerWidth = window.innerWidth - 220;\r\nconst fullscreenwidth = window.innerWidth\r\nconst checkwidth = 960\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n drawer: {\r\n flexShrink: 0\r\n },\r\n dragger: {\r\n width: \"7px\",\r\n cursor: \"ew-resize\",\r\n padding: \"4px 0 0\",\r\n borderTop: \"1px solid #ddd\",\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n bottom: 0,\r\n zIndex: 100,\r\n // backgroundColor: \"#f4f7f9\"\r\n }\r\n}));\r\n\r\nfunction SidePopUp(props) {\r\n\r\n const { type, name, aliases, label, container, extraProps, dispatchSharedValueChange, anchor } = props\r\n const sharedProps = props.sharedProps || {}\r\n const sharedValues = props.sharedValues || []\r\n const accessPermissions = props.accessPermissions\r\n //open is not passed to container\r\n const { open, ...otherContainerProps } = sharedProps\r\n //resizable\r\n let screensize = (props.width === \"sm\" || props.width === \"xs\" || props.width === \"md\") ? false : true\r\n const [drawerWidth, setDrawerWidth] = useState((props.width === \"sm\" || props.width === \"xs\" || props.width === \"md\") ? fullscreenwidth : defaultDrawerWidth);\r\n const [fullscreen, setFullScreen] = useState(false)\r\n const [fullwidth, setFullWidth] = useState(fullscreenwidth)\r\n React.useEffect(() => {\r\n window.addEventListener(\"resize\", updateWidth);\r\n return () => window.removeEventListener(\"resize\", updateWidth);\r\n });\r\n\r\n const updateWidth = () => {\r\n if (window.innerWidth < checkwidth) {\r\n setDrawerWidth(window.innerWidth);\r\n }\r\n else {\r\n setDrawerWidth(defaultDrawerWidth)\r\n }\r\n };\r\n\r\n React.useEffect(() => {\r\n if (!screensize) {\r\n let width = window.innerWidth\r\n setDrawerWidth(width);\r\n setFullWidth(width)\r\n }\r\n else {\r\n setDrawerWidth(defaultDrawerWidth);\r\n // setFullWidth(defaultDrawerWidth)\r\n }\r\n }, [props.width]);\r\n\r\n\r\n const handleMouseDown = e => {\r\n document.addEventListener(\"mouseup\", handleMouseUp, true);\r\n document.addEventListener(\"mousemove\", handleMouseMove, true);\r\n };\r\n\r\n const handleMouseUp = () => {\r\n document.removeEventListener(\"mouseup\", handleMouseUp, true);\r\n document.removeEventListener(\"mousemove\", handleMouseMove, true);\r\n };\r\n\r\n const handleMouseMove = useCallback(e => {\r\n let newWidth =\r\n document.body.offsetWidth - (e.clientX - document.body.offsetLeft);\r\n // const newWidth = e.clientX - document.body.offsetLeft;\r\n if (newWidth > minDrawerWidth && newWidth < maxDrawerWidth) {\r\n setDrawerWidth(newWidth);\r\n }\r\n }, []);\r\n\r\n const [openDrawer, setOpenDrawer] = useState(() => {\r\n let open = false\r\n if (sharedProps && (sharedProps.open === true || sharedProps.open === false))\r\n open = sharedProps.open\r\n else open = props.open\r\n return open\r\n });\r\n\r\n const toggleDrawer = (input) => {\r\n setOpenDrawer(input);\r\n };\r\n\r\n useEffect(() => {\r\n if (sharedValues && sharedValues.length > 0 && dispatchSharedValueChange) {\r\n dispatchSharedValueChange({\r\n type: 'value',\r\n name: aliases['open'],\r\n value: openDrawer\r\n })\r\n }\r\n }, [openDrawer])\r\n\r\n //sharedProps.open === false reason: multiple times layout is created for side popup\r\n useEffect(() => {\r\n if (sharedProps && Object.keys(sharedProps).length > 0 && sharedProps.open === false)\r\n setOpenDrawer(sharedProps.open);\r\n }, [sharedProps.open])\r\n\r\n const actions = {\r\n toggleDrawer: toggleDrawer,\r\n }\r\n\r\n const handleScreenWidth = (screen) => {\r\n if (screen === 'fullscreen') {\r\n setFullScreen(true)\r\n }\r\n else {\r\n setFullScreen(false)\r\n }\r\n }\r\n\r\n const [content] = useContainer({ ...container, sharedProps: { ...otherContainerProps } ,accessPermissions : accessPermissions, actions, handleScreenWidth })\r\n\r\n const classes = useStyles();\r\n return (\r\n <div >\r\n {content && <Drawer disableEnforceFocus={true} anchor=\"right\"\r\n disableAutoFocus={true}\r\n disableBackdropClick\r\n PaperProps={{ style: { width: fullscreen ? fullwidth : drawerWidth } }} open={openDrawer} onClose={() => toggleDrawer(false)}\r\n >\r\n <div onMouseDown={e => handleMouseDown(e)} className={classes.dragger} />\r\n {content}\r\n </Drawer>}\r\n </div >\r\n );\r\n}\r\n\r\nexport default withWidth()(SidePopUp)","import MaterialTable from '@material-table/core';\r\nimport { Button, Tooltip, Typography } from '@material-ui/core';\r\nimport { green, pink, teal } from '@material-ui/core/colors';\r\nimport Fab from '@material-ui/core/Fab';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport Icon from '@material-ui/core/Icon';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport moment from 'moment';\r\nimport { Fragment } from \"react\";\r\nimport WorkflowUse from \"../../../modules/workflow/workflowuse\";\r\nimport CircularStatic from './daystimer';\r\nimport DefaultSettings from './settings';\r\nimport Editor from '../../modules/form/cwysiwyg'\r\nconst _ = require('lodash');\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n display: 'flex',\r\n '& > *': {\r\n margin: theme.spacing(1),\r\n },\r\n },\r\n pink: {\r\n color: theme.palette.getContrastText(pink[500]),\r\n backgroundColor: pink[500],\r\n },\r\n green: {\r\n color: '#fff',\r\n backgroundColor: green[500],\r\n },\r\n teal: {\r\n color: theme.palette.getContrastText(teal[500]),\r\n backgroundColor: teal[500],\r\n },\r\n}));\r\n\r\n\r\nexport default function SubHeader(props) {\r\n const { value, handleFieldValue, handleButtonClick, extraProps, subname, shareProps, type, error, required, tooltip, contexthelp, changefieldto, color, changeTypefieldto, ...otherProps } = props\r\n const { label, helperText, name, items, xtype, fullWidth, ismultiple, datedisplay, disabled, isIcon, displayonedit, icon, className, variant, format, style, ...otherConfigs } = otherProps\r\n let { transformProps, nested, columns } = extraProps || {}\r\n let hidelabel = (name === 'UpdatedByName' || name === 'CreatedByName' || name === 'UpdatedOn' || name === 'CreatedOn') ? true : false\r\n let checktype = props && props.sharedProps && props.sharedProps.createduplicate && hidelabel ?\r\n 'hidedisplay' : datedisplay ? 'historydate' : (type ? type : (changefieldto || changeTypefieldto))\r\n let val = ((value === null) || (value === undefined) || (value === '')) ? 0 : value;\r\n let labelval = ((value === null) || (value === undefined) || (value === '')) ? '' : value\r\n let finallabel = label\r\n let dateFormat = extraProps && extraProps.dateFormat ? extraProps.dateFormat : \"MM/DD/YYYY\"\r\n let dateMonthFormat = extraProps && extraProps.dateFormat ? extraProps.dateFormat : \"MM/DD\"\r\n \r\n let allitems = []\r\n\r\n return (\r\n <FormControl className={className} color={'red'} fullWidth={fullWidth ? fullWidth : true} error={error} required={required}>\r\n {tooltip && <Fragment> <Typography variant={'caption'} className=\"fw-bold\" style={style}>{finallabel} \r\n <Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.6em', color: '#007bff' }} onClick={(evt) => contexthelp ? DefaultSettings.showDrawer(contexthelp) : evt.preventDefault()} />\r\n </Tooltip> </Typography> </Fragment>\r\n }\r\n {!tooltip && <Fragment>\r\n <Typography variant={'caption'} style={{color: '#074078' }} className=\"fw-bold\" >{finallabel} \r\n </Typography> </Fragment>\r\n }\r\n <Typography variant={'caption'} className=\"text-primary\" style={{ overflowWrap: 'break-word' }}>{labelval} </Typography>\r\n {helperText && <FormHelperText>{helperText}</FormHelperText>}\r\n </FormControl>\r\n )\r\n \r\n \r\n}\r\n\r\n\r\n","import { getEnvVariable } from '../../../modules/environmentalList';\r\nimport newsavedreportstypes from '../../reports/savedreports';\r\nconst noticehistorygrid = {\r\n \"type\": \"grid\",\r\n \"key\": \"noticeshistorygrid\",\r\n \"gridkey\": 'noticeshistorygrid',\r\n \"order\": 1,\r\n \"options\": {\r\n sidepopupgridheight:true,\r\n \"stopRowClick\":true,\r\n \"routes\": [\r\n {\r\n \"route\": \"/Administration/applicationreview\",\r\n \"routeParams\": \":routeid\",\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \":routeid1\"\r\n },\r\n {\r\n \"route\": \"/notices\",\r\n \"routeParams\": \":routeid2\"\r\n },\r\n {\r\n \"route\": \"/history\"\r\n }\r\n ],\r\n \"crud\": {\r\n \"update\": {\r\n \r\n },\r\n \"read\": {\r\n \"get\": {\r\n \"url\": getEnvVariable('Sidebar')+`/api/Notices/history/{Id}?`,\r\n \"customProps\": [{\r\n \"custom\": \"Id\"\r\n }]\r\n }\r\n }\r\n },\r\n \"back\": {\r\n \"routes\": [\r\n {\r\n \"route\": \"/Administration/applicationreview\",\r\n \"routeParams\": \"routeid\",\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \"routeid1\"\r\n },\r\n {\r\n \"route\": \"/notices/view\",\r\n \"routeParams\": \"routeid2\"\r\n },\r\n ],\r\n },\r\n \"headerProps\": {\r\n \"title\": \"Notices History\",\r\n designprops:true, \r\n \"breadcrumbs\": [\r\n { \"link\": \"Notices History\", \"materialicon\": \"history\", className: 'breadcrumb-item text-dark', class: 'text-dark' }\r\n ]\r\n },\r\n savedreports: {\r\n ...newsavedreportstypes\r\n },\r\n \"gridcolumns\": [\r\n {\r\n \"title\": \"Field Name\",\r\n \"field\": \"FieldLabel\",\r\n \"show\": true,\r\n width:185\r\n },\r\n {\r\n \"title\": \"Old Value\",\r\n \"field\": \"OldValue\",\r\n \"show\": true,\r\n width:185\r\n },\r\n {\r\n \"title\": \"New Value\",\r\n \"field\": \"NewValue\",\r\n \"show\": true,\r\n width:185\r\n },\r\n {\r\n \"title\": \"Updated By\",\r\n \"field\": \"CreatedByName\",\r\n \"show\": true,\r\n width:185\r\n }, \r\n {\r\n \"title\": \"Updated On\",\r\n \"field\": \"CreatedOn\",\r\n \"show\": true,\r\n width:185\r\n },\r\n ]\r\n }\r\n}\r\nexport default noticehistorygrid","import React, { Fragment, Component } from 'react';\r\nimport Form from '../form/cform'\r\nimport savedreportsjson from '../../../json/reports/savedreports'\r\n\r\nconst statusoptions = [{\r\n label: 'Active',\r\n value: 'A'\r\n}, {\r\n label: 'Inactive',\r\n value: 'I'\r\n}]\r\n\r\n\r\nconst defaultoptions = [{\r\n label: 'Count',\r\n value: 1\r\n}, {\r\n label: 'List',\r\n value: 2\r\n}]\r\n\r\n\r\nclass CreateReport extends Component {\r\n\r\n state = {\r\n report: {},\r\n errors: null,\r\n customSave: false,\r\n hascustomvalidations : false\r\n }\r\n componentsArray = { ...savedreportsjson };\r\n optionprops = this.componentsArray\r\n finalprops = { ...this.optionprops, ...this.props }\r\n savePermit = () => {\r\n const { report } = this.state\r\n if (report) {\r\n if (report.Name) {\r\n report.CanEdit = 'Y';\r\n report.ShowOnUi = 'Y';\r\n report.PageOreientation = 'P';\r\n report.Status = 'A';\r\n report.Title = report.Name;\r\n report.IsDynamicQuery = 'N'\r\n if (!this.props.iscgrid) {\r\n report.ReportJsonQueryStr = JSON.stringify(this.props.value)\r\n }\r\n\r\n return report\r\n }\r\n this.setState({ customSave: true })\r\n return report\r\n }\r\n else return false\r\n }\r\n\r\n\r\n handleSelectedColumns = () => {\r\n let list = []\r\n const { fields } = this.props;\r\n fields && fields.length > 0 && fields.map(table => {\r\n table.col.map(each => {\r\n if (each.config.edit) {\r\n list.push(each)\r\n }\r\n })\r\n })\r\n return list;\r\n }\r\n\r\n componentDidMount() {\r\n const { report } = this.state;\r\n report.ReportJsonQueryStr = this.props.ReportJsonQueryStr ? this.props.ReportJsonQueryStr : (this.props.results && this.props.results.ReportJsonQueryStr ?this.props.results.ReportJsonQueryStr : \"\")\r\n this.setState({ report: report })\r\n }\r\n\r\n customValidation = (LayoutForm) => {\r\n let errorsdata = {}\r\n let strlengthreport = LayoutForm && LayoutForm.Name && LayoutForm.Name != null ? LayoutForm.Name.length : \"\"\r\n let strlengthreportdesc = LayoutForm && LayoutForm.Description && LayoutForm.Description != null ? LayoutForm.Description.length : \"\"\r\n if(LayoutForm.Name && LayoutForm.Name.match(/^\\s+$/) !== null)\r\n {\r\n let msg = ['Field is not valid']\r\n errorsdata.Name = msg\r\n }\r\n else if(LayoutForm.Description && LayoutForm.Description.match(/^\\s+$/) !== null)\r\n {\r\n let msg = ['Field is not valid']\r\n errorsdata.Description = msg\r\n }\r\n else if(LayoutForm.Name && LayoutForm.Name != \"\" && (LayoutForm.Name.charAt(0) === \" \" || LayoutForm.Name.charAt(0) === '\\n' || LayoutForm.Name.charAt(strlengthreport - 1) === \" \"))\r\n {\r\n let msg = ['Leading or trailing spaces are not allowed']\r\n errorsdata.Name = msg\r\n }\r\n else if(LayoutForm.Description && LayoutForm.Description != \"\" && (LayoutForm.Description.charAt(0) === \" \" || LayoutForm.Description.charAt(0) === '\\n' || LayoutForm.Description.charAt(strlengthreportdesc - 1) === \" \"))\r\n {\r\n let msg = ['Leading or trailing spaces are not allowed']\r\n errorsdata.Description = msg\r\n }\r\n else if(LayoutForm.Name && LayoutForm.Name != \"\" && LayoutForm.Name.length > 100)\r\n {\r\n let msg = ['Name length should be in the range of (1-100)']\r\n errorsdata.Name = msg\r\n }\r\n else if(LayoutForm.Description && LayoutForm.Description != \"\" && LayoutForm.Description.length > 4000)\r\n {\r\n let msg = ['Description length should be in the range of (1-4000)']\r\n errorsdata.Description = msg\r\n }\r\n return errorsdata\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if((prevProps.checkval != this.props.checkval) && this.props.checkval){\r\n this.setState({checkval:true})\r\n }\r\n if(this.state.checkval && this.state.hascustomvalidations != this.props.hascustomvalidations) {\r\n this.setState({hascustomvalidations : this.props.hascustomvalidations})\r\n }\r\n }\r\n\r\n getState = (data) => {\r\n this.setState({ report: data.results, hascustomvalidations: false, checkval:false })\r\n this.props.callbackfunc();\r\n\r\n }\r\n\r\n handleCustomSave = () => {\r\n this.setState({ customSave: false })\r\n }\r\n\r\n render() {\r\n const { report, errors, masterreports, customSave } = this.state;\r\n return (\r\n <Fragment>\r\n <Form {...this.finalprops} customedit={true} compmap={this.props.compmapdata} getState={this.getState} showcustomvalidations={true} hascustomvalidations = {this.state.hascustomvalidations} errordata={this.props.errordata} customSave={customSave} handleCustomSave={this.handleCustomSave} windowHeight={true} />\r\n\r\n </Fragment>\r\n )\r\n }\r\n}\r\n\r\n\r\n\r\n\r\nexport default CreateReport;","import React from 'react';\r\nimport Autocompletetags from '../../controls/components/custom/autocompletetagsnotification'\r\nimport { requestApi } from '../form/utilities'\r\nimport FormDropdown from '../form/cformdropdown'\r\nimport { getEnvVariable } from '../../../modules/environmentalList';\r\n\r\nconst transformprops = {\r\n name: 'Name',\r\n value: 'Id'\r\n}\r\n\r\nconst sharedtooptions = [\r\n {\r\n name: 'None',\r\n value: 'N',\r\n key: 'self'\r\n },\r\n {\r\n name: 'All Internal Users',\r\n value: 'P',\r\n key: 'public'\r\n },\r\n // {\r\n // name: 'Roles',\r\n // value: 'R',\r\n // key: 'roles'\r\n // }\r\n]\r\n\r\nclass ShareOptions extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.LayoutForm = React.createRef()\r\n }\r\n state = {\r\n SharedTo:'P',\r\n SharedToRoles:'',\r\n rolesoptions:[],\r\n rolesoptionsselected:[],\r\n reportDetails:{}\r\n };\r\n\r\n componentDidMount() {\r\n console.log(this.props.gridkey)\r\n this.getRoles()\r\n this.getReportDetails();\r\n }\r\n\r\n getRoles(){\r\n let reader = {\"get\": { \"url\": getEnvVariable('Admin')+`/api/Roles/All`, \"routeProps\": {} } }\r\n requestApi(reader).then(res => {\r\n if(res && res.length > 0){\r\n console.log(res);\r\n let roles = res.map(a => {return {id: a.Id.toString(), name: a.Name}})\r\n this.setState({ rolesoptions: roles })\r\n }\r\n })\r\n }\r\n\r\n getReportDetails(){\r\n let reader = {\"get\": { \"url\": getEnvVariable('Report')+`/api/Reports/Report?id=${this.props.id}`, \"routeProps\": {} } }\r\n requestApi(reader).then(res => {\r\n if(res){\r\n console.log(res);\r\n this.setState({ reportDetails: res, SharedTo: res.SharedTo == 'N' ? 'P' : res.SharedTo, SharedToRoles: res.SharedToRoles })\r\n\r\n }\r\n })\r\n }\r\n\r\n\r\n autcompletetagshelproles = {\r\n \"options\": {\r\n \"label\": \"Select role(s)\",\r\n \"placeholder\": \"\",\r\n \"row\": 0,\r\n \"col\": 0,\r\n \"width\": 12,\r\n \"name\": \"SharedToRoles\",\r\n \"itemname\": \"roleId\",\r\n disabled: false,\r\n conditions: {\r\n },\r\n \"defaultSelected\": true\r\n }\r\n }\r\n\r\n tagsChange = (tags) => {\r\n console.log(tags)\r\n let resultdata = tags.target.value.map(a => a.id);\r\n this.setState({\r\n SharedToRoles: [...new Set(resultdata)].join()\r\n })\r\n }\r\n\r\n handleFieldChange = (evt) =>{\r\n let val = evt.target.value;\r\n if(val != 'R')\r\n this.setState({SharedTo : val, SharedToRoles:''})\r\n else\r\n this.setState({ SharedTo : val})\r\n }\r\n\r\n getShareOptions(){\r\n let reportDetails = this.state.reportDetails;\r\n reportDetails.SharedTo = this.state.SharedTo;\r\n reportDetails.SharedToRoles = this.state.SharedToRoles;\r\n return reportDetails\r\n }\r\n\r\n render() {\r\n this.autcompletetagshelproles.options.disabled = (this.state.SharedTo != 'R')\r\n return (\r\n <div>\r\n <FormDropdown dropdownvalues={sharedtooptions}\r\n // transformProps={transformprops}\r\n name='SharedTo' label='Shared With'\r\n value={this.state.SharedTo}\r\n handleFieldChange={this.handleFieldChange}\r\n />\r\n\r\n {/* {this.state.SharedTo == 'R' && <Autocompletetags className=\"pt-2\" label=\"Role(s)\"\r\n name=\"SharedToRoles\"\r\n dropdownvalues={this.state.rolesoptions}\r\n {...this.autcompletetagshelproles}\r\n handleFieldChange={this.tagsChange}\r\n<<<<<<< HEAD\r\n defaultSelValue={this.state.SharedToRoles}\r\n />}\r\n=======\r\n defaultSelValue={this.state.SharedToRoles}\r\n />} */}\r\n\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n// const mapActions = dispatch => {\r\n// return bindActionCreators({ snackbarMessage }, dispatch);\r\n// }\r\n\r\n// ShareOptions = connect(null, mapActions)(ShareOptions)\r\nexport default ShareOptions;\r\n","import { Divider } from '@material-ui/core';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Box from '@material-ui/core/Box';\r\nimport Button from '@material-ui/core/Button';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport MuiDialogActions from '@material-ui/core/DialogActions';\r\nimport MuiDialogContent from '@material-ui/core/DialogContent';\r\nimport MuiDialogTitle from '@material-ui/core/DialogTitle';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport PostAdd from '@material-ui/icons/PostAdd';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport Tabs from '@material-ui/core/Tabs';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport CheckIcon from '@material-ui/icons/Check';\r\nimport ChevronLeftIcon from '@material-ui/icons/ChevronLeft';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\r\nimport SaveIcon from '@material-ui/icons/Save';\r\nimport ShareIcon from '@material-ui/icons/Share';\r\nimport ViewCarouselIcon from '@material-ui/icons/ViewCarousel';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport { getEnvVariable } from '../../../modules/environmentalList';\r\nimport { snackbarMessage } from '../../actions';\r\nimport { GetData, PostData, PutData } from '../../controls/helpers/requests';\r\nimport { getData, postRecordData, putRecordData } from '../rest';\r\nimport SaveReport from './savereports';\r\nimport ShareOptions from './shareoptions';\r\nimport Icon from '@material-ui/core/Icon';\r\nconst _ = require('lodash');\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 <Typography\r\n component=\"div\"\r\n role=\"tabpanel\"\r\n hidden={value !== index}\r\n id={`nav-tabpanel-${index}`}\r\n aria-labelledby={`nav-tab-${index}`}\r\n {...other}\r\n >\r\n {value === index && <Box p={3}>{children}</Box>}\r\n </Typography>\r\n );\r\n}\r\n\r\n\r\nconst url = getEnvVariable('Report') + '/api/Reports/Add/'\r\nconst updateurl = getEnvVariable('Report') + '/api/Reports/Update/'\r\n\r\nconst DialogTitle = withStyles(theme => ({\r\n root: {\r\n borderBottom: `1px solid ${theme.palette.divider}`,\r\n margin: 0,\r\n padding: theme.spacing(2),\r\n },\r\n closeButton: {\r\n position: 'absolute',\r\n right: theme.spacing(1),\r\n top: theme.spacing(1),\r\n color: theme.palette.grey[500],\r\n },\r\n}))(props => {\r\n const { children, classes, onClose } = props;\r\n return (\r\n <MuiDialogTitle disableTypography className={classes.root}>\r\n <Typography variant=\"h6\">{children}</Typography>\r\n {onClose ? (\r\n <IconButton aria-label=\"Close\" className={classes.closeButton} onClick={onClose}>\r\n <CloseIcon />\r\n </IconButton>\r\n ) : null}\r\n </MuiDialogTitle>\r\n );\r\n});\r\n\r\nconst DialogContent = withStyles(theme => ({\r\n root: {\r\n margin: 0,\r\n padding: theme.spacing(1) * 2,\r\n },\r\n}))(MuiDialogContent);\r\n\r\nconst DialogActions = withStyles(theme => ({\r\n root: {\r\n borderTop: `1px solid ${theme.palette.divider}`,\r\n margin: 0,\r\n padding: theme.spacing(1),\r\n },\r\n}))(MuiDialogActions);\r\n\r\n\r\nconst drawerWidth = 600;\r\n\r\nclass CustomizedDialogDemoContent extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.LayoutForm = React.createRef()\r\n this.ShareOptionsForm = React.createRef()\r\n }\r\n state = {\r\n open: true,\r\n new: false,\r\n tabIndex: 0,\r\n savedfilters: [],\r\n dialogOpen: true,\r\n openShareOptions: false,\r\n anchorEl: null,\r\n selectedReportId: '',\r\n optionsOpen: false,\r\n isInternal: getEnvVariable('AccessPortal') == \"I\" ? true : false,\r\n hascustomvalidations: false,\r\n errordata: null,\r\n checkval: false\r\n };\r\n\r\n componentDidMount() {\r\n console.log(this.props.gridkey)\r\n this.setState({ dialogOpen: true }, () => {\r\n this.requestMaster()\r\n })\r\n }\r\n\r\n requestMaster = () => {\r\n let url = getEnvVariable('Report') + '/api/ReportMaster/All'\r\n GetData(url).then(res => {\r\n let result = res.filter(e => {\r\n if (e.Key === 'SAVED_QUERIES') {\r\n return e\r\n }\r\n })\r\n this.setState({ masterreports: result })\r\n });\r\n\r\n }\r\n\r\n handleSimpleClose = () => {\r\n this.setState({ open: false }, () => {\r\n this.props.close()\r\n });\r\n }\r\n\r\n handleClose = () => {\r\n this.setState({ close: false }, () => {\r\n if (this.props && this.props.close)\r\n this.props.close()\r\n })\r\n };\r\n\r\n //ALL_DATA_USERS All Users Reports\r\n handleSave = () => {\r\n let LayoutForm = this.LayoutForm.current.savePermit();\r\n let strlengthreport = LayoutForm && LayoutForm.Name && LayoutForm.Name != null ? LayoutForm.Name.length : \"\"\r\n let strlengthreportdesc = LayoutForm && LayoutForm.Description && LayoutForm.Description != null ? LayoutForm.Description.length : \"\"\r\n if (LayoutForm.Name && LayoutForm.Name != \"\" && (LayoutForm.Name.charAt(0) === \" \" || LayoutForm.Name.charAt(0) === '\\n' || LayoutForm.Name.charAt(strlengthreport - 1) === \" \")) {\r\n let errordata = this.LayoutForm.current.customValidation(LayoutForm);\r\n if (!(_.isEmpty(errordata))) {\r\n this.setState({ hascustomvalidations: true, errordata: errordata, checkval: true })\r\n }\r\n //this.props.snackbarMessage('Leading or trailing spaces are not allowed', 'error');\r\n }\r\n else if (LayoutForm.Description && LayoutForm.Description != \"\" && (LayoutForm.Description.charAt(0) === \" \" || LayoutForm.Description.charAt(0) === '\\n' || LayoutForm.Description.charAt(strlengthreportdesc - 1) === \" \")) {\r\n let errordata = this.LayoutForm.current.customValidation(LayoutForm);\r\n if (!(_.isEmpty(errordata))) {\r\n this.setState({ hascustomvalidations: true, errordata: errordata, checkval: true })\r\n }\r\n //this.props.snackbarMessage('Leading or trailing spaces are not allowed', 'error');\r\n }\r\n else if (strlengthreport > 100) {\r\n let errordata = this.LayoutForm.current.customValidation(LayoutForm);\r\n if (!(_.isEmpty(errordata))) {\r\n this.setState({ hascustomvalidations: true, errordata: errordata, checkval: true })\r\n }\r\n //this.props.snackbarMessage('Name length should be in the range of (1-100)', 'error');\r\n }\r\n else if (strlengthreportdesc > 4000) {\r\n let errordata = this.LayoutForm.current.customValidation(LayoutForm);\r\n if (!(_.isEmpty(errordata))) {\r\n this.setState({ hascustomvalidations: true, errordata: errordata, checkval: true })\r\n }\r\n //this.props.snackbarMessage('Name length should be in the range of (1-100)', 'error');\r\n }\r\n else if (LayoutForm) {\r\n let profile = localStorage.getItem('profile') && JSON.parse(localStorage.getItem('profile'))\r\n let api = url + this.state.masterreports[0].Id;\r\n LayoutForm.MasterId = this.state.masterreports[0].Id;\r\n LayoutForm.GroupKey = this.props.gridkey;\r\n LayoutForm.OwnerName = profile.name || 'system';\r\n LayoutForm.SharedTo = 'N';\r\n LayoutForm.IsDefault = 'N';\r\n PostData(api, LayoutForm).then(response => {\r\n if (response.Id) {\r\n this.getSavedFilters()\r\n // this.props.snackbarMessage('Saved Successfully', 'success')\r\n // if (this.props.iscgrid) {\r\n // this.setState({ open: false }, () => {\r\n // this.props.close()\r\n // });\r\n // }\r\n }\r\n else {\r\n if (response.Name) {\r\n let msg = Array.isArray(response.Name) && response.Name.length > 0 ? response.Name[0] : 'Please fill correct details'\r\n this.setState({ hascustomvalidations: true, errordata: response, checkval: true })\r\n\r\n }\r\n else {\r\n this.props.snackbarMessage('Please fill correct details', 'error');\r\n }\r\n\r\n }\r\n }).catch(error => {\r\n error.then(err => {\r\n if (err) {\r\n this.setState({ hascustomvalidations: true, errordata: err, checkval: true })\r\n }\r\n })\r\n \r\n //this.props.snackbarMessage('Unable to save the report', 'error');\r\n })\r\n } else {\r\n // this.props.snackbarMessage('Please fill the details', 'error');\r\n }\r\n }\r\n\r\n setNew = (val) => {\r\n this.setState({ new: val })\r\n }\r\n\r\n handleChange = (event, newValue) => {\r\n if (newValue == 1)\r\n this.getSavedFilters();\r\n else\r\n this.setState({ tabIndex: newValue });\r\n }\r\n\r\n getSavedFilters() {\r\n let existingReportsURL = getEnvVariable('Report') + `/api/Reports/AllByGroup/${this.props.gridkey}`\r\n GetData(existingReportsURL).then(res => {\r\n // console.log(res);\r\n if (res && Array.isArray(res)) {\r\n this.setState({ savedfilters: res, tabIndex: 1 })\r\n }\r\n }).catch(ex => {\r\n console.log(ex)\r\n })\r\n }\r\n\r\n loadReport = (id, view = false) => {\r\n if (this.props.loadReport) {\r\n this.props.loadReport(id, view);\r\n }\r\n }\r\n\r\n closeDialog = () => {\r\n this.setState({\r\n dialogOpen: false\r\n }, () => {\r\n if (this.props && this.props.close)\r\n this.props.close()\r\n })\r\n }\r\n\r\n shareReport = (evt, id) => {\r\n console.log(id)\r\n this.setState({ openShareOptions: true, selectedReportId: id })\r\n }\r\n\r\n shareDialogClose = () => {\r\n this.setState({ openShareOptions: false })\r\n }\r\n\r\n handleUpdate = () => {\r\n let opt = this.ShareOptionsForm.current.getShareOptions();\r\n let api = updateurl + this.state.masterreports[0].Id;\r\n if (opt.SharedTo === 'R' && !opt.SharedToRoles) {\r\n this.props.snackbarMessage('Select roles', 'error');\r\n return false;\r\n }\r\n PutData(api, opt).then(response => {\r\n if (response) {\r\n this.props.snackbarMessage('Saved Successfully', 'success')\r\n }\r\n }).catch(error => {\r\n error.then(err => {\r\n if (err) {\r\n this.setState({ hascustomvalidations: true, errordata: err, checkval: true })\r\n }\r\n })\r\n })\r\n }\r\n\r\n handleDefaultReport = (report) => {\r\n let def = report.IsDefault == \"N\" ? \"Y\" : \"N\";\r\n let id = report.Id\r\n const updatedefaultvalurl = getEnvVariable('Report') + `/api/Reports/SetDefault/${id}/${report.GroupKey}?defaultvalue=${def}`\r\n\r\n postRecordData(updatedefaultvalurl, null).then(response => {\r\n if (response) {\r\n let allreports = this.state.savedfilters;\r\n var foundIndex = allreports.findIndex(x => x.Id == id);\r\n allreports[foundIndex].IsDefault = def;\r\n this.setState({ savedfilters: allreports }, () => {\r\n this.props.snackbarMessage('Saved Successfully', 'success');\r\n this.loadReport(id);\r\n });\r\n }\r\n }).catch(error => {\r\n this.props.snackbarMessage('Unable to save the report', 'error');\r\n })\r\n }\r\n\r\n setQuickView = (report) => {\r\n let def = report.IsQuickView == \"N\" ? \"Y\" : \"N\";\r\n let id = report.Id\r\n const updatedefaultvalurl = getEnvVariable('Report') + `/api/Reports/SetQuickView/${id}/${report.GroupKey}?IsQuickView=${def}`\r\n GetData(updatedefaultvalurl,).then(response => {\r\n if (response) {\r\n this.props.snackbarMessage('Saved Successfully', 'success');\r\n }\r\n }).catch(error => {\r\n this.props.snackbarMessage('Unable to set this to quick view', 'error');\r\n })\r\n }\r\n\r\n callbackfunc = () => {\r\n this.setState({ checkval: false })\r\n }\r\n\r\n render() {\r\n return (\r\n\r\n <div>\r\n {this.state.masterreports && this.state.masterreports.length > 0 && <div>\r\n\r\n <AppBar position=\"sticky\" color='secondary'>\r\n\r\n <Toolbar variant=\"dense\">\r\n <div >\r\n <Typography variant=\"h6\" color=\"inherit\" style={{ display: 'flex', justifyContent: 'center', alignItems: 'center', }}>\r\n <PostAdd /><p1> Reports </p1>\r\n </Typography>\r\n </div>\r\n <div className=\"col float-right\"> </div>\r\n {\r\n <i className=\"zoom m-1\" onClick={this.props.back && this.props.back['onClick'] ? this.props.back['onClick'] : this.props.close} ><IconButton className=\"zoom m-1\" title=\"Back\" color=\"inherit\">\r\n <ChevronLeftIcon fontSize=\"small\" />\r\n </IconButton></i>\r\n }\r\n {this.state.tabIndex == 0 &&\r\n <i className=\"zoom m-1\" onClick={this.handleSave} ><IconButton className=\"zoom m-1\" title=\"Save\" color=\"inherit\">\r\n <SaveIcon fontSize=\"small\" />\r\n </IconButton></i>\r\n }\r\n </Toolbar>\r\n\r\n </AppBar>\r\n\r\n <Tabs value={this.state.tabIndex} onChange={this.handleChange} indicatorColor=\"primary\"\r\n textColor=\"primary\">\r\n <Tab label=\"New Report\" />\r\n <Tab label=\"Load\" />\r\n </Tabs>\r\n\r\n <TabPanel className=\"p-1 m-4\" value={this.state.tabIndex} index={0}>\r\n <Typography className=\"col\" style={{position : 'relative' , right: '35px'}}>\r\n <div className=\"col-sm-12\">\r\n <span className=\"pl-1 m-4 text-primary\">Report Group : </span>{this.state.masterreports[0].Name}\r\n </div>\r\n <SaveReport {...this.props} callbackfunc={this.callbackfunc} checkval={this.state.checkval} errordata={this.state.errordata} hascustomvalidations={this.state.hascustomvalidations} compmap={this.state.compmapdata} ref={this.LayoutForm} />\r\n\r\n </Typography>\r\n </TabPanel>\r\n\r\n <TabPanel className=\"col-12 p-1 m-3\" value={this.state.tabIndex} index={1}>\r\n <Typography>\r\n {this.state.savedfilters && this.state.savedfilters.map((element, index) => {\r\n return (<div><div className=\"row pt-1 mr-4\">\r\n <div className=\"col-md-11 col-sm-11 col-xs-11\" style={element.IsDefault == 'Y' ? { \"color\": \"green\" } : { \"color\": \"black\" }}>{element.Title}</div>\r\n <div className=\"col-md-1 col-sm-1 col-xs-1\">\r\n <IconButton size={'small'} name={element.Title}\r\n onClick={(event) => this.setState({ anchorEl: event.currentTarget, optionsOpen: index })}\r\n >\r\n <MoreVertIcon />\r\n </IconButton>\r\n <Menu\r\n anchorEl={this.state.anchorEl}\r\n open={index === this.state.optionsOpen}\r\n onClick={() => this.setState({ anchorEl: null, optionsOpen: false })}\r\n >\r\n <MenuItem onClick={() => this.loadReport(element.Id, true)}>\r\n <ViewCarouselIcon color=\"primary\" /> View\r\n </MenuItem>\r\n <Divider />\r\n {this.state.isInternal && <MenuItem onClick={(evt) => this.shareReport(evt, element.Id)}>\r\n <ShareIcon color=\"primary\" /> Share\r\n </MenuItem>}\r\n <Divider />\r\n <MenuItem onClick={() => { this.handleDefaultReport(element) }}>\r\n <CheckIcon color=\"primary\" /> \r\n {element.IsDefault == 'Y' ? 'Remove Default' : 'Set as Default'}\r\n </MenuItem>\r\n <Divider />\r\n {/* <MenuItem onClick={() => this.setToQuickView(element.Id, true)}>\r\n <ViewCarouselIcon color=\"primary\" /> Quick View\r\n </MenuItem> */}\r\n <Divider />\r\n </Menu>\r\n </div>\r\n\r\n </div>\r\n <Divider /></div>)\r\n })}\r\n <Dialog onClose={this.shareDialogClose} fullWidth aria-describedby=\"share-report\" aria-labelledby=\"simple-dialog-title\" open={this.state.openShareOptions}>\r\n\r\n <DialogTitle id=\"simple-dialog-title\" onClose={this.shareDialogClose}>Share</DialogTitle>\r\n <DialogContent>\r\n <ShareOptions {...this.props} ref={this.ShareOptionsForm} id={this.state.selectedReportId} />\r\n </DialogContent>\r\n <DialogActions>\r\n <Button onClick={this.handleUpdate} color=\"primary\">\r\n Save\r\n </Button>\r\n </DialogActions>\r\n\r\n </Dialog>\r\n\r\n </Typography>\r\n </TabPanel>\r\n </div>\r\n }\r\n </div >\r\n\r\n );\r\n }\r\n}\r\nconst mapProps = (state) => {\r\n return { compmapdata: state.compmapvalues }\r\n}\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage }, dispatch);\r\n}\r\n\r\nCustomizedDialogDemoContent = connect(mapProps, mapActions)(CustomizedDialogDemoContent)\r\nexport default CustomizedDialogDemoContent;","const workflow = {\r\n \"type\": \"workflow\",\r\n \"key\": \"workflowapplication\",\r\n \"order\": 35,\r\n \"options\": {\r\n //\"route\": \"/Administration\",\r\n \"routes\": [\r\n {\r\n \"route\": \"/Administration/applicationreview\",\r\n \"routeParams\": \":routeid\",\r\n },\r\n {\r\n \"route\": \"\",\r\n \"routeParams\": \":routeid1\"\r\n },\r\n {\r\n \"route\": \"/Workflow\"\r\n },\r\n ],\r\n\r\n styles: {\r\n // width: '80vw'\r\n },\r\n \"params\": {\r\n \"SitePermitTypeAppSettingsId\": {\r\n getvaluefromtype: 'props',\r\n paramname: 'SitePermitTypeAppSettingsId',\r\n },\r\n \"WorkflowId\": {\r\n getvaluefromtype: 'props',\r\n paramname: 'WorkflowId',\r\n },\r\n \"ParentWorkflowId\": {\r\n getvaluefromtype: 'props',\r\n paramname: 'ParentWorkflowId',\r\n },\r\n // \"ParentWorkflowId\": 0,\r\n \"ApplicationID\": {\r\n getvaluefromtype: 'props',\r\n paramname: 'ApplicationID',\r\n },\r\n \"siteID\": {\r\n getvaluefromtype: 'props',\r\n paramname: 'siteID',\r\n },\r\n \"RegionId\":{\r\n getvaluefromtype:'props',//route,rest,value,prop,\r\n paramname:'RegionId',\r\n }, \r\n isAdmin: false\r\n },\r\n headerProps: {\r\n \"backbutton\": true,\r\n },\r\n \"back\": {\r\n \"popupback\": true\r\n },\r\n }\r\n};\r\n\r\nexport default workflow;","/**\r\n *********************************************************\r\n Description: Dropdown component. .\r\n Required props: type,value,dropdownvalues.\r\n limitations : N/A.\r\n *********************************************************\r\n**/\r\n\r\nimport {\r\n InputAdornment, ListSubheader,\r\n TextField, Tooltip, Box\r\n} from '@material-ui/core';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Select from '@material-ui/core/Select';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport React, { useMemo, useState } from \"react\";\r\nimport DefaultSettings from './settings';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport { getColor } from '../../controls/components/custom/customcolor';\r\nconst _ = require('lodash');\r\n\r\nconst defaults = {\r\n transformProps: {\r\n label: 'Name',\r\n value: 'Id'\r\n }\r\n}\r\nexport default function Dropdown(props) {\r\n const { value, handleFieldValue, hidedefault, extraProps, shareProps, error, required, tooltip, contexthelp, menuDisabled, className, IsSelectable, disablekey, ...otherProps } = props\r\n const { label, helperText, items, subname, name, fullWidth, disabled } = otherProps\r\n let { transformProps, dataAttributes, nested, } = extraProps || {}\r\n let allitems = subname && items ? items[subname] : items;\r\n transformProps = transformProps || defaults.transformProps\r\n dataAttributes = dataAttributes || [];\r\n let val = value;\r\n let defval = null;\r\n const [searchText, setSearchText] = useState(\"\");\r\n\r\n const handleFieldChange = (e) => {\r\n if (!(_.isUndefined(e.target.value))) {\r\n handleFieldValue(e);\r\n }\r\n }\r\n\r\n if (!(allitems || []).some((o) => o[transformProps.value] === \"\") && (allitems || []).some((o) => o['isDefault'])) {\r\n (allitems || []).unshift({ [transformProps.label]: \"emptyspace\", [transformProps.value]: \"\", })\r\n }\r\n\r\n\r\n\r\n if (allitems && allitems.length > 0 && (!value || value === '' || value === undefined)) { //transformProps.default &&\r\n let defObj = hidedefault ? null : (allitems || []).find(i => i['IsDefault'] === 'Y' || i['isDefault'] === 'Y' || i['IsConfigurable']==='Y')\r\n if (defObj) {\r\n defval = defObj[transformProps.value] ? defObj[transformProps.value] : ('' || null)\r\n if (defval && (val === undefined || value === undefined || val === null || val === '' || value === \"\") && props.name) {\r\n let e = { target: { name: name, value: defval }, currentTarget: { dataset: null } }\r\n handleFieldChange(e);\r\n }\r\n }\r\n\r\n }\r\n\r\n\r\n const containsText = (text, searchText) => {\r\n if (text)\r\n return text && text.toString().toLowerCase().indexOf(searchText.toString().toLowerCase()) > -1;\r\n }\r\n\r\n const displayedOptions = useMemo(() => (allitems || []).filter((option) => {\r\n return containsText((nested && option[nested]) ? option[nested][transformProps.label] : option[transformProps.label], searchText)\r\n }), [searchText, allitems]);\r\n\r\n const isDisabled = (key) => {\r\n if (menuDisabled) {\r\n return menuDisabled && menuDisabled[key] ? true : false;\r\n }\r\n else if (disablekey) {\r\n return disablekey && Array.isArray(disablekey) && disablekey.includes(key) ? true : false\r\n }\r\n else if (IsSelectable) {\r\n return IsSelectable === 'Y' ? true : false\r\n }\r\n else {\r\n return false\r\n }\r\n }\r\n\r\n return (\r\n <Box className={className} >\r\n <FormControl fullWidth={fullWidth ? fullWidth : true} error={error} disabled={disabled || false} required={required} >\r\n <InputLabel style={{ fontWeight: 'bold', color: required ? getColor() : (error ? 'red' : 'black') }} shrink>{label}{tooltip && <Tooltip title={tooltip ? tooltip : null}\r\n placement=\"bottom-start\" ><HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em', color: '#007bff', marginLeft: 5 }} onClick={(evt) => contexthelp ?\r\n DefaultSettings.showDrawer(contexthelp) : evt.preventDefault()} />\r\n </Tooltip>}</InputLabel>\r\n <Select\r\n value={(val || val === \"\") ? val : (defval || '')} //|| defaultvalue\r\n onChange={handleFieldChange}\r\n inputProps={{\r\n name: name\r\n }}\r\n MenuProps={{\r\n anchorOrigin: {\r\n vertical: \"bottom\",\r\n horizontal: \"left\"\r\n },\r\n autoFocus: false,\r\n getContentAnchorEl: null\r\n }}\r\n error={error}\r\n onClose={() => setSearchText(\"\")}\r\n className=\"text-secondary\"\r\n >\r\n <ListSubheader style={{ position: 'inherit' }}>\r\n <TextField\r\n size=\"small\"\r\n // Autofocus on textfield\r\n variant='outlined'\r\n autoFocus\r\n placeholder=\"Type to search...\"\r\n fullWidth\r\n InputProps={{\r\n startAdornment: (\r\n <InputAdornment position=\"start\">\r\n <SearchIcon />\r\n </InputAdornment>\r\n )\r\n }}\r\n onChange={(e) => setSearchText(e.target.value)}\r\n onKeyDown={(e) => {\r\n if (e.key !== \"Escape\") {\r\n e.stopPropagation();\r\n }\r\n }}\r\n />\r\n </ListSubheader>\r\n {displayedOptions && displayedOptions.length > 0 && displayedOptions.map((each, index) => {\r\n const { label, value } = transformProps;\r\n let nestedSelected = null\r\n const name = nested ? each[nested][label] : each[label]\r\n const key = nested ? each[nested][value] : each[value]\r\n if (nested && each[nested] && each[nested].IsSelectable)\r\n nestedSelected = each[nested].IsSelectable\r\n let isSelectable = each.isSelectable || each.IsSelectable || nestedSelected || null\r\n const dataAttr = dataAttributes.reduce((accum, e) => {\r\n const { key, name } = e\r\n accum[key] = each[name]\r\n return accum\r\n }, {})\r\n return <MenuItem value={key || ''}\r\n disabled={isSelectable ? (isSelectable === 'Y' ? false : true) : isDisabled(key)}\r\n {...dataAttr}><Typography variant=\"inherit\" > <pre style={{ fontFamily: 'inherit', margin: '0px', color: val === key ? 'grey' : 'black' }}>\r\n {name === \"emptyspace\" ? \"\" : name}\r\n </pre></Typography> </MenuItem> // {//index }\r\n })}\r\n </Select>\r\n {helperText && <FormHelperText>{helperText}</FormHelperText>}\r\n </FormControl>\r\n </Box>\r\n )\r\n}","import DefaultSettings from '../components/settings';\r\n\r\nconst handleMessage = (alertMessage) => {\r\n if (DefaultSettings.getAlert() != null && alertMessage && alertMessage.message !== '')\r\n DefaultSettings.getAlert().show((alertMessage && alertMessage.message), (alertMessage && alertMessage.type || 'info'));\r\n}\r\n\r\n//alert\r\nconst handleNotices = (id, isAuto = false, values, info) => {\r\n id && DefaultSettings.showNotice(id, isAuto, values, info);\r\n}\r\n\r\nconst handleNotifications = (notify, isAuto = false, values, info) => {\r\n notify && DefaultSettings.showNotify(notify, isAuto, values, info);\r\n}\r\n\r\nconst handleConfirmation = (alertMessage) => {\r\n alertMessage && DefaultSettings.displayConfirmation(alertMessage);\r\n}\r\n\r\nexport default function handleEvents(events, fieldValues, info) {\r\n let values = fieldValues;\r\n const { alertMessage, notificationId, noticesId, isAutoNotice, isAutoNotification, messageType, decodeType, sideBarItems = [] } = events;\r\n values['sideBarItems'] = (values['sideBarItems'] && values['sideBarItems'].length > 0) ? values['sideBarItems'] : sideBarItems || [];\r\n if (alertMessage) {\r\n if (alertMessage.decodeType && alertMessage.decodeType === 'C')\r\n handleConfirmation(alertMessage.message)\r\n else handleMessage(alertMessage);\r\n }\r\n handleNotices(noticesId, isAutoNotice, values, info)\r\n handleNotifications(notificationId, isAutoNotification, values, info)\r\n}\r\n\r\n","import moment from 'moment';\r\nimport DefaultSettings from '../components/settings';\r\nimport { createGridRequest, createRequest, requestApi } from '../helpers/rest';\r\nimport { validation as validationConverter } from '../wrappers/helpers/converters';\r\nimport { DynamicEvaluate, Evaluate } from './calculate';\r\nimport handleEvents from './events';\r\nconst _ = require('lodash');\r\nconst validityStatus = {\r\n 'true': 'valid',\r\n 'false': 'inValid'\r\n}\r\n\r\nconst prevalidityStatus = {\r\n 'true': 'V',\r\n 'false': 'I'\r\n}\r\n\r\nlet currentrefIds = []\r\n\r\nexport const handleActionsToEffects = ({ fieldValues, conditions, global, extras, onEvent = {}, info = null, kendoProps, name = null, EventType = 'OC' }) => {\r\n localStorage.removeItem('onEventRules')\r\n\r\n if (global) {\r\n return handleGlobalRules(fieldValues, conditions, global, extras, onEvent, info, kendoProps, name, EventType)\r\n }\r\n else {\r\n if (conditions) {\r\n const { rules, triggerRules } = conditions\r\n const temp = rules && rules.reduce((accum, eachCondition) => {\r\n let { effects } = handleConditon(eachCondition, fieldValues, extras, triggerRules, onEvent, info, kendoProps, name, EventType)\r\n return accum.concat(effects)\r\n }, [])\r\n return temp\r\n }\r\n }\r\n}\r\n\r\nexport const handleGlobalRules = (fieldValues, conditions, global, extras, onEvent = {}, info = null, kendoProps, name, EventType) => {\r\n const { rules, triggerRules } = conditions\r\n const globalEffects = global && global.rules && global.rules.map(eachCondition => {\r\n return handleConditon(eachCondition, fieldValues, extras, global.triggerRules, onEvent, info, kendoProps, name, EventType)\r\n }) || []\r\n\r\n //remove duplicate field changes based on priority and convert to an object\r\n const globalFieldChanges = removeDuplicateEffects(globalEffects)\r\n\r\n const individualEffects = rules && rules.reduce((accum, eachCondition) => {\r\n let { canOverwrite, effects = [], namehandle } = handleConditon(eachCondition, fieldValues, extras, triggerRules, onEvent, info, kendoProps, name, EventType)\r\n if (canOverwrite) {\r\n effects.forEach((e, i) => {\r\n const { name, type } = e\r\n if (!accum[name]) {\r\n accum[name ? name : (namehandle && namehandle.length > 0 && namehandle[i] || name)] = e\r\n }\r\n })\r\n }\r\n else {\r\n effects.forEach(e => {\r\n const { name, type } = e\r\n if (!accum[name]) {\r\n if (globalFieldChanges[name]) accum[name] = globalFieldChanges[name]\r\n else { accum[name] = e }\r\n }\r\n })\r\n }\r\n return accum\r\n }, {})\r\n\r\n let onEventEffects = {}\r\n if (localStorage.getItem('onEventRules'))\r\n onEventEffects = removeDuplicateEffects(JSON.parse(localStorage.getItem('onEventRules')) || [])\r\n const alleffects = { ...individualEffects, ...onEventEffects }\r\n let effect = Object.keys(alleffects).map(each => alleffects[each])\r\n let globaleffect = Object.keys(globalFieldChanges).map(each => globalFieldChanges[each])\r\n return [...effect, ...globaleffect]\r\n}\r\n\r\nexport const removeDuplicateEffects = (alleffects) => {\r\n if (alleffects)\r\n return alleffects.reduce((accum, each) => {\r\n if (each) {\r\n const { effects = [] } = each\r\n effects.forEach(e => {\r\n if (e) {\r\n const { name, type } = e\r\n //handles Priority\r\n if (!accum[name]) accum[name] = e\r\n }\r\n })\r\n }\r\n return accum\r\n }, {})\r\n}\r\n\r\n\r\nexport const handleConditon = (eachCondition, fieldValues, extras, triggerRules = {}, onEvent = {}, info = null, kendoProps, name, EventType) => {\r\n if (eachCondition) {\r\n const { check, uncheck = true, run, ruleId, canOverwrite, isDynamicRule, hasTriggerRule, triggerRuleId, dynamicData = [], fields, eventOn } = eachCondition\r\n let status = false;\r\n // console.log('check:', check, ruleId)\r\n // if (ruleId === 421)\r\n // debugger\r\n status = check ? check.every(each => {\r\n currentrefIds = []\r\n return handleRules(each, fieldValues, isDynamicRule, dynamicData, fields)\r\n }) : true\r\n let effects = []\r\n let namehandle = []\r\n if (hasTriggerRule && !status && triggerRuleId) {\r\n return handleConditon(triggerRules[triggerRuleId], fieldValues, extras, triggerRules, onEvent, info, kendoProps, name, EventType)\r\n }\r\n else {\r\n if ((status || uncheck) || (onEvent && onEvent.rules && onEvent.rules.length > 0)) {\r\n // if (ruleId === undefined) {\r\n // console.log(check, status)\r\n // }\r\n // else console.log(ruleId, status)\r\n let evts = (run && run['events']) || null;\r\n if (status && extras && extras.runEvents && evts && (evts.alertMessage !== null || evts.hasRaiseNotification !== null ||\r\n evts.isAutoNotice !== null || evts.noticesId !== null ||\r\n evts.isAutoNotification !== null || evts.notificationId !== null)) {\r\n run['events'] && handleEvents(run['events'], fieldValues, { ...info, 'BusinessRuleId': ruleId })\r\n }\r\n const validityRun = run[validityStatus[status]]\r\n let tempValidityRun = _.cloneDeep(validityRun)\r\n if (onEvent && onEvent.rules && onEvent.rules.length > 0) {\r\n let filterRules = onEvent.rules.filter(parent => {\r\n return ruleId === parent.preConditionRuleId && (parent.preConditionCheck === prevalidityStatus[status])\r\n })\r\n if (filterRules && filterRules.length > 0) {\r\n handleOnEvent(filterRules, status, fieldValues, extras, triggerRules, onEvent, info, kendoProps, name, EventType)\r\n }\r\n }\r\n if (localStorage.getItem('BusinessRules')) {\r\n let randomnumber = (Math.random() + 1).toString(36).substring(2)\r\n let storageBusiness = JSON.parse(localStorage.getItem('BusinessRules')) ? JSON.parse(localStorage.getItem('BusinessRules')) : [];\r\n let storageValues = (tempValidityRun && tempValidityRun.length > 0 && tempValidityRun.filter(e => e.type === 'prop')) || [];\r\n if (storageValues && storageValues.length > 0) {\r\n (storageValues || []).map(each => {\r\n each['HasValue'] = each['hasValue'] ? 'Y' : 'N';\r\n delete each['hasValue']\r\n each['HasFilter'] = each['hasFilter'] ? 'Y' : 'N';\r\n delete each['hasFilter']\r\n each['SwappedRuleType'] = each['swappedRuleType'] ? 'Y' : 'N';\r\n delete each['swappedRuleType']\r\n each['ValueType'] = each['valueType'];\r\n delete each['valueType']\r\n each['IsRequired'] = each['required'] ? 'Y' : 'N';\r\n delete each['required']\r\n each['IsDisabled'] = each['disabled'] ? 'Y' : 'N';\r\n delete each['disabled']\r\n each['IsVisible'] = each['isVisible'] ? 'Y' : 'N';\r\n delete each['isVisible']\r\n each['Value'] = each['value']\r\n delete each['value']\r\n each['Name'] = each['name']\r\n delete each['name']\r\n each['Type'] = each['type']\r\n delete each['type']\r\n each['EventAt'] = moment().format('MM/DD/YYYY, hh:mm:ss a');\r\n each['EventGroupId'] = randomnumber;\r\n each['AllowedValues'] = (each['allowedValues'] && each['allowedValues'].length > 0) ? each['allowedValues'].toString() : '';\r\n delete each['allowedValues']\r\n each['RuleId'] = ruleId;\r\n each['EventType'] = EventType\r\n each['TriggerField'] = name\r\n each['Triggerby'] = JSON.parse(localStorage.getItem('profile')).name\r\n each['ProjectMessageId'] = ''//status && run['events'] && run['events'].alertMessage.toString()\r\n each['NotificationId'] = status && run['events'] && run['events'].notificationId\r\n each['NoticesId'] = status && run['events'] && run['events'].noticesId\r\n each['EventTriggerType'] = 'BR' //get it from sections.js bases on routes with sidebar\r\n each['EventMessage'] = ''\r\n each['EventActionType'] = 'A'\r\n })\r\n }\r\n storageBusiness = [...storageBusiness, ...storageValues]\r\n localStorage.setItem('SaveCurrentRecord', 'Y')\r\n localStorage.setItem('BusinessRules', JSON.stringify(storageBusiness))\r\n }\r\n // const validityRun = run[validityStatus[status]]\r\n if (validityRun && validityRun.length > 0) {\r\n effects = validityRun.map(each => {\r\n const temp = handleEffects({ ...each, currentrefIds, dynamicData }, fieldValues, status, extras, kendoProps);\r\n if (temp) {\r\n namehandle.push(each.name)\r\n return temp\r\n }\r\n })\r\n }\r\n }\r\n else effects = []\r\n }\r\n return {\r\n canOverwrite: canOverwrite || false,\r\n effects: effects,\r\n status: status,\r\n namehandle: namehandle\r\n }\r\n }\r\n}\r\n\r\nexport const handleOnEvent = (onEvtconditions, status, fieldValues, extras, triggerRules, onEvent, info, kendoProps, name, EventType) => {\r\n onEvtconditions.sort((a, b) => a.ruleId - b.ruleId).forEach(pre => {\r\n if ((pre.preConditionCheck && (pre.preConditionCheck === prevalidityStatus[status]))) {\r\n let preResult = handleConditon(pre, fieldValues, extras, triggerRules, onEvent, info, kendoProps, name, EventType);\r\n if (preResult && preResult.effects && preResult.effects.length > 0) {\r\n let stateeffects = localStorage.getItem('onEventRules') && JSON.parse(localStorage.getItem('onEventRules')) || []\r\n stateeffects.push(preResult)\r\n localStorage.setItem('onEventRules', JSON.stringify(stateeffects))\r\n }\r\n }\r\n })\r\n // return [preCondeffects, preCondnamehandle]\r\n}\r\n\r\nexport const handleEffects = (fieldEffects, fieldValues, status, extras, kendoProps) => {\r\n let tempval = {}\r\n const { type, name, getdatafrom, getValue, read, events, itemfilterval, setLocalStorage, ...otherProps } = fieldEffects\r\n // const { setLocalStorage } = otherProps\r\n switch (type) {\r\n case 'load':\r\n return handleLoad(read, fieldValues, extras).then(res => {\r\n return {\r\n name: name,\r\n type: 'prop',\r\n ...otherProps,\r\n ...res\r\n }\r\n })\r\n case 'loadtemp':\r\n return handleLoad(read, tempval, extras).then(res => {\r\n if (res) {\r\n return {\r\n type: 'grid',\r\n ...res\r\n }\r\n }\r\n else {\r\n return {\r\n type: 'grid',\r\n ...{ data: [] }\r\n }\r\n }\r\n })\r\n case 'loadValues':\r\n const { loadtransformProps, initialdataAttributes } = otherProps\r\n return {\r\n name: name,\r\n type: 'loadDefaultValues',\r\n transformProps: loadtransformProps,\r\n datasetval: initialdataAttributes\r\n }\r\n\r\n case 'save':\r\n case 'saveduplicate':\r\n return handleSave(read, fieldValues).then(res => {\r\n if (res.errors)\r\n return {\r\n type: 'error',\r\n error: res.errors\r\n }\r\n else if (res.returnvalue)\r\n return {\r\n type: 'initial',\r\n error: res.errors\r\n }\r\n else {\r\n events && handleEvents(events, fieldValues);\r\n // if (setLocalStorage) {\r\n // localStorage.setItem(name, res[name])\r\n // }\r\n return {\r\n type: 'savesuccess',\r\n fieldValues: res,\r\n ...otherProps\r\n }\r\n }\r\n })\r\n case 'edit':\r\n return {\r\n type: 'edit',\r\n\r\n }\r\n case 'initial':\r\n return handleLoad(read, fieldValues).then(res => {\r\n return {\r\n type: 'initial',\r\n ...res\r\n }\r\n })\r\n case 'BRActivity':\r\n return handleBRActivity(read, (localStorage.getItem('BusinessRules') && JSON.parse(localStorage.getItem('BusinessRules'))) || [], fieldValues).then(res => {\r\n if (res)\r\n return { type: 'BRActivity', value: false }\r\n })\r\n case 'count':\r\n return handleLoad(read, fieldValues).then(res => {\r\n return {\r\n type: 'value',\r\n key: name,\r\n result: (res && Object.keys(res)) ? Object.keys(res).length : 0\r\n }\r\n })\r\n // case 'getLocalStorageData':\r\n // return {\r\n // name: name,\r\n // type: 'getLocalStorageData',\r\n // result: getLocalStorageData(name, fieldValues, getdatafrom, otherProps.getvalue)\r\n // }\r\n case 'loadbybody':\r\n return handleLoadBody(read, fieldValues).then(res => {\r\n return {\r\n type: 'initial',\r\n ...res\r\n }\r\n })\r\n case 'businessrules':\r\n return handleLoad(read, fieldValues).then(res => {\r\n return {\r\n type: 'businessrules',\r\n ...res\r\n }\r\n })\r\n case 'BRHiddenState':\r\n return handleLoad(read, fieldValues).then(res => {\r\n return {\r\n type: 'BRHiddenState',\r\n ...res\r\n }\r\n })\r\n case 'validations':\r\n const { transformProps } = otherProps\r\n return handleValidations(read, fieldValues).then(res => {\r\n const temp = validationConverter(res[0], {\r\n removesubfieldname: transformProps.removesubfieldname,\r\n }, Object.keys(fieldValues))\r\n return {\r\n type: 'validations',\r\n ...temp\r\n }\r\n })\r\n case 'grid':\r\n return handleGrid(read, fieldValues, extras, kendoProps).then(res => {\r\n if (res && !kendoProps) {\r\n return {\r\n type: 'grid',\r\n ...res\r\n }\r\n }\r\n else if (res && kendoProps) {\r\n return {\r\n type: 'gridExport',\r\n ...res\r\n }\r\n }\r\n else {\r\n return {\r\n type: 'grid',\r\n ...{ data: [] }\r\n }\r\n }\r\n })\r\n // case 'show': //correct: unused\r\n // return {\r\n // name: name,\r\n // type: 'layout',\r\n // result: handleShow()\r\n // }\r\n case 'clear':\r\n return {\r\n name: name,\r\n type: 'value',\r\n result: { value: '' }\r\n }\r\n case 'clearItems':\r\n return {\r\n name: name,\r\n type: 'prop',\r\n result: { items: [] }\r\n }\r\n case 'clearValues':\r\n return {\r\n type: 'clearList',\r\n result: {}\r\n }\r\n case 'calculate':\r\n return {\r\n name: name,\r\n type: 'prop',\r\n hasValue: true,\r\n ...otherProps,\r\n value: handleCalculations(otherProps, fieldValues, extras)\r\n }\r\n case 'arrayloadMultiple':\r\n return handleLoad(read, fieldValues).then(res => {\r\n return {\r\n name: name,\r\n type: 'nestedlistArray',\r\n otherProps,\r\n ...res\r\n }\r\n })\r\n case 'arrayloadMultipleValues':\r\n return handleLoad(read, fieldValues).then(res => {\r\n return {\r\n name: name,\r\n type: 'nestedlistArrayValues',\r\n itemfilterval: itemfilterval,\r\n otherProps,\r\n ...res\r\n }\r\n })\r\n case 'autocompletemultiselect':\r\n return handleLoad(read, fieldValues).then(res => {\r\n return {\r\n name: name,\r\n type: 'autocompleteselectonload',\r\n value:fieldValues,\r\n itemfilterval: itemfilterval,\r\n otherProps,\r\n ...res\r\n }\r\n })\r\n case 'arraydropdownMultiple':\r\n return handleLoad(read, fieldValues).then(res => {\r\n return {\r\n name: name,\r\n type: 'nesteddropdownArray',\r\n otherProps,\r\n ...res\r\n }\r\n })\r\n case 'result':\r\n return {\r\n name: name,\r\n type: 'prop',\r\n ...otherProps,\r\n value: fieldValues[name]\r\n }\r\n case 'resultvalue':\r\n case 'initialloadextrainfovalue':\r\n case 'fulldata':\r\n case 'reportinfo':\r\n return {\r\n key: name,\r\n type: 'value',\r\n result: fieldValues[name]\r\n }\r\n case 'getValue':\r\n return {\r\n key: name,\r\n type: 'value',\r\n result: { value: fieldValues[getdatafrom][getValue] }\r\n }\r\n case 'addlayout':\r\n return {\r\n type: 'addlayout',\r\n name: name\r\n }\r\n case 'removelayout':\r\n return {\r\n type: 'removelayout',\r\n name: name\r\n }\r\n case 'domainmapper':\r\n return handleLoad(read, fieldValues, extras).then(res => {\r\n return {\r\n name: name,\r\n type: 'domainmapper',\r\n ...res\r\n }\r\n })\r\n case 'appendextravalues':\r\n return handleLoad(read, fieldValues, extras).then(res => {\r\n return {\r\n name: name,\r\n getdatafrom: getdatafrom,\r\n type: 'appendextravalues',\r\n ...res\r\n }\r\n })\r\n default:\r\n return fieldEffects\r\n }\r\n\r\n\r\n}\r\n\r\n// export const getLocalStorageData = (name, fieldValues, getdatafrom, getvalue) => {\r\n// let value\r\n// if (getvalue === getdatafrom) {\r\n// value = localStorage.getItem(getvalue) ? JSON.parse(localStorage.getItem(getvalue)) : null\r\n// }\r\n// else {\r\n// value = localStorage.getItem(getdatafrom) && JSON.parse(localStorage.getItem(getdatafrom))[getvalue]\r\n// }\r\n// return { ...fieldValues, [name]: value }\r\n// }\r\n\r\nexport const handleRules = (fieldRules, fieldValues, isDynamicRule = false, dynamicData = {}, fields) => {\r\n const { condition, rules, hideLocalStorage = false } = fieldRules;\r\n\r\n // eslint-disable-next-line default-case\r\n switch (condition) {\r\n case 'AND':\r\n let tempAndBoolean = rules.every(each => {\r\n const { condition } = each\r\n if (condition && fieldValues) {\r\n return handleRules(each, fieldValues, hideLocalStorage)\r\n }\r\n else if (!condition && each.name && fieldValues && !fieldValues.hasOwnProperty(each.name) && isDynamicRule) {\r\n const temp = DynamicEvaluate(each, fieldValues, dynamicData, fields)\r\n if (temp && temp.length > 0) {\r\n if (currentrefIds.length === 0)\r\n currentrefIds = temp\r\n else currentrefIds = currentrefIds.filter(value => temp.includes(value))// [...currentrefIds, ...temp[0]] //concat(temp[0])\r\n // currentrefIds = currentrefIds.filter((val, index) => { return currentrefIds.indexOf(val) === index })\r\n }\r\n return (temp && temp.length > 0) ? true : false\r\n }\r\n else {\r\n if (fieldValues) {\r\n const temp = handleOperators(each, fieldValues, hideLocalStorage)\r\n return temp\r\n }\r\n }\r\n })\r\n return tempAndBoolean;\r\n case 'OR':\r\n let tempBoolean = rules.some(each => {\r\n const { condition } = each\r\n if (condition) {\r\n return handleRules(each, fieldValues)\r\n }\r\n else if (!condition && fieldValues && !fieldValues.hasOwnProperty(each.name) && isDynamicRule) {\r\n const temp = DynamicEvaluate(each, fieldValues, dynamicData, fields)\r\n if (temp && temp.length > 0) {\r\n if (currentrefIds.length === 0)\r\n currentrefIds = temp\r\n else currentrefIds = currentrefIds.filter(value => temp.includes(value))// [...currentrefIds, ...temp[0]] //concat(temp[0])\r\n // currentrefIds = currentrefIds.filter((val, index) => { return currentrefIds.indexOf(val) === index })\r\n }\r\n return (temp && temp.length > 0) ? true : false\r\n }\r\n else {\r\n const temp = handleOperators(each, fieldValues)\r\n return temp\r\n }\r\n })\r\n return tempBoolean;\r\n }\r\n\r\n}\r\n\r\nexport const handleOperators = (field, fieldValues, hideLocalStorage = false) => {\r\n const { name, type, value } = field;\r\n let RecordHiddenState = localStorage.getItem('RecordHiddenState') && !hideLocalStorage ? JSON.parse(localStorage.getItem('RecordHiddenState')) : null\r\n switch (type) {\r\n case 'value':\r\n return Boolean(fieldValues[name])\r\n case '=':\r\n if (fieldValues && Object.keys(fieldValues).includes(name)) {\r\n if (typeof fieldValues[name] === 'number' && typeof value === 'number') {\r\n return fieldValues[name] === value\r\n }\r\n else if (typeof fieldValues[name] === 'number' && typeof value !== 'number') {\r\n return fieldValues[name].toString() === value\r\n }\r\n else return fieldValues[name] === value\r\n }\r\n else if (name.includes('.')) {\r\n return value === name.split(\".\").reduce((res, prop) => { return res && res[prop] }, fieldValues)\r\n }\r\n else return name === value\r\n case '!=':\r\n if (Object.keys(fieldValues).includes(name)) {\r\n if (typeof fieldValues[name] === 'number') {\r\n return fieldValues[name].toString() !== value\r\n }\r\n else return fieldValues[name] !== value\r\n }\r\n else return name !== value\r\n case '>':\r\n return Number(fieldValues[name]) > Number(value)\r\n case '>=':\r\n return Number(fieldValues[name]) >= Number(value)\r\n case '<':\r\n return Number(fieldValues[name]) < Number(value)\r\n case '<=':\r\n return Number(fieldValues[name]) <= Number(value)\r\n case 'not in':\r\n return !(value && name && fieldValues[name] && (value.replace(/[()''\\s]/g, '').split(',') || []).some(each => (isNaN(fieldValues[name]) ? fieldValues[name] : fieldValues[name].toString()).split(',').includes(each))) || false\r\n case 'in':\r\n return (value && name && fieldValues[name] && (value.replace(/[()''\\s]/g, '').split(',') || []).some(each => (isNaN(fieldValues[name]) ? fieldValues[name] : fieldValues[name].toString()).split(',').includes(each))) || false\r\n case 'is null':\r\n if (RecordHiddenState && Array.isArray(RecordHiddenState) && RecordHiddenState.length > 0 && name && fieldValues) {\r\n let IsDisabledObj = RecordHiddenState.find(each => name.split(\".\").includes(each.EventField)) || {}\r\n let IsDisabled = (IsDisabledObj && IsDisabledObj.IsDisabled) || null\r\n console.log(IsDisabled, name)\r\n if (IsDisabled && (IsDisabled === 'Y'))\r\n return false\r\n else return (!fieldValues[name] || fieldValues[name] === \"\") ? true : false\r\n }\r\n return (!fieldValues[name] || fieldValues[name] === \"\") ? true : false\r\n case 'is not null':\r\n if (RecordHiddenState && Array.isArray(RecordHiddenState) && RecordHiddenState.length > 0 && name && fieldValues) {\r\n let IsDisabledObj = RecordHiddenState.find(each => each.EventField === name) || {}\r\n let IsDisabled = (IsDisabledObj && IsDisabledObj.IsDisabled) || null\r\n console.log(IsDisabled, name)\r\n if (IsDisabled && (IsDisabled === 'Y'))\r\n return true\r\n else return (fieldValues[name] && Array.isArray(fieldValues[name])) ? fieldValues[name].length > 0 ? true : false : (!fieldValues[name] || fieldValues[name] === '') ? false : true\r\n }\r\n return (fieldValues && Array.isArray(fieldValues[name])) ? fieldValues[name].length > 0 ? true : false : (fieldValues && (!fieldValues[name] || fieldValues[name] === '')) ? false : true\r\n case 'check':\r\n return fieldValues[name] ? ((fieldValues[name].disabled === 'N' || fieldValues[name].disabled === false) ? true : false ||\r\n (fieldValues[name] === 'N' || fieldValues[name] === false) ? true : false) : false\r\n case 'CE':\r\n return Evaluate(value, fieldValues)\r\n default:\r\n return false\r\n }\r\n}\r\n\r\nexport const handleLoadBody = (read, fieldValues, extras) => {\r\n return Promise.all(read.map(each => requestApi(createRequest(each, each.body ? each.body : fieldValues, each.body ? fieldValues : extras)))).then(results => {\r\n return read.reduce((sum, current, index) => {\r\n if (current.saveAs) {\r\n const { saveAs } = current\r\n return { ...sum, [saveAs.key]: results[index] }\r\n }\r\n else return { ...sum, ...results[index] }\r\n }, {})\r\n }).catch(ex => {\r\n console.log(ex)\r\n })\r\n}\r\n\r\n\r\nexport const handleBRActivity = (read, data, params) => {\r\n return Promise.all(read.map(each => requestApi(createRequest(each, data, params)))).then(results => {\r\n return results[0]\r\n }).catch(ex => {\r\n console.log(ex)\r\n })\r\n}\r\n\r\n\r\nexport const handleLoad = (read, fieldValues, extras) => {\r\n return Promise.all(read.map(each => requestApi(createRequest(each, fieldValues, extras)))).then(results => {\r\n return read.reduce((sum, current, index) => {\r\n if (current.saveAs) {\r\n const { saveAs, sublist } = current;\r\n let resp = results\r\n if (sublist) {\r\n resp = results[index][sublist]\r\n }\r\n if (saveAs.rename) {\r\n const { key } = saveAs.rename;\r\n resp = results[0][key]\r\n }\r\n else resp = results[index]\r\n return { ...sum, [saveAs.key]: resp }\r\n }\r\n else return { ...sum, ...results[index] }\r\n }, {})\r\n }).catch(ex => {\r\n console.log(ex)\r\n })\r\n}\r\n\r\nexport const handleSave = (read, fieldValues) => {\r\n return Promise.all(read.map(each => requestApi(createRequest(each, fieldValues)))).then(results => {\r\n if (results)\r\n return { ...results[0] }\r\n }).catch(error => {\r\n return error.then(errors => {\r\n if (errors) {\r\n return { errors: errors }\r\n }\r\n })\r\n })\r\n}\r\n\r\nexport const handleValidations = (read, fieldValues) => {\r\n return Promise.all(read.map(each => requestApi(createRequest(each, fieldValues)))).then(results => {\r\n\r\n return results\r\n })\r\n}\r\n\r\nexport const handleGrid = (read, fieldValues, extras) => {\r\n let extra = extras || { skip: 0, take: 20 }\r\n return Promise.all(read.map(each => requestApi(createGridRequest(each, fieldValues, null, extra)))).then(results => {\r\n\r\n return read.reduce((sum, current, index) => {\r\n const { saveAs } = current\r\n return { ...sum, [saveAs.key]: results[index] }\r\n }, {})\r\n }).catch(error => console.log(`Error in executing ${error}`))\r\n}\r\n\r\nexport const handleEnable = (props) => {\r\n const { status, enable, disable } = props\r\n if (status) return enable\r\n else return disable\r\n}\r\n\r\nexport const handleDisable = (props) => {\r\n const { status, enable, disable } = props\r\n if (status) return disable\r\n else return enable\r\n\r\n}\r\n\r\nexport const handleRequired = (props, status) => {\r\n return props[status]\r\n}\r\n\r\n\r\n\r\nexport const handleUncheck = (props, status) => {\r\n const { valid, inValid } = props\r\n if (status)\r\n return valid\r\n else return inValid\r\n\r\n}\r\n\r\nexport const handleCalculations = (props, values, extras) => {\r\n const { operator, operands, attr, quotient } = props;\r\n // const { dataAttr } = extras\r\n switch (operator) {\r\n case '*':\r\n return (extras && extras.dataAttr && extras.dataAttr[operands]) ?\r\n (Number(values[quotient]) * Number(extras.dataAttr[operands][attr])) : null //.toFixed(2).toString() \r\n default: return false\r\n }\r\n\r\n}","import { getEnvVariable } from \"../../modules/environmentalList\";\r\n\r\nconst map = {\r\n \"type\": \"map\",\r\n \"key\": \"EPS_map_EDIT\",\r\n \"order\": 32,\r\n \"width\":'160vh',\r\n \"options\": {\r\n \"mapkey\":\"EPS_map_EDIT\",\r\n \"routes\": {\r\n \"route\": \"/Administration/map\"\r\n },\r\n \"hastaxlotlayer\":\"N\",\r\n \"widgets\": [\"Home\", \"Search\", \"Zoom\", \"Sketch\", \"BasemapGallery\", \"LayerList\",\"Measurement\",\"TaxlotSelector\", \"BufferCalc\", \"Print\",\"Select\",\"LayerFilter\",\"DatTable\", \"MultiLocationSelector\"], // [\"Locate\", \"Home\", \"Search\", \"Zoom\", \"Measurement\", \"Draw\", \"Sketch\", \"BasemapGallery\", \"LayerList\", \"Bookmark\"],\r\n \"basemap\": \"streets\",//\"streets\", \"satellite\", \"hybrid\", \"terrain\", \"topo\", \"gray\", \"dark-gray\", \"oceans\", \"national-geographic\", \"osm\", \"dark-gray-vector\", \"gray-vector\", \"streets-vector\", \"topo-vector\", \"streets-night-vector\", \"streets-relief-vector\", \"streets-navigation-vector\"\r\n \"viewProperties\": {\r\n // \"extent\": {\r\n // \"xmax\": -8057114.558988379,\r\n // \"xmin\": -8679311.969229413,\r\n // \"ymax\": 4872179.908902848,\r\n // \"ymin\": 4605567.554244282,\r\n // \"spatialReference\": 102100\r\n // },\r\n \"zoom\": 15,\r\n \"center\": [-8368213.264108896,4738873.731573565],\r\n \"ui\": {\r\n \"components\": [\"attribution\"]// [\"compass\", \"attribution\"] // empty the UI, except for attribution\r\n }\r\n },\r\n \"printOptions\":{\r\n \"serviceURL\":\"http://development.delasoft.com:8443/arcgis/rest/services/Utilities/PrintingTools/GPServer/Export%20Web%20Map%20Task\"\r\n },\r\n \"searchOptions\": {\r\n \"State\": \"OR\"\r\n },\r\n \"zoomOptions\": {\r\n \"maxZoomed\": false,\r\n \"minZoomed\": false\r\n },\r\n \"drawOptions\": {\r\n \"Tools\": [],//[\"point\", \"polyline\", \"polygon\", \"rectangle\", \"circle\"]\r\n \"AllowMultiple\":{\"Points\":false, \"Lines\":false,\"Polygons\":false},\r\n \"LayerIndex\": 1\r\n },\r\n 'searchbookmarks':{\r\n \"drawTool\":' Hello I ma me',\r\n \"url\":\"http://demo.delasoft.com:9443/arcgis/rest/services/KEPT_Test/Bookmarks/FeatureServer/0\",\r\n \"defaultChoice\":'E',\r\n \"defaultName\":'Bookmark #',\r\n \"defaultSymbol\":{\r\n type: \"simple-fill\",\r\n outline: {\r\n style: \"dash\",\r\n miterLimit: 16,\r\n color: [0, 112, 255, 1]\r\n },\r\n color: [115, 223, 255, 0.24]\r\n },\r\n \"defaultMessage\":'Draw Box on Map for Bookmark',\r\n 'appname':'INQUERY',\r\n 'username':'13384'\r\n },\r\n 'tasks': {\r\n \"TaxParcels\": {\r\n \"url\": \"\",\r\n \"queryExpression\": \"1!=1\",\r\n \"LayerIndex\":0\r\n }\r\n },\r\n \"LayerOptionsConfig\":\r\n {\r\n \"Category\": [\"F\"],\r\n \"MapType\": [\"A\",\"R\"] //A-Add Record,L-Landing,G-Grid,R-Record review\r\n },\r\n \"LayerOptions\":[],\r\n \"FeatureLayerListOptions\":[],\r\n \"CountyLayerOptions\":[],\r\n \"FeatureLayers\": {\r\n \"POINT\": getEnvVariable('ArcGIS')+`/rest/services/EPS/MasterTable_Geom_Service/FeatureServer/0`,\r\n \"MULTIPOINT\": getEnvVariable('ArcGIS')+`/rest/services/EPS/MasterTable_Geom_Service/FeatureServer/1`,\r\n \"LINE\": getEnvVariable('ArcGIS')+`/rest/services/EPS/MasterTable_Geom_Service/FeatureServer/2`,\r\n \"POLYGON\": getEnvVariable('ArcGIS')+`/rest/services/EPS/MasterTable_Geom_Service/FeatureServer/3`,\r\n \"LayerIndex\":2//For Adding GraphicsLayer\r\n },\r\n \"MasterLookupFields\":[\r\n {\r\n Id:0,\r\n 'ServiceUrl': 'https://gistest1.odot.state.or.us/arcgis1006/rest/services/ames/ames/MapServer/26/query',\r\n 'FieldKey':'REGION_GISID',\r\n 'NameReference':'REG_NO',\r\n 'ValueReference':'REG_NO'\r\n },\r\n {\r\n Id:1,\r\n 'ServiceUrl': 'https://gistest1.odot.state.or.us/arcgis1006/rest/services/ames/ames/MapServer/25/query',\r\n 'FieldKey':'DISTRICT_GISID',\r\n 'NameReference':'DISTRICT',\r\n 'ValueReference':'DISTRICT'\r\n },\r\n {\r\n Id:2,\r\n 'ServiceUrl': 'https://gistest1.odot.state.or.us/arcgis1006/rest/services/ames/ames/MapServer/41/query',\r\n 'FieldKey':'SITE_GISID',\r\n 'NameReference':'CNTY_CODE',\r\n 'ValueReference':'CNTY_CODE'\r\n }\r\n ],\r\n \"FieldsData\": [\r\n {\r\n \"Fieldkey\":\"MAP_CENTER_LATITUDE\",\r\n \"FieldValue\":\"\"\r\n },\r\n {\r\n \"Fieldkey\":\"MAP_CENTER_LONGITUDE\",\r\n \"FieldValue\":\"\"\r\n },\r\n {\r\n \"Fieldkey\":\"PROPOSED_MAP_CENTER_LATITUDE\",\r\n \"FieldValue\":\"\"\r\n },\r\n {\r\n \"Fieldkey\":\"PROPOSED_MAP_CENTER_LONGITUDE\",\r\n \"FieldValue\":\"\"\r\n },\r\n {\r\n \"Fieldkey\":\"POINT_GEOM_OBJECT_ID\",\r\n \"FieldValue\":0\r\n },\r\n {\r\n \"Fieldkey\":\"PROPOSED_POINT_GEOM_OBJECT_ID\",\r\n \"FieldValue\":0\r\n },\r\n {\r\n \"Fieldkey\":\"LINE_GEOM_OBJECT_ID\",\r\n \"FieldValue\":0\r\n },\r\n {\r\n \"Fieldkey\":\"PROPOSED_LINE_GEOM_OBJECT_ID\",\r\n \"FieldValue\":0\r\n },\r\n {\r\n \"Fieldkey\":\"POLYGON_GEOM_OBJECT_ID\",\r\n \"FieldValue\":0\r\n },\r\n {\r\n \"Fieldkey\":\"PROPOSED_POLYGON_GEOM_OBJECT_ID\",\r\n \"FieldValue\":0\r\n },\r\n {\r\n \"Fieldkey\":\"MULTIPOINT_GEOM_OBJECT_ID\",\r\n \"FieldValue\":0\r\n },\r\n {\r\n \"Fieldkey\":\"PROPOSED_MULTIPOINT_GEOM_OBJECT_ID\",\r\n \"FieldValue\":0\r\n },\r\n {\r\n \"Fieldkey\":\"TAX_PARCEL_IDS\"\r\n },\r\n {\r\n \"Fieldkey\":\"TAX_PARCEL_IDS_GEOM\",\r\n \"FieldValue\":''\r\n },\r\n {\r\n \"Fieldkey\":\"PRIMARY_TAX_PARCEL_IDS\",\r\n \"FieldValue\":''\r\n },\r\n {\r\n \"Fieldkey\":\"ADC_MAP_GRID_NO\"\r\n },\r\n {\r\n \"Fieldkey\":\"CENTER_GEOM_OBJECT_ID\",\r\n \"FieldValue\":0\r\n },\r\n {\r\n \"Fieldkey\":\"PROPOSED_CENTER_GEOM_OBJECT_ID\",\r\n \"FieldValue\":0\r\n },\r\n {\r\n \"Fieldkey\":\"LATITUDE_ROAD_POSITION\",\r\n \"FieldValue\":\"\"\r\n },\r\n {\r\n \"Fieldkey\":\"LONGITUDE_ROAD_POSTION\",\r\n \"FieldValue\":\"\"\r\n },\r\n ],\r\n \"MapSettings\": {// section settings of Map section it means values[0] is MapSettings\r\n\r\n },\r\n \"MultipleLocationData\":[], // Specific to KEPT project for stroing the multiple location data, if any.\r\n \"UserId\":\"1\"\r\n }\r\n};\r\n\r\nexport default map;","/**\r\n *********************************************************\r\n Description: Dropdown component. .\r\n Required props: type,value,dropdownvalues.\r\n limitations : N/A.\r\n *********************************************************\r\n**/\r\n\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport React, { Fragment } from \"react\";\r\nimport Dropdown from '../../controls/components/dropdown';\r\nimport DefaultSettings from '../../controls/components/settings';\r\nimport Typography from '@material-ui/core/Typography'\r\n\r\nexport default function CFormDropdown(props) {\r\n const { handleFieldChange, dropdownvalues, edit, name, label, tooltip, disabled, error, required, value, defaultValue, helperText, transformProps, styles, className, multiple, contexthelp } = props;\r\n let displayname = '';\r\n\r\n\r\n if (edit === false) {\r\n if (transformProps) {\r\n let selected = ((dropdownvalues && dropdownvalues.length > 0) && dropdownvalues.find(each => {\r\n return (each[transformProps.value] && each[transformProps.value].toString()) === (value && value.toString())\r\n })) || {}\r\n displayname = (transformProps && selected[transformProps.name]) || ''\r\n }\r\n else {\r\n if (Array.isArray(value)) {\r\n displayname = value\r\n }\r\n else displayname = (dropdownvalues && value && (dropdownvalues.filter(each => { if (each.value === value) return each.name }))[0].name) || value\r\n }\r\n return <Fragment>\r\n {(tooltip || contexthelp) && <div > <Typography variant={'caption'} className=\"fw-bold\" color={'textPrimary'} >{label}\r\n < Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em' }} onClick={() => DefaultSettings.showDrawer(contexthelp)} />\r\n </Tooltip> </Typography> <Typography className=\"text-secondary\">{displayname} </Typography>\r\n </div>}\r\n {!tooltip && <div > <Typography variant={'caption'} className=\"fw-bold\" color={'textPrimary'}>{label}</Typography> <Typography\r\n className=\"eps-content-wrap text-secondary\">{displayname} </Typography>\r\n </div>}\r\n </Fragment >\r\n }\r\n else {\r\n return <Dropdown name={name} label={label} extraProps={{\r\n transformProps: {\r\n label: (transformProps && transformProps.name) || 'name', value: (transformProps && transformProps.value) || 'value'\r\n }\r\n }} items={dropdownvalues} handleFieldValue={handleFieldChange}\r\n tooltip={tooltip} required={required} helperText={helperText} multiple={multiple} disabled={disabled} style={styles} className={className} error={error}\r\n contexthelp={contexthelp} value={value || defaultValue}\r\n />\r\n // return <Fragment>\r\n // <FormControl disabled={editduplicate ? false : disabledstatus} error={error} required={required} fullWidth style={styles} className={className}>\r\n // {(tooltip || contexthelp) && <InputLabel shrink htmlFor={htmlForLabel || label}>{label}< Tooltip title={tooltip ? tooltip : null} placement=\"bottom-start\" >\r\n // <HelpOutlineIcon fontSize=\"small\" style={{ width: '0.8em' }} onClick={() => DefaultSettings.showDrawer(contexthelp)} />\r\n // </Tooltip></InputLabel>}\r\n // {!(tooltip || contexthelp) && <InputLabel shrink htmlFor={htmlForLabel || label}>{label}</InputLabel>}\r\n // <Select\r\n // value={value || defval || ''}\r\n // onChange={handleFieldChange}\r\n // multiple={multiple ? multiple : false}\r\n // inputProps={{\r\n // name: name,\r\n // id: id || name\r\n // }}\r\n // MenuProps={{ autoFocus: false }}\r\n // onClose={() => setSearchText(\"\")}\r\n // >\r\n // <ListSubheader>\r\n // <TextField\r\n // size=\"small\"\r\n // // Autofocus on textfield\r\n // autoFocus\r\n // placeholder=\"Type to search...\"\r\n // fullWidth\r\n // InputProps={{\r\n // startAdornment: (\r\n // <InputAdornment position=\"start\">\r\n // <SearchIcon />\r\n // </InputAdornment>\r\n // )\r\n // }}\r\n // onChange={(e) => setSearchText(e.target.value)}\r\n // onKeyDown={(e) => {\r\n // if (e.key !== \"Escape\") {\r\n // // Prevents autoselecting item while typing (default Select behaviour)\r\n // e.stopPropagation();\r\n // }\r\n // }}\r\n // />\r\n // </ListSubheader>\r\n // {(displayedOptions || allitems) && (displayedOptions||allitems).length > 0 && (displayedOptions||allitems).map((each, index) => {\r\n // const value = transformProps ? each[transformProps.value] : each.value\r\n // const name = transformProps ? each[transformProps.name] : each.name\r\n // const key = each.key || value\r\n // return <MenuItem key={key || ('item' + value)} value={value}>{name}</MenuItem>\r\n // })}\r\n // </Select>\r\n // {helperText && <FormHelperText>{helperText}</FormHelperText>}\r\n // </FormControl>\r\n // </Fragment>\r\n }\r\n}","import 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 Typography from '@material-ui/core/Typography';\r\nimport FolderIcon from '@material-ui/icons/Folder';\r\nimport React, { Fragment } from 'react';\r\nimport Checkbox from '../../../core/controls/components/checkbox';\r\nimport TextBox from '../../../core/controls/components/textbox';\r\nimport { checkReferenceKey } from '../../../controls/jsons/attachments/conditionsbymodule';\r\nimport { fieldValidate } from '../../../core/controls/helpers/checkers';\r\nimport { getEnvVariable } from '../../environmentalList';\r\n\r\nexport default function AttachmentsS3Form({ selectedFile, validations, fileProgress, required = [], errorObj = {}, NoteView = [], handleFieldValue ,referencekey}) {\r\n\r\n const FormhandleFieldValue = (evt, index) => {\r\n const { name, value, checked } = evt.target;\r\n let error_Obj = {}\r\n error_Obj = fieldValidate(validations[name], value) || {};\r\n errorObj[name] = error_Obj;\r\n let temp = NoteView || [];\r\n if (temp.length === 0) {\r\n temp.push({ Notes: ''})\r\n }\r\n let obj = {\r\n 'Notes': name === 'Notes' ? value : (temp && temp[index] && temp[index].Notes || ''),\r\n // 'IsViewable': name === 'IsViewable' ? (checked ? 'Y' : 'N') : (temp && temp[index] && temp[index].IsViewable || '')\r\n }\r\n let newtemp = { ...temp[index], ...obj }\r\n temp[index] = newtemp\r\n handleFieldValue({ data: temp, error: errorObj })\r\n }\r\n\r\n return <Fragment>\r\n {\r\n selectedFile && selectedFile.length > 0 ? <Typography variant=\"h6\"> Selected File(s) to Upload </Typography> : <small className='text-primary text-center'>\r\n Please Upload the required files </small>\r\n } <List dense={true}>\r\n {selectedFile && selectedFile.length > 0 && ([...Array(selectedFile.length).keys()] || []).map((each, index) => {\r\n return <>\r\n <ListItem key={index} className='col-12'>\r\n <ListItemIcon> <FolderIcon /> </ListItemIcon>\r\n <ListItemText className='col-6'\r\n primary={selectedFile[index].name}\r\n secondary={<small className='text-primary'>{\"Size: \" + (selectedFile[index].size / 1048576).toFixed(2) + \" MB\"}\r\n {Array.isArray(fileProgress) && fileProgress.length > 0 && ' Progress %:' + fileProgress[index].progress}</small>}\r\n />\r\n {/* {getEnvVariable('AccessPortal') === 'I' && checkReferenceKey(referencekey) && <ListItemText className='col-6'><Checkbox name=\"IsViewable\"\r\n error={errorObj['IsViewable'] && errorObj['IsViewable'].error}\r\n helperText={errorObj['IsViewable'] && errorObj['IsViewable'].errorText} required={required.indexOf(\"IsViewable\") > -1 ? true : false}\r\n value={(NoteView && NoteView.length > 0 &&\r\n NoteView[index] && NoteView[index].IsViewable) || 'N'} label=\"Can be Viewed by Applicant?\" labelPlacement=\"top\" handleFieldValue={(evt) =>\r\n FormhandleFieldValue(evt, index)} /></ListItemText>} */}\r\n <br />\r\n </ListItem>\r\n <ListItem key={index} className='col-12'>\r\n <ListItemText className='col-12'><TextBox error={errorObj['Notes'] && errorObj['Notes'].error}\r\n helperText={errorObj['Notes'] && errorObj['Notes'].errorText} label=\"Note\" name=\"Notes\" value={(NoteView && NoteView.length > 0 && NoteView[index] && NoteView[index].Notes) || ''}\r\n required={required.indexOf(\"Notes\") > -1 ? true : false}\r\n multiline={true} handleFieldValue={(evt) => FormhandleFieldValue(evt, index)} /></ListItemText>\r\n </ListItem>\r\n </>\r\n })}\r\n </List>\r\n </Fragment>\r\n}","import 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 FolderIcon from '@material-ui/icons/Folder';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport React, { Fragment, useEffect, useState } from 'react';\r\nimport Checkbox from '../../../core/controls/components/checkbox';\r\nimport TextBox from '../../../core/controls/components/textbox';\r\nimport { getEnvVariable } from '../../environmentalList';\r\nimport Datepicker from '../../../core/controls/components/datepicker';\r\nimport { fieldValidate } from '../../../core/controls/helpers/checkers';\r\nimport { checkReferenceKey } from '../../../controls/jsons/attachments/conditionsbymodule';\r\n\r\nexport default function ImagesS3Form({ selectedFile, fileProgress, validations, required = [],\r\n errorObj = {}, NoteView = [], currentUser = '', handleFieldValue, referencekey, handleHideSave }) {\r\n\r\n const [notInitalLoad, setNotInitalLoad] = useState(false);\r\n const [currentUsername, setCurrentUsername] = useState(currentUser ? currentUser.name : '');\r\n\r\n useEffect(() => {\r\n setNotInitalLoad(false)\r\n }, [])\r\n\r\n const FormhandleFieldValue = (evt, index) => {\r\n const { name, value, checked } = evt.target;\r\n let error_Obj = fieldValidate(validations[name], value);\r\n errorObj[name] = error_Obj;\r\n let temp = NoteView;\r\n if (temp.length === 0) {\r\n temp.push({ Notes: '', IsViewable: 'N', TakenBy: (currentUser ? currentUser.name : ''), UploadDate: '' })\r\n }\r\n let obj = {\r\n 'TakenBy': name === 'TakenBy' ? value : (temp && temp[index] && temp[index].TakenBy || (currentUser ? currentUser.name : '')),\r\n 'UploadDate': name === 'UploadDate' ? value : (temp && temp[index] && temp[index].UploadDate || ''),\r\n 'Notes': name === 'Notes' ? value : (temp && temp[index] && temp[index].Notes || ''),\r\n 'IsViewable': name === 'IsViewable' ? (checked ? 'Y' : 'N') : (temp && temp[index] && temp[index].IsViewable || '')\r\n }\r\n if (notInitalLoad === true)\r\n setCurrentUsername('')\r\n let newtemp = { ...temp[index], ...obj }\r\n temp[index] = newtemp\r\n handleFieldValue({ data: temp, error: errorObj })\r\n }\r\n\r\n if (NoteView && NoteView.length > 0) {\r\n let proceed = false\r\n NoteView.forEach(element => {\r\n if (!element['UploadDate'] || (element['UploadDate'] === '')) {\r\n proceed = true\r\n }\r\n if (!element['TakenBy'] || (element['TakenBy'] === '')) {\r\n proceed = true\r\n }\r\n });\r\n handleHideSave(proceed)\r\n }\r\n\r\n return <Fragment>\r\n {\r\n selectedFile && selectedFile.length > 0 ? <Typography variant=\"h6\"> Selected File(s) to Upload </Typography> : <small className='text-primary text-center'>\r\n Please Upload the required files </small>\r\n } <List dense={true}>\r\n {selectedFile && selectedFile.length > 0 && ([...Array(selectedFile.length).keys()] || []).map((each, index) => {\r\n return <Fragment key={index}>\r\n <ListItem className='col-12'>\r\n <ListItemIcon> <FolderIcon /> </ListItemIcon>\r\n <ListItemText className='col-6'\r\n primary={selectedFile[index].name}\r\n secondary={<small className='text-primary'>{\"Size: \" + (selectedFile[index].size / 1048576).toFixed(2) + \" MB\"}\r\n {Array.isArray(fileProgress) && fileProgress.length > 0 && ' Progress %:' + fileProgress[index].progress}</small>}\r\n />\r\n </ListItem>\r\n <ListItem>\r\n <ListItemText className='col-4'><TextBox error={errorObj['TakenBy'] && errorObj['TakenBy'].error}\r\n required={required.indexOf(\"TakenBy\") > -1 ? true : false} label=\"Taken By\" name=\"TakenBy\"\r\n value={((NoteView && NoteView.length > 0 && NoteView[index] && NoteView[index].TakenBy) || '')}\r\n helperText={errorObj['TakenBy'] && errorObj['TakenBy'].errorText} multiline={true}\r\n handleFieldValue={(evt) => FormhandleFieldValue(evt, index)} /></ListItemText> \r\n\r\n <ListItemText className='col-4'><Datepicker error={errorObj['UploadDate'] && errorObj['UploadDate'].error} required={required.indexOf(\"UploadDate\") > -1 ? true : false}\r\n helperText={errorObj['UploadDate'] && errorObj['UploadDate'].errorText} label=\"Date photo taken\" name=\"UploadDate\"\r\n value={(NoteView && NoteView.length > 0 && NoteView[index] && NoteView[index].UploadDate) || ''}\r\n handleFieldValue={(evt) => { FormhandleFieldValue(evt, index); setNotInitalLoad(true); }}\r\n FieldProps={notInitalLoad ? JSON.stringify({ 'AllowDate': 'PD' }) : JSON.stringify({ 'AllowDate': 'PD', 'CurrentDefaultDate': 'Y' })} /></ListItemText> \r\n {/* {getEnvVariable('AccessPortal') === 'I' && checkReferenceKey(referencekey) && <ListItemText className='col-4'><Checkbox name=\"IsViewable\"\r\n error={errorObj['IsViewable'] && errorObj['IsViewable'].error}\r\n helperText={errorObj['IsViewable'] && errorObj['IsViewable'].errorText} required={required.indexOf(\"IsViewable\") > -1 ? true : false}\r\n value={(NoteView && NoteView.length > 0 &&\r\n NoteView[index] && NoteView[index].IsViewable) || 'N'} label=\"Can be Viewed by Applicant?\" labelPlacement=\"top\" handleFieldValue={(evt) =>\r\n FormhandleFieldValue(evt, index)} /></ListItemText>} */}\r\n </ListItem>\r\n <ListItem className='col-12'>\r\n <ListItemText className='col-12'><TextBox error={errorObj['Notes'] && errorObj['Notes'].error}\r\n helperText={errorObj['Notes'] && errorObj['Notes'].errorText} label=\"Note\" name=\"Notes\" value={(NoteView && NoteView.length > 0 && NoteView[index] && NoteView[index].Notes) || ''}\r\n required={required.indexOf(\"Notes\") > -1 ? true : false}\r\n multiline={true} handleFieldValue={(evt) => FormhandleFieldValue(evt, index)} /></ListItemText>\r\n </ListItem>\r\n </Fragment>\r\n })}\r\n </List>\r\n </Fragment>\r\n}","\r\nimport Button from '@material-ui/core/Button';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport MuiDialogActions from '@material-ui/core/DialogActions';\r\nimport MuiDialogContent from '@material-ui/core/DialogContent';\r\nimport MuiDialogTitle from '@material-ui/core/DialogTitle';\r\nimport Grid from '@material-ui/core/Grid';\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 withWidth from '@material-ui/core/withWidth';\r\nimport FolderIcon from '@material-ui/icons/Folder';\r\nimport React, { Fragment, useEffect, useState } from 'react';\r\nimport { useParams, withRouter } from 'react-router-dom';\r\nimport { OldPostMutiFormData } from '../../core/controls/helpers/requests';\r\nimport { getEnvVariable } from '../../modules/environmentalList';\r\nimport AttachmentsS3Form from './forms/attachments';\r\nimport ImagesS3Form from './forms/images';\r\nimport DefaultSettings from '../../core/controls/components/settings';\r\n\r\nconst UploadImageToS3WithNativeSdk = (props) => {\r\n const [selectedFile, setSelectedFile] = useState([]);\r\n const [attachmentDetails, setAttachmentDetails] = useState([]);\r\n const [fileProgress, setFileProgress] = useState([]);\r\n const [uploadedFiles, setUploadedFiles] = useState([]);\r\n const [NoteView, setNoteView] = useState(props.dataItem || [])\r\n const [reload, setReload] = useState(false)\r\n const [errorObj, setErrorObj] = useState(props.errors || {})\r\n const [hideSave, setHideSave] = useState(false)\r\n const params = useParams()\r\n\r\n const handleFileInput = (e) => {\r\n setSelectedFile(e.target.files);\r\n }\r\n useEffect(() => {\r\n if (props && props.errors && Object.keys(props.errors).length > 0) {\r\n setErrorObj(props.errors)\r\n setUploadedFiles([])\r\n setAttachmentDetails([])\r\n }\r\n }, [props && props.errors])\r\n const uuidv4 = () => {\r\n return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>\r\n (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)\r\n );\r\n }\r\n const uploadFile = (files) => {\r\n var type = getFileTypes(props.uploadType)\r\n var extension = files[0].name.split('.')\r\n if(type.includes(extension[1]))\r\n {\r\n let saveData = errorObj && Object.keys(errorObj).length > 0 && Object.keys(errorObj).every(each => each.error === true) || true\r\n if (saveData) {\r\n if (files && files.length > 0) {\r\n uploadFileWrapper(files, NoteView);\r\n }\r\n }\r\n }\r\n else{\r\n DefaultSettings.getAlert().show(\"File Type is Not Valid\", 'error');\r\n }\r\n }\r\n const uploadFileWrapper = (files, info) => {\r\n let url = getEnvVariable('Sidebar') + `/api/FileSystem/${props.refid ? props.refid + '/Upload' : 'Upload'}?parentid=${props.refid}&sitePermitTypeId=${params.routeid}&attachmentType=${props.selectedAttachName}`;\r\n let predetails = []\r\n var formData = new FormData();\r\n for (let i = 0; i < files.length; i++) {\r\n formData.append('files', files[i], files[i].name);\r\n }\r\n OldPostMutiFormData(url, formData, true, true,'').then(response => {\r\n let res = response\r\n if (res && res.length > 0)\r\n for (let i = 0; i < res.length; i++) {\r\n predetails.push({\r\n ...info[i], FileName: res[i].fileName, ContentType: res[i].fileName.split(\".\").pop(), Size: res[i].size, FileReference: res[i].fileReference,\r\n fileName: res[i].fileName, extension: files[i].type, fileType: files[i].type, guid: res[i].fileReference, size: res[i].size,\r\n });\r\n }\r\n setAttachmentDetails(predetails);\r\n ParentCallBack(predetails)\r\n }).catch(ex => {\r\n console.error(ex)\r\n })\r\n }\r\n const ParentCallBack = (predetails) => {\r\n if (props.handleUploads) {\r\n props.handleUploads(predetails);\r\n if (!props.customclose)\r\n setSelectedFile([])\r\n }\r\n }\r\n const getFileTypes = (type) => {\r\n switch (type) {\r\n case 'I': return \".jpg, .jpeg, .png\"\r\n case 'A': return getEnvVariable('AttachmentExtensions')\r\n default: return getEnvVariable('AttachmentExtensions') + \".jpg, .jpeg, .png\"\r\n }\r\n }\r\n return <div className=\"col-3 pl-0 m-4\">\r\n {reload}\r\n {selectedFile && selectedFile.length === 0 && <Fragment><input\r\n type=\"file\"\r\n name=\"file\"\r\n accept={\".xlsx,.xls,.doc,.docx,.ppt,.pptx,.txt,.pdf,.csv,.zip,.jpg,.png\"}\r\n multiple={props.multiple || false}\r\n id=\"file-upload\"\r\n onChange={handleFileInput}\r\n style={{ display: \"none\" }}\r\n />\r\n <label htmlFor=\"file-upload\"> <Button className=' mt-2' size=\"small\" color=\"primary\" aria-label=\"add\" title=\"Upload\" component=\"span\">{props.title}</Button></label></Fragment>}\r\n {(selectedFile && selectedFile.length > 0) && <Dialog onClose={props.handleClose} aria-labelledby=\"customized-dialog-title\" open={true} fullWidth={true} maxWidth={'md'}>\r\n <MuiDialogTitle id=\"customized-dialog-title\" onClose={props.handleClose}>\r\n {props.title}\r\n </MuiDialogTitle>\r\n <MuiDialogContent dividers>\r\n <Grid item >\r\n {!props.isCustom && props.uploadType === \"I\" && <ImagesS3Form {...props} selectedFile={selectedFile} fileProgress={fileProgress} NoteView={NoteView} currentUser={props.currentUser} validations={props.validations}\r\n errorObj={errorObj}\r\n handleHideSave={(val) => { setHideSave(val) }}\r\n handleFieldValue={(obj) => { setNoteView(obj.data); setErrorObj(obj.error); setReload(!reload) }} />}\r\n {!props.isCustom && props.uploadType === \"A\" && <AttachmentsS3Form {...props} selectedFile={selectedFile} fileProgress={fileProgress} NoteView={NoteView} validations={props.validations}\r\n errorObj={errorObj} handleFieldValue={(obj) => { setNoteView(obj.data); setErrorObj(obj.error); setReload(!reload) }} />}\r\n {props.isCustom && <ListItem className='col-12'>\r\n <ListItemIcon> <FolderIcon /> </ListItemIcon>\r\n <ListItemText className='col-6'\r\n primary={selectedFile[0].name}\r\n secondary={<small className='text-primary'>{\"Size: \" + (selectedFile[0].size / 1048576).toFixed(2) + \" MB\"}\r\n {Array.isArray(fileProgress) && fileProgress.length > 0 && ' Progress %:' + fileProgress[0].progress}</small>}\r\n />\r\n </ListItem>}\r\n </Grid>\r\n </MuiDialogContent>\r\n <MuiDialogActions>\r\n <Button autoFocus onClick={() => props.handleClose ? props.handleClose() : setSelectedFile([])} color=\"primary\">\r\n Close\r\n </Button>\r\n {selectedFile && selectedFile.length > 0 && <Button\r\n disabled={hideSave === true ? true : false} autoFocus onClick={() => uploadFile(selectedFile)} color=\"primary\">\r\n Upload\r\n </Button>}\r\n </MuiDialogActions>\r\n </Dialog>}\r\n </div>\r\n}\r\nexport default withWidth()(withRouter(UploadImageToS3WithNativeSdk));\r\n","import { getEnvVariable } from \"../../modules/environmentalList\";\r\n\r\nconst standarddescriptionofconstruction = {\r\n \"type\": \"slidingbutton\",\r\n \"key\": \"newStandardDescriptionOfConstructionslidingbutton\",\r\n \"options\": {\r\n \"row\": 7,\r\n \"col\": 2,\r\n \"width\": 2,\r\n \"buttonprops\": {\r\n \"text\": \"Standard Description Of Construction\",\r\n \"size\": \"large\",\r\n \"color\": \"primary\",\r\n \"variant\": \"contained\"\r\n },\r\n excludefromresults: true,\r\n \"label\": \"Standard Description Of Construction\",\r\n \"name\": \"Standard Description Of Construction\",\r\n },\r\n open: true,\r\n \"components\": [\r\n {\r\n \"type\": 'standarddescofconstruction',\r\n \"options\": {\r\n tabprops: true,\r\n // designprops: true,\r\n save: true,\r\n \"title\": 'Standard Description Of Construction',\r\n form: true,\r\n headerProps: {\r\n \"savebutton\": true,\r\n \"backbutton\": true\r\n },\r\n \"crud\": {\r\n \"read\": {\r\n \"get\": {\r\n \"url\": getEnvVariable('AdminConfig') + `/api/SitePermitTypeDescriptionOfConstruction/`,\r\n\r\n }\r\n },\r\n \"update\": {\r\n \"put\": {\r\n \"url\": getEnvVariable('AdminConfig') + `/api/SitePermitTypeDescriptionOfConstruction/`,\r\n },\r\n }\r\n },\r\n },\r\n components: []\r\n\r\n\r\n\r\n }]\r\n}\r\n\r\nexport default standarddescriptionofconstruction;","import { getEnvVariable } from '../../modules/environmentalList';\r\nimport newsavedreportstypes from '../reports/savedreports';\r\nimport standarddescriptionofconstruction from './standarddescriptionofconstruction';\r\n\r\n\r\nconst StandardDescConsgrid = {\r\n \"type\": \"descofconsgrid\",\r\n \"key\": \"descofconsgrid\",\r\n \"gridkey\": 'descofconsgrid',\r\n \"order\": 1,\r\n \"options\": {\r\n sidepopupgridheight: true,\r\n \"routes\": [\r\n {\r\n \"route\": \"/Administration/applicationtypes\",\r\n \"routeParams\": \":routeid\",\r\n exactRoute: true\r\n },\r\n {\r\n \"route\": \"/descofconsgrid\",\r\n },\r\n\r\n ],\r\n \"crud\": {\r\n \"update\": {\r\n \"link\": [\r\n {\r\n \"link\": \"/Administration/applicationtypes\",\r\n \"matchProps\": { value: \"routeid\" },\r\n },\r\n {\r\n \"link\": \"/descofconsgrid/view\",\r\n \"matchProps\": { value: \"Id\" }\r\n }\r\n ]\r\n },\r\n \"read\": {\r\n \"get\": {\r\n \"url\": getEnvVariable('AdminConfig')+`/api/SitePermitTypeDescriptionOfConstruction/{Id}/Grid`,\r\n \"customProps\": {\r\n \"value\": \"Id\"\r\n }\r\n }\r\n }\r\n },\r\n \"back\": {\r\n \"routes\": [\r\n {\r\n \"route\": \"/Administration/applicationtypes\",\r\n \"routeParams\": \"routeid\",\r\n },\r\n ],\r\n },\r\n \"sidebar\": true,\r\n nonautoopen: true,\r\n \"formgrid\": true,\r\n \r\n headerProps: {\r\n customheader: true,\r\n headerProps:{\r\n //designprops: true,\r\n kendogridprops: true,\r\n title: \"Standard Description Of Construction\",\r\n actions: [\r\n {\r\n type: 'fab',\r\n icon: 'clear',\r\n name: 'clear',\r\n color: 'primary',\r\n title: 'Clear Filters',\r\n menucolor: '#22a9b3'\r\n },\r\n\r\n {\r\n type: 'menu',\r\n icon: 'excel',\r\n name: 'excel',\r\n color: 'primary',\r\n title: 'Export to Excel',\r\n menucolor: '#c90685',\r\n items: [{\r\n name: 'Export Current Page',\r\n action: 'filtercurrent'\r\n },\r\n {\r\n name: 'Export All Pages',\r\n action: 'filterall'\r\n }\r\n ]\r\n },\r\n {\r\n type: 'fab',\r\n icon: 'add',\r\n name: 'add',\r\n color: 'primary',\r\n title: 'Add Standard Description Of Construction ',\r\n menucolor: '#36088a'\r\n },\r\n\r\n ]\r\n }\r\n },\r\n \r\n savedreports: {\r\n ...newsavedreportstypes\r\n },\r\n \"components\": [\r\n standarddescriptionofconstruction\r\n ],\r\n \"addcomponents\": [\r\n standarddescriptionofconstruction\r\n ],\r\n \"gridcolumns\": [\r\n \r\n {\r\n \"title\": \"Subject\",\r\n \"field\": \"Subject\",\r\n \"show\": true\r\n },\r\n {\r\n \"title\": \"Rank\",\r\n \"field\": \"Rank\",\r\n \"show\": true\r\n },\r\n {\r\n \"title\": \"Custom\",\r\n \"field\": \"Custom\",\r\n \"show\": true\r\n },\r\n ]\r\n }\r\n}\r\nexport default StandardDescConsgrid","import { getEnvVariable } from \"../../../modules/environmentalList\"\r\n\r\nexport const getbyModuleKey = () => {\r\n let key = getEnvVariable('ModuleKey')\r\n switch (key) {\r\n case 'KEPT':\r\n case 'AMES':\r\n case 'WRS':\r\n return false\r\n default: return true\r\n }\r\n}\r\nexport const getbyModuleKeyYN = () => {\r\n let key = getEnvVariable('ModuleKey')\r\n switch (key) {\r\n case 'KEPT':\r\n case 'AMES':\r\n case 'WRS':\r\n return 'N'\r\n default: return 'Y'\r\n }\r\n}\r\n\r\nexport const showGridToolBar = (list, item) => {\r\n let key = getEnvVariable('ModuleKey')\r\n switch (key) {\r\n case 'KEPT':\r\n case 'AMES':\r\n case 'WRS':\r\n if (list && list.length > 0 && item) {\r\n let bool = list.some(each => { return each.Id === parseInt(item) && (each.Stage === 'Submitted' || each.Stage === 'InProgress') })\r\n // if (getEnvVariable('AccessPortal') === 'E')\r\n // return bool ? true : false\r\n return true\r\n }\r\n else return true\r\n default: return true\r\n }\r\n}\r\nexport const showCanEdit = (list, item) => {\r\n let key = getEnvVariable('ModuleKey')\r\n switch (key) {\r\n case 'KEPT':\r\n //case 'AMES':\r\n if (list && list.length > 0 && item) {\r\n let boolItem = list.find(each => { return each.Id === parseInt(item) && (each.Stage === \"Not_Submitted\" || each.Stage === 'InProgress') })\r\n if (getEnvVariable('AccessPortal') === 'E')\r\n return boolItem ? true : false\r\n else return true\r\n }\r\n else return true\r\n default: return true\r\n }\r\n}\r\nexport const checkReferenceKey = (refercekey) => {\r\n if (refercekey != 'VIOLATIONS') {\r\n return true\r\n }\r\n\r\n}\r\nexport const showEdit = (portal, isview, canedit) => {\r\n let key = getEnvVariable('ModuleKey')\r\n switch (key) {\r\n case 'KEPT':\r\n case 'AMES':\r\n case 'WRS':\r\n if (getEnvVariable('AccessPortal') === 'I') {\r\n return true\r\n }\r\n else if (getEnvVariable('AccessPortal') === 'E' && canedit) {\r\n if (portal === 'I')\r\n return false;\r\n else if (portal === 'E' && isview === 'Y')\r\n return true\r\n else if (portal === 'E' && isview === 'N')\r\n return false\r\n }\r\n else return false\r\n default: return true\r\n }\r\n}","const AssociatedApplicants = {\r\n \"type\": \"associatedapplicants\",\r\n \"key\": \"associatedapplicants\",\r\n \"order\": 0,\r\n \"options\": {\r\n \"alignitem\": \"center\",\r\n },\r\n \"components\": [\r\n\r\n ]\r\n}\r\n\r\nexport default AssociatedApplicants","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { bindActionCreators } from 'redux';\r\nimport { GetData, PostData, PutData } from \"../../core/controls/helpers/requests\";\r\nimport { snackbarMessage } from '../../core/actions';\r\nimport FormHeader from '../../core/modules/form/cformheader';\r\nimport CFormTextBox from '../../core/modules/form/cformtextbox';\r\nimport TemplateForm from '../../core/modules/template/template';\r\nimport CFormDropDown from '../../core/modules/form/cformdropdown';\r\n\r\n\r\nconst transformProps = {\r\n \"value\": \"Id\",\r\n \"name\": \"Subject\",\r\n \"key\": \"Id\"\r\n}\r\n\r\nclass StandardDescOfConstruction extends Component {\r\n\r\n constructor(props) {\r\n super(props); this.state = { editorState: null, result: {}, Subject: '', ConstructionTypeJson: [], ConstructionTypeId : null, constructionTypeError : null, Id:null, parentId:null };\r\n this.TemplateForm = React.createRef()\r\n }\r\n\r\n\r\n componentDidMount() {\r\n const { options } = this.props;\r\n const { editorState } = this.state;\r\n const { crud } = options;\r\n const { read, update } = crud;\r\n let url = this.props && this.props.dataItem && this.props.dataItem.Id ? read.get.url + this.props.match.params.Id + '/' + this.props.dataItem['Id'] : read.get.url;\r\n if(this.props.hidesub) {\r\n url = url+this.props.match.params.routeid1+'/All'\r\n let dropdownurl = this.props.options.crud.dropdownread.get.url+this.props.match.params.routeid +'/Grid'\r\n GetData(dropdownurl).then(result => {\r\n if (result && result.data && result.data.length>0) {\r\n this.setState({ ConstructionTypeJson : result.data })\r\n }\r\n \r\n }).catch(error => {\r\n \r\n })\r\n }\r\n GetData(url).then(result => {\r\n if(this.props.hidesub && result && result.length>0) {\r\n this.setState({ resultExists: true, editorState: parseInt(atob(result[0].Body)), result: result[0], ConstructionTypeId: result[0].TypeId, Id: result[0].Id })\r\n }\r\n else if (result && result.Id) {\r\n this.setState({ resultExists: true, editorState: parseInt(atob(result.BodyStr)), result: result, Subject: result.Subject, Rank: result.Rank })\r\n }\r\n else this.setState({ editorState: null, resultExists: false })\r\n }).catch(error => {\r\n\r\n })\r\n }\r\n\r\n handleEditorTemplateId = (editorVal) => {\r\n this.handleSave(editorVal.id);\r\n }\r\n\r\n callTemplateSave = () => {\r\n this.TemplateForm.current.saveTemplate();\r\n }\r\n\r\n handleSave = (editorVal) => {\r\n const { options } = this.props;\r\n const { resultExists, result } = this.state;\r\n const { crud } = options;\r\n const { read, update } = crud;\r\n let save = true\r\n result.BodyStr = btoa(editorVal.toString());\r\n if(this.props.hidesub) {\r\n if(!this.state.ConstructionTypeId) {\r\n save = false;\r\n this.setState({constructionTypeError : \"Description of construction is required\"})\r\n }\r\n else {\r\n if(this.state.Id) {\r\n result.Id = this.state.Id\r\n }\r\n result.TypeId = this.state.ConstructionTypeId\r\n }\r\n }\r\n let url = ''\r\n if(save) {\r\n if (!resultExists) {\r\n // \r\n if (this.props.options.tabprops) {\r\n url = update.put.url + this.props.match.params['Id'] + '/Add';\r\n }\r\n else {\r\n url = update.post.url + '/' + this.props.match.params.routeid1 + '/Add';\r\n }\r\n let finalresult = {...result}\r\n PostData(url, finalresult).then(res => {\r\n this.setState({ resultExists: false })\r\n\r\n if (!this.props.options.tabprops) {\r\n this.props.onClose();\r\n }\r\n\r\n }).catch(error => {\r\n\r\n\r\n })\r\n }\r\n else {\r\n // \r\n if (this.props.options.tabprops) {\r\n url = update.put.url + this.props.match.params['Id'] + '/Update';\r\n }\r\n else {\r\n url = update.put.url + this.props.match.params.routeid1 + '/Update/' + this.state.Id;\r\n }\r\n let finalresult = {...result, Rank : this.state.Rank}\r\n PutData(url, finalresult).then(res => {\r\n this.setState({ resultExists: false })\r\n\r\n\r\n if (!this.props.options.tabprops) {\r\n this.props.onClose();\r\n }\r\n\r\n }).catch(error => {\r\n\r\n\r\n })\r\n }\r\n }\r\n }\r\n\r\n handleFieldChange = (event) => {\r\n this.setState({\r\n [event.target.name]: event.target.value,\r\n result: {\r\n ...this.state.result,\r\n [event.target.name]: event.target.value\r\n }\r\n })\r\n }\r\n\r\n \r\n handleDropdownChange = (event) => {\r\n const value = event.target.value;\r\n this.setState({ ConstructionTypeId: value, constructionTypeError:null})\r\n let dropdownurl = this.props.options.crud.dropdownread.get.url+this.props.match.params.routeid + '/' + value\r\n GetData(dropdownurl).then(result => {\r\n if (result && result.Id) {\r\n this.setState({ parentId: parseInt(atob(result.BodyStr)) })\r\n }\r\n else this.setState({ parentId: null})\r\n }).catch(error => {\r\n\r\n })\r\n }\r\n\r\n handleBack = () => {\r\n const { match } = this.props\r\n if(this.props.options.tabprops) {\r\n this.props.onClose();\r\n this.props.handleCustomBack();\r\n }\r\n else {\r\n let url = match.url\r\n let final = url\r\n final = url.substring(0, url.lastIndexOf(\"/\"))\r\n this.props.history.push(final)\r\n }\r\n }\r\n handleTemplateId = (Id) => {\r\n this.handleSave(Id);\r\n }\r\n\r\n render() {\r\n const { options, hidesub } = this.props;\r\n const { headerProps, title, fullheight, designprops } = options;\r\n const { savebutton, editbutton, backbutton, closebutton, breadcrumbs, sendbutton, nonstickyposition, navigateup, navigatedown, duplicatebutton } = headerProps ? headerProps : {}\r\n const { editorState, result } = this.state\r\n return (\r\n <div>\r\n <FormHeader accessPermissions={this.props.accessPermissions} accessLevelPermissions={this.props.accessLevelPermissions} breadcrumbs={breadcrumbs} title={title} onFullScreen={this.props.onFullScreen} onExitFullScreen={this.props.onExitFullScreen} fullscreen={this.props.fullscreen} exitfullscreen={this.props.exitfullscreen} onNextItem={this.onNextItemClick} onPrevItem={this.onPrevItemClick}\r\n handleSave={() => this.callTemplateSave()} handleBack={this.handleBack} dataItem={this.props.dataItem} navigateup={navigateup} navigatedown={navigatedown}\r\n savebutton={savebutton} backbutton={backbutton} designprops={designprops} />\r\n {!hidesub && <div className=\"pl-2 pt-2 col-sm-10\">\r\n <CFormTextBox value={this.state.Subject} name=\"Subject\" label=\"Subject\"\r\n handleFieldChange={this.handleFieldChange} edit={true} />\r\n </div>}\r\n {hidesub && <CFormDropDown value={this.state.ConstructionTypeId} dropdownvalues={this.state.ConstructionTypeJson} required={true}\r\n name=\"TypeId\" label=\"Description of Construction Type\" transformProps={transformProps}\r\n handleFieldChange={this.handleDropdownChange} helperText={this.state.constructionTypeError} error={this.state.constructionTypeError ? true : false} />}\r\n <TemplateForm templateId={editorState} parentid = {this.state.parentId} isEnabled={true} mentions={null} entryData={null} showComments={false}\r\n ref={this.TemplateForm} handleTemplateId={(editorVal) => { this.handleEditorTemplateId(editorVal) }} isadmin={false} fullheight={fullheight} />\r\n </div>\r\n )\r\n}\r\n}\r\n\r\nconst mapActions = dispatch => {\r\n return bindActionCreators({ snackbarMessage }, dispatch);\r\n}\r\n\r\nStandardDescOfConstruction = connect(null, mapActions, null, { forwardRef: true })(StandardDescOfConstruction)\r\nexport default withRouter(StandardDescOfConstruction)"],"sourceRoot":""}