{"version":3,"sources":["Styles sync /^/.*$","Styles/basic.css.bak","serviceWorker.js","Components/authorizedComponent.jsx","Components/loginComponent.jsx","AppUpdate.jsx","Components/Parts/ControlsERP/factsDataGrid.jsx","Components/Parts/Controls/factsExpansionPanel.jsx","Components/Parts/ControlTemplates/ListViewItem/listViewTaskTemplate.jsx","Components/Parts/ControlTemplates/ListViewItem/listViewCustomTemplate.jsx","Components/Parts/Controls/factsSwipeList.jsx","Components/Parts/Controls/factsButton.jsx","Components/Parts/Controls/factsEntry.jsx","Components/Parts/Controls/factsFAB.jsx","Components/Parts/Controls/factsDropDown.jsx","Components/Parts/ControlTemplates/ListViewItem/listViewBubbleTemplate.jsx","Components/Parts/Controls/factsVirtualList.jsx","Components/Parts/Controls/factsList.jsx","Components/Parts/Controls/factsLabel.jsx","Components/Parts/Controls/factsIconButton.jsx","Components/Parts/Controls/factsDatePicker.jsx","Components/Parts/Controls/factsLookup.jsx","Components/Parts/Controls/factsTimePicker.jsx","Components/Parts/Controls/factsDevList.jsx","Components/Parts/Controls/factsClickRecognizer.jsx","Components/Parts/Controls/factsFileButton.jsx","Components/Parts/Controls/factsImage.jsx","Components/Parts/Controls/factsAvatar.jsx","Components/Parts/Controls/factsHidden.jsx","Components/Parts/ControlsERP/pieChartComponent.jsx","Components/Parts/ControlsERP/barChartComponent.jsx","Components/Parts/ControlsERP/lineChartComponent.jsx","Components/Parts/ControlsERP/factsERPChart.jsx","Components/Parts/Controls/factsCanvas.jsx","Components/Parts/Controls/factsExtraContent.jsx","General/layoutManipulator.jsx","Components/Parts/Controls/factsCheckbox.jsx","Components/Parts/Controls/factsFABMulti.jsx","Components/Parts/Controls/factsSection.jsx","Components/Parts/Controls/factsTreeview.jsx","Components/Parts/Controls/factsQRCode.jsx","Components/Parts/Controls/factsBarCode.jsx","Components/Parts/Controls/factsDevScheduler.jsx","Components/Parts/Controls/factsDraw.jsx","Components/Parts/Controls/factsSlider.jsx","Components/Parts/Controls/factsRadioGroup.jsx","Components/Parts/Controls/factsDesignerDummy.jsx","Components/Parts/Controls/factsTabControl.jsx","Components/Parts/Controls/factsHtmlEditor.jsx","Components/Pages/Factory/pureJSDesignerFactory.jsx","Components/Parts/Controls/factsRenderer.jsx","Components/Parts/Controls/factsHTMLView.jsx","Components/Parts/Controls/factsDragSource.jsx","Components/Parts/Controls/factsDevGrid.jsx","Components/Parts/Charts/pieChartComponent.jsx","Components/Parts/Charts/lineChartComponent.jsx","Components/Parts/Charts/areaChartComponent.jsx","Components/Parts/Charts/barChartComponent.jsx","Components/Parts/Controls/factsDevDatePicker.jsx","Components/Parts/Controls/factsDevLookup.jsx","Components/Parts/Controls/factsDevCircularGauge.jsx","Components/Parts/Controls/factsDevGanttChart.jsx","Components/Parts/Controls/factsDevLinearGauge.jsx","Components/Parts/Controls/factsDevBarGauge.jsx","Components/Parts/Controls/factsDevNumberBox.jsx","Components/Pages/Factory/pureJSComponentFactory.jsx","Components/Pages/genericPageComponent.jsx","Components/Parts/appBarInnerComponent.jsx","Components/Parts/pageHeaderSection.jsx","Components/popupComponent.jsx","Components/unAuthorizedComponent.jsx","Components/Parts/Controls/factsGlobalSearchField.jsx","Components/Parts/appBarComponent.jsx","Components/Parts/pageFooterSection.jsx","Components/Parts/AppControls/appDialog.jsx","Components/Parts/AppControls/appSnackBar.jsx","Components/Parts/AppControls/appMenu.jsx","Components/Parts/AppControls/appBackDrop.jsx","App.jsx","Components/Parts/AppControls/appNotification.jsx","index.jsx","General/globalFunctions.jsx","AppOwnState/index.jsx","AppOwnState/ownStateActions.jsx","AppOwnState/ownStateActionTypes.jsx","Services/storageService.jsx","General/funcExecutor.jsx","General/commonFunctions.jsx","Services/offlineService.jsx","Services/_serviceBase.jsx","Services/httpService.jsx","General/globals.jsx","Components/Parts/AppControls/appTimer.jsx","Components/Parts/AppControls/voiceRecorder.jsx","Services/authService.jsx","Services/pageService.jsx","AppOwnState/ownObjectStore.jsx","AppOwnState/ownState.jsx"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","isLocalhost","Boolean","window","location","hostname","match","registerValidSW","swUrl","config","navigator","serviceWorker","register","then","registration","onupdatefound","installingWorker","installing","onstatechange","state","controller","console","log","onUpdate","onSuccess","catch","error","drawerVariantValue","LoginComponent","props","loginName","password","rememberMe","pwdPlainText","document","title","applicationTitle","setGlobalDrawerWidth","stateValue","target","value","type","checked","this","setState","preventDefault","ownStore","dispatch","showAppBusy","authServiceInstance","login","verifyLogin","authOK","status","doNext","hideAppBusy","authEvents","JSON","parse","ExecuteLayoutEventMethods","continueLogin","ShowSnackBar","onSubmit","doSignIn","bind","Card","className","variant","style","loginBoxStyle","CardContent","Grid","container","spacing","item","xs","loginDivStyle","loginImage","height","loginImageStyle","src","alt","loginTitle","loginTextStyle","TextField","label","appTitles","loginname","size","autoComplete","onChange","handleInputChange","InputProps","backgroundColor","fullWidth","endAdornment","InputAdornment","position","IconButton","onClick","Icon","FormControlLabel","control","Switch","Typography","fontSize","fontWeight","rememberme","Button","color","loginbutton","Component","AppUpdate","PWA_VERSION_KEY","isChecking","isInstalling","open","serverPWAVersion","noServer","_serviceBase","ServiceBase","loadFromFileURL","Date","toISOString","appOptions","ver","showUpdateDialog","getUpdateDialog","checkForUpdates","Dialog","DialogTitle","DialogContent","getAppStartPage","DialogActions","msgContent","currentVersion","localStorage","getItem","updatePWA","setTimeout","a","caches","cacheList","i","length","delete","appSWRegistration","unregister","setItem","removeItem","reload","FactsDataGrid","resultLayoutInfo","GetControlPropertyFromStoreOrRefData","layout","refData","resultDataInfo","data","mounted","unsubscribe","subscribe","clickedRow","whenclick","width","downloadbutton","_exportTableToExcel","TableContainer","component","Paper","boxShadow","Table","stickyHeader","tableLayout","tableStyle","TableHead","TableRow","t","index","TableCell","key","dmldet_column_caption","TableBody","row","TR_BACKCOLOR","TR_TEXTCOLOR","handleButtonClick","col","colindex","_getColumnTextColor","_getColumnBackgroundColor","cellStyle","dmldet_column_alignment","_getFormattedCellValue","filename","table","getElementById","rows","toLocaleDateString","rowvalues","cells","cellValue","innerText","replace","indexOf","push","csvContent","forEach","rowArray","join","encodedUri","encodeURI","link","createElement","replaceAll","setAttribute","body","appendChild","click","dmldet_column_name","dmldet_column_type","dyadicFuncExecutor","_getDateFormat","dmldet_column_format","DMLDET_MORE_OPTIONS","cTypeEl","DOMParser","parseFromString","getElementsByTagName","cNodes","childNodes","nodeValue","cValue","href","rel","dateFormat","numberFormat","FactsExpansionPanel","expanded","excluded","filter","includes","reduce","obj","nextProps","_expTitle","startsWith","endsWith","footerScaff","PureJSComponentFactory","scaffoldComponent","footer","newProps","ripOffControlSpecificAttributes","Accordion","handleOpen","AccordionSummary","expandIcon","AccordionDetails","children","ListViewTaskTemplate","itemObject","highlightto","class","itemProps","buttons","bt","getButton","hasbadge","badgefield","icon","iconprops","badgeprops","subtitle","md","footer1label","footer1value","footer2label","footer2value","footer3label","footer3value","footer4label","footer4value","hasBadge","badgeField","iconProps","badgeProps","buttonProps","handleIconClick","Badge","badgeContent","whenClick","PureComponent","ListViewCustomTemplate","liRef","React","createRef","newStyles","resolveStyles","loadDOM","nowLoadDOM","isScrolledIntoView","current","resolvestyles","getProcessedArgs","hlclass","litems","getElementsByClassName","el","rect","getBoundingClientRect","elemTop","top","elemBottom","bottom","innerHeight","bareBoneStyle","scaff","lazy","ref","undefined","handleClick","FactsSwipeList","listds","currentPage","listData","filterto","filterTo","it","objectMatchAll","satisfy","filtermode","filterignorecase","dset","getState","filterDataset","storeInfo","watch","filteredData","renderList","pageCount","renderStartIndex","paging","Math","ceil","pagesize","isNaN","renderEndIndex","slice","threshold","contentTemplate","getContentTemplate","content","leftSwipe","left","rightSwipe","right","itemprops","disableleft","disableright","swipeRight","text","action","whenswipe","swipeLeft","padding","Array","pn","numberprops","marginLeft","emptytext","template","chld","FactsButton","_propsRedux","_badgeContent","appendprops","getProcessedDynamic","badge","propsRedux","btnID","getUniqueID","newState","stringify","_reduxBadgeContent","controlid","FactsEntry","rowIndex","rowindex","textValueFromState","initialvalue","textValue","finalValue","isChangeDirty","isBlurDirty","field","reportValidity","currentValue","escapeValues","parseFloat","inputProps","min","minValue","max","maxValue","saveCurrentTextToDataset","whenblur","parent","rowData","exec","args","noprocess","parseInt","fieldname","eventToRun","clearTimeout","changeTO","delay","textVal","regex","RegExp","runCustomOnChangeEvents","whenchange","acceptTab","keyCode","execCommand","charCode","stopPropagation","whenkeyup","eventkeys","select","val","format","decimals","formatted","toFixed","InputBase","onKeyPress","handleKeyPress","onKeyUp","handleKeyUp","onKeyDown","handleKeyDown","handleOnChange","onBlur","handleOnBlur","onFocus","handleOnFocus","FactsFAB","Fab","FactsDropDown","_listData","listdset","selectValueFromState","selectValue","emptyIfValueNotValid","SelectProps","multiple","isArray","newList","whenitemclick","renderValue","option","valuefield","textfield","MenuItem","handleOnClick","Checkbox","ListViewBubbleTemplate","Avatar","avatar","marginRight","float","head","foot","FactsVirtualList","currentDS","divRef","ChangePageDataSetState","datasets","getCurrentDataSet","scrollToDown","newData","scrolldown","scrollTo","itemSize","itemCount","renderRow","dsets","FactsList","reverse","d","propkey","newDS","lastChild","scrollIntoView","block","listArrayToRender","convertToArrayIfObject","lazyStyle","overflow","pageSize","pagelistArray","fromItem","toItem","onScroll","handleListScroll","propValue","getValueType","Pagination","count","showLastButton","showFirstButton","pageprops","page","v","currentList","parentProps","FactsLabel","originalText","getExcerpt","hasMore","textExcerpt","hasMoreText","textExcerptValue","excerpt","substring","staticbinding","_getEscapeValue","handleReadMoreClick","morelabel","lesslabel","String","fromCharCode","splitted","split","datatype","FactsIconButton","controlRef","unmount","FactsDatePicker","timeZoneFromServer","globalTimeZone","moment","tz","setDefault","dateValueFromState","dateValue","date","changeBinding","LocalizationProvider","dateAdapter","AdapterDateFns","utils","MomentUtils","DatePicker","inputFormat","renderInput","FactsLookup","autoclickargs","popuptitle","popupsection","proc","dataid","column","section","doctype","popupdoctype","docno","popupdocno","icons","empty","notempty","adornIcon","handleEmptyIconOnClick","onMouseDown","tabIndex","handleNotEmptyIconOnClick","readOnly","FactsTimePicker","modifiedDate","neveraddtz","getTZPrefix","TimePicker","FactsDevList","searchExpr","rtlEnabled","appTheme","direction","dataSource","noDataText","searchEditorOptions","placeholder","onPullRefresh","onPullRefreshEvent","itemRender","templ","FactsClickRecognizer","FactsFileButton","mergeImageData","fileName","fileSize","fileType","fileBase64","dataToMerge","namefield","sizefield","typefield","contentfield","versionfield","getTime","contentid","filetoBlob","file","URL","createObjectURL","inputRef","cordova","camera","fileprops","capture","cameraDirection","destinationType","quality","base64Prefix","getPicture","imageData","ex","encodingType","targetWidth","correctOrientation","files","fileToBase64","name","Promise","reject","appFileReader","FileReader","readAsDataURL","onload","result","onerror","display","onError","alert","FactsImage","fileContentFromState","disp","fileContent","showImage","staticimage","FactsAvatar","avatarImage","image","avatarText","handleAvatarClick","FactsHidden","Hidden","PieChartComponent","chartData","palette","chartTitle","argumentField","argField","valueField","visible","customizeText","mode","orientation","itemTextPosition","horizontalAlignment","verticalAlignment","itemTextFormat","arg","argumentText","percentText","BarChartComponent","ignoreEmptyPoints","nameField","LineChartComponent","showInLegend","enabled","customizeTooltip","valueText","pointInfo","FactsERPChart","_chartTitle","_chartLayoutXML","layoutXML","_chartData","_strRedChInfo","_strRedChData","_strCurChData","chartLayoutXML","_chartInfo","parseChartLayoutXML","chartInfo","xmlDoc","chartXLabel","querySelector","chartType","getAttribute","chartXItem","getChart","FactsCanvas","fileVersion","version","drawCanvas","myCanvas","fVer","isSameVersion","img","Image","ctx","getContext","isImageProportional","autorotate","translate","rotate","PI","drawImage","toDataURL","filetype","revokeObjectURL","FactsExtraContent","iframeRef","contentWindow","receiveCall","resolveprops","LayoutManipulator","arr","path","newPath","toString","traverseObject","ob","traverseArray","inp","layoutJSON","layoutStuffs","stuff","FactsCheckbox","checkValueFromState","checkVal","checkValue","whencheck","whenuncheck","labelProps","FactsFABMulti","showSubs","subScaff","subs","Zoom","in","FactsSection","FactsTreeview","TreeView","defaultExpanded","defaultCollapseIcon","defaultExpandIcon","defaultEndIcon","parentPropKey","nodeId","rootPropKey","currentNodeId","resItemProps","datafield","expandable","listToRender","TreeItem","FactsQRCode","qrScanNow","handleScan","whenscan","err","whenerror","handleError","onScan","FactsBarCode","FactsDevScheduler","selectedDate","currentDate","now","timeTableCellComponent","cellProps","TimeTableCell","startDate","showCloseButton","FactsDraw","saveableCanvas","timeStamp","tStamp","undo","clear","getDataURL","brushRadius","lazyRadius","immediateLoading","cDraw","canvasOnChange","FactsSlider","event","newValue","Slider","FactsRadioGroup","valueFromState","saveCurrentValueToDataset","RadioGroup","Radio","FactsDesignerDummy","alignItems","pointerEvents","FactsTabControl","fillLayoutData","curTabData","dsFiller","sServerDataSet","layoutinfo","layoutParsed","handlTabChange","tabData","currentTabData","Box","sx","borderBottom","borderColor","Tabs","Tab","textTransform","border","FactsHtmlEditor","editor","ClassicEditor","onReady","handleOnReady","getData","PureJSDesignerFactory","layoutArray","ctrl","currentCtrl","ctrlChildren","controlType","_getControlTypeFromKey","resolvedProps","styleProps","ctrlProps","includerefdata","elementKey","toLowerCase","ButtonGroup","FactsRenderer","renderBoxEvents","renderDIV","onclick","runAction","onkeyup","whendocumentkeyup","ondragover","ondrop","whendrop","newLY","getCurrentLayout","renderer","neutralLY","neutralize","currentLY","closest","querySelectorAll","classList","remove","validElement","add","dataCtrPath","dataCtrChild","desProps","newPropState","data-ctr-title","data-ctr-class","data-ctr-child","data-ctr-path","FactsHTMLView","contentJSON","binding","contenttype","dangerouslySetInnerHTML","__html","FactsDragSource","handleDrag","ev","dataTransfer","setData","draggable","onDragStart","FactsDevGrid","useRef","useState","autoExpandAll","columninfo","columnspecs","getCurrentColumns","columns","summaryIteminfo","summaryItems","getSummaryItems","summaryGroupIteminfo","summaryGroupItems","getSummaryGroupItems","selectedRows","setSelectedRows","useEffect","handleRowClicked","whenrowclick","events","onRowClick","handleRowDblClicked","whenrowdblclick","onRowDblClick","onCellClicked","timeOutHandler","onCellClick","onCellDblClicked","onCellDblClick","stopImmediatePropagation","whenselectionchange","handleSelectionChange","selectedRowsData","handleFocusedRowChanged","whenfocusedrowchanged","exportThingy","export","formats","otherprops","focusedRowIndex","keyExpr","focusedRowEnabled","allowColumnReordering","allowColumnResizing","showColumnLines","showRowLines","showBorders","onCellPrepared","rowType","cellrenderedConditionally","conditionalFormat","fieldName","Data","condition","appearance","assign","cellElement","cssClass","onRowPrepared","applyToRow","rowElement","onSelectionChanged","onFocusedRowChanged","onRowDblClicked","onRowClicked","allowSorting","editable","allowUpdating","canupdate","allowAdding","canadd","allowDeleting","candelete","caption","captionfield","dataField","widthfield","editCellRender","editprops","chldfield","dataInfo","displayValue","cellComponent","dv","dataType","_formatDateTime","formatNumber","columnEdit","columnJSON","groupCellRender","groupProps","pointClickHandler","legendClickHandler","onPointClick","onLegendClick","labelVisible","connectorVisible","legend","legendVisible","legendOrientation","legendHorizontalAlignment","legendVerticalAlignment","legendItemTextPosition","graphSize","exportEnabled","toggleVisibility","getAllSeries","getPointsByArg","isVisible","hide","show","valueMarginsEnabled","discreteAxisDivisionMode","gridVisible","toolTipEnabled","year","android","ios","AreaChartComponent","margin","factory","scalePoint","labelPrecision","precision","Series","FactsDevDatePicker","dateSerializationFormat","onValueChanged","FactsDevLookup","displayExpr","valueExpr","handleValueChange","FactsDevCircularGauge","rangeContainer","range","r","FactsDevGanttChart","tasks","dependencies","resources","resourceAssignments","taskListWidth","scaleType","showResources","showDependencies","taskTitlePosition","toolbarparams","allowUndo","allowRedo","allowCollapseAll","allowExpandAll","allowAddTask","allowDeleteTask","allowZoomIn","allowZoomOut","allowAutoUpdateParentTasks","autoUpdateParentTasks","allowEdit","allowFilter","allowHeaderFilter","sortingMode","FactsDevLinearGauge","FactsDevBarGauge","gaugeData","gaugeDataActivity","active","values","getValueChangedHandler","c","checkboxPanelEnabled","panelStyle","FactsDevNumberBox","handleOnFocusOut","onFocusOut","handleOnFocusIn","onFocusIn","numberValueFromState","numberValue","handleOnValueOnChange","indexPrefix","scaffID","newIndex","Fragment","GenericPageComponent","pageInfo","random","AppBarInnerComponent","myTitle","clickArgs","popupName","appPlatform","whenbackclick","whenSubAppbarbackclick","AppBar","Toolbar","edge","handleSubAppbarBackClick","showBackClick","handleBackClick","PageHeaderSection","pageHeader","PopupComponent","popupInfo","popupStateChange","dsPopupInfo","plInfo","needPopupEventExecution","pkey","wheninit","whenload","popup","SinglePopup","memo","PaperProps","overflowY","paperstyle","fullScreen","fullscreen","appbar","subappbar","pageheader","unAuthorizedComponent","pageFooter","offlineLayoutInfo","mainfooter","lg","sm","FactsGlobalSearchField","handleChange","menuItem","userMenu","menuDropClick","inputValue","handleClose","reson","searchFieldColor","searchFieldTextColor","dsAppTheme","Stack","Autocomplete","freeSolo","options","menu","permalink","params","onClose","onInputChange","clearOnBlur","AppBarComponent","isDrawerOpen","openedMenus","DrawerVisibility","loginSettings","primaryColor","primary","main","thisYear","getFullYear","isIOS","userAgent","test","setWidthFunc","hasChildren","isMenuOpen","menuid","drawerVariant","history","pushState","scafftitle","titlepart","appTitle","appbarClass","toggleDrawer","Menu","globalsearchfield","menuItemClick","Drawer","onOpen","disableBackdropTransition","disableDiscovery","disableSwipeToOpen","disableswipe","classes","paper","setContentWidth","appDrawerWidth","userimage","background","paddingBottom","username","paddingLeft","userdesig","List","parentid","showinmenu","getmenuItem","logoMime","menuLevel","ListItem","dense","button","ListItemIcon","minWidth","ListItemText","Collapse","timeout","unmountOnExit","disablePadding","submenuItem","subIndex","Divider","PageFooterSection","currentOptions","BottomNavigation","bgcolor","BottomNavigationAction","showLabel","textcolor","iconcolor","AuthorizedComponent","_getFuncValue","getCurrentUserDetails","_userInfo","loadUserSpecificMenu","userrole","_userMenu","StorageService","getJsonValue","userDetailsStorageKey","userMenuStorageKey","passedState","elems","sWidth","elem","authMethode","getDetailsFromServer","getDetailsFromLocal","actionObj","passedTimeZone","timezone","usertheme","setGlobalTimeZone","SetCreateDataSet","whenAppLoad","initialSetup","handleRouting","loadUserDetails","userDetails","_userrole","loadUserMenu","setJsonValue","docNoFromRoute","pageToShow","homepage","pagefooter","AppDialog","dialogInfo","dsDialogInfo","HideDialog","btn1","btn2","description","onDialogClose","zIndex","DialogContentText","firstButtonClick","secondButtonClick","autoFocus","AppSnackBar","snackInfo","dsSnackInfo","source","HideSnackBar","Snackbar","autoHideDuration","duration","onSnackClose","elevation","severity","message","AppMenu","menuInfo","HideAppMenu","anchorElement","dsMenuInfo","clickEvent","onMenuClose","items","anchor","menuTitle","refdata","Popover","anchorEl","anchorOrigin","vertical","horizontal","transformOrigin","marginTop","keepMounted","menuContent","onMenuClick","AppBackDrop","isAppBusy","Backdrop","CircularProgress","App","isPageLoading","isAuthenticated","uiDirection","authid","authemail","GPSLocation","storeDset","loginDS","appTimer","userInfoStateChange","pageStateChange","notifyInfo","appNotifPermission","showNotif","notiArgs","showNotification","HideAppNotification","appNotification","mediaInfo","objVoiceRecorder","doAction","downloadInfo","DownloadFileFromState","primary_color","secondary","secondary_color","applyAppOptions","theme","createTheme","appJSS","create","plugins","jssPreset","rtl","header","whenAppInit","authLogin","authLogout","queryStringParams","queryString","search","authtoken","email","doSignInSSO","runTimer","stylefile","_loadCSS","SSOlogin","clearInterval","timeInterval","dsUserInfo","uidirection","dsPageInfo","pInfo","layoutInfo","pageTimerExecs","whentimer","require","routerProps","apiRoot","Helmet","StylesProvider","jss","ThemeProvider","exact","render","_getComponentToStart","_offLayout","initGlobalValues","ReactDOM","startApp","addEventListener","RemoveLastDialog","process","origin","fetch","headers","response","contentType","get","ready","checkValidServiceWorker","waitingServiceWorker","waiting","postMessage","setSWRegistration","Notification","requestPermission","setNotifPermission","disableLocation","geolocation","getCurrentPosition","lat","coords","latitude","long","longitude","PERMISSION_DENIED","POSITION_UNAVAILABLE","TIMEOUT","UNKNOWN_ERROR","MergeDataSet","ShowAppNotification","ShowAppMenu","ShowDialog","dsDownloadInfo","linkSource","mime","base64","preview","write","storeDataset","payload","STORE_DATASET","mergeObjectDataset","MERGE_OBJECT_DATASET","mergeArrayDataset","MERGE_ARRAY_DATASET","storeDatasetField","STORE_DATASET_FIELD","AUTH_LOGIN","AUTH_LOGOUT","SHOW_APP_BUSY","HIDE_APP_BUSY","STORE_USER","sourceStorage","_getStorage","storageValue","jsonValue","decodeURIComponent","escape","atob","btoa","unescape","encodeURIComponent","storeType","sessionStorage","shouldPersist","IFTRUE","IFFALSE","MATH_ADD","MATH_SUB","MATH_MULTI","MATH_DIV","MATH_MOD","MATH_POW","funcs","funcName","firstValue","secondValue","firstValMath","secondValMath","_dateDiffExec","_ifNullExec","_ifNullOrEmptyExec","trim","substr","lastIndexOf","replaceValues","replaceValuesAll","some","every","indent","pow","abs","dsetArray","total","currentItem","ciValue","calculateListSummary","self","findIndex","calculateListCount","sortKey","sortedArray","sort","b","sortTheList","lisCount","fieldNameAndValue","fieldArray","assertedMatches","fa","keyfa","getListIndexMatchingValue","getFilteredList","valType","number","numSplit","prec","whole","decim","toFix","valNumber","noTimeZone","firstDateValue","secondDateValue","millis","differenceInMilliseconds","addMilliseconds","startOfToday","formatString","noTimeZonePrefix","_loadProcDataToDataSet","serverDataset","eventInfo","callBackFunction","ignoreempty","dataSetName","columnValue","nojsonparse","rowValue","storeDataSet","currentDataSet","dstr2","hash","dataObject","DeepMergeDataSet","sourceObject","mergedObject","deepmerge","arrayMerge","destinationArray","sourceArray","MergeDataSetArray","SetCreateDataSetField","originalData","keepField","keepfield","fieldArrays","deepValue","splice","dataset","verifyArgs","stringComparison","stringIgnoreCase","isAllMatched","verifyDatasetAgainstMultipleValues","shouldHaltExecution","whenmatch","halton","whenunmatch","getProcessedArgsWithGeoLocation","noDeepProcess","geolat","geolong","dataPoint","result_type","pageServiceInstance","procName","resolvedArgs","sProcessedArgs","nodeepprocess","controllerName","offlineAccess","offline","loadData","verify","eventData","secondaryCall","eData","executeEventDataPoint","fillDsArgs","argsdset","noprocessargsdset","rServerDataSet","fillFileArgs","eServerDataSet","fillRptArgs","mServerDataset","mdset","fillMDsArgs","sdsName","processedArgsData","nds","processedArgsDataLocal","lKeyName","keyProcessedData","resolvekeys","processObjectKeys","processedArgsData2","processedArgsDataSourceDeep","data1","processedArgsDataDeep","data2","processedArgsData3","processedArgsData4","curInde","input","haltwhen","haltWhenResult","messageToShow","errormessage","exitData","logout","uploadFile","processedDialogData","dialBtn1Prop","btn1props","btn1whenclick","dialBtn2Prop","btn2props","btn2whenclick","menuItems","getProcessedArray","snackArgs","evalJS","js","evalArgs","eval","alertData","logData","prefix","toLocaleString","downloadArgs","filedata","removeChild","processedData","prKey","noDeepProcessing","fromRenderer","processedArgs","argsToProcess","noinitialprocess","propertyString","currentState","prop","_resolveInnerBinding","funcDetails","currentFuncIndex","oper","propList","aggregate","_getBindData","haveCondition","j","sampler","pSplits","innerBindStart","pop","innerBindEnd","innerBind","bindData","propArray","dataMode","getLastPopupKey","urlArray","urlChunkIndex","shift","getReduxState","propItem","getFullState","endOfToday","iW","innerWidth","dstate","lastKey","currentTarget","currentPageInfo","whenbackbutton","OfflineService","requestBody","responseBody","dbMethod","addNow","getNow","indexedDB","request","requestKey","responseData","onsuccess","database","onupgradeneeded","createObjectStore","keyPath","transaction","oncomplete","resolveFn","hashString","hashedKey","objectStore","dataJSON","requestStore","deleteRequest","addRequest","fileURL","httpSvc","HttpService","downloadFile","json","fileURLAbs","manageOfflineData","job_id","procKey","accessToken","dataToSend","resultType","getCommonHeaders","getProcPostBodyString","apiURL","endPoint","procPath","reportPath","xlUploadPath","xlTempPath","fileDownloadPath","unProcPath","postServer","fullURL","isOffline","info","statusCode","resolveOffline","getFilePostBodyString","uploadRoot","uploadPath","promise","ok","postURL","fetchOptions","method","cache","credentials","AppTimer","appTimerExecs","popupTimerExecs","idleTimer","timerSeconds","idleReset","setInterval","executeTimerFunctions","timerFunctions","tfn","interval","VoiceRecorder","audioElement","cssText","onplay","releaseAction","onpause","audioStop","onended","extraEvents","generateAudioElement","paused","ended","play","pause","mRecorder","mediaDevices","getUserMedia","audio","mediaStreamObj","MediaRecorder","onstart","tout","ondataavailable","reader","onloadend","recordStartTime","starttime","elapsedTime","onstop","start","stop","AuthService","authPath","authBody","client_id","client_secret","remember_me","eCS","grant_type","hash_method","access_token","stService","setStatePersistance","authStorageKey","at","tt","token_type","ei","expires_in","getStoredToken","currentToken","isTokenNeeded","loadFromServer","clearStorage","_userDetails","userRole","PageService","action_args","sendFileToServer","debugstate","stylekey","service","url","auth","methode","unproc","report","xlupload","xltemplate","filedownload","authbody","upload","logo","align","boxstyle","imagestyle","settings","whenappinit","themeload","titles","permission","getTimezoneOffset","floor","padStart","crypto","subtle","msgUint8","TextEncoder","encode","digest","hashBuffer","hashArray","from","Uint8Array","hashHex","getRandomValues","ownObject","fieldDataset","mergedData","replaceIndex","returnArray","arObj","callBackFunctions","callBackFn","fnKey","callBakObj","fn","dsetName","getDataSet","getFullDataSet","actionDSetName","mergeDataSet","mergeDataSetArray","storeDataSetField","fnObj"],"mappings":"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","file":"static/js/main.9128b1fa.chunk.js","sourcesContent":["var map = {\n\t\"./animate.min.css\": 774,\n\t\"./basic-win.css\": 1057,\n\t\"./basic.css\": 775,\n\t\"./basic.css.bak\": 1058,\n\t\"./responsive.css\": 776\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 1056;","module.exports = __webpack_public_path__ + \"static/media/basic.css.e2be182d.bak\";","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.0/8 are considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n\r\n\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n\r\n\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl, {\r\n headers: { 'Service-Worker': 'script' }\r\n })\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready\r\n .then(registration => {\r\n registration.unregister();\r\n })\r\n .catch(error => {\r\n console.error(error.message);\r\n });\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport AppBarComponent from \"./Parts/appBarComponent\";\r\nimport StorageService from \"../Services/storageService\";\r\nimport {\r\n authMethode,\r\n authServiceInstance,\r\n userDetailsStorageKey,\r\n userMenuStorageKey,\r\n whenAppLoad,\r\n appDrawerWidth,\r\n setGlobalDrawerWidth,\r\n appTheme,\r\n appPlatform,\r\n setGlobalTimeZone,\r\n themeload\r\n} from \"../General/globals\";\r\nimport GenericPageComponent from \"./Pages/genericPageComponent\";\r\nimport { AppBar, Grid, Drawer } from \"@mui/material\";\r\nimport AppBarInnerComponent from \"./Parts/appBarInnerComponent\";\r\n// import store from \"../AppRedux/store\";\r\nimport {\r\n ExecuteLayoutEventMethods,\r\n SetCreateDataSet,\r\n _getFuncValue,\r\n} from \"../General/commonFunctions\";\r\nimport PageHeaderSection from \"./Parts/pageHeaderSection\";\r\nimport PageFooterSection from \"./Parts/pageFooterSection\";\r\nimport PopupComponent from \"./popupComponent\";\r\nimport { styled, useTheme } from \"@mui/material/styles\";\r\nlet drawerVariantValue;\r\nclass AuthorizedComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n userMenu: null,\r\n };\r\n // if (appPlatform == \"win\") {\r\n // drawerVariantValue = \"persistent\";\r\n // } else {\r\n // drawerVariantValue = \"temporary\";\r\n // }\r\n drawerVariantValue = (_getFuncValue(\"screensize\")===\"lg\"?\"persistent\": \"temporary\");\r\n }\r\n\r\n async getDetailsFromServer() {\r\n let _userInfo = await this.getCurrentUserDetails();\r\n let _userMenu = await this.loadUserSpecificMenu(_userInfo.userrole);\r\n return {\r\n _userInfo,\r\n _userMenu,\r\n };\r\n }\r\n\r\n getDetailsFromLocal() {\r\n let _userInfo = new StorageService().getJsonValue(userDetailsStorageKey);\r\n let _userMenu = new StorageService().getJsonValue(userMenuStorageKey);\r\n\r\n return {\r\n _userInfo,\r\n _userMenu,\r\n };\r\n }\r\n\r\n setContentWidth(passedState) {\r\n if (drawerVariantValue == \"persistent\") {\r\n if (passedState == true && appDrawerWidth != 0) {\r\n setGlobalDrawerWidth(0);\r\n } else {\r\n if (passedState === true) {\r\n setGlobalDrawerWidth(240);\r\n } else {\r\n setGlobalDrawerWidth(0);\r\n }\r\n }\r\n var elems = document.getElementsByClassName(appTheme.appbarClass);\r\n let sWidth = `calc(100% - ${appDrawerWidth}px`;\r\n for (let elem of elems) {\r\n elem.style.width = sWidth;\r\n elem.style.marginLeft = `${appDrawerWidth}px`;\r\n }\r\n }\r\n if (appDrawerWidth == 0) {\r\n localStorage.setItem(\"wasDrawerVisible\", false);\r\n } else {\r\n localStorage.setItem(\"wasDrawerVisible\", true);\r\n }\r\n }\r\n\r\n async initialSetup() {\r\n let { _userInfo, _userMenu } =\r\n authMethode === \"cookie\"\r\n ? await this.getDetailsFromServer()\r\n : await this.getDetailsFromLocal();\r\n\r\n _userMenu =\r\n _userMenu &&\r\n _userMenu?.map &&\r\n _userMenu?.map((t) => {\r\n let actionObj = JSON.parse(t.action);\r\n t.action = actionObj;\r\n return t;\r\n });\r\n\r\n let passedTimeZone=\"\";\r\n if(_userInfo.timezone!=null||_userInfo.timezone!=\"\") passedTimeZone=_userInfo.timezone;\r\n else passedTimeZone=\"Asia/Dubai\";\r\n\r\n if(_userInfo.usertheme !=null||_userInfo.usertheme!=\"\") {\r\n await ExecuteLayoutEventMethods(\"[dsInitThemeLoad]\");\r\n }\r\n\r\n setGlobalTimeZone(passedTimeZone);\r\n\r\n if (!_userInfo || !_userMenu) {\r\n ExecuteLayoutEventMethods([{ exec: \"logout\" }]);\r\n return;\r\n }\r\n\r\n // store.dispatch(storeUser(userInfo)); //Redux\r\n SetCreateDataSet({ dset: \"_userinfo\" }, _userInfo); //Redux\r\n SetCreateDataSet({ dset: \"_usermenu\" }, _userMenu); //Redux\r\n this.setState({\r\n userMenu: _userMenu,\r\n });\r\n await ExecuteLayoutEventMethods(whenAppLoad, null, null, true); //Appload from Initjson\r\n }\r\n\r\n async componentDidMount() {\r\n await this.initialSetup();\r\n this.handleRouting();\r\n // ownStore.dispatch(hideAppBusy());\r\n }\r\n\r\n async getCurrentUserDetails() {\r\n let userDetails = await authServiceInstance.loadUserDetails();\r\n if (userDetails && userDetails.length > 0) {\r\n return userDetails[0];\r\n }\r\n return null;\r\n }\r\n async loadUserSpecificMenu(_userrole) {\r\n let _userMenu = await authServiceInstance.loadUserMenu({\r\n userrole: _userrole,\r\n });\r\n new StorageService().setJsonValue(userMenuStorageKey, _userMenu);\r\n return _userMenu;\r\n }\r\n\r\n async handleRouting() {\r\n let docNoFromRoute = this.props?.match?.params[\"permalink\"];\r\n let pageToShow = this.state.userMenu?.filter(\r\n (t) => docNoFromRoute === t.permalink\r\n );\r\n if (pageToShow?.length <= 0) {\r\n pageToShow = this.state.userMenu?.filter(\r\n (t) => t.homepage && t.homepage.toLowerCase() === \"true\"\r\n );\r\n }\r\n if (pageToShow?.length > 0) {\r\n // window.location.hash = \"#\" + pageToShow[0]?.permalink;\r\n await ExecuteLayoutEventMethods(\r\n [\r\n {\r\n exec: \"setdataset\",\r\n args: {\r\n dset: \"pagemenuinfo\",\r\n data: pageToShow[0],\r\n },\r\n },\r\n ],\r\n null,\r\n null,\r\n true\r\n );\r\n await ExecuteLayoutEventMethods(pageToShow[0]?.action, null, null, true);\r\n }\r\n }\r\n\r\n render() {\r\n if (!this.state.userMenu) return <>;\r\n return (\r\n // \r\n <>\r\n
\r\n {this.props.pageInfo && (\r\n */\r\n >\r\n )}\r\n \r\n {this.props.pageInfo?.subappbar ? (\r\n \r\n ) : (\r\n <>\r\n )}\r\n\r\n \r\n\r\n \r\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 AuthorizedComponent;\r\n","import React, { Component } from \"react\";\r\nimport Card from '@mui/material/Card';\r\nimport CardContent from '@mui/material/CardContent';\r\nimport TextField from '@mui/material/TextField';\r\nimport Grid from '@mui/material/Grid';\r\nimport { Button, Switch, FormControlLabel, InputAdornment, IconButton, Icon, Typography } from \"@mui/material\";\r\nimport { authServiceInstance, applicationTitle, loginImage, loginTitle, loginDivStyle, loginTextStyle, appTitles, loginImageStyle, loginBoxStyle, setGlobalDrawerWidth } from \"../General/globals\";\r\n// import store from \"../AppRedux/store\";\r\nimport { showAppBusy, hideAppBusy } from \"../AppOwnState\";\r\nimport { ShowSnackBar } from \"../General/globalFunctions\";\r\nimport { ownStore } from \"../AppOwnState/ownState\";\r\nimport { ExecuteLayoutEventMethods } from \"../General/commonFunctions\";\r\n\r\nclass LoginComponent extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loginName: '',\r\n password: '',\r\n rememberMe: false,\r\n pwdPlainText: false\r\n };\r\n document.title = applicationTitle;\r\n setGlobalDrawerWidth(0);\r\n }\r\n\r\n handleInputChange(e) {\r\n let stateValue = e.target.value;\r\n if (e.target.type === \"checkbox\") {\r\n stateValue = e.target.checked;\r\n }\r\n this.setState({\r\n [e.target.id]: stateValue\r\n });\r\n }\r\n\r\n\r\n async doSignIn(e) {\r\n try {\r\n e.preventDefault();\r\n ownStore.dispatch(showAppBusy());\r\n await authServiceInstance.login(this.state.loginName, this.state.password, this.state.rememberMe);\r\n let authOK = await authServiceInstance.verifyLogin();\r\n if (authOK?.status) {\r\n if (authOK?.doNext) {\r\n ownStore.dispatch(hideAppBusy());\r\n try {\r\n let authEvents = JSON.parse(authOK.doNext);\r\n await ExecuteLayoutEventMethods(authEvents);\r\n }\r\n catch { }\r\n return;\r\n }\r\n authServiceInstance.continueLogin();\r\n return;\r\n }\r\n }\r\n catch (ex) {\r\n\r\n console.error(ex);\r\n }\r\n ownStore.dispatch(hideAppBusy()); //Hide loader if the authentication failed with an errorx\r\n\r\n ShowSnackBar(\"error\", 'Login Failed!');\r\n }\r\n\r\n\r\n\r\n render() {\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n {loginImage &&\r\n \"Logo\"}\r\n {loginTitle &&\r\n

{loginTitle}

}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n this.setState({ pwdPlainText: !this.state.pwdPlainText })}>\r\n {this.state.pwdPlainText ? \"visibility_off\" : \"visibility\"}\r\n \r\n \r\n }\r\n\r\n }\r\n />\r\n \r\n \r\n \r\n }\r\n\r\n label={{appTitles?.rememberme ?? \"Remember Me\"}}\r\n />\r\n\r\n \r\n \r\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 LoginComponent; ","import React, { Component } from 'react';\r\nimport { appSWRegistration } from './General/globals';\r\nimport { Dialog, DialogTitle, DialogContent, DialogActions, Button, IconButton, Icon } from '@mui/material';\r\nimport ServiceBase from './Services/_serviceBase';\r\n\r\nclass AppUpdate extends Component {\r\n PWA_VERSION_KEY = \"FACTS_PWA_VER\";\r\n constructor() {\r\n super();\r\n this.state = {\r\n isChecking: true,\r\n isInstalling: false,\r\n open: false,\r\n serverPWAVersion: \"0.0.0\",\r\n noServer: false\r\n };\r\n }\r\n\r\n\r\n async checkForUpdates() {\r\n let _serviceBase = new ServiceBase();\r\n let appOptions = await _serviceBase.loadFromFileURL(`/init.json?ver=${(new Date()).toISOString()}`);\r\n\r\n if (appOptions) {\r\n this.setState(\r\n {\r\n serverPWAVersion: appOptions?.ver ?? \"0.0.0\",\r\n isChecking: false,\r\n noServer: false,\r\n isInstalling: false\r\n }\r\n );\r\n }\r\n else {\r\n this.setState({\r\n noServer: true\r\n });\r\n }\r\n\r\n\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n this.showUpdateDialog()}>\r\n system_update\r\n \r\n {this.getUpdateDialog()}\r\n \r\n );\r\n\r\n }\r\n\r\n async showUpdateDialog() {\r\n this.setState({\r\n open: true,\r\n isChecking: true\r\n });\r\n await this.checkForUpdates();\r\n\r\n }\r\n getUpdateDialog() {\r\n return (\r\n \r\n FactsBUD-E Update\r\n \r\n {this.getAppStartPage()}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n getAppStartPage() {\r\n let msgContent = \"No updates available! Please check back later!\";\r\n if (this.state.isChecking)\r\n msgContent = \"Checking updates...\";\r\n if (this.state.noServer)\r\n msgContent = \"Server cannot be contacted! Please check back later!\";\r\n\r\n let currentVersion = localStorage.getItem(this.PWA_VERSION_KEY);\r\n if (!this.state.isChecking &&\r\n // window.location.hostname !== 'localhost' &&\r\n (!currentVersion || currentVersion !== this.state.serverPWAVersion)) {\r\n return (\r\n
\r\n
\r\n {this.state.isInstalling ?\r\n\r\n
Installing updates... Please wait...
\r\n :\r\n <>\r\n
New FactsBUD-E Update {this.state.serverPWAVersion} is available!
\r\n \r\n \r\n }\r\n
\r\n
\r\n );\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
{msgContent}
\r\n
\r\n
\r\n );\r\n\r\n }\r\n\r\n updatePWA() {\r\n this.setState({\r\n isInstalling: true\r\n });\r\n setTimeout(\r\n async () => {\r\n let cacheList = await caches.keys();\r\n for (let i = 0; i < cacheList.length; i++) {\r\n await caches.delete(cacheList[i]);\r\n }\r\n // let sw = await navigator.serviceWorker.ready;\r\n appSWRegistration && await appSWRegistration.unregister();\r\n localStorage.setItem(this.PWA_VERSION_KEY, this.state.serverPWAVersion)\r\n localStorage.removeItem(\"offlay\")\r\n\r\n window.location.reload();\r\n }, 1000\r\n );\r\n\r\n\r\n }\r\n\r\n\r\n}\r\n\r\n\r\nexport default AppUpdate;","import React, { Component } from 'react';\r\nimport Table from '@mui/material/Table';\r\nimport TableBody from '@mui/material/TableBody';\r\nimport TableCell from '@mui/material/TableCell';\r\nimport TableContainer from '@mui/material/TableContainer';\r\nimport TableHead from '@mui/material/TableHead';\r\nimport TableRow from '@mui/material/TableRow';\r\nimport Paper from '@mui/material/Paper';\r\n\r\nimport { dyadicFuncExecutor } from '../../../General/funcExecutor';\r\nimport { ExecuteLayoutEventMethods, GetControlPropertyFromStoreOrRefData } from '../../../General/commonFunctions';\r\n// import store from '../../../AppRedux/store';\r\nimport { IconButton } from '@mui/material';\r\nimport Icon from \"@mui/material/Icon\";\r\nimport { ownStore } from '../../../AppOwnState/ownState';\r\n\r\n\r\n\r\nclass FactsDataGrid extends Component {\r\n constructor(props) {\r\n super(props);\r\n let resultLayoutInfo = GetControlPropertyFromStoreOrRefData(this.props?.layout, this.props.refData);\r\n let resultDataInfo = GetControlPropertyFromStoreOrRefData(this.props?.data, this.props.refData);\r\n this.state = {\r\n layout: resultLayoutInfo,\r\n data: resultDataInfo\r\n }\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n // let resultLayoutInfo = await pageServiceInstance.loadData(this.props?.layout?.proc, this.props?.layout?.args);\r\n\r\n // let resultDataInfo = await pageServiceInstance.loadData(this.props?.data?.proc, this.props?.data?.args);\r\n this.mounted = true;\r\n this.unsubscribe = ownStore.subscribe(() => {\r\n if (this.mounted) {\r\n\r\n let resultLayoutInfo = GetControlPropertyFromStoreOrRefData(this.props?.layout, this.props.refData);\r\n let resultDataInfo = GetControlPropertyFromStoreOrRefData(this.props?.data, this.props.refData);\r\n this.setState({\r\n layout: resultLayoutInfo,\r\n data: resultDataInfo\r\n });\r\n\r\n\r\n }\r\n });\r\n }\r\n\r\n componentWillUnmount() {\r\n this.mounted = false;\r\n if (this.unsubscribe) this.unsubscribe();\r\n }\r\n\r\n async handleButtonClick(clickedRow) {\r\n await ExecuteLayoutEventMethods(this.props.whenclick, clickedRow);\r\n\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n {this.props.downloadbutton ?\r\n \r\n file_download\r\n : <>\r\n }\r\n \r\n \r\n \r\n \r\n {\r\n this.state?.layout &&\r\n this.state.layout.map((t, index) => {\r\n return {t.dmldet_column_caption}\r\n })\r\n }\r\n\r\n \r\n \r\n \r\n {\r\n this.state?.data && this.state.layout &&\r\n this.state.data.map(\r\n (row, index) => {\r\n return (\r\n this.handleButtonClick(row)}\r\n >\r\n {this.state.layout.map((col, colindex) => {\r\n return \r\n {this._getFormattedCellValue(row, col)}\r\n\r\n \r\n })}\r\n \r\n );\r\n }\r\n\r\n )\r\n }\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n
\r\n // \r\n // // \r\n // \r\n\r\n );\r\n }\r\n\r\n\r\n\r\n\r\n _exportTableToExcel(filename) {\r\n let tableID = \"Ftabledata\";\r\n let table = document.getElementById(tableID);\r\n let rows = [];\r\n filename = 'export_' + new Date().toLocaleDateString() + '.csv';\r\n //iterate through rows of table\r\n for (let row of table.rows) {\r\n let rowvalues = [];\r\n for (let trow of row.cells) {\r\n var cellValue = trow.innerText;\r\n cellValue = cellValue.replace('\"', '\"\"');\r\n if(cellValue.indexOf(',')>0){\r\n debugger;\r\n cellValue =`\"${cellValue}\"` \r\n }\r\n rowvalues.push([cellValue]);\r\n } \r\n rows.push(rowvalues);\r\n }\r\n\r\n var csvContent = \"data:text/csv;charset=utf-8,\";\r\n /* add the column delimiter as comma(,) and each row splitted by new line character (\\n) */\r\n rows.forEach(function (rowArray) {\r\n let row = rowArray.join(\",\");\r\n csvContent += row + \"\\r\\n\";\r\n });\r\n\r\n /* create a hidden DOM node and set its download attribute */\r\n let encodedUri = encodeURI(csvContent);\r\n let link = document.createElement(\"a\");\r\n encodedUri = encodedUri.replaceAll(\"#\", \"\");\r\n link.setAttribute(\"href\", encodedUri);\r\n link.setAttribute(\"download\", filename);\r\n document.body.appendChild(link);\r\n /* download the data file named \"Stock_Price_Report.csv\" */\r\n link.click();\r\n }\r\n\r\n _getColumnTextColor(row, col) {\r\n let ColorColumnname = 'TD_' + col.dmldet_column_name + '_TEXTCOLOR';\r\n return row[ColorColumnname] ?? row['TD_TEXTCOLOR'] ?? \"inherit\";\r\n }\r\n\r\n\r\n _getColumnBackgroundColor(row, col) {\r\n let ColorColumnname = 'TD_' + col.dmldet_column_name + '_BACKCOLOR';\r\n return row[ColorColumnname] ?? row['TD_BACKCOLOR'] ?? 'inherit';\r\n }\r\n\r\n // _getColumnBackgroundColor(row, col) {\r\n // let ColorColumnname = 'TD_' + col.dmldet_column_name + '_BACKCOLOR';\r\n // return row[ColorColumnname] ?? row['TD_BACKCOLOR'] ?? 'inherit';\r\n // }\r\n\r\n\r\n _getFormattedCellValue(row, col) {\r\n if (col.dmldet_column_type === \"datetime\") {\r\n return (\r\n // \r\n {dyadicFuncExecutor(\"(dtformatntz)\", row[col.dmldet_column_name], this._getDateFormat(col.dmldet_column_format))}\r\n );\r\n }\r\n if (col.dmldet_column_type === \"number\") {\r\n return (\r\n // \r\n {dyadicFuncExecutor(\"(numformat)\", row[col.dmldet_column_name], col.dmldet_column_format)}\r\n\r\n );\r\n }\r\n else {\r\n if (typeof col.DMLDET_MORE_OPTIONS !== \"undefined\") {\r\n try {\r\n let domparser = new DOMParser();\r\n let xmlObject = domparser.parseFromString(col.DMLDET_MORE_OPTIONS, 'text/xml');\r\n let cTypeEl = xmlObject.getElementsByTagName(\"ControlType\");\r\n if (cTypeEl.length > 0) {\r\n let cNodes = cTypeEl[0];\r\n if (cNodes.childNodes.length > 0) {\r\n let cType = cNodes.childNodes[0].nodeValue;\r\n if (cType === \"RepositoryItemHyperLinkEdit\") {\r\n let cValue = row[col.dmldet_column_name];\r\n return (View);\r\n\r\n }\r\n }\r\n }\r\n\r\n }\r\n catch { }\r\n\r\n }\r\n return (row[col.dmldet_column_name]);\r\n }\r\n }\r\n\r\n _getDateFormat(dateFormat) {\r\n if (dateFormat) {\r\n return dateFormat;\r\n }\r\n return 'DD/MM/YYYY';\r\n }\r\n\r\n _getNumberFormat(numberFormat) {\r\n if (numberFormat) {\r\n return numberFormat;\r\n }\r\n return '';\r\n }\r\n\r\n}\r\n\r\nexport default FactsDataGrid;","import React, { Component } from 'react';\r\n\r\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\r\nimport Typography from '@mui/material/Typography';\r\nimport { GetControlPropertyFromStoreOrRefData } from '../../../General/commonFunctions';\r\n// import store from '../../../AppRedux/store';\r\nimport PureJSComponentFactory from '../../Pages/Factory/pureJSComponentFactory';\r\nimport { AccordionDetails, AccordionSummary, Accordion } from '@mui/material';\r\nimport { ownStore } from '../../../AppOwnState/ownState';\r\n\r\n\r\nclass FactsExpansionPanel extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n expanded: props.expanded ?? false,\r\n title: GetControlPropertyFromStoreOrRefData(this.props.title, this.props.refData)\r\n };\r\n\r\n }\r\n\r\n ripOffControlSpecificAttributes() {\r\n\r\n const excluded = [ \"resolveprops\"];\r\n return (Object.keys(this.props)\r\n .filter((t) => !excluded.includes(t))\r\n .reduce((obj, key) => {\r\n obj[key] = this.props[key];\r\n return obj;\r\n }, {}));\r\n\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n if(nextProps.title !== this.props.title) {\r\n let _expTitle = GetControlPropertyFromStoreOrRefData(nextProps.title, this.props.refData);\r\n if (this.state.title !== _expTitle) {\r\n this.setState({\r\n title: _expTitle\r\n });\r\n }\r\n }\r\n }\r\n componentDidMount() {\r\n this.mounted = true;\r\n if (this.props.title?.startsWith(\"[\") && this.props.title?.endsWith(\"]\")) {\r\n this.unsubscribe = ownStore.subscribe(() => {\r\n \r\n if (this.mounted) {\r\n \r\n let _expTitle = GetControlPropertyFromStoreOrRefData(this.props.title, this.props.refData);\r\n if (this.state.title !== _expTitle) {\r\n this.setState({\r\n title: _expTitle\r\n });\r\n }\r\n\r\n }\r\n });\r\n }\r\n\r\n }\r\n componentWillUnmount() {\r\n if (this.unsubscribe) this.unsubscribe();\r\n this.mounted = false;\r\n\r\n }\r\n\r\n handleOpen() {\r\n this.setState({\r\n expanded: !this.state.expanded\r\n });\r\n }\r\n\r\n\r\n\r\n render() {\r\n let footerScaff = new PureJSComponentFactory().scaffoldComponent(this.props.footer, this.props.refData);\r\n let newProps = this.ripOffControlSpecificAttributes()\r\n return (\r\n this.handleOpen()}>\r\n } >\r\n {/*[\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"subtitle1\",\"subtitle2\",\"body1\",\"body2\",\"caption\",\"button\",\"overline\",\"srOnly\",\"inherit\"]. */}\r\n {this.state.title}\r\n \r\n {this.props.children}\r\n {footerScaff}\r\n \r\n\r\n );\r\n }\r\n}\r\n\r\nexport default FactsExpansionPanel; ","import React, { PureComponent } from \"react\";\r\nimport { Grid, Badge, IconButton } from \"@mui/material\";\r\nimport Icon from '@mui/material/Icon';\r\nimport { ExecuteLayoutEventMethods } from \"../../../../General/commonFunctions\";\r\n\r\nclass ListViewTaskTemplate extends PureComponent {\r\n\r\n render() {\r\n return (
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
{this.props.itemObject.code}
\r\n
{this.props.itemObject.title}
\r\n
\r\n
\r\n {this.props.itemProps?.buttons.map((bt, index) => {\r\n return (\r\n this.getButton(index, bt.hasbadge, bt.badgefield, bt.icon, bt.iconprops, bt.badgeprops, bt.props)\r\n );\r\n })}\r\n
\r\n
\r\n\r\n
{this.props.itemObject.subtitle}
\r\n
\r\n\r\n \r\n \r\n {this.props.itemObject.footer1label}\r\n {this.props.itemObject.footer1value}\r\n \r\n \r\n {this.props.itemObject.footer2label}\r\n {this.props.itemObject.footer2value}\r\n \r\n \r\n {this.props.itemObject.footer3label}\r\n {this.props.itemObject.footer3value}\r\n \r\n \r\n {this.props.itemObject.footer4label}\r\n {this.props.itemObject.footer4value}\r\n \r\n \r\n
\r\n
);\r\n }\r\n\r\n getButton(key, hasBadge, badgeField, icon, iconProps, badgeProps, buttonProps) {\r\n if (hasBadge) {\r\n return (\r\n this.handleIconClick(buttonProps?.whenclick)}>\r\n \r\n {icon}\r\n \r\n \r\n );\r\n }\r\n else {\r\n return (\r\n this.handleIconClick(buttonProps?.whenclick)} >\r\n {icon}\r\n \r\n );\r\n }\r\n }\r\n\r\n async handleIconClick(whenClick) {\r\n await ExecuteLayoutEventMethods(whenClick, this.props.itemObject);\r\n\r\n }\r\n}\r\n\r\nexport default ListViewTaskTemplate;","import React, { Component } from \"react\";\r\nimport PureJSComponentFactory from \"../../../Pages/Factory/pureJSComponentFactory\";\r\nimport { ExecuteLayoutEventMethods, getProcessedArgs } from \"../../../../General/commonFunctions\";\r\n \r\n\r\nclass ListViewCustomTemplate extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.liRef = React.createRef();\r\n this.state = {\r\n newStyles: this.resolveStyles(this.props.itemProps, this.props?.itemObject),\r\n loadDOM: false\r\n }\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n let nowLoadDOM = this.isScrolledIntoView(this.liRef.current); \r\n \r\n this.setState({\r\n newStyles: this.resolveStyles(nextProps?.itemProps, nextProps?.itemObject),\r\n loadDOM : nowLoadDOM\r\n });\r\n }\r\n\r\n\r\n\r\n resolveStyles(newProps, refData) {\r\n if (newProps?.style && newProps?.resolvestyles) {\r\n return getProcessedArgs(newProps?.style, refData);\r\n }\r\n return newProps?.style;\r\n }\r\n\r\n async handleClick() {\r\n if (this.props.itemProps?.hlclass) {\r\n let litems = document.getElementsByClassName(this.props.itemProps?.hlclass);\r\n for (let i = 0; i < litems.length; i++) {\r\n litems[i].className = this.props.itemProps?.hlclass;\r\n }\r\n\r\n this.liRef.current.className = this.props.itemProps?.hlclass + ' list-active';\r\n\r\n }\r\n await ExecuteLayoutEventMethods(this.props.itemProps?.whenclick, this.props.itemObject);\r\n\r\n }\r\n // shouldComponentUpdate(nextProps, nextState) { \r\n // if (JSON.stringify(nextProps) === JSON.stringify(this.props)) return false;\r\n\r\n // return true;\r\n // }\r\n\r\n\r\n isScrolledIntoView(el) {\r\n let rect = el.getBoundingClientRect();\r\n let elemTop = rect.top;\r\n let elemBottom = rect.bottom;\r\n let isVisible = (elemTop >= 0 && elemTop <= window.innerHeight) ||\r\n (elemBottom >= 0 && elemBottom <= window.innerHeight);\r\n return isVisible;\r\n }\r\n \r\n componentDidMount() {\r\n if (this.isScrolledIntoView(this.liRef.current))\r\n this.setState({ loadDOM: true });\r\n else \r\n this.setState({ loadDOM: false });\r\n }\r\n\r\n render() {\r\n let bareBoneStyle = \" barebone\"\r\n let scaff = <>; \r\n if(this.state.loadDOM || (!this.props.lazy)){\r\n bareBoneStyle = \"\";\r\n scaff = new PureJSComponentFactory().scaffoldComponent(this.props.layout, this.props.itemObject); \r\n }\r\n \r\n\r\n return (\r\n
\r\n {scaff}\r\n
\r\n );\r\n }\r\n\r\n\r\n}\r\n\r\nexport default ListViewCustomTemplate; ","import React, { Component } from \"react\";\r\nimport { SwipeableList, SwipeableListItem } from '@sandstreamdev/react-swipeable-list';\r\nimport '@sandstreamdev/react-swipeable-list/dist/styles.css';\r\nimport ListViewTaskTemplate from \"../ControlTemplates/ListViewItem/listViewTaskTemplate\";\r\nimport './factsSwipeList.css';\r\n// import store from \"../../../AppRedux/store\";\r\nimport { ExecuteLayoutEventMethods, objectMatchAll, GetControlPropertyFromStoreOrRefData } from '../../../General/commonFunctions'\r\n// import Icon from \"@material-ui/core/Icon\";\r\nimport Icon from \"@mui/material/Icon\";\r\nimport ListViewCustomTemplate from \"../ControlTemplates/ListViewItem/listViewCustomTemplate\";\r\nimport { ownStore } from \"../../../AppOwnState/ownState\";\r\n// import { IconButton } from \"@material-ui/core\";\r\nimport { IconButton } from \"@mui/material\";\r\n\r\nclass FactsSwipeList extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n listds: [],\r\n currentPage: 0\r\n };\r\n }\r\n ripOffControlSpecificAttributes() {\r\n const excluded = [\"dset\", \"filterto\", \"refData\", \"content\", \"left\", \"right\", \"itemprops\"];\r\n return (\r\n Object.keys(this.props)\r\n .filter((t) => !excluded.includes(t))\r\n .reduce((obj, key) => {\r\n obj[key] = this.props[key];\r\n return obj;\r\n }, {}));\r\n }\r\n filterDataset(listData) {\r\n if (this.props.filterto && listData) {\r\n let filterTo = GetControlPropertyFromStoreOrRefData(this.props.filterto, this.props.refData);\r\n if (filterTo) {\r\n return listData.filter(it => {\r\n return objectMatchAll(it, filterTo, this.props.satisfy ?? \"every\", this.props.filtermode, this.props.filterignorecase);\r\n });\r\n }\r\n else return listData;\r\n }\r\n else return listData;\r\n }\r\n componentDidMount() {\r\n this.mounted = true;\r\n if (this.props.dset) {\r\n let listData = ownStore.getState(this.props.dset);\r\n this.setState({\r\n currentPage: 0,\r\n listds: this.filterDataset(listData)\r\n });\r\n this.unsubscribe = ownStore.subscribe((storeInfo) => {\r\n if (this.mounted) {\r\n if (storeInfo.dset === \"this\" || storeInfo.dset === this.props.dset ||\r\n this.props.watch?.includes(storeInfo.dset)) {\r\n let listData = ownStore.getState(this.props.dset);\r\n let filteredData = this.filterDataset(listData);\r\n // if (JSON.stringify(filteredData) !== JSON.stringify(this.state.listds)) {\r\n this.setState({\r\n currentPage: 0 ,\r\n listds: filteredData\r\n });\r\n // }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n componentWillUnmount() {\r\n this.mounted = false;\r\n if (this.unsubscribe) this.unsubscribe();\r\n }\r\n render() {\r\n let newProps = this.ripOffControlSpecificAttributes();\r\n let renderList = this.state.listds;\r\n let pageCount = 0;\r\n let renderStartIndex = 0 ; \r\n if (this.props.paging) {\r\n pageCount = Math.ceil(renderList?.length / this.props.paging?.pagesize);\r\n if (isNaN(pageCount)) pageCount = 0;\r\n renderStartIndex = this.state.currentPage * this.props.paging?.pagesize ?? 20; \r\n let renderEndIndex = renderStartIndex + this.props.paging?.pagesize ?? 20; \r\n renderList = renderList?.slice(renderStartIndex, renderEndIndex);\r\n }\r\n return (
\r\n {\r\n renderList && renderList?.length > 0 ?\r\n <>\r\n \r\n {\r\n renderList.map && renderList.map((item, index) => {\r\n let contentTemplate = this.getContentTemplate(this.props.content, item, index);\r\n let leftSwipe = this.props.left;\r\n let rightSwipe = this.props.right;\r\n let disLeft = GetControlPropertyFromStoreOrRefData(this.props.itemprops?.disableleft, item);\r\n if (disLeft) leftSwipe = null;\r\n let disRight = GetControlPropertyFromStoreOrRefData(this.props.itemprops?.disableright, item);\r\n if (disRight) rightSwipe = null;\r\n return (\r\n
\r\n \r\n {leftSwipe.icon}\r\n {leftSwipe.text}\r\n
,\r\n action: async () => {\r\n await ExecuteLayoutEventMethods(leftSwipe.props.whenswipe, item);\r\n }\r\n }}\r\n swipeLeft={rightSwipe && {\r\n content:\r\n
\r\n {rightSwipe.text}\r\n {rightSwipe.icon}\r\n
,\r\n action: async () => {\r\n await ExecuteLayoutEventMethods(rightSwipe.props.whenswipe, item);\r\n }\r\n }}\r\n // onSwipeProgress={progress => console.info(`Swipe progress: ${progress}%`)}\r\n >\r\n {contentTemplate}\r\n \r\n
\r\n );\r\n })\r\n }\r\n \r\n {this.props.paging && pageCount > 0 &&\r\n \r\n {\r\n [...Array(pageCount).keys()].map(pn =>\r\n this.setState({currentPage : pn})}\r\n {...this.props.paging?.numberprops}\r\n style={{\r\n fontSize: \"0.9rem\", \r\n width: \"25px\", height: \"25px\", \r\n marginLeft: \"3px\",\r\n ...this.props.paging.numberprops?.style, \r\n backgroundColor : this.state.currentPage === pn ? \"#AAA\" : \"inherit\"}}\r\n >\r\n {pn + 1}\r\n \r\n )}\r\n }\r\n \r\n :\r\n
{this.props?.emptytext}
\r\n }\r\n );\r\n }\r\n getContentTemplate(content, item, index) {\r\n switch (content.template) {\r\n case \"lvitask\":\r\n return ();\r\n case \"custom\":\r\n return ();\r\n default: return (
);\r\n }\r\n }\r\n}\r\nexport default FactsSwipeList;","import React, { Component } from \"react\";\r\nimport Button from \"@mui/material/Button\";\r\n// import store from \"../../../AppRedux/store\";\r\nimport { ExecuteLayoutEventMethods, GetControlPropertyFromStoreOrRefData, getProcessedDynamic } from \"../../../General/commonFunctions\";\r\nimport { ownStore } from \"../../../AppOwnState/ownState\";\r\nimport { getUniqueID } from \"../../../General/globals\";\r\nimport { Badge } from \"@mui/material\";\r\n\r\n\r\nclass FactsButton extends Component {\r\n constructor(props) {\r\n super(props);\r\n let _propsRedux = null;\r\n let _badgeContent = null;\r\n\r\n if (props.appendprops) _propsRedux = getProcessedDynamic(props.appendprops, this.props.refData);\r\n if (props.badge) _badgeContent = GetControlPropertyFromStoreOrRefData(props.badge?.content, props.refData);\r\n\r\n this.state = {\r\n propsRedux: _propsRedux,\r\n badgeContent: _badgeContent\r\n }\r\n this.btnID = this.props.id ?? \"btn\" + getUniqueID();\r\n }\r\n\r\n\r\n ripOffControlSpecificAttributes() {\r\n\r\n const excluded = [\"whenclick\", \"appendprops\", \"refData\"];\r\n return (Object.keys(this.props)\r\n .filter((t) => !excluded.includes(t))\r\n .reduce((obj, key) => {\r\n obj[key] = this.props[key];\r\n return obj;\r\n }, {}));\r\n\r\n }\r\n\r\n componentDidMount() {\r\n this.mounted = true;\r\n if (this.props.appendprops) {\r\n this.unsubscribe = ownStore.subscribe(() => {\r\n if (this.mounted) {\r\n let newState = getProcessedDynamic(this.props.appendprops, this.props.refData);\r\n if (JSON.stringify(this.state.propsRedux) !== JSON.stringify(newState)) {\r\n\r\n this.setState({\r\n propsRedux: newState\r\n });\r\n }\r\n\r\n \r\n let _reduxBadgeContent = GetControlPropertyFromStoreOrRefData(this.props.badge?.content, this.props.refData);\r\n if (this.state.badgeContent !== _reduxBadgeContent) {\r\n this.setState({\r\n badgeContent: _reduxBadgeContent\r\n });\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.unsubscribe) this.unsubscribe();\r\n this.mounted = false;\r\n }\r\n\r\n async handleButtonClick() {\r\n await ExecuteLayoutEventMethods(this.props.whenclick, { ...this.props.refData, controlid: this.btnID });\r\n\r\n }\r\n\r\n // shouldComponentUpdate(nextProps, nextState) {\r\n // if (JSON.stringify(this.state) === JSON.stringify(nextState)) {\r\n // return false;\r\n\r\n // } else {\r\n // return true;\r\n // }\r\n // }\r\n\r\n render() {\r\n let newProps = this.ripOffControlSpecificAttributes();\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default FactsButton; ","import TextField from \"@mui/material/TextField\";\r\nimport React, { Component } from \"react\";\r\nimport { ExecuteLayoutEventMethods, GetControlPropertyFromStoreOrRefData } from \"../../../General/commonFunctions\";\r\n// import store from \"../../../AppRedux/store\";\r\nimport { InputBase } from \"@mui/material\";\r\nimport { ownStore } from \"../../../AppOwnState/ownState\";\r\n\r\nclass FactsEntry extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.rowIndex = GetControlPropertyFromStoreOrRefData(props.rowindex, props.refData) ?? \"\";\r\n\r\n let textValueFromState = props.initialvalue;\r\n\r\n if (this.props.dset && this.props.bind) {\r\n textValueFromState = GetControlPropertyFromStoreOrRefData(\"[\" + props.dset + \".\" +\r\n (this.rowIndex === \"\" ? \"\" : (this.rowIndex + \".\"))\r\n + props.bind + \"]\", props.refData);\r\n }\r\n this.state = {\r\n textValue: (textValueFromState === null ? \"\" : textValueFromState)\r\n }\r\n this.finalValue = (textValueFromState === null ? \"\" : textValueFromState);\r\n this.isChangeDirty = false;\r\n this.isBlurDirty = false;\r\n }\r\n\r\n componentDidMount() {\r\n this.mounted = true;\r\n this.unsubscribe = ownStore.subscribe((storeInfo) => {\r\n if (this.mounted) {\r\n // if (this.mounted && (!this.isChangeDirty) && (!this.isBlurDirty)) {\r\n if ([storeInfo.dset, \"raw\"].includes(this.props.dset) &&\r\n (storeInfo.field ?? this.props.bind) === this.props.bind) {\r\n\r\n if (this.props.dset && this.props.bind) {\r\n let newState = GetControlPropertyFromStoreOrRefData(\"[\" + this.props.dset + \".\" +\r\n (this.rowIndex === \"\" ? \"\" : (this.rowIndex + \".\"))\r\n + this.props.bind + \"]\", this.props.refData);\r\n\r\n if (this.finalValue !== newState) {\r\n\r\n if (newState === null) newState = \"\";\r\n this.finalValue = newState;\r\n\r\n this.setState({\r\n textValue: newState\r\n });\r\n\r\n }\r\n }\r\n }\r\n }\r\n // }\r\n });\r\n\r\n }\r\n\r\n\r\n\r\n componentWillUnmount() {\r\n if (this.unsubscribe) this.unsubscribe();\r\n this.mounted = false;\r\n\r\n }\r\n\r\n // bindingEscapeValue(val) { //?Escaping handled at ExecuteEventArgs by sending args noprocess as true; Check above code\r\n // if ( val?.startsWith && val.startsWith(\"[\") && val.endsWith(\"]\")) return \" \" + val + \" \"; //Added to escape texts which mimics inner binding\r\n // else\r\n // return val;\r\n // }\r\n async handleOnBlur(e) {\r\n\r\n e.target.reportValidity();\r\n let currentValue = this.escapeValues(this.state.textValue); // this.bindingEscapeValue(this.state.textValue); //?Escaping handled at ExecuteEventArgs by sending args noprocess as true; Check above code\r\n if (this.props.type === \"number\") {\r\n currentValue = parseFloat(currentValue);\r\n if (this.props.inputProps?.min) {\r\n let minValue = parseFloat(this.props.inputProps?.min);\r\n\r\n if (currentValue < minValue) currentValue = minValue;\r\n }\r\n if (this.props.inputProps?.max) {\r\n let maxValue = parseFloat(this.props.inputProps?.max);\r\n if (currentValue > maxValue) currentValue = maxValue;\r\n }\r\n }\r\n this.finalValue = currentValue;\r\n\r\n\r\n this.setState({\r\n textValue: currentValue\r\n }, async () => {\r\n // this.isBlurDirty = true;\r\n await this.saveCurrentTextToDataset();\r\n if (this.props.whenblur) await ExecuteLayoutEventMethods(this.props.whenblur, {parent: this.props?.refData, ...this.state});\r\n // this.isBlurDirty = false;\r\n });\r\n\r\n }\r\n\r\n\r\n async saveCurrentTextToDataset() {\r\n\r\n this.finalValue = this.state.textValue;\r\n\r\n if (this.props.dset && this.props.bind) {\r\n if (this.rowIndex !== \"\") {\r\n let rowData = GetControlPropertyFromStoreOrRefData(\"[\" + this.props.dset + \".\" + this.rowIndex + \"]\", this.props.refData);\r\n\r\n await ExecuteLayoutEventMethods([\r\n {\r\n exec: \"mergedatasetarray\",\r\n args: {\r\n noprocess: true,\r\n dset: this.props.dset,\r\n index: parseInt(this.rowIndex),\r\n data:\r\n {\r\n ...rowData,\r\n [this.props.bind]: this.state.textValue\r\n }\r\n }\r\n }]);\r\n }\r\n else {\r\n await ExecuteLayoutEventMethods([\r\n\r\n {\r\n exec: \"setdatasetfield\",\r\n args: {\r\n noprocess: true,\r\n dset: this.props.dset,\r\n fieldname: this.props.bind,\r\n data: this.state.textValue\r\n }\r\n }\r\n ]);\r\n }\r\n }\r\n }\r\n async runCustomOnChangeEvents(eventToRun) {\r\n // this.isChangeDirty = true;\r\n clearTimeout(this.changeTO);\r\n this.changeTO = setTimeout(async () => {\r\n await this.saveCurrentTextToDataset();\r\n\r\n if (eventToRun) await ExecuteLayoutEventMethods(eventToRun, {parent: this.props?.refData, ...this.props?.refData, ...this.state});\r\n // this.isChangeDirty = false;\r\n\r\n }, this.props.delay ?? 250);\r\n\r\n }\r\n\r\n escapeValues(textVal) {\r\n if (!this.props.regex) return textVal;\r\n let regex = RegExp(this.props.regex, 'g');\r\n return textVal?.replace(regex, '');\r\n }\r\n\r\n async handleOnChange(e) {\r\n let textVal = this.escapeValues(e.target.value ?? \"\");\r\n this.finalValue = textVal; // this.bindingEscapeValue(e.target.value ?? \"\");//?Escaping handled at ExecuteEventArgs by sending args noprocess as true; Check above code\r\n this.setState({\r\n textValue: textVal\r\n }, () => {\r\n\r\n this.runCustomOnChangeEvents(this.props.whenchange, {parent: this.props?.refData, ...this.state});\r\n });\r\n }\r\n handleKeyDown(e) {\r\n\r\n if (this.props.acceptTab && e.keyCode === 9) {\r\n e.preventDefault();\r\n document.execCommand && document.execCommand('insertText', false, \" \");\r\n }\r\n }\r\n handleKeyPress(e) {\r\n\r\n if (e.charCode === 0) e.preventDefault();\r\n }\r\n async handleKeyUp(e) {\r\n e.stopPropagation();\r\n if (this.props.whenkeyup) {\r\n // if (this.isChangeDirty || this.isBlurDirty) {\r\n\r\n clearTimeout(this.changeTO);\r\n await this.saveCurrentTextToDataset();\r\n // this.isChangeDirty = false;\r\n // this.isBlurDirty = false;\r\n // }\r\n if (typeof this.props.eventkeys === \"undefined\" || this.props.eventkeys.includes(e.keyCode)) {\r\n await ExecuteLayoutEventMethods(this.props.whenkeyup, {parent: this.props?.refData, ...this.state});\r\n }\r\n }\r\n }\r\n handleOnFocus(e) {\r\n e.preventDefault();\r\n const { target } = e;\r\n\r\n target.select();\r\n }\r\n // shouldComponentUpdate(nextProps, nextState) {\r\n // if (JSON.stringify(this.state) === JSON.stringify(nextState)) {\r\n // return false;\r\n // } else {\r\n // return true;\r\n // }\r\n // }\r\n\r\n ripOffControlSpecificAttributes() {\r\n const excluded = [\"resolveprops\", \"acceptTab\", \"format\", \"refData\", \"rowindex\"];\r\n return (\r\n Object.keys(this.props)\r\n .filter((t) => !excluded.includes(t))\r\n .reduce((obj, key) => {\r\n obj[key] = this.props[key];\r\n return obj;\r\n }, {}));\r\n\r\n }\r\n format(val) {\r\n if (this.props.type === \"number\" && this.props.format) {\r\n let decimals = parseInt(this.props.format);\r\n if (isNaN(decimals)) decimals = 2;\r\n let formatted = parseFloat(val).toFixed(decimals);\r\n if (isNaN(formatted)) formatted = \"\";\r\n return formatted;\r\n }\r\n else return val;\r\n }\r\n render() {\r\n let newProps = this.ripOffControlSpecificAttributes();\r\n let formatted = this.format(this.state.textValue);\r\n switch (newProps?.variant) {\r\n case \"base\":\r\n return ( this.handleKeyPress(e)}\r\n onKeyUp={(e) => this.handleKeyUp(e)}\r\n onKeyDown={(e) => this.handleKeyDown(e)}\r\n onChange={(e) => this.handleOnChange(e)}\r\n onBlur={(e) => this.handleOnBlur(e)}\r\n onFocus={(e) => this.handleOnFocus(e)}\r\n />);\r\n default:\r\n return (\r\n this.handleKeyPress(e)}\r\n onKeyUp={(e) => this.handleKeyUp(e)}\r\n onKeyDown={(e) => this.handleKeyDown(e)}\r\n onChange={(e) => this.handleOnChange(e)}\r\n onBlur={(e) => this.handleOnBlur(e)}\r\n onFocus={(e) => this.handleOnFocus(e)}\r\n />\r\n );\r\n }\r\n\r\n }\r\n}\r\n\r\nexport default FactsEntry;","import React, { Component } from 'react';\r\nimport Fab from \"@mui/material/Fab\";\r\nimport { ExecuteLayoutEventMethods } from '../../../General/commonFunctions';\r\n\r\nclass FactsFAB extends Component {\r\n\r\n\r\n ripOffControlSpecificAttributes() {\r\n\r\n const excluded = [\"whenclick\", \"refData\"];\r\n return (Object.keys(this.props)\r\n .filter((t) => !excluded.includes(t))\r\n .reduce((obj, key) => {\r\n obj[key] = this.props[key];\r\n return obj;\r\n }, {}));\r\n\r\n }\r\n\r\n async handleClick() {\r\n await ExecuteLayoutEventMethods(this.props.whenclick);\r\n }\r\n render() {\r\n\r\n let newProps = this.ripOffControlSpecificAttributes();\r\n\r\n return (\r\n this.handleClick()} />\r\n ); \r\n \r\n }\r\n}\r\n\r\nexport default FactsFAB; ","import React, { Component } from \"react\";\r\nimport MenuItem from \"@mui/material/MenuItem\";\r\nimport TextField from \"@mui/material/TextField\";\r\nimport { ExecuteLayoutEventMethods, GetControlPropertyFromStoreOrRefData } from \"../../../General/commonFunctions\";\r\n// import store from \"../../../AppRedux/store\";\r\nimport { ownStore } from \"../../../AppOwnState/ownState\";\r\nimport { Checkbox } from \"@mui/material\";\r\n\r\nclass FactsDropDown extends Component {\r\n constructor(props) {\r\n super(props);\r\n \r\n this.rowIndex = GetControlPropertyFromStoreOrRefData(props.rowindex, props.refData) ?? \"\";\r\n\r\n let _listData = ownStore.getState(this.props.listdset);\r\n\r\n // let selectValueFromState = GetControlPropertyFromStoreOrRefData(\"[\" + props.dset + \".\" + props.bind + \"]\");\r\n let selectValueFromState = props.initialvalue;\r\n if (this.props.dset && this.props.bind) {\r\n selectValueFromState = GetControlPropertyFromStoreOrRefData(\"[\" + props.dset + \".\" +\r\n (this.rowIndex === \"\" ? \"\" : (this.rowIndex + \".\"))\r\n + props.bind + \"]\", props.refData);\r\n }\r\n\r\n this.state = {\r\n selectValue: this.emptyIfValueNotValid(selectValueFromState),\r\n listData: _listData\r\n }\r\n\r\n }\r\n\r\n emptyIfValueNotValid(value){\r\n if(this.props?.SelectProps?.multiple && !Array.isArray(value)) return [];\r\n else return value; \r\n }\r\n\r\n componentDidMount() {\r\n this.mounted = true;\r\n\r\n this.unsubscribe = ownStore.subscribe((storeInfo) => {\r\n if (this.mounted) {\r\n \r\n //Commented by Eins : 04-11-2022\r\n // if (storeInfo.dset === \"this\" || storeInfo.dset === this.props.dset) {\r\n // let newState = GetControlPropertyFromStoreOrRefData(\"[\" + this.props.dset + \".\" + this.props.bind + \"]\");\r\n // // if (this.state.textValue !== newState) {\r\n // // if (newState === null) newState = \"\";\r\n // this.setState({\r\n // selectValue: this.emptyIfValueNotValid(newState)\r\n // });\r\n\r\n // // }\r\n // }\r\n\r\n if ([storeInfo.dset, \"raw\"].includes(this.props.dset) &&\r\n (storeInfo.field ?? this.props.bind) === this.props.bind) {\r\n\r\n if (this.props.dset && this.props.bind) {\r\n let newState = GetControlPropertyFromStoreOrRefData(\"[\" + this.props.dset + \".\" +\r\n (this.rowIndex === \"\" ? \"\" : (this.rowIndex + \".\"))\r\n + this.props.bind + \"]\", this.props.refData);\r\n\r\n if (this.state.selectValue !== newState) {\r\n this.setState({\r\n selectValue: this.emptyIfValueNotValid(newState)\r\n });\r\n\r\n }\r\n }\r\n }\r\n\r\n if (storeInfo.dset === \"this\" || storeInfo.dset === this.props.listdset) {\r\n let newList = ownStore.getState(this.props.listdset);\r\n let thisListString = JSON.stringify(this.state.listData);\r\n let newListString = JSON.stringify(newList);\r\n if (thisListString !== newListString) {\r\n this.setState({\r\n listData: newList\r\n });\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.unsubscribe) this.unsubscribe();\r\n this.mounted = false;\r\n\r\n }\r\n\r\n async saveCurrentTextToDataset() {\r\n if (this.props.dset && this.props.bind) { \r\n //Commented by Eins : 04-11-2022\r\n // await ExecuteLayoutEventMethods([\r\n\r\n // {\r\n // exec: \"setdatasetfield\",\r\n // args: {\r\n // dset: this.props.dset,\r\n // fieldname: this.props.bind,\r\n // data: this.state.selectValue\r\n // }\r\n // }\r\n // ]);\r\n if (this.rowIndex !== \"\") {\r\n let rowData = GetControlPropertyFromStoreOrRefData(\"[\" + this.props.dset + \".\" + this.rowIndex + \"]\", this.props.refData);\r\n\r\n await ExecuteLayoutEventMethods([\r\n {\r\n exec: \"mergedatasetarray\",\r\n args: {\r\n noprocess: true,\r\n dset: this.props.dset,\r\n index: parseInt(this.rowIndex),\r\n data:\r\n {\r\n ...rowData,\r\n [this.props.bind]: this.state.selectValue\r\n }\r\n }\r\n }]);\r\n }\r\n else {\r\n await ExecuteLayoutEventMethods([\r\n\r\n {\r\n exec: \"setdatasetfield\",\r\n args: {\r\n noprocess: true,\r\n dset: this.props.dset,\r\n fieldname: this.props.bind,\r\n data: this.state.selectValue\r\n }\r\n }\r\n ]);\r\n }\r\n }\r\n \r\n }\r\n\r\n async runCustomOnChangeEvents() {\r\n\r\n await this.saveCurrentTextToDataset();\r\n await ExecuteLayoutEventMethods(this.props.whenchange, {...this.props.refData,...this.state});\r\n\r\n }\r\n async handleOnChange(e) {\r\n this.setState({\r\n selectValue: e.target.value\r\n }, () => {\r\n this.runCustomOnChangeEvents();\r\n });\r\n }\r\n async handleOnClick(item) {\r\n await ExecuteLayoutEventMethods(this.props.whenitemclick, {...this.props.refData,...item});\r\n }\r\n \r\n\r\n render() {\r\n\r\n return (\r\n\r\n this.handleOnChange(e)} \r\n \r\n SelectProps={this.props.SelectProps ? { \r\n \r\n ...this.props.SelectProps, \r\n renderValue: option => {\r\n console.log(option);\r\n return this.state.listData?.filter(t=> option.includes(t[this.props.valuefield]))\r\n .map(t=> {t[this.props.textfield]})\r\n \r\n } \r\n } : null\r\n }\r\n >\r\n {this.state.listData?.map && this.state.listData?.map((t, index) => {\r\n return this.handleOnClick(t)} >\r\n {this.props.SelectProps?.multiple ? \r\n \r\n :<>}\r\n {t[this.props.textfield]}\r\n \r\n })}\r\n \r\n\r\n );\r\n }\r\n}\r\n\r\nexport default FactsDropDown;","import React, { Component } from \"react\";\r\nimport Avatar from \"@mui/material/Avatar\";\r\n\r\n\r\nclass ListViewBubbleTemplate extends Component {\r\n\r\n render() {\r\n return (
\r\n\r\n \r\n\r\n \r\n
{this.props.itemObject.head}
\r\n
{this.props.itemObject.title}
\r\n
{this.props.itemObject.foot}
\r\n
\r\n\r\n
);\r\n }\r\n\r\n\r\n}\r\n\r\nexport default ListViewBubbleTemplate; ","import React, { Component } from \"react\";\r\nimport { FixedSizeList } from \"react-window\";\r\nimport { ChangePageDataSetState } from \"../../../General/commonFunctions\";\r\n// import store from \"../../../AppRedux/store\";\r\nimport ListViewBubbleTemplate from \"../ControlTemplates/ListViewItem/listViewBubbleTemplate\";\r\nimport AutoSizer from \"react-virtualized-auto-sizer\";\r\nimport { ownStore } from \"../../../AppOwnState/ownState\";\r\n\r\nclass FactsVirtualList extends Component {\r\n\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n currentDS: {}\r\n };\r\n this.divRef = React.createRef();\r\n }\r\n\r\n getCurrentDataSet() {\r\n let listds = ChangePageDataSetState(this.props.datasets);\r\n return listds[this.props.datasets[0]];\r\n }\r\n\r\n componentDidMount() {\r\n this.mounted = true; \r\n if (this.props.datasets && this.props.datasets.length > 0) {\r\n this.setState({\r\n currentDS: this.getCurrentDataSet()\r\n });\r\n this.scrollToDown();\r\n\r\n this.unsubscribe = ownStore.subscribe((storeInfo) => {\r\n if(this.mounted) { \r\n if (storeInfo.dset === \"this\" || storeInfo.dset === this.props.datasets[0]) {\r\n let newData = this.getCurrentDataSet();\r\n if (JSON.stringify(this.state.currentDS) !== JSON.stringify(newData)) {\r\n this.setState({\r\n currentDS: newData\r\n });\r\n this.scrollToDown();\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n }\r\n\r\n scrollToDown() {\r\n if (this.props.scrolldown === true) {\r\n setTimeout(t => {\r\n if (this.divRef?.current)\r\n this.divRef.current.scrollTo(1000);\r\n else this.scrollToDown();\r\n }, 100);\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.mounted = false; \r\n if (this.unsubscribe) this.unsubscribe();\r\n }\r\n\r\n\r\n\r\n render() {\r\n\r\n return (\r\n \r\n {({ height, width }) => {\r\n return (\r\n \r\n {this.renderRow.bind(this)}\r\n \r\n );\r\n }}\r\n\r\n \r\n );\r\n }\r\n\r\n renderRow(props) {\r\n const { index, style } = props;\r\n let contentTemplate = this.getContentTemplate(this.props.content, this.state.currentDS[index]);\r\n\r\n return (\r\n
\r\n {contentTemplate}\r\n
\r\n );\r\n }\r\n\r\n getContentTemplate(content, dsets) {\r\n switch (content.template) {\r\n case \"lvibubble\":\r\n return ();\r\n default: return (
);\r\n }\r\n }\r\n\r\n}\r\n\r\nexport default FactsVirtualList; ","import React, { Component } from \"react\";\r\nimport { objectMatchAll, getProcessedArgs, ChangePageDataSetState, ExecuteLayoutEventMethods } from \"../../../General/commonFunctions\";\r\n// import store from \"../../../AppRedux/store\";\r\nimport ListViewBubbleTemplate from \"../ControlTemplates/ListViewItem/listViewBubbleTemplate\";\r\nimport ListViewCustomTemplate from \"../ControlTemplates/ListViewItem/listViewCustomTemplate\";\r\nimport { ownStore } from \"../../../AppOwnState/ownState\";\r\nimport { Pagination } from \"@mui/lab\";\r\n\r\nclass FactsList extends Component {\r\n\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n currentDS: this.filterDataset(this.getCurrentDataSet()),\r\n currentPage: 1 \r\n };\r\n this.divRef = React.createRef();\r\n }\r\n\r\n ripOffControlSpecificAttributes() {\r\n this.scrolldown = this.props.scrolldown;\r\n\r\n const excluded = [\"scrolldown\", \"content\", \"datasets\", \"refData\", \"filterto\", \"reverse\", \"filtermode\", \"filterignorecase\", \"resolveprops\"];\r\n return (\r\n Object.keys(this.props)\r\n .filter((t) => !excluded.includes(t))\r\n .reduce((obj, key) => {\r\n obj[key] = this.props[key];\r\n return obj;\r\n }, {}));\r\n\r\n }\r\n\r\n getCurrentDataSet() {\r\n let listds = ChangePageDataSetState(this.props.datasets);\r\n if(!listds) return null; \r\n let listData = listds[this.props.datasets[0]];\r\n if (this.props.reverse && Array.isArray(listData)) listData = listData.reverse();\r\n\r\n return listData; \r\n }\r\n\r\n // getCurrentDataSet() {\r\n // if(this.props.datasets?.length > 0 ){ \r\n // let listds = GetControlPropertyFromStoreOrRefData(\"[\" + this.props.datasets[0] + \"]\");\r\n // if(!listds) return null; \r\n // if (this.props.reverse && Array.isArray(listds)) listds = listds.reverse();\r\n // return listds;\r\n // }\r\n // return null; \r\n // }\r\n\r\n filterDataset(listData) {\r\n listData?.forEach && listData.forEach((d, i) => {\r\n if (typeof d === \"object\") d.propkey = i;\r\n });\r\n if (this.props.filterto && listData) {\r\n let filterTo = getProcessedArgs(this.props.filterto, this.props.refData);\r\n if (filterTo) {\r\n return listData.filter(it => {\r\n return objectMatchAll(it, filterTo, this.props.satisfy ?? \"every\", this.props.filtermode, this.props.filterignorecase);\r\n });\r\n }\r\n else return listData;\r\n }\r\n else return listData;\r\n }\r\n\r\n componentDidMount() {\r\n this.mounted = true;\r\n\r\n if (this.props.datasets && this.props.datasets.length > 0) {\r\n // this.setState({\r\n // currentDS: this.getCurrentDataSet()\r\n // });\r\n this.scrollToDown();\r\n this.unsubscribe = ownStore.subscribe((storeInfo) => {\r\n if (this.mounted) {\r\n if (storeInfo.dset === \"this\" || storeInfo.dset === this.props.datasets[0] ||\r\n this.props.watch?.includes(storeInfo.dset)) {\r\n let newDS = this.filterDataset(this.getCurrentDataSet());\r\n let newDSString = JSON.stringify(newDS),\r\n currentDSString = JSON.stringify(this.state.currentDS);\r\n\r\n if (newDSString !== currentDSString) {\r\n this.setState({\r\n currentDS: newDS,\r\n currentPage: 1\r\n });\r\n this.scrollToDown();\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n }\r\n\r\n scrollToDown() {\r\n if (this.scrolldown === true) {\r\n setTimeout(t => {\r\n if (this.divRef?.current?.lastChild) {\r\n this.divRef.current.lastChild.scrollIntoView({ block: 'end' });\r\n }\r\n else this.scrollToDown();\r\n }, 25);\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.mounted = false;\r\n this.scrolldown = false;\r\n if (this.unsubscribe) this.unsubscribe();\r\n }\r\n\r\n // shouldComponentUpdate(nextProps, nextState) {\r\n // if (JSON.stringify(this.state) === JSON.stringify(nextState)) {\r\n\r\n // return false;\r\n // } else {\r\n\r\n // return true;\r\n // }\r\n // }\r\n handleListScroll() {\r\n this.setState({});\r\n }\r\n\r\n render() {\r\n\r\n let newProps = this.ripOffControlSpecificAttributes();\r\n let listArrayToRender = this.convertToArrayIfObject(this.state.currentDS);\r\n let lazyStyle = newProps.lazy ? { overflow: \"auto\", height: \"100%\" } : {};\r\n\r\n\r\n \r\n let pageCount = 0;\r\n let pageSize = parseInt(this.props.pagesize);\r\n if(isNaN(pageSize)) pageSize = 0 ; \r\n let pagelistArray = listArrayToRender; \r\n if(pageSize > 0){ \r\n pageCount = Math.ceil(listArrayToRender?.length /pageSize); \r\n let fromItem = (this.state.currentPage -1) * pageSize ; \r\n let toItem = fromItem + pageSize; \r\n \r\n pagelistArray = listArrayToRender?.slice(fromItem, toItem )\r\n }\r\n return (\r\n
this.handleListScroll()}\r\n >\r\n {\r\n\r\n pagelistArray && pagelistArray.map &&\r\n (pagelistArray.map((it, index) => {\r\n let propValue = (typeof it=== \"string\" ? {\"propvalue\" : it} : it); \r\n return this.getContentTemplate(this.props.content,\r\n {\r\n propkey: it.propkey ?? index,\r\n \"proptype\": this.getValueType(it),\r\n ...propValue\r\n }, it.propkey ?? index, newProps);\r\n // let isLastItem = ind >= (this.state.currentDS.length -1)\r\n }))\r\n\r\n }\r\n \r\n {pageCount > 0 &&\r\n {\r\n this.setState({currentPage: v});\r\n ExecuteLayoutEventMethods(newProps?.pageprops?.whenchange, { ...this.props.refData, currentPage: v });\r\n\r\n } }\r\n />\r\n }\r\n
\r\n );\r\n\r\n }\r\n\r\n convertToArrayIfObject(currentList) {\r\n if (currentList && !Array.isArray(currentList)) {\r\n return Object.keys(currentList).map((t) => {\r\n return { \"propkey\": t, \"propval\": currentList[t], \"proptype\": this.getValueType(currentList[t]) }\r\n })\r\n }\r\n return currentList;\r\n\r\n }\r\n\r\n getValueType(val) {\r\n if (val === null) return \"null\";\r\n if (typeof val === \"string\") return \"string\";\r\n if (typeof val === \"boolean\") return \"boolean\";\r\n if (typeof val === \"object\") {\r\n if (Array.isArray(val)) return \"array\";\r\n else return \"object\";\r\n }\r\n }\r\n\r\n\r\n getContentTemplate(content, item, index, parentProps) {\r\n switch (content.template) {\r\n case \"lvibubble\":\r\n return ();\r\n\r\n case \"custom\":\r\n return ();\r\n default: return (
);\r\n }\r\n }\r\n\r\n}\r\n\r\nexport default FactsList; ","import React, { Component } from \"react\";\r\nimport { GetControlPropertyFromStoreOrRefData } from \"../../../General/commonFunctions\";\r\n// import store from \"../../../AppRedux/store\";\r\nimport { format } from \"date-fns/esm\";\r\nimport Button from \"@mui/material/Button\";\r\nimport { ownStore } from \"../../../AppOwnState/ownState\";\r\n\r\nclass FactsLabel extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.originalText = GetControlPropertyFromStoreOrRefData(props.text, props.refData);\r\n let [hasMore, textExcerpt] = this.getExcerpt(this.originalText);\r\n this.state = {\r\n textValue: textExcerpt,\r\n hasMoreText: hasMore\r\n }\r\n\r\n }\r\n\r\n ripOffControlSpecificAttributes() {\r\n\r\n const excluded = [\"refData\", \"format\", \"datatype\", \"text\", \"staticbinding\"];\r\n return (\r\n Object.keys(this.props)\r\n .filter((t) => !excluded.includes(t))\r\n .reduce((obj, key) => {\r\n obj[key] = this.props[key];\r\n return obj;\r\n }, {}));\r\n\r\n }\r\n\r\n getExcerpt(originalText) {\r\n let hasMore = false;\r\n let textExcerptValue = (originalText === null ? \"\" : originalText);\r\n if (this.props.excerpt?.count && textExcerptValue.length > (this.props.excerpt?.count ?? 0)) {\r\n\r\n hasMore = true;\r\n textExcerptValue = textExcerptValue.substring(0, this.props.excerpt?.count);\r\n\r\n }\r\n else hasMore = false;\r\n\r\n return [hasMore, textExcerptValue];\r\n }\r\n\r\n componentDidMount() {\r\n this.mounted = true;\r\n if (!this.props.staticbinding) {\r\n this.unsubscribe = ownStore.subscribe(() => {\r\n\r\n if (this.mounted) {\r\n\r\n this.originalText = GetControlPropertyFromStoreOrRefData(this.props.text, this.props.refData);\r\n\r\n if (this.state.textValue !== this.originalText) {\r\n let [hasMore, textExcerpt] = this.getExcerpt(this.originalText);\r\n\r\n this.setState({\r\n textValue: textExcerpt,\r\n hasMoreText: hasMore\r\n });\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n \r\n componentWillUnmount() {\r\n this.mounted = false;\r\n if (this.unsubscribe) this.unsubscribe();\r\n }\r\n\r\n handleReadMoreClick() {\r\n if (this.state.hasMoreText) {\r\n this.setState({\r\n textValue: this.originalText,\r\n hasMoreText: false\r\n })\r\n }\r\n else {\r\n let [hasMore, textExcerpt] = this.getExcerpt(this.originalText);\r\n this.setState({\r\n textValue: textExcerpt,\r\n hasMoreText: hasMore\r\n })\r\n }\r\n }\r\n\r\n \r\n\r\n render() {\r\n let newProps = this.ripOffControlSpecificAttributes();\r\n\r\n return (\r\n <>\r\n \r\n {this._getEscapeValue(this.state.textValue)}\r\n \r\n {this.props.excerpt?.count &&\r\n\r\n \r\n this.handleOnChange()}\r\n onError={() => {\r\n alert(\"The Image is invalid!\");\r\n }}\r\n />\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default FactsFileButton;\r\n","import React, { Component } from \"react\";\r\nimport { GetControlPropertyFromStoreOrRefData } from \"../../../General/commonFunctions\";\r\n// import store from \"../../../AppRedux/store\";\r\nimport { ownStore } from \"../../../AppOwnState/ownState\";\r\n\r\nclass FactsImage extends Component {\r\n constructor(props) {\r\n super(props);\r\n let fileContentFromState = GetControlPropertyFromStoreOrRefData(props.src, props.refData);\r\n let disp = \"inline\"\r\n if (!fileContentFromState && fileContentFromState === \"\") disp = \"none\";\r\n this.state = {\r\n fileContent: fileContentFromState,\r\n showImage: disp\r\n };\r\n }\r\n\r\n ripOffControlSpecificAttributes() {\r\n\r\n const excluded = [\"src\", \"staticimage\", \"refData\"];\r\n return (\r\n Object.keys(this.props)\r\n .filter((t) => !excluded.includes(t))\r\n .reduce((obj, key) => {\r\n obj[key] = this.props[key];\r\n return obj;\r\n }, {}));\r\n\r\n }\r\n\r\n componentDidMount() {\r\n this.mounted = true;\r\n if (!this.props.staticimage) {\r\n this.unsubscribe = ownStore.subscribe(() => {\r\n\r\n if (this.mounted) {\r\n\r\n let newState = GetControlPropertyFromStoreOrRefData(this.props.src, this.props.refData);\r\n let disp = \"inline\"\r\n if (!newState && newState === \"\") disp = \"none\";\r\n\r\n if (this.state.fileContent !== newState) {\r\n this.setState({\r\n fileContent: newState,\r\n showImage: disp\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n componentWillUnmount() {\r\n this.mounted = false;\r\n if (this.unsubscribe) this.unsubscribe();\r\n\r\n }\r\n\r\n\r\n render() {\r\n let newProps = this.ripOffControlSpecificAttributes();\r\n return (\r\n \"Stateful\r\n );\r\n }\r\n}\r\n\r\nexport default FactsImage; ","import React, { Component } from \"react\";\r\nimport Avatar from \"@mui/material/Avatar\";\r\nimport { GetControlPropertyFromStoreOrRefData, ExecuteLayoutEventMethods } from \"../../../General/commonFunctions\";\r\n\r\nclass FactsAvatar extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.avatarImage = GetControlPropertyFromStoreOrRefData(this.props.image, this.props.refData);\r\n this.avatarText = GetControlPropertyFromStoreOrRefData(this.props.text, this.props.refData);\r\n }\r\n\r\n ripOffControlSpecificAttributes() {\r\n const excluded = [\"image\", \"text\", \"refData\"];\r\n return (Object.keys(this.props)\r\n .filter((t) => !excluded.includes(t))\r\n .reduce((obj, key) => {\r\n obj[key] = this.props[key];\r\n return obj;\r\n }, {}));\r\n\r\n }\r\n\r\n async handleAvatarClick(e) {\r\n await ExecuteLayoutEventMethods(this.props.whenclick, { controlid: this.props.id });\r\n }\r\n\r\n render() {\r\n let newProps = this.ripOffControlSpecificAttributes();\r\n return (\r\n \r\n {this.avatarText}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default FactsAvatar; ","import Hidden from '@mui/material/Hidden';\r\nimport React, { Component } from \"react\";\r\nimport { getProcessedArgs } from '../../../General/commonFunctions';\r\n// import store from '../../../AppRedux/store';\r\nimport { ownStore } from '../../../AppOwnState/ownState';\r\n\r\n\r\n//To conditionally hide the children \r\nclass FactsHidden extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n let _propsRedux = null;\r\n if (props.appendprops) _propsRedux = getProcessedArgs(props.appendprops, this.props.refData);\r\n \r\n this.state = {\r\n propsRedux: _propsRedux\r\n }\r\n }\r\n ripOffControlSpecificAttributes() {\r\n\r\n const excluded = [\"refData\", \"appendprops\", \"resolveprops\", \"includerefdata\"];\r\n return (\r\n Object.keys(this.props)\r\n .filter((t) => !excluded.includes(t))\r\n .reduce((obj, key) => {\r\n obj[key] = this.props[key];\r\n return obj;\r\n }, {}));\r\n\r\n }\r\n componentDidMount() {\r\n this.mounted = true;\r\n \r\n if (this.props.appendprops) {\r\n this.unsubscribe = ownStore.subscribe(() => {\r\n if (this.mounted) {\r\n\r\n let newState = getProcessedArgs(this.props.appendprops, this.props.refData);\r\n if (JSON.stringify(this.state.propsRedux) !== JSON.stringify(newState)) {\r\n this.setState({\r\n propsRedux: newState\r\n });\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n \r\n this.mounted = false;\r\n if (this.unsubscribe) this.unsubscribe();\r\n }\r\n\r\n // shouldComponentUpdate(nextProps, nextState) {\r\n // if (JSON.stringify(this.state) === JSON.stringify(nextState)) {\r\n // return false;\r\n // } else {\r\n // return true;\r\n // }\r\n // }\r\n\r\n render() {\r\n \r\n let newProps = this.ripOffControlSpecificAttributes();\r\n\r\n return (\r\n {this.props.children}\r\n );\r\n }\r\n}\r\nexport default FactsHidden; ","import React, { Component } from \"react\";\r\nimport { Grid } from \"@mui/material\";\r\nimport { PieChart } from \"devextreme-react\";\r\nimport { Series, Connector } from \"devextreme-react/chart\";\r\nimport { Label, Legend } from \"devextreme-react/bar-gauge\";\r\nimport { SmallValuesGrouping } from \"devextreme-react/pie-chart\";\r\n\r\n\r\nclass PieChartComponent extends Component {\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n );\r\n }\r\n\r\n customizeText(arg) {\r\n return `${arg.argumentText} ${arg.percentText}`;\r\n }\r\n\r\n\r\n\r\n}\r\n\r\nexport default PieChartComponent;\r\n","import React, { Component } from \"react\";\r\nimport { Grid } from \"@mui/material\";\r\nimport { Chart } from \"devextreme-react\";\r\nimport { CommonSeriesSettings, SeriesTemplate } from \"devextreme-react/chart\";\r\nimport { Title } from \"devextreme-react/bar-gauge\";\r\n\r\n\r\n\r\nclass BarChartComponent extends Component {\r\n\r\n ripOffControlSpecificAttributes() {\r\n const excluded = [\"chartTitle\", \"chartData\"];\r\n return (\r\n Object.keys(this.props)\r\n .filter((t) => !excluded.includes(t))\r\n .reduce((obj, key) => {\r\n obj[key] = this.props[key];\r\n return obj;\r\n }, {}));\r\n\r\n }\r\n render() {\r\n let newProps = this.ripOffControlSpecificAttributes();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {/* \r\n \r\n \r\n */}\r\n {/* \r\n \r\n\r\n \r\n \r\n <Animation /> */}\r\n\r\n </Chart>\r\n </Grid>\r\n </Grid>\r\n );\r\n }\r\n}\r\n\r\nexport default BarChartComponent; ","import React, { Component } from \"react\";\r\nimport { Grid } from \"@mui/material\";\r\nimport Chart, { Series, Connector, CommonSeriesSettings } from \"devextreme-react/chart\";\r\nimport { Label, Tooltip } from \"devextreme-react/bar-gauge\";\r\nimport { SmallValuesGrouping } from \"devextreme-react/pie-chart\";\r\n\r\n\r\nclass LineChartComponent extends Component {\r\n\r\n render() {\r\n return (\r\n <Grid container={true}>\r\n <Grid item={true} xs={12}>\r\n <Chart id=\"line\" dataSource={this.props.chartData ?? []}\r\n palette=\"Material\" title={this.props.chartTitle} {...this.props}>\r\n <CommonSeriesSettings\r\n argumentField={this.props.argField ?? \"Block\"}\r\n type=\"line\" />\r\n <Series showInLegend={false}\r\n valueField={this.props.valueField ?? \"Amount\"} >\r\n <Label visible={true} customizeText={this.customizeText} >\r\n <Connector visible={true} width={1} />\r\n </Label>\r\n <SmallValuesGrouping threshold={35} mode=\"smallValueThreshold\" />\r\n\r\n </Series>\r\n\r\n <Tooltip enabled={true} customizeTooltip={this.customizeTooltip} />\r\n </Chart>\r\n\r\n </Grid>\r\n\r\n </Grid>\r\n );\r\n }\r\n\r\n customizeText(arg) {\r\n return `${arg.valueText}`;\r\n }\r\n customizeTooltip(pointInfo) {\r\n return {\r\n text: `${pointInfo.argumentText} (${pointInfo.valueText})`\r\n };\r\n }\r\n\r\n\r\n}\r\n\r\nexport default LineChartComponent;\r\n","import React, { Component } from 'react';\r\nimport { GetControlPropertyFromStoreOrRefData } from '../../../General/commonFunctions';\r\n// import store from '../../../AppRedux/store';\r\nimport PieChartComponent from './pieChartComponent';\r\nimport BarChartComponent from './barChartComponent';\r\nimport LineChartComponent from './lineChartComponent';\r\nimport { ownStore } from '../../../AppOwnState/ownState';\r\n\r\nclass FactsERPChart extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n\r\n };\r\n\r\n }\r\n\r\n componentDidMount() {\r\n this.mounted = true;\r\n\r\n\r\n\r\n this.unsubscribe = ownStore.subscribe(() => {\r\n if (this.mounted) {\r\n\r\n let _chartTitle = GetControlPropertyFromStoreOrRefData(this.props.title, this.props.refData);\r\n let _chartLayoutXML = GetControlPropertyFromStoreOrRefData(this.props.layoutXML, this.props.refData);\r\n let _chartData = GetControlPropertyFromStoreOrRefData(this.props.data, this.props.refData);\r\n\r\n let _strRedChInfo = JSON.stringify(_chartLayoutXML);\r\n\r\n let _strRedChData = JSON.stringify(_chartData),\r\n _strCurChData = JSON.stringify(this.state.chartData);\r\n\r\n if (this.state.chartTitle !== _chartTitle) {\r\n this.setState({\r\n chartTitle: _chartTitle\r\n });\r\n }\r\n\r\n if (this.chartLayoutXML !== _strRedChInfo) {\r\n this.chartLayoutXML = _strRedChInfo;\r\n let _chartInfo = this.parseChartLayoutXML(_chartLayoutXML);\r\n if (_chartInfo) {\r\n this.setState({\r\n chartInfo: _chartInfo\r\n });\r\n }\r\n }\r\n\r\n if (_strRedChData !== _strCurChData) {\r\n this.setState({\r\n chartData: _chartData\r\n });\r\n }\r\n }\r\n });\r\n\r\n\r\n }\r\n\r\n parseChartLayoutXML(chartLayoutXML) {\r\n if (chartLayoutXML) {\r\n let parser = new DOMParser();\r\n let xmlDoc = parser.parseFromString(chartLayoutXML, \"text/xml\");\r\n let chartXLabel = xmlDoc?.querySelector(\"SeriesSerializable Label\");\r\n let chartType = chartXLabel && chartXLabel.getAttribute(\"TypeNameSerializable\");\r\n let chartXItem = xmlDoc?.querySelector(\"SeriesSerializable Item1\");\r\n let argField = chartXItem && chartXItem.getAttribute(\"ArgumentDataMember\");\r\n let valueField = chartXItem && chartXItem.getAttribute(\"ValueDataMembersSerializable\");\r\n return { chartType, argField, valueField };\r\n }\r\n return {};\r\n }\r\n\r\n componentWillUnmount() {\r\n this.mounted = false;\r\n if (this.unsubscribe) this.unsubscribe();\r\n }\r\n\r\n \r\n\r\n render() {\r\n return this.getChart(this.state.chartInfo?.chartType);\r\n }\r\n\r\n getChart(chartType) {\r\n switch (chartType) {\r\n case \"PieSeriesLabel\":\r\n return (\r\n <PieChartComponent chartTitle={this.state.chartTitle}\r\n argField={this.state.chartInfo?.argField}\r\n valueField={this.state.chartInfo?.valueField}\r\n chartData={this.state.chartData} />\r\n );\r\n case \"SideBySideBarSeriesLabel\":\r\n return (\r\n <BarChartComponent chartTitle={this.state.chartTitle}\r\n argField={this.state.chartInfo?.argField}\r\n valueField={this.state.chartInfo?.valueField}\r\n chartData={this.state.chartData} />\r\n );\r\n case \"PointSeriesLabel\":\r\n return (\r\n <LineChartComponent chartTitle={this.state.chartTitle}\r\n argField={this.state.chartInfo?.argField}\r\n valueField={this.state.chartInfo?.valueField}\r\n chartData={this.state.chartData} />\r\n );\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n\r\n}\r\nexport default FactsERPChart; \r\n","import React, { Component } from \"react\";\r\nimport { GetControlPropertyFromStoreOrRefData, ExecuteLayoutEventMethods } from \"../../../General/commonFunctions\";\r\n// import store from \"../../../AppRedux/store\";\r\nimport { ownStore } from \"../../../AppOwnState/ownState\";\r\n\r\nclass FactsCanvas extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.fileContentFromState = GetControlPropertyFromStoreOrRefData(props.src);\r\n this.fileVersion = GetControlPropertyFromStoreOrRefData(this.props?.version) ?? (new Date()).getTime();\r\n \r\n this.drawCanvas(this.fileContentFromState);\r\n // let disp = \"inline\"\r\n // if (!fileContentFromState && fileContentFromState === \"\") disp = \"none\";\r\n // let disp = \"none\"\r\n // if (this.fileContentFromState && this.fileContentFromState !== \"\") disp = \"inline\";\r\n // this.state = {\r\n // isVisible: disp\r\n // };\r\n\r\n }\r\n\r\n ripOffControlSpecificAttributes() {\r\n\r\n const excluded = [\"src\", \"staticimage\", \"bind\"];\r\n return (\r\n Object.keys(this.props)\r\n .filter((t) => !excluded.includes(t))\r\n .reduce((obj, key) => {\r\n obj[key] = this.props[key];\r\n return obj;\r\n }, {}));\r\n\r\n }\r\n\r\n componentDidMount() {\r\n this.mounted = true;\r\n if (!this.props.staticimage) {\r\n this.unsubscribe = ownStore.subscribe((storeInfo) => {\r\n if (this.mounted) {\r\n if(this.props?.src?.includes(storeInfo.dset)){ \r\n let newState = GetControlPropertyFromStoreOrRefData(this.props.src);\r\n\r\n \r\n // this.setState({\r\n // fileContent: newState,\r\n // showImage: disp\r\n // });\r\n this.drawCanvas(newState);\r\n // let disp = \"none\"\r\n // if (newState && newState !== \"\") disp = \"inline\";\r\n\r\n // this.setState({\r\n // isVisible: disp\r\n // });\r\n }\r\n\r\n }\r\n });\r\n }\r\n\r\n }\r\n\r\n drawCanvas(newState) {\r\n var myCanvas = document.getElementById(this.props.id ?? 'factsAppCanvas');\r\n if (myCanvas) {\r\n // A FIX Below //* NOTE *//\r\n //* If we compare the content of file to trigger whenchange event, adding same file from input may not work\r\n //* If we dont check, the whenchange will trigger for any redux change.\r\n //* We cannot compare the redux dataset name too, since the canvas may mutate the same dataset, so it will end up in loop\r\n //* So we implement a versioning mechanism. It will collect the version number from dataset (typically dset.fileVersion from filebtn)\r\n //* If the version is not null, it will check if version is different \r\n //* Either the data should be different or the or it should be different version\r\n //* So that we can prevent whenchange event looping on every redux change \r\n\r\n let fVer = GetControlPropertyFromStoreOrRefData(this.props?.version);\r\n let isSameVersion = true; \r\n if(fVer && fVer !== this.fileVersion ){ \r\n this.fileVersion = fVer; \r\n isSameVersion = false; \r\n }\r\n if (newState !== this.fileContentFromState || (fVer && !isSameVersion)) {\r\n myCanvas.style.display = \"none\";\r\n\r\n this.fileContentFromState = newState;\r\n\r\n\r\n var img = new Image();\r\n\r\n img.onload = async function () {\r\n\r\n var ctx = myCanvas.getContext('2d');\r\n\r\n let isImageProportional = this.props.autorotate ? (img.height >= img.width) : true; \r\n myCanvas.width = img.width;//myCanvas.parentNode?.clientWidth;\r\n myCanvas.height = myCanvas.width *\r\n (isImageProportional ? (img.height / img.width)\r\n : (img.width / img.height));\r\n\r\n // ctx.translate(myCanvas.height / 2, myCanvas.width / 2); //let's translate\r\n if (!isImageProportional) {\r\n ctx.translate(myCanvas.width / 2, myCanvas.height / 2);\r\n ctx.rotate((Math.PI / 180) * 90);\r\n ctx.translate(-myCanvas.height / 2, -myCanvas.width / 2);\r\n }\r\n ctx.drawImage(img, 0, 0,\r\n isImageProportional ? myCanvas.width : myCanvas.height,\r\n isImageProportional ? myCanvas.height : myCanvas.width,\r\n ); // Or at whatever offset you like\r\n let imageData = myCanvas.toDataURL(this.props.filetype, this.props.quality); \r\n if (this.props.dset && this.props.bind) {\r\n await ExecuteLayoutEventMethods([\r\n\r\n {\r\n exec: \"setdatasetfield\",\r\n args: {\r\n dset: this.props.dset,\r\n fieldname: this.props.bind,\r\n data: imageData\r\n }\r\n }\r\n ]);\r\n }\r\n await ExecuteLayoutEventMethods(this.props.whenchange,imageData );\r\n\r\n window.URL.revokeObjectURL(newState);\r\n img = null;\r\n myCanvas.style.display = \"inline\";\r\n }.bind(this);\r\n img.src = newState;\r\n\r\n }\r\n //test\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n\r\n\r\n componentWillUnmount() {\r\n if (this.unsubscribe) this.unsubscribe();\r\n this.mounted = false;\r\n\r\n }\r\n\r\n\r\n render() {\r\n let newProps = this.ripOffControlSpecificAttributes();\r\n return (\r\n // <img src={this.state.fileContent} alt=\"Stateful Graphic\" {...newProps} style={{ display: this.state.showImage, ...newProps?.style }} />\r\n <canvas className=\"factsCanvas\" id=\"factsAppCanvas\" {...newProps} ></canvas>\r\n );\r\n }\r\n}\r\n\r\nexport default FactsCanvas; ","import React, { Component } from 'react';\r\n\r\n//Used to show external content\r\nclass FactsExtraContent extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.iframeRef = React.createRef();\r\n }\r\n\r\n componentDidMount() {\r\n // if (this.iframeRef?.current?.contentWindow?.receiveCall)\r\n if (this.iframeRef?.current)\r\n this.iframeRef.current.onload = () => {\r\n this.iframeRef.current.contentWindow.receiveCall(this.props.data, this.props.args);\r\n };\r\n\r\n }\r\n\r\n render() {\r\n return (\r\n <iframe className=\"factsExtraContent\" ref={this.iframeRef} title=\"Content\"\r\n {...this.props} data={undefined} resolveprops={undefined} ></iframe>\r\n );\r\n }\r\n}\r\n\r\nexport default FactsExtraContent; ","class LayoutManipulator{\r\n traverseArray(arr, path, propkey){\r\n for(let i = 0; i < arr.length; i++){ \r\n let newPath = path; \r\n // if( [\"sect\", \"div\", \"btn\", \"icbtn\", \"icon\", \"span\", \"list\", \"btn\", \"entry\"].includes(arr[i].type)){\r\n \r\n newPath = newPath + \".\" + i.toString(); \r\n\r\n if(!arr[i].props) arr[i].props = {}; \r\n // let currentClassName = arr[i].props.className?? \"\"; \r\n // if(!currentClassName.includes(\"dz-ctr\"))\r\n // arr[i].props.className = currentClassName + \" dz-ctr\"; \r\n // if([\"icbtn\", \"entry\", \"btn\", \"tmpick\", \"dtpick\"].includes(arr[i].type ))\r\n // arr[i].props.className += \" dz-noclick\"; \r\n arr[i].props[\"data-ctr-class\"] = \"dz-ctr\"; \r\n arr[i].props[\"data-ctr-title\"] = arr[i].type; \r\n arr[i].props[\"data-ctr-path\"] =newPath;\r\n arr[i].props[\"data-ctr-child\"] = \"chld\";\r\n if(typeof arr[i] === \"object\")\r\n [arr[i], newPath] = this.traverseObject(arr[i], newPath); \r\n // }\r\n \r\n \r\n \r\n }\r\n return [arr, path]; \r\n }\r\n traverseObject(obj, path){\r\n let newPath = path ; \r\n\r\n let obKeys = Object.keys(obj); \r\n for(let ob of obKeys){\r\n // if(ob === \"whenclick\"){ \r\n // delete obj[ob]; \r\n // continue; \r\n // }\r\n \r\n if(ob === \"chld\")\r\n {\r\n newPath = path + \".\" + ob; \r\n if(Array.isArray(obj[ob])) [obj[ob], newPath] = this.traverseArray(obj[ob],newPath, ob); \r\n }\r\n else if( obj[ob] && typeof obj[ob] === \"object\") [obj[ob], newPath] = this.traverseObject(obj[ob], newPath); \r\n }\r\n return [obj, newPath]; \r\n }\r\n neutralize(inp, path){\r\n\r\n if(inp){ \r\n if(Array.isArray(inp)) [inp, path] = this.traverseArray(inp,path, \"chld\");\r\n else if(typeof inp === \"object\") [inp, path] = this.traverseObject(inp, path); \r\n return inp; \r\n }\r\n }\r\n\r\n stuffScaffLayout(layoutJSON){\r\n let pattern = /<<loadscaff[:]([0-9A-Za-z-_]{2,})[/]([0-9A-Za-z-_]{2,})[/]([0-9A-Za-z-_]{2,})>>/g; \r\n let layoutStuffs = layoutJSON?.match(pattern); \r\n for(let stuff in layoutStuffs){\r\n layoutJSON = layoutJSON.replaceAll(stuff, \"[]\")\r\n }\r\n\r\n // matches <<loadscaff:_page/double-column-view/layout>>\r\n\r\n }\r\n \r\n}\r\nexport default LayoutManipulator; ","import React, { Component } from \"react\";\r\nimport { ExecuteLayoutEventMethods, GetControlPropertyFromStoreOrRefData } from \"../../../General/commonFunctions\";\r\n// import store from \"../../../AppRedux/store\";\r\nimport { Checkbox, FormControlLabel, Icon } from \"@mui/material\";\r\nimport { ownStore } from \"../../../AppOwnState/ownState\";\r\n \r\nclass FactsCheckbox extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.rowIndex = GetControlPropertyFromStoreOrRefData(props.rowindex, props.refData) ?? \"\";\r\n\r\n let checkValueFromState = GetControlPropertyFromStoreOrRefData(\"[\" + props.dset + \".\" +\r\n this.rowIndex + \".\" + props.bind + \"]\", props.refData);\r\n let checkVal = (checkValueFromState ?? false); \r\n if(typeof parseInt(checkVal) === \"number\" ) checkVal = (checkVal != 0); \r\n this.state = {\r\n checkValue: checkVal\r\n }\r\n this.finalValue = checkVal; \r\n\r\n }\r\n\r\n componentDidMount() {\r\n this.mounted = true;\r\n this.unsubscribe = ownStore.subscribe((storeInfo) => {\r\n if (this.mounted) {\r\n if(![storeInfo.dset, \"this\"].includes(this.props.dset)) return; \r\n let newState = GetControlPropertyFromStoreOrRefData(\"[\" + this.props.dset + \".\" + this.rowIndex + \".\" + this.props.bind + \"]\", this.props.refData);\r\n let checkVal = (newState ?? false); \r\n if(typeof parseInt(checkVal) === \"number\" ) checkVal = (checkVal != 0); \r\n if (this.finalValue !== checkVal) {\r\n this.finalValue = checkVal;\r\n this.setState({\r\n checkValue: checkVal\r\n });\r\n }\r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n\r\n componentWillUnmount() {\r\n if (this.unsubscribe) this.unsubscribe();\r\n this.mounted = false;\r\n\r\n }\r\n\r\n\r\n async saveCurrentTextToDataset() {\r\n this.finalValue = this.state.checkValue;\r\n if (this.rowIndex !== \"\") {\r\n let rowData = GetControlPropertyFromStoreOrRefData(\"[\" + this.props.dset + \".\" + this.rowIndex + \"]\", this.props.refData);\r\n\r\n await ExecuteLayoutEventMethods([\r\n {\r\n exec: \"mergedatasetarray\",\r\n args: {\r\n dset: this.props.dset,\r\n index: parseInt(this.rowIndex),\r\n data: {\r\n ...rowData,\r\n [this.props.bind]: this.state.checkValue\r\n }\r\n }\r\n }]);\r\n }\r\n else {\r\n await ExecuteLayoutEventMethods([\r\n\r\n {\r\n exec: \"setdatasetfield\",\r\n args: {\r\n dset: this.props.dset,\r\n fieldname: this.props.bind,\r\n data: this.state.checkValue\r\n }\r\n }\r\n ]);\r\n }\r\n }\r\n async runCustomOnChangeEvents() {\r\n await this.saveCurrentTextToDataset();\r\n if (this.props.whenchange) await ExecuteLayoutEventMethods(this.props.whenchange, this.props.refData);\r\n\r\n if (this.state.checkValue === true) {\r\n if (this.props.whencheck) await ExecuteLayoutEventMethods(this.props.whencheck, this.props.refData);\r\n }\r\n else {\r\n if (this.props.whenuncheck) await ExecuteLayoutEventMethods(this.props.whenuncheck, this.props.refData);\r\n }\r\n\r\n }\r\n async handleOnChange(e) {\r\n this.finalValue = e.target.checked;\r\n this.setState({\r\n checkValue: e.target.checked\r\n }, () => {\r\n\r\n this.runCustomOnChangeEvents();\r\n });\r\n }\r\n\r\n\r\n ripOffControlSpecificAttributes() {\r\n const excluded = [\"resolveprops\", \"refData\", \"rowindex\", \"label\", \"labelProps\"];\r\n return (\r\n Object.keys(this.props)\r\n .filter((t) => !excluded.includes(t))\r\n .reduce((obj, key) => {\r\n obj[key] = this.props[key];\r\n return obj;\r\n }, {}));\r\n\r\n }\r\n\r\n render() {\r\n let newProps = this.ripOffControlSpecificAttributes();\r\n console.log(`Check value ${this.state.checkValue}`); \r\n return (\r\n <FormControlLabel\r\n control={\r\n <Checkbox className=\"factsCheckbox\"\r\n size=\"small\" \r\n {...newProps} \r\n checked={this.state.checkValue}\r\n onChange={(e) => this.handleOnChange(e)}\r\n />\r\n }\r\n style={{marginRight:\"0px\"}}\r\n {...this.props?.labelProps} \r\n label = {<span style={{fontSize: \"0.8em\"}}>{this.props?.label ?? \"\"}</span>}\r\n \r\n />\r\n\r\n )\r\n }\r\n}\r\n\r\nexport default FactsCheckbox;","import React, { Component } from 'react';\r\nimport Fab from \"@mui/material/Fab\";\r\n// import { ExecuteLayoutEventMethods } from '../../../General/commonFunctions';\r\nimport PureJSComponentFactory from '../../Pages/Factory/pureJSComponentFactory';\r\nimport { Icon, Zoom } from '@mui/material';\r\n\r\nclass FactsFABMulti extends Component {\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n showSubs: false\r\n }; \r\n }\r\n ripOffControlSpecificAttributes() {\r\n\r\n const excluded = [\"whenclick\", \"refData\", \"subs\"];\r\n return (Object.keys(this.props)\r\n .filter((t) => !excluded.includes(t))\r\n .reduce((obj, key) => {\r\n obj[key] = this.props[key];\r\n return obj;\r\n }, {}));\r\n\r\n }\r\n\r\n async handleClick() {\r\n this.setState({\r\n showSubs: !this.state.showSubs\r\n }\r\n // , async()=>{ \r\n // await ExecuteLayoutEventMethods(this.props.whenclick);\r\n // }\r\n ); \r\n }\r\n render() {\r\n let newProps = this.ripOffControlSpecificAttributes();\r\n let subScaff = new PureJSComponentFactory().scaffoldComponent(this.props.subs, this.props.itemObject);\r\n\r\n return (\r\n \r\n <div className=\"facts-multiFABDiv factsFABMulti\" >\r\n <Zoom in={this.state.showSubs} >\r\n <div className=\"facts-FABSubs\" onClick={()=> this.setState({showSubs: false})}> \r\n {subScaff}\r\n </div>\r\n </Zoom>\r\n <Fab {...newProps} children={this.state.showSubs ? (<Icon>close</Icon>) : newProps.children} \r\n onClick={() => this.handleClick()} />\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default FactsFABMulti; ","import React, { Component } from \"react\";\r\nimport { Grid } from \"@mui/material\";\r\nimport { getProcessedDynamic } from \"../../../General/commonFunctions\";\r\n// import store from \"../../../AppRedux/store\";\r\nimport { ownStore } from \"../../../AppOwnState/ownState\";\r\n\r\nclass FactsSection extends Component{\r\n constructor(props) {\r\n super(props);\r\n let _propsRedux = null;\r\n if (props.appendprops) _propsRedux = getProcessedDynamic(props.appendprops, this.props.refData);\r\n this.state = {\r\n propsRedux: _propsRedux\r\n }\r\n }\r\n\r\n ripOffControlSpecificAttributes() {\r\n\r\n const excluded = [ \"appendprops\", \"refData\"];\r\n return (Object.keys(this.props)\r\n .filter((t) => !excluded.includes(t))\r\n .reduce((obj, key) => {\r\n obj[key] = this.props[key];\r\n return obj;\r\n }, {}));\r\n }\r\n\r\n componentDidMount() {\r\n this.mounted = true;\r\n if (this.props.appendprops) {\r\n this.unsubscribe = ownStore.subscribe(() => {\r\n if (this.mounted) {\r\n let newState = getProcessedDynamic(this.props.appendprops, this.props.refData);\r\n if (JSON.stringify(this.state.propsRedux) !== JSON.stringify(newState)) {\r\n\r\n this.setState({\r\n propsRedux: newState\r\n });\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.mounted = false;\r\n if (this.unsubscribe) this.unsubscribe();\r\n }\r\n\r\n\r\n render(){\r\n let newProps = this.ripOffControlSpecificAttributes();\r\n return(\r\n <Grid className=\"factsSection\" {...newProps} {...this.state.propsRedux}></Grid>\r\n )\r\n }\r\n}\r\n\r\nexport default FactsSection; ","import React, { Component } from \"react\";\r\nimport { objectMatchAll, getProcessedArgs, GetControlPropertyFromStoreOrRefData, getProcessedDynamic } from \"../../../General/commonFunctions\";\r\n// import store from \"../../../AppRedux/store\";\r\nimport ListViewCustomTemplate from \"../ControlTemplates/ListViewItem/listViewCustomTemplate\";\r\nimport { TreeItem, TreeView } from \"@mui/lab\";\r\nimport { Icon } from \"@mui/material\";\r\nimport { ownStore } from \"../../../AppOwnState/ownState\";\r\n\r\n\r\nclass FactsTreeview extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n currentDS: this.filterDataset(this.getCurrentDataSet())\r\n };\r\n }\r\n\r\n ripOffControlSpecificAttributes() {\r\n\r\n const excluded = [\"content\", \"datasets\", \"refData\", \"filterto\"];\r\n return (\r\n Object.keys(this.props)\r\n .filter((t) => !excluded.includes(t))\r\n .reduce((obj, key) => {\r\n obj[key] = this.props[key];\r\n return obj;\r\n }, {}));\r\n\r\n }\r\n\r\n getCurrentDataSet() {\r\n let listds = GetControlPropertyFromStoreOrRefData(\"[\" + this.props.datasets[0] + \"]\");\r\n return listds;\r\n }\r\n\r\n filterDataset(listData) {\r\n if (this.props.filterto && listData) {\r\n let filterTo = getProcessedArgs(this.props.filterto, this.props.refData);\r\n if (filterTo) {\r\n return listData.filter(it => {\r\n\r\n return objectMatchAll(it, filterTo);\r\n });\r\n }\r\n else return listData;\r\n }\r\n else return listData;\r\n }\r\n\r\n componentDidMount() {\r\n this.mounted = true;\r\n\r\n if (this.props.datasets && this.props.datasets.length > 0) {\r\n // this.setState({\r\n // currentDS: this.getCurrentDataSet()\r\n // });\r\n this.unsubscribe = ownStore.subscribe((storeInfo) => {\r\n if (this.mounted) {\r\n if (storeInfo.dset === \"this\" || storeInfo.dset === this.props.datasets[0] ||\r\n this.props.watch?.includes(storeInfo.dset)) {\r\n let newDS = this.getCurrentDataSet();\r\n // let newDSString = JSON.stringify(newDS),\r\n // currentDSString = JSON.stringify(this.state.currentDS);\r\n\r\n // if (newDSString !== currentDSString) {\r\n this.setState({\r\n currentDS: this.filterDataset(newDS)\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n }\r\n\r\n\r\n componentWillUnmount() {\r\n this.mounted = false;\r\n if (this.unsubscribe) this.unsubscribe();\r\n }\r\n\r\n\r\n render() {\r\n\r\n let newProps = this.ripOffControlSpecificAttributes();\r\n let listArrayToRender = this.convertToArrayIfObject(this.state.currentDS, \"\");\r\n\r\n\r\n return (\r\n <TreeView {...newProps} className={\"lvlist \" + (newProps?.className ?? \"\") + \"factsTreeView\"}\r\n defaultExpanded={['3']}\r\n defaultCollapseIcon={<Icon>arrow_drop_down</Icon>}\r\n defaultExpandIcon={<Icon>arrow_right</Icon>}\r\n defaultEndIcon={<div style={{ width: 24 }} />} >\r\n {this.getContentTemplate(listArrayToRender, \"\")}\r\n </TreeView>\r\n );\r\n\r\n }\r\n\r\n convertToArrayIfObject(currentList, parentPropKey) {\r\n if (currentList) {\r\n if (!Array.isArray(currentList)) {\r\n return Object.keys(currentList).map((t) => {\r\n return { \"propfullkey\": parentPropKey + t, \"propkey\": t, \"propval\": currentList[t], \"proptype\": this.getValueType(currentList[t]) }\r\n });\r\n }\r\n else {\r\n return currentList.map((t, i) => {\r\n return ({ ...t, \"propfullkey\": parentPropKey + i.toString(), \"propkey\": i, \"proptype\": this.getValueType(t), \"propval\": t });\r\n });\r\n }\r\n }\r\n return currentList;\r\n\r\n }\r\n\r\n getValueType(val) {\r\n if (val === null) return \"null\";\r\n if (typeof val === \"string\") return \"string\";\r\n if (typeof val === \"boolean\") return \"boolean\";\r\n if (typeof val === \"object\") {\r\n if (Array.isArray(val)) return \"array\";\r\n else return \"object\";\r\n }\r\n }\r\n\r\n\r\n // renderRow(props) {\r\n // const { index, style } = props;\r\n // let contentTemplate = this.getContentTemplate(this.props.content, this.state.currentDS[index]);\r\n\r\n // return (\r\n // <div key={index} style={style}>\r\n // {contentTemplate}\r\n // </div>\r\n // );\r\n // }\r\n\r\n getContentTemplate(listArrayToRender, nodeId, rootPropKey = \"\") {\r\n if (listArrayToRender && listArrayToRender.map) {\r\n return (listArrayToRender.map((it, index) => {\r\n\r\n let currentNodeId = nodeId + index.toString();\r\n let scaff = null;\r\n var resItemProps = getProcessedDynamic(this.props.content.itemprops, it);\r\n\r\n if (typeof it[this.props.datafield] === \"object\" && (resItemProps?.expandable ?? true)) {\r\n var listToRender = this.convertToArrayIfObject(it[this.props.datafield], rootPropKey + it.propkey + \".\");\r\n scaff = this.getContentTemplate(listToRender, currentNodeId, rootPropKey + it.propkey + \".\");\r\n }\r\n return (\r\n <TreeItem key={index} nodeId={currentNodeId} {...resItemProps} expandable={undefined} label={\r\n <ListViewCustomTemplate key={index} itemProps={this.props.content.props}\r\n layout={this.props.content.chld} itemObject={it} />\r\n }>\r\n {scaff}\r\n </TreeItem>);\r\n // let isLastItem = ind >= (this.state.currentDS.length -1)\r\n }));\r\n }\r\n }\r\n\r\n\r\n}\r\n\r\nexport default FactsTreeview; ","import React, { Component } from \"react\";\r\nimport QrReader from 'react-qr-reader'\r\nimport { ExecuteLayoutEventMethods } from \"../../../General/commonFunctions\";\r\n\r\n\r\nclass FactsQRCode extends Component {\r\n constructor(props) {\r\n super(props);\r\n window.qrScanNow = this.handleScan.bind(this); \r\n }\r\n \r\n async handleScan(data) {\r\n if (data) {\r\n await ExecuteLayoutEventMethods(this.props.whenscan, data);\r\n }\r\n }\r\n async handleError(err) {\r\n await ExecuteLayoutEventMethods(this.props.whenerror, err);\r\n }\r\n\r\n\r\n ripOffControlSpecificAttributes() {\r\n const excluded = [\"resolveprops\", \"refData\", \"whenscan\", \"whenerror\"];\r\n return (\r\n Object.keys(this.props)\r\n .filter((t) => !excluded.includes(t))\r\n .reduce((obj, key) => {\r\n obj[key] = this.props[key];\r\n return obj;\r\n }, {}));\r\n\r\n }\r\n\r\n render() {\r\n let newProps = this.ripOffControlSpecificAttributes();\r\n\r\n return (<QrReader\r\n className=\"factsQRCode\"\r\n delay={1000}\r\n \r\n onError={(data)=> this.handleError(data)}\r\n onScan={(err) => this.handleScan(err)}\r\n {...newProps}\r\n />);\r\n }\r\n}\r\n\r\nexport default FactsQRCode; ","import React, { Component } from \"react\";\r\n import BarcodeScannerComponent from \"react-webcam-barcode-scanner\";\r\nimport { ExecuteLayoutEventMethods } from \"../../../General/commonFunctions\";\r\n\r\n\r\nclass FactsBarCode extends Component {\r\n \r\n\r\n async handleScan(data) {\r\n if (data) {\r\n await ExecuteLayoutEventMethods(this.props.whenscan, data);\r\n }\r\n }\r\n async handleError(err) {\r\n await ExecuteLayoutEventMethods(this.props.whenerror, err);\r\n }\r\n\r\n\r\n ripOffControlSpecificAttributes() {\r\n const excluded = [\"resolveprops\", \"refData\", \"whenscan\", \"whenerror\"];\r\n return (\r\n Object.keys(this.props)\r\n .filter((t) => !excluded.includes(t))\r\n .reduce((obj, key) => {\r\n obj[key] = this.props[key];\r\n return obj;\r\n }, {}));\r\n\r\n }\r\n\r\n render() {\r\n let newProps = this.ripOffControlSpecificAttributes();\r\n\r\n return (<BarcodeScannerComponent\r\n className=\"factsBarCode\"\r\n width=\"100%\" height=\"100%\"\r\n onUpdate={(err, result)=> {\r\n if(result){\r\n this.handleScan(result.text); \r\n \r\n }\r\n else{\r\n this.handleError(err)\r\n }\r\n } }\r\n {...newProps}\r\n />);\r\n }\r\n}\r\n\r\nexport default FactsBarCode; ","import React, { Component } from \"react\";\r\nimport { ChangePageDataSetState, ExecuteLayoutEventMethods } from \"../../../General/commonFunctions\";\r\n// import store from \"../../../AppRedux/store\";\r\nimport { ViewState } from '@devexpress/dx-react-scheduler';\r\n\r\nimport { Scheduler, Appointments, MonthView, Toolbar, DateNavigator, TodayButton, AppointmentTooltip } from '@devexpress/dx-react-scheduler-material-ui';\r\nimport { ownStore } from \"../../../AppOwnState/ownState\";\r\n \r\nclass FactsDevScheduler extends Component {\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n currentDS : this.getCurrentDataSet(), \r\n selectedDate : null\r\n }\r\n }\r\n \r\n componentDidMount(){\r\n this.mounted = true; \r\n if (this.props.datasets && this.props.datasets.length > 0) {\r\n \r\n this.unsubscribe = ownStore.subscribe((storeInfo) => {\r\n if (this.mounted) {\r\n // if(![storeInfo.dset, \"this\"].includes(this.props.datasets[0])) return; \r\n if(storeInfo.dset === \"this\" || storeInfo.dset ===this.props.datasets[0] ) { \r\n let newDS = this.getCurrentDataSet();\r\n // if (JSON.stringify(newDS) !== JSON.stringify(this.state.currentDS)) {\r\n this.setState({\r\n currentDS : newDS\r\n });\r\n // }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n getCurrentDataSet = () => {\r\n let listds = ChangePageDataSetState(this.props.datasets);\r\n return listds[this.props.datasets[0]];\r\n }\r\n\r\n \r\n ripOffControlSpecificAttributes = () => {\r\n const excluded = [\"datasets\", \"refData\"];\r\n return (Object.keys(this.props)\r\n .filter((t) => !excluded.includes(t))\r\n .reduce((obj, key) => {\r\n obj[key] = this.props[key];\r\n return obj;\r\n }, {}));\r\n }\r\n\r\n \r\n componentWillUnmount(){\r\n if (this.unsubscribe) this.unsubscribe();\r\n this.mounted = false;\r\n\r\n }\r\n \r\n \r\n handleOnChange = async (date) => {\r\n \r\n this.setState({\r\n selectedDate: date\r\n }, async () => {\r\n await ExecuteLayoutEventMethods(this.props.whenchange, date);\r\n });\r\n\r\n } \r\n\r\n render(){ \r\n let newProps = this.ripOffControlSpecificAttributes();\r\n let listArrayToRender = this.state.currentDS;\r\n return (\r\n <Scheduler\r\n className=\"factsDevScheduler\"\r\n data={listArrayToRender} {...newProps}>\r\n <ViewState currentDate={Date.now()} />\r\n <MonthView timeTableCellComponent={(cellProps)=> <MonthView.TimeTableCell \r\n onClick= {(e)=> this.handleOnChange(cellProps.startDate)} {...cellProps} />}>\r\n \r\n </MonthView>\r\n <Appointments />\r\n <AppointmentTooltip showCloseButton />\r\n <Toolbar />\r\n <DateNavigator />\r\n <TodayButton />\r\n </Scheduler>\r\n );\r\n }\r\n\r\n}\r\n\r\nexport default FactsDevScheduler;","import React, { Component } from \"react\";\r\n\r\nimport CanvasDraw from \"react-canvas-draw\";\r\nimport { ownStore } from \"../../../AppOwnState/ownState\";\r\n// import store from \"../../../AppRedux/store\";\r\nimport { ExecuteLayoutEventMethods, GetControlPropertyFromStoreOrRefData } from \"../../../General/commonFunctions\";\r\n\r\n\r\nclass FactsDraw extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.saveableCanvas = React.createRef();\r\n }\r\n\r\n ripOffControlSpecificAttributes() {\r\n\r\n const excluded = [\"whenchange\"];\r\n return (\r\n Object.keys(this.props)\r\n .filter((t) => !excluded.includes(t))\r\n .reduce((obj, key) => {\r\n obj[key] = this.props[key];\r\n return obj;\r\n }, {}));\r\n\r\n }\r\n\r\n componentDidMount() {\r\n this.mounted = true;\r\n this.timeStamp = GetControlPropertyFromStoreOrRefData(\"[func.today]\");\r\n if (this.props.dset) {\r\n this.unsubscribe = ownStore.subscribe(() => {\r\n if (this.mounted && this.saveableCanvas) {\r\n //Todo Differential Rendering\r\n let action = GetControlPropertyFromStoreOrRefData(\"[\" + this.props.dset + \".action]\");\r\n let tStamp = GetControlPropertyFromStoreOrRefData(\"[\" + this.props.dset + \".ts]\");\r\n if (tStamp != this.timeStamp) {\r\n this.timeStamp = tStamp; \r\n switch (action) {\r\n case \"undo\":\r\n this.saveableCanvas.undo();\r\n break;\r\n case \"clear\":\r\n this.saveableCanvas.clear();\r\n break;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n componentWillUnmount(){\r\n if(this.unsubscribe) this.unsubscribe(); \r\n this.mounted = false;\r\n }\r\n\r\n async canvasOnChange() {\r\n if (this.saveableCanvas) {\r\n // let drawCanvas = this.saveableCanvas.canvas.drawing; \r\n // let imageData = drawCanvas.toDataURL(this.props.type ?? \"image/jpeg\"); \r\n console.log(this.saveableCanvas);\r\n let drawCanvas = this.saveableCanvas; \r\n let imageData = drawCanvas.getDataURL( this.props.type ?? \"jpeg\",false, \r\n this.props.type === \"jpeg\" ? \"#fff\" : undefined); \r\n await ExecuteLayoutEventMethods([\r\n\r\n {\r\n exec: \"setdatasetfield\",\r\n args: {\r\n dset: this.props.dset,\r\n fieldname: \"data\",\r\n data: imageData\r\n }\r\n }\r\n ]);\r\n if (this.props.whenchange) await ExecuteLayoutEventMethods(this.props.whenchange, imageData);\r\n }\r\n }\r\n\r\n render() {\r\n let newProps = this.ripOffControlSpecificAttributes();\r\n return (\r\n <CanvasDraw brushRadius={2} lazyRadius={0} immediateLoading={true}\r\n \r\n ref={cDraw => this.saveableCanvas = cDraw}\r\n onChange={() => this.canvasOnChange()} {...newProps}\r\n \r\n style={{ position: \"relative\", width: \"100%\", ...newProps.style }} />\r\n );\r\n }\r\n}\r\n\r\n// let ctx = drawCanvas.getContext(\"2d\");\r\n// ctx.fillStyle = \"rgb(200,0,0)\";\r\n// ctx.fillRect(0,0,drawCanvas.width,drawCanvas.height);\r\n\r\nexport default FactsDraw;","import React, { Component } from \"react\";\r\nimport { ExecuteLayoutEventMethods, GetControlPropertyFromStoreOrRefData } from \"../../../General/commonFunctions\";\r\n// import store from \"../../../AppRedux/store\";\r\nimport { Slider } from \"@mui/material\";\r\nimport { ownStore } from \"../../../AppOwnState/ownState\";\r\n\r\nclass FactsSlider extends Component {\r\n\r\n\r\n constructor(props) {\r\n super(props);\r\n this.rowIndex = GetControlPropertyFromStoreOrRefData(props.rowindex, props.refData) ?? \"\";\r\n\r\n let val = GetControlPropertyFromStoreOrRefData(\"[\" + props.dset + \".\" +\r\n this.rowIndex + \".\" + props.bind + \"]\", props.refData);\r\n this.state = {\r\n value: (val === null ? 0 : val)\r\n }\r\n this.finalValue = (val === null ? 0 : val);\r\n\r\n }\r\n\r\n componentDidMount() {\r\n this.mounted = true;\r\n this.unsubscribe = ownStore.subscribe((storeInfo) => {\r\n if (this.mounted) {\r\n if (storeInfo.dset === \"this\" || storeInfo.dset === this.props.dset) {\r\n\r\n let newState = GetControlPropertyFromStoreOrRefData(\"[\" + this.props.dset + \".\" + this.rowIndex + \".\" + this.props.bind + \"]\", this.props.refData);\r\n if (this.finalValue !== newState) {\r\n\r\n if (newState === null) newState = false;\r\n this.finalValue = newState;\r\n\r\n this.setState({\r\n value: newState\r\n });\r\n\r\n }\r\n }\r\n }\r\n });\r\n\r\n }\r\n\r\n componentWillUnmount() {\r\n this.mounted = false;\r\n if (this.unsubscribe) this.unsubscribe();\r\n\r\n }\r\n\r\n\r\n async saveCurrentTextToDataset() {\r\n this.finalValue = this.state.value;\r\n if (this.rowIndex !== \"\") {\r\n let rowData = GetControlPropertyFromStoreOrRefData(\"[\" + this.props.dset + \".\" + this.rowIndex + \"]\", this.props.refData);\r\n\r\n await ExecuteLayoutEventMethods([\r\n {\r\n exec: \"mergedatasetarray\",\r\n args: {\r\n dset: this.props.dset,\r\n index: parseInt(this.rowIndex),\r\n data: \r\n {\r\n ...rowData,\r\n [this.props.bind]: this.state.value\r\n }\r\n \r\n }\r\n }]);\r\n }\r\n else {\r\n await ExecuteLayoutEventMethods([\r\n\r\n {\r\n exec: \"setdatasetfield\",\r\n args: {\r\n dset: this.props.dset,\r\n fieldname: this.props.bind,\r\n data: this.state.value\r\n }\r\n }\r\n ]);\r\n }\r\n }\r\n\r\n async runCustomOnChangeEvents() {\r\n await this.saveCurrentTextToDataset();\r\n if (this.props.whenchange) await ExecuteLayoutEventMethods(this.props.whenchange, this.props.refData);\r\n\r\n }\r\n\r\n\r\n handleOnChange(event, newValue) {\r\n this.finalValue = newValue;\r\n this.setState({\r\n value: newValue\r\n }, () => {\r\n this.runCustomOnChangeEvents();\r\n });\r\n };\r\n\r\n\r\n ripOffControlSpecificAttributes() {\r\n const excluded = [\"resolveprops\", \"refData\", \"rowindex\"];\r\n return (\r\n Object.keys(this.props)\r\n .filter((t) => !excluded.includes(t))\r\n .reduce((obj, key) => {\r\n obj[key] = this.props[key];\r\n return obj;\r\n }, {}));\r\n\r\n }\r\n\r\n render() {\r\n\r\n let newProps = this.ripOffControlSpecificAttributes();\r\n\r\n return (\r\n <Slider className=\"factsSlider\"\r\n {...newProps}\r\n value={this.state.value}\r\n onChange={this.handleOnChange.bind(this)}\r\n />\r\n\r\n )\r\n }\r\n}\r\n\r\nexport default FactsSlider;","import React, { Component } from \"react\";\r\nimport Radio from '@mui/material/Radio';\r\nimport RadioGroup from '@mui/material/RadioGroup';\r\nimport FormControlLabel from '@mui/material/FormControlLabel';\r\nimport { ExecuteLayoutEventMethods, GetControlPropertyFromStoreOrRefData } from \"../../../General/commonFunctions\";\r\n// import store from \"../../../AppRedux/store\";\r\nimport { ownStore } from \"../../../AppOwnState/ownState\";\r\n\r\nclass FactsRadioGroup extends Component {\r\n constructor(props) {\r\n super(props);\r\n let _listData = ownStore.getState(this.props.listdset);\r\n\r\n this.rowIndex = GetControlPropertyFromStoreOrRefData(props.rowindex, props.refData) ?? \"\";\r\n let valueFromState = GetControlPropertyFromStoreOrRefData(\"[\" + props.dset + \".\" +\r\n this.rowIndex + \".\" + props.bind + \"]\", props.refData);\r\n // if (this.props.dset && this.props.bind) {\r\n // valueFromState = GetControlPropertyFromStoreOrRefData(\"[\" + props.dset + \".\" +\r\n // (this.rowIndex === \"\" ? \"\" : (this.rowIndex + \".\"))\r\n // + props.bind + \"]\", props.refData);\r\n // } \r\n this.state = {\r\n value: (valueFromState === null || valueFromState === undefined ? null : valueFromState),\r\n listData: _listData\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.mounted = true;\r\n\r\n this.unsubscribe = ownStore.subscribe((storeInfo) => {\r\n if (this.mounted) {\r\n if([storeInfo.dset, \"this\"].includes(this.props.dset)) {\r\n // if ([storeInfo.dset, \"this\"].includes(this.props.dset) &&\r\n // (storeInfo.field ?? this.props.bind) === this.props.bind) {\r\n let newState = GetControlPropertyFromStoreOrRefData(\"[\" + this.props.dset + \".\" + this.rowIndex + \".\" + this.props.bind + \"]\");\r\n if (this.state.value !== newState) {\r\n if (newState === null) newState = \"\";\r\n this.setState({\r\n value: newState\r\n });\r\n\r\n \r\n\r\n }\r\n }\r\n\r\n\r\n if ([storeInfo.dset].includes(this.props.listdset) ) {\r\n let newList = ownStore.getState(this.props.listdset);\r\n let thisListString = JSON.stringify(this.state.listData);\r\n let newListString = JSON.stringify(newList);\r\n if (thisListString !== newListString) {\r\n this.setState({\r\n listData: newList\r\n });\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n componentWillUnmount() {\r\n this.mounted = false;\r\n if (this.unsubscribe) this.unsubscribe();\r\n\r\n }\r\n\r\n async saveCurrentValueToDataset() {\r\n // if (this.props.dset && this.props.bind) {\r\n if (this.rowIndex !== \"\") {\r\n let rowData = GetControlPropertyFromStoreOrRefData(\"[\" + this.props.dset + \".\" + this.rowIndex + \"]\", this.props.refData);\r\n await ExecuteLayoutEventMethods([\r\n {\r\n exec: \"mergedatasetarray\",\r\n args: {\r\n noprocess: true,\r\n dset: this.props.dset,\r\n index: parseInt(this.rowIndex),\r\n data:\r\n {\r\n ...rowData,\r\n [this.props.bind]: this.state.value\r\n }\r\n }\r\n }]);\r\n }\r\n else {\r\n await ExecuteLayoutEventMethods([\r\n {\r\n exec: \"setdatasetfield\",\r\n args: {\r\n dset: this.props.dset,\r\n fieldname: this.props.bind,\r\n data: this.state.value\r\n }\r\n }\r\n ]);\r\n }\r\n // }\r\n }\r\n\r\n async runCustomOnChangeEvents() {\r\n await this.saveCurrentValueToDataset();\r\n await ExecuteLayoutEventMethods(this.props.whenchange, { ...this.props.refData, ...this.state});\r\n\r\n }\r\n async handleOnChange(e) {\r\n this.setState({\r\n value: e.target.value\r\n }, () => {\r\n this.runCustomOnChangeEvents();\r\n });\r\n\r\n }\r\n\r\n\r\n ripOffControlSpecificAttributes() {\r\n const excluded = [\"resolveprops\", \"format\", \"refData\", \"rowindex\"];\r\n return (\r\n Object.keys(this.props)\r\n .filter((t) => !excluded.includes(t))\r\n .reduce((obj, key) => {\r\n obj[key] = this.props[key];\r\n return obj;\r\n }, {}));\r\n\r\n }\r\n\r\n render() {\r\n let newProps = this.ripOffControlSpecificAttributes();\r\n return (\r\n <RadioGroup className=\"factsRadioGroup\" {...newProps}\r\n value={this.state.value}\r\n onChange={(e) => this.handleOnChange(e)} >\r\n {this.state.listData?.map((t, index) => {\r\n return <FormControlLabel {...this.props.inputProps} value={t[this.props.valuefield]} key={index} control={<Radio />} label={t[this.props.textfield]} />\r\n })}\r\n </RadioGroup>\r\n\r\n );\r\n }\r\n}\r\n\r\nexport default FactsRadioGroup;\r\n\r\n","import React, { Component } from \"react\";\r\nimport { Icon } from \"@mui/material\";\r\n\r\n\r\nclass FactsDesignerDummy extends Component{\r\n \r\n render(){\r\n return(\r\n <div {...this.props} style={\r\n {\r\n backgroundColor: \"#ffeb3b\", \r\n color: \"grey\", \r\n padding: \"5px\",\r\n display: \"flex\", \r\n alignItems : \"center\"\r\n } \r\n }>\r\n <Icon style={{pointerEvents:\"none\"}}>data_object</Icon>\r\n {this.props.type}\r\n </div>\r\n )\r\n }\r\n}\r\n\r\nexport default FactsDesignerDummy; ","import React, { Component } from 'react'; \r\nimport { Tab, Tabs, Box } from \"@mui/material\";\r\nimport { dsFiller, getProcessedDynamic } from '../../../General/commonFunctions';\r\nimport PureJSComponentFactory from '../../Pages/Factory/pureJSComponentFactory';\r\n \r\n\r\nclass FactsTabControl extends Component {\r\n constructor(props){\r\n super(props); \r\n this.tabData =props?.data?.map(t=>{\r\n let singleTabProps = getProcessedDynamic( this.props.content, t); \r\n return singleTabProps; \r\n }); \r\n\r\n this.state = {\r\n tabIndex: 0,\r\n currentTabData: null\r\n }; \r\n }\r\n\r\n async componentDidMount(){\r\n let curTabData = null; \r\n if(this.tabData?.length > 0 ){\r\n curTabData = this.tabData[0]; \r\n await this.fillLayoutData(curTabData); \r\n this.setState({currentTabData : curTabData });\r\n }\r\n }\r\n\r\n fillLayoutData =async (curTabData) => {\r\n if(!curTabData.chld && curTabData?.layout?.doctype && curTabData?.layout?.docno){ \r\n let sServerDataSet = await dsFiller({\r\n args : {\r\n proc : \"PWA.LoadLayout\", \r\n args : {\r\n doctype: curTabData.layout?.doctype, \r\n docno: curTabData.layout?.docno \r\n }\r\n }\r\n });\r\n if(sServerDataSet.length > 0 && sServerDataSet[0]?.layoutinfo){ \r\n let layoutParsed = JSON.parse(sServerDataSet[0].layoutinfo); \r\n curTabData.chld = layoutParsed?.layout ?? layoutParsed;\r\n }\r\n }\r\n }\r\n\r\n handlTabChange = async (event, newValue) =>{\r\n let curTabData = null; \r\n if(this.tabData?.length > newValue){ \r\n curTabData = this.tabData[newValue]; \r\n await this.fillLayoutData(curTabData); \r\n this.setState({\r\n tabIndex : newValue,\r\n currentTabData: curTabData\r\n }); \r\n }\r\n }\r\n\r\n render() {\r\n let scaff = new PureJSComponentFactory().scaffoldComponent(this.state.currentTabData?.chld);\r\n return (\r\n <div className=\"factsTabControl\">\r\n <Box sx={{ borderBottom: 1, borderColor: 'divider' }}>\r\n <Tabs value={this.state.tabIndex} onChange={this.handlTabChange} label=\"basic tabs example\">\r\n {this.tabData?.map((t, i)=>{\r\n let {buttonProps} = t; \r\n return <Tab key={i} style={{textTransform:\"none\", fontWeight: \"bold\"}} {...buttonProps} />; \r\n })}\r\n </Tabs>\r\n </Box>\r\n <div className='muiTabContent' style={{border:\"1px solid gainsboro\", padding: \"10px\"}}>\r\n {scaff}\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default FactsTabControl; ","import React, { Component } from \"react\";\r\nimport { ExecuteLayoutEventMethods, GetControlPropertyFromStoreOrRefData } from \"../../../General/commonFunctions\";\r\n// import store from \"../../../AppRedux/store\";\r\n// import HtmlEditor, {\r\n// Toolbar, MediaResizing, ImageUpload, Item,\r\n// } from 'devextreme-react/html-editor'; \r\nimport { ownStore } from \"../../../AppOwnState/ownState\";\r\n\r\nimport { CKEditor } from '@ckeditor/ckeditor5-react';\r\nimport ClassicEditor from '@ckeditor/ckeditor5-build-classic';\r\n\r\n// import 'devextreme/dist/css/dx.common.css';\r\n// import 'devextreme/dist/css/dx.light.css';\r\n\r\n\r\n// const sizeValues = [\"8pt\", \"10pt\", \"12pt\", \"14pt\", \"18pt\", \"24pt\", \"36pt\"];\r\n// const fontValues = [\r\n// \"Arial\",\r\n// \"Courier New\",\r\n// \"Georgia\",\r\n// \"Impact\",\r\n// \"Lucida Console\",\r\n// \"Tahoma\",\r\n// \"Times New Roman\",\r\n// \"Verdana\"\r\n// ];\r\n// const headerValues = [false, 1, 2, 3, 4, 5];\r\n\r\n\r\n\r\nclass FactsHtmlEditor extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.rowIndex = GetControlPropertyFromStoreOrRefData(props.rowindex, props.refData) ?? \"\";\r\n\r\n let textValueFromState = props.initialvalue;\r\n\r\n if (this.props.dset && this.props.bind) {\r\n textValueFromState = GetControlPropertyFromStoreOrRefData(\"[\" + props.dset + \".\" +\r\n (this.rowIndex === \"\" ? \"\" : (this.rowIndex + \".\"))\r\n + props.bind + \"]\", props.refData);\r\n }\r\n this.state = {\r\n textValue: (textValueFromState === null ? \"\" : textValueFromState)\r\n }\r\n this.finalValue = (textValueFromState === null ? \"\" : textValueFromState);\r\n\r\n // this.valueChanged = this.valueChanged.bind(this);\r\n \r\n }\r\n\r\n \r\n\r\n componentDidMount() {\r\n this.mounted = true;\r\n this.unsubscribe = ownStore.subscribe((storeInfo) => {\r\n if (this.mounted) {\r\n if ([storeInfo.dset, \"raw\"].includes(this.props.dset) &&\r\n (storeInfo.field ?? this.props.bind) === this.props.bind) {\r\n\r\n if (this.props.dset && this.props.bind) {\r\n let newState = GetControlPropertyFromStoreOrRefData(\"[\" + this.props.dset + \".\" +\r\n (this.rowIndex === \"\" ? \"\" : (this.rowIndex + \".\"))\r\n + this.props.bind + \"]\", this.props.refData);\r\n\r\n if (this.finalValue !== newState) {\r\n\r\n if (newState === null) newState = \"\";\r\n this.finalValue = newState;\r\n\r\n this.setState({\r\n textValue: this.finalValue\r\n });\r\n\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.unsubscribe) this.unsubscribe();\r\n this.mounted = false;\r\n\r\n }\r\n\r\n // bindingEscapeValue(val) { //?Escaping handled at ExecuteEventArgs by sending args noprocess as true; Check above code\r\n // if ( val?.startsWith && val.startsWith(\"[\") && val.endsWith(\"]\")) return \" \" + val + \" \"; //Added to escape texts which mimics inner binding\r\n // else\r\n // return val;\r\n // }\r\n \r\n async saveCurrentTextToDataset() {\r\n\r\n this.finalValue = this.state.textValue;\r\n\r\n if (this.props.dset && this.props.bind) {\r\n if (this.rowIndex !== \"\") {\r\n let rowData = GetControlPropertyFromStoreOrRefData(\"[\" + this.props.dset + \".\" + this.rowIndex + \"]\", this.props.refData);\r\n\r\n await ExecuteLayoutEventMethods([\r\n {\r\n exec: \"mergedatasetarray\",\r\n args: {\r\n noprocess: true,\r\n dset: this.props.dset,\r\n index: parseInt(this.rowIndex),\r\n data:\r\n {\r\n ...rowData,\r\n [this.props.bind]: this.state.textValue\r\n }\r\n }\r\n }]);\r\n }\r\n else {\r\n await ExecuteLayoutEventMethods([\r\n\r\n {\r\n exec: \"setdatasetfield\",\r\n args: {\r\n noprocess: true,\r\n dset: this.props.dset,\r\n fieldname: this.props.bind,\r\n data: this.state.textValue\r\n }\r\n }\r\n ]);\r\n }\r\n }\r\n }\r\n \r\n // valueChanged(e) {\r\n // this.setState({\r\n // textValue: e.value,\r\n // }, async () => {\r\n // // this.isBlurDirty = true;\r\n // await this.saveCurrentTextToDataset();\r\n // // this.isBlurDirty = false;\r\n // });\r\n // }\r\n \r\n // handleOnFocus(e) {\r\n // e.preventDefault();\r\n // const { target } = e;\r\n\r\n // target.select();\r\n // }\r\n \r\n handleOnReady(e) {\r\n // console.log(\"Ready Function defined here \",e)\r\n } \r\n\r\n // ripOffControlSpecificAttributes() {\r\n // const excluded = [\"resolveprops\", \"acceptTab\", \"format\", \"refData\", \"rowindex\"];\r\n // return (\r\n // Object.keys(this.props)\r\n // .filter((t) => !excluded.includes(t))\r\n // .reduce((obj, key) => {\r\n // obj[key] = this.props[key];\r\n // return obj;\r\n // }, {}));\r\n\r\n // }\r\n \r\n render() {\r\n // let newProps = this.ripOffControlSpecificAttributes(); \r\n return (\r\n // <HtmlEditor {...newProps} defaultValue={this.state.textValue}\r\n // onValueChanged={this.valueChanged}\r\n\r\n // onFocus={(e) => this.handleOnFocus(e)}>\r\n \r\n // <Toolbar multiline={true}>\r\n // <Item name=\"undo\" />\r\n // <Item name=\"redo\" />\r\n // <Item name=\"separator\" />\r\n // <Item\r\n // name=\"size\"\r\n // acceptedValues={sizeValues}\r\n // />\r\n // <Item\r\n // name=\"font\"\r\n // acceptedValues={fontValues}\r\n // />\r\n // <Item name=\"separator\" />\r\n // <Item name=\"bold\" />\r\n // <Item name=\"italic\" />\r\n // <Item name=\"strike\" />\r\n // <Item name=\"underline\" />\r\n // <Item name=\"separator\" />\r\n // <Item name=\"alignLeft\" />\r\n // <Item name=\"alignCenter\" />\r\n // <Item name=\"alignRight\" />\r\n // <Item name=\"alignJustify\" />\r\n // <Item name=\"separator\" />\r\n // <Item name=\"color\" />\r\n // <Item name=\"background\" />\r\n // </Toolbar>\r\n // </HtmlEditor>\r\n <CKEditor\r\n className=\"factsHtmlEditor\"\r\n editor={ ClassicEditor }\r\n data={this.state.textValue}\r\n onReady={this.handleOnReady}\r\n onChange={ ( event, editor ) => {\r\n const data = editor.getData();\r\n this.setState({\r\n textValue: data,\r\n }, async () => {\r\n await this.saveCurrentTextToDataset();\r\n });\r\n // console.log(\"Changed value is \", this.state.textValue)\r\n } } \r\n />\r\n );\r\n\r\n }\r\n}\r\n\r\nexport default FactsHtmlEditor;","/*\r\n COPY OF ComponentFactory exclusively for //!LAYOUT DESIGNER\r\n*/\r\nimport React from 'react';\r\n\r\nimport { ButtonGroup, Icon } from '@mui/material';\r\n\r\n// import FactsDataGrid from '../../Parts/ControlsERP/factsDataGrid';\r\n\r\nimport FactsExpansionPanel from '../../Parts/Controls/factsExpansionPanel';\r\n// import FactsSwipeList from '../../Parts/Controls/factsSwipeList';\r\nimport FactsButton from '../../Parts/Controls/factsButton';\r\nimport FactsEntry from '../../Parts/Controls/factsEntry';\r\nimport FactsFAB from '../../Parts/Controls/factsFAB';\r\nimport FactsDropDown from '../../Parts/Controls/factsDropDown';\r\nimport FactsVirtualList from '../../Parts/Controls/factsVirtualList';\r\nimport { GetControlPropertyFromStoreOrRefData, getProcessedArgs } from '../../../General/commonFunctions';\r\nimport FactsList from '../../Parts/Controls/factsList';\r\n\r\nimport FactsLabel from '../../Parts/Controls/factsLabel';\r\nimport FactsIconButton from '../../Parts/Controls/factsIconButton';\r\nimport FactsDatePicker from '../../Parts/Controls/factsDatePicker';\r\nimport FactsLookup from '../../Parts/Controls/factsLookup';\r\nimport FactsTimePicker from '../../Parts/Controls/factsTimePicker';\r\n// import FactsDevList from '../../Parts/Controls/factsDevList';\r\nimport FactsClickRecognizer from '../../Parts/Controls/factsClickRecognizer';\r\nimport FactsFileButton from '../../Parts/Controls/factsFileButton';\r\nimport FactsImage from '../../Parts/Controls/factsImage';\r\nimport FactsAvatar from '../../Parts/Controls/factsAvatar';\r\n// import FactsHidden from '../../Parts/Controls/factsHidden';\r\n// import FactsPDFPreview from '../../Parts/Controls/factsPDFPreview';\r\n// import FactsERPChart from '../../Parts/ControlsERP/factsERPChart';\r\nimport FactsCanvas from '../../Parts/Controls/factsCanvas';\r\n// import FactsExtraContent from '../../Parts/Controls/factsExtraContent';\r\nimport FactsRenderer from '../../Parts/Controls/factsRenderer';\r\nimport FactsCheckbox from '../../Parts/Controls/factsCheckbox';\r\nimport FactsFABMulti from '../../Parts/Controls/factsFABMulti';\r\nimport FactsSection from '../../Parts/Controls/factsSection';\r\nimport FactsTreeview from '../../Parts/Controls/factsTreeview';\r\nimport FactsQRCode from '../../Parts/Controls/factsQRCode';\r\nimport FactsBarCode from '../../Parts/Controls/factsBarCode';\r\nimport FactsDevScheduler from '../../Parts/Controls/factsDevScheduler';\r\n// import FactsHTMLView from '../../Parts/Controls/factsHTMLView';\r\nimport FactsDraw from '../../Parts/Controls/factsDraw';\r\nimport FactsSlider from '../../Parts/Controls/factsSlider';\r\nimport FactsRadioGroup from '../../Parts/Controls/factsRadioGroup';\r\nimport FactsDesignerDummy from '../../Parts/Controls/factsDesignerDummy';\r\nimport FactsTabControl from '../../Parts/Controls/factsTabControl';\r\nimport FactsHtmlEditor from '../../Parts/Controls/factsHtmlEditor';\r\n \r\n\r\nclass PureJSDesignerFactory {\r\n\r\n scaffoldComponent(layout, refData = null) {\r\n let layoutArray = layout;\r\n if (typeof layout === \"string\") layoutArray = GetControlPropertyFromStoreOrRefData(layout, refData);\r\n\r\n if (layoutArray && Array.isArray(layoutArray)) {\r\n return (\r\n layoutArray.map(\r\n (ctrl, index) => {\r\n let currentCtrl = ctrl; \r\n if (typeof ctrl === \"string\") currentCtrl = GetControlPropertyFromStoreOrRefData(ctrl, refData);\r\n\r\n \r\n let ctrlChildren = null;\r\n if (currentCtrl.chld) {\r\n\r\n if (Array.isArray(currentCtrl.chld)) {\r\n ctrlChildren = this.scaffoldComponent(currentCtrl.chld, refData);\r\n }\r\n else if (typeof currentCtrl.chld === \"string\") {\r\n ctrlChildren = GetControlPropertyFromStoreOrRefData(currentCtrl.chld, refData);\r\n\r\n if (Array.isArray(ctrlChildren)) {\r\n ctrlChildren = this.scaffoldComponent(ctrlChildren, refData);\r\n }\r\n }\r\n }\r\n // let typeClassSplit = currentCtrl.type.split(\"$\"); \r\n let controlType = this._getControlTypeFromKey( currentCtrl.type); //typeClassSplit[0]);\r\n // let typeClass = typeClassSplit?.length > 1 ? typeClassSplit[1] : undefined; \r\n let resolvedProps = {};\r\n if (currentCtrl.props && currentCtrl.props?.resolveprops) {\r\n resolvedProps = {\r\n // className : typeClass, \r\n \"resolveprops\": undefined, ...getProcessedArgs(currentCtrl.props, refData, undefined, true), \r\n // \"whenclick\": currentCtrl.props.whenclick \r\n };\r\n }\r\n let styleProps = {style : currentCtrl.props?.style}\r\n if (currentCtrl.props?.style && currentCtrl.props?.resolvestyles) {\r\n styleProps = { \"resolvestyles\": undefined, style: getProcessedArgs(currentCtrl.props.style, refData) };\r\n }\r\n if(styleProps.style?.display === \"none\") styleProps = {style : {...styleProps.style, display: \"inline-block\"}}; \r\n // let ctrlProps = currentCtrl.props ? { key: index, ...currentCtrl.props, ...styleProps } : { key: index, ...styleProps };\r\n let ctrlProps = { type: currentCtrl.type, key: index, ...currentCtrl.props, ...resolvedProps, ...styleProps };\r\n if (ctrlProps.includerefdata) ctrlProps = { refData: refData, ...ctrlProps, \"includerefdata\": undefined };\r\n return (React.createElement(controlType, ctrlProps, ctrlChildren)); \r\n }\r\n )\r\n );\r\n }\r\n }\r\n\r\n _getControlTypeFromKey(elementKey) {\r\n switch (elementKey.toLowerCase()) {\r\n //Charts\r\n case \"echart\": return (FactsDesignerDummy);\r\n case \"entry\": return (FactsEntry);\r\n case \"chbox\": return (FactsCheckbox);\r\n case \"dtpick\": return (FactsDatePicker);\r\n case \"tmpick\": return (FactsTimePicker);\r\n case \"lbl\": return (FactsLabel);\r\n case \"imgr\": return (FactsImage);\r\n case \"canv\": return (FactsCanvas);\r\n // case \"pdf\": return (FactsPDFPreview);\r\n case \"sect\": return (FactsSection);\r\n case \"ftbl\": return (FactsDesignerDummy); //(FactsDataGrid);\r\n case \"expanel\": return (FactsExpansionPanel);\r\n case \"swplist\": return (FactsDesignerDummy); // (FactsSwipeList);\r\n case \"btngroup\": return (ButtonGroup);\r\n case \"hide\": return \"span\";// return (FactsHidden);\r\n case \"btn\": return (FactsButton);\r\n case \"filebtn\": return (FactsFileButton);\r\n case \"icbtn\": return (FactsIconButton);\r\n case \"fab\": return (FactsFAB);\r\n case \"mfab\": return (FactsFABMulti);\r\n case \"icon\": return (Icon);\r\n case \"ddl\": return (FactsDropDown);\r\n case \"lkup\": return (FactsLookup);\r\n case \"dxlist\": return (FactsDesignerDummy); // (FactsDevList);\r\n case \"dxgrid\": return (FactsDesignerDummy);\r\n case \"vlist\": return (FactsVirtualList);\r\n case \"list\": return (FactsList);\r\n case \"click\": return (FactsClickRecognizer);\r\n case \"favatar\": return (FactsAvatar);\r\n case 'xcnt': return (FactsDesignerDummy); // return (FactsExtraContent);\r\n case \"render\": return (FactsRenderer);\r\n case \"tree\": return (FactsTreeview);\r\n case \"qrscan\": return (FactsQRCode);\r\n case \"bcscan\": return (FactsBarCode);\r\n case \"dxsched\": return (FactsDevScheduler);\r\n case \"view\": return (FactsDesignerDummy);\r\n case \"draw\": return (FactsDraw);\r\n case \"slider\": return (FactsSlider);\r\n case \"radio\": return (FactsRadioGroup);\r\n\r\n case \"custom\": return (FactsDesignerDummy);\r\n case \"fragment\": return (FactsDesignerDummy);\r\n case \"tab\": return (FactsDesignerDummy);\r\n case \"htmleditor\": return (FactsHtmlEditor);\r\n default: return elementKey;\r\n }\r\n\r\n }\r\n\r\n}\r\n\r\nexport default PureJSDesignerFactory; ","import React, { Component } from \"react\";\r\n// import store from \"../../../AppRedux/store\";\r\nimport { ExecuteLayoutEventMethods, GetControlPropertyFromStoreOrRefData, getProcessedDynamic } from \"../../../General/commonFunctions\";\r\nimport LayoutManipulator from \"../../../General/layoutManipulator\";\r\nimport { ownStore } from \"../../../AppOwnState/ownState\";\r\nimport PureJSDesignerFactory from \"../../Pages/Factory/pureJSDesignerFactory\";\r\nimport PureJSComponentFactory from \"../../Pages/Factory/pureJSComponentFactory\";\r\n\r\n\r\nclass FactsRenderer extends Component {\r\n constructor(props) {\r\n super(props);\r\n let newLY = this.getCurrentLayout();\r\n\r\n let _propsRedux = null;\r\n if (props.appendprops) _propsRedux = getProcessedDynamic(props.appendprops);\r\n let scaff = null;\r\n if (_propsRedux?.renderer === \"real\")\r\n scaff = new PureJSComponentFactory().scaffoldComponent(newLY, this.props.refData);\r\n else {\r\n let neutralLY = new LayoutManipulator().neutralize(newLY, this.props.layout.replace(\"[\", \"\").replace(\"]\", \"\"));\r\n scaff = new PureJSDesignerFactory().scaffoldComponent(neutralLY, this.props.refData);\r\n }\r\n this.state = {\r\n currentLY: newLY,\r\n scaff: scaff,\r\n propsRedux: _propsRedux\r\n };\r\n }\r\n getCurrentLayout() {\r\n let layt = GetControlPropertyFromStoreOrRefData(this.props.layout);\r\n return layt;\r\n }\r\n\r\n async runAction(e, eventToRun) {\r\n if (e.target.closest(\".c-render\")) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n document.querySelectorAll(\"[data-ctr-class=dz-ctr]\").forEach(t => {\r\n t.classList.remove(\"dz-active\");\r\n });\r\n let validElement = e.target;\r\n if (e.target.getAttribute(\"data-ctr-class\") !== \"dz-ctr\") {\r\n validElement = validElement.closest(\"[data-ctr-class=dz-ctr]\");\r\n }\r\n if (validElement.getAttribute(\"data-ctr-class\") === \"dz-ctr\") {\r\n validElement.classList.add(\"dz-active\");\r\n let dataCtrPath = validElement.getAttribute(\"data-ctr-path\");\r\n let dataCtrChild = validElement.getAttribute(\"data-ctr-child\");\r\n let desProps = {\r\n \"path\": dataCtrPath,\r\n \"name\": validElement.getAttribute(\"data-ctr-title\"),\r\n \"child\": dataCtrPath + (dataCtrChild ? (\".\" + dataCtrChild) : \"\")\r\n };\r\n\r\n await ExecuteLayoutEventMethods(eventToRun, desProps);\r\n }\r\n }\r\n }\r\n renderBoxEvents = () => {\r\n let renderDIV = document.querySelector(\".c-render\");\r\n if (renderDIV) {\r\n renderDIV.onclick = async (e) => this.runAction(e, this.props?.whenclick);\r\n document.onkeyup = async (e) => {\r\n if (this.props?.eventkeys?.includes(e.key) || !this.props?.eventkeys)\r\n ExecuteLayoutEventMethods(this.props?.whendocumentkeyup);\r\n }\r\n renderDIV.ondragover = async (e) => e.preventDefault();\r\n renderDIV.ondrop = async (e) => this.runAction(e, this.props?.whendrop);\r\n }\r\n }\r\n\r\n // whenRenderBoxDragDrop = () => {\r\n // let renderDIV = document.querySelector(\".c-render\");\r\n // if (renderDIV) {\r\n // renderDIV.ondragover = async (e) => {\r\n // e.preventDefault();\r\n // };\r\n\r\n // renderDIV.ondrop = async (e) =>\r\n // this.runAction(e, this.props?.whendrop);\r\n // }\r\n // }\r\n\r\n componentDidMount() {\r\n // document.querySelector(\".dz-control\").ondrag = (e) =>{\r\n // e.dataTransfer.setData(\"text\", e.target.id);\r\n // }; \r\n\r\n this.renderBoxEvents();\r\n // this.whenRenderBoxDragDrop();\r\n\r\n this.mounted = true;\r\n\r\n if (this.props.layout) {\r\n // this.setState({\r\n // currentDS: this.getCurrentDataSet()\r\n // });\r\n this.unsubscribe = ownStore.subscribe(() => {\r\n if (this.mounted) {\r\n\r\n let newLY = this.getCurrentLayout();\r\n // let newLYString = JSON.stringify(newLY),\r\n // currentLYString = JSON.stringify(this.state.currentLY);\r\n let newPropState = getProcessedDynamic(this.props.appendprops);\r\n // if (newLYString !== currentLYString) {\r\n\r\n // let scaff = new PureJSDesignerFactory().scaffoldComponent(neutralLY, this.props.refData);\r\n let scaff = null;\r\n if (newPropState?.renderer === \"real\")\r\n scaff = new PureJSComponentFactory().scaffoldComponent(newLY, this.props.refData);\r\n else {\r\n let neutralLY = new LayoutManipulator().neutralize(newLY, this.props.layout.replace(\"[\", \"\").replace(\"]\", \"\"));\r\n scaff = new PureJSDesignerFactory().scaffoldComponent(neutralLY, this.props.refData);\r\n }\r\n this.setState({\r\n currentLY: newLY,\r\n scaff: scaff\r\n });\r\n\r\n // }\r\n\r\n\r\n if (JSON.stringify(this.state.propsRedux) !== JSON.stringify(newPropState)) {\r\n this.setState({\r\n propsRedux: newPropState\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n }\r\n\r\n componentWillUnmount() {\r\n document.onkeyup = undefined;\r\n this.mounted = false;\r\n if (this.unsubscribe) this.unsubscribe();\r\n }\r\n\r\n\r\n render() {\r\n return (<div className={this.props.className} type=\"page\" data-ctr-title=\"page\"\r\n data-ctr-class=\"dz-ctr\"\r\n data-ctr-child=\"\" data-ctr-path=\"dsLayout.layout\" {...this.state.propsRedux} >\r\n {this.state.scaff}\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default FactsRenderer; ","\r\n// ############# JSON SNIPPET ######################\r\n// {\r\n// \"type\" : \"view\", \r\n// \"props\" : {\r\n// \"contenttype\" : \"json\" (or) \"html\", [OPTIONAL; DEFAULT html]\r\n// \"includerefdata\" : true, [OPTIONAL] \r\n// \"style\" :{}, [OPTIONAL]\r\n// \"content\" : \"jsonArray []\" (or) \"<>html</>\" (or) \"[binding-dataset]\" [REQUIRED]\r\n// }\r\n// }\r\n// ############# JSON SNIPPET ######################\r\n\r\nimport React, { Component } from \"react\";\r\nimport { ownStore } from \"../../../AppOwnState/ownState\";\r\n// import store from \"../../../AppRedux/store\";\r\nimport { GetControlPropertyFromStoreOrRefData } from \"../../../General/commonFunctions\";\r\nimport PureJSComponentFactory from \"../../Pages/Factory/pureJSComponentFactory\";\r\n\r\nclass FactsHTMLView extends Component {\r\n constructor(props) {\r\n super(props);\r\n let contentJSON = props.content;\r\n if (props.binding) contentJSON = GetControlPropertyFromStoreOrRefData(contentJSON, props.refData);\r\n if(typeof contentJSON === \"object\" ) contentJSON = JSON.stringify(contentJSON); \r\n\r\n if (props.contenttype === \"json\") contentJSON = JSON.parse(contentJSON);\r\n\r\n this.state = {\r\n content: contentJSON\r\n }\r\n\r\n }\r\n\r\n ripOffControlSpecificAttributes() {\r\n\r\n const excluded = [\"refData\", \"content\", \"contenttype\"];\r\n return (\r\n Object.keys(this.props)\r\n .filter((t) => !excluded.includes(t))\r\n .reduce((obj, key) => {\r\n obj[key] = this.props[key];\r\n return obj;\r\n }, {}));\r\n\r\n }\r\n\r\n\r\n componentDidMount() {\r\n this.mounted = true;\r\n\r\n this.unsubscribe = ownStore.subscribe(() => {\r\n\r\n if (this.mounted) {\r\n let contentJSON = this.props.content;\r\n if (this.props.binding) contentJSON = GetControlPropertyFromStoreOrRefData(contentJSON, this.props.refData);\r\n if(typeof contentJSON === \"object\" ) contentJSON = JSON.stringify(contentJSON); \r\n\r\n if (JSON.stringify(this.state.content) !== contentJSON) {\r\n if (this.props.contenttype === \"json\" ) contentJSON = JSON.parse(contentJSON);\r\n this.setState({\r\n content: contentJSON\r\n });\r\n }\r\n }\r\n });\r\n\r\n }\r\n\r\n componentWillUnmount() {\r\n this.mounted = false;\r\n if (this.unsubscribe) this.unsubscribe();\r\n }\r\n\r\n\r\n \r\n\r\n render() {\r\n let props = this.ripOffControlSpecificAttributes();\r\n\r\n if (this.props.contenttype === \"json\") {\r\n let scaff = new PureJSComponentFactory().scaffoldComponent(this.state.content);\r\n return (\r\n <>{scaff}</>\r\n );\r\n }\r\n else {\r\n return (\r\n <div dangerouslySetInnerHTML={{__html: this.state.content}} {...props}></div>\r\n );\r\n }\r\n }\r\n\r\n}\r\n\r\nexport default FactsHTMLView;","import React, { Component } from \"react\";\r\n// import { ExecuteLayoutEventMethods } from \"../../../General/commonFunctions\";\r\n// import PureJSComponentFactory from \"../../Pages/Factory/pureJSComponentFactory\";\r\n\r\nclass FactsDragSource extends Component {\r\n\r\n handleDrag = (ev) => {\r\n ev.dataTransfer.setData(\"dragData\", this.data);\r\n }\r\n \r\n ripOffControlSpecificAttributes() {\r\n\r\n const excluded = [\"layout\", \"refData\", \"whenclick\"];\r\n return (Object.keys(this.props)\r\n .filter((t) => !excluded.includes(t))\r\n .reduce((obj, key) => {\r\n obj[key] = this.props[key];\r\n return obj;\r\n }, {}));\r\n\r\n }\r\n\r\n render() {\r\n // let scaff = new PureJSComponentFactory().scaffoldComponent(this.props.layout, this.props.refData);\r\n let newProps = this.ripOffControlSpecificAttributes();\r\n return (\r\n <div {...newProps} draggable={true} onDragStart={ (e) => this.handleDrag(e)}>\r\n {this.props.children}\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default FactsDragSource; ","import { DataGrid } from \"devextreme-react\";\r\nimport {\r\n Column,\r\n Editing,\r\n Grouping,\r\n GroupPanel,\r\n Sorting,\r\n Summary,\r\n TotalItem,\r\n GroupItem,\r\n} from \"devextreme-react/data-grid\";\r\nimport React, { useRef, useEffect, useState } from \"react\";\r\nimport { ownStore } from \"../../../AppOwnState/ownState\";\r\nimport {\r\n ChangePageDataSetState,\r\n ExecuteLayoutEventMethods,\r\n GetControlPropertyFromStoreOrRefData,\r\n} from \"../../../General/commonFunctions\";\r\nimport PureJSComponentFactory from \"../../Pages/Factory/pureJSComponentFactory\";\r\nimport { formatNumber, _formatDateTime } from \"../../../General/funcExecutor\";\r\n\r\nexport const FactsDevGrid = (props) => {\r\n const gridRef = useRef(null);\r\n\r\n const getCurrentDataSet = () => {\r\n let listds = ChangePageDataSetState(props.datasets);\r\n if (!listds) return null;\r\n return listds[props.datasets[0]];\r\n };\r\n\r\n const getCurrentColumns = (data) => {\r\n let columninfo =\r\n props?.columnspecs ??\r\n GetControlPropertyFromStoreOrRefData(\"[\" + props.columninfo?.dset + \"]\");\r\n if (!columninfo) return null;\r\n return columninfo;\r\n };\r\n\r\n const getSummaryItems = (data) => {\r\n let summaryIteminfo = props?.summaryItems;\r\n if (!summaryIteminfo) return null;\r\n return summaryIteminfo;\r\n };\r\n\r\n const getSummaryGroupItems = (data) => {\r\n let summaryGroupIteminfo = props?.summaryGroupItems;\r\n if (!summaryGroupIteminfo) return null;\r\n return summaryGroupIteminfo;\r\n };\r\n\r\n const [autoExpandAll, setAutoExpandAll] = useState(true);\r\n const [data, setData] = useState(getCurrentDataSet());\r\n const [columns, setColumns] = useState(getCurrentColumns(data));\r\n const [summaryItems, setSummaryItems] = useState(getSummaryItems(data));\r\n const [summaryGroupItems, setSummaryGroupItems] = useState(getSummaryGroupItems(data));\r\n const dsRowIndex = GetControlPropertyFromStoreOrRefData(\"[[raw.dsDevGridIndex[pagemenuinfo.doctype]]]\");\r\n // const [focusedRowKey, setFocusedRowKey] = useState(dsRowIndex ?? 0);\r\n const [selectedRows, setSelectedRows] = useState([]);\r\n\r\n useEffect(() => {\r\n let unsubscribe = ownStore.subscribe((storeInfo) => {\r\n if (\r\n props.datasets[0] === storeInfo.dset ||\r\n props.datasets[0] === \"this\" ||\r\n props.watch?.includes(storeInfo.dset)\r\n ) {\r\n let newDS = getCurrentDataSet();\r\n setData(newDS);\r\n }\r\n });\r\n return () => {\r\n if (unsubscribe) unsubscribe();\r\n };\r\n });\r\n\r\n //conditional formatting based on cell\r\n const onCellPrepared = (e) => {\r\n if (e.rowType === \"data\") {\r\n let cellrenderedConditionally = false;\r\n if (props.conditionalFormat) {\r\n props.conditionalFormat.map((t) => {\r\n if (t.fieldName == e.column.Data) {\r\n let flag = GetControlPropertyFromStoreOrRefData(\r\n t.condition,\r\n e.data\r\n );\r\n if (flag) {\r\n cellrenderedConditionally = true;\r\n if (t.appearance) {\r\n Object.assign(e.cellElement.style, t.appearance);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n if (cellrenderedConditionally == false) {\r\n if (e.column.cssClass != \"\") {\r\n e.cellElement.classList.add(e.column.cssClass);\r\n } else if (e.column.appearance) {\r\n Object.assign(e.cellElement.style, e.column.appearance);\r\n }\r\n }\r\n }\r\n };\r\n\r\n //conditional formatting based on row\r\n const onRowPrepared = (e) => {\r\n if (props.conditionalFormat) {\r\n props.conditionalFormat.map((t) => {\r\n if (t?.applyToRow) {\r\n if (t.applyToRow == true) {\r\n let flag = GetControlPropertyFromStoreOrRefData(\r\n t.condition,\r\n e.data\r\n );\r\n if (flag) {\r\n if (t.appearance) {\r\n // for(let apKey of Object.keys(e.columns[i].appearance)){\r\n // e.rowElement.style[apKey] = e.columns[i].appearance[apKey];\r\n // }\r\n Object.assign(e.rowElement.style, t.appearance);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n };\r\n\r\n const handleRowClicked = async (data) => {\r\n if (props?.whenrowclick) {\r\n await ExecuteLayoutEventMethods(props.whenrowclick, data);\r\n }\r\n if (props.events?.onRowClick != null) {\r\n await ExecuteLayoutEventMethods(props.events?.onRowClick, data);\r\n }\r\n };\r\n\r\n const handleRowDblClicked = async (data) => {\r\n if (props?.whenrowdblclick) {\r\n await ExecuteLayoutEventMethods(props.whenrowdblclick, data);\r\n }\r\n if (props.events?.onRowDblClick != null) {\r\n await ExecuteLayoutEventMethods(props.events?.onRowDblClick, data);\r\n }\r\n };\r\n\r\n const onCellClicked = async (e, data) => {\r\n if (!e.event.timeOutHandler)\r\n e.event.timeOutHandler = setTimeout(() => {\r\n e.event.timeOutHandler = null;\r\n }, 300);\r\n if (e.column?.events?.onCellClick != null) {\r\n await ExecuteLayoutEventMethods(e.column.events.onCellClick, data);\r\n }\r\n };\r\n\r\n const onCellDblClicked = async (e, data) => {\r\n clearTimeout(e.event.timeOutHandler);\r\n e.event.timeOutHandler = null;\r\n if (e.column?.events?.onCellDblClick != null) {\r\n await ExecuteLayoutEventMethods(e.column.events.onCellDblClick, data);\r\n e.event.stopImmediatePropagation();\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n ExecuteLayoutEventMethods(props.whenselectionchange, selectedRows);\r\n }, [selectedRows]);\r\n\r\n const handleSelectionChange = async (data) => {\r\n if (data != null) {\r\n setSelectedRows(data.selectedRowsData ?? []);\r\n }\r\n };\r\n\r\n const handleFocusedRowChanged = async (index, data) => {\r\n // if (data != null) {\r\n // setFocusedRowKey(data.propkey);\r\n // }\r\n // await ExecuteLayoutEventMethods([{\r\n // exec: \"setdataset\",\r\n // args: {\r\n // dset:\"[raw.dsDevGridIndex[pagemenuinfo.doctype]]\",\r\n // data: index ?? 0\r\n // }\r\n // }], data);\r\n await ExecuteLayoutEventMethods(props.whenfocusedrowchanged, data);\r\n };\r\n let exportThingy = undefined;\r\n if (props.export)\r\n exportThingy = { ...props.export, formats: Array.isArray(props.export?.formats) ? props.export?.formats : [props.export?.formats ?? \"xlsx\"] }\r\n props = { ...props, export: exportThingy };\r\n const otherprops = { ...props };\r\n delete otherprops.focusedRowIndex;\r\n delete otherprops.keyExpr;\r\n return (\r\n <DataGrid\r\n className=\"factsDevGrid\"\r\n // id=\"gridContainer\"\r\n // ref={gridRef}\r\n dataSource={data}\r\n // defaultColumns={columns}\r\n focusedRowEnabled={true}\r\n // focusedRowKey={focusedRowKey}\r\n keyExpr={otherprops.keyExpr ?? \"propkey\"}\r\n width=\"100%\"\r\n allowColumnReordering={true}\r\n allowColumnResizing={true}\r\n showColumnLines={true}\r\n showRowLines={true}\r\n showBorders={true}\r\n onCellPrepared={(t) => onCellPrepared(t)}\r\n onRowPrepared={onRowPrepared}\r\n onSelectionChanged={\r\n props?.whenselectionchange &&\r\n (\r\n (t) => handleSelectionChange(t)\r\n )\r\n }\r\n onFocusedRowChanged={\r\n props?.whenfocusedrowchanged &&\r\n (\r\n (t) => handleFocusedRowChanged(t?.rowIndex, t?.row?.data)\r\n )\r\n }\r\n onRowDblClick={\r\n (props.events?.onRowDblClicked || props?.whenrowdblclick) &&\r\n (\r\n (t) => handleRowDblClicked(t?.data)\r\n )\r\n }\r\n onRowClick={\r\n (props.events?.onRowClicked || props?.whenrowclick) &&\r\n (\r\n (t) => handleRowClicked(t?.data)\r\n )\r\n }\r\n onCellClick={(t) => onCellClicked(t, t?.data)}\r\n onCellDblClick={(t) => onCellDblClicked(t, t?.data)}\r\n {...otherprops}>\r\n {props?.allowSorting && <Sorting mode=\"multiple\" />}\r\n {props?.editable && (\r\n <Editing\r\n mode=\"cell\"\r\n allowUpdating={props.editable?.canupdate ?? true}\r\n allowAdding={props.editable?.canadd ?? true}\r\n allowDeleting={props.editable?.candelete ?? true}\r\n {...props.editable}\r\n />\r\n )}\r\n <GroupPanel visible={true} />\r\n <Grouping autoExpandAll={autoExpandAll} />\r\n <Summary>\r\n {summaryItems?.map((t, i) => {\r\n return <TotalItem {...t} />;\r\n })}\r\n {summaryGroupItems?.map((t, i) => {\r\n return <GroupItem {...t} />;\r\n })}\r\n </Summary>\r\n {/* <StateStoring enabled={true} type=\"localStorage\" storageKey=\"storage\" savingTimeout={100}/> */}\r\n {columns?.map((t, i) => {\r\n return (\r\n <Column\r\n key={i}\r\n caption={t[props.columninfo?.captionfield]}\r\n dataField={t[props.columninfo?.datafield]}\r\n width={t[props.columninfo?.widthfield]}\r\n {...t}\r\n editCellRender={\r\n t[props.columninfo?.editprops?.chldfield] &&\r\n ((dataInfo) => {\r\n const scaff = new PureJSComponentFactory().scaffoldComponent(\r\n t[props.columninfo?.editprops?.chldfield],\r\n dataInfo\r\n );\r\n if (scaff) return scaff;\r\n else return <span>{dataInfo?.displayValue}</span>;\r\n })\r\n }\r\n cellComponent={(dataInfo) => {\r\n let dv = dataInfo?.data?.displayValue;\r\n if (dv?.toString) dv = dv.toString();\r\n\r\n if (t?.dataType === \"date\" || t?.dataType === \"datetime\") {\r\n dv = _formatDateTime(dv, t?.format);\r\n } else if (t?.dataType === \"number\") {\r\n dv = formatNumber(dv, t?.format);\r\n }\r\n\r\n if (!t?.columnEdit) return <span>{dv}</span>;\r\n\r\n let columnJSON = t?.columnEdit;\r\n return new PureJSComponentFactory().scaffoldComponent(\r\n columnJSON,\r\n dataInfo?.data\r\n );\r\n }}\r\n groupCellRender={(dataInfo) => {\r\n const scaff = new PureJSComponentFactory().scaffoldComponent(\r\n t.groupProps,\r\n dataInfo\r\n );\r\n if (scaff) return scaff;\r\n else return <span>{dataInfo?.value}</span>;\r\n }}\r\n />\r\n );\r\n })}\r\n </DataGrid>\r\n );\r\n};\r\n","import React, { Component } from \"react\";\r\n// import Paper from '@mui/material/Paper';\r\n// import {\r\n// Chart,\r\n// PieSeries,\r\n// Title,\r\n\r\n// } from '@devexpress/dx-react-chart-material-ui';\r\n\r\n// import { Animation } from '@devexpress/dx-react-chart';\r\nimport PieChart, {\r\n Series,\r\n Label,\r\n Connector,\r\n Size,\r\n Export,\r\n Legend,\r\n} from \"devextreme-react/pie-chart\";\r\nimport { Grid } from \"@mui/material\";\r\nimport { GetControlPropertyFromStoreOrRefData } from \"../../../General/commonFunctions\";\r\n// const data = [\r\n// { country: 'Russia', area: 12 },\r\n// { country: 'Canada', area: 7 },\r\n// { country: 'USA', area: 7 },\r\n// { country: 'China', area: 7 },\r\n// { country: 'Brazil', area: 6 },\r\n// { country: 'Australia', area: 5 },\r\n// { country: 'India', area: 2 },\r\n// { country: 'Others', area: 55 },\r\n// { country: 'Canada', area: 7 },\r\n// { country: 'USA', area: 7 },\r\n// { country: 'China', area: 7 },\r\n// { country: 'Brazil', area: 6 },\r\n// { country: 'Australia', area: 5 },\r\n// { country: 'India', area: 2 },\r\n// { country: 'Others', area: 55 }\r\n// ];\r\n\r\nclass PieChartComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n let chartData = {};\r\n console.log(\"The props value here is \", this.props);\r\n chartData = GetControlPropertyFromStoreOrRefData(\r\n this.props.data,\r\n this.props.refData\r\n );\r\n console.log(\"The Chartdata is here is \", chartData);\r\n\r\n this.state = {\r\n chartData: chartData,\r\n // chartTitle: props.chartTitle,\r\n valueField: props.valueField,\r\n argumentField: props.argField,\r\n chartType: props.chartType,\r\n };\r\n console.log(\"The State Data is \", this.state);\r\n\r\n this.pointClickHandler = this.pointClickHandler.bind(this);\r\n this.legendClickHandler = this.legendClickHandler.bind(this);\r\n }\r\n\r\n render() {\r\n // const { data: chartData } = this.state;\r\n // return (\r\n // <Paper style={{ margin: \"1px\" }}>\r\n // {this.state?.chartData ?\r\n // <Chart data={this.state?.chartData}\r\n // onPointClick={this.pointClickHandler}\r\n // onLegendClick={this.legendClickHandler}\r\n // >\r\n // <PieSeries\r\n // valueField={this.state?.valueField}\r\n // argumentField={this.state?.argumentField}>\r\n // {this.props?.labelVisible ?\r\n // <Label visible={this.props?.labelVisible}>\r\n // {this.props?.connectorVisible ?\r\n // <Connector visible={this.props?.connectorVisible} width={1} /> :\r\n // <></>}\r\n // </Label> :\r\n // <></>}\r\n // </PieSeries>\r\n // {this.props?.chartTitle ?\r\n // <Title text={this.state?.chartTitle} /> :\r\n // <></>}\r\n // <Animation />\r\n // {/* <Legend /> */}\r\n // {this.props?.exportEnabled ?\r\n // <Export enabled={this.props?.exportEnabled} /> :\r\n // <></>}\r\n // </Chart> :\r\n // <></>}\r\n // </Paper>\r\n // );\r\n return (\r\n <Grid container={true}>\r\n <Grid item={true} xs={12}>\r\n {this.state?.chartData ? (\r\n <PieChart\r\n id=\"pie\"\r\n {...this.props}\r\n dataSource={this.state?.chartData}\r\n palette={this.props?.palette}\r\n // title={this.state?.chartTitle}\r\n onPointClick={this.pointClickHandler}\r\n onLegendClick={this.legendClickHandler}\r\n >\r\n <Series\r\n valueField={this.state?.valueField}\r\n argumentField={this.state?.argumentField}\r\n type={this.state?.chartType}\r\n >\r\n {this.props?.labelVisible ? (\r\n <Label visible={this.props?.labelVisible}>\r\n {this.props?.connectorVisible ? (\r\n <Connector\r\n visible={this.props?.connectorVisible}\r\n width={1}\r\n />\r\n ) : (\r\n <></>\r\n )}\r\n </Label>\r\n ) : (\r\n <></>\r\n )}\r\n </Series>\r\n {this.props?.legend ? (\r\n <Legend\r\n visible={this.props.legend.legendVisible}\r\n orientation={this.props.legend.legendOrientation}\r\n horizontalAlignment={\r\n this.props.legend.legendHorizontalAlignment\r\n }\r\n verticalAlignment={this.props.legend.legendVerticalAlignment}\r\n itemTextPosition={this.props.legend.legendItemTextPosition}\r\n />\r\n ) : (\r\n <></>\r\n )}\r\n\r\n {this.props?.graphSize ? (\r\n <Size width={this.props.graphSize} />\r\n ) : (\r\n <></>\r\n )}\r\n\r\n {this.props?.exportEnabled ? (\r\n <Export enabled={this.props?.exportEnabled} />\r\n ) : (\r\n <></>\r\n )}\r\n </PieChart>\r\n ) : (\r\n <></>\r\n )}\r\n </Grid>\r\n </Grid>\r\n );\r\n }\r\n\r\n pointClickHandler(e) {\r\n this.toggleVisibility(e.target);\r\n }\r\n\r\n legendClickHandler(e) {\r\n const arg = e.target;\r\n const item = e.component.getAllSeries()[0].getPointsByArg(arg)[0];\r\n\r\n this.toggleVisibility(item);\r\n }\r\n\r\n toggleVisibility(item) {\r\n item.isVisible() ? item.hide() : item.show();\r\n }\r\n}\r\n\r\nexport default PieChartComponent;\r\n","import React, { Component } from 'react';\r\n// import Paper from '@mui/material/Paper';\r\n// import {\r\n// Chart,\r\n// LineSeries,\r\n// SplineSeries,\r\n// ValueAxis,\r\n// ArgumentAxis,\r\n// Legend,\r\n// Title,\r\n// Tooltip\r\n// } from '@devexpress/dx-react-chart-material-ui';\r\n\r\nimport {\r\n Chart,\r\n Series,\r\n ArgumentAxis,\r\n CommonSeriesSettings,\r\n Export,\r\n Legend,\r\n Margin,\r\n Title,\r\n Subtitle,\r\n Tooltip,\r\n Grid,\r\n Size\r\n} from 'devextreme-react/chart';\r\nimport { GetControlPropertyFromStoreOrRefData } from '../../../General/commonFunctions';\r\n\r\n\r\n// const generateData = () => {\r\n// // const data = [\r\n// // { lineValue: 37, argument: 1970},\r\n// // { lineValue: 42.5, argument: 1975},\r\n// // { lineValue: 36, argument: 1980},\r\n// // { lineValue: 28.7, argument: 1985},\r\n// // { lineValue: 16.5, argument: 1990},\r\n// // { lineValue: 33, argument: 1995},\r\n// // { lineValue: 45, argument: 2000},\r\n// // { lineValue: 41, argument: 2005},\r\n// // { lineValue: 17, argument: 2010},\r\n// // ] ; \r\n\r\n// return data;\r\n// };\r\n\r\nclass LineChartComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n let chartData = {}\r\n console.log(\"The props value here is \", this.props)\r\n chartData = GetControlPropertyFromStoreOrRefData(this.props.data, this.props.refData)\r\n console.log(\"The Chartdata is here is \", chartData)\r\n\r\n this.state = {\r\n chartData: chartData,\r\n chartTitle: props.chartTitle,\r\n valueField: props.valueField,\r\n argumentField: props.argField,\r\n chartType: props.chartType\r\n };\r\n console.log(\"The State Data is \", this.state)\r\n }\r\n\r\n render() {\r\n // const { data: chartData } = this.state;\r\n // return (\r\n // <Paper style={{ margin: \"1px\" }}>\r\n // {this.props?.chartData ?\r\n // <Chart\r\n // data={this.state?.chartData}\r\n // >\r\n // <ValueAxis max={25} min={0} />\r\n\r\n // <ArgumentAxis valueMarginsEnabled={this.props.argumentAxis?.valueMarginsEnabled} />\r\n\r\n // <LineSeries\r\n // valueField={this.state?.valueField}\r\n // argumentField={this.state?.argumentField}\r\n // />\r\n // {/* <SplineSeries\r\n // valueField=\"lineValue\"\r\n // argumentField=\"argument\"\r\n // /> */}\r\n // {this.props?.chartTitle ?\r\n // <Title text={this.state?.chartTitle} /> :\r\n // <></>}\r\n // {this.props?.legend ?\r\n // <Legend\r\n // verticalAlignment={this.props.legend?.verticalAlignment}\r\n // horizontalAlignment={this.props.legend?.horizontalAlignment}\r\n // itemTextPosition={this.props.legend?.itemTextPosition}\r\n // /> :\r\n // <></>}\r\n // {this.props?.exportEnabled ?\r\n // <Export enabled={this.props?.exportEnabled} /> :\r\n // <></>}\r\n // {this.props?.enableTooltip ?\r\n // <Tooltip enabled={this.props.enableTooltip} /> :\r\n // <></>}\r\n // </Chart> :\r\n // <></>}\r\n // </Paper>\r\n // );\r\n return (\r\n <Grid container={true}>\r\n <Grid item={true} xs={12}>\r\n {this.state?.chartData ?\r\n <Chart dataSource={this.state?.chartData}>\r\n {\r\n this.state.chartData.map((item) =>\r\n <Series\r\n type={this.state?.chartType} key={item.valueField}\r\n name={item.argumentField}\r\n valueField={item.valueField}\r\n argumentField={item.argumentField}\r\n />)\r\n }\r\n <Margin bottom={20} />\r\n <ArgumentAxis\r\n valueMarginsEnabled={false}\r\n discreteAxisDivisionMode=\"crossLabels\"\r\n >\r\n {this.props?.gridVisible ?\r\n <Grid visible={this.props?.gridVisible} /> :\r\n <></>}\r\n </ArgumentAxis>\r\n {this.props?.legend ?\r\n <Legend orientation={this.props.legend.legendOrientation}\r\n horizontalAlignment={this.props.legend.legendHorizontalAlignment}\r\n verticalAlignment={this.props.legend.legendVerticalAlignment}\r\n itemTextPosition={this.props.legend.legendItemTextPosition}\r\n /> :\r\n <></>}\r\n\r\n {this.props?.graphSize?\r\n <Size width={this.props.graphSize} /> : \r\n <></>}\r\n\r\n {this.props?.exportEnabled ?\r\n <Export enabled={this.props?.exportEnabled} /> :\r\n <></>}\r\n {this.state?.chartTitle ?\r\n <Title text={this.state?.chartTitle} /> :\r\n <></>}\r\n {this.props?.toolTipEnabled ?\r\n <Tooltip enabled={this.props?.toolTipEnabled} /> :\r\n <></>}\r\n </Chart> :\r\n <></>}\r\n </Grid>\r\n </Grid>\r\n );\r\n }\r\n}\r\n\r\nexport default LineChartComponent; ","import React, {Component} from \"react\";\r\n\r\nimport Paper from '@mui/material/Paper';\r\nimport {\r\n Chart,\r\n ArgumentAxis,\r\n ValueAxis,\r\n AreaSeries,\r\n Title,\r\n} from '@devexpress/dx-react-chart-material-ui';\r\nimport { ArgumentScale, Animation } from '@devexpress/dx-react-chart';\r\nimport { scalePoint } from 'd3-scale';\r\n\r\n \r\nconst data = [\r\n { year: '2010', android: 67225, ios: 46598 },\r\n { year: '2011', android: 179873, ios: 90560 },\r\n { year: '2012', android: 310088, ios: 118848 },\r\n { year: '2015', android: 539318, ios: 189924 },\r\n];\r\n\r\nclass AreaChartComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n data,\r\n };\r\n }\r\n\r\n render() {\r\n const { data: chartData } = this.state;\r\n return (\r\n <Paper style={{margin: \"1px\"}}>\r\n <Chart {...this.props}\r\n data={chartData}\r\n \r\n >\r\n <ArgumentScale factory={scalePoint} />\r\n <ArgumentAxis />\r\n <ValueAxis />\r\n\r\n <AreaSeries\r\n name=\"Android\"\r\n valueField=\"android\"\r\n argumentField=\"year\"\r\n />\r\n <AreaSeries\r\n name=\"iOS\"\r\n valueField=\"ios\"\r\n argumentField=\"year\"\r\n />\r\n <Animation />\r\n \r\n <Title\r\n text=\"Worldwide Sales to End Users by OS\"\r\n />\r\n </Chart>\r\n </Paper>\r\n );\r\n }\r\n}\r\n\r\nexport default AreaChartComponent; ","import React, { Component } from \"react\";\r\n// import Paper from '@mui/material/Paper';\r\n// import {\r\n// Chart,\r\n// BarSeries,\r\n// Title,\r\n// ArgumentAxis,\r\n// ValueAxis,\r\n// } from '@devexpress/dx-react-chart-material-ui';\r\n// import {\r\n// Export,\r\n// } from 'devextreme-react/pie-chart';\r\n\r\n// import { Animation } from '@devexpress/dx-react-chart';\r\n\r\n// const data = [\r\n// { year: '1950', population: 2.525 },\r\n// { year: '1960', population: 3.018 },\r\n// { year: '1970', population: 3.682 },\r\n// { year: '1980', population: 4.440 },\r\n// { year: '1990', population: 5.310 },\r\n// { year: '2000', population: 6.127 },\r\n// { year: '2010', population: 6.930 },\r\n// ];\r\nimport {\r\n Chart,\r\n Series,\r\n Export,\r\n CommonSeriesSettings,\r\n Label,\r\n Format,\r\n Tooltip,\r\n} from \"devextreme-react/chart\";\r\nimport { GetControlPropertyFromStoreOrRefData } from \"../../../General/commonFunctions\";\r\nimport { Grid } from \"@mui/material\";\r\n// import { Title } from \"devextreme-react/bar-gauge\";\r\n\r\nclass BarChartComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n let chartData = {};\r\n chartData = GetControlPropertyFromStoreOrRefData(\r\n this.props.data,\r\n this.props.refData\r\n );\r\n this.state = {\r\n chartData: chartData,\r\n // chartTitle: props.chartTitle,\r\n valueField: props.valueField,\r\n argumentField: props.argField,\r\n chartType: props.chartType,\r\n };\r\n }\r\n\r\n render() {\r\n // const { data: chartData } = this.state;\r\n\r\n // return (\r\n // <Paper style={{ margin: \"1px\" }}>\r\n // {this.props?.chartData ?\r\n // <Chart {...this.props}\r\n // data={this.state?.data}\r\n // >\r\n // <ArgumentAxis />\r\n // <ValueAxis max={7} />\r\n\r\n // <BarSeries\r\n // valueField={this.state?.valueField}\r\n // argumentField={this.state?.argumentField} />\r\n // {this.props?.chartTitle ?\r\n // <Title text={this.state?.chartTitle} /> :\r\n // <></>}\r\n // <Animation />\r\n // {this.props?.exportEnabled ?\r\n // <Export enabled={this.props?.exportEnabled} /> :\r\n // <></>}\r\n // </Chart> :\r\n // <></>\r\n // }\r\n // </Paper>\r\n // );\r\n return (\r\n <Grid container={true}>\r\n <Grid item={true} xs={12}>\r\n {this.state?.chartData ? (\r\n <Chart\r\n id=\"chart\"\r\n {...this.props}\r\n dataSource={this.state?.chartData}\r\n palette={this.props?.palette}\r\n >\r\n <CommonSeriesSettings\r\n argumentField={this.state?.argumentField}\r\n valueField={this.state?.valueField}\r\n type={this.state?.chartType}\r\n >\r\n {this.props?.labelVisible ? (\r\n <Label visible={this.props?.labelVisible}>\r\n {this.props?.labelPrecision ? (\r\n <Format\r\n type=\"fixedPoint\"\r\n precision={this.props?.labelPrecision}\r\n />\r\n ) : (\r\n <></>\r\n )}\r\n </Label>\r\n ) : (\r\n <></>\r\n )}\r\n </CommonSeriesSettings>\r\n\r\n {this.props.Series?.map((t) => {\r\n return <Series />;\r\n })}\r\n {this.props?.exportEnabled ? (\r\n <Export enabled={this.props?.exportEnabled} />\r\n ) : (\r\n <></>\r\n )}\r\n {this.props?.toolTipEnabled ? (\r\n <Tooltip enabled={this.props?.toolTipEnabled} />\r\n ) : (\r\n <></>\r\n )}\r\n </Chart>\r\n ) : (\r\n <></>\r\n )}\r\n </Grid>\r\n </Grid>\r\n );\r\n }\r\n}\r\n\r\nexport default BarChartComponent;\r\n","import React, { Component } from \"react\";\r\nimport DateBox from \"devextreme-react/date-box\";\r\nimport {\r\n ExecuteLayoutEventMethods,\r\n GetControlPropertyFromStoreOrRefData,\r\n} from \"../../../General/commonFunctions\";\r\n\r\nimport { ownStore } from \"../../../AppOwnState/ownState\";\r\nimport moment from \"moment-timezone\";\r\nimport { globalTimeZone } from \"../../../General/globals\";\r\n\r\nclass FactsDevDatePicker extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.now = new Date();\r\n\r\n const timeZoneFromServer = globalTimeZone;\r\n moment.tz.setDefault(timeZoneFromServer);\r\n\r\n this.rowIndex =\r\n GetControlPropertyFromStoreOrRefData(props.rowindex, props.refData) ?? \"\";\r\n\r\n let dateValueFromState = null; //GetControlPropertyFromStoreOrRefData(\"[\" + props.dset + \".\" + (this.rowIndex?? \"\") + \".\" + props.bind + \"]\");\r\n\r\n if (this.props.dset && this.props.bind) {\r\n dateValueFromState = GetControlPropertyFromStoreOrRefData(\r\n \"[\" +\r\n props.dset +\r\n \".\" +\r\n (this.rowIndex ?? \"\") +\r\n \".\" +\r\n props.bind +\r\n \"]\",\r\n props.refData\r\n );\r\n }\r\n\r\n this.state = {\r\n dateValue:\r\n dateValueFromState === null || dateValueFromState === undefined\r\n ? null\r\n : dateValueFromState,\r\n };\r\n this.finalValue =\r\n dateValueFromState === null || dateValueFromState === undefined\r\n ? \"\"\r\n : dateValueFromState;\r\n }\r\n\r\n componentDidMount() {\r\n this.mounted = true;\r\n this.unsubscribe = ownStore.subscribe((storeInfo) => {\r\n if (this.mounted) {\r\n if (\r\n [storeInfo.dset, \"raw\"].includes(this.props.dset) &&\r\n (storeInfo.field ?? this.props.bind) === this.props.bind\r\n ) {\r\n // if(storeInfo.dset === \"this\" || storeInfo.dset === this.props.dset) {\r\n let newState = GetControlPropertyFromStoreOrRefData(\r\n \"[\" +\r\n this.props.dset +\r\n \".\" +\r\n (this.rowIndex ?? \"\") +\r\n \".\" +\r\n this.props.bind +\r\n \"]\",\r\n this.props.refData\r\n );\r\n\r\n if (this.finalValue !== newState) {\r\n if (newState === null) newState = \"\";\r\n this.finalValue = newState;\r\n\r\n this.setState({\r\n dateValue: newState,\r\n });\r\n }\r\n // }\r\n }\r\n }\r\n });\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.unsubscribe) this.unsubscribe();\r\n this.mounted = false;\r\n }\r\n\r\n handleOnChange(date) {\r\n // console.log(moment(date).format('YYYY-MM-DD HH:mm:ss'));\r\n // if(date!=null || date!=undefined || date!=\"\") {\r\n this.setState(\r\n {\r\n dateValue: date.value\r\n },\r\n async () => {\r\n await this.changeBinding();\r\n await ExecuteLayoutEventMethods(this.props.whenchange, {\r\n ...this.props.refData,\r\n ...this.state,\r\n });\r\n }\r\n );\r\n // }\r\n }\r\n\r\n async changeBinding() {\r\n if (this.props.dset && this.props.bind) {\r\n if (this.rowIndex !== \"\") {\r\n let rowData = GetControlPropertyFromStoreOrRefData(\r\n \"[\" + this.props.dset + \".\" + this.rowIndex + \"]\",\r\n this.props.refData\r\n );\r\n await ExecuteLayoutEventMethods([\r\n {\r\n exec: \"mergedatasetarray\",\r\n args: {\r\n noprocess: true,\r\n dset: this.props.dset,\r\n index: parseInt(this.rowIndex),\r\n data: {\r\n ...rowData,\r\n [this.props.bind]: this.state.dateValue,\r\n },\r\n },\r\n },\r\n ]);\r\n } else {\r\n await ExecuteLayoutEventMethods([\r\n {\r\n exec: \"setdatasetfield\",\r\n args: {\r\n dset: this.props.dset,\r\n fieldname: this.props.bind,\r\n data: this.state.dateValue,\r\n },\r\n },\r\n ]);\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <div>\r\n <div className=\"dx-fieldset\">\r\n <div className=\"dx-field\">\r\n <DateBox\r\n \r\n {...this.props}\r\n value={this.state.dateValue}\r\n dateSerializationFormat=\"yyyy-MM-ddTHH:mm:ss\"\r\n onValueChanged={(date) =>this.handleOnChange(date)}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default FactsDevDatePicker;\r\n","import React, { Component } from \"react\";\r\nimport Lookup from 'devextreme-react/lookup';\r\nimport { ExecuteLayoutEventMethods, GetControlPropertyFromStoreOrRefData } from \"../../../General/commonFunctions\";\r\nimport { ownStore } from \"../../../AppOwnState/ownState\";\r\n\r\n\r\nclass FactsDevLookup extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.rowIndex = GetControlPropertyFromStoreOrRefData(props.rowindex, props.refData) ?? \"\";\r\n\r\n let _listData = ownStore.getState(this.props.listdset);\r\n\r\n let selectValueFromState = props.initialvalue;\r\n if (this.props.dset && this.props.bind) {\r\n selectValueFromState = GetControlPropertyFromStoreOrRefData(\"[\" + props.dset + \".\" +\r\n (this.rowIndex === \"\" ? \"\" : (this.rowIndex + \".\"))\r\n + props.bind + \"]\", props.refData);\r\n }\r\n this.state = {\r\n selectValue: this.emptyIfValueNotValid(selectValueFromState),\r\n listData: _listData\r\n }\r\n\r\n }\r\n\r\n emptyIfValueNotValid(value) {\r\n if (this.props?.SelectProps?.multiple && !Array.isArray(value)) return [];\r\n else return value;\r\n }\r\n\r\n componentDidMount() {\r\n this.mounted = true;\r\n\r\n this.unsubscribe = ownStore.subscribe((storeInfo) => {\r\n if (this.mounted) {\r\n if ([storeInfo.dset, \"raw\"].includes(this.props.dset) &&\r\n (storeInfo.field ?? this.props.bind) === this.props.bind) {\r\n\r\n if (this.props.dset && this.props.bind) {\r\n let newState = GetControlPropertyFromStoreOrRefData(\"[\" + this.props.dset + \".\" +\r\n (this.rowIndex === \"\" ? \"\" : (this.rowIndex + \".\"))\r\n + this.props.bind + \"]\", this.props.refData);\r\n\r\n if (this.state.selectValue !== newState) {\r\n this.setState({\r\n selectValue: this.emptyIfValueNotValid(newState)\r\n });\r\n\r\n }\r\n }\r\n }\r\n\r\n if (storeInfo.dset === \"this\" || storeInfo.dset === this.props.listdset) {\r\n let newList = ownStore.getState(this.props.listdset);\r\n let thisListString = JSON.stringify(this.state.listData);\r\n let newListString = JSON.stringify(newList);\r\n if (thisListString !== newListString) {\r\n this.setState({\r\n listData: newList\r\n });\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.unsubscribe) this.unsubscribe();\r\n this.mounted = false;\r\n\r\n }\r\n\r\n async saveCurrentTextToDataset() {\r\n if (this.props.dset && this.props.bind) {\r\n if (this.rowIndex !== \"\") {\r\n let rowData = GetControlPropertyFromStoreOrRefData(\"[\" + this.props.dset + \".\" + this.rowIndex + \"]\", this.props.refData);\r\n\r\n await ExecuteLayoutEventMethods([\r\n {\r\n exec: \"mergedatasetarray\",\r\n args: {\r\n noprocess: true,\r\n dset: this.props.dset,\r\n index: parseInt(this.rowIndex),\r\n data:\r\n {\r\n ...rowData,\r\n [this.props.bind]: this.state.selectValue\r\n }\r\n }\r\n }]);\r\n }\r\n else {\r\n await ExecuteLayoutEventMethods([\r\n\r\n {\r\n exec: \"setdatasetfield\",\r\n args: {\r\n noprocess: true,\r\n dset: this.props.dset,\r\n fieldname: this.props.bind,\r\n data: this.state.selectValue\r\n }\r\n }\r\n ]);\r\n }\r\n }\r\n\r\n }\r\n\r\n async runCustomOnChangeEvents() {\r\n\r\n await this.saveCurrentTextToDataset();\r\n await ExecuteLayoutEventMethods(this.props.whenchange, this.state);\r\n\r\n }\r\n async handleOnChange(e) {\r\n this.setState({\r\n selectValue: e.target.value\r\n }, () => {\r\n this.runCustomOnChangeEvents();\r\n });\r\n }\r\n\r\n async handleValueChange() {\r\n }\r\n\r\n\r\n async handleOnClick(item) {\r\n await ExecuteLayoutEventMethods(this.props.whenitemclick, item);\r\n }\r\n\r\n render() {\r\n return (\r\n <div>\r\n <Lookup\r\n dataSource={this.state.listData}\r\n displayExpr={this.props.textfield}\r\n valueExpr={this.props.valuefield}\r\n {...this.props}\r\n onValueChanged={this.handleValueChange}\r\n >\r\n </Lookup>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default FactsDevLookup;\r\n","import React, { Component } from \"react\";\r\nimport {\r\n CircularGauge,\r\n RangeContainer,\r\n Range,\r\n} from 'devextreme-react/circular-gauge';\r\n\r\nclass FactsDevCircularGauge extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.otherprops = { ...this.props };\r\n delete this.otherprops.rangeContainer;\r\n }\r\n render() {\r\n return (\r\n <CircularGauge\r\n id=\"gauge\"\r\n {...this.otherprops}>\r\n <RangeContainer {...this.props.rangeContainer}>\r\n {this.props.rangeContainer.range.map((r, i) => {\r\n return <Range {...r} />\r\n })}\r\n </RangeContainer>\r\n </CircularGauge>\r\n );\r\n }\r\n}\r\nexport default FactsDevCircularGauge;\r\n","import React, { useRef, useEffect, useState } from \"react\";\r\nimport Gantt, {\r\n Tasks,\r\n Dependencies,\r\n Resources,\r\n ResourceAssignments,\r\n Column,\r\n Editing,\r\n Toolbar,\r\n Item,\r\n Validation,\r\n FilterRow,\r\n Sorting,\r\n HeaderFilter,\r\n} from \"devextreme-react/gantt\";\r\nimport {\r\n ChangePageDataSetState,\r\n GetControlPropertyFromStoreOrRefData,\r\n} from \"../../../General/commonFunctions\";\r\nimport { ownStore } from \"../../../AppOwnState/ownState\";\r\n\r\nexport const FactsDevGanttChart = (props) => {\r\n const getCurrentDataSet = () => {\r\n let listds = GetControlPropertyFromStoreOrRefData(\r\n \"[\" + props.datasets + \"]\"\r\n );\r\n if (!listds) return null;\r\n return listds;\r\n };\r\n const [tasks, setData] = useState(getCurrentDataSet());\r\n // const tasks = GetControlPropertyFromStoreOrRefData(props.datasets);\r\n // const tasks = GetControlPropertyFromStoreOrRefData(\"[\" + props.datasets + \"]\");\r\n const dependencies = GetControlPropertyFromStoreOrRefData(\r\n \"[\" + props.dependencies + \"]\"\r\n );\r\n const resources = GetControlPropertyFromStoreOrRefData(\r\n \"[\" + props.resources + \"]\"\r\n );\r\n const resourceAssignments = GetControlPropertyFromStoreOrRefData(\r\n \"[\" + props.resourceAssignments + \"]\"\r\n );\r\n const otherprops = { ...props };\r\n delete otherprops.dependencies;\r\n delete otherprops.resources;\r\n delete otherprops.resourceAssignments;\r\n useEffect(() => {\r\n let unsubscribe = ownStore.subscribe((storeInfo) => {\r\n if (\r\n props.datasets[0] === storeInfo.dset ||\r\n props.datasets[0] === \"this\" ||\r\n props.watch?.includes(storeInfo.dset)\r\n ) {\r\n let newDS = getCurrentDataSet();\r\n setData(newDS);\r\n }\r\n });\r\n return () => {\r\n if (unsubscribe) unsubscribe();\r\n };\r\n });\r\n\r\n return (\r\n <Gantt\r\n {...otherprops}\r\n taskListWidth={props?.taskListWidth}\r\n scaleType={props?.scaleType}\r\n height={props?.height}\r\n showResources={props?.showResources}\r\n showDependencies={props?.showDependencies}\r\n showRowLines={props?.showRowLines}\r\n taskTitlePosition={props?.taskTitlePosition}\r\n >\r\n <Tasks dataSource={tasks} />\r\n <Dependencies dataSource={dependencies} />\r\n <Resources dataSource={resources} />\r\n <ResourceAssignments dataSource={resourceAssignments} />\r\n\r\n <Toolbar>\r\n {props?.toolbarparams?.allowUndo == true ? <Item name=\"undo\" /> : <></>}\r\n {props?.toolbarparams?.allowRedo == true ? <Item name=\"redo\" /> : <></>}\r\n <Item name=\"separator\" />\r\n {props?.toolbarparams?.allowCollapseAll == true ? (\r\n <Item name=\"collapseAll\" />\r\n ) : (\r\n <></>\r\n )}\r\n {props?.toolbarparams?.allowExpandAll == true ? (\r\n <Item name=\"expandAll\" />\r\n ) : (\r\n <></>\r\n )}\r\n <Item name=\"separator\" />\r\n {props?.toolbarparams?.allowAddTask == true ? (\r\n <Item name=\"addTask\" />\r\n ) : (\r\n <></>\r\n )}\r\n {props?.toolbarparams?.allowDeleteTask == true ? (\r\n <Item name=\"deleteTask\" />\r\n ) : (\r\n <></>\r\n )}\r\n <Item name=\"separator\" />\r\n {props?.toolbarparams?.allowZoomIn == true ? (\r\n <Item name=\"zoomIn\" />\r\n ) : (\r\n <></>\r\n )}\r\n {props?.toolbarparams?.allowZoomOut == true ? (\r\n <Item name=\"zoomOut\" />\r\n ) : (\r\n <></>\r\n )}\r\n </Toolbar>\r\n\r\n {props.columns?.map((t, i) => {\r\n return (\r\n <Column\r\n dataField={t?.dataField}\r\n caption={t?.caption}\r\n width={t?.width}\r\n allowSorting={t?.allowSorting}\r\n />\r\n );\r\n })}\r\n\r\n {props?.allowAutoUpdateParentTasks == true ? (\r\n <Validation autoUpdateParentTasks />\r\n ) : (\r\n <></>\r\n )}\r\n {props?.allowEdit == true ? <Editing enabled /> : <></>}\r\n {props?.allowFilter == true ? <FilterRow visible /> : <></>}\r\n {props?.allowHeaderFilter == true ? <HeaderFilter visible /> : <></>}\r\n {props?.sortingMode ? (\r\n <Sorting mode={props.sortingMode ?? \"single\"}></Sorting>\r\n ) : (\r\n <></>\r\n )}\r\n </Gantt>\r\n );\r\n};\r\n","import React, { Component } from \"react\";\r\nimport {\r\n LinearGauge,\r\n RangeContainer,\r\n Range,\r\n} from \"devextreme-react/linear-gauge\";\r\n\r\nclass FactsDevLinearGauge extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.otherprops = { ...this.props };\r\n delete this.otherprops.rangeContainer;\r\n }\r\n render() {\r\n return (\r\n <LinearGauge id=\"gauge\" {...this.otherprops}>\r\n <RangeContainer {...this.props.rangeContainer}>\r\n {this.props.rangeContainer.range.map((r, i) => {\r\n return <Range {...r} />;\r\n })}\r\n </RangeContainer>\r\n </LinearGauge>\r\n );\r\n }\r\n}\r\nexport default FactsDevLinearGauge;","import React, { Component } from \"react\";\r\nimport { BarGauge } from \"devextreme-react/bar-gauge\";\r\nimport { CheckBox } from \"devextreme-react/check-box\";\r\nimport { GetControlPropertyFromStoreOrRefData } from \"../../../General/commonFunctions\";\r\n\r\nclass FactsDevBarGauge extends Component {\r\n constructor(props) {\r\n super(props);\r\n let gaugeData = {};\r\n gaugeData = GetControlPropertyFromStoreOrRefData(\r\n this.props.data,\r\n this.props.refData\r\n );\r\n this.state = {\r\n gaugeData: gaugeData,\r\n gaugeDataActivity: gaugeData.map((obj) =>\r\n obj.active ? obj.active : true\r\n ),\r\n values: gaugeData.map((obj) => obj.value),\r\n };\r\n\r\n this.getValueChangedHandler = (index) => (e) => {\r\n const gaugeDataActivity = this.state.gaugeDataActivity.slice();\r\n gaugeDataActivity[index] = e.value;\r\n this.setState({\r\n gaugeDataActivity,\r\n values: gaugeData\r\n .map((obj, i) => (gaugeDataActivity[i] ? obj.value : null))\r\n .filter((c) => c !== null),\r\n });\r\n };\r\n }\r\n\r\n render() {\r\n return (\r\n <div>\r\n <div id=\"bar-gauge\">\r\n <BarGauge\r\n id=\"gauge\"\r\n {...this.props}\r\n values={this.state.values}\r\n ></BarGauge>\r\n </div>\r\n {this.props?.checkboxPanelEnabled ? (\r\n <div id=\"panel\" style={this.props?.panelStyle}>\r\n {this.state.gaugeDataActivity.map((status, i) => (\r\n <CheckBox\r\n key={i}\r\n text={this.state.gaugeData[i].name}\r\n value={status}\r\n onValueChanged={this.getValueChangedHandler(i)}\r\n ></CheckBox>\r\n ))}\r\n </div>\r\n ) : (\r\n <></>\r\n )}\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default FactsDevBarGauge;\r\n","import React, { Component } from \"react\";\r\nimport NumberBox from \"devextreme-react/number-box\";\r\nimport {\r\n ExecuteLayoutEventMethods,\r\n GetControlPropertyFromStoreOrRefData,\r\n} from \"../../../General/commonFunctions\";\r\nimport { ownStore } from \"../../../AppOwnState/ownState\";\r\n\r\nclass FactsDevNumberBox extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.rowIndex =\r\n GetControlPropertyFromStoreOrRefData(props.rowindex, props.refData) ?? \"\";\r\n\r\n let numberValueFromState = props.initialvalue;\r\n\r\n if (this.props.dset && this.props.bind) {\r\n numberValueFromState = GetControlPropertyFromStoreOrRefData(\r\n \"[\" +\r\n props.dset +\r\n \".\" +\r\n (this.rowIndex === \"\" ? \"\" : this.rowIndex + \".\") +\r\n props.bind +\r\n \"]\",\r\n props.refData\r\n );\r\n }\r\n this.state = {\r\n numberValue: numberValueFromState === null ? \"\" : numberValueFromState,\r\n };\r\n this.finalValue = numberValueFromState === null ? \"\" : numberValueFromState;\r\n this.isChangeDirty = false;\r\n this.isBlurDirty = false;\r\n }\r\n\r\n componentDidMount() {\r\n this.mounted = true;\r\n this.unsubscribe = ownStore.subscribe((storeInfo) => {\r\n if (this.mounted) {\r\n if (\r\n [storeInfo.dset, \"raw\"].includes(this.props.dset) &&\r\n (storeInfo.field ?? this.props.bind) === this.props.bind\r\n ) {\r\n if (this.props.dset && this.props.bind) {\r\n let newState = GetControlPropertyFromStoreOrRefData(\r\n \"[\" +\r\n this.props.dset +\r\n \".\" +\r\n (this.rowIndex === \"\" ? \"\" : this.rowIndex + \".\") +\r\n this.props.bind +\r\n \"]\",\r\n this.props.refData\r\n );\r\n\r\n if (this.finalValue !== newState) {\r\n if (newState === null) newState = \"\";\r\n this.finalValue = newState;\r\n\r\n this.setState({\r\n numberValue: newState,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.unsubscribe) this.unsubscribe();\r\n this.mounted = false;\r\n }\r\n\r\n handleOnValueOnChange(e) {\r\n this.setState(\r\n {\r\n numberValue: e.value,\r\n },\r\n async () => {\r\n await this.changeBinding();\r\n await ExecuteLayoutEventMethods(this.props.whenchange, {\r\n ...this.props.refData,\r\n ...this.state,\r\n });\r\n }\r\n );\r\n // }\r\n }\r\n\r\n async changeBinding() {\r\n if (this.props.dset && this.props.bind) {\r\n if (this.rowIndex !== \"\") {\r\n let rowData = GetControlPropertyFromStoreOrRefData(\r\n \"[\" + this.props.dset + \".\" + this.rowIndex + \"]\",\r\n this.props.refData\r\n );\r\n await ExecuteLayoutEventMethods([\r\n {\r\n exec: \"mergedatasetarray\",\r\n args: {\r\n noprocess: true,\r\n dset: this.props.dset,\r\n index: parseInt(this.rowIndex),\r\n data: {\r\n ...rowData,\r\n [this.props.bind]: this.state.numberValue,\r\n },\r\n },\r\n },\r\n ]);\r\n } else {\r\n await ExecuteLayoutEventMethods([\r\n {\r\n exec: \"setdatasetfield\",\r\n args: {\r\n dset: this.props.dset,\r\n fieldname: this.props.bind,\r\n data: this.state.numberValue,\r\n },\r\n },\r\n ]);\r\n }\r\n }\r\n }\r\n handleOnFocusOut = async (data) => {\r\n await ExecuteLayoutEventMethods(this.props?.onFocusOut, data);\r\n };\r\n\r\n handleOnFocusIn = async (data) => {\r\n await ExecuteLayoutEventMethods(this.props?.onFocusIn, data);\r\n };\r\n\r\n handleOnChange = async (data) => {\r\n await ExecuteLayoutEventMethods(this.props?.onChange, data);\r\n };\r\n\r\n render() {\r\n return (\r\n <div>\r\n <div className=\"dx-fieldset\">\r\n <div className=\"dx-field\">\r\n <NumberBox\r\n {...this.props}\r\n value={this.state?.numberValue}\r\n onValueChanged={(e) => this.handleOnValueOnChange(e)}\r\n onFocusOut={(e) => this.handleOnFocusOut(e)}\r\n onFocusIn={(e) => this.handleOnFocusIn(e)}\r\n onChange={(e) => this.handleOnChange(e)}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default FactsDevNumberBox;\r\n","import React from 'react';\r\n\r\nimport { ButtonGroup, Icon } from '@mui/material';\r\n\r\nimport FactsDataGrid from '../../Parts/ControlsERP/factsDataGrid';\r\n\r\nimport FactsExpansionPanel from '../../Parts/Controls/factsExpansionPanel';\r\nimport FactsSwipeList from '../../Parts/Controls/factsSwipeList';\r\nimport FactsButton from '../../Parts/Controls/factsButton';\r\nimport FactsEntry from '../../Parts/Controls/factsEntry';\r\nimport FactsFAB from '../../Parts/Controls/factsFAB';\r\nimport FactsDropDown from '../../Parts/Controls/factsDropDown';\r\nimport FactsVirtualList from '../../Parts/Controls/factsVirtualList';\r\nimport { GetControlPropertyFromStoreOrRefData, getProcessedArgs } from '../../../General/commonFunctions';\r\nimport FactsList from '../../Parts/Controls/factsList';\r\n\r\nimport FactsLabel from '../../Parts/Controls/factsLabel';\r\nimport FactsIconButton from '../../Parts/Controls/factsIconButton';\r\nimport FactsDatePicker from '../../Parts/Controls/factsDatePicker';\r\nimport FactsLookup from '../../Parts/Controls/factsLookup';\r\nimport FactsTimePicker from '../../Parts/Controls/factsTimePicker';\r\nimport FactsDevList from '../../Parts/Controls/factsDevList';\r\nimport FactsClickRecognizer from '../../Parts/Controls/factsClickRecognizer';\r\nimport FactsFileButton from '../../Parts/Controls/factsFileButton';\r\nimport FactsImage from '../../Parts/Controls/factsImage';\r\nimport FactsAvatar from '../../Parts/Controls/factsAvatar';\r\nimport FactsHidden from '../../Parts/Controls/factsHidden';\r\n// import FactsPDFPreview from '../../Parts/Controls/factsPDFPreview';\r\nimport FactsERPChart from '../../Parts/ControlsERP/factsERPChart';\r\nimport FactsCanvas from '../../Parts/Controls/factsCanvas';\r\nimport FactsExtraContent from '../../Parts/Controls/factsExtraContent';\r\nimport FactsRenderer from '../../Parts/Controls/factsRenderer';\r\nimport FactsCheckbox from '../../Parts/Controls/factsCheckbox';\r\nimport FactsFABMulti from '../../Parts/Controls/factsFABMulti';\r\nimport FactsSection from '../../Parts/Controls/factsSection';\r\nimport FactsTreeview from '../../Parts/Controls/factsTreeview';\r\nimport FactsQRCode from '../../Parts/Controls/factsQRCode';\r\nimport FactsBarCode from '../../Parts/Controls/factsBarCode';\r\nimport FactsDevScheduler from '../../Parts/Controls/factsDevScheduler';\r\nimport FactsHTMLView from '../../Parts/Controls/factsHTMLView';\r\nimport FactsDraw from '../../Parts/Controls/factsDraw';\r\nimport FactsSlider from '../../Parts/Controls/factsSlider';\r\nimport FactsRadioGroup from '../../Parts/Controls/factsRadioGroup';\r\nimport FactsDragSource from '../../Parts/Controls/factsDragSource';\r\nimport { FactsDevGrid } from '../../Parts/Controls/factsDevGrid';\r\nimport FactsTabControl from '../../Parts/Controls/factsTabControl';\r\nimport FactsHtmlEditor from '../../Parts/Controls/factsHtmlEditor';\r\nimport PieChartComponent from '../../Parts/Charts/pieChartComponent';\r\nimport LineChartComponent from '../../Parts/Charts/lineChartComponent';\r\nimport AreaChartComponent from '../../Parts/Charts/areaChartComponent';\r\nimport BarChartComponent from '../../Parts/Charts/barChartComponent';\r\nimport FactsDevDatePicker from '../../Parts/Controls/factsDevDatePicker';\r\nimport FactsDevLookup from '../../Parts/Controls/factsDevLookup';\r\nimport FactsDevCircularGauge from '../../Parts/Controls/factsDevCircularGauge';\r\nimport { FactsDevGanttChart } from '../../Parts/Controls/factsDevGanttChart';\r\nimport FactsDevLinearGauge from '../../Parts/Controls/factsDevLinearGauge';\r\nimport FactsDevBarGauge from '../../Parts/Controls/factsDevBarGauge';\r\nimport FactsDevNumberBox from '../../Parts/Controls/factsDevNumberBox';\r\n\r\n// import { Suspense } from 'react';\r\n// const FactsList = React.lazy(() => import('../../Parts/Controls/factsList'));\r\n// const FactsVirtualList = React.lazy(() => import('../../Parts/Controls/factsVirtualList'));\r\n// const FactsDropDown = React.lazy(() => import( '../../Parts/Controls/factsDropDown'));\r\n// const FactsFAB = React.lazy(() => import( '../../Parts/Controls/factsFAB'));\r\n// const FactsDataGrid = React.lazy(() => import('../../Parts/ControlsERP/factsDataGrid'));\r\n \r\n// const FactsExpansionPanel =React.lazy(() => import( '../../Parts/Controls/factsExpansionPanel'));\r\n// const FactsSwipeList = React.lazy(() => import('../../Parts/Controls/factsSwipeList'));\r\n// const FactsButton =React.lazy(() => import( '../../Parts/Controls/factsButton'));\r\n// const FactsEntry = React.lazy(() => import('../../Parts/Controls/factsEntry')); \r\n// const FactsLabel = React.lazy(() => import( '../../Parts/Controls/factsLabel'));\r\n// const FactsIconButton = React.lazy(() => import( '../../Parts/Controls/factsIconButton'));\r\n// const FactsDatePicker = React.lazy(() => import( '../../Parts/Controls/factsDatePicker'));\r\n// const FactsLookup = React.lazy(() => import( '../../Parts/Controls/factsLookup'));\r\n// const FactsTimePicker = React.lazy(() => import( '../../Parts/Controls/factsTimePicker'));\r\n// const FactsDevList = React.lazy(() => import( '../../Parts/Controls/factsDevList'));\r\n// const FactsClickRecognizer = React.lazy(() => import( '../../Parts/Controls/factsClickRecognizer'));\r\n// const FactsFileButton = React.lazy(() => import( '../../Parts/Controls/factsFileButton'));\r\n// const FactsImage = React.lazy(() => import( '../../Parts/Controls/factsImage'));\r\n// const FactsAvatar = React.lazy(() => import( '../../Parts/Controls/factsAvatar'));\r\n// const FactsHidden = React.lazy(() => import( '../../Parts/Controls/factsHidden'));\r\n// const FactsERPChart = React.lazy(() => import( '../../Parts/ControlsERP/factsERPChart'));\r\n// const FactsCanvas = React.lazy(() => import('../../Parts/Controls/factsCanvas'));\r\n// const FactsExtraContent = React.lazy(() => import('../../Parts/Controls/factsExtraContent'));\r\n// const FactsRenderer = React.lazy(() => import( '../../Parts/Controls/factsRenderer'));\r\n// const FactsCheckbox = React.lazy(() => import('../../Parts/Controls/factsCheckbox'));\r\n// const FactsFABMulti = React.lazy(() => import('../../Parts/Controls/factsFABMulti'));\r\n// const FactsSection = React.lazy(() => import('../../Parts/Controls/factsSection'));\r\n// const FactsTreeview = React.lazy(() => import('../../Parts/Controls/factsTreeview'));\r\n// const FactsQRCode = React.lazy(() => import('../../Parts/Controls/factsQRCode'));\r\n// const FactsBarCode = React.lazy(() => import('../../Parts/Controls/factsBarCode'));\r\n\r\nclass PureJSComponentFactory {\r\n\r\n scaffoldComponent(layout, refData = null, indexPrefix = \"\", scaffID = \"\") {\r\n let layoutArray = layout;\r\n if (typeof layout === \"string\") layoutArray = GetControlPropertyFromStoreOrRefData(layout, refData);\r\n\r\n if (layoutArray && Array.isArray(layoutArray)) {\r\n return (\r\n layoutArray.map(\r\n (ctrl, index) => {\r\n let newIndex = indexPrefix.toString() + index.toString(); \r\n let currentCtrl = ctrl; \r\n if (typeof ctrl === \"string\") currentCtrl = GetControlPropertyFromStoreOrRefData(ctrl, refData);\r\n\r\n \r\n let ctrlChildren = null;\r\n if (currentCtrl?.chld) {\r\n\r\n if (Array.isArray(currentCtrl.chld)) {\r\n ctrlChildren = this.scaffoldComponent(currentCtrl.chld, refData, newIndex);\r\n }\r\n else if (typeof currentCtrl.chld === \"string\") {\r\n ctrlChildren = GetControlPropertyFromStoreOrRefData(currentCtrl.chld, refData);\r\n\r\n if (Array.isArray(ctrlChildren)) {\r\n ctrlChildren = this.scaffoldComponent(ctrlChildren, refData, newIndex);\r\n }\r\n }\r\n }\r\n if(!currentCtrl) return (<></>);\r\n // let typeClassSplit = currentCtrl.type.split(\"$\"); \r\n let controlType = this._getControlTypeFromKey( currentCtrl.type); //typeClassSplit[0]);\r\n // let typeClass = typeClassSplit?.length > 1 ? typeClassSplit[1] : undefined; \r\n let resolvedProps = {};\r\n if (currentCtrl.props && currentCtrl.props?.resolveprops) {\r\n resolvedProps = {\r\n // className : typeClass, \r\n \"resolveprops\": undefined, ...getProcessedArgs(currentCtrl.props, refData, undefined, true), \r\n ...currentCtrl.props.whenclick ? {\"whenclick\": currentCtrl.props.whenclick} : {}\r\n }; //! Setting whenclick to original must be to avoid the processing of args inside it. But why? Why other events are not considered?? \r\n }\r\n\r\n let styleProps = {};\r\n if (currentCtrl.props?.style && currentCtrl.props?.resolvestyles) {\r\n styleProps = { \"resolvestyles\": undefined, style: getProcessedArgs(currentCtrl.props.style, refData) };\r\n }\r\n // let ctrlProps = currentCtrl.props ? { key: index, ...currentCtrl.props, ...styleProps } : { key: index, ...styleProps };\r\n let ctrlProps = { key: `ctr${scaffID}${newIndex}` , ...currentCtrl.props, ...resolvedProps, ...styleProps };\r\n if (ctrlProps.includerefdata) ctrlProps = { refData: refData, ...ctrlProps, \"includerefdata\": undefined };\r\n return (React.createElement(controlType, ctrlProps, ctrlChildren)); \r\n }\r\n )\r\n );\r\n }\r\n }\r\n\r\n // _resolvestyles(styles, refData) { //TODO Need to refactor; Now using getProcessedArgs\r\n // let newStyles = {};\r\n // Object.keys(styles).forEach(t => {\r\n // newStyles = {\r\n // ...newStyles,\r\n // [t]: GetControlPropertyFromStoreOrRefData(styles[t], refData)\r\n // };\r\n\r\n // });\r\n\r\n // return newStyles;\r\n // }\r\n\r\n _getControlTypeFromKey(elementKey) {\r\n switch (elementKey.toLowerCase()) {\r\n //Charts\r\n case \"echart\": return (FactsERPChart);\r\n case \"entry\": return (FactsEntry);\r\n case \"chbox\": return (FactsCheckbox);\r\n case \"dtpick\": return (FactsDatePicker);\r\n case \"tmpick\": return (FactsTimePicker);\r\n case \"lbl\": return (FactsLabel);\r\n case \"imgr\": return (FactsImage);\r\n case \"canv\": return (FactsCanvas);\r\n // case \"pdf\": return (FactsPDFPreview);\r\n case \"sect\": return (FactsSection);\r\n case \"ftbl\": return (FactsDataGrid);\r\n case \"expanel\": return (FactsExpansionPanel);\r\n case \"swplist\": return (FactsSwipeList);\r\n case \"btngroup\": return (ButtonGroup);\r\n case \"hide\": return (FactsHidden);\r\n case \"btn\": return (FactsButton);\r\n case \"filebtn\": return (FactsFileButton);\r\n case \"icbtn\": return (FactsIconButton);\r\n case \"fab\": return (FactsFAB);\r\n case \"mfab\": return (FactsFABMulti);\r\n case \"icon\": return (Icon);\r\n case \"ddl\": return (FactsDropDown);\r\n case \"lkup\": return (FactsLookup);\r\n case \"dxlist\": return (FactsDevList);\r\n case \"dxgrid\": return (FactsDevGrid);\r\n case \"vlist\": return (FactsVirtualList);\r\n case \"list\": return (FactsList);\r\n case \"click\": return (FactsClickRecognizer);\r\n case \"favatar\": return (FactsAvatar);\r\n case 'xcnt': return (FactsExtraContent);\r\n case \"render\": return (FactsRenderer);\r\n case \"tree\": return (FactsTreeview);\r\n case \"qrscan\": return (FactsQRCode);\r\n case \"bcscan\": return (FactsBarCode);\r\n case \"dxsched\": return (FactsDevScheduler);\r\n case \"view\": return (FactsHTMLView);\r\n case \"draw\": return (FactsDraw);\r\n case \"slider\": return (FactsSlider);\r\n case \"radio\": return (FactsRadioGroup);\r\n case \"drag\": return (FactsDragSource);\r\n case \"fragment\": return (React.Fragment);\r\n case \"tab\": return (FactsTabControl);\r\n case \"htmleditor\": return (FactsHtmlEditor);\r\n case \"chartpie\": return (PieChartComponent);\r\n case \"chartbar\": return (BarChartComponent);\r\n case \"chartarea\": return (AreaChartComponent);\r\n case \"chartline\": return (LineChartComponent);\r\n case \"dxdtpick\": return (FactsDevDatePicker);\r\n case \"dxlookup\": return (FactsDevLookup);\r\n case \"dxcircgauge\": return (FactsDevCircularGauge);\r\n case \"dxganttchart\": return (FactsDevGanttChart);\r\n case \"dxlingauge\": return (FactsDevLinearGauge);\r\n case \"dxbargauge\": return (FactsDevBarGauge);\r\n case \"dxnumberbox\": return (FactsDevNumberBox);\r\n default: return elementKey;\r\n }\r\n\r\n }\r\n\r\n}\r\n\r\nexport default PureJSComponentFactory; ","import React, { Component } from \"react\";\r\nimport PureJSComponentFactory from \"./Factory/pureJSComponentFactory\";\r\n\r\nclass GenericPageComponent extends Component {\r\n\r\n render() {\r\n let scaff = new PureJSComponentFactory().scaffoldComponent(\r\n this.props.pageInfo?.layout,\"\",(this.props.pageInfo?.id ?? (Math.random() * 10000).toFixed()) //Need id in the scaffold to uniquely identify each controls (Needed by React as key), Otherwise we use here a random number to generate one (For backward compatibility)\r\n );\r\n\r\n return (<>{scaff}</>);\r\n }\r\n\r\n\r\n\r\n}\r\n\r\nexport default GenericPageComponent; ","import { AppBar, Toolbar, IconButton, Typography, Icon } from \"@mui/material\";\r\nimport React, { Component } from \"react\";\r\nimport { ExecuteLayoutEventMethods, GetControlPropertyFromStoreOrRefData } from \"../../General/commonFunctions\";\r\nimport { appTheme, appPlatform } from \"../../General/globals\";\r\nimport PureJSComponentFactory from \"../Pages/Factory/pureJSComponentFactory\";\r\n\r\nclass AppBarInnerComponent extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n let myTitle = GetControlPropertyFromStoreOrRefData(props.title);\r\n this.state = {\r\n title: myTitle\r\n }\r\n\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n let myTitle = GetControlPropertyFromStoreOrRefData(nextProps.title);\r\n if (this.state.title !== myTitle) {\r\n\r\n this.setState({\r\n title: myTitle\r\n });\r\n }\r\n }\r\n async handleBackClick(clickArgs) {\r\n await ExecuteLayoutEventMethods(\r\n [...(clickArgs ?? [{\r\n \"exec\": \"setdatasetfield\",\r\n \"args\": {\r\n \"dset\": \"popupinfo\",\r\n \"fieldname\": this.props.popupName,\r\n \"data\": null\r\n }\r\n }])], { name: this.props.popupName, title: this.props.title });\r\n\r\n }\r\n\r\n showBackClick() {\r\n if (appPlatform == \"win\") {\r\n if (this.props.whenbackclick) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n async handleSubAppbarBackClick() {\r\n await ExecuteLayoutEventMethods(this.props?.whenSubAppbarbackclick);\r\n }\r\n\r\n render() {\r\n let scaff = new PureJSComponentFactory().scaffoldComponent(this.props.chld);\r\n\r\n return (\r\n <>\r\n <AppBar className=\"factsSubAppbar\" position=\"static\" style={this.props?.style}>\r\n <Toolbar>\r\n {this.props?.whenSubAppbarbackclick?(\r\n <IconButton edge=\"start\" color=\"inherit\" onClick={() => this.handleSubAppbarBackClick()} >\r\n <Icon>arrow_back</Icon>\r\n </IconButton>) :\r\n (<></>)}\r\n {this.showBackClick() == true ?\r\n <IconButton edge=\"start\" color=\"inherit\" onClick={() => this.handleBackClick(this.props?.whenbackclick)} >\r\n <Icon>arrow_back</Icon>\r\n </IconButton> :\r\n <></>}\r\n <Typography variant=\"h6\" className=\"flex-grow\" >{this.state.title}</Typography>\r\n {scaff}\r\n </Toolbar>\r\n </AppBar>\r\n </>\r\n );\r\n }\r\n\r\n}\r\n\r\nexport default AppBarInnerComponent;","import PureJSComponentFactory from \"../Pages/Factory/pureJSComponentFactory\";\r\nimport React, { Component } from \"react\";\r\nimport { Grid } from \"@mui/material\";\r\n\r\nclass PageHeaderSection extends Component{\r\n render(){\r\n if(!this.props.pageHeader) return null; \r\n let scaff = new PureJSComponentFactory().scaffoldComponent(this.props.pageHeader) ; \r\n \r\n return( \r\n <Grid className=\"page-header\" >\r\n {scaff}\r\n </Grid>\r\n );\r\n }\r\n}\r\n\r\nexport default PageHeaderSection; ","import { Grid, Dialog } from \"@mui/material\";\r\nimport React, { Component } from \"react\";\r\nimport { hideAppBusy, showAppBusy } from \"../AppOwnState\";\r\nimport { ownStore } from \"../AppOwnState/ownState\";\r\nimport { ExecuteLayoutEventMethods } from \"../General/commonFunctions\";\r\nimport GenericPageComponent from \"./Pages/genericPageComponent\";\r\nimport AppBarInnerComponent from \"./Parts/appBarInnerComponent\";\r\nimport PageHeaderSection from './Parts/pageHeaderSection';\r\n\r\nclass PopupComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n popupInfo: null\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.mounted = true;\r\n this.unsubscribe = ownStore.subscribe((storeInfo) => {\r\n if (this.mounted) {\r\n let storeDset = storeInfo.dset;\r\n if (storeDset === \"popupinfo\") this.popupStateChange(ownStore.getState(\"popupinfo\"));\r\n\r\n }\r\n });\r\n }\r\n\r\n\r\n async popupStateChange(dsPopupInfo) { //TODO 05Dec2021: Need to isolate the state of Popup in future to prevent rerendering\r\n if (dsPopupInfo) {\r\n // let reduxPopupInfoState = JSON.stringify(dsPopupInfo),\r\n // localPopupInfoState = JSON.stringify(this.state.popupInfo);\r\n // if (reduxPopupInfoState !== localPopupInfoState) {\r\n\r\n // let popupLayoutInfo = pageDs?.popupinfo;\r\n let plInfo = dsPopupInfo;\r\n\r\n let needPopupEventExecution = [];\r\n // let currentURLHash = window.location.hash;\r\n // window.history.pushState({}, '')\r\n Object.keys(plInfo).forEach((pkey) => {\r\n let reduxPopupState = JSON.stringify(plInfo[pkey]),\r\n localPopupState = this.state.popupInfo && JSON.stringify(this.state.popupInfo[pkey]);\r\n if (reduxPopupState !== localPopupState) {\r\n\r\n // currentURLHash = currentURLHash + \"/\" + pkey;\r\n\r\n needPopupEventExecution.push(pkey); //* Pushing from the existing dataset is needed as there may be changes in the existing popup too... like layout change.\r\n }\r\n });\r\n // window.location.hash = currentURLHash;\r\n // ownStore.dispatch(showAppBusy());\r\n\r\n for(const pkey of needPopupEventExecution){\r\n await ExecuteLayoutEventMethods(plInfo[pkey]?.wheninit, plInfo[pkey]); //Execute init functions of Loaded Popup\r\n }\r\n // ownStore.dispatch(hideAppBusy());\r\n\r\n this.setState({\r\n popupInfo: plInfo\r\n },\r\n async () => {\r\n for(const pkey of needPopupEventExecution){\r\n await ExecuteLayoutEventMethods(plInfo[pkey]?.whenload, plInfo[pkey]); //Execute init functions of Loaded Popup\r\n }\r\n // window.history.pushState({}, '')\r\n // needPopupEventExecution.forEach((pkey) => {\r\n // ExecuteLayoutEventMethods(plInfo[pkey]?.whenload, plInfo[pkey]); //Execute onload functions of Loaded Popup\r\n // // this.popupTimerExecs = plInfo[pkey]?.whentimer; //! need to make it static\r\n // });\r\n });\r\n }\r\n // }\r\n }\r\n\r\n\r\n render() {\r\n return (\r\n this.state.popupInfo ?\r\n <div className=\"popup-wrap\">\r\n {Object.keys(this.state.popupInfo).map((popupName, index) => {\r\n let popup = this.state.popupInfo && this.state.popupInfo[popupName];\r\n if (popup) {\r\n return ( <SinglePopup popup = {popup} key={index} popupName = {popupName} />\r\n );\r\n }\r\n else return null;\r\n })}\r\n </div>\r\n : <></>\r\n );\r\n\r\n\r\n }\r\n}\r\n\r\nexport default PopupComponent;\r\n\r\n\r\nconst SinglePopup = React.memo(function SingPop(props) {\r\n let popup = props?.popup; \r\n let popupName = props?.popupName; \r\n return (<Dialog\r\n\r\n PaperProps={{ className: \"animate__animated animate__zoomIn\" , style: {overflowY: \"none\", ...popup?.paperstyle}}}\r\n fullScreen={popup?.fullscreen ?? true} open={true} >\r\n {popup?.appbar ?\r\n (<AppBarInnerComponent {...popup?.appbar} popupName={popupName} />)\r\n :\r\n (<></>)\r\n }\r\n {popup?.subappbar ?\r\n (<AppBarInnerComponent {...popup?.subappbar} popupName={popupName} />)\r\n :\r\n (<></>)\r\n }\r\n <PageHeaderSection pageHeader={popup?.pageheader} />\r\n\r\n <Grid\r\n container className=\"page-container\" style={popup?.style}>\r\n <GenericPageComponent pageInfo={popup} />\r\n\r\n </Grid>\r\n </Dialog>)\r\n});","import React, { Component } from \"react\";\r\nimport LoginComponent from \"./loginComponent\";\r\nimport Grid from '@mui/material/Grid';\r\nimport AppUpdate from \"../AppUpdate\";\r\nimport PureJSComponentFactory from \"./Pages/Factory/pureJSComponentFactory\";\r\nimport { offlineLayoutInfo } from \"../General/globals\";\r\nimport PopupComponent from \"./popupComponent\";\r\n \r\n\r\nclass unAuthorizedComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n \r\n this.pageFooter = new PureJSComponentFactory().scaffoldComponent(offlineLayoutInfo?.mainfooter);\r\n \r\n // localStorage.getItem(\"\")\r\n //ExecuteLayoutEventMethods(whenAppInit); //AppInit events from Initjson\r\n\r\n }\r\n render() {\r\n return (\r\n <>\r\n <div className=\"login-container\" >\r\n <div className=\"update-container\">\r\n <AppUpdate />\r\n </div>\r\n <Grid container className=\"login-grid\">\r\n <Grid item lg={4} sm={2}></Grid>\r\n <Grid item lg={4} sm={8}>\r\n <LoginComponent />\r\n </Grid>\r\n <Grid item lg={4} sm={2}></Grid>\r\n </Grid>\r\n \r\n {this.pageFooter}\r\n \r\n </div>\r\n <PopupComponent />\r\n </> \r\n );\r\n\r\n }\r\n\r\n}\r\n\r\nexport default unAuthorizedComponent; ","import React, { Component } from \"react\";\r\nimport Stack from \"@mui/material/Stack\";\r\nimport TextField from \"@mui/material/TextField\";\r\nimport Autocomplete from \"@mui/material/Autocomplete\";\r\nimport { padding } from \"@mui/system\";\r\nimport { appTheme } from \"../../../General/globals\";\r\nimport { ownStore } from \"../../../AppOwnState/ownState\";\r\n\r\nclass FactsGlobalSearchField extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n value: \"\",\r\n inputValue: \"\",\r\n searchFieldColor: \"#FFFFFF33\",\r\n searchFieldTextColor: \"#FFFFFF\",\r\n };\r\n\r\n \r\n this.unsubscribe = ownStore.subscribe((storeInfo) => {\r\n let storeDset = storeInfo.dset; \r\n if (storeDset === \"dsAppTheme\") {\r\n let dsAppTheme = ownStore.getState(\"dsAppTheme\");\r\n if(dsAppTheme)\r\n { \r\n this.setState({\r\n searchFieldColor: dsAppTheme?.searchFieldColor,\r\n });\r\n this.setState({\r\n searchFieldTextColor: dsAppTheme?.searchFieldTextColor,\r\n }); \r\n }\r\n }\r\n });\r\n }\r\n\r\n componentWillUnmount() {\r\n this.unsubscribe();\r\n }\r\n\r\n handleChange = (event, value) => {\r\n let menuItem = {};\r\n if (value != null) {\r\n for (let i = 0; i < this.props.userMenu.length; i++) {\r\n if (this.props.userMenu[i].caption == value) {\r\n menuItem = this.props.userMenu[i];\r\n break;\r\n }\r\n }\r\n this.props.menuDropClick(menuItem, null, null);\r\n }\r\n\r\n this.setState({\r\n value: \"\",\r\n });\r\n };\r\n\r\n handleInputChange = (event, value) => {\r\n this.setState({\r\n inputValue: value,\r\n });\r\n };\r\n\r\n handleClose = (event, reson) => {\r\n this.setState({\r\n inputValue: \"\",\r\n });\r\n };\r\n\r\n \r\n\r\n render() {\r\n return (\r\n <React.Fragment>\r\n <Stack\r\n className=\"factsGlobalSearchField\"\r\n spacing={2}\r\n sx={{ width: 200 }}\r\n style={{ margin: \"0px\", padding: \"0px\" }}\r\n >\r\n <Autocomplete\r\n className=\"factsGlobalSearchFieldAutocomplete\"\r\n id=\"free-solo-search\"\r\n freeSolo\r\n options={this.props.userMenu\r\n .filter((menu) => menu.permalink)\r\n .map((menu) => menu.caption)}\r\n renderInput={(params) => (\r\n <TextField\r\n {...params}\r\n placeholder=\"Search here...\"\r\n InputProps={{\r\n ...params.InputProps,\r\n type: \"search\",\r\n className:\"factsGlobalSearchFieldInput\"\r\n }}\r\n className=\"factsGlobalSearchFieldText\"\r\n />\r\n )}\r\n onChange={this.handleChange}\r\n onClose={this.handleClose}\r\n onInputChange={this.handleInputChange}\r\n size=\"small\"\r\n // blurOnSelect=\"true\"\r\n clearOnBlur={true}\r\n value={this.state.value}\r\n inputValue={this.state.inputValue}\r\n />\r\n </Stack>\r\n </React.Fragment>\r\n );\r\n }\r\n}\r\n\r\nexport default FactsGlobalSearchField;\r\n","import React, { Component } from \"react\"\r\nimport { AppBar, Toolbar, Typography, IconButton, ListItemIcon, Icon, Collapse, Avatar, Drawer } from '@mui/material';\r\nimport { appPlatform } from \"../../General/globals\";\r\nimport {Menu as MenuIcon, ChevronLeft as ChevronLeftIcon } from '@mui/icons-material';\r\nimport { Divider, List, ListItem, ListItemText } from \"@mui/material\";\r\nimport { ExecuteLayoutEventMethods, GetControlPropertyFromStoreOrRefData } from \"../../General/commonFunctions\";\r\nimport PureJSComponentFactory from '../Pages/Factory/pureJSComponentFactory';\r\nimport { appTheme, appDrawerWidth } from \"../../General/globals\";\r\nimport { styled, useTheme } from '@mui/material/styles';\r\nimport FactsGlobalSearchField from \"./Controls/factsGlobalSearchField\";\r\n\r\n class AppBarComponent extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isDrawerOpen: false,\r\n openedMenus: []\r\n };\r\n let DrawerVisibility=localStorage.getItem(\"wasDrawerVisible\")\r\n if(DrawerVisibility==\"true\"){\r\n this.state.isDrawerOpen=true;\r\n }\r\n else{\r\n this.state.isDrawerOpen=false;\r\n }\r\n this.loginSettings = GetControlPropertyFromStoreOrRefData(\"[_userinfo]\");\r\n // if (this.loginSettings?.theme) this.loginSettings = { ...this.loginSettings, theme: JSON.parse(this.loginSettings?.theme) };\r\n // this.primaryColor = this.loginSettings?.theme?.palette?.primary?.main ?? \"#3a62ab\"\r\n this.primaryColor = appTheme?.palette?.primary?.main;\r\n this.thisYear = (new Date()).getFullYear();\r\n this.isIOS = navigator.userAgent && /iPad|iPhone|iPod/.test(navigator.userAgent);\r\n\r\n }\r\n\r\n \r\n // async componentDidMount() {\r\n // let _userMenu = await authServiceInstance.loadUserMenu({ userrole: this.props.userInfo?.userrole });\r\n // this.setState({\r\n // userMenu: _userMenu\r\n // },\r\n // () => {\r\n // let currentPage = this.state.userMenu.filter(t => (t.homepage && t.homepage.toLowerCase() === \"true\"));\r\n // // var actionArgsObj = JSON.stringify(currentPage[0].actionargs ); \r\n // let actionArgsObj = JSON.parse(currentPage[0].actionargs);\r\n\r\n // this.state.userMenu.map(t => {\r\n // let jobj = JSON.parse(t.actionargs);\r\n // t.docno = jobj.docno;\r\n // });\r\n // if (currentPage) this.props.executeMenuAction(actionArgsObj); //Need to consider the Page Click conflict later\r\n // }\r\n // );\r\n\r\n // }\r\n\r\n async componentDidMount(){\r\n let DrawerVisibility=localStorage.getItem(\"wasDrawerVisible\")\r\n if(DrawerVisibility==\"true\"){\r\n this.props.setWidthFunc(true);\r\n }\r\n else{\r\n this.props.setWidthFunc(false);\r\n }\r\n }\r\n toggleDrawer(isDrawerOpen) {\r\n if(isDrawerOpen==true && this.state.isDrawerOpen==true) {\r\n isDrawerOpen=false;\r\n }\r\n this.setState({\r\n isDrawerOpen\r\n });\r\n }\r\n\r\n async menuItemClick(menuItem, hasChildren, isMenuOpen) {\r\n\r\n if (hasChildren) {\r\n if (isMenuOpen) {\r\n this.setState({\r\n openedMenus: this.state.openedMenus.filter(t => t !== menuItem.menuid)\r\n });\r\n }\r\n else {\r\n this.setState({\r\n openedMenus: [...this.state.openedMenus, menuItem.menuid]\r\n });\r\n }\r\n }\r\n else {\r\n // window.location.hash = `#${hash}`;\r\n // console.log(\"Drawer Variant is \", this.state) \r\n // debugger;\r\n // if (this.props.drawerVariant.drawerVariantValue !== \"persistent\")\r\n // { \r\n // this.toggleDrawer(false);\r\n // this.props.setWidthFunc(false);\r\n // }\r\n if(this.props){\r\n if(this.props?.drawerVariant?.drawerVariantValue!=\"persistent\"){\r\n this.state.isDrawerOpen = false;\r\n this.props.setWidthFunc(false);\r\n }\r\n } \r\n\r\n window.history.pushState({}, '', '#/' + (menuItem?.permalink ?? \"\"));\r\n\r\n // window.location.hash = \"#\" + (menuItem?.permalink ?? \"\");\r\n await ExecuteLayoutEventMethods([{\r\n \"exec\": \"setdataset\",\r\n \"args\": {\r\n \"dset\": \"pagemenuinfo\",\r\n \"data\": menuItem\r\n }\r\n }],null, null, true);\r\n await ExecuteLayoutEventMethods(menuItem?.action, null, null, true);\r\n\r\n // this.props.executeMenuRouting({\r\n // doctype: \"page\",\r\n // docno: hash\r\n // });\r\n }\r\n }\r\n\r\n render() {\r\n // let reduxState = store.getState().login; //Redux \r\n let scaff = new PureJSComponentFactory().scaffoldComponent(this.props.chld);\r\n let scafftitle = new PureJSComponentFactory().scaffoldComponent(this.props.titlepart);\r\n let appTitle = GetControlPropertyFromStoreOrRefData(this.props.title);\r\n let logoMime = \"data:image/png;base64,\";\r\n let factsLogo = \"iVBORw0KGgoAAAANSUhEUgAAABAAAAARCAYAAADUryzEAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5AcGCgEBtcH0+QAAAzBJREFUOMtNk0tvG2UYhZ/3mxnf4jixg+3EkKRZQC8gLlEpqhAEFakskZDaHb+Bn8IWiV8AQgIBEmGDqEAIsqlQKbAozYWQ2I4v8dge2/PNfC+LpFGPdDav9J7NeY6MRiMAUUVE8IwQ+J7JBIHkMaYIWtJUK6MoqXZCu3zcjRu7zUl5NElaH7xV+9wXIV8o+EWQMs6Vp7Gr9Ia22j6NV467s8ZRb/Zs59TWe0Nb7Q9teThJi9E0zTSWsv+8/2btN98munbvfm/ruDu7cXJqL3WHttYf2ko4TkrRLM3H1vmpA+VMAiiK50kBJe+HUfLSF/daHx12ZledU3GqOMeFRM5sRC5uqoKAATW+QD11Wk5SFYCMb1ivF9hYKZDPGoZRyuPjMYcnU5LUXQTpuX0R8UUQVWWtlufWZpXVWo6XN4p0Bpb7j0KuX14kjCzbO232mtGTAFFFjIJNU9KNlQLvblZ5uBciqmREqZU8TkeWT77e4/FRxIe3V7n5YgVVUKeqivpJ4sbl+cBeWS/x3U6b+bzHldU5cI7ACDevLbK90+b7nTa7zYi77zRQhaPOxCmkJk5cfHm16Fq9KYcnE8rzAdnAoCiqMJfzyGU9jBH+3h/x+6OQrVeWyPhGnVNnsoHJ/nUw8pYrOS4tF+gMYiZxiiAYI4RRQjRNUZQ3ri7y6vMLfPNLk6lNjQie8TxTGIys/+ufPW5fr1Kv5Phjb4Qaw8QqPz/oM5fzuLPV4L0bNb786ZiHu0OMiAcEvkDgeeLtNyds77S5tVnF8zwiC71hwmq9wLWNEv+2J3z67T7t/gwxgpy34KtqoqoqRmj2Znz2w380nsnxXDVHPusRjhP2WxEngxgUjBGcXpApvkLLM9IPPKmnTk3ilP1mdNH3EwpFzjl+ClIAv1TwH9zZqn/c7MevdwZ2rX+2haXBOFkYT9P8zLpMkqo4fepLFcABqR/4cvD2a5WvQH5EddFaVw7HyVI3tLVWP15p9mYrnUFc7w2TWje0S+E4mR9OkoJTHSWp9n1VpuNxMlOlBxhjCObzXlApBbkX1ucKIEVUF2zslgbjpHoyiOsH7eliL7TdXMbs/g/Z+L2xtJFi0QAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMC0wNy0wNlQxMDowMTowMS0wNDowMJiycesAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjAtMDctMDZUMTA6MDE6MDEtMDQ6MDDp78lXAAAAAElFTkSuQmCC\"\r\n return (\r\n <React.Fragment>\r\n <AppBar\r\n position=\"static\"\r\n style={this.props?.style}\r\n className={appTheme.appbarClass}\r\n >\r\n <Toolbar>\r\n <IconButton\r\n edge=\"start\"\r\n color=\"inherit\"\r\n onClick={() => {\r\n this.toggleDrawer(true);\r\n this.props.setWidthFunc(true);\r\n }}\r\n >\r\n <MenuIcon />\r\n </IconButton>\r\n {appTitle ? (\r\n <Typography variant=\"h6\" className=\"flex-grow\">\r\n {appTitle}\r\n </Typography>\r\n ) : (\r\n <></>\r\n )}\r\n {scafftitle}\r\n {this.props.pageInfo?.globalsearchfield ? (\r\n <FactsGlobalSearchField\r\n pageInfo={this.props.pageInfo}\r\n userMenu={this.props.userMenu}\r\n menuDropClick={this.menuItemClick}\r\n ></FactsGlobalSearchField>\r\n ) : (\r\n <></>\r\n )}\r\n {scaff}\r\n </Toolbar>\r\n </AppBar>\r\n {/* <Drawer open={this.state.isDrawerOpen} onClose={() => this.toggleDrawer(false)}\r\n classes={{ paper: \"app-drawer\" }} >\r\n <div\r\n style={{ backgroundColor: this.primaryColor, padding: \"90px 5px 10px 10px\" }}>\r\n <span style={{ color: \"#FFFFFF\", fontSize: \"15px\" }}\r\n >{this.loginSettings?.username}</span>\r\n </div>\r\n <List className=\"drawer-list\"\r\n >\r\n {this.props.userMenu?.\r\n filter(t => t.parentid?.toString() === '0' && t.showinmenu.toString() === \"1\")?.\r\n map((menuItem, index) => (\r\n this.getmenuItem(menuItem, index, 0)\r\n ))}\r\n </List>\r\n <div className=\"copyright\">\r\n <img alt=\"FACTS\"\r\n src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAARCAYAAADUryzEAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5AcGCgEBtcH0+QAAAzBJREFUOMtNk0tvG2UYhZ/3mxnf4jixg+3EkKRZQC8gLlEpqhAEFakskZDaHb+Bn8IWiV8AQgIBEmGDqEAIsqlQKbAozYWQ2I4v8dge2/PNfC+LpFGPdDav9J7NeY6MRiMAUUVE8IwQ+J7JBIHkMaYIWtJUK6MoqXZCu3zcjRu7zUl5NElaH7xV+9wXIV8o+EWQMs6Vp7Gr9Ia22j6NV467s8ZRb/Zs59TWe0Nb7Q9teThJi9E0zTSWsv+8/2btN98munbvfm/ruDu7cXJqL3WHttYf2ko4TkrRLM3H1vmpA+VMAiiK50kBJe+HUfLSF/daHx12ZledU3GqOMeFRM5sRC5uqoKAATW+QD11Wk5SFYCMb1ivF9hYKZDPGoZRyuPjMYcnU5LUXQTpuX0R8UUQVWWtlufWZpXVWo6XN4p0Bpb7j0KuX14kjCzbO232mtGTAFFFjIJNU9KNlQLvblZ5uBciqmREqZU8TkeWT77e4/FRxIe3V7n5YgVVUKeqivpJ4sbl+cBeWS/x3U6b+bzHldU5cI7ACDevLbK90+b7nTa7zYi77zRQhaPOxCmkJk5cfHm16Fq9KYcnE8rzAdnAoCiqMJfzyGU9jBH+3h/x+6OQrVeWyPhGnVNnsoHJ/nUw8pYrOS4tF+gMYiZxiiAYI4RRQjRNUZQ3ri7y6vMLfPNLk6lNjQie8TxTGIys/+ufPW5fr1Kv5Phjb4Qaw8QqPz/oM5fzuLPV4L0bNb786ZiHu0OMiAcEvkDgeeLtNyds77S5tVnF8zwiC71hwmq9wLWNEv+2J3z67T7t/gwxgpy34KtqoqoqRmj2Znz2w380nsnxXDVHPusRjhP2WxEngxgUjBGcXpApvkLLM9IPPKmnTk3ilP1mdNH3EwpFzjl+ClIAv1TwH9zZqn/c7MevdwZ2rX+2haXBOFkYT9P8zLpMkqo4fepLFcABqR/4cvD2a5WvQH5EddFaVw7HyVI3tLVWP15p9mYrnUFc7w2TWje0S+E4mR9OkoJTHSWp9n1VpuNxMlOlBxhjCObzXlApBbkX1ucKIEVUF2zslgbjpHoyiOsH7eliL7TdXMbs/g/Z+L2xtJFi0QAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMC0wNy0wNlQxMDowMTowMS0wNDowMJiycesAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjAtMDctMDZUMTA6MDE6MDEtMDQ6MDDp78lXAAAAAElFTkSuQmCC\">\r\n\r\n </img>\r\n <a href=\"facts.ae\">FACTS LLC © {this.thisYear} All Rights Reserved</a>\r\n </div>\r\n\r\n </Drawer> */}\r\n <Drawer\r\n open={this.state.isDrawerOpen}\r\n onClose={() => this.toggleDrawer(false)}\r\n onOpen={() => this.toggleDrawer(true)}\r\n disableBackdropTransition={!this.isIOS}\r\n disableDiscovery={this.isIOS}\r\n disableSwipeToOpen={this.props?.disableswipe}\r\n classes={{ paper: \"app-drawer\" }}\r\n setContentWidth={appDrawerWidth}\r\n variant={this.props.drawerVariant.drawerVariantValue}\r\n >\r\n <div className=\"drawer-header\" \r\n style={{\r\n backgroundColor: this.primaryColor,\r\n padding: \"5px 10px 10px 10px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n {/* <div className=\"chevdesign\" >\r\n <IconButton onClick={() => {this.toggleDrawer(false);this.props.setWidthFunc(false)}}>\r\n <ChevronLeftIcon />\r\n </IconButton>\r\n </div> */}\r\n <Avatar className=\"drawer-avatar\" \r\n src={\r\n this.loginSettings?.userimage\r\n ? logoMime + this.loginSettings?.userimage\r\n : \"/logo.png\"\r\n }\r\n style={{\r\n border: \"3px solid rgba(255,255,255, 0.30)\",\r\n background: \"gainsboro\",\r\n height: \"60px\",\r\n width: \"60px\",\r\n }}\r\n ></Avatar>\r\n <div style={{ display: \"block\" }}>\r\n <div className=\"drawer-username\" \r\n style={{\r\n color: \"#FFFFFF\",\r\n fontSize: \"14px\",\r\n padding: \"10px\",\r\n paddingBottom: \"5px\",\r\n fontWeight: \"600\",\r\n }}\r\n >\r\n {this.loginSettings?.username}\r\n </div>\r\n <div className=\"drawer-desig\" \r\n style={{\r\n color: \"#FFFFFF\",\r\n fontSize: \"12px\",\r\n paddingLeft: \"10px\",\r\n }}\r\n >\r\n {this.loginSettings?.userdesig}\r\n </div>\r\n </div>\r\n </div>\r\n <List className=\"drawer-list\">\r\n {this.props.userMenu\r\n ?.filter(\r\n (t) =>\r\n t.parentid?.toString() === \"0\" &&\r\n t.showinmenu.toString() === \"1\"\r\n )\r\n ?.map((menuItem, index) =>\r\n this.getmenuItem(menuItem, index, 0)\r\n )}\r\n </List>\r\n <div className=\"copyright\">\r\n <img alt=\"FACTS\" src={logoMime + factsLogo}></img>\r\n <a href=\"http://facts.ae\">\r\n FACTS LLC © {this.thisYear} All Rights Reserved\r\n </a>\r\n </div>\r\n </Drawer>\r\n </React.Fragment>\r\n );\r\n }\r\n \r\n\r\n getmenuItem(menuItem, index, menuLevel) {\r\n let hasChildren = this.props.userMenu?.filter(t => t.parentid?.toString() === menuItem.menuid)?.length > 0;\r\n let isMenuOpen = this.state.openedMenus.includes(menuItem.menuid);\r\n\r\n return (\r\n <React.Fragment key={index}>\r\n <ListItem className=\"drawer-list-item\" dense={true} key={index} button onClick={() => this.menuItemClick(menuItem, hasChildren, isMenuOpen)}\r\n style={{ paddingLeft: `${10 * (menuLevel + 1)}px` }} >\r\n <ListItemIcon className=\"drawer-list-itemicon\" style={{ minWidth: \"32px\" }}><Icon className=\"drawer-list-icon\">{menuItem.icon}</Icon></ListItemIcon>\r\n <ListItemText primary={menuItem.caption} />\r\n {hasChildren &&\r\n (isMenuOpen ?\r\n <Icon>expand_less</Icon> : <Icon>expand_more</Icon>)}\r\n </ListItem>\r\n {hasChildren &&\r\n <Collapse in={isMenuOpen} timeout=\"auto\" unmountOnExit >\r\n <List className=\"drawer-list\" disablePadding >\r\n {this.props.userMenu?.\r\n filter(t => t.parentid?.toString() === menuItem.menuid && t.showinmenu.toString() === \"1\")?.\r\n map((submenuItem, subIndex) => (\r\n this.getmenuItem(submenuItem, subIndex, menuLevel + 1)\r\n ))}\r\n </List>\r\n </Collapse>}\r\n {menuLevel === 0 && <Divider />}\r\n\r\n </React.Fragment>\r\n );\r\n }\r\n}\r\n\r\nexport default AppBarComponent;","import React, { Component } from \"react\";\r\nimport { BottomNavigation, BottomNavigationAction, Icon } from \"@mui/material\";\r\nimport { appTheme } from \"../../General/globals\";\r\nimport { ExecuteLayoutEventMethods } from \"../../General/commonFunctions\";\r\n\r\nclass PageFooterSection extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.primaryColor = appTheme?.palette?.primary?.main;\r\n }\r\n\r\n async menuItemClick(menuItem) {\r\n window.history.pushState({}, '', '#/' + (menuItem?.permalink ?? \"\"));\r\n await ExecuteLayoutEventMethods([{\r\n \"exec\" : \"setdataset\", \r\n \"args\" : {\r\n \"dset\" : \"pagemenuinfo\",\r\n \"data\" :menuItem\r\n }\r\n }]); \r\n // window.location.hash = \"#\" + (menuItem?.permalink ?? \"\");\r\n await ExecuteLayoutEventMethods(menuItem?.action);\r\n }\r\n\r\n render() {\r\n\r\n let currentOptions = this.props.userMenu?.filter(t => t.module === \"BNB\");\r\n\r\n return (\r\n currentOptions?.length > 0 && this.props.pageFooter ?\r\n <div >\r\n <BottomNavigation style={{ backgroundColor: this.props.pageFooter?.bgcolor ?? this.primaryColor }} >\r\n {currentOptions?.map((t, index) => {\r\n return (\r\n <BottomNavigationAction key={index} showLabel={true} label={t.caption} value=\"recents\"\r\n style={{ color: this.props.pageFooter?.textcolor ?? \"white\" }}\r\n icon={<Icon style={{ color: this.props.pageFooter?.iconcolor ?? \"white\" }}>{t.icon}</Icon>}\r\n onClick={() => this.menuItemClick(t)}\r\n />\r\n );\r\n })}\r\n\r\n </BottomNavigation>\r\n </div> : <></>\r\n\r\n );\r\n }\r\n}\r\n\r\nexport default PageFooterSection; ","import React, { Component } from \"react\";\r\nimport { Dialog, DialogTitle, DialogContent, DialogContentText, DialogActions, Button } from \"@mui/material\";\r\nimport { HideDialog } from \"../../../General/globalFunctions\";\r\nimport { ExecuteLayoutEventMethods } from \"../../../General/commonFunctions\";\r\nimport PureJSComponentFactory from \"../../Pages/Factory/pureJSComponentFactory\";\r\nimport { ownStore } from \"../../../AppOwnState/ownState\";\r\n\r\nclass AppDialog extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n dialogInfo: { open: false }\r\n };\r\n }\r\n componentDidMount() {\r\n this.mounted = true; \r\n this.unsubscribe = ownStore.subscribe((storeInfo) => {\r\n if (this.mounted) {\r\n if (storeInfo.dset === \"dialoginfo\") {\r\n let dsDialogInfo = ownStore.getState(\"dialoginfo\")\r\n this.setState({\r\n dialogInfo: dsDialogInfo\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n async firstButtonClick() {\r\n HideDialog();\r\n\r\n if (this.state.dialogInfo?.btn1?.props?.whenclick)\r\n await ExecuteLayoutEventMethods(this.state.dialogInfo?.btn1?.props?.whenclick);\r\n }\r\n async secondButtonClick() {\r\n HideDialog();\r\n\r\n if (this.state.dialogInfo?.btn2?.props?.whenclick)\r\n await ExecuteLayoutEventMethods(this.state.dialogInfo?.btn2?.props?.whenclick);\r\n\r\n }\r\n onDialogClose() {\r\n HideDialog();\r\n }\r\n render() {\r\n\r\n let scaff = this.state.dialogInfo?.description; \r\n if( this.state.dialogInfo?.content) scaff = new PureJSComponentFactory().scaffoldComponent( this.state.dialogInfo?.content, \"\", (Math.random() * 10000).toFixed());\r\n return (\r\n\r\n <Dialog open={this.state.dialogInfo?.open} onClose={this.onDialogClose.bind(this)}\r\n style={{ zIndex: 10000 }} >\r\n <DialogTitle id=\"alert-dialog-title\">{this.state.dialogInfo?.title}</DialogTitle>\r\n <DialogContent>\r\n <DialogContentText id=\"alert-dialog-description\">\r\n {scaff}\r\n </DialogContentText>\r\n </DialogContent>\r\n <DialogActions>\r\n {this.state.dialogInfo?.btn1 ?\r\n <Button onClick={this.firstButtonClick.bind(this)} color=\"primary\" {...this.state.dialogInfo?.btn1?.props}>\r\n {this.state.dialogInfo?.btn1?.chld}\r\n </Button>\r\n : null}\r\n {this.state.dialogInfo?.btn2 ?\r\n <Button onClick={this.secondButtonClick.bind(this)} color=\"primary\" autoFocus {...this.state.dialogInfo?.btn2?.props}>\r\n {this.state.dialogInfo?.btn2?.chld}\r\n </Button>\r\n : null\r\n }\r\n </DialogActions>\r\n </Dialog>\r\n );\r\n }\r\n}\r\n\r\nexport default AppDialog; ","import React, { Component } from \"react\";\r\nimport { Snackbar } from \"@mui/material\";\r\nimport MuiAlert from '@mui/lab/Alert';\r\nimport { HideSnackBar } from \"../../../General/globalFunctions\";\r\nimport { ownStore } from \"../../../AppOwnState/ownState\";\r\n\r\nclass AppSnackBar extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n snackInfo: { open: false }\r\n };\r\n }\r\n componentDidMount() {\r\n this.mounted = true; \r\n this.unsubscribe = ownStore.subscribe((storeInfo) => {\r\n if (this.mounted) {\r\n if (storeInfo.dset === \"snackinfo\") {\r\n let dsSnackInfo = ownStore.getState(\"snackinfo\")\r\n this.setState({\r\n snackInfo: dsSnackInfo\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n onSnackClose(source) {\r\n HideSnackBar();\r\n }\r\n\r\n componentWillUnmount(){\r\n if(this.unsubscribe) this.unsubscribe(); \r\n this.mounted = false; \r\n\r\n }\r\n\r\n render() {\r\n\r\n return (\r\n //onClose={this.onSnackClose.bind(this, \"snack\")} //Removed from Snackbar\r\n <Snackbar open={this.state.snackInfo?.open} autoHideDuration={this.state.snackInfo?.duration ?? 5000} onClose={this.onSnackClose.bind(this, \"snack\")} >\r\n <MuiAlert elevation={6} variant=\"filled\" severity={this.state.snackInfo?.type} onClose={this.onSnackClose.bind(this, \"alert\")} >\r\n {this.state.snackInfo?.message}\r\n </MuiAlert>\r\n </Snackbar>\r\n );\r\n }\r\n}\r\n\r\nexport default AppSnackBar;","import React, { Component } from \"react\";\r\nimport { MenuItem, Popover } from \"@mui/material\";\r\nimport { HideAppMenu } from \"../../../General/globalFunctions\";\r\nimport {\r\n ExecuteLayoutEventMethods,\r\n GetControlPropertyFromStoreOrRefData,\r\n} from \"../../../General/commonFunctions\";\r\nimport PureJSComponentFactory from \"../../Pages/Factory/pureJSComponentFactory\";\r\nimport { ownStore } from \"../../../AppOwnState/ownState\";\r\n\r\nclass AppMenu extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n menuInfo: { open: false },\r\n };\r\n }\r\n\r\n onMenuClose() {\r\n HideAppMenu();\r\n if (this.anchorElement) this.anchorElement.classList.remove(\"am-parent\");\r\n }\r\n\r\n componentDidMount() {\r\n this.mounted = true;\r\n this.unsubscribe = ownStore.subscribe((storeInfo) => {\r\n if (this.mounted) {\r\n if (storeInfo.dset === \"menuinfo\") {\r\n let dsMenuInfo = ownStore.getState(\"menuinfo\");\r\n this.setState({\r\n menuInfo: dsMenuInfo,\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.unsubscribe) this.unsubscribe();\r\n this.mounted = false;\r\n }\r\n\r\n async onMenuClick(whenclick, item) {\r\n let clickEvent = whenclick;\r\n if (typeof whenclick == \"string\") {\r\n try {\r\n clickEvent = JSON.parse(whenclick);\r\n } catch {\r\n clickEvent = GetControlPropertyFromStoreOrRefData(whenclick);\r\n }\r\n }\r\n await ExecuteLayoutEventMethods(clickEvent, item);\r\n this.onMenuClose();\r\n }\r\n\r\n render() {\r\n if (this.state.menuInfo && this.state.menuInfo?.open) {\r\n if (this.state.menuInfo?.items?.length) {\r\n this.anchorElement = document.getElementById(\r\n this.state.menuInfo?.anchor\r\n );\r\n if (this.anchorElement) this.anchorElement.classList.add(\"am-parent\");\r\n }\r\n let menuTitle = new PureJSComponentFactory().scaffoldComponent(\r\n this.state.menuInfo?.title,\r\n this.state.menuInfo?.refdata\r\n );\r\n return this.state.menuInfo?.items?.length > 0 && this.anchorElement ? (\r\n <Popover\r\n anchorEl={this.anchorElement}\r\n anchorOrigin={{\r\n vertical: \"bottom\",\r\n horizontal: \"end\",\r\n }}\r\n transformOrigin={{\r\n vertical: \"top\",\r\n horizontal: \"center\",\r\n }}\r\n style={{ marginTop: \"5px\" }}\r\n keepMounted\r\n open={this.state.menuInfo?.open}\r\n onClose={this.onMenuClose.bind(this)}\r\n >\r\n {menuTitle}\r\n {this.state.menuInfo?.items?.map((t, i) => {\r\n if (!t?.hide) {\r\n if (this.state.menuInfo?.layout) {\r\n let menuContent =\r\n new PureJSComponentFactory().scaffoldComponent(\r\n this.state.menuInfo?.layout,\r\n t\r\n );\r\n return (\r\n <MenuItem\r\n key={i}\r\n style={{ padding: \"0px\" }}\r\n onClick={() => this.onMenuClick(t.whenclick, t)}\r\n >\r\n {menuContent}\r\n </MenuItem>\r\n );\r\n } else {\r\n return (\r\n <MenuItem\r\n key={i}\r\n onClick={() => this.onMenuClick(t.whenclick, t)}\r\n >\r\n {t.text}\r\n </MenuItem>\r\n );\r\n }\r\n }\r\n })}\r\n </Popover>\r\n ) : (\r\n <></>\r\n );\r\n }\r\n return <></>;\r\n }\r\n}\r\n\r\nexport default AppMenu;\r\n","import { Backdrop, CircularProgress } from \"@mui/material\";\r\nimport React, { Component } from \"react\";\r\n\r\nimport { ownStore } from \"../../../AppOwnState/ownState\";\r\n\r\nexport default class AppBackDrop extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isAppBusy: false\r\n }\r\n }\r\n componentDidMount() {\r\n this.mounted = true;\r\n this.unsubscribe = ownStore.subscribe((storeInfo) => {\r\n if (this.mounted) {\r\n if (storeInfo.dset === \"isAppBusy\") {\r\n let isAppBusy = ownStore.getState(\"isAppBusy\");\r\n this.setState({\r\n isAppBusy: isAppBusy\r\n });\r\n }\r\n }\r\n });\r\n }\r\n componentWillUnmount() {\r\n if (this.unsubscribe) this.unsubscribe();\r\n this.mounted = false;\r\n }\r\n render() {\r\n return (\r\n this.state.isAppBusy ?\r\n (<Backdrop open={this.state.isAppBusy} style={{ zIndex: 9999 }} >\r\n <CircularProgress style={{ color: \"#3f51b5\" }} />\r\n </Backdrop>) : <></>\r\n );\r\n }\r\n}","import { create } from \"jss\";\r\nimport rtl from \"jss-rtl\";\r\n\r\nimport React, { Component } from \"react\";\r\nimport UnAuthorizedComponent from \"./Components/unAuthorizedComponent\";\r\nimport AuthorizedComponent from \"./Components/authorizedComponent\";\r\nimport {\r\n authServiceInstance,\r\n applicationTitle,\r\n appTheme,\r\n objVoiceRecorder,\r\n whenAppInit,\r\n appTimer,\r\n apiRoot,\r\n authMethode,\r\n stylefile,\r\n} from \"./General/globals\";\r\nimport {\r\n Backdrop,\r\n CircularProgress,\r\n createTheme,\r\n ThemeProvider,\r\n} from \"@mui/material\";\r\nimport {\r\n HashRouter as Router,\r\n Switch as RouteSwitch,\r\n Route,\r\n useLocation,\r\n} from \"react-router-dom\";\r\nimport { authLogout, authLogin, showAppBusy, hideAppBusy } from \"./AppOwnState\";\r\nimport {\r\n ExecuteLayoutEventMethods,\r\n GetControlPropertyFromStoreOrRefData,\r\n} from \"./General/commonFunctions\";\r\nimport \"./Styles/animate.min.css\";\r\nimport \"./Styles/basic.css\";\r\nimport \"./Styles/responsive.css\";\r\nimport {\r\n GPSLocation,\r\n DownloadFileFromState,\r\n ShowSnackBar,\r\n} from \"./General/globalFunctions\";\r\nimport AppDialog from \"./Components/Parts/AppControls/appDialog\";\r\nimport AppSnackBar from \"./Components/Parts/AppControls/appSnackBar\";\r\nimport AppMenu from \"./Components/Parts/AppControls/appMenu\";\r\nimport appNotification from \"./Components/Parts/AppControls/appNotification\";\r\nimport { ownStore } from \"./AppOwnState/ownState\";\r\nimport AppBackDrop from \"./Components/Parts/AppControls/appBackDrop\";\r\nimport { StylesProvider, jssPreset } from \"@mui/styles\";\r\nimport queryString from \"query-string\";\r\nimport Helmet from 'react-helmet'\r\n\r\nclass App extends Component {\r\n constructor() {\r\n super();\r\n\r\n this.state = {\r\n isPageLoading: true,\r\n isAuthenticated: false,\r\n pageInfo: null,\r\n uiDirection: \"ltr\",\r\n authid: \"\",\r\n authemail: \"\",\r\n };\r\n\r\n GPSLocation();\r\n\r\n this.unsubscribe = ownStore.subscribe((storeInfo) => {\r\n let storeDset = storeInfo.dset;\r\n if (storeDset === \"login\") {\r\n let loginDS = ownStore.getState(\"login\");\r\n if (loginDS?.isAuthenticated !== this.state.isAuthenticated) {\r\n appTimer.isAuthenticated = loginDS?.isAuthenticated;\r\n\r\n this.setState({\r\n isAuthenticated: loginDS?.isAuthenticated,\r\n });\r\n }\r\n }\r\n\r\n if (storeDset === \"_userinfo\")\r\n this.userInfoStateChange(ownStore.getState(\"_userinfo\"));\r\n\r\n if (storeDset === \"pageinfo\")\r\n this.pageStateChange(ownStore.getState(\"pageinfo\"));\r\n if (storeDset === \"notifyinfo\")\r\n appNotification(ownStore.getState(\"notifyinfo\"));\r\n if (storeDset === \"mediainfo\") {\r\n let mediaInfo = ownStore.getState(\"mediainfo\");\r\n mediaInfo && objVoiceRecorder.doAction(mediaInfo);\r\n }\r\n if (storeDset === \"downloadinfo\") {\r\n let downloadInfo = ownStore.getState(\"downloadinfo\");\r\n if (downloadInfo?.open) DownloadFileFromState(downloadInfo); //*Download base64 as file if any\r\n }\r\n\r\n if (storeDset === \"dsAppTheme\") {\r\n let dsAppTheme = ownStore.getState(\"dsAppTheme\");\r\n if(dsAppTheme)\r\n {\r\n appTheme.palette.mode = dsAppTheme?.mode ?? \"light\";\r\n appTheme.palette.primary.main = dsAppTheme?.primary_color?? \"#0b3eaf\";\r\n appTheme.palette.secondary.main = dsAppTheme?.secondary_color?? \"#f2f2f7\";\r\n\r\n this.applyAppOptions(\"ltr\");\r\n this.setState({});\r\n }\r\n }\r\n\r\n });\r\n\r\n this.applyAppOptions(\"ltr\");\r\n }\r\n\r\n async applyAppOptions(direction) {\r\n if (appTheme) {\r\n appTheme.direction = direction;\r\n this.theme = createTheme(appTheme);\r\n this.appJSS = create({ plugins: [...jssPreset().plugins, rtl()] });\r\n document.querySelector(\"body\").setAttribute(\"dir\", direction);\r\n if (appTheme?.header)\r\n document\r\n .querySelector(\"meta[name=theme-color]\")\r\n .setAttribute(\"content\", appTheme?.header);\r\n }\r\n }\r\n\r\n async componentDidMount() {\r\n await ExecuteLayoutEventMethods(whenAppInit); //*AppInit events from Initjson\r\n\r\n let authOK = await authServiceInstance.verifyLogin();\r\n\r\n ownStore.dispatch(authOK?.status ? authLogin() : authLogout()); //Redux\r\n const queryStringParams = queryString.parse(window.location.search);\r\n\r\n if (\r\n this.state.queryStringParams != \"\" &&\r\n this.state.queryStringParams != \"undefined\"\r\n ) {\r\n this.setState({\r\n authid: queryStringParams.authtoken,\r\n authemail: queryStringParams.email,\r\n });\r\n\r\n if (this.state.authemail != \"\" && this.state.authemail !== undefined) {\r\n this.doSignInSSO();\r\n }\r\n }\r\n\r\n this.setState({\r\n isPageLoading: false,\r\n });\r\n appTimer.runTimer();\r\n\r\n if (stylefile !== \"\") {\r\n this._loadCSS();\r\n }\r\n }\r\n\r\n async doSignInSSO() {\r\n try {\r\n // document.location.hash = '/yes';\r\n // this.props.history.replace({ pathname: `/home`})\r\n window.history.pushState(null, \"Home\", \"/\");\r\n // window.history.pushState({}, '')\r\n ownStore.dispatch(showAppBusy());\r\n await authServiceInstance.SSOlogin(\r\n this.state.authemail,\r\n this.state.authid\r\n );\r\n let authOK = await authServiceInstance.verifyLogin();\r\n if (authOK?.status) {\r\n if (authOK?.doNext) {\r\n ownStore.dispatch(hideAppBusy());\r\n try {\r\n let authEvents = JSON.parse(authOK.doNext);\r\n await ExecuteLayoutEventMethods(authEvents);\r\n } catch {}\r\n return;\r\n }\r\n authServiceInstance.continueLogin();\r\n return;\r\n }\r\n } catch (ex) {\r\n console.error(ex);\r\n }\r\n ownStore.dispatch(hideAppBusy()); //Hide loader if the authentication failed with an errorx\r\n\r\n ShowSnackBar(\"error\", \"Login Failed!\");\r\n }\r\n\r\n componentWillUnmount() {\r\n this.unsubscribe();\r\n clearInterval(this.timeInterval);\r\n }\r\n\r\n async userInfoStateChange(dsUserInfo) {\r\n if (dsUserInfo.uidirection !== this.state.uiDirection) {\r\n await this.applyAppOptions(dsUserInfo.uidirection ?? \"ltr\");\r\n\r\n this.setState({\r\n uiDirection: dsUserInfo.uidirection,\r\n });\r\n }\r\n }\r\n async pageStateChange(dsPageInfo) {\r\n let layoutInfo = dsPageInfo;\r\n let pInfo = layoutInfo;\r\n await ExecuteLayoutEventMethods(pInfo?.wheninit, pInfo); //Execute init functions of Loaded Page\r\n document.title = `${applicationTitle} ${\r\n layoutInfo?.title\r\n ? \" - \" + GetControlPropertyFromStoreOrRefData(layoutInfo?.title)\r\n : \"\"\r\n }`;\r\n this.setState(\r\n {\r\n pageInfo: pInfo,\r\n },\r\n async () => {\r\n await ExecuteLayoutEventMethods(pInfo?.whenload, pInfo); //Execute init functions of Loaded Page\r\n appTimer.pageTimerExecs = pInfo?.whentimer;\r\n }\r\n );\r\n }\r\n\r\n _loadCSS() {\r\n require(\"./Styles/\" + stylefile);\r\n }\r\n\r\n _getComponentToStart(routerProps) {\r\n // let params = queryString.parse(this.props.location.search)\r\n // const query = new URLSearchParams(this.props.location.search);\r\n //const token = query.get('token');\r\n\r\n //const search = useLocation().search;\r\n // const id = new URLSearchParams(search).get(\"id\");\r\n\r\n if (!this.state.isAuthenticated && authMethode === \"cookie\") {\r\n window.location = apiRoot;\r\n return <></>;\r\n }\r\n // alert(\"Cookie Auth Missing\")\r\n\r\n return this.state.isAuthenticated ? (\r\n <AuthorizedComponent pageInfo={this.state.pageInfo} {...routerProps} />\r\n ) : (\r\n <UnAuthorizedComponent {...routerProps} />\r\n );\r\n }\r\n\r\n render() {\r\n if (this.state.isPageLoading)\r\n return (\r\n <Backdrop open={this.state.isPageLoading}>\r\n <CircularProgress color=\"inherit\" />\r\n </Backdrop>\r\n );\r\n let style = GetControlPropertyFromStoreOrRefData(\"[customCSS]\");\r\n\r\n return (\r\n <>\r\n {(style && style.length>0) &&\r\n <Helmet>\r\n <style id=\"globalstyle\">{style}\r\n </style> \r\n </Helmet>}\r\n <StylesProvider jss={this.appJSS}>\r\n <ThemeProvider theme={this.theme}>\r\n <AppBackDrop />\r\n <Router>\r\n <RouteSwitch>\r\n <Route\r\n exact\r\n path=\"/\"\r\n render={() => this._getComponentToStart(null)}\r\n ></Route>\r\n <Route\r\n path=\"/:permalink/:id\"\r\n render={(routerProps) => this._getComponentToStart(routerProps)}\r\n ></Route>\r\n <Route\r\n path=\"/:permalink\"\r\n render={(routerProps) => this._getComponentToStart(routerProps)}\r\n ></Route>\r\n <Route\r\n path=\"/:permalink?authtoken=:authtoken&email=:email\"\r\n render={(routerProps) => this._getComponentToStart(routerProps)}\r\n ></Route>\r\n </RouteSwitch>\r\n </Router>\r\n <AppSnackBar />\r\n <AppDialog />\r\n <AppMenu />\r\n </ThemeProvider>\r\n </StylesProvider>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nexport default App;\r\n","import { appSWRegistration, appNotifPermission } from \"../../../General/globals\";\r\nimport { HideAppNotification } from \"../../../General/globalFunctions\";\r\nimport { getProcessedArgs } from \"../../../General/commonFunctions\";\r\nimport { ownStore } from \"../../../AppOwnState/ownState\";\r\n// import store from \"../../../AppRedux/store\";\r\n\r\nexport default function appNotification(notifyInfo) {\r\n\r\n if (notifyInfo?.open && appNotifPermission && appSWRegistration && notifyInfo?.args) {\r\n let refData = null;\r\n if (notifyInfo?.dset)\r\n refData = ownStore.getState(notifyInfo?.dset); \r\n if (refData && Array.isArray(refData)) {\r\n refData.forEach(t => {\r\n let notiArgs = getProcessedArgs(notifyInfo?.args, t);\r\n showNotif(notiArgs);\r\n });\r\n\r\n }\r\n else {\r\n let notiArgs = getProcessedArgs(notifyInfo?.args, refData);\r\n showNotif(notiArgs);\r\n }\r\n }\r\n\r\n function showNotif(notiArgs) {\r\n if (notiArgs?.body) {\r\n const options = {\r\n body: notiArgs?.body,\r\n icon: notiArgs?.icon || '/res/logo.png'\r\n };\r\n appSWRegistration.showNotification(notiArgs?.title || \"FactsBUD-E\", options);\r\n HideAppNotification();\r\n }\r\n }\r\n\r\n}\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport './mui4migrate.css';\r\nimport { initGlobalValues, setSWRegistration, setNotifPermission } from './General/globals';\r\nimport ServiceBase from './Services/_serviceBase';\r\n// import { AppStart } from './AppStart';\r\n// import { ServiceWorkerProvider } from './useServiceWorker';\r\nimport * as serviceWorker from './serviceWorker';\r\nimport App from './App';\r\nimport { RemoveLastDialog } from './General/commonFunctions';\r\nimport 'devextreme/dist/css/dx.light.css';\r\nimport 'devexpress-gantt/dist/dx-gantt.css';\r\n\r\n\r\nasync function startApp() {\r\n let _serviceBase = new ServiceBase();\r\n let appOptions = await _serviceBase.loadFromFileURL(\"init.json?ver=\" + new Date().toISOString());\r\n let _offLayout = await _serviceBase.loadFromFileURL(\"offline.json?ver=\" + new Date().toISOString());\r\n\r\n initGlobalValues(appOptions, _offLayout);\r\n\r\n ReactDOM.render(\r\n // <ServiceWorkerProvider>\r\n <App />\r\n // </ServiceWorkerProvider>\r\n , document.getElementById('root'));\r\n\r\n}\r\n\r\n \r\n// The below code is to prevent users pressing back button accidentally, that lets the application to close. \r\n// (function preventBackButton() {\r\n// window.addEventListener('load', function () {\r\n// window.history.pushState({}, '')\r\n// });\r\n\r\n// window.addEventListener('popstate', function () {\r\n// window.history.pushState({}, '')\r\n// });\r\n// })();\r\n\r\nstartApp();\r\n\r\nwindow.addEventListener('load', () => window.history.pushState({}, ''));\r\nwindow.addEventListener('popstate', (e) => RemoveLastDialog(e));\r\n\r\nserviceWorker.register(\r\n {\r\n onUpdate: registration => {\r\n const waitingServiceWorker = registration.waiting\r\n if (waitingServiceWorker) {\r\n waitingServiceWorker.addEventListener(\"statechange\", event => {\r\n if (event.target.state === \"activated\") {\r\n window.location.reload();\r\n }\r\n });\r\n waitingServiceWorker.postMessage({ type: \"SKIP_WAITING\" });\r\n }\r\n },\r\n // onSuccess: registration => { },\r\n // onStart: registration => {\r\n // const title = 'Simple Title';\r\n // const options = {\r\n // body: 'Simple piece of body text.\\nSecond line of body text :)'\r\n // };\r\n // registration.showNotification(title, options);\r\n // }\r\n });\r\nnavigator.serviceWorker &&\r\n navigator.serviceWorker.ready.then(function (registration) {\r\n // registration.showNotification('Vibration Sample', {\r\n // body: 'Buzz! Buzz!',\r\n // icon: '../images/touch/chrome-touch-icon-192x192.png',\r\n // vibrate: [200, 100, 200, 100, 200, 100, 200],\r\n // tag: 'vibration-sample'\r\n // });\r\n setSWRegistration(registration);\r\n });\r\n\r\n\r\nshowNotification();\r\n\r\n\r\n\r\nfunction showNotification() {\r\n 'Notification' in window &&\r\n Notification.requestPermission(function (result) {\r\n if (result === 'granted') {\r\n setNotifPermission(true);\r\n }\r\n });\r\n}\r\n\r\n\r\n\r\n","import { SetCreateDataSet, MergeDataSet } from \"./commonFunctions\";\r\nimport { disableLocation } from \"../General/globals\";\r\n\r\n\r\nexport const GPSLocation = async (options) => {\r\n if(disableLocation)\r\n {}\r\n else \r\n { \r\n await navigator.geolocation.getCurrentPosition(\r\n position => {\r\n localStorage.setItem(\"devloc\", JSON.stringify({\r\n lat: position.coords.latitude,\r\n long: position.coords.longitude\r\n }));\r\n },\r\n error => {\r\n switch (error.code) {\r\n case error.PERMISSION_DENIED:\r\n ShowSnackBar(\"warning\", \"Please enable location on your device!\");\r\n break;\r\n case error.POSITION_UNAVAILABLE:\r\n console.log(\"Location: Not Available!\");\r\n break;\r\n case error.TIMEOUT:\r\n console.log(\"Location: Request Timed Out!\");\r\n break;\r\n case error.UNKNOWN_ERROR:\r\n console.log(\"Location: Unknown Error!\");\r\n break;\r\n default: break;\r\n }\r\n \r\n }, \r\n options\r\n );\r\n }\r\n \r\n}\r\n\r\nexport function ShowSnackBar(type, message) {\r\n HideSnackBar();\r\n SetCreateDataSet(\r\n { \"dset\": \"snackinfo\" },\r\n {\r\n \"open\": true,\r\n \"type\": type,\r\n \"message\": message\r\n }\r\n );\r\n}\r\n\r\nexport function HideSnackBar() {\r\n MergeDataSet(\r\n { \"dset\": \"snackinfo\" },\r\n {\r\n \"open\": false\r\n }\r\n );\r\n}\r\n\r\nexport function ShowAppNotification(notiArgs) {\r\n SetCreateDataSet(\r\n { \"dset\": \"notifyinfo\" },\r\n {\r\n \"open\": true,\r\n \"dset\": notiArgs?.dset,\r\n \"args\": notiArgs?.args\r\n }\r\n );\r\n}\r\n\r\nexport function HideAppNotification() {\r\n MergeDataSet(\r\n { \"dset\": \"notifyinfo\" },\r\n {\r\n \"open\": false\r\n }\r\n );\r\n}\r\n\r\nexport function ShowAppMenu(anchorEl, items, layout, title, refData) {\r\n SetCreateDataSet(\r\n { \"dset\": \"menuinfo\" },\r\n {\r\n \"open\": true,\r\n \"anchor\": anchorEl,\r\n \"layout\": layout,\r\n \"items\": items,\r\n \"title\": title,\r\n \"refdata\": refData\r\n }\r\n );\r\n}\r\n\r\nexport function HideAppMenu() {\r\n MergeDataSet(\r\n { \"dset\": \"menuinfo\" },\r\n {\r\n \"open\": false\r\n }\r\n );\r\n}\r\n\r\n\r\nexport function ShowDialog(title, description, btn1, btn2) {\r\n SetCreateDataSet(\r\n { \"dset\": \"dialoginfo\" },\r\n {\r\n \"open\": true,\r\n \"title\": title,\r\n \"description\": description,\r\n \"btn1\": btn1,\r\n \"btn2\": btn2\r\n }\r\n );\r\n}\r\n\r\nexport function HideDialog() {\r\n MergeDataSet(\r\n { \"dset\": \"dialoginfo\" },\r\n {\r\n \"open\": false\r\n }\r\n );\r\n}\r\n\r\n\r\nexport function DownloadFileFromState(dsDownloadInfo) {\r\n SetCreateDataSet({ \"dset\": \"downloadinfo\" }, null); //Turning off downloadInfo dataset to prevent multiple executions\r\n\r\n const linkSource = (dsDownloadInfo.mime ?? \"\") + (dsDownloadInfo.base64 ?? \"\");\r\n if (dsDownloadInfo.preview) {\r\n // window.open(linkSource, '_blank', 'fullscreen=yes');\r\n let pdfWindow = window.open(\"\", '_blank');\r\n // pdfWindow.document.write(\r\n // \"<iframe width='100%' height='100%' src='\" + linkSource + \"'></iframe>\");\r\n // pdfWindow.document.write(\r\n // `<embed type='application/pdf' width='100%' height='100%' src='${linkSource}'>\r\n // <iframe src = 'https://docs.google.com/viewer?&embedded=true' ></iframe>\r\n // </embed>`);\r\n pdfWindow.document.write(\r\n `<script src=\"/xtrascripts/pdfviewer/pdfobject.min.js\"></script>\r\n <div id=\"example1\"></div>\r\n <script>PDFObject.embed(\"${linkSource}\", \"#example1\");</script>`);\r\n }\r\n else {\r\n // const downloadLink = document.createElement('a');\r\n // document.body.appendChild(downloadLink);\r\n\r\n // downloadLink.href = linkSource;\r\n // downloadLink.target = '_self';\r\n // downloadLink.download = (dsDownloadInfo.filename ?? \"Document\");\r\n // downloadLink.click();\r\n // document.body.removeChild(downloadLink);\r\n window.location = linkSource;\r\n }\r\n}","\r\nexport {\r\n storeDataset, storeDatasetField, mergeObjectDataset,\r\n storeUser, authLogin, authLogout, showAppBusy, hideAppBusy\r\n} from \"./ownStateActions\";","import {\r\n STORE_DATASET, STORE_DATASET_FIELD,\r\n STORE_USER, AUTH_LOGIN, AUTH_LOGOUT, SHOW_APP_BUSY, HIDE_APP_BUSY, MERGE_OBJECT_DATASET, MERGE_ARRAY_DATASET\r\n} from './ownStateActionTypes';\r\n\r\nexport const storeDataset = (payload) => {\r\n return {\r\n type: STORE_DATASET,\r\n payload: payload\r\n }\r\n}\r\n\r\nexport const mergeObjectDataset = (payload) => {\r\n return {\r\n type: MERGE_OBJECT_DATASET,\r\n payload: payload\r\n }\r\n}\r\n\r\nexport const mergeArrayDataset = (payload) => {\r\n return {\r\n type: MERGE_ARRAY_DATASET,\r\n payload: payload\r\n }\r\n}\r\n\r\n\r\nexport const storeDatasetField = (payload) => {\r\n return {\r\n type: STORE_DATASET_FIELD,\r\n payload: payload\r\n }\r\n}\r\n\r\n\r\n//Login && User below\r\n\r\nexport const storeUser = (payload) => {\r\n return {\r\n type: STORE_USER,\r\n payload: payload\r\n }\r\n}\r\n\r\n\r\nexport const authLogin = () => {\r\n return {\r\n type: AUTH_LOGIN\r\n }\r\n}\r\n\r\nexport const authLogout = () => {\r\n return {\r\n type: AUTH_LOGOUT\r\n }\r\n}\r\n\r\nexport const showAppBusy = () => {\r\n return {\r\n type: SHOW_APP_BUSY\r\n }\r\n}\r\n\r\nexport const hideAppBusy = () => {\r\n return {\r\n type: HIDE_APP_BUSY\r\n }\r\n}\r\n","export const STORE_DATASET = 'STORE_DATASET';\r\nexport const STORE_DATASET_FIELD = 'STORE_DATASET_FIELD';\r\nexport const MERGE_OBJECT_DATASET = 'MERGE_OBJECT_DATASET';\r\nexport const MERGE_ARRAY_DATASET = 'MERGE_ARRAY_DATASET';\r\n//LOGIN && USER\r\n\r\nexport const STORE_USER = 'STORE_USER';\r\nexport const AUTH_LOGIN = 'AUTH_LOGIN';\r\nexport const AUTH_LOGOUT = 'AUTH_LOGOUT';\r\nexport const SHOW_APP_BUSY = 'SHOW_APP_BUSY';\r\nexport const HIDE_APP_BUSY = 'HIDE_APP_BUSY'; \r\n","class StorageService {\r\n\r\n getJsonValue(key, sourceStorage = null) {\r\n if (!sourceStorage) sourceStorage = this._getStorage();\r\n let storageValue = sourceStorage.getItem(key);\r\n if (storageValue) {\r\n let jsonValue = decodeURIComponent(escape(window.atob(storageValue))); ;\r\n if (jsonValue) {\r\n let finalValue = JSON.parse(jsonValue);\r\n if (finalValue) return finalValue;\r\n }\r\n }\r\n return null;\r\n }\r\n \r\n setJsonValue(key, data, sourceStorage = null) {\r\n if (data && key) {\r\n if (!sourceStorage) sourceStorage = this._getStorage();\r\n\r\n let jsonValue = JSON.stringify(data);\r\n if (jsonValue) {\r\n let finalValue = btoa(unescape(encodeURIComponent(jsonValue))) ;\r\n if (finalValue) {\r\n sourceStorage.setItem(key, finalValue);\r\n }\r\n }\r\n }\r\n }\r\n\r\n clearStorage(key) {\r\n let sourceStorage = this._getStorage();\r\n sourceStorage.removeItem(key);\r\n }\r\n\r\n _getStorage() {\r\n let storeType = localStorage.getItem(\"_stgType\");\r\n if (storeType && storeType === \"pers\") {\r\n return localStorage;\r\n }\r\n return sessionStorage;\r\n }\r\n\r\n setStatePersistance(shouldPersist) {\r\n if (shouldPersist) localStorage.setItem(\"_stgType\", \"pers\")\r\n else localStorage.setItem(\"_stgType\", \"nopers\")\r\n }\r\n\r\n}\r\n\r\nexport default StorageService; ","import { differenceInMilliseconds, startOfToday, addMilliseconds } from \"date-fns\";\r\nimport { format } from \"date-fns/esm\";\r\nimport { getTZPrefix } from \"./globals\";\r\n\r\nexport const DATEDIFF = \"(datediff)\", DATEDIFFNTZ = \"(datediffntz)\", IFNULL = \"(ifnull)\", IFEMPTY = \"(ifempty)\",\r\n IFWHITESPACE = \"(ifwhitespace)\",\r\n FORMAT = \"(dtformat)\", FORMATNTZ = \"(dtformatntz)\", JOINSTR = \"(joinstr)\",\r\n EQUALS = \"(eq)\", NOTEQUALS = \"(neq)\", IFTRUE = \"(iftrue)\", IFFALSE = \"(iffalse)\", BOOL_NOT = \"(not)\",\r\n STRAFTER = \"(strafter)\", STRAFTER_END = \"(strafterend)\", STRBEFORE = \"(strbefore)\", STRBEFORE_END = \"(strbeforeend)\",\r\n STR_REPLACE = \"(strreplace)\", STR_REPLACE_ALL = \"(strreplaceall)\",\r\n TOSTRING = \"(tostr)\", JSON_PARSE = \"(jsonparse)\",VERIFY_JSON = \"(verifyjson)\", \r\n MATH_ADD = \"(+)\", MATH_SUB = \"(-)\", MATH_MULTI = \"(*)\", MATH_DIV = \"(/)\", MATH_MOD = \"(%)\", MATH_POW = \"(^)\",\r\n LESS_THAN = \"(<)\", GREATER_THAN = \"(>)\", LESSTHAN_OR_EQUAL = \"(<=)\", GREATERTHAN_OR_EQUAL = \"(>=)\",\r\n LOGICAL_OR = \"(or)\", LOGICAL_AND = \"(and)\", VAL_ABS = \"(abs)\",\r\n IF_NAN = \"(ifnan)\", NUM_FORMAT = \"(numformat)\",\r\n LIST_REVERSE = \"(listreverse)\", LIST_SUM = \"(listsum)\", LIST_COUNT = \"(listcount)\", LIST_INDEX = \"(listindex)\",\r\n LIST_HAS = \"(listhas)\", LIST_FILTER = \"(listfilter)\", LIST_DISTINCT = \"(listdistinct)\",\r\n LIST_JOIN = \"(listjoin)\", LIST_SORT = \"(listsort)\",\r\n OBJ_TYPE = \"(type)\", OBJ_GET = \"(get)\", TO_INT = \"(toint)\";\r\nexport const funcs = [DATEDIFF, DATEDIFFNTZ, IFNULL, IFEMPTY, IFWHITESPACE, FORMAT, FORMATNTZ, JOINSTR,\r\n EQUALS, NOTEQUALS, IFTRUE, IFFALSE, BOOL_NOT, TOSTRING, STRAFTER, STRAFTER_END, STRBEFORE, STRBEFORE_END,\r\n STR_REPLACE, STR_REPLACE_ALL, JSON_PARSE,VERIFY_JSON,\r\n LESS_THAN, GREATER_THAN, LESSTHAN_OR_EQUAL, GREATERTHAN_OR_EQUAL, LOGICAL_OR, LOGICAL_AND, VAL_ABS,\r\n MATH_ADD, MATH_SUB, MATH_MULTI, MATH_DIV, MATH_MOD, MATH_POW, IF_NAN, NUM_FORMAT,\r\n LIST_REVERSE, LIST_COUNT, LIST_SUM, LIST_INDEX, LIST_HAS, LIST_FILTER, LIST_DISTINCT, LIST_JOIN, LIST_SORT,\r\n OBJ_TYPE, OBJ_GET, TO_INT];\r\n\r\nexport function dyadicFuncExecutor(funcName, firstValue, secondValue) {\r\n let firstValMath = 0;\r\n let secondValMath = 0;\r\n if ([MATH_ADD, MATH_SUB, MATH_MULTI, MATH_DIV, MATH_MOD, MATH_POW].includes(funcName)) {\r\n firstValMath = parseFloat(firstValue);\r\n secondValMath = parseFloat(secondValue);\r\n if (isNaN(firstValMath)) firstValMath = 0;\r\n if (isNaN(secondValMath)) secondValMath = 0;\r\n }\r\n switch (funcName) {\r\n\r\n case DATEDIFF:\r\n return _dateDiffExec(firstValue, secondValue);\r\n case DATEDIFFNTZ:\r\n return _dateDiffExec(firstValue, secondValue, true);\r\n case IFNULL:\r\n return _ifNullExec(firstValue, secondValue);\r\n case IFEMPTY:\r\n return _ifNullOrEmptyExec((firstValue ?? \"\"), secondValue);\r\n case IFWHITESPACE:\r\n return _ifNullOrEmptyExec((firstValue ?? \"\").trim(), secondValue);\r\n case FORMAT:\r\n return _formatDateTime(firstValue, secondValue);\r\n case FORMATNTZ:\r\n return _formatDateTime(firstValue, secondValue, true);\r\n case JOINSTR:\r\n return (firstValue ?? \"\") + (secondValue ?? \"\");\r\n case STRAFTER:\r\n return firstValue.substr(firstValue.indexOf(secondValue) + 1);\r\n case STRAFTER_END:\r\n return firstValue.substr(firstValue.lastIndexOf(secondValue) + 1);\r\n case STRBEFORE:\r\n return firstValue.substr(0, firstValue.indexOf(secondValue));\r\n case STRBEFORE_END:\r\n return firstValue.substr(0, firstValue.lastIndexOf(secondValue));\r\n case STR_REPLACE:\r\n let replaceValues = secondValue.split(\"=>\");\r\n return firstValue.replace(replaceValues[0], replaceValues[1]);\r\n case STR_REPLACE_ALL:\r\n let replaceValuesAll = secondValue.split(\"=>\");\r\n return firstValue.replaceAll(replaceValuesAll[0], replaceValuesAll[1]);\r\n case EQUALS:\r\n if (secondValue == null) return secondValue == firstValue;\r\n return secondValue.split(\"||\").some(el => el == firstValue); //No type checking\r\n case NOTEQUALS:\r\n if (secondValue == null) return secondValue != firstValue;\r\n return secondValue?.split(\"||\").every(el => el != firstValue); //No type checking\r\n case LESS_THAN:\r\n return firstValue < secondValue;\r\n case LESSTHAN_OR_EQUAL:\r\n return firstValue <= secondValue;\r\n case GREATER_THAN:\r\n return firstValue > secondValue;\r\n case GREATERTHAN_OR_EQUAL:\r\n return firstValue >= secondValue;\r\n case LOGICAL_OR:\r\n return firstValue || secondValue;\r\n case LOGICAL_AND:\r\n return firstValue && secondValue;\r\n case TOSTRING:\r\n let indent = parseInt(secondValue);\r\n if(isNaN(indent)) indent = secondValue;\r\n return JSON.stringify(firstValue,null, indent);\r\n case JSON_PARSE:\r\n return JSON.parse(firstValue);\r\n case VERIFY_JSON:\r\n try{ \r\n JSON.parse(firstValue)\r\n return true; \r\n }catch{}\r\n return false; \r\n case MATH_ADD:\r\n return ((firstValMath ?? 0) + (secondValMath ?? 0)).toFixed(6);\r\n case MATH_SUB:\r\n return (firstValMath ?? 0) - (secondValMath ?? 0).toFixed(6);\r\n case MATH_MULTI:\r\n return (firstValMath ?? 0) * (secondValMath ?? 0).toFixed(6);\r\n case MATH_DIV:\r\n return (firstValMath ?? 0) / (secondValMath ?? 0).toFixed(6);\r\n case MATH_MOD:\r\n return (firstValMath ?? 0) % (secondValMath ?? 0).toFixed(6);\r\n case MATH_POW:\r\n return Math.pow((firstValMath ?? 0), (secondValMath ?? 0)).toFixed(6);\r\n case TO_INT:\r\n return parseInt(firstValue);\r\n case IF_NAN:\r\n if (isNaN(firstValue)) return secondValue;\r\n else return firstValue;\r\n case NUM_FORMAT:\r\n return formatNumber(firstValue, secondValue);\r\n case VAL_ABS:\r\n return Math.abs(firstValue);\r\n case LIST_SUM:\r\n return calculateListSummary(firstValue, secondValue);\r\n case LIST_DISTINCT:\r\n let distinctKeys = firstValue.map(t => {\r\n let test = t[secondValue]\r\n return test;\r\n })\r\n .filter((value, index, self) => {\r\n let truthy = self.findIndex(t => t === value) === index;\r\n return truthy;\r\n }\r\n );\r\n return distinctKeys.map(t => { return { [secondValue]: t }; });\r\n case LIST_JOIN:\r\n return firstValue.join ? firstValue?.join(secondValue ?? \"\") : firstValue;\r\n case LIST_REVERSE:\r\n if (Array.isArray(firstValue)) {\r\n return firstValue?.slice()?.reverse();\r\n }\r\n return firstValue;\r\n case LIST_COUNT:\r\n return calculateListCount(firstValue);\r\n case LIST_SORT:\r\n return sortTheList(firstValue, secondValue);\r\n case LIST_HAS:\r\n let lisCount = calculateListCount(firstValue);\r\n return (secondValue > 0 && secondValue < lisCount); //For array only\r\n\r\n case LIST_INDEX:\r\n return getListIndexMatchingValue(firstValue, secondValue);\r\n case LIST_FILTER:\r\n return getFilteredList(firstValue, secondValue);\r\n case BOOL_NOT:\r\n return !firstValue;\r\n case OBJ_TYPE:\r\n if (firstValue === null || typeof firstValue === \"undefined\") return \"null\";\r\n let valType = typeof firstValue;\r\n if (valType === \"object\" && Array.isArray(firstValue)) valType = \"array\";\r\n return valType;\r\n case OBJ_GET:\r\n if (typeof firstValue === \"object\") {\r\n return firstValue[secondValue];\r\n }\r\n return firstValue;\r\n default:\r\n return null;\r\n }\r\n}\r\n\r\n\r\nexport function formatNumber(number, format) {\r\n let numSplit = number?.toString().split(\".\");\r\n if (format?.startsWith(\"N\") && numSplit) {\r\n let prec = parseInt(format.replace(\"N\", \"\"));\r\n // let reg = new RegExp(\"\", \"g\"); \r\n let whole = numSplit[0].toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1,\");\r\n let decim = (numSplit.length > 1 && prec > 0 ? \"0.\" + numSplit[1] : \"0.0\");\r\n decim = parseFloat(decim).toFixed(prec);\r\n let returnVal = whole + (decim.length > 1 ? \".\" + decim.split(\".\")[1] : \"\");\r\n\r\n return returnVal;\r\n }\r\n else {\r\n let toFix = parseInt(format);\r\n let valNumber = parseFloat(number);\r\n if (isNaN(valNumber)) return number;\r\n if (isNaN(toFix)) toFix = 2;\r\n return valNumber.toFixed(toFix);\r\n }\r\n}\r\n\r\nfunction calculateListSummary(dsetArray, fieldName) {\r\n let total = 0;\r\n if (Array.isArray(dsetArray)) {\r\n for (let di of dsetArray) {\r\n let currentItem = di[fieldName];\r\n if (typeof currentItem !== 'undefined') {\r\n let ciValue = parseFloat(currentItem);\r\n if (!isNaN(ciValue)) {\r\n total += ciValue;\r\n }\r\n }\r\n }\r\n }\r\n return total;\r\n}\r\n\r\nfunction getListIndexMatchingValue(dsetArray, fieldNameAndValue) {\r\n if (Array.isArray(dsetArray)) {\r\n let fieldArray = fieldNameAndValue.split(\"||\");\r\n return dsetArray.findIndex(t => {\r\n let assertedMatches = [];\r\n for (let fa of fieldArray) {\r\n if (fa.includes(\"=>\")) {\r\n let keyfa = fa.split(\"=>\");\r\n assertedMatches.push(t[keyfa[0]] == keyfa[1]);\r\n }\r\n else {\r\n assertedMatches.push(t == fa);\r\n }\r\n }\r\n return assertedMatches.every(t => t === true);\r\n });\r\n\r\n }\r\n return -1;\r\n}\r\n\r\nfunction sortTheList(dsetArray, sortKey) {\r\n let sortedArray = dsetArray ; \r\n if (Array.isArray(dsetArray) && sortKey) {\r\n sortedArray = dsetArray.sort((a, b) => {\r\n if (a[sortKey] < b[sortKey]) return -1;\r\n if (a[sortKey] > b[sortKey]) return 1;\r\n return 0;\r\n })\r\n }\r\n return sortedArray; \r\n}\r\n\r\nfunction getFilteredList(dsetArray, fieldNameAndValue) {\r\n if (Array.isArray(dsetArray)) {\r\n let fieldArray = fieldNameAndValue.split(\"||\");\r\n return dsetArray.filter(t => {\r\n let assertedMatches = [];\r\n for (let fa of fieldArray) {\r\n\r\n if(fa.includes(\"<=>\")){\r\n let keyfa = fa.split(\"<=>\");\r\n assertedMatches.push(t[keyfa[0]] != keyfa[1]);\r\n continue;\r\n }\r\n\r\n if(fa.includes(\"=>\")){\r\n let keyfa = fa.split(\"=>\");\r\n assertedMatches.push(t[keyfa[0]] == keyfa[1]);\r\n }\r\n \r\n }\r\n return assertedMatches.every(t => t === true);\r\n });\r\n\r\n }\r\n return [];\r\n}\r\nfunction calculateListCount(dsetArray) {\r\n let count = 0;\r\n if (Array.isArray(dsetArray)) {\r\n count = dsetArray.length;\r\n }\r\n return count;\r\n}\r\nfunction _dateDiffExec(firstValue, secondValue, noTimeZone = false) {\r\n if (!noTimeZone) {\r\n if (typeof firstValue === \"string\") firstValue += getTZPrefix();\r\n if (typeof secondValue === \"string\") secondValue += getTZPrefix();\r\n }\r\n let firstDateValue = Date.parse(firstValue),\r\n secondDateValue = Date.parse(secondValue);\r\n if (!firstDateValue) firstDateValue = new Date();\r\n if (!secondDateValue) secondDateValue = new Date();\r\n let millis = differenceInMilliseconds(secondDateValue, firstDateValue);\r\n return addMilliseconds(startOfToday(), millis);\r\n}\r\n\r\nconst _ifNullExec = (firstValue, secondValue) => firstValue ?? secondValue; //Return second value if first value is null\r\n\r\nconst _ifNullOrEmptyExec = (firstValue, secondValue) => {\r\n if ( firstValue === \"\") return secondValue;\r\n else return firstValue;\r\n}; //Return second value if first value is null or empty\r\n\r\n\r\nexport function _formatDateTime(firstValue, formatString, noTimeZonePrefix = false) {\r\n try {\r\n if (typeof firstValue === \"string\" && !noTimeZonePrefix) firstValue += getTZPrefix();\r\n let dateValue = Date.parse(firstValue);\r\n\r\n if (!dateValue) return null; // dateValue = new Date();\r\n if (!formatString) formatString = \"dd-MMM-yyyy\";\r\n return format(dateValue, formatString);\r\n }\r\n catch {\r\n return firstValue;\r\n }\r\n}","// import store from \"../AppRedux/store\";\r\nimport { storeDataset, storeDatasetField } from \"../AppOwnState\";\r\nimport { pageServiceInstance, authServiceInstance, userMenuStorageKey, apiRoot } from \"./globals\";\r\nimport { mergeObjectDataset, mergeArrayDataset, showAppBusy, hideAppBusy } from \"../AppOwnState/ownStateActions\";\r\nimport { startOfToday } from \"date-fns\";\r\nimport { endOfToday } from \"date-fns/esm\";\r\nimport { funcs, dyadicFuncExecutor, IFTRUE, IFFALSE } from \"./funcExecutor\";\r\nimport { GPSLocation, ShowAppMenu, ShowAppNotification, ShowDialog, ShowSnackBar } from \"./globalFunctions\";\r\nimport StorageService from \"../Services/storageService\";\r\nimport deepmerge from \"deepmerge\";\r\nimport { ownStore } from \"../AppOwnState/ownState\";\r\n\r\nexport async function _loadProcDataToDataSet(serverDataset, eventInfo, callBackFunction, refData) {\r\n\r\n if (serverDataset && eventInfo) {\r\n if (eventInfo.ignoreempty &&\r\n (typeof serverDataset.length !== \"undefined\") &&\r\n serverDataset.length <= 0) return;\r\n let dataSetName = GetControlPropertyFromStoreOrRefData(eventInfo.dset, refData);\r\n if (dataSetName) {\r\n if (eventInfo.column && serverDataset?.length > 0) { //Select JSON Data stored in a Column in Dataset; Check the PopupLayout Info Scaffold JSON; It returns the whole dataset; But we need only JSON stored in layoutinfo column\r\n let columnValue = serverDataset[eventInfo?.row ?? 0][eventInfo.column];\r\n if (!columnValue) return;\r\n try {\r\n if (dataSetName === \"popupinfo\") { //if its [lastpopup] change it to popupname (Because we really cant attach popup identifying information to every event inside layout For eg. Button click cannot know the popup button belongs to )\r\n columnValue = columnValue.replaceAll(\"[lastpopup]\", eventInfo.section);\r\n }\r\n if(eventInfo.nojsonparse) serverDataset = columnValue;\r\n else serverDataset = JSON.parse(columnValue);\r\n }\r\n catch {\r\n return;\r\n }\r\n }\r\n if (typeof eventInfo.row !== undefined && serverDataset.length > eventInfo.row) {\r\n let rowValue = serverDataset[eventInfo.row];\r\n serverDataset = rowValue;\r\n }\r\n let storeDataSet = ownStore.getState(dataSetName);\r\n let currentDataSet = storeDataSet;\r\n if (eventInfo.section && currentDataSet) currentDataSet = currentDataSet[eventInfo.section]; //If section name is provided in event consider it as object of multiple datasets; usually for popups\r\n // let\r\n // dstr1 = JSON.stringify(currentDataSet),\r\n // dstr2 = JSON.stringify(serverDataset); //Removed => Just to compare the exisiting Redux Object and new Object; Why shuld we change state if no changes\r\n\r\n // if (dstr1 !== dstr2) {\r\n if (eventInfo.section) {\r\n if (dataSetName === \"local\") {\r\n let dstr2 = JSON.stringify(serverDataset);\r\n localStorage.setItem(eventInfo.section, dstr2);\r\n }\r\n else if (dataSetName === \"session\") {\r\n let dstr2 = JSON.stringify(serverDataset);\r\n sessionStorage.setItem(eventInfo.section, dstr2);\r\n }\r\n else {\r\n if (dataSetName === \"popupinfo\") {\r\n // if(serverDataset ) serverDataset.popupid = eventInfo.section; //Just add the section name as popupid for filtering of popups in lastpopup resolution section\r\n window.history.pushState({}, window.location.hash);//If a new popup added, just add a history to enable back click\r\n }\r\n ownStore.dispatch(storeDataset( //Redux\r\n {\r\n dataSetName: dataSetName,\r\n data: { ...storeDataSet, ...{ [eventInfo.section]: serverDataset } }\r\n }\r\n ));\r\n }\r\n }\r\n else {\r\n\r\n ownStore.dispatch(storeDataset( //Redux\r\n {\r\n dataSetName: dataSetName,\r\n data: serverDataset\r\n }\r\n ));\r\n }\r\n //}\r\n\r\n if (callBackFunction) callBackFunction(serverDataset);\r\n }\r\n\r\n }\r\n}\r\n\r\nexport function SetCreateDataSet(dataInfo, dataObject, refData) {\r\n if (dataInfo) {\r\n let dataSetName = GetControlPropertyFromStoreOrRefData(dataInfo.dset, refData);\r\n ownStore.dispatch(storeDataset( //Redux\r\n {\r\n dataSetName: dataSetName,\r\n data: dataObject\r\n }\r\n ));\r\n }\r\n}\r\n\r\nexport function MergeDataSet(dataInfo, dataObject, refData) {\r\n if (dataInfo) {\r\n let dataSetName = GetControlPropertyFromStoreOrRefData(dataInfo.dset, refData);\r\n ownStore.dispatch(mergeObjectDataset( //Redux\r\n {\r\n dataSetName: dataSetName,\r\n data: dataObject\r\n }\r\n ));\r\n }\r\n}\r\n\r\nexport function DeepMergeDataSet(dataInfo, sourceObject, dataObject, refData) {\r\n if (dataInfo) {\r\n dataObject = dataObject ?? {};\r\n let dataSetName = GetControlPropertyFromStoreOrRefData(dataInfo.dset, refData);\r\n let mergedObject = deepmerge((sourceObject ?? {}), dataObject,\r\n { arrayMerge: (destinationArray, sourceArray, options) => sourceArray }\r\n );\r\n ownStore.dispatch(storeDataset( //Redux\r\n {\r\n dataSetName: dataSetName,\r\n data: mergedObject\r\n }\r\n ));\r\n }\r\n}\r\n\r\nexport function MergeDataSetArray(dataInfo, dataObject, index, mode, refData) {\r\n if (dataInfo) {\r\n let dataSetName = GetControlPropertyFromStoreOrRefData(dataInfo.dset, refData);\r\n\r\n ownStore.dispatch(mergeArrayDataset( //Redux\r\n {\r\n dataSetName: dataSetName,\r\n data: dataObject,\r\n index: index,\r\n mode: mode\r\n }\r\n ));\r\n }\r\n}\r\n\r\nexport function SetCreateDataSetField(dataInfo, refData) {\r\n if (dataInfo) {\r\n let dataSetName = GetControlPropertyFromStoreOrRefData(dataInfo.dset, refData);\r\n\r\n let originalData = dataInfo.data;\r\n let fieldName = dataInfo.fieldname;\r\n let keepField = dataInfo.keepfield; //added keepfield to pass onto condition\r\n if (dataInfo.fieldname?.includes(\".\")) { //Handling deep value changing\r\n let fieldArrays = dataInfo.fieldname.split(\".\");\r\n if (fieldArrays.length > 0) {\r\n originalData = ownStore.getState(dataSetName)[fieldArrays[0]];\r\n originalData = JSON.stringify(originalData); //To prevent direct mutation to the Redux\r\n originalData = JSON.parse(originalData); //To prevent direct mutation to the Redux\r\n // if (Array.isArray(originalData))\r\n // originalData = [...[], ...originalData];\r\n // else\r\n // originalData = { ...{}, ...originalData };\r\n let deepValue = originalData;\r\n let i = 1;\r\n for (; i < fieldArrays.length - 1; i++) {\r\n if (!deepValue[fieldArrays[i]]) { //To create a new property if the property not existing; Used when deep assigning\r\n deepValue[fieldArrays[i]] = {}; //!Only object properties can be created for now\r\n }\r\n deepValue = deepValue[fieldArrays[i]];\r\n }\r\n fieldName = fieldArrays[0];\r\n\r\n deepValue[fieldArrays[i]] = dataInfo.data;\r\n //added !dataInfo.keepfield condition to it to consider keepfield=true\r\n if (!dataInfo.keepfield && dataInfo.data == null) { \r\n if (Array.isArray(deepValue))\r\n deepValue.splice(fieldArrays[i], 1);\r\n else\r\n delete deepValue[fieldArrays[i]];\r\n }\r\n }\r\n }\r\n\r\n ownStore.dispatch(storeDatasetField( //Redux\r\n {\r\n dataSetName: dataSetName,\r\n fieldName: fieldName,\r\n data: originalData,\r\n keepfield : keepField //added keepfield to pass on to the function\r\n }\r\n ));\r\n }\r\n}\r\n\r\nexport function objectMatchAll(dataset, verifyArgs, satisfy, stringComparison = \"equals\", stringIgnoreCase = false) { //Verify single Object value pairs against another single Object and returns true if all property values match \r\n let assertedMatches = [];\r\n if (verifyArgs) {\r\n Object.keys(verifyArgs).forEach(item => {\r\n let firstValue = GetControlPropertyFromStoreOrRefData(item, dataset);\r\n let secondValue = GetControlPropertyFromStoreOrRefData(verifyArgs[item], dataset);\r\n if (stringIgnoreCase === true) {\r\n firstValue = (firstValue ?? \"\").toLowerCase();\r\n secondValue = (secondValue ?? \"\").toLowerCase();\r\n }\r\n assertedMatches.push(\r\n stringComparison === \"contains\" ?\r\n (firstValue?.includes(secondValue))\r\n : (firstValue === secondValue)\r\n );\r\n });\r\n }\r\n let isAllMatched =\r\n satisfy === \"any\" ? assertedMatches.some(t => t === true)\r\n : assertedMatches.every(t => t === true);\r\n return isAllMatched;\r\n}\r\n\r\nasync function verifyDatasetAgainstMultipleValues(dataset, verifyArgs) {\r\n\r\n let isMatchedException = objectMatchAll(dataset, { \"[this.type]\": \"FactsInternalException\" }, \"any\");\r\n\r\n if (isMatchedException) {\r\n ShowSnackBar(\"error\", dataset?.description ?? \"Some unknown error happened!\")\r\n return true;\r\n }\r\n\r\n let shouldHaltExecution = false;\r\n\r\n let isAllMatched = objectMatchAll(dataset, verifyArgs?.ref, verifyArgs?.satisfy);\r\n\r\n if (isAllMatched && verifyArgs?.whenmatch) {\r\n await ExecuteLayoutEventMethods(verifyArgs?.whenmatch, dataset);\r\n if (verifyArgs?.halton === \"match\") shouldHaltExecution = true;\r\n }\r\n if (!isAllMatched && verifyArgs?.whenunmatch) {\r\n await ExecuteLayoutEventMethods(verifyArgs?.whenunmatch, dataset);\r\n if (verifyArgs?.halton === \"unmatch\") shouldHaltExecution = true;\r\n }\r\n return shouldHaltExecution;\r\n\r\n}\r\n\r\nfunction getProcessedArgsWithGeoLocation(args, refData, noDeepProcess) {\r\n let mProcessedArgs = getProcessedArgs(\r\n {\r\n geolat: \"[local.devloc.lat]\",\r\n geolong: \"[local.devloc.long]\",\r\n ...args\r\n }\r\n , refData, noDeepProcess);\r\n return mProcessedArgs;\r\n}\r\nexport async function dsFiller(dataPoint, refData, result_type) {\r\n if (pageServiceInstance) {\r\n let procName = GetControlPropertyFromStoreOrRefData(dataPoint?.args?.proc, refData);\r\n\r\n let resolvedArgs = GetControlPropertyFromStoreOrRefData(dataPoint?.args?.args, refData);\r\n\r\n let sProcessedArgs = getProcessedArgsWithGeoLocation(resolvedArgs, refData, dataPoint?.args?.nodeepprocess);\r\n let controllerName = GetControlPropertyFromStoreOrRefData(dataPoint?.args?.controller, refData);\r\n if (!controllerName) controllerName = \"proc\";\r\n //Offline Access\r\n let offlineAccess = dataPoint?.args?.offline;\r\n //Offline Access\r\n let sServerDataSet = await pageServiceInstance.loadData(procName, sProcessedArgs, result_type, controllerName, offlineAccess);\r\n\r\n if (await verifyDatasetAgainstMultipleValues(sServerDataSet, dataPoint?.args?.verify)) {\r\n ownStore.dispatch(hideAppBusy());\r\n return \"FactsError\";\r\n }\r\n return sServerDataSet;\r\n }\r\n return undefined;\r\n}\r\nexport async function ExecuteLayoutEventMethods(eventData, refData, callBackFunction = null, secondaryCall = false) {\r\n let eData = GetControlPropertyFromStoreOrRefData(eventData, refData);\r\n if (typeof eData == \"string\") eData = JSON.parse(eData);\r\n if (eData) {\r\n // store.dispatch(showAppBusy());\r\n\r\n if (eData[0]?.exec !== \"hideloader\" && (!secondaryCall)) ownStore.dispatch(showAppBusy());\r\n\r\n for (let dataPoint of eData) {\r\n dataPoint = GetControlPropertyFromStoreOrRefData(dataPoint, refData);\r\n if (Array.isArray(dataPoint)) {\r\n await ExecuteLayoutEventMethods(dataPoint, refData, null, true);\r\n // for (let childDPoint of dataPoint) {\r\n // if (await executeEventDataPoint(childDPoint, refData, callBackFunction) === \"HALT\") {\r\n // return;\r\n // }\r\n // }\r\n }\r\n else {\r\n if (await executeEventDataPoint(dataPoint, refData, callBackFunction) === \"HALT\") {\r\n // if (eData[0]?.exec !== \"hideloader\" && (!secondaryCall)) ownStore.dispatch(hideAppBusy());\r\n return;\r\n }\r\n\r\n }\r\n }\r\n if (eData[0]?.exec !== \"hideloader\" && //If the event section starts with no loader, no need to hide it\r\n eData[0]?.exec !== \"showloader\" && //If loader is shown explicitely, User needs to hide it manually\r\n (!secondaryCall)) ownStore.dispatch(hideAppBusy()); //If the call comes from internally, Ofcourse there is no loader\r\n\r\n }\r\n\r\n}\r\n\r\nasync function executeEventDataPoint(dataPoint, refData, callBackFunction) {\r\n switch (dataPoint?.exec) {\r\n case \"filldataset\":\r\n let sServerDataSet = await dsFiller(dataPoint, refData);\r\n if (typeof sServerDataSet !== \"undefined\") {\r\n if (sServerDataSet === \"FactsError\") return \"HALT\";\r\n let fillDsArgs = getProcessedDynamic(dataPoint?.args, refData);\r\n if (dataPoint?.args?.argsdset) //if argsdset is specified store the args to that dataset; JFF :D\r\n SetCreateDataSet({ \"dset\": dataPoint?.args?.argsdset },\r\n (dataPoint?.args?.noprocessargsdset ? dataPoint?.args?.args : fillDsArgs?.args), refData);\r\n\r\n await _loadProcDataToDataSet(sServerDataSet, fillDsArgs, callBackFunction, refData);\r\n }\r\n break;\r\n case \"fillreport\":\r\n let rServerDataSet = await dsFiller(dataPoint, refData, \"report\");\r\n if (typeof rServerDataSet !== \"undefined\") {\r\n if (rServerDataSet === \"FactsError\") return \"HALT\";\r\n let fillFileArgs = getProcessedDynamic(dataPoint?.args, refData);\r\n await _loadProcDataToDataSet(rServerDataSet, fillFileArgs, callBackFunction, refData);\r\n }\r\n break;\r\n case \"excelupload\":\r\n case \"exceltemplate\":\r\n case \"filedownload\":\r\n let eServerDataSet = await dsFiller(dataPoint, refData, dataPoint?.exec);\r\n if (typeof eServerDataSet !== \"undefined\") {\r\n if (eServerDataSet === \"FactsError\") return \"HALT\";\r\n let fillRptArgs = getProcessedDynamic(dataPoint?.args, refData);\r\n await _loadProcDataToDataSet(eServerDataSet, fillRptArgs, callBackFunction, refData);\r\n }\r\n break; \r\n case \"fillmultidataset\":\r\n // if (pageServiceInstance) {\r\n // let mProcessedArgs = getProcessedArgsWithGeoLocation(dataPoint?.args?.args, refData);\r\n // let mServerDataset = await pageServiceInstance.loadData(dataPoint?.args?.proc, mProcessedArgs, \"multi\");\r\n\r\n // if (verifyDatasetAgainstMultipleValues(mServerDataset, dataPoint?.args?.verify)) {\r\n // store.dispatch(hideAppBusy());\r\n // return;\r\n // }\r\n let mServerDataset = await dsFiller(dataPoint, refData, \"multi\");\r\n if (mServerDataset) {\r\n if (mServerDataset === \"FactsError\") return \"HALT\";\r\n for (let mdset of (dataPoint?.args?.dsets ?? [])) {\r\n let fillMDsArgs = getProcessedDynamic(mdset, refData);\r\n await _loadProcDataToDataSet(mServerDataset[mdset?.table],\r\n {\r\n \"dset\": fillMDsArgs?.name,\r\n \"proc\": dataPoint?.args?.proc,\r\n \"column\": fillMDsArgs?.column,\r\n \"row\": fillMDsArgs?.row,\r\n \"section\": fillMDsArgs?.section\r\n }, callBackFunction, refData);\r\n }\r\n }\r\n break;\r\n case \"setdataset\":\r\n // store.dispatch(showAppBusy());\r\n let sdsName = GetControlPropertyFromStoreOrRefData(dataPoint?.args?.dset, refData);\r\n let processedArgsData = getProcessedDynamic(dataPoint?.args?.data, refData, dataPoint?.args?.nodeepprocess);\r\n\r\n SetCreateDataSet({...dataPoint?.args, dset: sdsName}, processedArgsData, refData);\r\n // store.dispatch(hideAppBusy());\r\n break;\r\n case \"invalidate\":\r\n // store.dispatch(showAppBusy());\r\n for (let nds of dataPoint?.args?.datasets) {\r\n SetCreateDataSet({ dset: nds }, null);\r\n }\r\n // store.dispatch(hideAppBusy());\r\n break;\r\n case \"setlocal\":\r\n // store.dispatch(showAppBusy());\r\n let processedArgsDataLocal = getProcessedDynamic(dataPoint?.args?.data, refData);\r\n let lKeyName = GetControlPropertyFromStoreOrRefData(dataPoint?.args?.key, refData);\r\n\r\n localStorage.setItem(lKeyName, JSON.stringify(processedArgsDataLocal));\r\n // store.dispatch(hideAppBusy());\r\n break;\r\n case \"mergedataset\":\r\n // store.dispatch(showAppBusy());\r\n let keyProcessedData = dataPoint?.args?.data;\r\n\r\n if (dataPoint?.args?.resolvekeys) {\r\n keyProcessedData = processObjectKeys(keyProcessedData, refData);\r\n }\r\n\r\n let processedArgsData2 = dataPoint?.args?.noprocess ? keyProcessedData : getProcessedDynamic(keyProcessedData, refData);\r\n MergeDataSet(dataPoint?.args, processedArgsData2, refData);\r\n // store.dispatch(hideAppBusy());\r\n break;\r\n case \"deepmergedataset\":\r\n // store.dispatch(showAppBusy());\r\n let processedArgsDataSourceDeep = getProcessedDynamic(dataPoint?.args?.data1, refData);\r\n let processedArgsDataDeep = getProcessedDynamic(dataPoint?.args?.data2, refData);\r\n DeepMergeDataSet(dataPoint?.args, processedArgsDataSourceDeep, processedArgsDataDeep, refData);\r\n // store.dispatch(hideAppBusy());\r\n break;\r\n case \"setdatasetfield\":\r\n let processedArgsData3 = dataPoint?.args?.noprocess ? dataPoint?.args : getProcessedArgs(dataPoint?.args, refData);\r\n\r\n SetCreateDataSetField(processedArgsData3, refData);\r\n break;\r\n case \"mergedatasetarray\":\r\n // store.dispatch(showAppBusy());.\r\n let processedArgsData4 = getProcessedDynamic(dataPoint?.args?.data, refData);\r\n let curInde = GetControlPropertyFromStoreOrRefData(dataPoint?.args?.index, refData);\r\n\r\n MergeDataSetArray(dataPoint?.args, processedArgsData4, curInde, dataPoint?.args?.mode, refData);\r\n // store.dispatch(hideAppBusy());\r\n break;\r\n case \"validatedataset\":\r\n if (await verifyDatasetAgainstMultipleValues(refData, dataPoint?.verify)) {\r\n ownStore.dispatch(hideAppBusy());\r\n return 'HALT';\r\n }\r\n break;\r\n case \"haltwhen\":\r\n let verifyArgs = {\r\n satisfy: \"all\",\r\n ref: {\r\n [dataPoint?.args?.input]: dataPoint?.args?.haltwhen\r\n }\r\n };\r\n var haltWhenResult = objectMatchAll(refData, verifyArgs?.ref, verifyArgs?.satisfy)\r\n if (haltWhenResult) {\r\n let messageToShow = GetControlPropertyFromStoreOrRefData(dataPoint?.args?.errormessage, refData);\r\n ShowSnackBar(\"error\", messageToShow);\r\n ownStore.dispatch(hideAppBusy());\r\n return 'HALT';\r\n }\r\n break;\r\n case \"exitwhen\":\r\n let exitData = GetControlPropertyFromStoreOrRefData(dataPoint?.input, refData);\r\n if (exitData) {\r\n ownStore.dispatch(hideAppBusy());\r\n return 'HALT';\r\n }\r\n break;\r\n case \"logout\":\r\n authServiceInstance.logout();\r\n break;\r\n case \"showloader\":\r\n ownStore.dispatch(showAppBusy());\r\n break;\r\n case \"hideloader\":\r\n ownStore.dispatch(hideAppBusy());\r\n break;\r\n case \"showpopup\": //Helper function for LoadPopup\r\n await executeEventDataPoint(\r\n {\r\n exec: \"filldataset\",\r\n args: {\r\n dset: \"popupinfo\",\r\n proc: dataPoint?.args?.proc ?? \"PWA.LoadLayout\",\r\n column: dataPoint?.args?.column ?? \"layoutinfo\",\r\n section: dataPoint?.args?.section,\r\n args: {\r\n doctype: dataPoint?.args?.doctype,\r\n docno: dataPoint?.args?.docno\r\n }\r\n }\r\n }\r\n\r\n );\r\n break;\r\n case \"directfileupload\":\r\n if (pageServiceInstance) {\r\n let eServerDataSet = await pageServiceInstance.uploadFile(refData);\r\n if (typeof eServerDataSet !== \"undefined\") {\r\n if (eServerDataSet === \"FactsError\") return \"HALT\";\r\n let fillRptArgs = getProcessedDynamic(dataPoint?.args, refData);\r\n await _loadProcDataToDataSet(\r\n eServerDataSet,\r\n fillRptArgs,\r\n callBackFunction,\r\n refData\r\n );\r\n }\r\n }\r\n break;\r\n case \"showdialog\":\r\n let processedDialogData = getProcessedDynamic(dataPoint?.args, refData, false);\r\n\r\n let dialBtn1Prop = processedDialogData?.btn1 ? {\r\n chld: processedDialogData?.btn1,\r\n props: {\r\n ...processedDialogData?.btn1props,\r\n whenclick: processedDialogData?.btn1whenclick\r\n }\r\n } : undefined;\r\n let dialBtn2Prop = processedDialogData?.btn2 ? {\r\n chld: processedDialogData?.btn2,\r\n props: {\r\n ...processedDialogData?.btn2props,\r\n whenclick: processedDialogData?.btn2whenclick\r\n }\r\n } : undefined;\r\n ShowDialog(processedDialogData?.title, processedDialogData?.description,\r\n dialBtn1Prop, dialBtn2Prop);\r\n break;\r\n case \"showmenu\":\r\n let menuItems = dataPoint?.args?.items;\r\n \r\n if (typeof dataPoint?.args?.items === \"string\")\r\n menuItems = GetControlPropertyFromStoreOrRefData(dataPoint?.args?.items, refData);\r\n //else \r\n if (!dataPoint?.args?.nodeepprocess && Array.isArray(menuItems))\r\n menuItems = getProcessedArray(menuItems, refData);\r\n menuItems &&\r\n ShowAppMenu(refData?.controlid, menuItems, dataPoint?.args?.layout, dataPoint?.args?.title, refData)\r\n break;\r\n case \"showsnackbar\":\r\n let snackArgs = getProcessedDynamic(dataPoint?.args, refData);\r\n\r\n ShowSnackBar(snackArgs?.type, snackArgs?.message);\r\n break;\r\n case \"shownotification\":\r\n ShowAppNotification(dataPoint?.args);\r\n break;\r\n case \"eval\":\r\n let evalJS = dataPoint?.js;\r\n if (dataPoint?.args) {\r\n let evalArgs = getProcessedDynamic(dataPoint?.args, refData);\r\n evalArgs && Object.keys(evalArgs).forEach(key => {\r\n evalJS = evalJS?.replaceAll(key, evalArgs[key]);\r\n });\r\n }\r\n eval(evalJS);\r\n break;\r\n case \"alert\":\r\n let alertData = getProcessedDynamic(dataPoint?.input, refData);\r\n alert(JSON.stringify(alertData));\r\n break;\r\n\r\n case \"debuglog\":\r\n let logData = getProcessedDynamic(dataPoint?.input, refData);\r\n console.log(logData);\r\n break;\r\n case \"collectgeo\":\r\n await GPSLocation(dataPoint?.args);\r\n break;\r\n case \"logtime\": console.log(dataPoint?.prefix + \" \" + Date().toLocaleString()); break;\r\n case \"downloadfile\":\r\n let downloadArgs = getProcessedDynamic(dataPoint?.args, refData);\r\n let link = document.createElement('a');\r\n link.setAttribute('href', downloadArgs?.prefix + downloadArgs.filedata);\r\n link.setAttribute('download', downloadArgs?.filename);\r\n document.body.appendChild(link);\r\n\r\n link.click();\r\n document.body.removeChild(link);\r\n break;\r\n case \"continuelogin\" : \r\n authServiceInstance.continueLogin();\r\n break;\r\n case \"navigate\":\r\n var menuInfo = getProcessedDynamic(dataPoint?.args, refData);\r\n window.history.pushState({}, '', '#/' + (menuInfo?.permalink ?? \"\"));\r\n await ExecuteLayoutEventMethods([{\r\n \"exec\": \"setdataset\",\r\n \"args\": {\r\n \"dset\": \"pagemenuinfo\",\r\n \"data\": menuInfo\r\n }\r\n }], null, null, true);\r\n await ExecuteLayoutEventMethods(menuInfo?.action, null, null, true);\r\n break;\r\n // case \"showpopup\":\r\n // await ExecuteLayoutEventMethods(\r\n // [\r\n // {\r\n // \"exec\": \"filldataset\",\r\n // \"args\": {\r\n // \"proc\": \"PWA.LoadLayout\",\r\n // \"column\": \"layoutinfo\",\r\n // \"dset\": \"popupinfo\",\r\n // \"section\": dataPoint?.args?.section,\r\n // \"args\": {\r\n // \"doctype\": dataPoint?.args?.doctype,\r\n // \"docno\": dataPoint?.args?.docno\r\n // }\r\n // }\r\n // }\r\n // ]);\r\n // break;\r\n default:\r\n\r\n }\r\n return \"\";\r\n}\r\n\r\nfunction processObjectKeys(data, refData) {\r\n let processedData = {};\r\n Object.keys(data).forEach(key => {\r\n let prKey = GetControlPropertyFromStoreOrRefData(key, refData);\r\n processedData = { ...processedData, [prKey]: data[key] };\r\n });\r\n return processedData;\r\n}\r\nexport function getProcessedDynamic(args, refData, noDeepProcessing, fromRenderer) {\r\n if (Array.isArray(args)) return getProcessedArray(args, refData, noDeepProcessing, fromRenderer);\r\n else if (typeof args === \"object\") return getProcessedArgs(args, refData, noDeepProcessing, fromRenderer);\r\n else return GetControlPropertyFromStoreOrRefData(args, refData);\r\n}\r\n\r\nexport function getProcessedArgs(args, refData, noDeepProcessing, fromRenderer) {\r\n if (!args) return null;\r\n if (args instanceof Date) return args;\r\n let processedArgs = {};\r\n\r\n let argsToProcess = GetControlPropertyFromStoreOrRefData(args, refData);\r\n if (!noDeepProcessing && argsToProcess && typeof argsToProcess === \"object\") {\r\n if (!(argsToProcess?.noinitialprocess && fromRenderer)) {\r\n Object.keys(argsToProcess).forEach(item => {\r\n if (typeof argsToProcess[item] === \"string\")\r\n processedArgs = { ...processedArgs, ...{ [item]: GetControlPropertyFromStoreOrRefData(argsToProcess[item], refData) } };\r\n else if (Array.isArray(argsToProcess[item]))\r\n processedArgs = { ...processedArgs, ...{ [item]: getProcessedArray(argsToProcess[item], refData, undefined, fromRenderer) } };\r\n else if (typeof argsToProcess[item] === \"object\")\r\n processedArgs = { ...processedArgs, ...{ [item]: getProcessedArgs(argsToProcess[item], refData, undefined, fromRenderer) } };\r\n else\r\n processedArgs = { ...processedArgs, ...{ [item]: argsToProcess[item] } };\r\n\r\n });\r\n return processedArgs;\r\n\r\n }\r\n }\r\n return argsToProcess;\r\n}\r\n\r\nfunction getProcessedArray(args, refData, noDeepProcessing, fromRenderer) {\r\n let processedArgs = [];\r\n if (!args) return null;\r\n if (!args.forEach) return args;\r\n if (noDeepProcessing) return args;\r\n args.forEach(item => {\r\n if (typeof item === \"string\")\r\n processedArgs = [...processedArgs, GetControlPropertyFromStoreOrRefData(item, refData)];\r\n else if (typeof item === \"object\") //Todo: Need to consider Array Later\r\n processedArgs = [...processedArgs, getProcessedArgs(item, refData, undefined, fromRenderer)];\r\n else\r\n processedArgs = [...processedArgs, item];\r\n });\r\n return processedArgs;\r\n\r\n}\r\n\r\nexport function GetControlPropertyFromStoreOrRefData(propertyString, refData = null) { //To resolve property in bracket to select from Redux State Property\r\n let currentState = propertyString;\r\n if (propertyString && propertyString.startsWith && propertyString.startsWith(\"[\") && propertyString.endsWith(\"]\")) {\r\n // propertyString = propertyString.replace(\" \", \"\")\r\n // let prop = propertyString.replace(\"[\", \"\").replace(\"]\", \"\")\r\n let prop = propertyString.slice(1, propertyString.length - 1);\r\n if (prop) {\r\n prop = _resolveInnerBinding(prop, refData);\r\n let funcDetails = [];\r\n\r\n funcs.forEach(t => {\r\n let currentFuncIndex = 0;\r\n do {\r\n currentFuncIndex = prop.indexOf(t, currentFuncIndex + 1);\r\n if (currentFuncIndex > 0) {\r\n funcDetails.push({ \"index\": currentFuncIndex, \"oper\": t });\r\n }\r\n } while (currentFuncIndex > 0);\r\n });\r\n\r\n funcDetails = funcDetails.sort((a, b) => a.index - b.index).map((t, index) => {\r\n return { ...t, \"index\": index }\r\n });\r\n\r\n // let funcDetails = funcs.map((t) => {\r\n\r\n // return { \"index\": prop.indexOf(t), \"oper\": t };\r\n // }).filter(t => t.index > 0).sort(t => t.index).map((t, index) => {\r\n // return { ...t, \"index\": index }\r\n // });\r\n if (funcDetails.length > 0) { //Bind string contains a Formula, Find it and process them\r\n // let propToSplit = \"\";\r\n funcDetails.forEach(t => {\r\n prop = prop.split(t.oper).join(\"*^*\");\r\n });\r\n let propList = prop.split(\"*^*\");\r\n\r\n let aggregate = _getBindData(propList[0], currentState, refData);\r\n let haveCondition = false;\r\n for (let i = 0; i < funcDetails.length; i++) {\r\n let t = funcDetails[i];\r\n let secondValue = _getBindData(propList[t.index + 1], currentState, refData);\r\n if (t.oper === IFTRUE) { //iftrue function\r\n if (aggregate === true) { //If the value upto here results to => true\r\n aggregate = secondValue; //Set the second value as the value; That's the result\r\n haveCondition = true; //Setting this to true to prevent (iffalse) to execute\r\n }\r\n else { //If the aggregate is not true \r\n i = funcDetails.findIndex((t, j) => j > i && t.oper === IFFALSE); //Finding the next iffalse function index that comes after the current ifftrue function (This is to prevent considering the secondValue of iftrue function)\r\n if (i < 0) break; //if the iffalse function is not found; i.e., the index is -1, just break the loop\r\n else i--; //if the iffalse function is found, minus 1 to make sure the iffalse function will be executed\r\n }\r\n\r\n }\r\n else if (t.oper === IFFALSE) { //iffalse function\r\n if (haveCondition) break; //if the iftrue condition is already satisfied, no need to execute the iffalse function\r\n if (aggregate === false) aggregate = secondValue; //if the aggregate value is false, take the secondValue as result\r\n\r\n }\r\n else aggregate = dyadicFuncExecutor(t.oper, aggregate, secondValue); //Do the other functions\r\n }\r\n currentState = aggregate;\r\n\r\n }\r\n else { //Binding string doesnt have formula, so just process it\r\n currentState = _getBindData(prop, currentState, refData);\r\n }\r\n }\r\n }\r\n\r\n if (currentState === undefined) currentState = null;\r\n return currentState;\r\n}\r\n\r\n// function _resolveInnerBinding(prop, refData) {\r\n// let innerBindStart = prop.indexOf(\"[\");\r\n// let innerBindEnd = prop.indexOf(\"]\", innerBindStart+ 1);\r\n// if (innerBindStart >= 0 && innerBindEnd > innerBindStart) {\r\n// let innerBind = prop.slice(innerBindStart, innerBindEnd + 1);\r\n// let bindData = GetControlPropertyFromStoreOrRefData(innerBind, refData);\r\n// prop = prop.replace(innerBind, bindData);\r\n// prop = _resolveInnerBinding(prop, refData); \r\n// }\r\n// return prop;\r\n// }\r\nfunction _resolveInnerBinding(prop, refData) { //?Redesigned to support deep inner binding\r\n let sampler = [];\r\n let pSplits = prop.split(\"\");\r\n for (let i = 0; i < pSplits.length; i++) {\r\n if (pSplits[i] === \"[\") sampler.push(i);\r\n if (pSplits[i] === \"]\") {\r\n let innerBindStart = sampler.pop()\r\n let innerBindEnd = i + 1;\r\n if (innerBindStart >= 0 && innerBindEnd > innerBindStart) {\r\n let innerBind = prop.slice(innerBindStart, innerBindEnd);\r\n let bindData = GetControlPropertyFromStoreOrRefData(innerBind, refData);\r\n prop = prop.replace(innerBind, bindData);\r\n prop = _resolveInnerBinding(prop, refData); //recursion and break necessary to prevent indexes being changed; Only one inner binding can be handled by one function calll\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n return prop;\r\n}\r\nfunction _getBindData(prop, currentState, refData) {\r\n\r\n let propArray = prop.split(\".\");\r\n let dataMode = \"state\";\r\n\r\n switch (propArray[0]) {\r\n case \"this\": //If binding string start from this, use RefData i.e, local data send by the request\r\n currentState = refData;\r\n break;\r\n case \"func\": break; //If binding string is a value function, no need to get the state data, it will be calculate in following lines\r\n case \"local\": //get localStorage data(Treat JSON Parse)\r\n if (propArray.length > 1) {\r\n currentState = localStorage[propArray[1]] && JSON.parse(localStorage[propArray[1]]);\r\n propArray[1] = \"local\";\r\n }\r\n break;\r\n case \"session\": //get sessionStorage data (Treat JSON Parse)\r\n if (propArray.length > 1) {\r\n currentState = JSON.parse(sessionStorage[propArray[1]]);\r\n propArray[1] = \"session\";\r\n }\r\n break;\r\n case \"serviceurl\":\r\n propArray[1] = \"serviceurl\";\r\n currentState = apiRoot;\r\n break;\r\n case \"lastpopup\":\r\n propArray[1] = \"lastpopup\";\r\n currentState = getLastPopupKey();\r\n break;\r\n case \"url\": //get url routes\r\n if (propArray.length > 1) {\r\n let urlArray = window.location.hash.split(\"/\");\r\n let urlChunkIndex = parseInt(propArray[1]);\r\n if (urlChunkIndex) {\r\n currentState = urlArray[urlChunkIndex];\r\n propArray[1] = \"url\";\r\n }\r\n }\r\n else\r\n currentState = window.location.href;\r\n break;\r\n case \"raw\": //Raw Text\r\n dataMode = \"raw\";\r\n propArray.shift(); //Rejoin the string excluding the raw keyword and return it\r\n currentState = propArray.join(\".\").replace(\"{chrdot}\", \".\");\r\n break; //If this is raw string no need to get a state, instead it will be processed by the loop\r\n default: //All other, get state from Redux state\r\n currentState = getReduxState();\r\n\r\n }\r\n // if (propArray[0] !== \"func\") { //The binding is not from a Value function (like today)\r\n // currentState = propArray[0] === \"this\" ? refData : store.getState();\r\n // }\r\n if (dataMode !== \"raw\") {\r\n for (let propItem of propArray) {\r\n if (propItem === \"this\" || propItem === \"local\" || propItem === \"session\" ||\r\n propItem === \"url\" || propItem === \"serviceurl\" || propItem === \"lastpopup\") continue; //If binding string starts with a pointer, just ignore the first section\r\n if (propItem === 'func') {\r\n dataMode = 'func';\r\n continue;\r\n }\r\n\r\n else if (dataMode === \"func\") {\r\n currentState = _getFuncValue(propItem);\r\n break;\r\n }\r\n else if (propItem && currentState) {\r\n currentState = currentState[propItem];\r\n }\r\n }\r\n }\r\n return currentState;\r\n}\r\n\r\n\r\nfunction getReduxState() {\r\n return ownStore.getFullState(); //To CHECK\r\n}\r\n\r\nexport function _getFuncValue(propItem) {\r\n switch (propItem) {\r\n case \"null\": return null;\r\n case \"true\": return true;\r\n case \"false\": return false;\r\n case \"undefined\": return undefined;\r\n case \"emptystring\": return \"\";\r\n\r\n case \"today\":\r\n return new Date();\r\n case \"todaystarttime\":\r\n var dt = startOfToday()\r\n return dt;\r\n case \"todayendtime\":\r\n var dt1 = endOfToday()\r\n return dt1;\r\n case \"emptyarray\":\r\n return [];\r\n case \"emptyobject\":\r\n return {};\r\n case \"screensize\":\r\n let iW = window.innerWidth; \r\n // if(iW <576) return \"xs\"; \r\n if(iW <768) return \"sm\"; \r\n if(iW <992) return \"md\"; \r\n // if(iW <1200) return \"lg\"; \r\n // if(iW <1400) return \"xl\"; \r\n return \"lg\";\r\n\r\n default:\r\n return null;\r\n }\r\n}\r\n\r\n\r\nexport function ChangePageDataSetState(datasets) { //Join Redux States to single object; To avoid calling local setState multiple times; Currently implemented in factsTaskList component\r\n if (!datasets) return null;\r\n let dstate = {};\r\n for (let dset of datasets) {\r\n dstate = { ...dstate, ...{ [dset]: ownStore.getState(dset) } };\r\n }\r\n return dstate;\r\n}\r\n\r\nfunction getLastPopupKey() {\r\n let pInfo = ownStore.getState(\"popupinfo\");\r\n if (pInfo) return Object.keys(pInfo).pop();\r\n return null;\r\n}\r\n\r\nexport async function RemoveLastDialog(e) {\r\n let pInfo = ownStore.getState(\"popupinfo\");\r\n if (pInfo) {\r\n let lastKey = Object.keys(pInfo).pop();\r\n if (lastKey) {\r\n if (pInfo[lastKey].appbar?.whenbackclick) {\r\n await ExecuteLayoutEventMethods(pInfo[lastKey].appbar?.whenbackclick);\r\n }\r\n else {\r\n await ExecuteLayoutEventMethods(\r\n [\r\n {\r\n \"exec\": \"setdatasetfield\",\r\n \"args\": {\r\n \"dset\": \"popupinfo\",\r\n \"fieldname\": lastKey,\r\n \"data\": null\r\n }\r\n }]);\r\n }\r\n return;\r\n }\r\n }\r\n // alert(e.currentTarget.location.hash)\r\n\r\n handleRouting(e.currentTarget.location.hash.split(\"/\")[1]);\r\n\r\n}\r\n\r\nexport async function handleRouting(docNoFromRoute) { //Repeated from AuthorizedCOmponent due to logic change\r\n\r\n let currentPageInfo = ownStore.getState(\"pageinfo\");\r\n if (currentPageInfo?.whenbackbutton) {\r\n // await ExecuteLayoutEventMethods([{\r\n // \"exec\": \"setdataset\",\r\n // \"args\": {\r\n // \"dset\": \"pageinfo\",\r\n // \"data\": currentPageInfo\r\n // }\r\n // }]);\r\n\r\n window.history.pushState({}, '')\r\n await ExecuteLayoutEventMethods(currentPageInfo?.whenbackbutton);\r\n return;\r\n }\r\n\r\n let userMenu = new StorageService().getJsonValue(userMenuStorageKey);\r\n userMenu = userMenu?.map(t => {\r\n let actionObj = JSON.parse(t.action);\r\n t.action = actionObj;\r\n return t;\r\n });\r\n\r\n let pageToShow = userMenu?.filter(t => docNoFromRoute === t.permalink);\r\n if (pageToShow?.length <= 0) {\r\n pageToShow = userMenu?.filter(t => t.homepage && t.homepage.toLowerCase() === \"true\");\r\n window.history.pushState({}, '') //Note: Commented to check Back button not exiting issue\r\n }\r\n if (pageToShow?.length > 0) {\r\n // alert(JSON.stringify(pageToShow[0]?.action));\r\n // window.location.hash = \"#\" + pageToShow[0]?.permalink;\r\n await ExecuteLayoutEventMethods([{\r\n \"exec\": \"setdataset\",\r\n \"args\": {\r\n \"dset\": \"pagemenuinfo\",\r\n \"data\": pageToShow[0]\r\n }\r\n }]);\r\n await ExecuteLayoutEventMethods(pageToShow[0]?.action);\r\n }\r\n\r\n}","import { hashString } from \"../General/globals\";\r\n\r\nclass OfflineService {\r\n\r\n\r\n resolveOffline(requestBody, responseBody, dbMethod) {\r\n let addNow = this.addNow;\r\n let getNow = this.getNow;\r\n\r\n return new Promise(resolve => {\r\n\r\n\r\n if (!window.indexedDB) {\r\n console.log(\"Your browser doesn't support a stable version of IndexedDB. Offline feature will not be available.\");\r\n return;\r\n }\r\n var request = window.indexedDB.open(\"offlineDB\", 1);\r\n request.onerror = function (event) {\r\n console.log(\"No Permission for IndexedDB\");\r\n };\r\n let requestKey = JSON.stringify(requestBody);\r\n let responseData = JSON.stringify(responseBody);\r\n\r\n request.onsuccess = function (event) {\r\n let database = event.target.result;\r\n if (dbMethod == \"save\") addNow(database, requestKey, responseData);\r\n if (dbMethod == \"get\") getNow(database, requestKey, responseBody, resolve);\r\n };\r\n request.onupgradeneeded = function (event) {\r\n let database = event.target.result;\r\n database.createObjectStore(\"requests\", { keyPath: \"id\" });\r\n var transaction = event.target.transaction;\r\n\r\n transaction.oncomplete =\r\n function (event) {\r\n if (dbMethod == \"save\") addNow(database, requestKey, responseData);\r\n if (dbMethod == \"get\") getNow(database, requestKey, responseBody, resolve);\r\n\r\n };\r\n };\r\n });\r\n }\r\n getNow(database, requestKey, responseBody, resolveFn) {\r\n hashString(requestKey).then(hashedKey => {\r\n var objectStore = database.transaction([\"requests\"], \"readwrite\")\r\n .objectStore(\"requests\");\r\n\r\n var request = objectStore.get(hashedKey);\r\n\r\n request.onerror = function (event) {\r\n resolveFn(responseBody);\r\n };\r\n\r\n request.onsuccess = function (event) {\r\n\r\n if (request.result) {\r\n let dataJSON = JSON.parse(request.result.data);\r\n resolveFn(dataJSON);\r\n } else {\r\n resolveFn(responseBody);\r\n }\r\n };\r\n }); \r\n }\r\n async addNow(database, requestKey, responseData) {\r\n\r\n var hashedKey = await hashString(requestKey); //works only in https \r\n var requestStore = await database.transaction([\"requests\"], \"readwrite\")\r\n .objectStore(\"requests\");\r\n let deleteRequest = await requestStore.delete(hashedKey)\r\n deleteRequest.onsuccess = function (event) {\r\n // console.log(\"OFFLINE_DELETE\");\r\n };\r\n\r\n deleteRequest.onerror = function (event) {\r\n // console.log(\"OFFLINE_ERR_DELETE\");\r\n }\r\n\r\n let addRequest = await requestStore.add({ id: hashedKey, data: responseData });\r\n\r\n addRequest.onsuccess = function (event) {\r\n // console.log(\"OFFLINE_INSERT\");\r\n };\r\n\r\n addRequest.onerror = function (event) {\r\n // console.log(\"OFFLINE_ERR_INSERT\");\r\n }\r\n }\r\n}\r\n\r\nexport default OfflineService;","import HttpService from \"./httpService\";\r\n \r\nimport OfflineService from \"./offlineService\";\r\n \r\nimport { procPath, reportPath, xlUploadPath, xlTempPath, uploadPath, fileDownloadPath, apiRoot, uploadRoot, unProcPath, isOffline } from \"../General/globals\";\r\n \r\nclass ServiceBase {\r\n \r\n async loadFromFileURL(fileURL) {\r\n let httpSvc = new HttpService();\r\n \r\n let json = await httpSvc.downloadFile(fileURL);\r\n // return json;\r\n let fileURLAbs = fileURL.split(\"?\")[0]\r\n return await this.manageOfflineData(true, { fileURLAbs }, json);\r\n \r\n }\r\n \r\n async loadFromServer(job_id, procKey, accessToken, dataToSend, resultType, controllerName, offlineAccess) {\r\n \r\n let httpSvc = new HttpService();\r\n let headers = httpSvc.getCommonHeaders(accessToken);\r\n let requestBody = httpSvc.getProcPostBodyString(job_id, procKey, dataToSend, resultType);\r\n let apiURL = apiRoot;\r\n let endPoint = procPath;\r\n if (resultType === \"report\" \r\n | resultType === \"excelupload\"\r\n | resultType === \"exceltemplate\"\r\n | resultType === \"filedownload\") {\r\n\r\n if(resultType === \"report\"){\r\n endPoint = reportPath; //using different endpoint api/report for downloading report data\r\n }\r\n \r\n if(resultType === \"excelupload\"){\r\n endPoint = xlUploadPath; //\r\n }\r\n \r\n if(resultType === \"exceltemplate\"){\r\n endPoint = xlTempPath; //\r\n }\r\n \r\n if(resultType === \"filedownload\"){\r\n endPoint = fileDownloadPath; //\r\n }\r\n \r\n if (controllerName !== \"unproc\" &&\r\n controllerName !== \"proc\" &&\r\n typeof controllerName !== \"undefined\") {\r\n \r\n apiURL = controllerName;\r\n endPoint = \"\";\r\n }\r\n } \r\n else if (controllerName === \"unproc\") endPoint = unProcPath;\r\n else if (controllerName === \"proc\") endPoint = procPath;\r\n else if (typeof controllerName !== \"undefined\") {\r\n apiURL = controllerName;\r\n endPoint = \"\";\r\n }\r\n\r\n let json = await httpSvc.postServer(apiURL, endPoint, headers, requestBody);\r\n let fullURL = apiURL + endPoint;\r\n return await this.manageOfflineData(offlineAccess, { fullURL, job_id, procKey, data: dataToSend, resultType }, json);\r\n \r\n }\r\n \r\n manageOfflineData(offlineAccess, requestBody, responseData) {\r\n return new Promise(resolve => {\r\n \r\n if (typeof offlineAccess === \"undefined\") offlineAccess = isOffline;\r\n // console.log(requestBody); \r\n if (requestBody.data && requestBody.data.info && typeof requestBody.data.info === \"object\") {\r\n requestBody.data.info.geolat = null;\r\n requestBody.data.info.geolong = null;\r\n }\r\n if (offlineAccess) { //TODO \r\n if (responseData.statusCode == 0) {\r\n // return offlineData; \r\n //return jsonData if offlineData not found\r\n resolve(new OfflineService().resolveOffline(requestBody, responseData, 'get'));\r\n return;\r\n }\r\n else {\r\n new OfflineService().resolveOffline(requestBody, responseData, 'save');\r\n // save json for offline use later (asynchronous)\r\n }\r\n \r\n }\r\n resolve(responseData);\r\n \r\n });\r\n \r\n }\r\n \r\n async sendFileToServer(job_id, accessToken, dataToSend) {\r\n let httpSvc = new HttpService();\r\n let headers = httpSvc.getCommonHeaders(accessToken);\r\n let requestBody = httpSvc.getFilePostBodyString(job_id, dataToSend);\r\n \r\n let json = await httpSvc.postServer(uploadRoot, uploadPath, headers, requestBody);\r\n return json;\r\n }\r\n \r\n}\r\n \r\nexport default ServiceBase;","// import { apiRoot } from '../General/globals';\r\n \r\nclass HttpService {\r\n\r\n async downloadFile(fileURL) {\r\n console.log(fileURL); \r\n try {\r\n let promise = await fetch(fileURL);\r\n if (promise.ok) {\r\n \r\n let json = await promise.json();\r\n//Test\r\n // let promiseClone = promise.clone(); //to be used before promise.json\r\n // var cache = await caches.open('offlay'); \r\n // await cache.put(fileURL, promiseClone);\r\n//Test\r\n return json;\r\n }\r\n return {\"type\":\"FactsInternalException\",\"status\":false, statusCode: promise.status, \"description\":\"Check your network connection!\"}; \r\n\r\n }\r\n catch{\r\n }\r\n\r\n return {\"type\":\"FactsInternalException\",\"status\":false, statusCode: 0, \"description\":\"Check your network connection!\"}; \r\n }\r\n\r\n async postServer(apiRoot, endPoint, headers, body) {\r\n\r\n let postURL = apiRoot + endPoint;\r\n let fetchOptions = {\r\n method: \"POST\",\r\n cache: 'no-store',\r\n headers: headers,\r\n body: body,\r\n credentials: 'include'\r\n };\r\n\r\n try {\r\n let promise = await fetch(postURL, fetchOptions);\r\n if (promise.ok) {\r\n let json = await promise.json();\r\n return json;\r\n }\r\n return {\"type\":\"FactsInternalException\",\"status\":false, statusCode: promise.status, \"description\":\"Check your network connection!\"}; \r\n }\r\n catch {\r\n }\r\n return {\"type\":\"FactsInternalException\",\"status\":false, statusCode: 0, \"description\":\"Check your network connection!\"}; \r\n\r\n }\r\n\r\n getCommonHeaders(accessToken) {\r\n let headers = {};\r\n headers['Content-Type'] = 'application/json';\r\n headers['Authorization'] = 'Bearer ' + accessToken;\r\n return headers;\r\n }\r\n\r\n getProcPostBodyString(job_id, key, data, result_type) {\r\n if (!result_type) result_type = \"single\";\r\n let requestBody = JSON.stringify({\r\n job_id, key, data, result_type\r\n });\r\n return requestBody;\r\n }\r\n\r\n getFilePostBodyString(job_id, data) {\r\n let requestBody = JSON.stringify({\r\n job_id, data\r\n });\r\n return requestBody;\r\n }\r\n}\r\n\r\nexport default HttpService; ","import { AppTimer } from \"../Components/Parts/AppControls/appTimer\";\r\nimport VoiceRecorder from \"../Components/Parts/AppControls/voiceRecorder\";\r\nimport AuthService from \"../Services/authService\";\r\nimport PageService from \"../Services/pageService\";\r\n\r\nexport let appSWRegistration;\r\nexport let appNotifPermission;\r\n\r\nexport let isOffline = false; \r\nexport let apiRoot;//= 'https://apiquery.factserp.com/'; //'http://localhost:50642/' ; \r\nexport let authPath;//= 'oauth/token';\r\nexport let procPath;//= 'api/proc';\r\nexport let unProcPath; //= 'api/unproc';\r\n\r\nexport let authMethode; \r\n\r\nexport let uploadRoot;//= 'https://apiquery.factserp.com/'; //'http://localhost:50642/' ; \r\nexport let uploadPath;//= 'api/file';\r\nexport let reportPath;//= 'api/report';\r\nexport let xlUploadPath;//= 'api/file/excelupload';\r\nexport let xlTempPath;//= 'api/file/getexceltemplate';\r\nexport let fileDownloadPath;//= 'api/file/getexceltemplate';\r\n\r\nexport let authBody;// =\r\n\r\nexport let offlineLayoutInfo;// =\r\n\r\nexport let debugstate = false; \r\n\r\nexport let objVoiceRecorder = new VoiceRecorder(); \r\n// {\r\n// grant_type: \"client_credentials\",\r\n// hash_method: \"1\",\r\n// job_id: \"1409\" //\"1409(DICETEK)\" // \"0378(CSH)\" \r\n// };\r\n\r\nexport let authServiceInstance;\r\nexport let pageServiceInstance;\r\n\r\nexport const authStorageKey = 'aCh';\r\nexport const userDetailsStorageKey = 'uD';\r\nexport const userMenuStorageKey = \"uMe\";\r\n\r\nexport let applicationTitle = \"FactsBUD-E\";\r\n\r\nexport let loginImage;//= \"res/loginpage.png\";\r\nexport let loginTitle;//= null;\r\nexport let loginDivStyle;//= { \"textAlign\": \"center\" };\r\nexport let loginBoxStyle;//= { \"textAlign\": \"center\" };\r\nexport let loginTextStyle;//= { \"textAlign\": \"center\" };\r\nexport let loginImageStyle;//= { \"textAlign\": \"center\" };\r\n\r\n\r\nexport let appTheme;\r\nexport let disableLocation;\r\n\r\nexport let whenAppLoad;\r\n\r\nexport let globalTimeZone=\"\";\r\n\r\nexport function setGlobalTimeZone(passedTimeZone) {\r\n globalTimeZone = passedTimeZone;\r\n}\r\nexport let whenAppInit;\r\nexport let themeload;\r\n\r\nexport let appTitles;\r\n\r\nexport const appTimer = new AppTimer(); \r\n\r\n// export let appTimerExecs;\r\n\r\nexport let serverPWAVersion;\r\nexport let stylefile = \"\";\r\nexport let appPlatform = \"\";\r\n\r\nexport let appDrawerWidth=0;\r\n\r\nexport function setGlobalDrawerWidth(width) {\r\n appDrawerWidth = width;\r\n}\r\n\r\nexport function initGlobalValues(appOptions, _offLayout) {\r\n if (appOptions?.ver) serverPWAVersion = appOptions?.ver;\r\n if (appOptions?.debugstate) debugstate = appOptions?.debugstate;\r\n\r\n if (typeof appOptions?.offline !== \"undefined\") isOffline= appOptions?.offline;\r\n\r\n if (appOptions?.title) applicationTitle = appOptions?.title;\r\n \r\n if (appOptions?.stylekey) appPlatform = appOptions?.stylekey\r\n\r\n if (appOptions?.stylekey) stylefile = \"basic-\" + appOptions?.stylekey + \".css\";\r\n else stylefile = \"\"\r\n\r\n if (appOptions?.service?.url) apiRoot = appOptions?.service?.url;\r\n if (appOptions?.service?.auth) authPath = appOptions?.service?.auth;\r\n else authPath = \"oauth/token\"\r\n \r\n\r\n if (appOptions?.service?.methode) authMethode = appOptions?.service?.methode;\r\n else authMethode = \"token\"\r\n\r\n if (appOptions?.service?.proc) procPath = appOptions?.service?.proc;\r\n else procPath = \"api/proc\";\r\n\r\n if (appOptions?.service?.unproc) unProcPath = appOptions?.service?.unproc\r\n else unProcPath = \"api/unproc\";\r\n \r\n if (appOptions?.service?.report) reportPath = appOptions?.service?.report;\r\n if (appOptions?.service?.xlupload) xlUploadPath = appOptions?.service?.xlupload;\r\n if (appOptions?.service?.xltemplate) xlTempPath = appOptions?.service?.xltemplate;\r\n if (appOptions?.service?.filedownload) fileDownloadPath = appOptions?.service?.filedownload;\r\n\r\n if (appOptions?.service?.authbody) authBody = appOptions?.service?.authbody;\r\n\r\n if (appOptions?.upload?.url) uploadRoot = appOptions?.upload?.url;\r\n if (appOptions?.upload?.path) uploadPath = appOptions?.upload?.path;\r\n \r\n if (appOptions?.login?.logo) loginImage = appOptions?.login?.logo;\r\n if (appOptions?.login?.title) loginTitle = appOptions?.login?.title;\r\n if (appOptions?.login?.align) loginDivStyle = { \"textAlign\": appOptions?.login?.align };\r\n if (appOptions?.login?.boxstyle) loginBoxStyle = appOptions?.login?.boxstyle;\r\n if (appOptions?.login?.style) loginTextStyle = appOptions?.login?.style ; \r\n if (appOptions?.login?.imagestyle) loginImageStyle = appOptions?.login?.imagestyle ; \r\n if (appOptions?.theme) appTheme = appOptions?.theme;\r\n if (appOptions?.settings) disableLocation = appOptions?.settings?.disableLocation;\r\n\r\n\r\n if (appOptions?.whenload) whenAppLoad = appOptions?.whenload;\r\n if (appOptions?.whenappinit) whenAppInit = appOptions?.whenappinit;\r\n if (appOptions?.themeload) themeload = appOptions?.themeload;\r\n\r\n if (appOptions?.whentimer) appTimer.appTimerExecs = appOptions?.whentimer;\r\n if (appOptions?.login?.titles) appTitles = appOptions?.login?.titles;\r\n\r\n authServiceInstance = new AuthService(authPath, authBody);\r\n pageServiceInstance = new PageService(authBody);\r\n if(typeof _offLayout?.mainfooter !== \"undefined\"){\r\n localStorage.setItem(\"offlay\", JSON.stringify(_offLayout));\r\n offlineLayoutInfo = _offLayout ; \r\n } \r\n else{\r\n offlineLayoutInfo = JSON.parse( localStorage.getItem(\"offlay\"));\r\n }\r\n}\r\n\r\n\r\nexport function setSWRegistration(registration) {\r\n appSWRegistration = registration;\r\n}\r\n\r\nexport function setNotifPermission(permission) {\r\n appNotifPermission = permission;\r\n\r\n}\r\n\r\nexport const getTZPrefix = () => { //GetTimezonePrefix\r\n let tz = new Date().getTimezoneOffset();\r\n tz = Math.abs(tz);\r\n return (\"+\" + Math.floor(tz / 60).toFixed(0).padStart(2, 0) + \":\" + (tz % 60).toFixed(0).padStart(2, 0));\r\n\r\n}\r\n\r\nexport const hashString = async function(message) {\r\n if(!crypto?.subtle) return message; \r\n const msgUint8 = new TextEncoder().encode(message); \r\n const hashBuffer = await crypto.subtle.digest('SHA-1', msgUint8); \r\n const hashArray = Array.from(new Uint8Array(hashBuffer)); \r\n const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join(''); \r\n return hashHex;\r\n }\r\n \r\n\r\n export const getUniqueID = () => {\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","import { ExecuteLayoutEventMethods } from \"../../../General/commonFunctions\";\r\nimport { appTimerExecs } from \"../../../General/globals\";\r\n\r\nexport class AppTimer {\r\n constructor(){\r\n this.appTimerExecs = null; \r\n this.pageTimerExecs = null;\r\n this.popupTimerExecs = null;\r\n this.idleTimer = 0; \r\n this.timerSeconds = 0 ; \r\n this.isAuthenticated = false ; \r\n }\r\n\r\n\r\n runTimer(){\r\n this.idleReset(); \r\n this.timerSeconds = 0;\r\n\r\n this.timeInterval = setInterval(() => {\r\n if (this.isAuthenticated) {\r\n this.executeTimerFunctions(this.appTimerExecs); //*Execute timer functions of App; Need to pass it from UserDetails\r\n \r\n this.executeTimerFunctions(this.pageTimerExecs); //*Execute timer functions of Loaded Page\r\n this.executeTimerFunctions(this.popupTimerExecs); //*Execute timer functions of Loaded Popup\r\n this.timerSeconds++;\r\n this.idleTimer++;\r\n }\r\n \r\n if (this.idleTimer >= 86400) this.idleTimer = 0; //*Resetting idleTimer every 24 hours just to prevent overflow exception\r\n if (this.timerSeconds >= 86400) this.timerSeconds = 0; //*Resetting TimerSeconds every 24 hours just to prevent overflow exception\r\n \r\n }, 1000);\r\n \r\n }\r\n\r\n \r\n executeTimerFunctions(timerFunctions) {\r\n if (timerFunctions) {\r\n\r\n for (let tfn of timerFunctions) {\r\n if (this.timerSeconds % tfn?.interval === 0) {\r\n ExecuteLayoutEventMethods(tfn.tasks, null, null, true);\r\n }\r\n }\r\n }\r\n };\r\n\r\n\r\n idleReset() { //*To reset idleTimer on mousemove; To be used later; Need to add it along with timer functions\r\n document.addEventListener(\"mousemove\", () => this.idleTimer = 0);\r\n }\r\n\r\n}","import { ownStore } from \"../../../AppOwnState/ownState\";\r\n// import store from \"../../../AppRedux/store\";\r\nimport { ExecuteLayoutEventMethods } from \"../../../General/commonFunctions\";\r\n\r\nclass VoiceRecorder {\r\n \r\n generateAudioElement() {\r\n let audioElement = document.querySelector(\"#factsPWAAudioPlayer\");\r\n if (!audioElement) {\r\n audioElement = document.createElement('audio');\r\n audioElement.style.cssText = 'display:none;';\r\n audioElement.id = \"factsPWAAudioPlayer\";\r\n document.body.appendChild(audioElement);\r\n }\r\n audioElement.onplay = async () =>{\r\n \r\n this.releaseAction([{\r\n exec: \"setdataset\",\r\n args: {\r\n dset: \"playinfo\",\r\n data: { \r\n \"status\" : \"playing\"\r\n }\r\n }\r\n }\r\n ]); \r\n } \r\n audioElement.onpause = ()=> this.audioStop() ;\r\n audioElement.onended = ()=> this.audioStop() ;\r\n audioElement.onerror = ()=> this.audioStop() ;\r\n return audioElement;\r\n }\r\n audioStop(){\r\n this.releaseAction([{\r\n exec: \"setdataset\",\r\n args: {\r\n dset: \"playinfo\",\r\n data: { \r\n \"status\" : \"stopped\"\r\n }\r\n }\r\n }\r\n ]); \r\n }\r\n async releaseAction(extraEvents = []) {\r\n await ExecuteLayoutEventMethods([\r\n ...extraEvents,\r\n {\r\n \"exec\": \"setdataset\",\r\n \"args\": {\r\n \"dset\": \"mediainfo\",\r\n \"data\": null\r\n }\r\n }]);\r\n }\r\n \r\n async doAction(args) {\r\n\r\n let audioElement = this.generateAudioElement();\r\n\r\n if (args?.action === \"startaudio\" && args?.data) {\r\n if(audioElement.paused || audioElement.ended){ \r\n audioElement.src = args?.data;\r\n audioElement.play();\r\n \r\n }\r\n }\r\n else if (args?.action === \"stopaudio\") {\r\n \r\n audioElement.pause();\r\n \r\n }\r\n else if (args?.action === \"startrecord\") {\r\n \r\n\r\n if (!this.mRecorder) {\r\n this.mediaStreamObj = await navigator.mediaDevices.getUserMedia({ audio: true }); \r\n this.mRecorder = new MediaRecorder( this.mediaStreamObj);\r\n }\r\n this.mRecorder.onstart = async() => {\r\n \r\n await ExecuteLayoutEventMethods([\r\n {\r\n exec: \"setdataset\",\r\n args: {\r\n dset: \"recordinfo\",\r\n data: {\r\n \"data\": null,\r\n \"starttime\" : (new Date()).getTime(), \r\n \"duration\": 0, \r\n \"status\" : \"recording\"\r\n }\r\n }\r\n }\r\n ]);\r\n let tout = 120000; \r\n if((args?.timeout ?? 0) > 0 ) tout = args?.timeout * 1000\r\n \r\n setTimeout(async ()=> {\r\n await ExecuteLayoutEventMethods([\r\n {\r\n exec: \"setdataset\",\r\n args: {\r\n dset: \"mediainfo\",\r\n data: {\r\n \"action\": \"stoprecord\" \r\n }\r\n }\r\n }\r\n ]);\r\n }, tout); \r\n \r\n }\r\n this.mRecorder.ondataavailable = function (ev) {\r\n let reader = new FileReader()\r\n reader.onloadend = async () => { \r\n let recordStartTime = ownStore.getState(\"recordinfo\")?.starttime; \r\n let elapsedTime = ( (new Date()).getTime() - recordStartTime); \r\n elapsedTime =(elapsedTime/1000).toFixed(3); \r\n await ExecuteLayoutEventMethods([\r\n\r\n {\r\n exec: \"setdataset\",\r\n args: {\r\n dset: \"recordinfo\",\r\n data: {\r\n \"data\": reader.result,\r\n \"duration\": elapsedTime, \r\n \"status\" : \"stopped\"\r\n }\r\n }\r\n }\r\n ]);\r\n }\r\n\r\n reader.readAsDataURL(ev.data);\r\n }\r\n this.mRecorder.onstop = ()=> {\r\n console.log(\"recorder stop\")\r\n }\r\n if (this.mRecorder.state !== \"recording\") {\r\n this.mRecorder.start();\r\n }\r\n }\r\n else if (args?.action === \"stoprecord\") {\r\n if ( this.mRecorder && this.mRecorder.state !== \"inactive\" ) {\r\n this.mRecorder.stop();\r\n \r\n }\r\n }\r\n \r\n }\r\n}\r\nexport default VoiceRecorder; ","import HttpService from \"./httpService\";\r\nimport { authStorageKey, userDetailsStorageKey, userMenuStorageKey, apiRoot, authMethode } from \"../General/globals\";\r\nimport StorageService from './storageService';\r\nimport ServiceBase from './_serviceBase'\r\nimport { authLogin, authLogout, hideAppBusy } from \"../AppOwnState\";\r\nimport { ownStore } from \"../AppOwnState/ownState\";\r\n// import Axios from \"axios\";\r\n\r\nclass AuthService extends ServiceBase {\r\n\r\n constructor(authPath, authBody) {\r\n super();\r\n this.authPath = authPath;\r\n this.authBody = authBody;\r\n }\r\n\r\n async login(client_id, client_secret, remember_me) {\r\n let eCS = encodeURIComponent(client_secret)\r\n\r\n let requestBody = `grant_type=${this.authBody.grant_type}&hash_method=${this.authBody.hash_method}&job_id=${this.authBody.job_id}&client_id=${client_id}&client_secret=${eCS}`;\r\n\r\n let headers = {};\r\n headers['Content-Type'] = 'application/x-www-form-urlencoded';\r\n\r\n let json = await new HttpService().postServer(apiRoot, this.authPath, headers, requestBody);\r\n let fullURL = apiRoot + this.authPath; \r\n json = await this.manageOfflineData(undefined, { fullURL, requestBody}, json);\r\n\r\n if (json && json.access_token) {\r\n let stService = new StorageService();\r\n stService.setStatePersistance(remember_me);\r\n stService.setJsonValue(authStorageKey,\r\n {\r\n at: json.access_token,\r\n tt: json.token_type,\r\n ei: json.expires_in\r\n });\r\n }\r\n else {\r\n console.log('Login Failed');\r\n }\r\n }\r\n\r\n async logout() {\r\n let [currentToken, isTokenNeeded] = this.getStoredToken(); \r\n\r\n if (currentToken || !isTokenNeeded) {\r\n await this.loadFromServer(this.authBody.job_id, 'PWA.UserLogout', currentToken?.at, { 'info': currentToken?.at });\r\n }\r\n let stService = new StorageService();\r\n stService.clearStorage(authStorageKey);\r\n stService.clearStorage(userDetailsStorageKey);\r\n stService.clearStorage(userMenuStorageKey);\r\n // SetCreateDataSet({ dset: \"pageinfo\" }, null);\r\n ownStore.dispatch(authLogout()); //Redux\r\n\r\n\r\n }\r\n\r\n async SSOlogin(client_id,client_secret) {\r\n\r\n let requestBody = `grant_type=${this.authBody.grant_type}&source=SSO&hash_method=${this.authBody.hash_method}&job_id=${this.authBody.job_id}&client_id=${client_id}&client_secret=${client_secret}`;\r\n\r\n let headers = {};\r\n headers['Content-Type'] = 'application/x-www-form-urlencoded';\r\n\r\n let json = await new HttpService().postServer(apiRoot, this.authPath, headers, requestBody);\r\n let fullURL = apiRoot + this.authPath; \r\n json = await this.manageOfflineData(undefined, { fullURL, requestBody}, json);\r\n\r\n if (json && json.access_token) {\r\n let stService = new StorageService();\r\n stService.setJsonValue(authStorageKey,\r\n {\r\n at: json.access_token,\r\n tt: json.token_type,\r\n ei: json.expires_in\r\n });\r\n }\r\n else {\r\n console.log('Login Failed');\r\n }\r\n }\r\n\r\n getStoredToken(){\r\n if(authMethode === \"cookie\") return [null, false]; //Cookie Authentication; No token needed\r\n else{ \r\n let currentToken = new StorageService().getJsonValue(authStorageKey);\r\n return [currentToken, true]; \r\n }\r\n }\r\n\r\n async verifyLogin() {\r\n let [currentToken, isTokenNeeded] = this.getStoredToken(); \r\n\r\n if (isTokenNeeded && !currentToken) return null;\r\n let json = await this.loadFromServer(this.authBody.job_id, 'PWA.VerifyAuth', currentToken?.at, { 'info': currentToken?.at });\r\n if (json && json.length > 0 && json[0].status === \"true\")\r\n return {status: true, doNext: json[0].doNext};\r\n return {status:false};\r\n }\r\n\r\n async continueLogin(){ //Seeperated from Main logic for Two factor Authentication\r\n let _userDetails = await this.getCurrentUserDetails();\r\n if (!_userDetails) throw new Error(\"No Such User!\");\r\n await this.loadUserSpecificMenu(_userDetails.userrole);\r\n\r\n ownStore.dispatch(authLogin()); //Redux\r\n ownStore.dispatch(hideAppBusy());\r\n \r\n }\r\n\r\n async getCurrentUserDetails() {\r\n let userDetails = await this.loadUserDetails();\r\n\r\n if (userDetails && userDetails.length > 0) {\r\n new StorageService().setJsonValue(userDetailsStorageKey, userDetails[0]);\r\n return userDetails[0];\r\n }\r\n return null;\r\n}\r\n\r\n async loadUserDetails() {\r\n let [currentToken, isTokenNeeded] = this.getStoredToken(); \r\n\r\n if (isTokenNeeded && !currentToken) return null;\r\n return await this.loadFromServer(this.authBody.job_id, 'PWA.GetUserDetails', currentToken?.at, { 'info': currentToken?.at });\r\n }\r\n\r\n \r\n async loadUserSpecificMenu(_userrole) {\r\n let _userMenu = await this.loadUserMenu({ userrole: _userrole });\r\n new StorageService().setJsonValue(userMenuStorageKey, _userMenu);\r\n\r\n // if (userDetails && userDetails.length > 0) {\r\n // new StorageService().setJsonValue(userDetailsStorageKey, userDetails[0]);\r\n // return true;\r\n // }\r\n // return false;\r\n}\r\n async loadUserMenu(userRole) {\r\n let [currentToken, isTokenNeeded] = this.getStoredToken(); \r\n\r\n if (isTokenNeeded && !currentToken) return null;\r\n return await this.loadFromServer(this.authBody.job_id, 'PWA.GetUserMenu', currentToken?.at, { 'info': userRole });\r\n }\r\n\r\n}\r\n\r\nexport default AuthService; ","import ServiceBase from \"./_serviceBase\";\r\nimport StorageService from \"./storageService\";\r\nimport { authMethode, authStorageKey } from \"../General/globals\";\r\n\r\n\r\nclass PageService extends ServiceBase {\r\n\r\n constructor(authBody) {\r\n super();\r\n this.authBody = authBody;\r\n }\r\n\r\n async loadData(procKey, action_args, resultType, controllerName, offlineAccess) {\r\n let currentToken = new StorageService().getJsonValue(authStorageKey);\r\n // if (!currentToken && controllerName !== \"unproc\") return null;\r\n return await this.loadFromServer(this.authBody.job_id, procKey, currentToken?.at, { info: action_args }, resultType, controllerName, offlineAccess);\r\n\r\n }\r\n\r\n async uploadFile(data) { //Untested; To contact the file processing end of API; Maybe the loadData function is enough\r\n let currentToken = new StorageService().getJsonValue(authStorageKey);\r\n if (!currentToken && authMethode !== \"cookie\") return null;\r\n return await this.sendFileToServer(this.authBody.job_id, currentToken.at, { info: data });\r\n\r\n }\r\n}\r\n\r\nexport default PageService;","class OwnObjectStore {\r\n\r\n constructor() {\r\n this.objectStore = {};\r\n }\r\n\r\n storeDataSet(payload) {\r\n this.objectStore[payload.dataSetName] = payload.data;\r\n }\r\n\r\n storeDataSetField(payload) {\r\n let fieldDataset = { ...this.objectStore[payload.dataSetName], [payload.fieldName]: payload.data };\r\n //added !payload.keepfield condition to it to consider keepfield=true and restrict deleting field\r\n if (!payload.keepfield && payload.data == null) delete fieldDataset[payload.fieldName];\r\n\r\n this.storeDataSet({\r\n dataSetName: payload.dataSetName,\r\n data: fieldDataset\r\n });\r\n\r\n }\r\n\r\n mergeDataSet(payload) {\r\n let mergedData = { ...this.objectStore[payload.dataSetName], ...payload.data };\r\n this.objectStore[payload.dataSetName] = mergedData;\r\n }\r\n\r\n mergeDataSetArray(payload) {\r\n let replaceIndex = (payload.index != null && payload.index >= 0) ? payload.index : undefined;\r\n let mergedData = null;\r\n if (payload.mode === \"updatecol\") {\r\n let returnArray = [];\r\n for (let arObj of this.objectStore[payload.dataSetName]) {\r\n returnArray.push({ ...arObj, ...payload.data });\r\n }\r\n mergedData = returnArray;\r\n }\r\n else if (payload.mode === \"array2array\"){\r\n mergedData = [...this.objectStore[payload.dataSetName], ...payload.data ];\r\n }\r\n else {\r\n\r\n let item = (replaceIndex >= 0 && replaceIndex < this.objectStore[payload.dataSetName].length ? this.objectStore[payload.dataSetName][replaceIndex] : {});\r\n if (payload.data) {\r\n if (typeof payload.data === \"string\") item = payload.data; //if its string do not explode it\r\n else item = { ...item, ...payload.data };\r\n }\r\n else item = undefined; // to delete to happen\r\n\r\n if (item) { //If item is not null, its an edit or add \r\n mergedData = [...this.objectStore[payload.dataSetName].slice(0, replaceIndex), item,\r\n ...(replaceIndex != undefined ? this.objectStore[payload.dataSetName].slice(replaceIndex + 1) : [])];\r\n }\r\n else { //if data specified is null its supposed to be a delete\r\n mergedData = [...this.objectStore[payload.dataSetName].slice(0, replaceIndex),\r\n ...(replaceIndex != undefined ? this.objectStore[payload.dataSetName].slice(replaceIndex + 1) : [])];\r\n }\r\n }\r\n this.objectStore[payload.dataSetName] = mergedData;\r\n\r\n }\r\n\r\n getDataSet(dataSetName) {\r\n if (!dataSetName) return null;\r\n return this.objectStore[dataSetName];\r\n }\r\n getFullDataSet() {\r\n return this.objectStore;\r\n }\r\n}\r\n\r\nexport const ownObject = new OwnObjectStore(); ","import {\r\n AUTH_LOGIN, AUTH_LOGOUT, HIDE_APP_BUSY, MERGE_ARRAY_DATASET, MERGE_OBJECT_DATASET,\r\n SHOW_APP_BUSY,\r\n STORE_DATASET, STORE_DATASET_FIELD, STORE_USER\r\n} from \"../AppOwnState/ownStateActionTypes\";\r\nimport { getUniqueID } from \"../General/globals\";\r\nimport { ownObject } from \"./ownObjectStore\";\r\n\r\nclass OwnState {\r\n constructor() {\r\n this.callBackFunctions = [];\r\n }\r\n\r\n subscribe(callBackFn) {\r\n let fnKey = getUniqueID();\r\n let callBakObj = { key: fnKey, fn: callBackFn }\r\n this.callBackFunctions.push(callBakObj);\r\n return () => { this.callBackFunctions = this.callBackFunctions.filter((obj) => obj.key !== fnKey) };\r\n }\r\n getState(dsetName) {\r\n return ownObject.getDataSet(dsetName);\r\n }\r\n\r\n getFullState() {\r\n return ownObject.getFullDataSet();\r\n }\r\n\r\n dispatch(action) {\r\n if (action && action.type) {\r\n let actionDSetName = action?.payload?.dataSetName;\r\n switch (action.type) {\r\n case STORE_DATASET:\r\n if (action.payload.dataSetName) ownObject.storeDataSet(action.payload);\r\n break;\r\n case MERGE_OBJECT_DATASET:\r\n if (action.payload.dataSetName) ownObject.mergeDataSet(action.payload);\r\n break;\r\n case MERGE_ARRAY_DATASET:\r\n if (action.payload.dataSetName) ownObject.mergeDataSetArray(action.payload);\r\n break;\r\n case STORE_DATASET_FIELD:\r\n if (action.payload.dataSetName && action.payload.fieldName) ownObject.storeDataSetField(action.payload);\r\n break;\r\n case AUTH_LOGIN:\r\n ownObject.storeDataSet({\r\n dataSetName: \"login\",\r\n data: { isAuthenticated: true }\r\n });\r\n actionDSetName = \"login\";\r\n break;\r\n case AUTH_LOGOUT:\r\n ownObject.storeDataSet({\r\n dataSetName: \"login\",\r\n data: { isAuthenticated: false }\r\n });\r\n actionDSetName = \"login\";\r\n break;\r\n case SHOW_APP_BUSY:\r\n ownObject.storeDataSet({\r\n dataSetName: \"isAppBusy\",\r\n data: true\r\n });\r\n actionDSetName = \"isAppBusy\";\r\n break;\r\n case HIDE_APP_BUSY:\r\n ownObject.storeDataSet({\r\n dataSetName: \"isAppBusy\",\r\n data: false\r\n });\r\n actionDSetName = \"isAppBusy\";\r\n break;\r\n case STORE_USER: //Not used \r\n ownObject.storeDataSet({\r\n dataSetName: \"_userinfo\",\r\n data: action.payload.data\r\n });\r\n actionDSetName = \"_userinfo\";\r\n break;\r\n default: break;\r\n }\r\n // if (debugstate) {\r\n // if (window.debugstateds) {\r\n // if (window.debugstateds === action?.payload?.dataSetName ||\r\n // window.debugstateds === \"*\") {\r\n // console.log(\"%c ▼▼▼\", \"color:magenta;\");\r\n // console.log(`%c ${action?.type} ${action?.payload?.dataSetName ? \"on \" + action.payload.dataSetName : \"\"}`, \"background-color:#9c27b0;color:white;\");\r\n // console.log(action, \"►►►\", ownObject);\r\n // }\r\n\r\n // }\r\n // if (window.debugstatefn) {\r\n // console.log(\"%c ▼▼▼\", \"color:magenta;\");\r\n // console.log(action, \"►►►\", this.callBackFunctions);\r\n // }\r\n // }\r\n this.callBackFunctions.forEach(fnObj => fnObj &&\r\n fnObj.fn({ dset: actionDSetName, index: action.payload?.index, field: action.payload?.fieldName }));\r\n }\r\n\r\n }\r\n}\r\n\r\nexport const ownStore = new OwnState(); \r\n"],"sourceRoot":""}