{"version":3,"sources":["EncompassWebServices/Controls/JsonPath.js","EncompassWebServices/Reporting_ECP/SavedReport.js","EncompassWebServices/includes/SitemapHeader_INC.js","EncompassWebServices/includes/ToggleCheckboxes_INC.js","ERP/SalesCommunication/SocketUtil_INC.js","EncompassWebServices/BI/EChat.js"],"names":["EWS","JsonPath","options","Object","assign","data","resultType","keepHistory","onFound","_path","_value","onNormalize","_expression","onTrace","onWalk","_loc","_func","P","result","normalize","expr","subx","replace","$0","$1","$2","push","asPath","path","x","split","let","p","i","n","length","test","store","v","value","query","trace","val","loc","shift","join","prototype","hasOwnProperty","call","walk","m","l","z","eval","substr","lastIndexOf","Array","slice","s","f","keyArr","keys","len","start","end","step","$3","parseInt","Math","max","min","_v","_vname","e","SyntaxError","message","expression","Json","Escape","Query","BC_SavedReport","me","this","UserName","FullName","UserId","SelectedReportIDArr","Command","Add","control","args","VerifySession","ECP","Dialog","ShowLoading","ownerauthenticationid","undefined","AuthenticationID","EC_Fmt","isNull","myRequest","EC_Request","AddRequestVariable","search","FilterPivot","DashboardID","isArray","Submit","then","HideLoading","html","reportDisplay","querySelector","shared","results","owner","name","j","category","k","report","IsPivot","reporttype","id","multipleSelect","indexOf","toString","source","innerHTML","reportIdArr","reportId","reportInput","checked","treeNode","closest","currentSavedReports","HtmlStrToElement","prepend","NodeArray","parentNode","forEach","node","click","TriggerEvent","ownerNodeSet","Set","checkedInputArr","document","querySelectorAll","checkedInput","ownerNode","add","ownerNodeArr","from","getElementById","insertBefore","firstElementChild","firstChild","addEventListener","event","target","matches","checkbox","splice","HTML","Snackbar","index","ReportType","Default","Cube","Delete","trigger","ConfirmDelete","Trn","ShowDialog","barPosition","cancelButtonTitle","confirmButtonTitle","confirmButtonType","confirmButtonAction","dialog","CloseDialog","item","remove","success","Alert","catch","error","Edit","format","favorite","link","roles","ApplicationID","Show_BC_SavedReport_EditReport_Dialog","Favorite","ReportURL","Name","window","location","href","substring","RemoveFavorite","Width","disableResize","clearDashboardMenuCache","NewName","getElementsByClassName","ID","UpdateFavoriteRequest","SetReturnType","EC_ReturnType","Text","EC_Verb","Post","reload","Error","LoadRoles","selected","UserTypeArr","UserTypeRoles","reduce","userTypeRoles","role","includes","UserType","selectCount","rolesHTML","userType","Null2ZeroInt","RoleID","Role","classList","contains","style","display","getAttribute","input","childUserType","CheckParentAll","childusertypeinputarr","Run","system","status","dashboard","encodeURIComponent","Save","url","permission","callback","urlProcessCallback","draft","username","parentreportid","Show_BC_SavedReport_SaveReport_Dialog","uri","toUpperCase","mySubRequest","Verb","SaveAs","CDec","GetPageParameter","CommonDashboards","FusionView","FusionEdit","original","SaveDraft","method","Select","selectCommand","title","fullName","optionsHtml","Show_BC_SavedReport_ReportList_Dialog","SelectReport","parentReport","fusion","reportType","Show_BC_SavedReport_FusionAddReport_Dialog","Ready","SavedReport","Report_Save","Report_SaveAs","IsImpersonateUser","OldUrl","NewUrl","LogOn","Report_SaveDraft","saveReportArgs","isMobile","LoadingDialogTimeout","setTimeout","content","width","height","cancel","save","SaveURL","UrlArr","GetURLParameters","DashboardFormat","isInteger","_myRequest","ReportTypeEle","selectedRoles","checkedRoles","myResult","SaveMethod","observer","MutationObserver","mutations","type","attributeName","truncatedValue","observe","attributes","ajaxInputs","FieldID","AjaxInputs","AjaxInput","rolesSelectAllCheckbox","toLowerCase","SavedReportType","ApplicationInput","append","clearTimeout","FormData","async","selectArgs","ReportLayers","await","CheckFusionReportLayers","DialogCancel","DialogSelect","DialogTitle","fullname","OwnerAuthenticationID","requestAnimationFrame","loadingMask","zIndex","radio","CheckSaveReportLayers","manualTitle","tagName","reportTitle","text","ReportOwnerHtml","dashboardIDElement","ownerAuthenTicationID","OwnerAuthenTicationElement","Execute","userName","key","focus","closeDialog","inputArr","map","AllowHideAllDivs","PageSizeCallback","PageResizeCallback","MenuScrollTop","Menu","MenuTop","PageEndMilliseconds","AllowZoom","SetupEncompassSiteMapHeader","requestIdleCallback","application","CurrentLocalStorageKey","floor","Date","UserID","DashboardMenuHTML","GetLocalStorageValue","localStorage","startsWith","removeItem","GetDashboardMenuURL","getTime","GetCookie","token","Distributor","Get_QueryString","fetch","credentials","response","returnHTML","Login","WriteDashboardMenuHTML","SetLocalStorageValue","expandingTimeout","collapsingTimeout","Menumouseenter","overflowY","highlightedSection","background","boxShadow","expandedSubCategory","Menumouseleave","CollapseAndUnHighlightMenu","passive","stopPropagation","scrollLeft","MainMenuItemHighlight","isVisible","scrollIntoView","behavior","block","inline","parentElement","Settings","MainMenuItemNoCategory","addViewRoleDiv","createElement","setAttribute","TableView","appendChild","ReplaceState","history","state","hash","titleObserver","recentlyVisited","JSON","parse","pages","lastIndex","cleanTitle","mutation","textContent","URL","pathname","stringify","subtree","characterData","childList","timeout","innerContent","elementsHidden","debouncedScrollHandler","debounce","hideAllElements","scrollTop","MainLayout","debouncedResize","ResizeLayout","button","HideAllDivs","isScale","dist","scale","mainLayoutTable","zoomables","DashboardElement","transition","originalEvent","touches","sqrt","pageX","pageY","currentDist","diff","abs","currentScale","scrollWidth","outerWidth","transform","transformOrigin","offsetWidth","zoomable","ApplicationVersionLinks","MainLayoutHeader","previousEl","previousElementSibling","scrollTo","ShowToolTipMessage","CreateSwitchDashboardVersionTypeButton","showSQL","UserMenuToggleInMenu","UserMenuInMenu","GetUserMenuInMenu","bottom","nextSibling","ShowMenu","top","OverFlowMenu","HeaderOverflowMenu","GetHeaderOverflowMenu","SetRenderTime","FavoriteURL","CloseMenu","GetUserDom","UserMenuHtml","outerHTML","MyProfile","switchVersionTypeContent","CurrentSettings","DashboardSetting","ExistsBetaVersion","EnableBeta","ShowBetaDialog","CreateEnableBetaDialog","OpenManageBeta","CreateManageBetaDialog","switchVersionTypeInput","gtag","enableBeta","EnableBetaVersion","setPageBreadcrumbTitle","Breadcrumb","BreadcrumbURL","Title","Button","htmlB","PageBreadcrumb_Title","HeaderMenuLoading","currentCategoryName","HighlightMenu","ToggleMenuCategory","EncompassMobileItem","shareButton","preventDefault","Load_QuicklinkMenu","elements","loadTime","PageLoadTime","body","renderTime","round","PageStartMilliseconds","setInternetSpeed","internetSpeed","isLocalhost","hostname","navigator","connection","downlink","backgroundColor","Round","rtt","SubmitTo","Id","Url","Form","submit","RegisterPageSizeCallback","Callback","CurrentFunction","RegisterPageResizeCallback","NeedScrollToCurrent","AllowResize","userMenu","offsetHeight","HideMenu","windowInnerHeight","innerHeight","windowInnerWidth","innerWidth","position","SetLayoutHeight","NewMenuTop","LeftSideMenu","getBoundingClientRect","outerHeight","myDashboard","MainContent","LoadKnowledgeHelpAlerts","KnowledgeHelpAlert","KnowledgeHelpKey","KnowledgeHelpKeyValue","json","Data","TotalCount","DestroyContent","hideableDivs","includesMobileTouchOverItem","MobileCurrentInput","ToggleMainMenu","cookie","SiteMenuToggle","visible","BreadCrumbMenu","removeAttribute","BreadCrumbMenuIcon","Content","headerApplication","categoryHighlight","mobileMenuMask","resetPositionAfterAnimationEnd","removeEventListener","mainMenuCategory","nextElementSibling","mobileMenuMaskDIV","dashboardId","tempDiv","currentPrimaryDashboard","oldCategory","oldMenuItem","currentURL","currentMenuLink","dashboardMenuLink","dashboardEditIDArr","currentMenuItem","arrow","oldCategoryHighlight","dashboardMenuItemArr","dashboardMenuItem","FieldName","Null2EmptyStr","parameterArr","parsingParameterArr","ToggleExcelMenu","ExcelMenu","buttonPosition","left","ShowSwitchDialog","Tips","cssText","ItemArr","childNodes","scrollIntoViewIfNeeded","highlightedItem","SiteSwitchSearch","currentTarget","InitSiteSwitchData","isDialogDragAttached","PositionDialog","Mask","clientWidth","documentElement","clientHeight","Height","opacity","overflow","Top","Left","minWidth","marginLeft","marginTop","SRDOwner","borderTopWidth","paddingTop","DialogScrollContent","DialogScrollContentTable","border","DialogScrollContentCells","borderBottom","dragDialog","currentDialog","startX","startY","handle","clientX","clientY","webkitUserSelect","MoveDone","MoveDialog","topMaxLimit","leftMaxLimit","DialogContent","DialogHeader","DialogFooter","HideDialog","DialogMask","myElement","embedElements","getElementsByTagName","pdfIframe","overflowX","ScrollPosition","scrollPosition","Category","CollapseOtherCategories","CategoryLayer","Collapsed","OtherCategories","CategoryArrow","OpenApplicationDownload","EncompassMobileCategory","getComputedStyle","get_searchOp","Value","Replace","Find","ReplaceVal","ReplaceAll","ClockIn","TimeClockActivityID","SitesData","SitesHTML","Sites","site","SiteSearchInput","myItemArr","SwitchSiteButton","SiteSwitchForm","action","InputArr","ctrlKey","metaKey","ViewNewDashboards","ShowUnshared","mySetShowUnsharedDashboardRequest","ShowHiddenDashboards","ShowDashboards","mySetShowDefaultDashboardRequest","ShowOtherSiteDashboard","ShowOther","mySetShowOtherSiteDashboardRequest","ShowHideFilters","TableFilter","WriteEncompassMobileItemHtml","clientApplication","clientOS","clientOSVersion","contentHtml","ClientApplication","DownloadURL","ClientVersion","isEmptyContent","trim","isMobileDevice","maxTouchPoints","isAndroid","isIOS","userAgent","ShareButtonHandle","displayCommandMenu","ele","ShowReMindMeDialog","dateTimeNow","DateTimeParseFormat","ScreenFmt","DataType","_DateTime","DateTimeInput","date","delayRequest","State","errors","detail","ShowBetaFeedbackDialog","innerText","head","myDashboardData","EC_TableView","AddSubTableJoinID","AddSubTableColumn","AddFilter","EC_Operator","Equals","GetResults","myRecordSet","EC_Recordset","Records","FeedbackDetail","Get","Dashboard","RemoveHTMLFromStr","OwnerAuthenticationID_DBValue","TaskID","tipContainers","tipMessage","right","EditLanguageString","userLanguage","LocaleStrings","open","ShowBeta","currentTab","DashboardName","BetaType","padding","BetaDescriptions","TypeID","Description","imgUrl","BetaDescription","find","shadowRoot","enableBetaDialog","CreateBetaTask","ErrorMessage","TaskTitle","Rows","Application","disableButtons","footer","refreshMenu","ClearMenuCache","OnClick_ToggleCheckboxes","InputForm","form","checkboxes","OnClick_ToggleCheckboxesBarcodes","ToggleCheckboxes","ToggleTextboxes","inputTextBox","InputFmt","_Integer","OnClick_CheckCheckboxes","IsChecked","InputFormElement","InputElements","OnClick_CheckRadioButton","OnClick_CheckAll","tableID","SocketUtil","MainPageControllerClass","_this","socket","debug","pageGuid","EventDic","Alone","AloneSessionID","AloneSocketState","ConnectTime","DisconnectTime","storageErrorCount","model","firstInit","socketServerUrl","timerHandler","sendCallback","sessionExpireCount","connectCheckTimer","apiUrl","domain","timeoutConnectThread","createGroupCache","createGroupCacheTime","TransferType","Self","All","Other","Room","DistributorAll","CurrentDistributor","Ping","Message","ReadGroupMessage","WriteState","GroupChange","UserAvailability","ScreenShare","RTCMessage","DeepLearning","SupportGroup","WMSMessage","EDBLClient","WCSMessage","WCSAlert","TaskCustomerIDChange","MessageRecalled","ReadTask","TaskChange","HandoffMessage","PerformanceTest","GroupType","Silence","System","Support","Task","ErrorCode","JsonError","HttpError","NoError","LoginFailed","SessionExpire","ECPSessionExpire","ECPSessionError","NoPermission","ErrorData","ErrorParameter","NoAction","NoGroup","ActionError","RedisSaveError","RedisQueryError","SNSPushError","SNSReceiveError","SocketServerError","UpgradeDataError","UpgradeSaveError","ECP_APITimeOut","SocketState","Expire","Connect","Reconnecting","Reconnect","Disconnect","ModelType","ECPSession","SocketSession","consoleError","getTimeStamp","writeLocalStorage","setItem","sizeStore","getItem","tip","toFixed","clear","dispose","refreshPageGuid","isStorage","events","values","changeSocketState","guid","hexDigits","random","checkPageGuid","getCookie","arr","match","RegExp","decodeURIComponent","getOldSessionID","SessionID","LastSocketInfoJson","LastSocketInfo","SocketSessionID","time","SessionTime","email","encompassSessionID","encompassid","currEncompassID","EncompassID","currEmail","Email","EncompassSessionID","memo","webSocketConnect","on","getEChatServerUrl","Promise","resolve","reject","SocketServerUrl","fun","SalesComm_GetEChatNewServer","jsonObj","Detail","refreshSocketSession","sessionExpireReconnect","TriggerSessionExpireEvent","api","formData","postValue","ECPVersion","requestUrl","getSessionID","cache","Status","checkConnected","StackTrace","createGroup","UserList","DisableCache","promise","md5","MD5","cacheKey","MessageGroupKey","send","messagePackage","fail","MessageGroupID","event_id","messageObj","C","M","MessageBody","G","TC","now","T","Transfer","Push","S","D","DataInfo","emit","ackMessage","MessageID","I","TimeCreated","connected","disconnect","GetSocketState","destroy","getSocketSession","isGuest","encompassID","encompassDBServer","obj","getOldSessionObj","EncompassDBServer","Platform","connectionString","SocketServerURL","onLine","config","getSocketIO","script","src","onload","firstScript","bindEvent","onunloadFunction","onunload","clearInterval","SenderAuthenticationID","A","code","setInterval","io","connect","reconnectionAttempts","checkSocket","messageGroupID","messageGroupInfo","MessageGroup","err","SocketStateStr","localStorageListener","origEvent","localStorageKey","localStorageNewValue","newValue","oldValue","eventObj","callbackObj","getQueryString","r","mainPageLost","nowTime","daemon","enterTimer","socketTimer","nowTime1","nowTime2","limit","webSocketInit","onstorage","VerifySessionFail","ReLogin","parent","Option","Browser","Chrome","Client","handleScreenShareMessage","Firefox","ScreenShare_Firefox","EChat","eChatState","eChatMoving","eChatTouch","SavedMessageChange","__height","__width","CustomEvent","SEARCH","SHOWDIALOG","NEWMESSAGE","DELETEGROUP","REDDOT","REDRAWTABLEALERTS","LocalStorageType","ECHATAUTHID","DBUPDATE","DBDELETED","UNREADDATA","ECHATSTARTSESSION","STARTSCREENSHARE","CLOSTSCREENSHARECONFIRM","RECEIVETASKDETAIL","GROUPREADLOCK","InitState","UserData","InitUser","PromptType","Normal","DoNotDisturb","PostPermissionType","Block","ReadOnly","DeliveryMethod","eChat","TextMessage","DBTableName","GROUPINFO","SETTINGS","USERS","TABLEALERTS","LOG","SENDMESSAGES","TASKS","ErrorType","AJAX_ERROR","WEBSOCKECT_ERROR","SENDMESSAG_EERROR","LOCALSTORAGE_ERROR","SESSION_ERROR","DATA_ERROR","UnKnownError","ParameterError","QueryFailed","VerifySessionFailed","VerifyUserFailed","Setting","GroupNumPerShow","MessageNumPerShow","CharactersOfMessage","TabNumPerWindow","minTabWidth","MaxCharacterGroupNameDisplay","DefaultUserIcon","DefaultGroupIcon","DefaultTaskIcon","DefaultAlertIcon","showView","UserStatus","userId","mainPage","isShow","currentTabName","messageWindow","EmployeesAlertsType","Day_Close","End_of_Day_Warnings","ASN_Receipt","New_Customer_Account","PO_Receipt","REMIT_Receipt","Import_Conflict","Picker_Cut","Supplier_Comm_Warnings","EDI_Download_Reminder","EDI_Inbound_Errors","EDI_Outbound_Errors","Account_Mismapping","Can_Count_Import","ViewType","CloseView","OpenView","MinimizeView","0","1","2","10","12","13","14","15","16","17","18","EventDispatcher","_h","bind","eventName","handler","eArr","ev","unbind","dispatch","createHandlerArgument","Util","initEChat","ErrorBind","filename","error_stack","stack","Log","lineno","timeStamp","IndexedDB","WriteError","eChatBtn","availableCheck","initMain","HandleQueue","V2010","EChatV2010","GetSetting","MainPageController","closeAllWindow","removeEChat","ClearDateBase","UpdateSetting","initSoundAlert","InitDB","unreadSumCountChange","DataProvider","initUser","DBHandleQueue","Loading","initMainPage","InitViewData","InitDBData","errorAlert","LocalStorage","startListen","removeEChatView","FullWindowController","Destroy","myUserAgent","bIsIpad","bIsIphoneOs","bIsAndroid","bIsWp","WebSocket","check","nav","onbeforeunload","mySelector","loadingText","borderRadius","loadDom","mark","ShowLoader","center","loader","alignItems","SetWindowLocation","windowElement","windowCount","messageWindowList","windowHig","windowWid","tmpTop","chatWindowSize","tmpLeft","point","checkPoint","draggableZIndex","HideLoader","getSearchText","dom","ListenerVisibility","PageActive","visibilityState","curTab","highLight","color","mini","resultDom","space","replaceWith","startDom","colorDom","endDom","ex","errorCodeStr","console","alertHTMLObj","throwError","errorCode","errorMessage","handleError","ajaxHandleError","xhrObj","errorObj","eChatErrorType","CopyFormat","FlickerContentClass","element","intervalID","originalContent","flickerFadeOutContent","flickerFadeInContent","flag","FlickerOn","str","interval","FlickerOff","isFlicker","maxZIndex","Number","resizeDialogMessage","ClientOS","EchatMessageWindowDialog","EChatMessageWindowHeight","EchatMessageWindowHeadHeight","EChatMessageWindowSendHeight","EchatMessageWindowTitleBoxHeight","EchatMessageWindowSearchHeight","insertText","selectionStart","selectionEnd","startPos","endPos","cursorPos","tmpStr","urlConverter","msg","urlReg","replaceText","longToDataTime","longNum","isNumber","dateTime","year","getFullYear","month","getMonth","getDate","hour","getHours","minute","getMinutes","sameYear","sameDay","second","getSeconds","CurrentUserInfo","DateFormat","TimeFormat","getElementPosition","targetElement","tmpWidth","tmpHeight","tmptop","tmpleft","y","limitX","getMenuWidth","limitY","getHeaderHeight","menu","header","windowResizeListener","windowChangeThread","resizeMainPageWindow","resizeMessageWindow","resizeMobileMessageWindow","autoResizeImage","maxWidth","maxHeight","objImg","ratio","w","h","wRatio","hRatio","checkImage","fileName","EChatLoadingList","FileLoad","FileDom","WindowDom","imageWidth","imageHeight","thumbnailHeight","thumbnailWidth","thumbnailUrl","images","scrollHeight","clickFlag","oldDom","preview","viewImage","image_url","size","displaysize","ext","lng","lat","address","video","controls","audio","FileClassName","fileTable","fileTr","fileTd1","fileTd2","fileTip","fileStateIcon","IsCurrentUser","fileSize","downloadBtn","dialogFooter","icon","OpenWithCtrlClickSupport","PreventScroll","delta","deltaY","onmousewheel","wheelDelta","returnValue","stop","handleWidthFix","handleHeightFix","AllowSelection","startX_Min","startX_Max","startY_Min","startY_Max","topMin","leftMin","mousedown","FullWindow","dragResize","move","resizeDirection","currentHandle","lastStartX","lastStartY","MoveStart","Moveing","resizeContext","mouseY","mouseX","RelativeHeight","AbsoluteHeight","RelativeWidth","AbsoluteWidth","changeOldMessageWin","WaitTime","IsRecentSearchState","EChatSearchText","EChatRecentSwitchBtn","LocalStorageClass","localstorage","sessionstorage","sessionStorage","isOpen","StorageError","warn","readLocalStorage","removeLocalStorage","clearLocalStorage","writeSessionStorage","isSessionOnStorage","readSessionStorage","removeSessionStorage","eChatDataProvider","currentAuthID","authID","DBUpdate","DBDeleted","unReadDataChange","StartSessionReceive","ScreenShareRequestDialog","receiveTaskDetail","WebSocketClass","isInit","WebSocketInit","updateUnreadSumCount","webSocketMessage","UpdateEChatState","EChatStateEle","StateText","Color","EChatUserName","EChatMsgTip","EChatNewMsgNum","cursor","EChatStateTip","ReceiveMessage","SyncLocalLastReadTime","UpdateGroupMessageReceive","WriteStateReceive","UpdateUserAvailability","SyncLocalTaskRead","TaskSourceEncompassID","UpdateTaskGroup","EChatDataProviderClass","LastMessageTime","SendWriteStateTime","lastUpdateSessionTime","createdGrouping","RefreshHandle","missUserInfoHandle","UserDict","MissUserInfo","UpdateInfo","TableName","keyList","Key","tableName","GetTableDataByKeyList","newGroupList","newGroup","redrawGroupEvent","msgGroupID","updatePromptIcon","groupID","taskID","prompt","Prompt","checkMessageWindowExist","chatTab","getMessageWindow","chatTabList","GroupInfo","updateGroupName","refreshMessageList","Messages","SettingValue","SetCurrPageUserInfo","updateUserSetting","AudioAlert","Tittle","messageValues","switchBtn","notifySwitch","Notify","Open","Close","RefreshBtnColor","mainWindowSize","resizeDialog","SavedMessage","refreshSavedMessage","DeleteInfo","commmand","ReturnText","GetMissUserInfo","userInfoArr","Users","userInfo","userDom","Icon","backgroundImage","GetTaskStatusElementByObjectiveID","ObjectiveID","TaskStatusID","GetTaskPublicMessageGroupID","groupId","postData","GetGroupInfoByGroupID","Refresh","ExcludeMessage","groupInfo","GetTableDataByKey","deleteGroupData","WriteGroupInfo","UpdateGroupUnread","UnReadCount","NewData","GroupUsers","GroupRead","groupRead","LastReadTime","ReadCount","MessageCount","MessageUpdated","PostPermission","UpdateGroupInfo","GetGroupInfoByAuthIDList","userList","groupData","GetTableDataByIndex","GroupDic","GetUserStrByGroupInfo","GroupName","CreateGroup","jsonData","GetUserAvailabilityClassAndColor","Availability","Class","GetGroupAvatarUrlAndAuthID","currentUserInfo","chatAuthID","userAuthID","SenderUserAvatar","UserCount","AuthID","GetUserInfo","missUser","CancelSavedMessage","TaskDetailID","MessageKey","AddSavedMessage","GetGroupName","addTaskID","groupName","DisplayName","Update_Session","GetInitUserDataByAjax","currentAuthenticationID","DBUserData","ExpireDate","setHours","SetInitUserData","CrossLocalPerm","LocationIDStr","UserAvatar","EnableEChat","PrimaryEncompassID","IsCustomer","eChatUserAvatarDisplays","CheckCurrentDBAuthID","ReLoginEventIsBind","SyncData","LastSyncDate","promise1","SendMessage","messageMark","messageBody","imgData","delayedSendTime","ghost","notify","isPublic","taskSourceEncompassID","notifyInternal","taskTitle","socketSessionID","dataInfo","Ghost","messageRequest","DelayedSendTime","msgObj","SendMessageSuccess","SendMessageFail","TaskDetailIsPublic","FileData","TaskDetail","ReturnMessage","IsPublic","SenderFullName","InsertTaskDetail","MessageRequest","InsertMessage","redrawUserAvailability","AvailabilityDisplay","SetCookie","UpdateCurrentStatus","subStr","Filter","messageList","mvalue","checkGroupType","messageExist","addUnreadCount","playAudioAlters","GroupDisplayName","currentMessageWindow","receiveNewMessage","overMessage","msgElement","mgsBody","sendTimeDom","savedIcon","chatBoxElement","flexElement","errorIcon","messages","sendText","groupid","len2","MessageWindowTextArea","sendBtn","tab","AddTipElement","groupType","groupUsers","groupMessages","UpdateGroupObject","GroupInfos","GroupMessages","messageGroup","NoticeUpdate","SaveEChatMessageToTaskDetail","messageIDStr","MessageIDStr","CreateTask","GetUserStrByUserList","UsersList","sortUserList","sort","a","b","isFromLocalStorage","groupList","GetTableAllData","groupReadInfoList","groupIdArr","update","UpdateGroupReads","updateUnReadNumIcon","GroupReadInfo","SendWriteState","GroupID","ReceiverAuthID","lastTime","sendTime","RecallMessage","RecallMessageID","SyncLastReadTime","UnreadGroup","GroupReadLockStr","GroupReadLock","TimeNow","GroupReadInfos","ReadAllGroup","GroupReadInfoList","newGroupIDList","GroupList","InsertOrUpdate","UpdateTaskGroupByMessageGroup","allTaskGroup","updateGroupArr","taskGroup","UserUpdated","TimeUpdated","Change","MergeGroup","DeleteTableDataByKey","windowExist","SenderName","writeStateName","eChatWriteState","RecalledText","messageDom","newMessage","getGroupHistory","viewMoreLastMessageTimeCreated","syncDate","GetRecentGroupList","Groups","MessageGroups","GroupReads","getMessageHistory","savedMessageKey","StartDate","EndDate","Limit","SavedMessageKey","messageDic","UpdateGroupMessages","getTaskDetailHistory","savedTaskDetailID","endTaskDetailID","showError","SavedTaskDetailID","EndTaskDetailID","NoExist","pattern","host","getGroupMessages","msgList","uploadUserAvatar","imageData","ImageData","serverJsonData","uploadGroupSetting","editGroup","oldGroupInfo","displayMessage","RemoveGroup","UpdateGroupUsers","RemoveUsers","AddUsers","addName","changeCount","user","word","removeName","oldGroupName","closeEvent","groupInfoNew","addRecentTab","close","updateUnRead","taskGroupArr","updateGroupIDArr","subScribeAlert","subScribeType","alertId","deliveryMethodStr","SubScribeType","AlertID","alertInfo","DeliveryMethodList","deliveryMethodArr","UpdateTableAlert","editGroupPromptType","GetUnreadMessageGroups","GetCustomerGroup","Search","GetGroupUserInfo","userInfoList","SenderSessionID","userDic","eChatPageUrl","userPageController","recentPageController","customGroupPageController","settingsPageController","savedPageController","subscribePageController","currentDisplayController","mainPageViewType","mainPageTab","userSearchHandle","currHeight","adjustClient","device","openView","EChatMainPage","EChatMaximizeBtn","ResizeFullWindow","ResizeMobileFullWindow","minimizeView","refreshView","alertClass","mainWindow","promptDom","editPrompt","OldIcon","NewIcon","echatDom","editPromptTitle","closeView","closeMessageWindow","EChatRefreshBtn","loadEChatViewHtml","Tools","Ajax","htmlData","ReloadEChatData","alertText","htmlDom","htmlDomChildren","children","transChar","transPlaceholders","t","maxBtnParent","SwichWindow","EChatSearchDom","SearchClearDom","searchFun","searchPanelKeyupEvent","EChatAlertSearchDom","clickTabEvent","EChatDirectorySwitch","tabDiv","SearchClear","ShowCreateGroupButton","listItems","searchImage","isTrigger","recentList","GetGroupSortTime","userArr","authID1","authID2","EChatSettingsTab","TableAlert","drawTableAlerts","EChatSavedTab","className","AddMenu","CustomComponent","InitUserSearchMenu","arg","searchBtn","RemoveAllEventListeners","searchDom","SearchDom","searchKey","UserSearch","UserTypeID","LocationID","Container","ClickCallBack","Mark","NotInArr","ShowUserType","ShowFilters","HiddenCreateGroupBtn","oldmainpageW","oldmainpageH","UserController","RecentController","CustomGroupController","SettingsController","SavedController","SubscribeController","InitSearch","redrawTableAlerts","deleteGroupEvent","stateStr","ResizeTextArea","setProperty","oldHeight","oldTop","getPropertyValue","minHeight","itemid","selectArr","EChatCreateGroup","EChatMainPageContent","selectAuthID","selectLength","deleteGroup","messageWindowViewType","redrawGroup","redrawCustomGroup","customGroup","dataCompleteEvent","InitDataing","initViewMore","Recent","dataList","alertInfoList","ClassAndColor","changeBrowserImage","mainPageIsShow","CopyMessageController","ClearCopyMessageDialog","audioElement","play","addSavedMessage","cancelSavedMessage","settingSaved","settingType","settingValue","updateSettings","tabExist","needCreate","tabWidth","lastTabTime","closeTab","TabCreateTime","chatTabListCount","addMessageWindow","MessageWindowController","createMessageWindow","NewWindowEvent","removeMessageWindow","msgWindowController","oldName","newName","browserImage","imgLink","newLinkElement","removeGroupsTabView","openUserWindowByUserArr","userStr","mainpage","limitLeft","limitTop","rect","changeHeight","changeWidth","unReadData","updateUI","unReadElement","RecentGroup","readInfo","unreadMessageGroups","redRecentDotElement","unreadCounts","unreadCount","log","unReadCount","num","EChatTitleNewMsgNum","EChatNewMsgTip","EChatButton","load","windowclose","GetEditPromptButton","promptEditBtn","GetMinEditPromptButton","GetLastMessage","lastMessage","SortTime","ScrollToMessageID","LastSenderAuthenticationID","LastSenderFullName","LastMessageID","LastSenderUserAvatar","LastMessageBody","SavedTime","MessageTime","newLastMessage","MessageDiv","cc_display","searchText","hightLight","DisplayMessageDom","DisplayMessage","SavedButtonEvent","SavedStatus","EChatMainPageRect","EChatMainPageTop","topHeight","bottomHeight","changeHeght","viewMoreLastMessageTimeCreated_Message","canEnter","timeOutThread","searchIng","searchTextOld","createRecentGroupElement","filterEmptyMessage","hideGroupButton","hideLastMessage","hideUnreadCount","lastMessageObj","RecentGroupTemplate","LastMessageDiv","LastMessageMultiLine","NoLastMessage","userNameDiv","userImg","groupIconUrlAndAuthID","groupIconUrl","userIcoSpan","nameSpan","includeUserSpan","groupNameDisplay","IncludeUser","groupEditBtn","TaskEdit","GroupSettingController","openGroupSettingWindow","alertInfoBtn","GetAlertDetailUrl","UnReadNumDiv","UnreadCount","isCurrTask","recentSavedBtn","groupButton","LoadEmployeesAlertsType","messageid","TargetElement","LastMsgTime","listEle","exist","EChatRecentSection","after","groupElement","TargetLastMsgTime","UserUnits","UserUnit","tmpLastMsgTime","reviseEchatGroupProperties","eCahtGroupList","eChatSavedBtn","eChatGroupEditBtn","eChatAlertDetailBtn","eChatAlertBtn","eChatTooltipDiv","createEchatGroupTooltip","eChatAlert","eChatTooltip","eChatTooltipJs","count","limitGroup_Message","checkGroup","drawGroups","LastMessageTimeCreated","searchObj","viewMoreElement","NoRecords","startIndex","tabElement","listElement","searchUser","only","searchMessageAndTask","searchGroup","searchUnread","loading","noRecordsElement","searchInfo","groupItem","animationLoading","StartIndex","viewMore","switchSearchUI","selectedUser","AuthenticationIDArr","selectAuthIDArr","DisplayDepartment","Department","DisplayJobTitle","JobTitle","userItemDisplay","UserItemDisplay","UserSelectEvnet","backgroundPosition","listDom","tabDom","backDom","backSearch","RecentSearch","noWait","KeyCodeEvent","KeyCode","keyCode","ListDom","ItemClassArr","SelectClass","EnterOpenItem","InputEvent","ChineseCharacterPattern","selectedStr","authid","EChatRecentList","EChatSuperSearchUnreadTab","EChatSuperSearchUnreadList","EChatSuperSearchMessageAndTaskTab","EChatSuperSearchMessageAndTaskList","EChatSuperSearchGroupTab","EChatSuperSearchGroupList","EChatSuperSearchUserTab","EChatSuperSearchUserList","promiseArr","dataCountArr","all","hasResult","noMore","tabName","searchValue","limitCount","nextStartIndex","ItemList","clearAll","groupInfoList","customGroupElement","createCustomGroupElement","divElement","marginRight","members","groupToolBtn","editButton","CustomGroupSearch","EChatGroupList","userListElement","userClickEvent","createGroupClickEvent","selectedArr","userElement","SearchText","userFilters","Null2NullStr","SearchIcon","EnterEvent","createGroupBtn","createTableAlertElement","tableAlertInfo","topElement","alertNameElement","allCheck","eChatCheck","eMailCheck","textCheck","switchButton","SwichButton","changeEvent","eChatCheckBox","eMailCheckBox","textCheckBox","bottomElement","checkCondition","Checked","TextCheckBox","tableAlertList","subscribeListElement","SubscribeAlert","SettingType","initEChatAudioAlert","eChatAudioAlertElement","checkBox","setting","subscribeListDiv","emptyDiv","showEmpty","nameSpans","subScribeNameStr","initEChatLoadingGif","pElement","initEChatUserAvatar","UserIconDiv","UserAvaterDisplay","initEChatDBButton","minimizeIsMoved","minimizeTwinkle","isPublicSwitch","notifyInternalSwitch","originalPoint","getOriginalPoint","inputArea","headerElement","minimizeElement","dialogElement","sendElement","handleElement","resizeElement","taskTitleElement","searchElement","createFloatLinkElement","removeSearchElement","removeFloatFileElement","textInput","tmpText","getSelectValue","topDiv","centreDiv","bottomDiv","cancelButton","okButton","removeFloatLinkElement","calculateFloatLinkElement","linkUrl","linkDisplay","linkTitle","linkTarger","urlRegex","reg","linkText","replaceLinkNew","replaceLink","insertLinkNew","insertLink","PreMessage","getValue","createDelayedSendTimeElement","removeSearchDisplayElement","removeDelayedSendTimeElement","table","dateTimehtml","delayTip","echat_DelayedTime_Display","DelayedTime","DisplaySendMessage","Delaybutton","delayInput","displayDom","sendingMessage","tableTr","delayTipDiv","uploadFiles","files","Tab","NotifyInternal","fileObj","tipDom","tipDivDom","createFloatFileElement","div","BrowseBtn","EChat_File_Input","FileName_Input","createSearchElement","rangeElement","SearchInfo","SearchDate","searchBtnClickEvent","inputEle","inputValue","createSearchDisplayElment","selectValue","promiss","SearchValue","DateRange","displaySearchMessageList","SearchItem","SearchButton","BackButton","txt","displaySearchMessageItem","senderName","itemElement","headImgElement","spaceElement","senderNameElement","textElement","headImgClickEvent","userMemberCount","message_flex","timeElement","closeBtn","miniziseBtn","miniziseEvent","tmpPoint","minimizeMessageWindow","openDashboardBtn","displayText","minimizeCloseBtn","CloseButton","textAreaDiv","inputTool","linkTool","linkElement","linkDisplayValue","linkUrlKey","temInput","clearFmtTool","clearSelectFmt","updateCharaterCounter","openEChatTool","searchTool","scrollToBotton","copyTool","ShowCopyMessageDialog","sendDelay","processImgData","htmlString","DelayDataElement","fileTool","imageElement","editMessageGroupID","editTaskID","createTask","TaskController","AddTask","newMessageGroupID","publicDiv","notifyDiv","notifyInternalDiv","NotifyInternalyInternal","EChatIsPublic","EChatNotify","NotifyInterDOM","dataTransfer","types","clipboardData","file","inputAreaEle","InputArea","InputAreaComponentEvent","ValueChange","sendDiv","writeStateSpan","writeStateMsg","sendSpan","tipMsg","numMsg","handleSpan","handleButton","hideMenu","syncGroupLastReadTime","twinkleOff","childElementCount","group_unread_button","setScrollTop","oldwinpageW","oldwinpageH","getScrollTop","EChatTabHead","EChatMainPageWidth","EChatTabHeadWidth","elementWidth","mainPageWidth","maxCount","windowList","resizeTab","ulwidth","switchWindowType","focusFlag","TextArea","mceDom","editorContainer","HideUnreadButton","twinkleHandle","twinkleOn","isPlay","toggle","twinkleClose","isOpenView","number","oldMessageWinH","oldMessageWinW","overedPartH","overedPartW","winpageW","winpageH","winpageLeft","winpageTop","MessageWinH","MessageWinW","moveHeight","moveWidth","initMessageWindowPosition","newDialogHeight","newDialogWidth","addTab","deleteTab","sync","showUnreadButton","savedKey","twinkle","chatTabController","ChatTabController","createHeadElement","createContentElement","topTab","drawHistoryMessages","TaskDetails","scorllToMessage","disablePublic","disableNotifyInternal","windowScroll","showTaskTitle","filter","clearMessage","DetailsButton","ShowUnreadButton","createMessageWindowTooltip","frequency","messageWindowTooltip","messageWindowTooltipDiv","ewsIconRuleMessage","ewsIconBreakOutMessage","ewsIconCloseMessage","LinkToolMessage","FileToolMessage","FmtToolMessage","SearchToolMessage","CopyToolMessage","SendDelayToolMessage","AlertToolMessage","OpenEChatToolMessage","unreadButton","headRect","messageArr","addButton","noMessage","moveHight","force","hideButton","DisabledInputArr","disabled","paddingBottom","addAlertTab","hideTab","showTab","searchRestore","setValue","bottomScroll","getValueCount","charatersLeft","msgWarning","msgNumber","orignalText","imgObj","TaskTitleDom","drawNewMessage","imgList","minimizeElementSpan","TabName","InputToolInput","messageWindowController","targetWindowController","isTwinkle","viewMoreCount","lastMessageID","lastScrollTop","isScrollBottom","tabMenu","createMenuElement","topTxt","iconUrl","iconImgSpan","iconSpan","tabList","openedTab","msgItem","msgItemInner","nameDisplayElement","closeElement","chattingBoxElement","scrollCheck","createSendTimeElement","createMessageElement","EC_App","filterATag","ATag","aTagResult","URL_ID","aTag","delayimgElement","delaymessge","privateLabelContainer","privateLabel","SavedMessageIcon","sender","altKey","Confirm","createFloatMessageElement","floatDiv","msgSpan","numSpan","scrollToBottom","removeFloatMessageElement","floatMessage","removeBottomMessageElement","bootom","TipElement","titleDom","disable","PubicTool","showAll","scrollTopNum","showMsgNum","messsageWindow","scrollEvent","scrollPage","showCount","moreMessageElement","showMsgList","getServerMessageHistory","TriggerOnce","isAddToBottom","lastDom","lastDomTime","messagemark","floatElement","MessageObjList","chatBox","eChatDialogTabMenus","CopyMessageControllerClass","Type","SaveCallBack","Scrolling","lastClickElement","CallBack","echat_CopyMessageList","echat_CopyMessage_Dialog","cpoy_Window","SaveMessageToTaskDetail","initMessage","DrawHistoryCopyMessages","SaveSelectMessageBtn","EChat_Copy_Select_Div","placeholder","FillWithAutoComplete","InputName","CurValue","IsSearch","RefTable","RefField","RefFieldDisplay","RefFieldDisplayDataType","_Text","Required","RandomID","Translate","LimitToRefList","Placeholder","CreateCopyMessageElement","messagesgElement","copyBoxElement","selectElement","shiftKey","currDom","previousSibling","getSelection","removeAllRanges","ChattingBox","GetCheckMessageIDStr","getDBGroupHistoryMessage","nextSyncDate","GetCopyMessageListDom","scroll","isFirst","selectAllBtn","clearCopyMessageDialogSelected","copyMessageInput","selectNum","SelectAllEvent","loadCount","_selectAllBtn","eChatMask","groupSettingWindow","userObj","GroupMemberObj","groupSavedData","createGroupSettingWindow","eChatMaskHTML","dialogTitle","BasicWindow","draggable","headerTitle","closeCallBack","removeGroupSettingWindow","leftContent","middleContent","rightContent","groupLeft","groupIconText","groupIconImage","groupIconBtn","ChangePictureButton","saveImageEvent","margin","groupNameDiv","groupNameText","groupNameInput","groupMemberDiv","groupMemberText","groupMemberList","groupMemberDeleteBtn","BasicButton","blackButton","clickEvent","groupMemberDeleteEvent","allUserDiv","allUserText","allUserSearchInput","editGroupUserList","allUserInputDiv","advancedBtn","timeOuntId","searchClear","allUserInput","nameArr","EChatGroupUserSearchText","groupMemberAddBtn","groupMemberAddEvent","bottomBtn","delBtnEvent","option","okBtnEvent","okBtn","insertContent","setGroupSettingData","userObjToArray","targetObj","resultArr","EChatGroupSettingName","select","groupMemberArray","tmpUser","drawGroupMember","eChatCheckBoxSpan","tmpGroupInfo","newUsers","oldUsersStr","newUsersStr","group","closeWindow","Avatar","backgroundRepeat","backgroundSize","checkedList","checkBoxElement","CustomerID","AssignToUserID","ObjectiveTypeID","FeatureID","FoundIn","Clear","IsSupport","OpenDialog","EChatTaskDialogBase","paddingRight","AddField","AddCopyMessage","triggerElement","OnChangeCallback","ListLength","AllowAddRelated","tabIndex","RefFieldFilter","TabIndex","MessageListDiv","CopyMessageIDList","lastStartIndex","createSavedMessageElement","savedMessage","SavedMessageTemplate","UnreadDom","cancelBtn","drawSavedMessage","SavedMessageDom","Sort","messageSortTime","Item","before","updateUnreadCount","showPage","change","unreadDom","initEvent","windowProperty","BasicWindowClass","property","baseWindow","createWindow","deleteWindow","Maximize","currentWindow","buttonProperty","imageUrl","imageClass","imagePosition","ecpid","baseButton","dropdown","image","BasicImage","float","arrowDiv","imageProperty","baseImage","Camera","videoId","imageCanvasId","CameraClass","videoEleId","imageCanvasEleId","videoStream","openCamera","getMedia","getUserMedia","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","mediaDevices","stream","srcObject","closeCamera","errInfo","snapPhoto","imageCanvas","context","getContext","drawImage","toDataURL","videoTrack","getTracks","videoEle","AreaClass","isFirFox","isSafari","editorEvent","editorElement","mouseIsDown","hasPasteContent","initInputArea","pasteEvent","inputEvent","keydownEvent","keyupEvent","blurEvent","mouseoutEvent","mouseupEvent","mousedownEvent","setContent","blurRange","selection","addRange","replaceNode","range","getRangeAt","deleteContents","insertNode","insertImage","img","Image","imageHandler","formatIndex","dataSrc","items","kind","imageReader","fileData","getAsFile","fileReader","FileReader","readAsDataURL","insertEnter","setRange","nodebr","startContainer","startOffset","endOffset","endContainer","nodediv","commonAncestorContainer","insertAfter","newrange","createRange","setStartAfter","setEndAfter","newElement","lastChild","cloneRange","editorElementText","editorElementLastNode","setStart","ImageCrop","canvasId","imageSource","ImageCropClass","canvas","Selection","px","py","csize","csizeh","bHow","iCSize","bDrag","bDragAll","draw","ctx","strokeStyle","lineWidth","strokeRect","fillStyle","fillRect","drawScene","clearRect","selectObj","createSelection","startLen","iMouseX","iMouseY","canvasOffset","cx","mx","cy","my","iFW","iFH","iFX","iFY","getImageData","tmpCanvas","tmpCtx","btnDiv","cameraComponent","imageCrop","createEditPhotoWindow","editPhotoWindow","whiteButton","canvasTop","createTakePhotoWindow","takePhotoWindow","snapshotBtn","retakeBtn","initBtn","hidendiv","takePhotoBtn","supportPhoto","uploadBtn","inputValueChangeEvent","iconFile","tmpImage","cloneInput","cloneNode","inputElement","closeeChatAvatarBtn","userCount","pWidth","pHeight","IsUserAvater","userIconDisplay","UserAvatarDisplay","UserAvailabilityI","showUserType","checkBoxLable","checkBoxSpan","checkBoxInput","typeSpan","EChatUserAdvancedSearch","menuUserTypeValues","menuLocationValues","menuRoleValues","filterButton","SendMessageUserAdvancedSearchBtn","locationDom","Locations","ValuesArr","locationInfo","Location","_AutoNumber","CurDisplayValue","roleDom","Roles","roleInfo","userTypeDom","UserTypes","userTypeInfo","AjaxClear","Checkboxes","CheckboxesLength","eChatUserItem","cancelAuthID","eChatParentCheckBoxSpan","hasFilter","userIdArr","DefaultUserStr","DefaultUserArr","sortUserInfoList","menuUserType","menuLocation","menuRole","itemList","selectDom","moveIndex","moveDom","listRect","moveRect","ButtonClass","inputID","checkBoxProperty","TextCheckBoxClass","selfChangeEvent","triggerEvent","alertType","IndexedDBClass","DB_NAME","DB_VERSION","OLD_DB_VERSION","READ_WRITE","READ_ONLY","SkipDBCheck","openDBErrorCount","throwErrorCount","indexedDB","webkitIndexedDB","mozIndexedDB","msIndexedDB","getDB","request","onsuccess","evt","onerror","onupgradeneeded","db","oldVersion","InitTable","newVersion","databases","dbList","version","checkDB","DataUpgrade","DataDelete","onclose","IndexedDBThrowError","objectStoreNames","deleteDatabase","createObjectStore","keyPath","createIndex","unique","DeleteOldData","KeyName","ReservedNumber","DeleteTableAllData","DateList","over","oldGroupList","newMessages","oldGroup","mergeGroupMessage","mergeTask","tmpLastMessage","LastMessage","Notice","changeGroupIDArr","concat","margeGroup","margeGroupInfo","taskGroups","TaskIDList","oldTaskList","oldTaskIdList","groupReads","AsyncLock","SyncExecue","lockName","arg1","arg2","arg3","SyncQueue","finally","lockPromiss","absoluteValue","UpdateGroupUnreadSubThread","hasChange","DeleteGroup","deleteGroups","retry","ConnectionTime","LastSyncLocalDate","DeleteGroups","SavedMessages","GroupHistorySyncDate","GroupCode","CreatedBy","UpdatedBy","oldMessageList","newMessageList","mergeMessageList","isExist","Time","DataObj","transaction","objectStore","put","MinTime","MinMessageTimeCreated","sortGroup","sortTime","openCursor","DataList","continue","dbIndex","IDBKeyRange","DataDic","get","primaryKey","oncomplete","tabeName","users","GetTableDataCount","Count","delete","DeleteTableDataByKeyList","DropTable","TableAlertList","errorList","lastKey","newData","UpdateSentMessage","webscoketMessage","TimeStamp","stackTrace","Stack","WriteDebug","newAuthID","CurrentUser","SettingName","HandleArr","nextStep","oldLeft","keyupFlag","first","oldWidth","SwichSmallWindow","SwichFullWindow","EChatFullWindowContent","ScorllToBottom","UpdateTextCount","textArea","tabArr","groupIDArr","messageWindowMinimize","screenHeight","echatLeft","offsetLeft","messageWindowLeft","EChatMainPageHead","InitTextArea","smallTool","toolbar","plugins","elementpath","statusbar","content_style","setup","editor","onclick","extended_valid_elements","AddControl","ControlType","HtmlEdit","LoadControls","TinymceEdit","contentDocument","iframeElement","EcahtTabHead","EcahtSearchText","AddMapMarker","zoom","myOptions","mapTypeControl","google","maps","LatLng","mapTypeId","MapTypeId","ROADMAP","Map","marker","Marker","parseFloat","infowindow","InfoWindow","addListener","AloneEChat","initFail","VerifyErrorAction"],"mappings":"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","file":"DefaultAll.min.js","sourcesContent":["\"use strict\";\r\n\r\n(function (EWS) {\r\n const JsonPath = function (options) {\r\n options = Object.assign({}, {\r\n data: {},\r\n resultType: \"VALUE\",\r\n keepHistory: true,\r\n onFound(_path, _value) { },\r\n onNormalize(_expression) { },\r\n onTrace(_expression, _value, _path) { },\r\n onWalk(_loc, _expression, _value, _path, _func) { }\r\n }, options);\r\n\r\n const P = {\r\n result: [],\r\n\r\n normalize(expr) {\r\n options.onNormalize(expr);\r\n\r\n const subx = [];\r\n\r\n return expr.replace(/[['](\\??\\(.*?\\))[\\]']|\\['(.*?)'\\]/g, ($0, $1, $2) => `[#${subx.push($1 || $2) - 1}]`).replace(/'?\\.'?|\\['?/g, \";\").replace(/;;;|;;/g, \";..;\").replace(/;$|'?\\]|'$/g, \"\")\r\n .replace(/#([0-9]+)/g, ($0, $1) => subx[$1]);\r\n },\r\n\r\n asPath(path) {\r\n const x = path.split(\";\");\r\n let p = \"$\";\r\n\r\n for (let i = 1, n = x.length; i < n; i++) {\r\n p += /^[0-9*]+$/.test(x[i]) ? (`[${x[i]}]`) : (`['${x[i]}']`);\r\n }\r\n\r\n return p;\r\n },\r\n\r\n store(p, v) {\r\n options.onFound(p, v);\r\n\r\n if (p) {\r\n switch (options.resultType) {\r\n case \"PATH\":\r\n P.result[P.result.length] = P.asPath(p);\r\n break;\r\n\r\n case \"BOTH\":\r\n P.result[P.result.length] = {\r\n path: P.asPath(p),\r\n value: v,\r\n query: p\r\n };\r\n\r\n break;\r\n\r\n default:\r\n case \"VALUE\":\r\n P.result[P.result.length] = v;\r\n break;\r\n }\r\n }\r\n\r\n return !!p;\r\n },\r\n\r\n trace(expr, val, path) {\r\n options.onTrace(expr, val, path);\r\n\r\n if (expr !== \"\") {\r\n let x = expr.split(\";\");\r\n const loc = x.shift();\r\n\r\n x = x.join(\";\");\r\n\r\n if (val && Object.prototype.hasOwnProperty.call(val, loc)) {\r\n P.trace(x, val[loc], `${path};${loc}`);\r\n } else if (loc === \"*\") {\r\n P.walk(loc, x, val, path, (m, l, z, v, p) => {\r\n P.trace(`${m};${z}`, v, p);\r\n });\r\n } else if (loc === \"..\") {\r\n P.trace(x, val, path);\r\n\r\n P.walk(loc, x, val, path, (m, l, z, v, p) => {\r\n // eslint-disable-next-line no-unused-expressions\r\n typeof v[m] === \"object\" && P.trace(`..;${z}`, v[m], `${p};${m}`);\r\n });\r\n } else if (/^\\(.*?\\)$/.test(loc)) {\r\n P.trace(`${P.eval(loc, val, path.substr(path.lastIndexOf(\";\") + 1))};${x}`, val, path);\r\n } else if (/^\\?\\(.*?\\)$/.test(loc)) {\r\n P.walk(loc, x, val, path, (m, l, z, v, p) => {\r\n if (P.eval(l.replace(/^\\?\\((.*?)\\)$/, \"$1\"), v instanceof Array ? v[m] : v, m)) {\r\n P.trace(`${m};${z}`, v, p);\r\n }\r\n });\r\n } else if (/^(-?[0-9]*):(-?[0-9]*):?([0-9]*)$/.test(loc)) {\r\n P.slice(loc, x, val, path);\r\n } else if (/,/.test(loc)) {\r\n for (let s = loc.split(/'?,'?/), i = 0, n = s.length; i < n; i++) {\r\n P.trace(`${s[i]};${x}`, val, path);\r\n }\r\n }\r\n } else {\r\n P.store(path, val);\r\n }\r\n },\r\n\r\n walk(loc, expr, val, path, f) {\r\n if (val instanceof Array) {\r\n for (let i = 0, n = val.length; i < n; i++) {\r\n if (i in val) {\r\n f(i, loc, expr, val, path);\r\n }\r\n }\r\n } else if (typeof val === \"object\") {\r\n const keyArr = Object.keys(val);\r\n for (let i = 0; i < keyArr.length; i++) {\r\n const m = keyArr[i];\r\n if (Object.prototype.hasOwnProperty.call(val, m)) {\r\n f(m, loc, expr, val, path);\r\n }\r\n }\r\n }\r\n },\r\n\r\n slice(loc, expr, val, path) {\r\n if (val instanceof Array) {\r\n const len = val.length;\r\n let start = 0;\r\n let end = len;\r\n let step = 1;\r\n\r\n loc.replace(/^(-?[0-9]*):(-?[0-9]*):?(-?[0-9]*)$/g, ($0, $1, $2, $3) => {\r\n start = parseInt($1 || start);\r\n end = parseInt($2 || end);\r\n step = parseInt($3 || step);\r\n });\r\n\r\n start = (start < 0) ? Math.max(0, start + len) : Math.min(len, start);\r\n end = (end < 0) ? Math.max(0, end + len) : Math.min(len, end);\r\n\r\n for (let i = start; i < end; i += step) {\r\n P.trace(`${i};${expr}`, val, path);\r\n }\r\n }\r\n },\r\n\r\n eval(x, _v, _vname) {\r\n try {\r\n return _v && eval(x.replace(/(^|[^\\\\])@/g, \"$1_v\").replace(/\\\\@/g, \"@\"));\r\n } catch (e) {\r\n throw new SyntaxError(`jsonPath: ${e.message}: ${x.replace(/(^|[^\\\\])@/g, \"$1_v\").replace(/\\\\@/g, \"@\")}`);\r\n }\r\n },\r\n\r\n query(expression) {\r\n if (!options.keepHistory) {\r\n P.result = [];\r\n }\r\n\r\n if (expression) {\r\n P.trace(P.normalize(expression).replace(/^\\$;?/, \"\"), options.data, \"$\");\r\n return P.result.length ? P.result : false;\r\n }\r\n return null;\r\n }\r\n };\r\n\r\n return P;\r\n };\r\n\r\n EWS.Json = {\r\n Escape(value) {\r\n value = value.replace(/\\(/g, \"\");\r\n value = value.replace(/\\)/g, \"\");\r\n value = value.replace(/\\//g, \"\");\r\n value = value.replace(/\\\\/g, \"\");\r\n value = value.replace(/\\+/g, \"\");\r\n value = value.replace(/-/g, \"\");\r\n value = value.replace(/([.^$*'?()[{\\\\|])/g, \"\\\\$1\");\r\n\r\n return value;\r\n },\r\n\r\n Query(data, expression) {\r\n return JsonPath({\r\n data\r\n }).query(expression);\r\n }\r\n };\r\n}(EWS));\r\n","const BC_SavedReport = function (EWS) {\r\n const me = this;\r\n\r\n this.EWS = EWS;\r\n this.UserName = \"\";\r\n this.FullName = \"\";\r\n this.UserId = 0;\r\n // Task 726729: Create dashboard widget to display a selected list of reports in a 'Report Library UI' format\r\n this.SelectedReportIDArr = [];\r\n\r\n this.EWS.Command.Add(\"BC_SavedReport_GetReports\", (control, args) => {\r\n EWS.VerifySession(() => {\r\n ECP.Dialog.ShowLoading();\r\n\r\n if (args.ownerauthenticationid === undefined && AuthenticationID) {\r\n args.ownerauthenticationid = AuthenticationID;\r\n }\r\n if (!args.ownerauthenticationid || EC_Fmt.isNull(parseInt(args.ownerauthenticationid))) {\r\n args.ownerauthenticationid = \"0\";\r\n }\r\n const myRequest = new ECP.EC_Request(\"SavedReport_GetReports\");\r\n myRequest.AddRequestVariable(\"OwnerAuthenticationID\", args.ownerauthenticationid);\r\n\r\n if (args.search) {\r\n // Task 662357: Run Test Case 3968 Fail : Can not search this Fusion Report in Dashboard Report Search\r\n myRequest.AddRequestVariable(\"SearchStr\", args.search);\r\n }\r\n // Task 667701: Improve performance when saving a fusion report that has 'columns' on it - Prevent 'Columns' reports from being used as base reports\r\n if (args.FilterPivot) {\r\n myRequest.AddRequestVariable(\"FilterPivot\", args.FilterPivot);\r\n }\r\n\r\n if (args.DashboardID) {\r\n if (Array.isArray(args.DashboardID)) {\r\n myRequest.AddRequestVariable(\"DashboardID\", args.DashboardID.join(\",\"));\r\n } else {\r\n myRequest.AddRequestVariable(\"DashboardID\", args.DashboardID);\r\n }\r\n }\r\n\r\n if (this.SelectedReportIDArr.length > 0) {\r\n myRequest.AddRequestVariable(\"SelectedReportID\", this.SelectedReportIDArr.join(\",\"));\r\n }\r\n\r\n myRequest.Submit().then((results) => {\r\n ECP.Dialog.HideLoading();\r\n\r\n let html = \"\";\r\n const reportDisplay = args.Dialog.querySelector(\"#ews-report-display\");\r\n\r\n const shared = results.owner;\r\n\r\n for (let i = 0; i < shared.length; i++) {\r\n html += \"
\";\r\n\r\n if (shared.length === 1) {\r\n html += \"
\"\r\n + \"
\"\r\n + `${shared[i].name}`\r\n + \"
\";\r\n } else {\r\n html += \"
\"\r\n + \"
\"\r\n + `${shared[i].name}`\r\n + \"
\";\r\n }\r\n\r\n for (let j = 0; j < shared[i].category.length; j++) {\r\n if (shared[i].category[j].name === \"\") {\r\n for (let k = 0; k < shared[i].category[j].report.length; k++) {\r\n // 1) Pivot 2)Data\r\n const IsPivot = shared[i].category[j].report[k].reporttype === 1;\r\n html += `
`\r\n + \"
\"\r\n + \"
\";\r\n // Task 1011667: Include all reports in the report selector for Import Routines\r\n if (IsPivot) {\r\n html += ``;\r\n } else {\r\n html += ` -1 ? \"checked\" : \"\"} name=saved-report source=\"${shared[i].category[j].report[k].source}\" owner=\"${shared[i].owner}\" fullname=\"${shared[i].name}\" value=\"${shared[i].category[j].report[k].id}\" category=\"${shared[i].category[j].name}\" />`;\r\n }\r\n html += \"
\"\r\n + `${shared[i].category[j].report[k].name}`\r\n + \"
\";\r\n if (IsPivot) {\r\n html += `Cannot use this report as a source, it contains child/details rows, a column (pivot), or a grand total`;\r\n }\r\n }\r\n } else {\r\n html += \"
\"\r\n + \"
\"\r\n + \"
\"\r\n + `${shared[i].category[j].name}`\r\n + \"
\";\r\n\r\n for (let k = 0; k < shared[i].category[j].report.length; k++) {\r\n const IsPivot = shared[i].category[j].report[k].category === 1;\r\n html += `
`\r\n + \"
\"\r\n + \"
\";\r\n if (IsPivot) {\r\n html += ``;\r\n } else {\r\n html += ` -1 ? \"checked\" : \"\"} name=saved-report source=\"${shared[i].category[j].report[k].source}\"owner=\"${shared[i].owner}\"fullname=\"${shared[i].name}\"value=\"${shared[i].category[j].report[k].id}\" category=\"${shared[i].category[j].name}\" />`;\r\n }\r\n html += \"
\"\r\n + `${shared[i].category[j].report[k].name}`\r\n + \"
\";\r\n if (IsPivot) {\r\n html += `Cannot use this report as a source, it contains child/details rows, a column (pivot), or a grand total`;\r\n }\r\n }\r\n\r\n html += \"
\";\r\n }\r\n }\r\n\r\n html += \"
\";\r\n }\r\n\r\n reportDisplay.innerHTML = html;\r\n\r\n if (args && args !== undefined && (args.report || (args.multipleSelect && this.SelectedReportIDArr.length > 0))) {\r\n // Task 923438: Dashboard Report Widget: Editing a Dashboard forces me to re-select the Report\r\n const reportIdArr = args.multipleSelect ? this.SelectedReportIDArr : [args.report];\r\n\r\n for (let i = 0; i < reportIdArr.length; i++) {\r\n const reportId = reportIdArr[i];\r\n const reportInput = args.Dialog.querySelector(`#ews-report-display input[type=${args.multipleSelect ? \"checkbox\" : \"radio\"}][value='${reportId}']`);\r\n if (reportInput) {\r\n reportInput.checked = true;\r\n let treeNode = reportInput.closest(\".ews-tree-node\");\r\n // Task 1034256: Show report already selected in report widget on dashboards\r\n if (!args.multipleSelect) {\r\n const currentSavedReports = EC_Fmt.HtmlStrToElement(\"
\");\r\n reportDisplay.prepend(currentSavedReports);\r\n currentSavedReports.prepend(treeNode);\r\n }\r\n // Expands the Report tree by default.\r\n const NodeArray = [];\r\n while (treeNode) {\r\n NodeArray.push(treeNode);\r\n if (treeNode.parentNode && !treeNode.parentNode.closest(\".ews-tree-node\")) {\r\n break;\r\n }\r\n treeNode = treeNode.parentNode.closest(\".ews-tree-node\");\r\n }\r\n NodeArray.forEach((node) => {\r\n if (node.querySelector(\".ews-tree-collapsed\")) {\r\n node.querySelector(\".ews-tree-collapsed\").click();\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n if (args.multipleSelect) {\r\n EC_Fmt.TriggerEvent(args.Dialog.querySelector(\"#ews-report-title\"), \"keyup\");\r\n\r\n const ownerNodeSet = new Set();\r\n const checkedInputArr = document.querySelectorAll(\"input[type=checkbox]:checked\");\r\n\r\n for (let i = 0; i < checkedInputArr.length; i++) {\r\n const checkedInput = checkedInputArr[i];\r\n const ownerNode = checkedInput.closest(\"#ews-report-display > .ews-tree-node\");\r\n\r\n ownerNodeSet.add(ownerNode);\r\n }\r\n\r\n const ownerNodeArr = Array.from(ownerNodeSet);\r\n\r\n for (let i = ownerNodeArr.length - 1; i > 0; i--) {\r\n const ownerNode = ownerNodeArr[i];\r\n\r\n document.getElementById(\"ews-report-display\").insertBefore(ownerNode, document.getElementById(\"ews-report-display\").firstElementChild);\r\n }\r\n\r\n if (!EC_Fmt.isNull(reportDisplay.firstChild)) {\r\n reportDisplay.firstChild.addEventListener(\"click\", (event) => {\r\n if (event.target.matches(\"input[type='checkbox']\")) {\r\n const checkbox = event.target;\r\n\r\n if (checkbox.checked) {\r\n this.SelectedReportIDArr.push(checkbox.value);\r\n if (this.SelectedReportIDArr.length > 100) {\r\n this.SelectedReportIDArr.splice(99, 1);\r\n checkbox.checked = false;\r\n ECP.HTML.Snackbar(\"You can only select up to 100 reports.\", \"Warning\");\r\n }\r\n } else {\r\n const index = this.SelectedReportIDArr.indexOf(checkbox.value);\r\n\r\n if (index > -1) {\r\n this.SelectedReportIDArr.splice(index, 1);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n });\r\n });\r\n });\r\n};\r\n\r\nBC_SavedReport.prototype.ReportType = {\r\n Default: 0,\r\n Cube: 1\r\n};\r\n\r\nBC_SavedReport.prototype.Delete = function (id, trigger) {\r\n const me = this;\r\n // Task 726325: Save Fusion report is very very slow, and does not give the user a 'saving' message of any kind\r\n me.ConfirmDelete(id, trigger, EC_Fmt.Trn(\"Are you sure you want to delete this saved report?
Deleting this report is irreversible and the report cannot be recovered once it's deleted.\"));\r\n};\r\n\r\nBC_SavedReport.prototype.ConfirmDelete = function (id, trigger, message) {\r\n const html = \"\"\r\n + \"\"\r\n + ``\r\n + \"\"\r\n + \"
${message}
\";\r\n\r\n ECP.Dialog.ShowDialog(\"Confirm delete report\", html, {\r\n barPosition: \"top\",\r\n cancelButtonTitle: \"Cancel\",\r\n confirmButtonTitle: \"Delete report\",\r\n confirmButtonType: \"permanent-destructive\",\r\n confirmButtonAction(dialog) {\r\n ECP.Dialog.CloseDialog(dialog);\r\n\r\n ECP.Dialog.ShowLoading();\r\n\r\n const myRequest = new ECP.EC_Request(\"SavedReport_DeleteReport\");\r\n myRequest.AddRequestVariable(\"ReportID\", id);\r\n\r\n myRequest.Submit().then((result) => {\r\n if (trigger) {\r\n document.querySelectorAll(trigger).forEach((item) => {\r\n item.remove();\r\n });\r\n }\r\n\r\n ECP.Dialog.HideLoading();\r\n\r\n if (result.success !== \"True\") {\r\n ECP.Dialog.Alert(\"Unable to delete report\");\r\n }\r\n }).catch((error) => {\r\n ECP.Dialog.HideLoading();\r\n throw error;\r\n });\r\n }\r\n });\r\n};\r\n\r\nBC_SavedReport.prototype.Edit = function (id) {\r\n const me = this;\r\n\r\n if (id && !EC_Fmt.isNull(parseInt(id))) {\r\n EWS.VerifySession(() => {\r\n const myRequest = new ECP.EC_Request(\"SavedReport_GetReport\");\r\n myRequest.AddRequestVariable(\"ReportID\", id);\r\n\r\n myRequest.Submit().then((result) => {\r\n if (result.error) {\r\n EWS.HideLoading();\r\n ECP.Dialog.Alert(result.error);\r\n return;\r\n }\r\n const args = {\r\n id: parseInt(id),\r\n document: result.document,\r\n name: result.name,\r\n DashboardID: result.DashboardID,\r\n format: result.format,\r\n category: result.category,\r\n owner: result.owner,\r\n ownerauthenticationid: result.ownerauthenticationid,\r\n favorite: result.favorite,\r\n link: result.link,\r\n roles: result.roles,\r\n ReportType: result.ReportType,\r\n ApplicationID: result.ApplicationID\r\n };\r\n\r\n me.Show_BC_SavedReport_EditReport_Dialog(args);\r\n });\r\n });\r\n } else {\r\n ECP.Dialog.Alert(EC_Fmt.Trn(\"Invalid Report ID\"));\r\n }\r\n};\r\n\r\nBC_SavedReport.prototype.Favorite = function (event, ReportURL, Name) {\r\n if (ReportURL === \"\") {\r\n ReportURL = window.location.href.substring(window.location.href.indexOf(\"/Home?\") + 1);\r\n }\r\n\r\n const myRequest = new ECP.EC_Request(\"GetFavoritesDialog\");\r\n myRequest.AddRequestVariable(\"FavoriteURL\", ReportURL);\r\n // Task 615639: Favoriting Reports with Names Longer than 50 Characters Prevents TextArea from Generating and Throws Error Upon Save\r\n myRequest.AddRequestVariable(\"FavoriteName\", Name.substring(0, 50));\r\n\r\n myRequest.Submit().then((result) => {\r\n const RemoveFavorite = result.RemoveFavorite === \"true\";\r\n ECP.Dialog.ShowDialog(RemoveFavorite ? \"Remove Favorite?\" : \"Save Favorite?\", result.html, {\r\n barPosition: \"top\",\r\n Width: 460,\r\n disableResize: true,\r\n cancelButtonTitle: \"Cancel\",\r\n confirmButtonTitle: RemoveFavorite ? \"Remove\" : \"Save\",\r\n confirmButtonAction: (Dialog) => {\r\n clearDashboardMenuCache();\r\n\r\n let NewName = \"\";\r\n if (!RemoveFavorite) {\r\n NewName = Dialog.getElementsByClassName(\"FavoritesName\")[0].value;\r\n } else {\r\n NewName = `DeleteRecord_${result.ID}`;\r\n }\r\n if (RemoveFavorite || NewName !== \"\") {\r\n // Task 624857: SystemError: UnknownFile:JavaScript Error: UnknownFile (0) - Error in promise - TypeError: Failed to fetch\r\n const UpdateFavoriteRequest = new ECP.EC_Request(\"UpdateFavorite\");\r\n UpdateFavoriteRequest.SetReturnType(ECP.EC_ReturnType.Text);\r\n UpdateFavoriteRequest.AddRequestVariable(\"ID\", result.ID);\r\n UpdateFavoriteRequest.AddRequestVariable(\"Name\", NewName);\r\n if (!RemoveFavorite) {\r\n UpdateFavoriteRequest.AddRequestVariable(\"FavoriteURL\", ReportURL, ECP.EC_Verb.Post);\r\n }\r\n UpdateFavoriteRequest.Submit().then(() => {\r\n window.location.reload();\r\n }).catch((error) => {\r\n ECP.Dialog.HideLoading();\r\n throw new Error(`Error saving to favorites ${error}`);\r\n });\r\n } else if (NewName === \"\") {\r\n ECP.Dialog.Alert(\"Name can not be empty\");\r\n }\r\n }\r\n });\r\n });\r\n};\r\n\r\nBC_SavedReport.prototype.LoadRoles = function (dialog, selected) {\r\n EWS.VerifySession(() => {\r\n const myRequest = new ECP.EC_Request(\"SavedReport_GetSharingRoles\");\r\n\r\n myRequest.Submit().then((result) => {\r\n // Task 940845: Update Report Sharing Roles to group by User Type and limit view by UserType.ViewPermission IN {UserPermissionArr}\r\n\r\n const UserTypeArr = [];\r\n const UserTypeRoles = result.roles.reduce((userTypeRoles, role) => {\r\n if (!UserTypeArr.includes(role.UserType)) {\r\n UserTypeArr.push(role.UserType);\r\n }\r\n const roles = userTypeRoles[role.UserType] || (userTypeRoles[role.UserType] = []);\r\n roles.push(role);\r\n return userTypeRoles;\r\n }, {});\r\n\r\n let html = \"
\";\r\n for (let i = 0; i < UserTypeArr.length; i++) {\r\n let selectCount = 0;\r\n let rolesHTML = \"\";\r\n const userType = UserTypeArr[i];\r\n const roles = UserTypeRoles[userType];\r\n for (let z = 0; z < roles.length; z++) {\r\n rolesHTML += \"
\"\r\n + `
`\r\n + `
`;\r\n\r\n if (selected?.indexOf(EC_Fmt.Null2ZeroInt(roles[z].RoleID)) >= 0) {\r\n rolesHTML += ``;\r\n selectCount++;\r\n } else {\r\n rolesHTML += ``;\r\n }\r\n rolesHTML += \"
\"\r\n + ``\r\n + \"
\";\r\n }\r\n html += `
`\r\n + `
`\r\n + `
`\r\n + ``\r\n + `
0 ? \"style=display:block\" : \"\"}>${rolesHTML}
`\r\n + \"
\";\r\n }\r\n html += \"
\";\r\n\r\n dialog.querySelector(\".ews-savedreport-roles-display\").innerHTML = html;\r\n const UserType = dialog.querySelector(\".usertypeall\");\r\n if (UserType) {\r\n UserType.addEventListener(\"click\", (e) => {\r\n const click = e.target;\r\n if (!click || click.classList.contains(\"ews-savedreport-roles-container\")) {\r\n return;\r\n }\r\n\r\n if (click.classList.contains(\"ews-tree-trigger\")) {\r\n if (click.classList.contains(\"ews-tree-collapsed\")) {\r\n click.parentNode.querySelector(\".ews-tree-child-node\").style.display = \"block\";\r\n click.classList.remove(\"ews-tree-collapsed\");\r\n click.classList.add(\"ews-tree-expanded\");\r\n } else {\r\n click.parentNode.querySelector(\".ews-tree-child-node\").style.display = \"\";\r\n click.classList.add(\"ews-tree-collapsed\");\r\n click.classList.remove(\"ews-tree-expanded\");\r\n }\r\n }\r\n\r\n if (!EC_Fmt.isNull(click.getAttribute(\"usertype\"))) {\r\n dialog.querySelectorAll(`.ews-tree-child-node[usertype='${click.getAttribute(\"usertype\")}'] input[type='checkbox']`).forEach((input) => {\r\n input.checked = event.target.checked;\r\n });\r\n }\r\n\r\n const childUserType = click.closest(\".ews-tree-child-node\");\r\n if (childUserType && EC_Fmt.isNull(click.getAttribute(\"usertype\"))) {\r\n let CheckParentAll = true;\r\n const childusertypeinputarr = childUserType.querySelectorAll(\"input[type='checkbox']\");\r\n for (let i = 0; i < childusertypeinputarr.length; i++) {\r\n if (!childusertypeinputarr[i].checked) {\r\n CheckParentAll = false;\r\n break;\r\n }\r\n }\r\n const parentNode = childUserType.closest(\".ews-tree-node\").querySelector(\".ews-tree-parent-node input[type='checkbox']\");\r\n if (CheckParentAll) {\r\n parentNode.checked = true;\r\n } else {\r\n parentNode.checked = false;\r\n }\r\n }\r\n });\r\n }\r\n });\r\n });\r\n};\r\n\r\nBC_SavedReport.prototype.Run = function (id, system) {\r\n ECP.Dialog.ShowLoading();\r\n\r\n const myRequest = new ECP.EC_Request(\"SavedReport_GetReportUrl\");\r\n\r\n myRequest.AddRequestVariable(\"ReportID\", id);\r\n\r\n if (system) {\r\n myRequest.AddRequestVariable(\"System\", \"True\");\r\n }\r\n\r\n myRequest.Submit().then((results) => {\r\n if (results.status === \"success\") {\r\n if (results.dashboard > 0) {\r\n window.location.href = `Home?DashboardID=${results.dashboard}&ParseFromReportURL=True&ReportID=${results.id}&ReportName=${encodeURIComponent(results.name)}`;\r\n } else {\r\n window.location.href = `${results.source}?ParseFromReportURL=True&ReportID=${results.id}&ReportName=${encodeURIComponent(results.name)}`;\r\n }\r\n } else {\r\n ECP.Dialog.HideLoading();\r\n ECP.Dialog.Alert(results.message);\r\n }\r\n }).catch((error) => {\r\n ECP.Dialog.HideLoading();\r\n throw error;\r\n });\r\n};\r\n\r\nBC_SavedReport.prototype.Save = function (url, id, permission, callback, urlProcessCallback) {\r\n const me = this;\r\n\r\n if (id && !EC_Fmt.isNull(parseInt(id))) {\r\n EWS.VerifySession(() => {\r\n const myRequest = new ECP.EC_Request(\"SavedReport_GetReport\");\r\n\r\n myRequest.AddRequestVariable(\"ReportID\", id);\r\n\r\n myRequest.Submit().then((result) => {\r\n if (result.error) {\r\n EWS.HideLoading();\r\n ECP.Dialog.Alert(result.error);\r\n return;\r\n }\r\n if (result.draft) {\r\n const args = {\r\n id: parseInt(id),\r\n url,\r\n document: result.document,\r\n owner: result.username,\r\n ownerauthenticationid: result.ownerauthenticationid,\r\n parentreportid: result.parentreportid,\r\n format: result.format,\r\n callback,\r\n urlProcessCallback,\r\n name: result.name\r\n };\r\n\r\n me.EWS.HideLoading();\r\n me.Show_BC_SavedReport_SaveReport_Dialog(args);\r\n } else {\r\n const roles = [];\r\n const name = result.name;\r\n\r\n for (let i = 0; i < result.roles.length; i++) {\r\n roles.push(result.roles[i].id);\r\n }\r\n\r\n const format = result.format;\r\n\r\n if (urlProcessCallback) {\r\n url = urlProcessCallback(url, format);\r\n }\r\n\r\n const uri = url.split(\"?\");\r\n const source = uri[0].toUpperCase() === \"API\" ? \"Home\" : uri[0];\r\n\r\n if (uri.length > 1) {\r\n uri.shift();\r\n url = uri.join(\"?\");\r\n } else {\r\n url = \"\";\r\n }\r\n\r\n const mySubRequest = new ECP.EC_Request(\"SavedReport_SaveReport\");\r\n mySubRequest.Verb = ECP.EC_Verb.Post;\r\n\r\n mySubRequest.AddRequestVariable(\"Request\", \"SaveReport\", ECP.EC_Verb.Post);\r\n mySubRequest.AddRequestVariable(\"ReportID\", id, ECP.EC_Verb.Post);\r\n\r\n if (result.document && result.document > 0) {\r\n mySubRequest.AddRequestVariable(\"DocumentID\", result.document, ECP.EC_Verb.Post);\r\n }\r\n\r\n mySubRequest.AddRequestVariable(\"Url\", url, ECP.EC_Verb.Post);\r\n mySubRequest.AddRequestVariable(\"SourcePage\", source, ECP.EC_Verb.Post);\r\n mySubRequest.AddRequestVariable(\"PagePermission\", permission, ECP.EC_Verb.Post);\r\n mySubRequest.AddRequestVariable(\"Report\", name, ECP.EC_Verb.Post);\r\n mySubRequest.AddRequestVariable(\"Category\", result.category, ECP.EC_Verb.Post);\r\n mySubRequest.AddRequestVariable(\"OwnerAuthenticationID\", result.ownerauthenticationid, ECP.EC_Verb.Post);\r\n mySubRequest.AddRequestVariable(\"Favorite\", result.favorite, ECP.EC_Verb.Post);\r\n\r\n if (result.link && result.link > 0) {\r\n mySubRequest.AddRequestVariable(\"LinkFavoritesID\", result.link, ECP.EC_Verb.Post);\r\n }\r\n\r\n mySubRequest.AddRequestVariable(\"RoleID\", roles.join(), ECP.EC_Verb.Post);\r\n mySubRequest.AddRequestVariable(\"Draft\", \"0\", ECP.EC_Verb.Post);\r\n mySubRequest.AddRequestVariable(\"Table\", \"Reports\", ECP.EC_Verb.Post);\r\n mySubRequest.AddRequestVariable(\"Format\", format, ECP.EC_Verb.Post);\r\n\r\n mySubRequest.Submit().then(() => {\r\n if (callback && callback !== undefined) {\r\n callback(id);\r\n } else {\r\n // Task 641114: ReportEdit page click SaveButton Always showing loading.\r\n EWS.HideLoading();\r\n ECP.Dialog.Alert(\"Report saved successfully.\");\r\n }\r\n });\r\n }\r\n });\r\n });\r\n } else {\r\n this.SaveAs(url, null, permission, callback, urlProcessCallback);\r\n }\r\n};\r\n\r\nBC_SavedReport.prototype.SaveAs = function (url, id, permission, callback, urlProcessCallback) {\r\n const me = this;\r\n\r\n if (url && url !== \"\") {\r\n // Task 1043998: Can't Save report shared through quicklink\r\n const DashboardID = EC_Fmt.CDec(EC_Fmt.GetPageParameter(\"DashboardID\"));\r\n if (id && !EC_Fmt.isNull(parseInt(id)) && (DashboardID === ECP.CommonDashboards.FusionView || DashboardID === ECP.CommonDashboards.FusionEdit)) {\r\n EWS.VerifySession(() => {\r\n // Task 726325: Save Fusion report is very very slow, and does not give the user a 'saving' message of any kind\r\n const myRequest = new ECP.EC_Request(\"SavedReport_GetReport\");\r\n myRequest.AddRequestVariable(\"ReportID\", id);\r\n myRequest.Submit().then((result) => {\r\n if (result.error) {\r\n EWS.HideLoading();\r\n ECP.Dialog.Alert(result.error);\r\n return;\r\n }\r\n const args = {\r\n url,\r\n permission,\r\n name: result.name,\r\n format: result.format,\r\n category: result.category,\r\n document: result.document,\r\n ownerauthenticationid: result.ownerauthenticationid,\r\n owner: result.username,\r\n favorite: result.favorite,\r\n link: result.link,\r\n roles: result.roles,\r\n callback,\r\n original: id,\r\n urlProcessCallback\r\n };\r\n\r\n ECP.Dialog.HideLoading();\r\n me.Show_BC_SavedReport_SaveReport_Dialog(args);\r\n }).catch((error) => {\r\n ECP.Dialog.HideLoading();\r\n throw error;\r\n });\r\n });\r\n } else {\r\n EWS.VerifySession(() => {\r\n const myRequest = new ECP.EC_Request(\"SavedReport_GetCurrentUser\");\r\n\r\n myRequest.Submit().then((result) => {\r\n const args = {\r\n url,\r\n ownerauthenticationid: result.ownerauthenticationid,\r\n owner: result.username,\r\n format: result.format,\r\n callback,\r\n urlProcessCallback\r\n };\r\n\r\n ECP.Dialog.HideLoading();\r\n me.Show_BC_SavedReport_SaveReport_Dialog(args);\r\n }).catch((error) => {\r\n ECP.Dialog.HideLoading();\r\n throw error;\r\n });\r\n });\r\n }\r\n } else {\r\n ECP.Dialog.HideLoading();\r\n ECP.Dialog.Alert(EC_Fmt.Trn(\"Invalid Report URL\"));\r\n }\r\n};\r\n\r\nBC_SavedReport.prototype.SaveDraft = function (url, id, callback) {\r\n const me = this;\r\n\r\n if (url && url !== \"\") {\r\n if (id && !EC_Fmt.isNull(parseInt(id))) {\r\n EWS.VerifySession(() => {\r\n const myRequest = new ECP.EC_Request(\"SavedReport_GetReport\");\r\n myRequest.AddRequestVariable(\"ReportID\", id);\r\n\r\n myRequest.Submit().then((result) => {\r\n if (result.error) {\r\n EWS.HideLoading();\r\n ECP.Dialog.Alert(result.error);\r\n return;\r\n }\r\n if (result.draft) {\r\n const args = {\r\n id: parseInt(id),\r\n url: \"\",\r\n document: result.document,\r\n owner: result.owner,\r\n ownerauthenticationid: result.ownerauthenticationid,\r\n callback,\r\n method: \"SaveDraft\"\r\n };\r\n\r\n me.Show_BC_SavedReport_SaveReport_Dialog(args);\r\n }\r\n });\r\n });\r\n }\r\n } else {\r\n ECP.Dialog.Alert(EC_Fmt.Trn(\"Invalid Report URL\"));\r\n }\r\n};\r\n\r\nBC_SavedReport.prototype.Select = function (callback, selectCommand, title, report, owner, fullName, dashboard, ownerauthenticationid, multipleSelect, FilterPivot, ReportType, optionsHtml) {\r\n if (multipleSelect) {\r\n this.SelectedReportIDArr = report ? report.split(\",\") : [];\r\n }\r\n\r\n this.Show_BC_SavedReport_ReportList_Dialog({\r\n callback,\r\n selectCommand,\r\n title,\r\n report,\r\n owner,\r\n fullName,\r\n ownerauthenticationid,\r\n dashboard,\r\n multipleSelect,\r\n FilterPivot,\r\n ReportType,\r\n optionsHtml\r\n });\r\n};\r\n\r\nBC_SavedReport.prototype.SelectReport = function (callback, selectCommand, parentReport, fusion, reportType) {\r\n this.Show_BC_SavedReport_FusionAddReport_Dialog({\r\n callback,\r\n selectCommand,\r\n parentReport,\r\n fusion,\r\n reportType\r\n });\r\n};\r\n\r\nEWS.Ready((EWS) => {\r\n EWS.SavedReport = new BC_SavedReport(EWS);\r\n});\r\n\r\nfunction Report_Save(url, id, permission, callback, urlProcessCallback) {\r\n if (EWS?.SavedReport) {\r\n EWS.SavedReport.Save(url, id, permission, callback, urlProcessCallback);\r\n }\r\n}\r\n\r\nfunction Report_SaveAs(url, id, permission, callback, urlProcessCallback) {\r\n if (EWS?.SavedReport) {\r\n if (IsImpersonateUser) {\r\n // Task 667450: ReportView dashboard View through QuickLink, button displays prompt information questions.\r\n ECP.Dialog.ShowDialog(\"Confirm\", `
You are impersonating a user.Do you want to leave and go back to your login?
`, {\r\n barPosition: \"top\",\r\n cancelButtonTitle: \"Cancel\",\r\n confirmButtonTitle: \"Confirm\",\r\n confirmButtonAction: () => {\r\n // Task 707408: click Edit and SaveReport is pop cinfirm message(The previous Url was really ReportView, now it has always been Quick?QuickKey=(Task 682571))\r\n const OldUrl = url;\r\n const NewUrl = OldUrl.replace(/QuickKey=(.+?)&/, \"\");\r\n window.location.href = `Home?DashboardID=${ECP.CommonDashboards.LogOn}&DestURL=${encodeURIComponent(NewUrl)}`;\r\n }\r\n });\r\n } else {\r\n EWS.SavedReport.SaveAs(url, id, permission, callback, urlProcessCallback);\r\n }\r\n }\r\n}\r\n\r\nfunction Report_SaveDraft(url, id, callback) {\r\n if (EWS?.SavedReport) {\r\n EWS.SavedReport.SaveDraft(url, id, callback);\r\n }\r\n}\r\n\r\nBC_SavedReport.prototype.Show_BC_SavedReport_SaveReport_Dialog = function (args) {\r\n const me = this;\r\n\r\n if (!args) {\r\n args = {};\r\n }\r\n\r\n const saveReportArgs = args;\r\n\r\n EWS.VerifySession(() => {\r\n const myRequest = new ECP.EC_Request(\"SavedReport_SaveDialog\");\r\n myRequest.AddRequestVariable(\"Mobile\", EC_Fmt.isMobile);\r\n // Task 690648: Fusion Report Format: Fusion report is running in HTML format when the Format is set to CSV.\r\n myRequest.AddRequestVariable(\"DashboardID\", EC_Fmt.GetPageParameter(\"DashboardID\"));\r\n // Task 748410: Fusion View: Click Save Report As refreshes report, but no Save As Dialogue pops up\r\n const LoadingDialogTimeout = setTimeout(() => {\r\n ECP.Dialog.ShowLoading(\"Loading Dialog...\");\r\n }, 500);\r\n myRequest.Submit().then((result) => {\r\n const Dialog = ECP.Dialog.ShowDialog(result.title, result.content, {\r\n barPosition: \"top\",\r\n width: 750,\r\n height: 550,\r\n cancelButtonTitle: result.cancel,\r\n confirmButtonTitle: result.save,\r\n confirmButtonAction(dialog) {\r\n EWS.ShowLoading();\r\n\r\n const report = dialog.querySelector(\"#SavedReportName\").value;\r\n\r\n if (report !== \"\") {\r\n let format = \"\";\r\n let SaveURL = dialog.querySelector(\"#SavedReportUrl\").value;\r\n\r\n const UrlArr = EC_Fmt.GetURLParameters(SaveURL);\r\n let DashboardID = \"\";\r\n if (UrlArr.DashboardID) {\r\n DashboardID = UrlArr.DashboardID;\r\n }\r\n const DashboardFormat = (EC_Fmt.GetPageParameter(\"DashboardID\") === ECP.CommonDashboards.FusionView.toString()) || (EC_Fmt.GetPageParameter(\"DashboardID\") === ECP.CommonDashboards.FusionEdit.toString());\r\n if (Dialog.querySelector(\"#SavedReportFormat\") || !DashboardFormat) {\r\n if (!EC_Fmt.isMobile) {\r\n format = dialog.querySelector(\"#SavedReportFormat\").value;\r\n } else {\r\n format = dialog.querySelector(\"input[name='SavedReportFormat']:checked\").value;\r\n }\r\n }\r\n\r\n if (saveReportArgs.urlProcessCallback) {\r\n SaveURL = saveReportArgs.urlProcessCallback(SaveURL, format);\r\n }\r\n\r\n const uri = SaveURL.split(\"?\");\r\n // Task 920004: Saved report 3615248 - running the report, some are getting specific errors, but running the report now gives a long list of errors.\r\n const source = uri[0].toUpperCase() === \"API\" ? \"Home\" : uri[0];\r\n let url = \"\";\r\n\r\n if (uri.length > 1) {\r\n uri.shift();\r\n url = uri.join(\"?\");\r\n }\r\n // Task 645424: Change FusionEdit.aspx to Dashboard\r\n // Task 676375: In SaveReportAS, add the parameter DashboardID\r\n\r\n if (source === \"Home\" && !EC_Fmt.isInteger(DashboardID)) {\r\n ECP.Dialog.Alert(\"Saved DashboardID Error\");\r\n ECP.Dialog.HideLoading();\r\n return;\r\n }\r\n\r\n const _myRequest = new ECP.EC_Request(\"SavedReport_SaveReport\");\r\n _myRequest.Verb = ECP.EC_Verb.Post;\r\n\r\n _myRequest.AddRequestVariable(\"ReportID\", dialog.querySelector(\"#SavedReportReportID\").value, ECP.EC_Verb.Post);\r\n _myRequest.AddRequestVariable(\"DocumentID\", dialog.querySelector(\"#SavedReportDocumentID\").value, ECP.EC_Verb.Post);\r\n _myRequest.AddRequestVariable(\"DashboardID\", DashboardID, ECP.EC_Verb.Post);\r\n _myRequest.AddRequestVariable(\"SourcePage\", source, ECP.EC_Verb.Post);\r\n _myRequest.AddRequestVariable(\"Url\", url, ECP.EC_Verb.Post);\r\n _myRequest.AddRequestVariable(\"PagePermission\", dialog.querySelector(\"#SavedReportPermission\").value, ECP.EC_Verb.Post);\r\n _myRequest.AddRequestVariable(\"Report\", report, ECP.EC_Verb.Post);\r\n _myRequest.AddRequestVariable(\"Category\", dialog.querySelector(\"#SavedReportCategoryHidden\").value, ECP.EC_Verb.Post);\r\n _myRequest.AddRequestVariable(\"OwnerAuthenticationID\", dialog.querySelector(\"#OwnerAuthenticationIDHidden\").value, ECP.EC_Verb.Post);\r\n _myRequest.AddRequestVariable(\"OriginalReportID\", dialog.querySelector(\"#SavedReportOriginalReportID\").value, ECP.EC_Verb.Post);\r\n _myRequest.AddRequestVariable(\"Favorite\", \"0\", ECP.EC_Verb.Post);\r\n _myRequest.AddRequestVariable(\"LinkFavoritesID\", dialog.querySelector(\"#SavedReportLinkID\").value, ECP.EC_Verb.Post);\r\n _myRequest.AddRequestVariable(\"Draft\", \"0\", ECP.EC_Verb.Post);\r\n _myRequest.AddRequestVariable(\"Table\", \"Reports\", ECP.EC_Verb.Post);\r\n _myRequest.AddRequestVariable(\"Format\", format, ECP.EC_Verb.Post);\r\n\r\n const ReportTypeEle = dialog.querySelector(\"#SavedReportType\");\r\n if (ReportTypeEle) {\r\n _myRequest.AddRequestVariable(\"ReportType\", (ReportTypeEle.checked ? EWS.SavedReport.ReportType.Cube : EWS.SavedReport.ReportType.Default), ECP.EC_Verb.Post);\r\n _myRequest.AddRequestVariable(\"ApplicationID\", dialog.querySelector(\"#ReoprtApplicationID\").value, ECP.EC_Verb.Post);\r\n }\r\n\r\n const selectedRoles = [];\r\n\r\n const checkedRoles = Dialog.querySelectorAll(\".ews-savedreport-roles-display input[type='checkbox']:checked\");\r\n for (let i = 0, len = checkedRoles.length; i < len; i++) {\r\n selectedRoles.push(checkedRoles[i].value);\r\n }\r\n\r\n _myRequest.AddRequestVariable(\"RoleID\", selectedRoles.join(), ECP.EC_Verb.Post);\r\n\r\n ECP.Dialog.CloseDialog(dialog);\r\n\r\n _myRequest.Submit().then((myResult) => {\r\n if (format === \"Excel\" || format === \"PDF\" || format === \"XML\" || format === \"JSON\") {\r\n EWS.HideLoading();\r\n }\r\n\r\n if (saveReportArgs.callback && saveReportArgs.callback !== undefined) {\r\n saveReportArgs.callback(myResult.id, report);\r\n } else if (saveReportArgs.parentreportid > 0) {\r\n window.location.href = `Home?DashboardID=${ECP.CommonDashboards.FusionEdit}&ReportID=${saveReportArgs.parentreportid}&ChildReportID=${saveReportArgs.id}`;\r\n } else if (saveReportArgs.SaveMethod && saveReportArgs.SaveMethod === \"SaveDraft\") {\r\n window.location.reload();\r\n } else {\r\n // Task 631270: Export of a Compound report uses the name of one of the base reports, not the name of the Compound report\r\n window.location = `${source}?ParseFromReportURL=True&ReportID=${myResult.id}&ReportName=${encodeURIComponent(report)}`;\r\n // Task 644859: Get error with Invalid report action (). when save a table report\r\n }\r\n }).catch((error) => {\r\n EWS.HideLoading();\r\n throw error;\r\n });\r\n } else {\r\n EWS.HideLoading();\r\n ECP.Dialog.Alert(EC_Fmt.Trn(\"You must enter a report name.\"));\r\n }\r\n }\r\n });\r\n\r\n // EC-3571: Prompt users when they have exceeded 50 character limit for Report Category names\r\n const observer = new MutationObserver((mutations) => {\r\n mutations.forEach(({ target, type, attributeName }) => {\r\n if (type === \"attributes\" && attributeName === \"value\" && target.value.length > 50) {\r\n ECP.HTML.Snackbar(EC_Fmt.Trn(\"Report Category Name entered exceeds the 50 character limit. The name will be truncated to the first 50 characters.\"), \"Warning\");\r\n const truncatedValue = target.value.slice(0, 50);\r\n Dialog.querySelector(\"#SavedReportCategoryInput\").value = truncatedValue;\r\n target.value = truncatedValue;\r\n }\r\n });\r\n });\r\n observer.observe(Dialog.querySelector(\"#SavedReportCategoryHidden\"), { attributes: true });\r\n\r\n if (EC_Fmt.isMobile) {\r\n Dialog.firstChild.classList.add(\"ecp-dialog-mobile\");\r\n }\r\n\r\n const ajaxInputs = Dialog.querySelectorAll(\"input[KeyValue][DisplayVal][LimitToList]\");\r\n for (let i = 0, len = ajaxInputs.length; i < len; i++) {\r\n const input = ajaxInputs[i];\r\n const FieldID = input.closest(\"section\").getAttribute(\"FieldID\");\r\n\r\n EWS.AjaxInputs[FieldID] = new ECP.HTML.AjaxInput(input);\r\n\r\n input.closest(\"table\").style.width = \"\";\r\n }\r\n\r\n const rolesSelectAllCheckbox = Dialog.querySelector(\"#ews-savedreport-roles-select-all\");\r\n if (rolesSelectAllCheckbox) {\r\n rolesSelectAllCheckbox.addEventListener(\"click\", (event) => {\r\n Dialog.querySelectorAll(\".ews-savedreport-roles-display input[type='checkbox']\").forEach((input) => {\r\n input.checked = event.target.checked;\r\n });\r\n });\r\n }\r\n\r\n Dialog.querySelector(\"#SavedReportReportID\").value = saveReportArgs.id || \"\";\r\n\r\n if (saveReportArgs.document && saveReportArgs.document > 0) {\r\n Dialog.querySelector(\"#SavedReportDocumentID\").value = saveReportArgs.document;\r\n } else {\r\n Dialog.querySelector(\"#SavedReportDocumentID\").value = \"\";\r\n }\r\n\r\n Dialog.querySelector(\"#SavedReportReportID\").value = saveReportArgs.id || \"\";\r\n Dialog.querySelector(\"#SavedReportUrl\").value = saveReportArgs.url || \"\";\r\n Dialog.querySelector(\"#SavedReportPermission\").value = saveReportArgs.permission || \"\";\r\n Dialog.querySelector(\"#SavedReportName\").value = saveReportArgs.name || \"\";\r\n Dialog.querySelector(\"#SavedReportCategoryHidden\").value = saveReportArgs.category || \"\";\r\n Dialog.querySelector(\"#SavedReportCategoryInput\").value = saveReportArgs.category || \"\";\r\n Dialog.querySelector(\"#SavedReportOriginalReportID\").value = saveReportArgs.original || \"\";\r\n\r\n // Task 603764: User set Report Format to Null on Inventory Status Report\r\n if (saveReportArgs.format && saveReportArgs.format.toLowerCase() === \"\") {\r\n saveReportArgs.format = \"HTML\";\r\n }\r\n const DashboardID = (EC_Fmt.GetPageParameter(\"DashboardID\") === ECP.CommonDashboards.FusionView.toString()) || (EC_Fmt.GetPageParameter(\"DashboardID\") === ECP.CommonDashboards.FusionEdit.toString());\r\n if (Dialog.querySelector(\"#SavedReportFormat\") || !DashboardID) {\r\n if (!EC_Fmt.isMobile) {\r\n Dialog.querySelector(\"#SavedReportFormat\").value = saveReportArgs.format || \"\";\r\n } else {\r\n Dialog.querySelector(\"input[name='SavedReportFormat']:checked\").checked = false;\r\n Dialog.querySelector(`input[name='SavedReportFormat'][value='${saveReportArgs.format || \"\"}']`).checked = true;\r\n }\r\n }\r\n\r\n if (saveReportArgs.link && saveReportArgs.link > 0) {\r\n Dialog.querySelector(\"#SavedReportLinkID\").value = saveReportArgs.link;\r\n } else {\r\n Dialog.querySelector(\"#SavedReportLinkID\").value = \"\";\r\n }\r\n\r\n const checkedRoles = Dialog.querySelectorAll(\".ews-savedreport-roles-display input[type='checkbox']:checked\");\r\n for (let i = 0, len = checkedRoles.length; i < len; i++) {\r\n checkedRoles[i].checked = false;\r\n }\r\n\r\n const SavedReportType = Dialog.querySelector(\"#SavedReportType\");\r\n if (args.ReportType === EWS.SavedReport.ReportType.Cube.toString() && SavedReportType) {\r\n SavedReportType.checked = true;\r\n }\r\n if (SavedReportType) {\r\n const ApplicationInput = Dialog.querySelector(\"#ApplicationInput\");\r\n ApplicationInput.append(EC_Fmt.HtmlStrToElement(``));\r\n }\r\n\r\n clearTimeout(LoadingDialogTimeout);\r\n ECP.Dialog.HideLoading();\r\n\r\n me.LoadRoles(Dialog);\r\n }).catch((e) => {\r\n clearTimeout(LoadingDialogTimeout);\r\n EWS.HideLoading();\r\n throw e;\r\n });\r\n });\r\n};\r\n\r\nBC_SavedReport.prototype.Show_BC_SavedReport_EditReport_Dialog = function (args) {\r\n const me = this;\r\n\r\n EWS.VerifySession(() => {\r\n const myRequest = new ECP.EC_Request(\"SavedReport_EditDialog\");\r\n myRequest.AddRequestVariable(\"Mobile\", EC_Fmt.isMobile);\r\n // Task 690648: Fusion Report Format: Fusion report is running in HTML format when the Format is set to CSV.\r\n myRequest.AddRequestVariable(\"DashboardID\", args.DashboardID);\r\n\r\n myRequest.Submit().then((result) => {\r\n const Dialog = ECP.Dialog.ShowDialog(result.title, result.content, {\r\n barPosition: \"top\",\r\n width: 750,\r\n height: 550,\r\n cancelButtonTitle: result.cancel,\r\n confirmButtonTitle: result.save,\r\n confirmButtonAction(dialog) {\r\n EWS.ShowLoading();\r\n\r\n if (dialog.querySelector(\"#SavedReportName\").value !== \"\") {\r\n const data = new FormData();\r\n\r\n if (data) {\r\n let format = \"\";\r\n // Task 927264: When saving a comparison report on a mobile device on safari, the default format = HTML is not saving as expected\r\n const DashboardID = (args.DashboardID === ECP.CommonDashboards.FusionView.toString()) || (args.DashboardID === ECP.CommonDashboards.FusionEdit.toString());\r\n if (Dialog.querySelector(\"#SavedReportFormat\") || !DashboardID) {\r\n if (!EC_Fmt.isMobile) {\r\n format = dialog.querySelector(\"#SavedReportFormat\").value;\r\n } else {\r\n format = dialog.querySelector(\"input[name='SavedReportFormat']:checked\").value;\r\n }\r\n }\r\n\r\n const mySubRequest = new ECP.EC_Request(\"SavedReport_SaveReport\", ECP.EC_Verb.Post);\r\n\r\n mySubRequest.AddRequestVariable(\"ReportID\", dialog.querySelector(\"#SavedReportReportID\").value, ECP.EC_Verb.Post);\r\n // Task 678816: Comparison Sales Report: Report Record Dashboard ID is being updated when saved or edited\r\n mySubRequest.AddRequestVariable(\"Url\", \"\", ECP.EC_Verb.Post);\r\n mySubRequest.AddRequestVariable(\"DocumentID\", dialog.querySelector(\"#SavedReportDocumentID\").value, ECP.EC_Verb.Post);\r\n mySubRequest.AddRequestVariable(\"Report\", dialog.querySelector(\"#SavedReportName\").value, ECP.EC_Verb.Post);\r\n mySubRequest.AddRequestVariable(\"Category\", dialog.querySelector(\"#SavedReportCategoryHidden\").value, ECP.EC_Verb.Post);\r\n mySubRequest.AddRequestVariable(\"OwnerAuthenticationID\", dialog.querySelector(\"#OwnerAuthenticationIDHidden\").value, ECP.EC_Verb.Post);\r\n mySubRequest.AddRequestVariable(\"Favorite\", \"0\", ECP.EC_Verb.Post);\r\n mySubRequest.AddRequestVariable(\"LinkFavoritesID\", dialog.querySelector(\"#SavedReportLinkID\").value, ECP.EC_Verb.Post);\r\n mySubRequest.AddRequestVariable(\"Draft\", \"0\", ECP.EC_Verb.Post);\r\n mySubRequest.AddRequestVariable(\"Table\", \"Reports\", ECP.EC_Verb.Post);\r\n mySubRequest.AddRequestVariable(\"Format\", format, ECP.EC_Verb.Post);\r\n if (dialog.querySelector(\"#SavedReportType\")) {\r\n mySubRequest.AddRequestVariable(\"ReportType\", (dialog.querySelector(\"#SavedReportType\").checked ? EWS.SavedReport.ReportType.Cube : EWS.SavedReport.ReportType.Default), ECP.EC_Verb.Post);\r\n mySubRequest.AddRequestVariable(\"ApplicationID\", dialog.querySelector(\"#ReoprtApplicationID\").value, ECP.EC_Verb.Post);\r\n }\r\n\r\n const selectedRoles = [];\r\n\r\n dialog.querySelectorAll(\".ews-savedreport-roles-display input[type='checkbox']:checked\").forEach((input) => {\r\n selectedRoles.push(input.value);\r\n });\r\n\r\n mySubRequest.AddRequestVariable(\"RoleID\", selectedRoles.join(), ECP.EC_Verb.Post);\r\n\r\n ECP.Dialog.CloseDialog(dialog);\r\n\r\n mySubRequest.Submit().then(() => {\r\n if (format === \"Excel\" || format === \"PDF\" || format === \"XML\" || format === \"JSON\") {\r\n EWS.HideLoading();\r\n }\r\n\r\n window.location.reload();\r\n }).catch((error) => {\r\n EWS.HideLoading();\r\n throw error;\r\n });\r\n }\r\n } else {\r\n EWS.HideLoading();\r\n ECP.Dialog.Alert(EC_Fmt.Trn(\"You must enter a report name.\"));\r\n }\r\n }\r\n });\r\n\r\n if (EC_Fmt.isMobile) {\r\n Dialog.firstChild.classList.add(\"ecp-dialog-mobile\");\r\n }\r\n\r\n Dialog.querySelectorAll(\"input[KeyValue][DisplayVal][LimitToList]\").forEach((input) => {\r\n const FieldID = input.closest(\"section\").getAttribute(\"FieldID\");\r\n\r\n EWS.AjaxInputs[FieldID] = new ECP.HTML.AjaxInput(input);\r\n\r\n input.closest(\"table\").style.width = \"\";\r\n });\r\n\r\n if (Dialog.querySelector(\"#ews-savedreport-roles-select-all\")) {\r\n Dialog.querySelector(\"#ews-savedreport-roles-select-all\").addEventListener(\"click\", (event) => {\r\n Dialog.querySelectorAll(\".ews-savedreport-roles-display input[type='checkbox']\").forEach((input) => {\r\n input.checked = event.target.checked;\r\n });\r\n });\r\n }\r\n\r\n if (!args) {\r\n args = {};\r\n }\r\n\r\n Dialog.querySelector(\"#SavedReportReportID\").value = args.id || \"\";\r\n\r\n if (args.document && args.document > 0) {\r\n Dialog.querySelector(\"#SavedReportDocumentID\").value = args.document;\r\n } else {\r\n Dialog.querySelector(\"#SavedReportDocumentID\").value = \"\";\r\n }\r\n\r\n Dialog.querySelector(\"#SavedReportUrl\").value = \"\";\r\n Dialog.querySelector(\"#SavedReportPermission\").value = \"\";\r\n Dialog.querySelector(\"#SavedReportName\").value = args.name || \"\";\r\n Dialog.querySelector(\"#SavedReportCategoryHidden\").value = args.category || \"\";\r\n Dialog.querySelector(\"#SavedReportCategoryInput\").value = args.category || \"\";\r\n const DashboardID = (args.DashboardID === ECP.CommonDashboards.FusionView.toString()) || (args.DashboardID === ECP.CommonDashboards.FusionEdit.toString());\r\n if (Dialog.querySelector(\"#SavedReportFormat\") || !DashboardID) {\r\n if (!EC_Fmt.isMobile) {\r\n Dialog.querySelector(\"#SavedReportFormat\").value = args.format || \"\";\r\n } else {\r\n Dialog.querySelector(\"input[name='SavedReportFormat']:checked\").checked = false;\r\n Dialog.querySelector(`input[name='SavedReportFormat'][value='${args.format || \"\"}']`).checked = true;\r\n }\r\n }\r\n const SavedReportType = Dialog.querySelector(\"#SavedReportType\");\r\n if (args.ReportType === EWS.SavedReport.ReportType.Cube.toString() && SavedReportType) {\r\n SavedReportType.checked = true;\r\n }\r\n if (SavedReportType) {\r\n const ApplicationInput = Dialog.querySelector(\"#ApplicationInput\");\r\n ApplicationInput.append(EC_Fmt.HtmlStrToElement(``));\r\n }\r\n if (args.link && args.link > 0) {\r\n Dialog.querySelector(\"#SavedReportLinkID\").value = args.link;\r\n } else {\r\n Dialog.querySelector(\"#SavedReportLinkID\").value = \"\";\r\n }\r\n\r\n Dialog.querySelectorAll(\".ews-savedreport-roles-display input[type='checkbox']:checked\").forEach((input) => {\r\n input.checked = false;\r\n });\r\n\r\n if (args.roles) {\r\n const roles = [];\r\n\r\n for (let i = 0; i < args.roles.length; i++) {\r\n roles.push(args.roles[i].id);\r\n }\r\n\r\n me.LoadRoles(Dialog, roles);\r\n } else {\r\n me.LoadRoles(Dialog);\r\n }\r\n }).catch((e) => {\r\n EWS.HideLoading();\r\n throw e;\r\n });\r\n });\r\n};\r\n\r\nBC_SavedReport.prototype.Show_BC_SavedReport_FusionAddReport_Dialog = function (args) {\r\n const me = this;\r\n\r\n EWS.VerifySession(async () => {\r\n const selectArgs = args;\r\n const ReportLayers = await CheckFusionReportLayers(args.parentReport);\r\n if (!ReportLayers) {\r\n return;\r\n }\r\n const myRequest = new ECP.EC_Request(\"SavedReport_ReportListDialog\");\r\n if (selectArgs.reportType) {\r\n myRequest.AddRequestVariable(\"ReportType\", selectArgs.reportType);\r\n }\r\n try {\r\n const result = await myRequest.Submit();\r\n const DialogCancel = EC_Fmt.Trn(\"Cancel\");\r\n const DialogSelect = EC_Fmt.Trn(\"Select\");\r\n let DialogTitle = EC_Fmt.Trn(\"Select Report\");\r\n if (selectArgs.reportType === EWS.SavedReport.ReportType.Cube) {\r\n DialogTitle = EC_Fmt.Trn(\"Add Fusion Cube\");\r\n }\r\n\r\n me.UserName = result.username;\r\n me.FullName = result.fullname;\r\n me.OwnerAuthenticationID = result.ownerauthenticationid;\r\n const Dialog = ECP.Dialog.ShowDialog(DialogTitle, result.content, {\r\n barPosition: \"top\",\r\n width: 750,\r\n height: 730,\r\n cancelButtonTitle: DialogCancel,\r\n confirmButtonTitle: DialogSelect,\r\n async confirmButtonAction(dialog) {\r\n EWS.ShowLoading();\r\n requestAnimationFrame(() => {\r\n const loadingMask = document.getElementById(\"ews-loading-mask\");\r\n if (loadingMask) {\r\n loadingMask.style.zIndex = parseInt(dialog.style.zIndex) + 30;\r\n }\r\n });\r\n\r\n const radio = dialog.querySelector(\"input[name='saved-report']:checked\");\r\n\r\n let report = radio.value;\r\n // Task 662223: Prevent users from adding more than 3 layers of reports to a fusion report\r\n const CheckSaveReportLayers = await CheckFusionReportLayers(report, true);\r\n if (!CheckSaveReportLayers) {\r\n return;\r\n }\r\n if (CheckSaveReportLayers + ReportLayers > 3) {\r\n ECP.Dialog.Alert(\"No more than 3 layers allowed in a Fusion Report\");\r\n EWS.HideLoading();\r\n return;\r\n }\r\n\r\n const title = dialog.querySelector(\"#ews-report-title\").value.replace(/(^\\s*)|(\\s*$)/g, \"\");\r\n\r\n if (selectArgs.dashboard && title === \"\") {\r\n ECP.Dialog.Alert(EC_Fmt.Trn(\"You must enter a title.\"));\r\n return;\r\n }\r\n\r\n if (selectArgs.report && !EC_Fmt.isNull(parseInt(selectArgs.report)) && !report) {\r\n report = selectArgs.report;\r\n }\r\n\r\n const source = radio.getAttribute(\"source\");\r\n const owner = radio.getAttribute(\"owner\");\r\n let fullName = radio.getAttribute(\"fullname\");\r\n\r\n if (report && !EC_Fmt.isNull(parseInt(report))) {\r\n if (owner.length > 0 && owner.substr(owner.length - 1) === \"$\") {\r\n fullName = owner;\r\n }\r\n\r\n const _myRequest = new ECP.EC_Request(\"FluxEdit_CloneReport\");\r\n _myRequest.AddRequestVariable(\"ReportID\", report, ECP.EC_Verb.Post);\r\n _myRequest.AddRequestVariable(\"ParentReportID\", selectArgs.parentReport, ECP.EC_Verb.Post);\r\n _myRequest.AddRequestVariable(\"Alias\", title, ECP.EC_Verb.Post);\r\n\r\n _myRequest.Submit().then((myResult) => {\r\n if (selectArgs.callback && selectArgs.callback !== undefined) {\r\n ECP.Dialog.CloseDialog(dialog);\r\n\r\n EWS.HideLoading();\r\n\r\n selectArgs.callback(me, myResult.report, title, source, owner, fullName);\r\n }\r\n }).catch((e) => {\r\n EWS.HideLoading();\r\n throw e;\r\n });\r\n } else {\r\n EWS.HideLoading();\r\n ECP.Dialog.Alert(EC_Fmt.Trn(\"You must select a report.\"));\r\n }\r\n }\r\n });\r\n\r\n let manualTitle = false;\r\n\r\n Dialog.querySelectorAll(\"input[KeyValue][DisplayVal][LimitToList]\").forEach((input) => {\r\n const FieldID = input.closest(\"section\").getAttribute(\"FieldID\");\r\n\r\n EWS.AjaxInputs[FieldID] = new ECP.HTML.AjaxInput(input);\r\n\r\n input.closest(\"table\").style.width = \"\";\r\n });\r\n\r\n Dialog.querySelector(\"#ews-report-title\").addEventListener(\"keyup\", () => {\r\n manualTitle = true;\r\n });\r\n\r\n Dialog.querySelector(\"#ews-report-display\").addEventListener(\"change\", (event) => {\r\n const target = event.target;\r\n\r\n if (target.tagName.toLowerCase() === \"input\" && target.name === \"saved-report\") {\r\n Dialog.querySelectorAll(\".ews-tree-selected\").forEach((item) => {\r\n item.classList.remove(\"ews-tree-selected\");\r\n });\r\n\r\n const reportTitle = Dialog.querySelector(\"#ews-report-title\");\r\n\r\n if (reportTitle.value === \"\") {\r\n manualTitle = false;\r\n }\r\n\r\n if (!manualTitle) {\r\n reportTitle.value = target.closest(\".ews-tree-node\").querySelector(\"a[type=report]\").innerHTML;\r\n }\r\n\r\n // Task 677137: Syntax Error when selecting a saved report from table import\r\n target.closest(\".ews-tree-node\").querySelector(\"a[type=report]\").classList.add(\"ews-tree-selected\");\r\n }\r\n });\r\n\r\n if (selectArgs.title) {\r\n Dialog.querySelector(\"#ews-report-title\").value = selectArgs.title;\r\n }\r\n\r\n if (selectArgs.dashboard) {\r\n Dialog.querySelector(\"#ews-saved-report-title-container\").style.display = \"flex\";\r\n } else if (selectArgs.fusion) {\r\n Dialog.querySelector(\"#ews-saved-report-title-container\").style.display = \"flex\";\r\n Dialog.querySelector(\"#ews-saved-report-title-display\").text = EC_Fmt.Trn(\"Alias\");\r\n const ReportOwnerHtml = Dialog.querySelector(\".ews-report-owner\");\r\n if (ReportOwnerHtml) {\r\n ReportOwnerHtml.style.display = \"\";\r\n }\r\n } else {\r\n Dialog.querySelector(\"#ews-saved-report-title-container\").style.display = \"none\";\r\n }\r\n\r\n let selectCommand = \"BC_SavedReport_GetReports\";\r\n\r\n if (selectArgs.selectCommand && selectArgs.selectCommand !== undefined && selectArgs.selectCommand !== \"\") {\r\n selectCommand = selectArgs.selectCommand;\r\n }\r\n\r\n let DashboardID = \"\";\r\n const dashboardIDElement = document.getElementById(\"ews-report-dashboard-id\");\r\n if (dashboardIDElement) {\r\n DashboardID = dashboardIDElement.value;\r\n }\r\n\r\n let ownerAuthenTicationID = \"\";\r\n const OwnerAuthenTicationElement = Dialog.querySelector(\"#ews-report-ownerauthenticationHidden\");\r\n if (OwnerAuthenTicationElement) {\r\n ownerAuthenTicationID = OwnerAuthenTicationElement.value;\r\n }\r\n\r\n EWS.Command.Execute(selectCommand, {\r\n Dialog,\r\n ownerauthenticationid: ownerAuthenTicationID,\r\n search: Dialog.querySelector(\"#ews-report-search\").value,\r\n report: selectArgs.report,\r\n userName: (me.UserName || \"\").toLowerCase(),\r\n DashboardID,\r\n ReportType: selectArgs.reportType\r\n });\r\n\r\n if (OwnerAuthenTicationElement) {\r\n OwnerAuthenTicationElement.addEventListener(\"change\", () => {\r\n EWS.Command.Execute(selectCommand, {\r\n Dialog,\r\n ownerauthenticationid: ownerAuthenTicationID,\r\n search: Dialog.querySelector(\"#ews-report-search\").value,\r\n report: selectArgs.report,\r\n userName: (me.UserName || \"\").toLowerCase(),\r\n DashboardID,\r\n ReportType: selectArgs.reportType\r\n });\r\n });\r\n }\r\n\r\n Dialog.querySelector(\"#ews-report-search\").addEventListener(\"keydown\", (event) => {\r\n if (event.key === \"Enter\") {\r\n EWS.Command.Execute(selectCommand, {\r\n Dialog,\r\n ownerauthenticationid: ownerAuthenTicationID,\r\n search: Dialog.querySelector(\"#ews-report-search\").value,\r\n report: selectArgs.report,\r\n userName: (me.UserName || \"\").toLowerCase(),\r\n DashboardID,\r\n ReportType: selectArgs.reportType\r\n });\r\n\r\n return false;\r\n }\r\n return true;\r\n });\r\n\r\n Dialog.querySelector(\".ews-edit-form\").addEventListener(\"click\", (event) => {\r\n const target = event.target;\r\n\r\n if (target.tagName.toLowerCase() === \"a\" && target.type === \"report\") {\r\n target.parentNode.querySelector(\"input[name='saved-report']\").click();\r\n } else if (target.tagName.toLowerCase() === \"a\" && target.type === \"folder\") {\r\n target.parentNode.querySelector(\".ews-tree-selector\").click();\r\n } else if (target.classList.contains(\"ews-tree-collapsed\")) {\r\n target.parentNode.querySelector(\".ews-tree-child-node\").style.display = \"block\";\r\n\r\n target.classList.add(\"ews-tree-expanded\");\r\n target.classList.remove(\"ews-tree-collapsed\");\r\n } else if (target.classList.contains(\"ews-tree-expanded\")) {\r\n target.parentNode.querySelector(\".ews-tree-child-node\").style.display = \"none\";\r\n\r\n target.classList.remove(\"ews-tree-expanded\");\r\n target.classList.add(\"ews-tree-collapsed\");\r\n }\r\n });\r\n\r\n Dialog.querySelector(\"#ews-report-search-button\").addEventListener(\"click\", () => {\r\n EWS.Command.Execute(selectCommand, {\r\n Dialog,\r\n ownerauthenticationid: OwnerAuthenTicationElement ? OwnerAuthenTicationElement.value : \"\",\r\n search: Dialog.querySelector(\"#ews-report-search\").value,\r\n report: selectArgs.report,\r\n userName: (me.UserName || \"\").toLowerCase(),\r\n DashboardID,\r\n ReportType: selectArgs.reportType\r\n });\r\n });\r\n\r\n Dialog.querySelector(\"#ews-report-search\").focus();\r\n\r\n requestAnimationFrame(() => {\r\n Dialog.querySelector(\"#ews-report-search\").focus();\r\n });\r\n } catch (e) {\r\n EWS.HideLoading();\r\n throw (e);\r\n }\r\n });\r\n};\r\n\r\nBC_SavedReport.prototype.Show_BC_SavedReport_ReportList_Dialog = function (args) {\r\n const me = this;\r\n\r\n EWS.VerifySession(() => {\r\n const selectArgs = args;\r\n\r\n const myRequest = new ECP.EC_Request(\"SavedReport_ReportListDialog\");\r\n\r\n myRequest.Submit().then((result) => {\r\n me.UserName = result.username;\r\n me.FullName = result.fullname;\r\n me.OwnerAuthenticationID = result.ownerauthenticationid;\r\n me.closeDialog = true;\r\n\r\n const DialogCancel = EC_Fmt.Trn(\"Cancel\");\r\n const DialogSelect = EC_Fmt.Trn(\"Select\");\r\n let DialogTitle = EC_Fmt.Trn(\"Select Report\");\r\n if (selectArgs.reportType === EWS.SavedReport.ReportType.Cube) {\r\n DialogTitle = EC_Fmt.Trn(\"Select Fusion Cube\");\r\n }\r\n\r\n const Dialog = ECP.Dialog.ShowDialog(DialogTitle, result.content, {\r\n barPosition: \"top\",\r\n width: 750,\r\n height: 730,\r\n cancelButtonTitle: DialogCancel,\r\n confirmButtonTitle: DialogSelect,\r\n confirmButtonAction(dialog) {\r\n let closeDialog = true;\r\n const inputArr = dialog.querySelectorAll(\"input[name='saved-report']:checked\");\r\n const title = dialog.querySelector(\"#ews-report-title\").value.replace(/(^\\s*)|(\\s*$)/g, \"\");\r\n\r\n if (selectArgs.dashboard && title === \"\") {\r\n ECP.Dialog.Alert(EC_Fmt.Trn(\"You must enter a title.\"));\r\n return;\r\n }\r\n\r\n if (selectArgs.multipleSelect) {\r\n if (inputArr.length <= 0) {\r\n ECP.Dialog.Alert(EC_Fmt.Trn(\"You must select a report.\"));\r\n closeDialog = false;\r\n }\r\n\r\n if (selectArgs.callback && selectArgs.callback !== undefined) {\r\n selectArgs.callback(me, Array.from(inputArr).map(input => input.value).join(\",\"), title);\r\n }\r\n } else {\r\n const radio = inputArr.length > 0 ? inputArr[0] : null;\r\n\r\n if (radio) {\r\n let report = radio.value;\r\n\r\n if (selectArgs.report && !EC_Fmt.isNull(parseInt(selectArgs.report)) && !report) {\r\n report = selectArgs.report;\r\n }\r\n\r\n const source = radio.getAttribute(\"source\");\r\n const owner = radio.getAttribute(\"owner\");\r\n let fullName = radio.getAttribute(\"fullname\");\r\n\r\n if (report && !EC_Fmt.isNull(parseInt(report))) {\r\n if (owner.length > 0 && owner.substr(owner.length - 1) === \"$\") {\r\n fullName = owner;\r\n }\r\n\r\n if (selectArgs.callback && selectArgs.callback !== undefined) {\r\n selectArgs.callback(me, report, title, source, owner, fullName);\r\n }\r\n }\r\n } else {\r\n ECP.Dialog.Alert(EC_Fmt.Trn(\"You must select a report.\"));\r\n closeDialog = false;\r\n }\r\n }\r\n\r\n if (!closeDialog || !me.closeDialog) {\r\n dialog.style.display = \"block\";\r\n } else {\r\n ECP.Dialog.CloseDialog(dialog);\r\n }\r\n }\r\n });\r\n me.Dialog = Dialog;\r\n\r\n let manualTitle = false;\r\n\r\n Dialog.querySelectorAll(\"input[KeyValue][DisplayVal][LimitToList]\").forEach((input) => {\r\n const FieldID = input.closest(\"section\").getAttribute(\"FieldID\");\r\n\r\n EWS.AjaxInputs[FieldID] = new ECP.HTML.AjaxInput(input);\r\n\r\n input.closest(\"table\").style.width = \"\";\r\n });\r\n\r\n Dialog.querySelector(\"#ews-report-title\").addEventListener(\"keyup\", () => {\r\n manualTitle = true;\r\n });\r\n\r\n Dialog.addEventListener(\"change\", (event) => {\r\n const target = event.target;\r\n\r\n if (target.tagName.toLowerCase() === \"input\" && target.name === \"saved-report\") {\r\n Dialog.querySelectorAll(\".ews-tree-selected\").forEach((item) => {\r\n item.classList.remove(\"ews-tree-selected\");\r\n });\r\n\r\n if (Dialog.querySelector(\"#ews-report-title\").value === \"\") {\r\n manualTitle = false;\r\n }\r\n\r\n if (!manualTitle) {\r\n Dialog.querySelector(\"#ews-report-title\").value = target.parentNode.parentNode.querySelector(\"a[type=report]\").innerHTML;\r\n }\r\n\r\n // Task 677137: Syntax Error when selecting a saved report from table import\r\n target.parentNode.parentNode.querySelector(\"a[type=report]\").classList.add(\"ews-tree-selected\");\r\n }\r\n });\r\n\r\n if (selectArgs.title) {\r\n Dialog.querySelector(\"#ews-report-title\").value = selectArgs.title;\r\n }\r\n\r\n if (selectArgs.optionsHtml) {\r\n Dialog.querySelector(\".addReport-Options\").style.display = \"\";\r\n Dialog.querySelector(\"#ews-saved-report-options-container\").innerHTML = selectArgs.optionsHtml;\r\n }\r\n if (selectArgs.dashboard) {\r\n Dialog.querySelector(\"#ews-saved-report-title-container\").style.display = \"flex\";\r\n } else if (selectArgs.fusion) {\r\n Dialog.querySelector(\"#ews-saved-report-title-container\").style.display = \"none\";\r\n Dialog.querySelector(\".ews-report-owner\").style.display = \"none\";\r\n } else {\r\n Dialog.querySelector(\"#ews-saved-report-title-container\").style.display = \"none\";\r\n }\r\n\r\n if (selectArgs.owner) {\r\n Dialog.querySelector(\"#ews-report-ownerauthenticationHidden\").value = selectArgs.ownerauthenticationid;\r\n Dialog.querySelector(\"#ews-report-ownerauthenticationInput\").value = selectArgs.owner;\r\n }\r\n\r\n let selectCommand = \"BC_SavedReport_GetReports\";\r\n\r\n if (selectArgs.selectCommand && selectArgs.selectCommand !== undefined && selectArgs.selectCommand !== \"\") {\r\n selectCommand = selectArgs.selectCommand;\r\n }\r\n\r\n EWS.Command.Execute(selectCommand, {\r\n Dialog,\r\n ownerauthenticationid: Dialog.querySelector(\"#ews-report-ownerauthenticationHidden\").value,\r\n search: Dialog.querySelector(\"#ews-report-search\").value,\r\n report: selectArgs.report,\r\n userName: (me.UserName || \"\").toLowerCase(),\r\n DashboardID: args.ReportType,\r\n multipleSelect: selectArgs.multipleSelect,\r\n FilterPivot: selectArgs.FilterPivot,\r\n ReportType: selectArgs.reportType\r\n });\r\n\r\n Dialog.querySelector(\"#ews-report-ownerauthenticationHidden\").addEventListener(\"change\", () => {\r\n EWS.Command.Execute(selectCommand, {\r\n Dialog,\r\n ownerauthenticationid: Dialog.querySelector(\"#ews-report-ownerauthenticationHidden\").value,\r\n search: Dialog.querySelector(\"#ews-report-search\").value,\r\n report: selectArgs.report,\r\n userName: (me.UserName || \"\").toLowerCase(),\r\n DashboardID: args.ReportType,\r\n FilterPivot: selectArgs.FilterPivot\r\n });\r\n });\r\n\r\n Dialog.querySelector(\"#ews-report-search\").addEventListener(\"keydown\", (event) => {\r\n if (event.key === \"Enter\") {\r\n EWS.Command.Execute(selectCommand, {\r\n Dialog,\r\n ownerauthenticationid: Dialog.querySelector(\"#ews-report-ownerauthenticationHidden\").value,\r\n search: Dialog.querySelector(\"#ews-report-search\").value,\r\n report: selectArgs.report,\r\n userName: (me.UserName || \"\").toLowerCase(),\r\n DashboardID: args.ReportType,\r\n FilterPivot: selectArgs.FilterPivot\r\n });\r\n\r\n return false;\r\n }\r\n return true;\r\n });\r\n\r\n Dialog.querySelector(\"#ews-report-search\").focus();\r\n\r\n Dialog.addEventListener(\"click\", (event) => {\r\n const target = event.target;\r\n\r\n if (target.tagName.toLowerCase() === \"a\" && target.type === \"report\") {\r\n target.parentNode.querySelector(\"input[name='saved-report']\").click();\r\n } else if (target.tagName.toLowerCase() === \"a\" && target.type === \"folder\") {\r\n target.parentNode.querySelector(\".ews-tree-selector\").click();\r\n } else if (target.classList.contains(\"ews-tree-collapsed\")) {\r\n target.parentNode.querySelector(\".ews-tree-child-node\").style.display = \"block\";\r\n\r\n target.classList.add(\"ews-tree-expanded\");\r\n target.classList.remove(\"ews-tree-collapsed\");\r\n } else if (target.classList.contains(\"ews-tree-expanded\")) {\r\n target.parentNode.querySelector(\".ews-tree-child-node\").style.display = \"none\";\r\n\r\n target.classList.remove(\"ews-tree-expanded\");\r\n target.classList.add(\"ews-tree-collapsed\");\r\n }\r\n });\r\n\r\n Dialog.querySelector(\"#ews-report-search-button\").addEventListener(\"click\", () => {\r\n EWS.Command.Execute(selectCommand, {\r\n Dialog,\r\n ownerauthenticationid: Dialog.querySelector(\"#ews-report-ownerauthenticationHidden\").value,\r\n search: Dialog.querySelector(\"#ews-report-search\").value,\r\n report: selectArgs.report,\r\n userName: (me.UserName || \"\").toLowerCase(),\r\n DashboardID: args.ReportType,\r\n multipleSelect: selectArgs.multipleSelect,\r\n FilterPivot: selectArgs.FilterPivot\r\n });\r\n });\r\n\r\n requestAnimationFrame(() => {\r\n Dialog.querySelector(\"#ews-report-search\").focus();\r\n });\r\n });\r\n });\r\n};\r\n","\"use strict\";\r\n\r\nlet AllowHideAllDivs = true;\r\nlet PageSizeCallback = () => { };\r\nlet PageResizeCallback = () => { };\r\nlet MenuScrollTop;\r\nlet Menu;\r\nlet MenuTop;\r\nlet PageEndMilliseconds = 0;\r\nlet AllowZoom = true;\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction SetupEncompassSiteMapHeader() {\r\n requestIdleCallback(() => {\r\n Menu = document.getElementById(\"Menu\");\r\n MenuTop = document.getElementById(\"MenuTop\");\r\n\r\n if (IsImpersonateUser) {\r\n if (Menu) {\r\n Menu.classList.add(\"MenuCollapsed\");\r\n }\r\n\r\n if (MenuTop) {\r\n MenuTop.classList.add(\"MenuCollapsed\");\r\n }\r\n\r\n const content = document.getElementById(\"Content\");\r\n if (content) {\r\n content.classList.add(\"MenuCollapsed\");\r\n }\r\n\r\n const application = document.querySelector(\"#Header .Application\");\r\n if (application) {\r\n application.classList.add(\"MenuCollapsed\");\r\n }\r\n }\r\n\r\n if (Menu) {\r\n // Task 698176: Removing a user's permission to view a certain dashboard does not remove it from their menu until after they click the 'Refresh' icon\r\n // Task 702904: Dashboard Menu is not showing the correct dashboards when logged in.\r\n const CurrentLocalStorageKey = `DashboardMenuHTML_${parseInt(Math.floor((new Date()) / 86400000))}_${UserID}_${UserType}_${IsImpersonateUser}_Key`;\r\n let DashboardMenuHTML;\r\n try {\r\n DashboardMenuHTML = EC_Fmt.GetLocalStorageValue(CurrentLocalStorageKey);\r\n } catch (e) {\r\n DashboardMenuHTML = \"Cookies Must Be Enabled\";\r\n }\r\n\r\n requestIdleCallback(() => {\r\n if (DashboardMenuHTML !== \"Cookies Must Be Enabled\") {\r\n for (let i = 0, len = localStorage.length; i < len; i++) {\r\n const key = localStorage.key(i);\r\n if (key?.startsWith(\"DashboardMenuHTML_\") && key !== CurrentLocalStorageKey) {\r\n localStorage.removeItem(key);\r\n }\r\n }\r\n }\r\n });\r\n\r\n if (!DashboardMenuHTML) {\r\n let GetDashboardMenuURL = \"api?APICommand=GetDashboardMenu\";\r\n\r\n if (UserType === \"Guest\" || new Date().getTime() > parseInt(EC_Fmt.GetCookie(\"ExpireTime\"))) {\r\n const token = \"bc1020ae20b607f7318ff7c782c6d8ef\";\r\n GetDashboardMenuURL += `_Guest&APIToken=${token}&EncompassID=${Distributor}&${EC_Fmt.Get_QueryString(\"\", \"DashboardID;DestURL\", false, false)}`;\r\n } else {\r\n // Task 701744: Open QuickLink left menu error happen.\r\n GetDashboardMenuURL += `&${EC_Fmt.Get_QueryString(\"\", \"DashboardID;DashboardVersionID;DestURL;CustomerID;ProductID;ChainID;UserID;SupplierID;APAccountID;RouteID;QuickKey\", true, true)}`;\r\n }\r\n\r\n fetch(GetDashboardMenuURL, {\r\n credentials: \"same-origin\"\r\n }).then(response => response.text()).then((returnHTML) => {\r\n // Task 715352: Menu showing user error Session Expired URL Does not include APIToken\r\n if (returnHTML.startsWith(\"{\")) {\r\n EWS.Login(() => {\r\n window.location.reload(true);\r\n });\r\n } else {\r\n // Task 679154: Home>Menu: URL does not include APIToken and User is not logged on.\r\n WriteDashboardMenuHTML(returnHTML);\r\n\r\n // Task 938582: Error when loading the left side dashboard menu: cannot connect to database server\r\n if (returnHTML.startsWith(\" {\r\n clearTimeout(collapsingTimeout);\r\n if (Menu.classList.contains(\"MenuCollapsed\")) {\r\n expandingTimeout = setTimeout(() => {\r\n Menu.style.width = \"256px\";\r\n Menu.querySelector(\".Content\").style.overflowY = \"auto\";\r\n Menu.classList.add(\"open-temp\");\r\n\r\n const highlightedSection = Menu.querySelector(\".CategoryHighlight.Relative\");\r\n if (highlightedSection) {\r\n highlightedSection.style.background = \"\";\r\n highlightedSection.style.boxShadow = \"\";\r\n\r\n const expandedSubCategory = highlightedSection.querySelector(\"div[id$='Category']\");\r\n if (expandedSubCategory) {\r\n expandedSubCategory.style.display = \"\";\r\n }\r\n }\r\n if (MenuTop) {\r\n MenuTop.style.width = \"256px\";\r\n MenuTop.classList.remove(\"MenuCollapsed\");\r\n MenuTop.classList.add(\"MenuOpened\");\r\n }\r\n }, 450);\r\n }\r\n };\r\n const Menumouseleave = () => {\r\n clearTimeout(expandingTimeout);\r\n if (Menu.style.width && Menu.classList.contains(\"MenuCollapsed\")) {\r\n collapsingTimeout = setTimeout(() => {\r\n CollapseAndUnHighlightMenu();\r\n Menu.style.width = \"\";\r\n Menu.classList.remove(\"open-temp\");\r\n Menu.querySelector(\".Content\").style.overflowY = \"hidden\";\r\n if (MenuTop) {\r\n MenuTop.style.width = \"\";\r\n MenuTop.classList.remove(\"MenuOpened\");\r\n MenuTop.classList.add(\"MenuCollapsed\");\r\n }\r\n }, 450);\r\n }\r\n };\r\n if (MenuTop && !EC_Fmt.isMobile) {\r\n MenuTop.addEventListener(\"mouseenter\", Menumouseenter, {\r\n passive: true\r\n });\r\n MenuTop.addEventListener(\"mouseleave\", Menumouseleave, {\r\n passive: true\r\n });\r\n MenuTop.addEventListener(\"touchmove\", (event) => {\r\n event.stopPropagation();\r\n }, {\r\n passive: true\r\n });\r\n }\r\n\r\n Menu.addEventListener(\"mouseenter\", Menumouseenter, {\r\n passive: true\r\n });\r\n Menu.addEventListener(\"mouseleave\", Menumouseleave, {\r\n passive: true\r\n });\r\n Menu.addEventListener(\"touchmove\", (event) => {\r\n event.stopPropagation();\r\n }, {\r\n passive: true\r\n });\r\n\r\n requestIdleCallback(() => {\r\n Menu.scrollLeft = 0;\r\n });\r\n }\r\n\r\n const MainMenuItemHighlight = document.querySelector(\".MainMenuItemHighlight\");\r\n if (MainMenuItemHighlight) {\r\n if (EC_Fmt.isVisible(MainMenuItemHighlight)) {\r\n MainMenuItemHighlight.scrollIntoView({ behavior: \"auto\", block: \"center\", inline: \"center\" });\r\n } else {\r\n MainMenuItemHighlight.parentElement.parentElement.scrollIntoView({ behavior: \"auto\", block: \"center\", inline: \"center\" });\r\n }\r\n if (MainMenuItemHighlight.classList.contains(\"ews-unshared-menu-item\") && typeof Settings === \"object\") {\r\n const MainMenuItemNoCategory = document.querySelector(\".NoCategory\");\r\n\r\n if (MainMenuItemNoCategory) {\r\n const addViewRoleDiv = document.createElement(\"div\");\r\n addViewRoleDiv.classList.add(\"ActionButtonContainer\");\r\n addViewRoleDiv.setAttribute(\"title\", \"Add View Role\");\r\n addViewRoleDiv.innerHTML = `
Add View Role
`;\r\n\r\n MainMenuItemNoCategory.appendChild(addViewRoleDiv);\r\n }\r\n }\r\n }\r\n\r\n // Task 723415: If the DashboardID is not in the URL, add it so that sharing URLs with others and recently visited works correctly\r\n // Task 959560: Add EncompassID to the URL on test sites to make links to them work better\r\n // Task 1017499: The EC_Fmt.GetURLParameters method will not be processed '#'\r\n EC_Fmt.ReplaceState(window.history.state || {}, document.title, window.location.search + window.location.hash);\r\n\r\n // Task 723415: Add current page to the recently visited list\r\n if (UserType !== \"Guest\") {\r\n EWS.Ready(() => {\r\n requestIdleCallback(() => {\r\n // Task 723415: Setup a mutation observer to catch if the title on the page is updated, need to update the title in the RecentlyVistedPages cache\r\n // Task 1029399: System Error: JavaScript Error: includes/DefaultAll.min.js (1) - TypeError: window.WebKitMutationObserver is not a constructor\r\n const titleObserver = new window.MutationObserver(((mutations) => {\r\n mutations.forEach((mutation) => {\r\n let recentlyVisited = EC_Fmt.GetLocalStorageValue(`RecentlyVisitedPages_${UserID}`);\r\n if (recentlyVisited) {\r\n recentlyVisited = JSON.parse(recentlyVisited);\r\n } else {\r\n recentlyVisited = { pages: [] };\r\n }\r\n const lastIndex = recentlyVisited.pages.length - 1;\r\n if (recentlyVisited.pages[lastIndex].title === \"Table View\") {\r\n recentlyVisited.pages.splice(lastIndex, 1);\r\n }\r\n // Remove eChat notification from the title number\r\n const cleanTitle = mutation.target.textContent.replace(/\\(\\d+\\)$/, \"\");\r\n for (let i = 0; i < recentlyVisited.pages.length; i++) {\r\n if (recentlyVisited.pages[i].title === cleanTitle) {\r\n recentlyVisited.pages.splice(i, 1);\r\n }\r\n }\r\n recentlyVisited.pages.push({ title: cleanTitle, URL: window.location.pathname + window.location.search });\r\n if (recentlyVisited.pages.length > 15) {\r\n recentlyVisited.pages.shift();\r\n }\r\n\r\n EC_Fmt.SetLocalStorageValue(`RecentlyVisitedPages_${UserID}`, JSON.stringify(recentlyVisited));\r\n });\r\n }));\r\n titleObserver.observe(document.querySelector(\"head > title\"), { subtree: true, characterData: true, childList: true });\r\n\r\n // Task 723415: Pushing the current page into the recently visited list\r\n let recentlyVisited = EC_Fmt.GetLocalStorageValue(`RecentlyVisitedPages_${UserID}`);\r\n if (recentlyVisited) {\r\n recentlyVisited = JSON.parse(recentlyVisited);\r\n } else {\r\n recentlyVisited = { pages: [] };\r\n }\r\n // Remove eChat notification from the title number\r\n const cleanTitle = document.title.replace(/\\(\\d+\\)$/, \"\");\r\n for (let i = 0; i < recentlyVisited.pages.length; i++) {\r\n if (recentlyVisited.pages[i].title === cleanTitle) {\r\n recentlyVisited.pages.splice(i, 1);\r\n }\r\n }\r\n recentlyVisited.pages.push({ title: cleanTitle, URL: window.location.pathname + window.location.search });\r\n if (recentlyVisited.pages.length > 15) {\r\n recentlyVisited.pages.shift();\r\n }\r\n EC_Fmt.SetLocalStorageValue(`RecentlyVisitedPages_${UserID}`, JSON.stringify(recentlyVisited));\r\n }, { timeout: 300 });\r\n });\r\n }\r\n }, { timeout: 500 });\r\n}\r\n\r\nAllowZoom = true;\r\n\r\nEWS.Ready(() => {\r\n const innerContent = document.querySelector(\"#Content .Inner\");\r\n\r\n if (innerContent) {\r\n // Performance sensitive code, runs every time a user scrolls, for each pixel scrolled, please performance test if making changes\r\n let elementsHidden = false;\r\n\r\n const debouncedScrollHandler = debounce(() => {\r\n if (!elementsHidden) {\r\n hideAllElements(document.getElementsByClassName(\"ews-menu\"));\r\n hideAllElements(document.getElementsByClassName(\"AutocompleteMenu\"));\r\n hideAllElements(document.querySelectorAll(\"body > .ColumnMenu\"));\r\n hideAllElements(document.getElementsByClassName(\"DateInputCalendar\"));\r\n elementsHidden = true;\r\n }\r\n\r\n EC_Fmt.ReplaceState(\r\n Object.assign(window.history.state || {}, {\r\n scrollTop: innerContent.scrollTop,\r\n scrollLeft: innerContent.scrollLeft\r\n }), \"\"\r\n );\r\n elementsHidden = false;\r\n }, 1500);\r\n\r\n innerContent.addEventListener(\"scroll\", debouncedScrollHandler, {\r\n passive: true\r\n });\r\n }\r\n\r\n const MainLayout = document.getElementById(\"MainLayout\");\r\n\r\n if (MainLayout?.innerHTML.replace(/ /g, \"\") === \"\") {\r\n MainLayout.innerHTML = \" \";\r\n }\r\n\r\n const debouncedResize = debounce(() => ResizeLayout(), 1500);\r\n window.addEventListener(\"resize\", debouncedResize);\r\n\r\n window.addEventListener(\"click\", (event) => {\r\n if (event.button !== 2) {\r\n HideAllDivs(false);\r\n }\r\n });\r\n\r\n // Zoom on mobile\r\n if (EC_Fmt.isMobile) {\r\n let isScale = false;\r\n let dist = 0;\r\n let scale = 1;\r\n const mainLayoutTable = document.getElementById(\"MainLayoutTable\");\r\n\r\n if (mainLayoutTable) {\r\n const zoomables = document.querySelectorAll(\".Zoomable\");\r\n const DashboardElement = document.getElementById(\"Dashboard\");\r\n\r\n innerContent.style.transition = \"transform 0.2s\";\r\n\r\n innerContent.addEventListener(\"touchstart\", (event) => {\r\n if (AllowZoom) {\r\n const originalEvent = event;\r\n\r\n if (originalEvent.touches.length === 2) {\r\n isScale = true;\r\n\r\n dist = Math.sqrt(\r\n (originalEvent.touches[0].pageX - originalEvent.touches[1].pageX) * (originalEvent.touches[0].pageX - originalEvent.touches[1].pageX)\r\n + (originalEvent.touches[0].pageY - originalEvent.touches[1].pageY) * (originalEvent.touches[0].pageY - originalEvent.touches[1].pageY)\r\n );\r\n }\r\n }\r\n }, {\r\n passive: true\r\n });\r\n\r\n innerContent.addEventListener(\"touchmove\", (event) => {\r\n if (isScale && AllowZoom) {\r\n const originalEvent = event;\r\n\r\n if (originalEvent.touches.length < 2 || !originalEvent.touches[0] || !originalEvent.touches[1]) {\r\n return false;\r\n }\r\n\r\n const currentDist = Math.sqrt(\r\n (originalEvent.touches[0].pageX - originalEvent.touches[1].pageX) * (originalEvent.touches[0].pageX - originalEvent.touches[1].pageX)\r\n + (originalEvent.touches[0].pageY - originalEvent.touches[1].pageY) * (originalEvent.touches[0].pageY - originalEvent.touches[1].pageY)\r\n );\r\n\r\n const diff = currentDist - dist;\r\n\r\n if (Math.abs(diff) >= 10) {\r\n const currentScale = scale + 0.0001 * (currentDist - dist);\r\n\r\n if (mainLayoutTable.scrollWidth * currentScale >= window.outerWidth && currentScale <= 1.8) {\r\n if (DashboardElement) {\r\n DashboardElement.style.transform = `scale(${currentScale})`;\r\n DashboardElement.style.transformOrigin = \"0 0\";\r\n DashboardElement.style.width = DashboardElement.offsetWidth / scale * currentScale;\r\n } else {\r\n mainLayoutTable.style.transform = `scale(${currentScale})`;\r\n mainLayoutTable.style.transformOrigin = \"0 0\";\r\n }\r\n\r\n for (let i = 0; i < zoomables.length; i++) {\r\n const zoomable = zoomables[i];\r\n\r\n zoomable.style.transform = `scale(${currentScale})`;\r\n zoomable.style.transformOrigin = \"0 0\";\r\n }\r\n\r\n scale = currentScale;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n return true;\r\n }, {\r\n passive: true\r\n });\r\n\r\n innerContent.addEventListener(\"touchend\", () => {\r\n isScale = false;\r\n dist = 0;\r\n }, {\r\n passive: true\r\n });\r\n }\r\n\r\n const ApplicationVersionLinks = document.querySelectorAll(\".application-versions a\");\r\n for (let i = 0; i < ApplicationVersionLinks.length; i++) {\r\n ApplicationVersionLinks[i].addEventListener(\"click\", () => {\r\n ECP.Dialog.Alert(\"Encompass Mobile download has started. Please exit your browser to view the progress.\");\r\n });\r\n }\r\n }\r\n\r\n // Task 911147: Browser Render time is not accurate on dashboards\r\n PageEndMilliseconds = new Date().getTime();\r\n\r\n const MainLayoutHeader = document.getElementById(\"MainLayoutHeader\");\r\n if (MainLayoutHeader) {\r\n const previousEl = MainLayoutHeader.previousElementSibling;\r\n\r\n if (previousEl?.tagName.toLowerCase() === \"tbody\") {\r\n MainLayoutHeader.parentElement.insertBefore(MainLayoutHeader, previousEl);\r\n }\r\n }\r\n\r\n if (window.history.state && (window.history.state.scrollLeft !== undefined || window.history.state.scrollTop !== undefined)) {\r\n innerContent.scrollTo(window.history.state.scrollLeft, window.history.state.scrollTop);\r\n }\r\n\r\n ShowToolTipMessage();\r\n\r\n CreateSwitchDashboardVersionTypeButton(document.querySelector(\"#Header .Inner .switchVersionTypeContent\"));\r\n\r\n // Task 1038521: Collapse dashboard header tabs when the user scrolls away from the header\r\n if (document.querySelector(\"#MainLayoutTable .HeaderTabsSticky\")) {\r\n document.getElementById(\"MainLayoutTable\").classList.add(\"OverflowInherit\");\r\n }\r\n\r\n // Task 1113290: Move ShowSQL=true logic to save the results into a logs table\r\n const showSQL = EC_Fmt.GetPageParameter(\"ShowSQL\");\r\n if ((showSQL === \"true\" || showSQL === \"True\") && UserType !== \"Guest\") {\r\n requestIdleCallback(() => {\r\n ECP.Dialog.Alert(\"ShowSQL recorded to the System Logs table\");\r\n }, { timeout: 2000 });\r\n }\r\n\r\n const UserMenuToggleInMenu = document.getElementById(\"UserMenuToggleInMenu\");\r\n if (UserMenuToggleInMenu) {\r\n UserMenuToggleInMenu.addEventListener(\"click\", async (e) => {\r\n let UserMenuInMenu = document.getElementById(\"UserMenuInMenu\");\r\n if (!UserMenuInMenu) {\r\n UserMenuInMenu = await GetUserMenuInMenu();\r\n UserMenuInMenu.style.bottom = \"68px\";\r\n UserMenuToggleInMenu.parentElement.insertBefore(UserMenuInMenu, UserMenuToggleInMenu.nextSibling);\r\n }\r\n UserMenuInMenu.ShowMenu(UserMenuToggleInMenu);\r\n requestAnimationFrame(() => {\r\n UserMenuInMenu.style.top = \"\";\r\n });\r\n e.stopPropagation();\r\n });\r\n }\r\n\r\n const OverFlowMenu = document.getElementById(\"OverFlowMenu\");\r\n if (OverFlowMenu) {\r\n OverFlowMenu.addEventListener(\"click\", async (e) => {\r\n let HeaderOverflowMenu = document.getElementById(\"HeaderOverflowMenu\");\r\n if (!HeaderOverflowMenu) {\r\n HeaderOverflowMenu = await GetHeaderOverflowMenu();\r\n OverFlowMenu.parentElement.insertBefore(HeaderOverflowMenu, OverFlowMenu.nextSibling);\r\n SetRenderTime();\r\n }\r\n HeaderOverflowMenu.ShowMenu(OverFlowMenu);\r\n e.stopPropagation();\r\n });\r\n }\r\n});\r\n\r\nasync function GetHeaderOverflowMenu() {\r\n const myRequest = new ECP.EC_Request(\"HeaderOverflowMenu\");\r\n myRequest.SetReturnType(ECP.EC_ReturnType.Text);\r\n if (EC_Fmt.GetPageParameter(\"DashboardID\")) {\r\n myRequest.AddRequestVariable(\"DashboardID\", EC_Fmt.GetPageParameter(\"DashboardID\"));\r\n }\r\n const FavoriteURL = window.location.href.substring(window.location.href.indexOf(\"/Home?\") + 1);\r\n myRequest.AddRequestVariable(\"FavoriteURL\", FavoriteURL);\r\n let HeaderOverflowMenu = await myRequest.Submit();\r\n HeaderOverflowMenu = EC_Fmt.HtmlStrToElement(HeaderOverflowMenu);\r\n HeaderOverflowMenu.addEventListener(\"click\", (event) => {\r\n const target = event.target.matches(\"ecp-list-item\") || event.target.closest(\"ecp-list-item\");\r\n if (target) {\r\n // EC-12307: Overlay mask not removed when tapping download Encompass Mobile\r\n event.target.closest(\"ecp-menu\").CloseMenu();\r\n }\r\n });\r\n return HeaderOverflowMenu;\r\n}\r\n\r\nasync function GetUserMenuInMenu() {\r\n const GetUserDom = document.getElementById(\"UserMenuToggleInMenu\").querySelector(\".UserStyle\");\r\n GetUserDom.querySelector(\".ews-icon-emcaretdown\").classList.add(\"arrowup\");\r\n let UserMenuHtml = ``\r\n + ``\r\n + `${GetUserDom.outerHTML}`;\r\n if (!IsImpersonateUser) {\r\n UserMenuHtml += ``\r\n + ``\r\n + `Profile`\r\n + ``;\r\n } else {\r\n UserMenuHtml += ``\r\n + ``\r\n + `Profile`\r\n + ``\r\n + `Can not use this tool while cloning another user`;\r\n }\r\n\r\n UserMenuHtml += ``;\r\n\r\n if (AuthenticationID > 0 && !IsImpersonateUser) {\r\n UserMenuHtml += ``\r\n + ``\r\n + `Switch Site`\r\n + ``;\r\n } else {\r\n UserMenuHtml += ``\r\n + ``\r\n + `Switch Site`\r\n + ``\r\n + `Can not use this tool while cloning another user`;\r\n }\r\n\r\n UserMenuHtml += ``\r\n + ``\r\n + ``\r\n + `Log out`\r\n + ``\r\n + ``\r\n + `\")`;\r\n UserMenuHtml = EC_Fmt.HtmlStrToElement(UserMenuHtml);\r\n UserMenuHtml.addEventListener(\"click\", (event) => {\r\n const target = event.target.matches(\"ecp-list-item\") || event.target.closest(\"ecp-list-item\");\r\n if (target) {\r\n event.target.closest(\"ecp-menu\").style.display = \"none\";\r\n }\r\n });\r\n return UserMenuHtml;\r\n}\r\n\r\nfunction CreateSwitchDashboardVersionTypeButton(switchVersionTypeContent, isMobile, CurrentSettings) {\r\n let DashboardSetting = null;\r\n if (EC_Fmt.isNull(CurrentSettings) && typeof Settings === \"object\") {\r\n DashboardSetting = Settings;\r\n } else {\r\n DashboardSetting = CurrentSettings;\r\n }\r\n if (typeof DashboardSetting === \"object\" && DashboardSetting.ExistsBetaVersion && switchVersionTypeContent) {\r\n let html;\r\n\r\n if (isMobile) {\r\n html = \"
\"\r\n + \"\"\r\n + \"View Beta Version\"\r\n + \"
\"\r\n + \"
\"\r\n + \"
\"\r\n + \"
\"\r\n + ``\r\n + `
\"\r\n + `${isMobile ? \"\" : \"Beta\"}`\r\n + \"
\"\r\n + \"
\"\r\n + \"
\";\r\n } else {\r\n html = \"
\";\r\n if (!DashboardSetting.EnableBeta) {\r\n html += `Enable Beta`;\r\n } else {\r\n html += `Manage beta`;\r\n }\r\n html += \"
\";\r\n }\r\n\r\n switchVersionTypeContent.innerHTML = html;\r\n\r\n if (!isMobile && !DashboardSetting.EnableBeta && DashboardSetting.ShowBetaDialog) {\r\n CreateEnableBetaDialog();\r\n }\r\n\r\n const OpenManageBeta = document.getElementById(\"OpenManageBeta\");\r\n if (OpenManageBeta) {\r\n OpenManageBeta.addEventListener(\"click\", async () => {\r\n CreateManageBetaDialog(DashboardSetting);\r\n });\r\n }\r\n const switchVersionTypeInput = switchVersionTypeContent.querySelector(\"#switchVersionTypeInput, .ews-menu-item[name='SwitchVersionMenuItem']\");\r\n\r\n if (switchVersionTypeInput) {\r\n switchVersionTypeInput.addEventListener(\"click\", async () => {\r\n // Task 1033298: Adding Google Analytics as a default feature of dashboards\r\n gtag(\"event\", \"switchDashboardVersionType\", { enableBeta: DashboardSetting.EnableBeta });\r\n await EnableBetaVersion(DashboardSetting);\r\n });\r\n }\r\n } else if (switchVersionTypeContent) {\r\n switchVersionTypeContent.innerHTML = \"\";\r\n }\r\n}\r\n\r\nfunction clearDashboardMenuCache() {\r\n // Task 705574: Show More Dashboards button does not respond on iOS Safari\r\n try {\r\n localStorage.removeItem(`DashboardMenuHTML_${parseInt(Math.floor((new Date()) / 86400000))}_${UserID}_${UserType}_${IsImpersonateUser}_Key`);\r\n // Task 916139: Redesigning the public web site with a different menu\r\n localStorage.removeItem(`PublicSiteMenuHTML_${parseInt(Math.floor((new Date()) / 86400000))}_${UserType}`);\r\n } catch (e) {\r\n // Ignore, cookie requirement message will be shown when page refreshes (just after this)\r\n }\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction setPageBreadcrumbTitle(Breadcrumb, BreadcrumbURL, Title, Button) {\r\n let htmlB = \"\";\r\n if (!EC_Fmt.isNull(BreadcrumbURL) && !EC_Fmt.isNull(Breadcrumb)) {\r\n htmlB += `${Breadcrumb} / `;\r\n } else if (!EC_Fmt.isNull(Breadcrumb)) {\r\n htmlB += `${Breadcrumb} / `;\r\n }\r\n htmlB += ``;\r\n if (EC_Fmt.GetPageParameter(\"Release\")?.toLowerCase() === \"false\") {\r\n htmlB += `Draft`;\r\n }\r\n if (Button) {\r\n htmlB += ``;\r\n }\r\n\r\n const PageBreadcrumb_Title = document.getElementById(\"PageBreadcrumb_Title\");\r\n if (PageBreadcrumb_Title) {\r\n PageBreadcrumb_Title.innerHTML = htmlB;\r\n }\r\n}\r\n\r\nfunction WriteDashboardMenuHTML(DashboardMenuHTML) {\r\n // Task 636615: End of day error\r\n const HeaderMenuLoading = Menu.querySelector(\"#HeaderMenuLoading\");\r\n if (HeaderMenuLoading) {\r\n const currentCategoryName = HighlightMenu(DashboardMenuHTML, HeaderMenuLoading);\r\n\r\n HeaderMenuLoading.id = \"\";\r\n HeaderMenuLoading.setAttribute(\"id\", \"\");\r\n\r\n if (currentCategoryName) {\r\n ToggleMenuCategory(currentCategoryName, true);\r\n }\r\n\r\n if (Menu.classList.contains(\"MenuCollapsed\")) {\r\n CollapseAndUnHighlightMenu();\r\n }\r\n\r\n EncompassMobileItem();\r\n }\r\n\r\n const shareButton = Menu.querySelector(\"#ActionButtonShare\");\r\n\r\n if (shareButton) {\r\n shareButton.addEventListener(\"click\", (event) => {\r\n event.preventDefault();\r\n Load_QuicklinkMenu(shareButton, `Home?${EC_Fmt.Get_QueryString(\" \")}`, \"Dashboard\");\r\n });\r\n }\r\n}\r\n\r\n// Task 1058438: Master Task 1058050: mobile when open Side Menu, page is very narrow and still can use\r\nfunction hideAllElements(elements) {\r\n if (elements) {\r\n for (let i = 0; i < elements.length; i++) {\r\n elements[i].style.display = \"none\";\r\n }\r\n }\r\n}\r\n\r\nfunction CollapseAndUnHighlightMenu() {\r\n const highlightedSection = Menu.querySelector(\".CategoryHighlight.Relative\");\r\n if (highlightedSection) {\r\n const expandedSubCategory = highlightedSection.querySelector(\"div[id$='Category']\");\r\n if (expandedSubCategory) {\r\n expandedSubCategory.style.display = \"none\";\r\n }\r\n }\r\n}\r\n\r\nfunction SetRenderTime() {\r\n const loadTime = document.getElementById(\"PageLoadTime\");\r\n if (loadTime) {\r\n loadTime.textContent = `Server Time: ${PageLoadTime} sec`;\r\n document.body.appendChild(EC_Fmt.HtmlStrToElement(`Time taken for Encompass to create and send the page`));\r\n }\r\n\r\n const renderTime = document.getElementById(\"RenderTime\");\r\n if (renderTime) {\r\n // Task 911147: Browser Render time is not accurate on dashboards\r\n renderTime.textContent = `Browser Render: ${Math.round(Math.abs((PageStartMilliseconds - PageEndMilliseconds) / 1000) * 100) / 100} sec`;\r\n document.body.appendChild(EC_Fmt.HtmlStrToElement(`Time taken for your browser to parse and display the page`));\r\n }\r\n\r\n setInternetSpeed();\r\n}\r\n\r\nfunction setInternetSpeed() {\r\n const internetSpeed = document.getElementById(\"InternetSpeed\");\r\n if (internetSpeed) {\r\n const isLocalhost = window.location.hostname === \"localhost\" || window.location.hostname === \"127.0.0.1\";\r\n\r\n if (isLocalhost) {\r\n internetSpeed.innerHTML = \"Internet Speed: ∞ {localhost}\";\r\n } else if (navigator.connection && navigator.connection.downlink) {\r\n if (navigator.connection.downlink >= 10) {\r\n internetSpeed.textContent = \"Internet Speed: 10+ Mbps\";\r\n } else if (navigator.connection.downlink < 0.75) {\r\n internetSpeed.style.backgroundColor = \"red\";\r\n internetSpeed.textContent = `Internet Speed: ${EC_Fmt.Round(navigator.connection.downlink, 2)} Mbps (Very Slow)`;\r\n } else if (navigator.connection.downlink < 2) {\r\n internetSpeed.style.backgroundColor = \"orange\";\r\n internetSpeed.textContent = `Internet Speed: ${EC_Fmt.Round(navigator.connection.downlink, 2)} Mbps (Slow)`;\r\n } else {\r\n internetSpeed.textContent = `Internet Speed: ${EC_Fmt.Round(navigator.connection.downlink, 2)} Mbps`;\r\n }\r\n\r\n if (navigator.connection.rtt > 250) {\r\n if (EC_Fmt.isNull(internetSpeed.style.backgroundColor)) {\r\n internetSpeed.style.backgroundColor = \"orange\";\r\n }\r\n internetSpeed.textContent += ` (High Latency)`;\r\n }\r\n } else {\r\n internetSpeed.textContent = \"Internet Speed: unknown\";\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * @deprecated SubmitTo() is deprecated, it is recommended to put the action on the form directly and submit it like normal\r\n */\r\n// eslint-disable-next-line no-unused-vars\r\nfunction SubmitTo(Id, Url) {\r\n const Form = document.getElementById(Id);\r\n\r\n if (Form) {\r\n Form.setAttribute(\"action\", Url);\r\n Form.submit();\r\n }\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction RegisterPageSizeCallback(Callback) {\r\n if (Callback) {\r\n const CurrentFunction = PageSizeCallback;\r\n\r\n PageSizeCallback = () => {\r\n CurrentFunction();\r\n Callback();\r\n };\r\n }\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction RegisterPageResizeCallback(Callback) {\r\n if (Callback) {\r\n const CurrentFunction = PageResizeCallback;\r\n\r\n PageResizeCallback = () => {\r\n CurrentFunction();\r\n Callback();\r\n };\r\n }\r\n}\r\n\r\nfunction ResizeLayout(NeedScrollToCurrent) {\r\n let AllowResize = true;\r\n\r\n if (EWS?.AllowResize) {\r\n AllowResize = EWS.AllowResize;\r\n }\r\n\r\n if (EC_Fmt.isMobile) {\r\n const userMenu = document.getElementById(\"ews-BC_EWS_UserMenu-menu\");\r\n if (userMenu && !(userMenu.offsetWidth === 0 && userMenu.offsetHeight === 0)) {\r\n EWS.Command.HideMenu(\"BC_EWS_UserMenu\");\r\n EWS.Command.ShowMenu(\"BC_EWS_UserMenu\", document.querySelector(\"#Header .Inner .LabelButton[name=UserMenu]\"));\r\n }\r\n }\r\n\r\n if (AllowResize) {\r\n EWS.windowInnerHeight = window.innerHeight;\r\n EWS.windowInnerWidth = window.innerWidth;\r\n\r\n if (document.body && document.body.style.position !== \"fixed\") {\r\n PageResizeCallback();\r\n SetLayoutHeight(NeedScrollToCurrent, MenuScrollTop, Menu);\r\n }\r\n }\r\n}\r\n\r\nfunction SetLayoutHeight(NeedScrollToCurrent, NewMenuTop, LeftSideMenu) {\r\n if (!LeftSideMenu) {\r\n LeftSideMenu = Menu;\r\n }\r\n\r\n if (LeftSideMenu) {\r\n if (NeedScrollToCurrent) {\r\n let top = 0;\r\n const MainMenuItemHighlight = LeftSideMenu.querySelector(\".MainMenuItemHighlight\");\r\n if (MainMenuItemHighlight) {\r\n top = MainMenuItemHighlight.getBoundingClientRect().top - LeftSideMenu.getBoundingClientRect().top;\r\n }\r\n\r\n if ((top - LeftSideMenu.outerHeight) > LeftSideMenu.scrollTop) {\r\n top -= LeftSideMenu.outerHeight / 2;\r\n\r\n LeftSideMenu.scrollTop = top;\r\n }\r\n } else {\r\n LeftSideMenu.scrollTop = NewMenuTop;\r\n }\r\n }\r\n\r\n if (EC_Fmt.isMobile) {\r\n const myDashboard = document.getElementById(\"Dashboard\");\r\n\r\n if (myDashboard) {\r\n const MainContent = document.getElementById(\"Content\");\r\n if (Menu?.classList.contains(\"MenuOpened\") && !Menu.classList.contains(\"FullMenu\") && !Menu.classList.contains(\"MenuCollapsed\")) {\r\n MainContent.style.display = `none`;\r\n } else {\r\n // Task 1033489: No list of packaging orders displayed\r\n MainContent.style.display = \"flex\";\r\n }\r\n }\r\n\r\n requestAnimationFrame(() => {\r\n document.querySelector(\"meta[name=viewport]\").setAttribute(\"content\", `height=${window.outerHeight},width=device-width,minimum-scale=1.0,maximum-scale=1.0,initial-scale=1.0,user-scalable=no`);\r\n });\r\n } else {\r\n PageSizeCallback();\r\n }\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction LoadKnowledgeHelpAlerts() {\r\n const KnowledgeHelpAlert = document.getElementById(\"KnowledgeHelpAlert\");\r\n\r\n if (KnowledgeHelpAlert) {\r\n const KnowledgeHelpKey = KnowledgeHelpAlert.getAttribute(\"KnowledgeHelpKey\");\r\n const KnowledgeHelpKeyValue = KnowledgeHelpAlert.getAttribute(\"KnowledgeHelpKeyValue\");\r\n\r\n if (EC_Fmt.isNull(KnowledgeHelpKey) || EC_Fmt.isNull(KnowledgeHelpKeyValue)) {\r\n return;\r\n }\r\n\r\n EWS.VerifySession(() => {\r\n fetch(`api?APICommand=GetKnowledgeHelpAlerts&KnowledgeHelpKey=${KnowledgeHelpKey}&KnowledgeHelpKeyValue=${KnowledgeHelpKeyValue}`, {\r\n credentials: \"same-origin\"\r\n }).then(response => response.json()).then((Data) => {\r\n if (Data.TotalCount && Data.TotalCount !== \"0\") {\r\n KnowledgeHelpAlert.style.display = \"inline-table\";\r\n }\r\n });\r\n });\r\n }\r\n}\r\n\r\nfunction HideAllDivs(DestroyContent) {\r\n if (AllowHideAllDivs) {\r\n const hideableDivs = document.getElementsByClassName(\"Hideable\");\r\n if (hideableDivs.length > 0) {\r\n let includesMobileTouchOverItem = false;\r\n\r\n if (window.MobileCurrentInput) {\r\n for (let i = 0; i < hideableDivs.length; i++) {\r\n if (hideableDivs[i].contains(window.MobileCurrentInput)) {\r\n includesMobileTouchOverItem = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (!includesMobileTouchOverItem) {\r\n for (let i = 0; i < hideableDivs.length; i++) {\r\n hideableDivs[i].style.display = \"none\";\r\n hideableDivs[i].classList.remove(\"slide-show\");\r\n if (DestroyContent === true) {\r\n hideableDivs[i].innerHTML = \"\";\r\n }\r\n }\r\n\r\n if (EC_Fmt.isMobile) {\r\n document.getElementById(\"Content\").classList.remove(\"overflow-hidden\");\r\n }\r\n }\r\n }\r\n } else {\r\n AllowHideAllDivs = true;\r\n }\r\n}\r\n\r\nfunction ToggleMainMenu() {\r\n if (UserType !== \"Guest\" && IsImpersonateUser) {\r\n return false;\r\n }\r\n\r\n if (!Menu.classList.contains(\"MenuCollapsed\")) {\r\n if (!EC_Fmt.isMobile) {\r\n document.cookie = \"MenuCollapsed=True;path=/\";\r\n }\r\n SiteMenuToggle(true);\r\n } else {\r\n if (!EC_Fmt.isMobile) {\r\n document.cookie = \"MenuCollapsed=False;path=/\";\r\n }\r\n SiteMenuToggle(false);\r\n }\r\n}\r\n\r\nfunction SiteMenuToggle(visible, LeftSideMenu) {\r\n if (!LeftSideMenu) {\r\n LeftSideMenu = Menu;\r\n }\r\n const BreadCrumbMenu = document.getElementById(\"BreadCrumbMenuArrow\");\r\n Menu.classList.remove(\"open-temp\");\r\n LeftSideMenu.querySelector(\".Content\").removeAttribute(\"style\");\r\n if (BreadCrumbMenu?.querySelector(\"span\")) {\r\n const BreadCrumbMenuIcon = BreadCrumbMenu.querySelector(\"span\");\r\n if (visible) {\r\n BreadCrumbMenuIcon.classList.remove(\"ews-icon-unlock\");\r\n BreadCrumbMenuIcon.classList.add(\"ews-icon-password\");\r\n BreadCrumbMenu.querySelector(\"ecp-list-item-title\").textContent = \"Lock sidebar open\";\r\n } else {\r\n BreadCrumbMenuIcon.classList.remove(\"ews-icon-password\");\r\n BreadCrumbMenuIcon.classList.add(\"ews-icon-unlock\");\r\n BreadCrumbMenu.querySelector(\"ecp-list-item-title\").textContent = \"Auto-collapse sidebar\";\r\n }\r\n }\r\n const Content = document.getElementById(\"Content\");\r\n const headerApplication = document.querySelector(\"#Header .menu-in-header\");\r\n\r\n LeftSideMenu.style.width = \"\";\r\n\r\n const categoryHighlight = document.getElementById(\"MenuInnerContents\").querySelector(\".CategoryHighlight\");\r\n\r\n const mobileMenuMask = LeftSideMenu.parentElement.querySelector(\"#MobileMenuMask\");\r\n if (visible) {\r\n if (EC_Fmt.isMobile) {\r\n // Task 1058438: mobile when open Side Menu, page is very narrow and still can use\r\n const resetPositionAfterAnimationEnd = () => {\r\n if (mobileMenuMask && document.getElementById(\"Menu\").classList.contains(\"MenuCollapsed\")) {\r\n mobileMenuMask.remove();\r\n }\r\n LeftSideMenu.removeEventListener(\"transitionend\", resetPositionAfterAnimationEnd);\r\n };\r\n\r\n LeftSideMenu.addEventListener(\"transitionend\", resetPositionAfterAnimationEnd);\r\n }\r\n if (UserType !== \"Guest\" && !EC_Fmt.isMobile) {\r\n fetch(\"api?APICommand=SetMenuStatus&Collapsed=true\", {\r\n credentials: \"same-origin\"\r\n });\r\n }\r\n LeftSideMenu.classList.add(\"MenuCollapsed\");\r\n LeftSideMenu.classList.remove(\"MenuOpened\");\r\n Content.classList.add(\"MenuCollapsed\");\r\n Content.classList.remove(\"MenuOpened\");\r\n\r\n if (headerApplication && !EC_Fmt.isMobile) {\r\n headerApplication.classList.add(\"MenuCollapsed\");\r\n headerApplication.classList.remove(\"MenuOpened\");\r\n headerApplication.style.width = \"\";\r\n }\r\n\r\n if (categoryHighlight) {\r\n const mainMenuCategory = categoryHighlight.querySelector(\".MainMenuCategory\");\r\n mainMenuCategory.nextElementSibling.style.display = \"none\";\r\n\r\n mainMenuCategory.querySelector(\".ews-icon-emcaretdown\").classList.remove(\"arrowup\");\r\n categoryHighlight.scrollIntoView({ behavior: \"auto\", block: \"center\", inline: \"center\" });\r\n }\r\n } else {\r\n // Task 1058438: mobile when open Side Menu, page is very narrow and still can use\r\n if (EC_Fmt.isMobile) {\r\n if (!mobileMenuMask && !visible) {\r\n const mobileMenuMaskDIV = document.createElement(\"div\");\r\n mobileMenuMaskDIV.id = \"MobileMenuMask\";\r\n mobileMenuMaskDIV.style = \"position:fixed;z-index:199;top:0;left:0;width:100%;height:100%;background-color:var(--neutral-120);opacity:0.08\";\r\n mobileMenuMaskDIV.addEventListener(\"click\", () => { SiteMenuToggle(true); });\r\n LeftSideMenu.parentElement.appendChild(mobileMenuMaskDIV);\r\n }\r\n }\r\n if (UserType !== \"Guest\" && !EC_Fmt.isMobile) {\r\n fetch(\"api?APICommand=SetMenuStatus&Collapsed=false\", {\r\n credentials: \"same-origin\"\r\n });\r\n }\r\n\r\n LeftSideMenu.classList.add(\"MenuOpened\");\r\n LeftSideMenu.classList.remove(\"MenuCollapsed\");\r\n Content.classList.add(\"MenuOpened\");\r\n Content.classList.remove(\"MenuCollapsed\");\r\n\r\n if (headerApplication && !EC_Fmt.isMobile) {\r\n headerApplication.classList.add(\"MenuOpened\");\r\n headerApplication.classList.remove(\"MenuCollapsed\");\r\n }\r\n\r\n if (categoryHighlight) {\r\n categoryHighlight.style.background = \"\";\r\n categoryHighlight.style.boxShadow = \"\";\r\n const mainMenuCategory = categoryHighlight.querySelector(\".MainMenuCategory\");\r\n if (mainMenuCategory.nextElementSibling) {\r\n mainMenuCategory.nextElementSibling.style.display = \"block\";\r\n mainMenuCategory.querySelector(\".ews-icon-emcaretdown\").classList.add(\"arrowup\");\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction HighlightMenu(DashboardMenuHTML, HeaderMenuLoading) {\r\n const dashboardId = EC_Fmt.GetPageParameter(\"DashboardID\");\r\n const tempDiv = document.createElement(\"div\");\r\n\r\n tempDiv.innerHTML = DashboardMenuHTML;\r\n\r\n const currentPrimaryDashboard = tempDiv.querySelector(`.MainMenuPrimaryDashboards[PrimaryDashboardID='${dashboardId}']`);\r\n if (currentPrimaryDashboard) {\r\n currentPrimaryDashboard.classList.add(\"CategoryHighlight\");\r\n }\r\n\r\n const oldCategory = tempDiv.querySelector(\".CategoryHighlight\");\r\n const oldMenuItem = tempDiv.querySelector(\".MainMenuItemHighlight\");\r\n const currentURL = window.location.href.substring(window.location.href.indexOf(\"aspx1\") + 6);\r\n let currentMenuLink = tempDiv.querySelector(`.FavoritesSubcategory a[href*='${currentURL}']`);\r\n\r\n if (!currentMenuLink || currentMenuLink.href.substring(window.location.href.indexOf(\"aspx1\") + 6) !== currentURL) {\r\n currentMenuLink = tempDiv.querySelector(`.MainMenuItem a[href*='Home?DashboardID=${dashboardId}']`);\r\n if (currentMenuLink?.parentElement.classList.contains(\"FavoritesSubcategory\")) {\r\n currentMenuLink = null;\r\n }\r\n } else {\r\n // Task 738573: Edit Dashboard button is grayed out on left side menu and I am the owner.\r\n const dashboardMenuLink = tempDiv.querySelector(`.MainMenuItem:not(.FavoritesSubcategory) a[href*='Home?DashboardID=${dashboardId}']`);\r\n\r\n if (dashboardMenuLink) {\r\n const dashboardEditIDArr = dashboardMenuLink.parentElement.getAttribute(\"dashboardeditidarr\");\r\n\r\n if (dashboardEditIDArr) {\r\n currentMenuLink.parentElement.setAttribute(\"dashboardeditidarr\", dashboardEditIDArr);\r\n }\r\n }\r\n }\r\n\r\n let currentMenuItem = currentMenuLink ? currentMenuLink.parentElement : null;\r\n\r\n if (!currentMenuLink && !currentMenuItem) {\r\n currentMenuItem = tempDiv.querySelector(`.MainMenuItem[dashboardidarr*=\"^${dashboardId}^\"]`);\r\n }\r\n\r\n let currentCategoryName = \"\";\r\n\r\n if (oldCategory) {\r\n const arrow = oldCategory.querySelector(\".arrowup\");\r\n\r\n if (arrow) {\r\n arrow.classList.remove(\"arrowup\");\r\n }\r\n\r\n const oldCategoryHighlight = oldCategory.querySelector(\"div[id*='Category']\");\r\n if (oldCategoryHighlight) {\r\n oldCategoryHighlight.style.display = \"none\";\r\n }\r\n\r\n if (oldMenuItem) {\r\n oldMenuItem.classList.remove(\"MainMenuItemHighlight\");\r\n }\r\n }\r\n\r\n if (currentMenuItem) {\r\n currentMenuItem.classList.add(\"MainMenuItemHighlight\");\r\n currentCategoryName = currentMenuItem.parentElement.id.replace(\"Category\", \"\");\r\n }\r\n\r\n // Task 688388: CRM -> Customer Search Dashboard: Customer Dashboard is Not Taking User Back to Correct Page\r\n const dashboardMenuItemArr = tempDiv.querySelectorAll(\"[dashboardmenufilter]\");\r\n for (let i = 0; i < dashboardMenuItemArr.length; i++) {\r\n const dashboardMenuItem = dashboardMenuItemArr[i];\r\n\r\n let FieldName = \"\";\r\n switch (dashboardMenuItem.getAttribute(\"dashboardmenufilter\")) {\r\n case \"Customer\":\r\n FieldName = \"CustomerID\";\r\n break;\r\n case \"Product\":\r\n FieldName = \"ProductID\";\r\n break;\r\n case \"Chain\":\r\n FieldName = \"ChainID\";\r\n break;\r\n case \"User\":\r\n FieldName = \"UserID\";\r\n break;\r\n case \"Supplier\":\r\n FieldName = \"SupplierID\";\r\n break;\r\n case \"APAccount\":\r\n FieldName = \"APAccountID\";\r\n break;\r\n case \"Route\":\r\n FieldName = \"RouteID\";\r\n break;\r\n }\r\n\r\n if (FieldName !== \"\") {\r\n if (EC_Fmt.isInteger(EC_Fmt.GetPageParameter(FieldName))) {\r\n dashboardMenuItem.href += `&${FieldName}=${EC_Fmt.GetPageParameter(FieldName)}`;\r\n } else if (EC_Fmt.Null2EmptyStr(EC_Fmt.GetPageParameter(\"Parameters\")).indexOf(FieldName) > -1) {\r\n const parameterArr = EC_Fmt.Null2EmptyStr(EC_Fmt.GetPageParameter(\"Parameters\")).split(\"|\");\r\n for (let j = 0; j < parameterArr.length; j++) {\r\n const parsingParameterArr = parameterArr[j].split(\"~\");\r\n if (parsingParameterArr[0].split(\":\")[1] === FieldName) {\r\n dashboardMenuItem.href += `&${FieldName}=${parsingParameterArr[1].split(\":\")[1]}`;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n HeaderMenuLoading.innerHTML += tempDiv.innerHTML;\r\n\r\n return currentCategoryName;\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction ToggleExcelMenu(Button, Name) {\r\n const ExcelMenu = document.getElementById(Name);\r\n\r\n if (ExcelMenu?.offsetWidth === 0 && ExcelMenu.offsetHeight === 0) {\r\n HideAllDivs();\r\n AllowHideAllDivs = false;\r\n\r\n const buttonPosition = Button.getBoundingClientRect();\r\n\r\n ExcelMenu.style.display = \"block\";\r\n ExcelMenu.style.top = `${buttonPosition.top + buttonPosition.height + 3}px`;\r\n ExcelMenu.style.left = `${buttonPosition.left}px`;\r\n ExcelMenu.style.zIndex = \"9999\";\r\n }\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction ShowSwitchDialog() {\r\n if (AuthenticationID > 0) {\r\n EWS.VerifySession(() => {\r\n fetch(`api?APICommand=CreateSiteSwitchDialog&EncompassID=${Distributor}`, {\r\n credentials: \"same-origin\"\r\n }).then(response => response.json()).then((result) => {\r\n // Task 657698: Clone User / Switch Site vulnerability.\r\n if (result.Tips === undefined) {\r\n // Task 1064395: Change the 'Switch site' modal to be an action type dialog\r\n const Dialog = ECP.Dialog.ShowDialog(\"Switch site\", result.content, {\r\n width: 350,\r\n height: 420,\r\n barPosition: \"top\",\r\n confirmButtonTitle: result.cancel,\r\n confirmButtonAction(dialog) {\r\n ECP.Dialog.CloseDialog(dialog);\r\n }\r\n });\r\n\r\n Dialog.querySelector(\".ews-form-content\").style.cssText += \"width:100%;height:100%;position:relative;box-sizing:border-box;user-select:none\";\r\n\r\n Dialog.querySelector(\".ecp-dialog-confirm-button\").classList.add(\"ecp-dialog-cancel-button\");\r\n Dialog.querySelector(\".ecp-dialog-confirm-button\").classList.remove(\"ecp-dialog-confirm-button\");\r\n\r\n Dialog.querySelector(\"input#SiteSearchInput\").addEventListener(\"keydown\", (event) => {\r\n // Task 949378: Switch Site: Change functionality of hitting enter key after typing EncompassID\r\n const ItemArr = Array.from(document.querySelectorAll(\".database-list-item.show\"));\r\n switch (event.key) {\r\n case \"ArrowUp\":\r\n {\r\n if (!EC_Fmt.isNull(ItemArr)) {\r\n let index = ItemArr.indexOf(document.querySelector(\".database-list-item.show.highlight\"));\r\n if (index <= 0) {\r\n index = ItemArr.length - 1;\r\n } else if (index <= (ItemArr.length - 1)) {\r\n index -= 1;\r\n }\r\n for (let i = 0, len = ItemArr.length; i < len; i++) {\r\n ItemArr[i].classList.remove(\"highlight\");\r\n ItemArr[i].childNodes[0].childNodes[1].style = \"color:var(--neutral-70)\";\r\n }\r\n ItemArr[index].classList.add(\"highlight\");\r\n ItemArr[index].childNodes[0].childNodes[1].style = \"color:var(--neutral-10)\";\r\n\r\n if (ItemArr[index].scrollIntoViewIfNeeded) {\r\n ItemArr[index].scrollIntoViewIfNeeded();\r\n } else {\r\n ItemArr[index].scrollIntoView();\r\n }\r\n }\r\n break;\r\n }\r\n case \"ArrowDown\":\r\n {\r\n if (!EC_Fmt.isNull(ItemArr)) {\r\n let index = ItemArr.indexOf(document.querySelector(\".database-list-item.show.highlight\"));\r\n if (index < (ItemArr.length - 1)) {\r\n index += 1;\r\n } else if (index >= (ItemArr.length - 1)) {\r\n index = 0;\r\n }\r\n for (let i = 0, len = ItemArr.length; i < len; i++) {\r\n ItemArr[i].classList.remove(\"highlight\");\r\n ItemArr[i].childNodes[0].childNodes[1].style = \"color:var(--neutral-70)\";\r\n }\r\n ItemArr[index].classList.add(\"highlight\");\r\n ItemArr[index].childNodes[0].childNodes[1].style = \"color:var(--neutral-10)\";\r\n if (ItemArr[index].scrollIntoViewIfNeeded) {\r\n ItemArr[index].scrollIntoViewIfNeeded();\r\n } else {\r\n ItemArr[index].scrollIntoView();\r\n }\r\n }\r\n break;\r\n }\r\n case \"Enter\":\r\n {\r\n if (!EC_Fmt.isNull(ItemArr)) {\r\n const highlightedItem = document.querySelector(\".database-list-item.show.highlight\");\r\n if (highlightedItem) {\r\n EC_Fmt.TriggerEvent(highlightedItem.getElementsByClassName(\"switch-btn\")[0], \"click\");\r\n } else {\r\n EC_Fmt.TriggerEvent(ItemArr[0].getElementsByClassName(\"switch-btn\")[0], \"click\");\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n });\r\n\r\n Dialog.querySelector(\"input#SiteSearchInput\").addEventListener(\"keyup\", (event) => {\r\n switch (event.key) {\r\n case \"ArrowUp\":\r\n case \"Enter\":\r\n case \"ArrowDown\":\r\n {\r\n break;\r\n }\r\n default:\r\n {\r\n SiteSwitchSearch(Dialog, event.target.value);\r\n const ItemArr = Array.from(document.querySelectorAll(\".database-list-item.show\"));\r\n if (ItemArr.length > 0) {\r\n if (ItemArr[0].scrollIntoViewIfNeeded) {\r\n ItemArr[0].scrollIntoViewIfNeeded();\r\n } else {\r\n ItemArr[0].scrollIntoView();\r\n }\r\n }\r\n const highlightedItem = document.querySelector(\".database-list-item.show.highlight\");\r\n if (highlightedItem) {\r\n highlightedItem.childNodes[0].childNodes[1].style = \"color:var(--neutral-70)\";\r\n }\r\n for (let i = 0, len = ItemArr.length; i < len; i++) {\r\n ItemArr[i].classList.remove(\"highlight\");\r\n }\r\n break;\r\n }\r\n }\r\n });\r\n\r\n Dialog.querySelector(\"input#SiteSearchInput\").addEventListener(\"paste\", (event) => {\r\n setTimeout(() => {\r\n EC_Fmt.TriggerEvent(event.currentTarget, \"keyup\");\r\n }, 1);\r\n });\r\n\r\n InitSiteSwitchData(Dialog);\r\n }\r\n });\r\n });\r\n }\r\n}\r\n\r\nlet isDialogDragAttached = false;\r\n\r\n/**\r\n * @deprecated PositionDialog() is no longer supported, please use ECP.Dialog in the SDK instead\r\n */\r\n// eslint-disable-next-line no-unused-vars\r\nfunction PositionDialog(Dialog) {\r\n const Mask = document.getElementById(\"DialogMask\");\r\n const clientWidth = document.documentElement.clientWidth;\r\n const clientHeight = document.documentElement.clientHeight;\r\n let Width;\r\n let Height;\r\n\r\n Mask.style.width = `${clientWidth}px`;\r\n\r\n if (EC_Fmt.isMobile) {\r\n Width = clientWidth;\r\n Height = Dialog.outerHeight + Math.round(clientHeight - Dialog.outerHeight) / 2 - 30;\r\n\r\n if (Height > clientHeight) {\r\n Height = clientHeight;\r\n }\r\n\r\n Mask.style.opacity = \"0.3\";\r\n Dialog.style.overflow = \"auto\";\r\n } else {\r\n Width = Dialog?.offsetWidth;\r\n Height = Dialog?.offsetHeight;\r\n\r\n if (Width > window.outerWidth) {\r\n Width = window.outerWidth;\r\n Dialog.style.overflow = \"auto\";\r\n }\r\n\r\n if (Height > window.outerHeight) {\r\n Height = window.outerHeight;\r\n Dialog.style.overflow = \"auto\";\r\n }\r\n }\r\n\r\n let Top = Math.floor((window.outerHeight / 2) - (Height / 2));\r\n let Left = Math.floor((window.outerWidth / 2) - (Width / 2));\r\n\r\n Top = Math.max(Top, 0);\r\n Left = Math.max(Left, 0);\r\n\r\n Dialog.style.minWidth = `${Width}px`;\r\n Dialog.style.height = `${Height}px`;\r\n Dialog.style.marginLeft = \"0\";\r\n Dialog.style.marginTop = \"0\";\r\n Dialog.style.top = `${Top}px`;\r\n Dialog.style.left = `${Left}px`;\r\n Dialog.style.zIndex = \"100000\";\r\n\r\n const SRDOwner = document.getElementById(\"SRDOwner\");\r\n if (SRDOwner) {\r\n SRDOwner.parentElement.style.height = SRDOwner.outerHeight + 2 * EC_Fmt.Null2ZeroInt(SRDOwner.style.borderTopWidth).replace(\"px\", \"\") + 2 * EC_Fmt.Null2ZeroInt(SRDOwner.style.paddingTop).replace(\"px\", \"\") + 1;\r\n }\r\n\r\n const DialogScrollContent = Dialog.querySelector(\".ScrollContent\");\r\n\r\n if (DialogScrollContent) {\r\n const DialogScrollContentTable = DialogScrollContent.querySelector(\"table\");\r\n if (DialogScrollContentTable) {\r\n DialogScrollContentTable.style.border = \"none\";\r\n const DialogScrollContentCells = DialogScrollContentTable.querySelectorAll(\"td\");\r\n for (let i = 0; i < DialogScrollContentCells.length; i++) {\r\n DialogScrollContentCells[i].style.border = \"none\";\r\n DialogScrollContentCells[i].style.borderBottom = \"1px solid var(--neutral-40)\";\r\n }\r\n }\r\n }\r\n\r\n const dragDialog = (handle) => {\r\n if (isDialogDragAttached) {\r\n return;\r\n }\r\n\r\n let currentDialog;\r\n let startX;\r\n let startY;\r\n\r\n handle.addEventListener(\"mousedown\", (event) => {\r\n currentDialog = Dialog;\r\n startX = event.clientX;\r\n startY = event.clientY;\r\n\r\n document.body.style.webkitUserSelect = \"none\";\r\n });\r\n\r\n const MoveDone = () => {\r\n if (currentDialog) {\r\n currentDialog = null;\r\n startX = 0;\r\n startY = 0;\r\n document.body.style.webkitUserSelect = \"auto\";\r\n }\r\n };\r\n const MoveDialog = (e) => {\r\n if (currentDialog) {\r\n let top = (currentDialog.style.top ? parseInt(currentDialog.style.top.replace(\"px\", \"\")) : 0) + e.clientY - startY;\r\n let left = (currentDialog.style.left ? parseInt(currentDialog.style.left.replace(\"px\", \"\")) : 0) + e.clientX - startX;\r\n const topMaxLimit = window.innerHeight - currentDialog.clientHeight - 3;\r\n const leftMaxLimit = window.innerWidth - currentDialog.clientWidth;\r\n\r\n if (top < 0) {\r\n top = 0;\r\n }\r\n if (top > topMaxLimit) {\r\n top = topMaxLimit;\r\n }\r\n if (left < 0) {\r\n left = 0;\r\n }\r\n if (left > leftMaxLimit) {\r\n left = leftMaxLimit;\r\n }\r\n\r\n currentDialog.style.top = `${top}px`;\r\n currentDialog.style.left = `${left}px`;\r\n\r\n startY = e.clientY;\r\n startX = e.clientX;\r\n }\r\n };\r\n\r\n document.addEventListener(\"mousemove\", MoveDialog);\r\n document.addEventListener(\"mouseup\", MoveDone);\r\n\r\n isDialogDragAttached = true;\r\n };\r\n\r\n const DialogContent = document.querySelector(\".DialogContent\");\r\n\r\n if (DialogContent?.offsetWidth > 0 && DialogContent.offsetHeight > 0) {\r\n const DialogHeader = document.querySelector(\".DialogHeader\");\r\n const DialogFooter = document.querySelector(\".DialogFooter\");\r\n if (EC_Fmt.isMobile) {\r\n DialogContent.style.overflow = \"auto\";\r\n }\r\n\r\n DialogFooter.style.width = DialogContent.offsetWidth;\r\n\r\n dragDialog(DialogHeader);\r\n\r\n Dialog.style.height = DialogContent.outerHeight + DialogHeader.offsetHeight + DialogFooter.offsetHeight;\r\n\r\n if (Dialog.outerHeight > clientHeight) {\r\n DialogContent.style.height = `${Height - DialogHeader.offsetHeight - DialogFooter.offsetHeight}px`;\r\n } else {\r\n DialogContent.style.height = \"auto\";\r\n }\r\n\r\n setTimeout(() => {\r\n Dialog.style.height = DialogContent.outerHeight + DialogHeader.offsetHeight + DialogFooter.offsetHeight;\r\n\r\n if (Dialog.outerHeight > clientHeight) {\r\n DialogContent.height(Height - DialogHeader.offsetHeight - DialogFooter.offsetHeight);\r\n } else {\r\n DialogContent.style.height = \"auto\";\r\n }\r\n }, 1000);\r\n } else {\r\n Dialog.classList.add(\"BoxShowNone\");\r\n\r\n const handle = Dialog.querySelector(\".DialogLayout>thead\");\r\n\r\n dragDialog(handle);\r\n }\r\n}\r\n\r\n/**\r\n * @deprecated HideDialog() is no longer supported, please use ECP.Dialog in the SDK instead\r\n */\r\nfunction HideDialog(Name) {\r\n if (Name === \"UrlDialog\") {\r\n document.getElementById(\"UrlFrame\").setAttribute(\"src\", \"about:blank\");\r\n }\r\n\r\n const DialogMask = document.getElementById(\"DialogMask\");\r\n if (DialogMask) {\r\n DialogMask.style.display = \"none\";\r\n }\r\n const myElement = document.getElementById(Name);\r\n if (myElement) {\r\n myElement.style.display = \"none\";\r\n }\r\n const embedElements = document.getElementsByTagName(\"EMBED\");\r\n for (let i = 0; i < embedElements.length; i++) {\r\n embedElements[i].style.display = \"block\";\r\n }\r\n const pdfIframe = document.getElementById(\"pdfIframe\");\r\n if (pdfIframe) {\r\n pdfIframe.style.display = \"block\";\r\n }\r\n\r\n document.body.style.overflowX = \"auto\";\r\n document.body.style.overflowY = \"auto\";\r\n document.body.style.position = \"static\";\r\n document.body.style.minWidth = \"auto\";\r\n\r\n const ScrollPosition = document.scrollPosition;\r\n\r\n if (ScrollPosition) {\r\n window.scrollTo(ScrollPosition[0], ScrollPosition[1]);\r\n }\r\n}\r\n\r\nfunction ToggleMenuCategory(Category, CollapseOtherCategories) {\r\n const CategoryLayer = document.getElementById(`${Category}Category`);\r\n let Collapsed = false;\r\n\r\n // Task 645555: Creating Bills has Java Script error\r\n if (CategoryLayer !== null) {\r\n if (CategoryLayer.offsetWidth === 0 && CategoryLayer.offsetHeight === 0) {\r\n CategoryLayer.parentElement.classList.add(\"CategoryHighlight\");\r\n } else {\r\n Collapsed = true;\r\n CategoryLayer.parentElement.classList.remove(\"CategoryHighlight\");\r\n }\r\n\r\n if (CollapseOtherCategories) {\r\n const OtherCategories = CategoryLayer.parentElement.parentElement.querySelectorAll(\"div div[id$='Category']\");\r\n for (let i = 0; i < OtherCategories.length; i++) {\r\n const category = OtherCategories[i];\r\n if (category.id && CategoryLayer.id !== category.id) {\r\n if (category.offsetWidth === 0 && category.offsetHeight === 0) {\r\n category.parentElement.classList.remove(\"CategoryHighlight\");\r\n } else {\r\n ToggleMenuCategory(category.id.replace(\"Category\", \"\"), false);\r\n }\r\n }\r\n }\r\n }\r\n\r\n const CategoryArrow = document.getElementById(`${Category}Arrow`);\r\n\r\n if (Collapsed) {\r\n CategoryLayer.style.display = \"none\";\r\n CategoryArrow.classList.remove(\"arrowup\");\r\n } else {\r\n CategoryLayer.style.display = \"block\";\r\n CategoryArrow.classList.add(\"arrowup\");\r\n }\r\n\r\n if (CategoryLayer.id === \"EncompassMobileCategory\" && !Collapsed) {\r\n EncompassMobileItem();\r\n }\r\n }\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction OpenApplicationDownload() {\r\n if (document.getElementById(\"EncompassMobileArrow\")) {\r\n if (Menu.classList.contains(\"MenuCollapsed\")) {\r\n ToggleMainMenu();\r\n }\r\n const EncompassMobileCategory = document.getElementById(\"EncompassMobileCategory\");\r\n if (EncompassMobileCategory && getComputedStyle(EncompassMobileCategory).display === \"none\") {\r\n // Task 425424\r\n Menu.scrollTop = 0;\r\n\r\n ToggleMenuCategory(\"EncompassMobile\", true);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * @deprecated No longer supported, please use EC_Fmt.get_searchOp() directly instead\r\n */\r\nfunction get_searchOp(Value) {\r\n return EC_Fmt.get_searchOp(Value);\r\n}\r\n\r\n/**\r\n * @deprecated No longer supported, please use EC_Fmt.ReplaceAll() directly instead\r\n */\r\nfunction Replace(Value, Find, ReplaceVal) {\r\n return EC_Fmt.ReplaceAll(Value, Find, ReplaceVal);\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction ClockIn() {\r\n let TimeClockActivityID = document.getElementById(\"TimeClockActivityIDHidden\");\r\n if (TimeClockActivityID) {\r\n TimeClockActivityID = TimeClockActivityID.value;\r\n }\r\n if (EC_Fmt.isInteger(TimeClockActivityID)) {\r\n fetch(`Home?LogOnType=ClockIn&TimeClockActivityID=${TimeClockActivityID}`, {\r\n credentials: \"same-origin\"\r\n }).then(response => response.text()).then((Data) => {\r\n if (Data === \"Success\") {\r\n window.location.reload();\r\n } else if (Data === \"Already Clocked In\") {\r\n ECP.Dialog.Alert(\"You are Already Clocked In\");\r\n window.location.reload();\r\n } else {\r\n ECP.Dialog.Alert(\"Unable to Clock In\");\r\n }\r\n });\r\n } else {\r\n ECP.Dialog.Alert(\"You Must Select an Activity\");\r\n }\r\n}\r\n\r\nlet SitesData = {};\r\n\r\nfunction InitSiteSwitchData(dialog) {\r\n SitesData = {};\r\n\r\n EWS.VerifySession(async () => {\r\n // Task 744067: Switch Site:When the switch site is not loaded, an error will be reported when input is input\r\n ECP.Dialog.ShowLoading(\"Loading......\", dialog.firstElementChild);\r\n const myRequest = new ECP.EC_Request(\"GetSiteDatabase\");\r\n myRequest.AddRequestVariable(\"EncompassID\", Distributor);\r\n SitesData = await myRequest.Submit();\r\n\r\n let SitesHTML = ``;\r\n for (let i = 0; i < SitesData.Sites.length; i++) {\r\n const site = SitesData.Sites[i];\r\n SitesHTML += ``\r\n + \"\"\r\n + ` ${site.Name}`\r\n + \"\"\r\n + \"\"\r\n + ` `\r\n + \"\"\r\n + \"\";\r\n }\r\n // Task 443511\r\n if (SitesHTML === \"\") {\r\n SitesHTML += \"No sites available to switch to.\";\r\n }\r\n\r\n dialog.querySelector(\".database-list\").innerHTML = SitesHTML;\r\n ECP.Dialog.HideLoading();\r\n // Task 917191: System Error: JavaScript Error: includes/DefaultNoEchatAll.min.js (1) - Uncaught TypeError: Cannot read property 'length' of undefined\r\n const SiteSearchInput = document.getElementById(\"SiteSearchInput\");\r\n SiteSearchInput.removeAttribute(\"disabled\");\r\n if (SiteSearchInput) {\r\n SiteSearchInput.focus();\r\n }\r\n });\r\n}\r\n\r\nfunction SiteSwitchSearch(dialog, search) {\r\n // Task 752570: User with AllDatabases permission did not get an AuthenticationsSites record created for the Founders database\r\n const myItemArr = dialog.querySelectorAll(`.database-list-item`);\r\n if (!EC_Fmt.isNull(search)) {\r\n for (let i = 0; i < SitesData.Sites.length; i++) {\r\n if (SitesData.Sites[i].Name.toLowerCase().indexOf(search.toLowerCase()) > -1) {\r\n myItemArr[i].classList.add(\"show\");\r\n myItemArr[i].classList.remove(\"hidden\");\r\n } else {\r\n myItemArr[i].classList.add(\"hidden\");\r\n myItemArr[i].classList.remove(\"show\");\r\n }\r\n }\r\n }\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction SwitchSiteButton(site) {\r\n let SiteSwitchForm = document.getElementById(\"SiteSwitchForm\");\r\n if (!SiteSwitchForm) {\r\n SiteSwitchForm = document.createElement(\"form\");\r\n SiteSwitchForm.id = \"SiteSwitchForm\";\r\n SiteSwitchForm.name = \"SiteSwitchForm\";\r\n SiteSwitchForm.action = \"Home?LogOnType=SwitchSite\";\r\n SiteSwitchForm.method = \"post\";\r\n const InputArr = EC_Fmt.HtmlStrToElement(`
`);\r\n SiteSwitchForm.appendChild(InputArr);\r\n document.body.appendChild(SiteSwitchForm);\r\n }\r\n // AuthenticationSiteID\r\n document.getElementById(\"SiteSwitchHidden\").value = SitesData.Sites[site].ID;\r\n // EncompassID\r\n document.getElementById(\"SiteSwitchHiddenName\").value = SitesData.Sites[site].Name;\r\n // Domain\r\n document.getElementById(\"DomainHiddenName\").value = SitesData.Sites[site].URL;\r\n if ((window.event.ctrlKey || window.event.metaKey) && SiteSwitchForm) {\r\n SiteSwitchForm.setAttribute(\"target\", \"_blank\");\r\n }\r\n SiteSwitchForm.submit();\r\n if (SiteSwitchForm) {\r\n SiteSwitchForm.setAttribute(\"target\", \"_self\");\r\n }\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nasync function ViewNewDashboards(ShowUnshared) {\r\n ECP.Dialog.ShowLoading();\r\n const mySetShowUnsharedDashboardRequest = new ECP.EC_Request(\"Dashboard_SetShowUnsharedDashboard\");\r\n mySetShowUnsharedDashboardRequest.AddRequestVariable(\"ShowUnshared\", ShowUnshared);\r\n await mySetShowUnsharedDashboardRequest.Submit();\r\n\r\n clearDashboardMenuCache();\r\n window.location.reload();\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nasync function ShowHiddenDashboards(ShowDashboards) {\r\n ECP.Dialog.ShowLoading();\r\n const mySetShowDefaultDashboardRequest = new ECP.EC_Request(\"Dashboard_SetShowDefaultDashboard\");\r\n mySetShowDefaultDashboardRequest.AddRequestVariable(\"ShowHidden\", ShowDashboards);\r\n await mySetShowDefaultDashboardRequest.Submit();\r\n\r\n clearDashboardMenuCache();\r\n window.location.reload();\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nasync function ShowOtherSiteDashboard(ShowOther) {\r\n ECP.Dialog.ShowLoading();\r\n const mySetShowOtherSiteDashboardRequest = new ECP.EC_Request(\"Dashboard_SetShowOtherSiteDashboard\");\r\n mySetShowOtherSiteDashboardRequest.AddRequestVariable(\"ShowOther\", ShowOther);\r\n await mySetShowOtherSiteDashboardRequest.Submit();\r\n\r\n clearDashboardMenuCache();\r\n window.location.reload();\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction ShowHideFilters() {\r\n const content = document.getElementById(\"FilterContent\");\r\n const TableFilter = document.getElementById(\"TableFilter\");\r\n\r\n if (content && TableFilter) {\r\n if (!(content.offsetWidth === 0 && content.offsetHeight === 0)) {\r\n TableFilter.classList.add(\"ews-icon-plus-square-o\");\r\n TableFilter.classList.remove(\"ews-icon-minus-square-o\");\r\n } else {\r\n TableFilter.classList.add(\"ews-icon-minus-square-o\");\r\n TableFilter.classList.remove(\"ews-icon-plus-square-o\");\r\n }\r\n\r\n content.style.display = (content.style.display === \"none\") ? \"block\" : \"none\";\r\n }\r\n}\r\n\r\n// Task 941168: Quickbooks Online sync shows blank page while running\r\nasync function WriteEncompassMobileItemHtml(clientApplication, clientOS, clientOSVersion) {\r\n const EncompassMobileCategory = document.getElementById(\"EncompassMobileCategory\");\r\n EncompassMobileCategory.innerHTML = \"
loading...
\";\r\n\r\n const myRequest = new ECP.EC_Request(\"GetEncompassMobileList\");\r\n myRequest.AddRequestVariable(\"ClientApplication\", clientApplication);\r\n myRequest.AddRequestVariable(\"ClientOS\", clientOS);\r\n myRequest.AddRequestVariable(\"ClientOSVersion\", clientOSVersion);\r\n\r\n const data = await myRequest.Submit();\r\n let contentHtml = \"\";\r\n\r\n for (let i = 0; i < data.length; i++) {\r\n const item = data[i];\r\n contentHtml += `

${item.ClientApplication}

`;\r\n contentHtml += ``;\r\n }\r\n\r\n EncompassMobileCategory.innerHTML = contentHtml;\r\n}\r\n\r\nfunction EncompassMobileItem() {\r\n const EncompassMobileCategory = document.getElementById(\"EncompassMobileCategory\");\r\n const isEmptyContent = EncompassMobileCategory?.innerHTML.trim() === \"\";\r\n const isMobileDevice = navigator.maxTouchPoints > 0;\r\n\r\n if (EC_Fmt.isAndroid || EC_Fmt.isIOS) {\r\n if (isEmptyContent) {\r\n EncompassMobileCategory.innerHTML = \"
loading...
\";\r\n\r\n // Task 960025: Log in window appears in front of report after using a quick link that has required login = false\r\n if (!IsImpersonateUser) {\r\n EWS.VerifySession(() => {\r\n fetch(\"api?APICommand=GetApplicationsCategoryHtml\", {\r\n credentials: \"same-origin\"\r\n }).then(response => response.text()).then((result) => {\r\n EncompassMobileCategory.innerHTML = result;\r\n });\r\n });\r\n }\r\n }\r\n } else if (navigator.userAgent.toLowerCase().indexOf(\"mac\") > 0 && isMobileDevice) {\r\n if (isEmptyContent) {\r\n WriteEncompassMobileItemHtml(6, 2, 13);\r\n }\r\n } else if (navigator.userAgent.toLowerCase().indexOf(\"chrome\") > 0 && isMobileDevice && !/Windows NT \\d+\\.\\d+; Win\\d+; x\\d+/.test(navigator.userAgent)) {\r\n if (isEmptyContent) {\r\n WriteEncompassMobileItemHtml(7, 3, 7);\r\n }\r\n } else if (document.querySelector(\"#Menu .encompass-mobile\")) {\r\n document.querySelector(\"#Menu .encompass-mobile\").remove();\r\n }\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction ShareButtonHandle(shareButton, event) {\r\n if (shareButton) {\r\n event.stopPropagation();\r\n Load_QuicklinkMenu(shareButton, `Home?${EC_Fmt.Get_QueryString(\" \")}`, \"Dashboard\");\r\n }\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction displayCommandMenu(name, ele, event) {\r\n event.stopPropagation();\r\n EWS.Command.ShowMenu(name, ele);\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction ShowReMindMeDialog() {\r\n EWS.VerifySession(() => {\r\n const dateTimeNow = EC_Fmt.DateTimeParseFormat(EC_Fmt.ScreenFmt(new Date(), ECP.DataType._DateTime));\r\n const content = `
`\r\n + `
Remind Me`\r\n + `
`\r\n + ``\r\n + `
`\r\n + ``\r\n + ` Set a date and time in the dialog below`\r\n + `
and the Remind Me feature`\r\n + `
will send you an eChat at that time`\r\n + `
with a link that takes you`\r\n + `
back to the page you are on right now.`\r\n + `
`\r\n + `
`\r\n + `
`\r\n + `
`\r\n + ` `\r\n + `
`\r\n + `
`\r\n + `
Reminder Date/Time
`\r\n + `
`\r\n + `
${ECP.HTML.DateTimeInput(\"myDateTime\", \"DateTimeField\", true, dateTimeNow, \"Current Date Time\", 1, 290, true, dateTimeNow)}
`;\r\n const dialog = ECP.Dialog.ShowDialog(\"Remind Me\", content, {\r\n width: 350,\r\n height: 280,\r\n confirmButtonTitle: \"Set Reminder\",\r\n async confirmButtonAction() {\r\n ECP.Dialog.ShowLoading();\r\n\r\n const date = dialog.querySelector(\"#DateTimeField\").value;\r\n const title = dialog.querySelector(\"#remind\").value;\r\n if (!date || !title) {\r\n ECP.Dialog.HideLoading();\r\n ECP.Dialog.Alert(\"Please input information.\");\r\n return;\r\n }\r\n\r\n const delayRequest = new ECP.EC_Request(\"SendRemindMeEChatMessage\");\r\n\r\n delayRequest.AddRequestVariable(\"DelayedSendTime\", EC_Fmt.DateTimeParseFormat(date), ECP.EC_Verb.Post);\r\n delayRequest.AddRequestVariable(\"Title\", title, ECP.EC_Verb.Post);\r\n delayRequest.AddRequestVariable(\"Url\", window.location.href, ECP.EC_Verb.Post);\r\n const message = await delayRequest.Submit();\r\n if (message.State === \"Success\") {\r\n // Task 1024699: Remind Me: Use Snackbar notification instead of pop-up after scheduling a reminder\r\n ECP.HTML.Snackbar(\"Remind Me Event has been created.\", \"Success\");\r\n } else {\r\n ECP.Dialog.Alert(message.errors[0].detail);\r\n }\r\n ECP.Dialog.HideLoading();\r\n }\r\n });\r\n });\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction ShowBetaFeedbackDialog() {\r\n if (AuthenticationID > 0) {\r\n EWS.VerifySession(() => {\r\n // Task 1064388: UI Adjustments for the submit feedback modal\r\n const UserName = document.querySelector(\"div [name='UserMenu']\").innerText.split(\"@\")[0];\r\n const content = ``\r\n + `This feedback should pertain to the beta version of this dashboard. For all other questions/comments, please`\r\n + ` create a task.`\r\n + ``\r\n + `
`\r\n + `
`\r\n + ` Dashboard`\r\n + ` ${document.head.querySelector(\"title\").innerText}`\r\n + `
`\r\n + `
`\r\n + ` Your name`\r\n + ` ${UserName} `\r\n + `
`\r\n + `
`\r\n + ` `\r\n + `
`\r\n + `
`;\r\n\r\n const Dialog = ECP.Dialog.ShowDialog(\"Submit beta dashboard feedback\", content, {\r\n width: 560,\r\n barPosition: \"top\",\r\n cancelButtonTitle: \"Cancel\",\r\n confirmButtonTitle: \"Submit Feedback\",\r\n async confirmButtonAction() {\r\n ECP.Dialog.ShowLoading();\r\n // Get Dashboard and UserData\r\n const myDashboardData = new ECP.EC_TableView(\"Dashboards\");\r\n myDashboardData.AddSubTableJoinID(\"Dashboards_Applications\");\r\n myDashboardData.AddSubTableColumn(\"Dashboards_Applications\", \"Application\");\r\n myDashboardData.AddFilter(\"DashboardID\", EC_Fmt.GetPageParameter(\"DashboardID\"), ECP.EC_Operator.Equals);\r\n const results = await myDashboardData.GetResults();\r\n const myRecordSet = new ECP.EC_Recordset(results).Records[0];\r\n\r\n // Create Task\r\n let FeedbackDetail = Dialog.querySelector(\"#FeedbackDetail\").value;\r\n FeedbackDetail += `

User:${UserName}
EncompassID:${Distributor}`;\r\n FeedbackDetail = `Beta Dashboard Feedback:
${FeedbackDetail}`;\r\n\r\n const myRequest = new ECP.EC_Request(\"BI_CreateTask\");\r\n\r\n myRequest.AddRequestVariable(\"Detail\", FeedbackDetail, ECP.EC_Verb.Get);\r\n myRequest.AddRequestVariable(\"Task\", `Beta Dashboard feedback submitted for the ${myRecordSet.Dashboard} dashboard in the ${EC_Fmt.RemoveHTMLFromStr(myRecordSet.ApplicationID)} application`, ECP.EC_Verb.Get);\r\n myRequest.AddRequestVariable(\"AuthenticationID\", myRecordSet.OwnerAuthenticationID_DBValue, ECP.EC_Verb.Get);\r\n myRequest.SetReturnType(ECP.EC_ReturnType.Json);\r\n\r\n const data = await myRequest.Submit();\r\n const TaskID = data.TaskID;\r\n\r\n ECP.Dialog.HideLoading();\r\n if (TaskID) {\r\n ECP.Dialog.Alert(\"A Task has been created\");\r\n } else {\r\n ECP.Dialog.Alert(\"Task failed to be sent to support, please contact support your feedback or log a task at EncompassTech.com\");\r\n }\r\n }\r\n });\r\n });\r\n }\r\n}\r\n\r\nfunction ShowToolTipMessage() {\r\n const tipContainers = document.querySelectorAll(\".tip-container\");\r\n for (let i = 0; i < tipContainers.length; i++) {\r\n tipContainers[i].addEventListener(\"mouseenter\", () => {\r\n const tipMessage = tipContainers[i].querySelector(\".tip-description\");\r\n tipMessage.style.display = \"block\";\r\n // Task 764637: Replace the Top Tips icon and make the pop-up dialog fixed pop-up display position in UI-Kit\r\n if (window.innerWidth - tipContainers[i].getBoundingClientRect().left > 222) {\r\n tipMessage.style.left = 0;\r\n } else {\r\n tipMessage.style.right = 0;\r\n }\r\n });\r\n\r\n tipContainers[i].addEventListener(\"mouseleave\", () => {\r\n const tipMessage = tipContainers[i].querySelector(\".tip-description\");\r\n tipMessage.style.display = \"none\";\r\n });\r\n }\r\n}\r\n\r\n// Task 1060296: Standardizing javascript Dialogs: Need to delete the code for the old SiteMapHeader.js: ShowDialog()\r\n// eslint-disable-next-line no-unused-vars\r\nfunction EditLanguageString() {\r\n let url = `Home?DashboardID=100101&Action=EditColumn&TableEdit=LanguageStrings&Column=TranslationString&SelectMaxRecords=5000&TableName=LanguageStrings&SelectDisplayInParent=LanguageString,Language,OnMobile,TranslationString,TimeUpdated,UpdatedBy,TimeCreated,CreatedBy&Search=Language~${EC_Fmt.userLanguage}|LanguageString~`;\r\n url += encodeURIComponent(Object.keys(EC_Fmt.LocaleStrings).map(key => `${key}`).join(\"^\"));\r\n url += `&`;\r\n window.open(url);\r\n}\r\n\r\nfunction CreateEnableBetaDialog(ShowBeta) {\r\n const EnableBeta = document.getElementById(\"EnableBeta\");\r\n const currentTab = document.querySelector(\".TableViewTabContainer .TableViewPageTab.Active\");\r\n let DashboardName = document.head.querySelector(\"title\").innerText;\r\n let DashboardSetting = null;\r\n if (currentTab?.getAttribute(\"dashboardid\") && currentTab?.getAttribute(\"dashboardid\") !== ECP.CommonDashboards.TableView.toString()) {\r\n DashboardSetting = {\r\n DashboardID: EC_Fmt.Null2ZeroInt(currentTab.getAttribute(\"dashboardid\")),\r\n ExistsBetaVersion: currentTab.getAttribute(\"existsbetaversion\") === \"true\",\r\n EnableBeta: currentTab.getAttribute(\"enablebeta\") === \"true\",\r\n ShowBetaDialog: currentTab.getAttribute(\"showbetadialog\") === \"true\",\r\n BetaType: EC_Fmt.Null2ZeroInt(currentTab.getAttribute(\"betatype\"))\r\n };\r\n DashboardName = currentTab.innerText;\r\n } else {\r\n DashboardSetting = Settings;\r\n }\r\n if (EnableBeta) {\r\n setTimeout(() => {\r\n EnableBeta.style.height = \"0\";\r\n EnableBeta.style.padding = \"0\";\r\n setTimeout(() => {\r\n EnableBeta.remove();\r\n }, 400);\r\n }, 150);\r\n if (ShowBeta) {\r\n const myRequest = new ECP.EC_Request(\"Dashboard_SwitchDashboardVersionType\");\r\n myRequest.AddRequestVariable(\"DashboardID\", DashboardSetting.DashboardID);\r\n myRequest.AddRequestVariable(\"ShowBetaDialog\", !ShowBeta);\r\n myRequest.Submit();\r\n }\r\n } else {\r\n const BetaDescriptions = [\r\n { TypeID: 1, Description: \"Updates to the layout and visuals of each page provide a smooth, intuitive user experience.\", imgUrl: \"https://cdn.e8.co/GlobalDocs/615e5cc60a7aa01c5bbf55e9df19aab0.svg\" },\r\n { TypeID: 2, Description: \"Similar pages, workflows, and views are now grouped together so you can easily find what you need when you need it.\", imgUrl: \"https://cdn.e8.co/GlobalDocs/c77343d1d87be1611180071352903c37.svg\" },\r\n { TypeID: 3, Description: \"Refreshed branding and usability enable seamless flow from page to page.\", imgUrl: \"https://cdn.e8.co/GlobalDocs/11d677d702f87c9653b901b6161d69a1.svg\" },\r\n { TypeID: 4, Description: \"Exciting new features provide enhanced capabilities.\", imgUrl: \"https://cdn.e8.co/GlobalDocs/81c12a7a0a602de8eca65ff4ab30ffb5.svg\" },\r\n { TypeID: 5, Description: \"Important and exclusive data is now more accessible than ever.\", imgUrl: \"https://cdn.e8.co/GlobalDocs/2e27e6ab04d91a9d722a30546379b86e.svg\" }\r\n ];\r\n\r\n const BetaDescription = BetaDescriptions.find(x => x.TypeID === DashboardSetting.BetaType);\r\n\r\n const html = `
`\r\n + `
`\r\n + `
`\r\n + `
Try the beta ${DashboardName}
`\r\n + `
${BetaDescription.Description}
`\r\n + `
`\r\n + `Enable beta`\r\n + `Not right now`\r\n + `
`\r\n + `
`\r\n + `
`;\r\n\r\n document.getElementById(\"EnableBetaBtn\").parentNode.innerHTML += html;\r\n document.getElementById(\"EnableBetaVersion\").addEventListener(\"click\", async () => {\r\n const myRequest = new ECP.EC_Request(\"Dashboard_SwitchDashboardVersionType\");\r\n myRequest.AddRequestVariable(\"DashboardID\", DashboardSetting.DashboardID);\r\n myRequest.AddRequestVariable(\"ShowBetaDialog\", false);\r\n await myRequest.Submit();\r\n await EnableBetaVersion(DashboardSetting);\r\n });\r\n\r\n document.getElementById(\"CancelBetaVersion\").shadowRoot.querySelector(\"Button\").style = \"background:var(--neutral-90);color:var(--neutral-10);border:0\";\r\n requestAnimationFrame(() => {\r\n const enableBetaDialog = document.getElementById(\"EnableBeta\");\r\n enableBetaDialog.style.height = \"\";\r\n enableBetaDialog.style.padding = \"\";\r\n });\r\n }\r\n}\r\n\r\nasync function EnableBetaVersion(DashboardSetting) {\r\n ECP.Dialog.ShowLoading();\r\n\r\n const myRequest = new ECP.EC_Request(\"Dashboard_SwitchDashboardVersionType\");\r\n\r\n myRequest.AddRequestVariable(\"DashboardID\", DashboardSetting.DashboardID);\r\n myRequest.AddRequestVariable(\"EnableBeta\", !DashboardSetting.EnableBeta);\r\n\r\n const data = await myRequest.Submit();\r\n\r\n if (data.status === \"success\") {\r\n window.location.reload();\r\n }\r\n}\r\n\r\nasync function CreateBetaTask(Dialog) {\r\n let FeedbackDetail = Dialog.querySelector(\"#BetaDetail\").value;\r\n\r\n if (FeedbackDetail) {\r\n // Get Dashboard and UserData\r\n const UserName = document.querySelector(\"div [name='UserMenu']\").innerText.split(\"@\")[0];\r\n // EC-10000: Submitting feedback for the Beta is throwing an error when submitting if you select 'Keep Using the Beta' option\r\n const myDashboardData = new ECP.EC_Request(\"Get_Dashboard_Information\");\r\n myDashboardData.AddRequestVariable(\"DashboardID\", EC_Fmt.GetPageParameter(\"DashboardID\"));\r\n\r\n const result = await myDashboardData.Submit();\r\n\r\n if (EC_Fmt.isNull(result.ErrorMessage)) {\r\n FeedbackDetail += `

User:${UserName}
EncompassID:${Distributor}`;\r\n FeedbackDetail = `Beta Dashboard Feedback:
${FeedbackDetail}`;\r\n // Create Task\r\n let TaskTitle = `Beta Dashboard feedback submitted for the ${result.Rows[0].Dashboard} dashboard`;\r\n if (!EC_Fmt.isNull(result.Rows[0].Application)) {\r\n TaskTitle += ` in the ${EC_Fmt.RemoveHTMLFromStr(result.Rows[0].Application)} application`;\r\n }\r\n const myRequest = new ECP.EC_Request(\"BI_CreateTask\");\r\n myRequest.AddRequestVariable(\"Detail\", FeedbackDetail, ECP.EC_Verb.Get);\r\n myRequest.AddRequestVariable(\"Task\", TaskTitle, ECP.EC_Verb.Get);\r\n myRequest.AddRequestVariable(\"AuthenticationID\", result.Rows[0].OwnerAuthenticationID, ECP.EC_Verb.Get);\r\n myRequest.SetReturnType(ECP.EC_ReturnType.Json);\r\n await myRequest.Submit();\r\n } else {\r\n ECP.Dialog.Alert(result.ErrorMessage);\r\n }\r\n }\r\n}\r\n\r\nfunction CreateManageBetaDialog(DashboardSetting) {\r\n const currentTab = document.querySelector(\".TableViewTabContainer .TableViewPageTab.Active\");\r\n let DashboardName = document.head.querySelector(\"title\").innerText;\r\n if (currentTab) {\r\n DashboardName = currentTab.innerText;\r\n }\r\n let htmlB = `Thanks for trying out beta ${DashboardName}! We’re always trying out new things and trying to find new ways to push the envelope.
`;\r\n htmlB += `
Your feedback is invaluable in order to continue providing great software experiences. Please feel free to use the box below to tell us about your experience with beta ${DashboardName}.
`;\r\n htmlB += ``;\r\n const dialog = ECP.Dialog.ShowDialog(\r\n \"Manage beta experience\",\r\n htmlB,\r\n {\r\n width: 390,\r\n height: 490,\r\n barPosition: \"top\",\r\n disableButtons: true\r\n }\r\n );\r\n const footer = dialog.querySelector(\".ecp-dialog-footer\");\r\n htmlB = `Keep using the beta`;\r\n htmlB += `Revert to original`;\r\n footer.innerHTML = htmlB;\r\n\r\n dialog.querySelector(\"#KeepBeta\").addEventListener(\"click\", async () => {\r\n await CreateBetaTask(dialog);\r\n ECP.Dialog.CloseDialog(dialog);\r\n });\r\n\r\n dialog.querySelector(\"#RevertOriginal\").addEventListener(\"click\", async () => {\r\n await CreateBetaTask(dialog);\r\n await EnableBetaVersion(DashboardSetting);\r\n });\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction refreshMenu() {\r\n EWS.ClearMenuCache(() => {\r\n clearDashboardMenuCache();\r\n window.location.reload(true);\r\n });\r\n}\r\n","\"use strict\";\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction OnClick_ToggleCheckboxes(Value, InputForm) {\r\n const form = document.getElementById(InputForm);\r\n if (form) {\r\n const checkboxes = form.querySelectorAll(\"input[type='checkbox']\");\r\n for (let i = 0; i < checkboxes.length; i++) {\r\n checkboxes[i].checked = Value;\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * @deprecated OnClick_ToggleCheckboxesBarcodes() is deprecated, use ecp-checkbox instead\r\n */\r\nfunction OnClick_ToggleCheckboxesBarcodes(Value, InputForm) {\r\n const form = document.getElementById(InputForm);\r\n if (form) {\r\n const checkboxes = form.querySelectorAll(\"input[type='checkbox']\");\r\n for (let i = 0; i < checkboxes.length; i++) {\r\n checkboxes[i].checked = Value;\r\n // Task 660029: Bar Codes: Select all button does not select all.\r\n if (checkboxes[i].value) {\r\n ToggleCheckboxes(checkboxes[i].value);\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction ToggleCheckboxes(ID) {\r\n if (ID === \"default\" || ID === \"on\") {\r\n // Skip\r\n } else if (document.getElementById(`${ID}_checkbox`).checked === true) {\r\n document.getElementById(`${ID}_textbox`).value = \"1\";\r\n } else {\r\n document.getElementById(`${ID}_textbox`).value = \"\";\r\n }\r\n}\r\n\r\n/**\r\n * @deprecated ToggleTextboxes() is deprecated, use ecp-checkbox instead\r\n */\r\nfunction ToggleTextboxes(ID) {\r\n // Task 348479\r\n const inputTextBox = document.getElementById(`${ID}_textbox`);\r\n EC_Fmt.InputFmt(inputTextBox, ECP.DataType._Integer, 12, false);\r\n\r\n if (inputTextBox.value !== \"\") {\r\n document.getElementById(`${ID}_checkbox`).checked = true;\r\n } else {\r\n document.getElementById(`${ID}_checkbox`).checked = false;\r\n }\r\n}\r\n\r\n/**\r\n * @deprecated OnClick_CheckCheckboxes() is deprecated, use ecp-checkbox instead\r\n */\r\nfunction OnClick_CheckCheckboxes(InputForm) {\r\n let IsChecked = false;\r\n const InputFormElement = document.getElementById(InputForm);\r\n\r\n if (InputFormElement != null) {\r\n const InputElements = InputFormElement.querySelectorAll(\"input[type='checkbox']\");\r\n for (let i = 0; i < InputElements.length; i++) {\r\n if (InputElements[i].checked) {\r\n IsChecked = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (IsChecked) {\r\n InputFormElement.submit();\r\n } else {\r\n ECP.Dialog.Alert(\"You must first select at least one record.\");\r\n }\r\n\r\n return IsChecked;\r\n}\r\n\r\n/**\r\n * @deprecated OnClick_CheckRadioButton() is deprecated, use ecp-checkbox instead\r\n */\r\nfunction OnClick_CheckRadioButton(InputForm) {\r\n document.getElementById(InputForm).submit();\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction OnClick_CheckAll(checkbox) {\r\n const tableID = checkbox.closest(\"table\").id;\r\n const InputElements = document.getElementById(tableID).querySelectorAll(\"input[type='checkbox']\");\r\n for (let i = 0; i < InputElements.length; i++) {\r\n InputElements[i].checked = checkbox.checked;\r\n }\r\n}\r\n","\"use strict\";\r\n\r\nconst SocketUtil = (function () {\r\n const MainPageControllerClass = function () {\r\n const _this = this;\r\n this.socket = null;\r\n this.debug = false;\r\n this.pageGuid = \"\";\r\n this.EventDic = {};\r\n this.Alone = false;\r\n this.AloneSessionID = null;\r\n this.AloneSocketState = null;\r\n this.ConnectTime = null;\r\n this.DisconnectTime = null;\r\n this.storageErrorCount = 0;\r\n // Task 991572: API Security Check: API tokens for RequireInstallation=False publishers should not be in the javascript.\r\n this.model = 1;\r\n let firstInit = true;\r\n let socketServerUrl = null;\r\n let timerHandler = null;\r\n const sendCallback = {};\r\n let sessionExpireCount = 0; // limit 10\r\n let connectCheckTimer = null;\r\n const apiUrl = document.domain;\r\n let timeoutConnectThread;\r\n let createGroupCache = {};\r\n let createGroupCacheTime = 0;\r\n\r\n this.TransferType = {\r\n Self: 0,\r\n All: 1,\r\n Other: 2,\r\n Room: 3,\r\n DistributorAll: 4,\r\n // Task 1033584: Echat SDK: Parament name is confuse\r\n CurrentDistributor: 4\r\n };\r\n\r\n this.Command = {\r\n Ping: 0,\r\n Message: 1,\r\n ReadGroupMessage: 2,\r\n WriteState: 3,\r\n GroupChange: 4,\r\n UserAvailability: 5,\r\n ScreenShare: 6,\r\n RTCMessage: 7,\r\n DeepLearning: 8,\r\n SupportGroup: 9,\r\n WMSMessage: 10, // WMS\r\n EDBLClient: 11, // EDBL\r\n WCSMessage: 12, // WCS\r\n WCSAlert: 13, // WCS\r\n TaskCustomerIDChange: 14,\r\n MessageRecalled: 15,\r\n ReadTask: 16,\r\n TaskChange: 17,\r\n HandoffMessage: 18, // DTC\r\n // Task 1146167: Create new echat message type\r\n PerformanceTest: 19 // Release Management\r\n };\r\n\r\n this.GroupType = {\r\n Silence: 0,\r\n System: 1,\r\n Message: 2,\r\n Support: 3,\r\n Task: 4\r\n };\r\n\r\n this.ErrorCode = {\r\n JsonError: -2,\r\n HttpError: -1,\r\n NoError: 0,\r\n LoginFailed: 1000,\r\n SessionExpire: 1001,\r\n ECPSessionExpire: 1002,\r\n ECPSessionError: 1003,\r\n NoPermission: 1004,\r\n ErrorData: 1005,\r\n ErrorParameter: 1006,\r\n NoAction: 1007,\r\n NoGroup: 1008,\r\n ActionError: 1009,\r\n RedisSaveError: 2000,\r\n RedisQueryError: 2001,\r\n SNSPushError: 3000,\r\n SNSReceiveError: 3001,\r\n SocketServerError: 4000,\r\n UpgradeDataError: 5000,\r\n UpgradeSaveError: 5001,\r\n ECP_APITimeOut: 7005\r\n };\r\n\r\n this.SocketState = {\r\n Expire: \"expire\",\r\n Connect: \"connect\",\r\n Reconnecting: \"reconnecting\",\r\n Reconnect: \"reconnect\",\r\n Disconnect: \"disconnect\",\r\n Error: \"error\"\r\n };\r\n\r\n this.ModelType = {\r\n ECPSession: 1,\r\n SocketSession: 2\r\n };\r\n\r\n const consoleError = function (message) {\r\n if (message !== null) {\r\n ECP.Dialog.Alert(message);\r\n }\r\n };\r\n\r\n const getTimeStamp = function () {\r\n return (new Date()).getTime();\r\n };\r\n\r\n const writeLocalStorage = function (key, value) {\r\n try {\r\n window.localStorage.setItem(key, value);\r\n } catch (e) {\r\n // Task 951021: JavaScript Error: includes/DefaultAll.min.js (1) - uncaught exception: QuotaExceededError. use 14.22KB\r\n if (e.name === \"QuotaExceededError\") {\r\n if (_this.storageErrorCount < 2) {\r\n _this.storageErrorCount++;\r\n let sizeStore = 0;\r\n if (window.localStorage) {\r\n for (let i = 0, len = localStorage.length; i < len; i++) {\r\n sizeStore += window.localStorage.getItem(window.localStorage.key(i)).length;\r\n }\r\n }\r\n\r\n const tip = `eChat initialization failed(${_this.storageErrorCount}). Error: local storage quota exceeded(${(sizeStore / 1024).toFixed(2)}KB)`;\r\n if (_this.storageErrorCount === 1) {\r\n window.localStorage.clear();\r\n } else {\r\n _this.dispose(tip);\r\n }\r\n }\r\n } else {\r\n throw e;\r\n }\r\n }\r\n };\r\n\r\n const refreshPageGuid = function () {\r\n if (!_this.Alone) {\r\n writeLocalStorage(\"PageGuid\", _this.pageGuid);\r\n }\r\n };\r\n\r\n const trigger = function (event, args, isStorage) {\r\n if (_this.EventDic[event]) {\r\n const events = Object.values(_this.EventDic[event]);\r\n for (let i = 0, len = events.length; i < len; i++) {\r\n events[i](args, isStorage);\r\n }\r\n }\r\n };\r\n\r\n const changeSocketState = function (state) {\r\n trigger(state, null, false);\r\n if (_this.Alone) {\r\n _this.AloneSocketState = state;\r\n } else {\r\n writeLocalStorage(\"SocketState\", `${state}_${getTimeStamp()}`);\r\n }\r\n };\r\n\r\n const guid = function () {\r\n const s = [];\r\n const hexDigits = \"0123456789abcdef\";\r\n for (let i = 0; i < 36; i++) {\r\n const index = Math.floor(Math.random() * 0x10);\r\n s[i] = hexDigits.substring(index, index + 1);\r\n }\r\n s[14] = \"4\";\r\n const index = (s[19] & 0x3) | 0x8;\r\n s[19] = hexDigits.substring(index, index + 1);\r\n s[8] = \"-\";\r\n s[13] = \"-\";\r\n s[18] = \"-\";\r\n s[23] = \"-\";\r\n return s.join(\"\");\r\n };\r\n\r\n const checkPageGuid = function () {\r\n if (_this.Alone) {\r\n return true;\r\n }\r\n return window.localStorage.getItem(\"PageGuid\") === _this.pageGuid;\r\n };\r\n\r\n const getCookie = function (name) {\r\n const arr = document.cookie.match(new RegExp(`(^| )${name}=([^;]*)(;|$)`));\r\n if (arr) {\r\n return decodeURIComponent(arr[2]);\r\n }\r\n return null;\r\n };\r\n\r\n // Task 967961: eChat web servers are hitting the load balancers too frequently\r\n const getOldSessionID = function () {\r\n let SessionID = \"\";\r\n if (_this.Alone) {\r\n return SessionID;\r\n }\r\n try {\r\n const LastSocketInfoJson = window.localStorage.getItem(\"LastSocketInfo\");\r\n if (LastSocketInfoJson) {\r\n const LastSocketInfo = JSON.parse(LastSocketInfoJson);\r\n if (LastSocketInfo?.SocketSessionID !== \"Expire\") {\r\n const time = getTimeStamp() - LastSocketInfo.SessionTime;\r\n const email = getCookie(\"Email\");\r\n const encompassSessionID = getCookie(\"EncompassSessionID\");\r\n // Task 985392: After switch the test site, no eChat messages can be received.\r\n const encompassid = getCookie(\"EncompassID\");\r\n const currEncompassID = encompassid && encompassid === LastSocketInfo.EncompassID;\r\n const currEmail = email && email === LastSocketInfo.Email;\r\n if (currEncompassID && currEmail && encompassSessionID === LastSocketInfo.EncompassSessionID && time < 60 * 60 * 1000) {\r\n SessionID = LastSocketInfo.SocketSessionID;\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n // Error caught\r\n }\r\n\r\n return SessionID;\r\n };\r\n\r\n this.Reconnect = function (memo) {\r\n _this.dispose(`Reconnect: ${memo}`);\r\n refreshPageGuid();\r\n _this.webSocketConnect(`reconnect ${memo}`);\r\n };\r\n\r\n this.on = function (event, callback) {\r\n if (!_this.EventDic[event]) {\r\n _this.EventDic[event] = [callback];\r\n } else {\r\n _this.EventDic[event].push(callback);\r\n }\r\n };\r\n\r\n const getEChatServerUrl = function () {\r\n return new Promise(((resolve, reject) => {\r\n if (typeof (SocketServerUrl) !== \"undefined\") {\r\n resolve(SocketServerUrl);\r\n } else {\r\n const fun = function () {\r\n const myRequest = new ECP.EC_Request(SalesComm_GetEChatNewServer);\r\n myRequest.SetReturnType(ECP.EC_ReturnType.Json);\r\n myRequest.Submit().then((jsonObj) => {\r\n if (!jsonObj.errors && jsonObj.Url) {\r\n window.SocketServerUrl = jsonObj.Url;\r\n resolve(SocketServerUrl);\r\n } else if (jsonObj.status && jsonObj.status === 401) {\r\n changeSocketState(_this.SocketState.Expire);\r\n } else {\r\n reject({\r\n ErrorCode: jsonObj.errors[0].detail,\r\n Detail: `ajax error. ${jsonObj.errors[0].detail}`\r\n });\r\n }\r\n });\r\n }.catch((error) => {\r\n reject({\r\n ErrorCode: SocketUtil.ErrorCode.HttpError,\r\n ErrorMessage: error.message\r\n });\r\n });\r\n if (typeof (EWS) !== \"undefined\" && _this.model === _this.ModelType.ECPSession) {\r\n EWS.Ready(() => {\r\n EWS.VerifySession(() => {\r\n fun();\r\n });\r\n });\r\n } else {\r\n fun();\r\n }\r\n }\r\n }));\r\n };\r\n\r\n const refreshSocketSession = function (SocketSessionID) {\r\n if (_this.Alone) {\r\n _this.AloneSessionID = SocketSessionID;\r\n } else {\r\n writeLocalStorage(\"SocketSessionID\", SocketSessionID);\r\n const email = getCookie(\"Email\");\r\n const encompassid = getCookie(\"EncompassID\");\r\n const encompassSessionID = getCookie(\"EncompassSessionID\");\r\n if (SocketSessionID !== \"Expire\") {\r\n writeLocalStorage(\"LastSocketInfo\", JSON.stringify({\r\n SessionTime: getTimeStamp(),\r\n SocketSessionID,\r\n Email: email,\r\n EncompassID: encompassid,\r\n EncompassSessionID: encompassSessionID\r\n }));\r\n }\r\n }\r\n };\r\n\r\n const sessionExpireReconnect = function () {\r\n _this.dispose(\"sessionExpireReconnect\");\r\n if (_this.model === _this.ModelType.ECPSession) {\r\n if (sessionExpireCount < 10) {\r\n sessionExpireCount++;\r\n setTimeout(() => {\r\n _this.Reconnect(\"session expire reconnect.\");\r\n }, 1000);\r\n } else {\r\n consoleError(\"Session Expire Limit 10\");\r\n }\r\n }\r\n\r\n TriggerSessionExpireEvent(\"sessionExpireReconnect\");\r\n };\r\n\r\n const TriggerSessionExpireEvent = function (memo) {\r\n try {\r\n trigger(\"SessionExpire\", memo, false);\r\n } catch (e) {\r\n consoleError(e);\r\n }\r\n };\r\n\r\n this.api = function (action, data) {\r\n return new Promise(((resolve, reject) => {\r\n const formData = new FormData();\r\n if (data) {\r\n const keys = Object.keys(data);\r\n for (let i = 0, len = keys.length; i < len; i++) {\r\n let postValue = data[keys[i]];\r\n if (postValue === undefined || postValue === null) {\r\n postValue = \"\";\r\n }\r\n formData.append(keys[i], postValue);\r\n }\r\n }\r\n\r\n if (typeof (ECPVersion) !== \"undefined\") {\r\n formData.append(\"ClientVersion\", ECPVersion);\r\n }\r\n\r\n if (this.AloneSessionID) {\r\n formData.append(\"AloneSessionID\", true);\r\n }\r\n\r\n getEChatServerUrl().then((requestUrl) => {\r\n if (!requestUrl) {\r\n reject({\r\n ErrorCode: SocketUtil.ErrorCode.HttpError,\r\n ErrorMessage: \"setting 549 is null\"\r\n });\r\n }\r\n if (action === \"VerifySession\") {\r\n requestUrl += `?Action=${action}`;\r\n } else {\r\n const SocketSessionID = _this.getSessionID();\r\n if (SocketSessionID === \"Expire\" || !SocketSessionID) {\r\n // Task 1047426: Change message from Session Expire to Session Expired\r\n consoleError(`${action}_Fail Session Expired`);\r\n reject(\"Session Expired\");\r\n return;\r\n }\r\n requestUrl += `?SessionID=${SocketSessionID}&Action=${action}`;\r\n }\r\n\r\n fetch(requestUrl, {\r\n cache: \"no-store\",\r\n credentials: \"same-origin\",\r\n method: \"post\",\r\n body: formData\r\n }).then((response) => {\r\n response.json().then((jsonObj) => {\r\n if (jsonObj.Status) {\r\n resolve(jsonObj.Data);\r\n } else {\r\n switch (jsonObj.ErrorCode) {\r\n case SocketUtil.ErrorCode.ECPSessionExpire: // ECP session Expired\r\n if (_this.model === _this.ModelType.SocketSession) {\r\n TriggerSessionExpireEvent(\"ECPSessionExpire\");\r\n } else if (typeof (EWS) !== \"undefined\") {\r\n EWS.Ready(() => {\r\n EWS.VerifySession();\r\n });\r\n }\r\n consoleError(\"ECP Session Expired\");\r\n const SocketSessionID = _this.getSessionID();\r\n if (SocketSessionID !== \"Expire\") {\r\n changeSocketState(_this.SocketState.Expire);\r\n }\r\n\r\n reject({\r\n ErrorCode: jsonObj.ErrorCode,\r\n ErrorMessage: \"Session Expired\"\r\n });\r\n break;\r\n case SocketUtil.ErrorCode.SessionExpire:// EChat session Expired\r\n if (checkPageGuid() && _this.checkConnected()) {\r\n sessionExpireReconnect();\r\n } else {\r\n refreshSocketSession(\"Expire\");\r\n }\r\n consoleError(`${action}_Fail Session Expired`);\r\n reject({\r\n ErrorCode: jsonObj.ErrorCode,\r\n ErrorMessage: \"Session Expired\"\r\n });\r\n break;\r\n default:\r\n consoleError(`${action}_Fail ajax error. ${jsonObj.ErrorCode} ${jsonObj.ErrorMessage} ${jsonObj.StackTrace}`);\r\n reject({\r\n ErrorCode: jsonObj.ErrorCode,\r\n ErrorMessage: jsonObj.ErrorMessage\r\n });\r\n }\r\n }\r\n }).catch((error) => {\r\n consoleError(error);\r\n reject({\r\n ErrorCode: SocketUtil.ErrorCode.JsonError,\r\n ErrorMessage: error.message\r\n });\r\n });\r\n }).catch((error) => {\r\n reject({\r\n ErrorCode: SocketUtil.ErrorCode.HttpError,\r\n ErrorMessage: error.message\r\n });\r\n });\r\n }).catch((error) => {\r\n reject({\r\n ErrorCode: SocketUtil.ErrorCode.HttpError,\r\n ErrorMessage: error.message\r\n });\r\n });\r\n }));\r\n };\r\n\r\n this.createGroup = function (UserList, GroupType, DisableCache) {\r\n let promise;\r\n if (DisableCache || typeof (EC_Fmt) === \"undefined\" || typeof (EC_Fmt.MD5) === \"undefined\") {\r\n promise = _this.api(\"CreateMessageGroup2006\", { UserList, GroupType });\r\n } else {\r\n // Task 1050785: CreateMessageGroup2006_Fail ajax error. 1012 Request rate is too fast\r\n promise = new Promise((resolve, reject) => {\r\n if (UserList) {\r\n const time = getTimeStamp();\r\n if (time - createGroupCacheTime > 60000) {\r\n createGroupCacheTime = time;\r\n createGroupCache = {};\r\n }\r\n\r\n const md5 = EC_Fmt.MD5(UserList);\r\n const cacheKey = `${md5}_${GroupType}`;\r\n const MessageGroupKey = createGroupCache[cacheKey];\r\n if (MessageGroupKey) {\r\n resolve(MessageGroupKey);\r\n } else {\r\n _this.api(\"CreateMessageGroup2006\", { UserList, GroupType }).then((data) => {\r\n if (data) {\r\n createGroupCache[cacheKey] = data;\r\n }\r\n resolve(data);\r\n }).catch((error) => {\r\n reject(error);\r\n });\r\n }\r\n } else {\r\n reject(\"UserList is null\");\r\n }\r\n });\r\n }\r\n\r\n return promise;\r\n };\r\n\r\n // SendMessage\r\n this.send = function (messagePackage, success, fail) {\r\n if (!messagePackage || !messagePackage.MessageGroupID) {\r\n throw new Error(\"MessageGroupID is null\");\r\n } else {\r\n if (!messagePackage.event_id) {\r\n messagePackage.event_id = guid();\r\n }\r\n\r\n if (checkPageGuid()) {\r\n if (_this.checkConnected()) {\r\n try {\r\n const messageObj = {\r\n C: messagePackage.Command,\r\n M: messagePackage.MessageBody,\r\n G: messagePackage.MessageGroupID,\r\n TC: Date.now(),\r\n T: messagePackage.Transfer,\r\n P: messagePackage.Push,\r\n S: messagePackage.Save,\r\n D: messagePackage.DataInfo\r\n };\r\n\r\n _this.socket.emit(\"message\", messageObj, (ackMessage, error) => {\r\n if (error) {\r\n if (typeof (fail) === \"function\") {\r\n fail(error.message);\r\n }\r\n } else if (typeof (success) === \"function\") {\r\n if (ackMessage) {\r\n success({\r\n MessageID: ackMessage.I,\r\n TimeCreated: ackMessage.TC\r\n });\r\n } else {\r\n consoleError(\"ackMessage is null\");\r\n }\r\n }\r\n });\r\n } catch (e) {\r\n if (typeof (fail) === \"function\") {\r\n fail(e.message);\r\n }\r\n consoleError(e);\r\n }\r\n } else {\r\n if (typeof (fail) === \"function\") {\r\n // Task 739314: eChat Server: Change 'eChat Unconnected' error to 'eChat Disconnected'\r\n fail(\"eChat Disconnected\");\r\n }\r\n consoleError(\"eChat Disconnected\");\r\n }\r\n } else if (!messagePackage.isStorage) {\r\n sendCallback[messagePackage.event_id] = { success, fail };\r\n writeLocalStorage(\"SendMessage\", JSON.stringify(messagePackage));\r\n }\r\n }\r\n };\r\n\r\n this.checkConnected = function () {\r\n if (_this.socket) {\r\n return _this.socket.connected;\r\n }\r\n return false;\r\n };\r\n\r\n // ManualDisconnection\r\n this.dispose = function () {\r\n if (_this.checkConnected()) {\r\n _this.socket.disconnect();\r\n // Task 921643: The Socket Disconnect event should not be triggered when the page is first opened\r\n } else if (_this.GetSocketState() !== _this.SocketState.Disconnect) {\r\n changeSocketState(_this.SocketState.Disconnect);\r\n }\r\n\r\n if (_this.socket) {\r\n _this.socket.destroy();\r\n _this.socket = null;\r\n }\r\n };\r\n\r\n this.getSessionID = function () {\r\n if (_this.Alone) {\r\n return _this.AloneSessionID;\r\n }\r\n return window.localStorage.getItem(\"SocketSessionID\");\r\n };\r\n\r\n // Task 1111643: EChat panel displays 'Session Expire'.\r\n const getSocketSession = function () {\r\n return new Promise(((resolve, reject) => {\r\n const isGuest = getCookie(\"Guest\");\r\n const encompassID = getCookie(\"EncompassID\");\r\n const encompassDBServer = getCookie(\"EncompassDBServer\");\r\n const encompassSessionID = getCookie(\"EncompassSessionID\");\r\n let obj = {};\r\n let getOldSessionObj = {};\r\n if (encompassID && encompassID !== \"\") {\r\n obj = {\r\n EncompassDBServer: encompassDBServer,\r\n EncompassSessionID: encompassSessionID,\r\n EncompassID: encompassID,\r\n Platform: 2\r\n };\r\n getOldSessionObj = {\r\n EncompassDBServer: encompassDBServer,\r\n EncompassSessionID: encompassSessionID,\r\n EncompassID: encompassID,\r\n SessionID: getOldSessionID(),\r\n Platform: 2\r\n };\r\n }\r\n if (_this.model === SocketUtil.ModelType.SocketSession) {\r\n const connectionString = getCookie(\"SocketConnectionString\");\r\n const arr = connectionString ? connectionString.split(\"^\") : [];\r\n if (arr[0] && arr[1]) {\r\n resolve({\r\n SocketSessionID: arr[0],\r\n SocketServerURL: arr[1]\r\n });\r\n } else {\r\n changeSocketState(_this.SocketState.Expire);\r\n reject({\r\n ErrorCode: SocketUtil.ErrorCode.SessionExpire,\r\n ErrorMessage: \"Socket Session Empty\"\r\n });\r\n }\r\n } else if (isGuest === \"True\") {\r\n changeSocketState(_this.SocketState.Expire);\r\n reject({\r\n ErrorCode: SocketUtil.ErrorCode.ECPSessionExpire,\r\n ErrorMessage: \"Session Expired\"\r\n });\r\n } else if (typeof (EWS) !== \"undefined\") {\r\n EWS.Ready(() => {\r\n // Task 758601: After the Mac network is disconnected and reconnected, the eChat web client cannot automatically reconnect\r\n if (!navigator.onLine) {\r\n reject({\r\n ErrorCode: SocketUtil.ErrorCode.HttpError,\r\n ErrorMessage: \"No Internet Connection\"\r\n });\r\n } else {\r\n EWS.VerifySession(() => {\r\n _this.api(\"VerifySession\", obj).then((config) => {\r\n resolve({\r\n SocketServerURL: config.SocketServerURL,\r\n SocketSessionID: config.SocketSessionID\r\n });\r\n }).catch((e) => {\r\n reject(e);\r\n });\r\n });\r\n }\r\n });\r\n } else {\r\n _this.api(\"VerifySession\", getOldSessionObj).then((config) => {\r\n resolve({\r\n SocketServerURL: config.SocketServerURL,\r\n SocketSessionID: config.SocketSessionID\r\n });\r\n }).catch((e) => {\r\n reject(e);\r\n });\r\n }\r\n }));\r\n };\r\n\r\n const getSocketIO = function () {\r\n return new Promise((resolve) => {\r\n if (typeof (io) !== \"function\") {\r\n const script = document.createElement(\"script\");\r\n // Task 718597: eChat disconnected: socket.js does not load\r\n script.src = \"https://cdn.e8.co/GlobalDocs/socket.io.js\";\r\n script.onload = function () {\r\n resolve();\r\n };\r\n\r\n const firstScript = document.getElementsByTagName(\"script\")[0];\r\n firstScript.parentNode.insertBefore(script, firstScript);\r\n } else {\r\n resolve();\r\n }\r\n });\r\n };\r\n\r\n const bindEvent = function (SocketSessionID) {\r\n if (firstInit) {\r\n const onunloadFunction = window.onunload;\r\n window.onunload = function () {\r\n if (checkPageGuid()) {\r\n clearInterval(timerHandler);\r\n timerHandler = null;\r\n _this.dispose(\"onunload\");\r\n\r\n changeSocketState(_this.SocketState.Disconnect);\r\n if (!_this.Alone) {\r\n writeLocalStorage(\"SocketTimer\", \"\");\r\n }\r\n }\r\n\r\n if (typeof onunloadFunction === \"function\") {\r\n return onunloadFunction();\r\n }\r\n return null;\r\n };\r\n firstInit = false;\r\n }\r\n\r\n _this.socket.on(\"message\", (data) => {\r\n const message = {\r\n MessageID: data.I,\r\n Command: parseInt(data.C),\r\n MessageBody: data.M,\r\n MessageGroupID: data.G,\r\n TimeCreated: data.TC,\r\n Transfer: data.T,\r\n Push: data.P,\r\n Save: data.S,\r\n DataInfo: data.D,\r\n SenderAuthenticationID: parseInt(data.A)\r\n };\r\n\r\n if (message.DataInfo && message.DataInfo.SessionID && message.DataInfo.SessionID === _this.getSessionID()) {\r\n return;\r\n }\r\n\r\n trigger(\"message\", message, false);\r\n writeLocalStorage(\"SocketMessage\", JSON.stringify(message));\r\n });\r\n\r\n _this.socket.on(\"error\", (data) => {\r\n if (data && typeof (data) === \"object\" && data.code && data.code.toString().indexOf(\"ERR_SOCKETIO_INVALID\") > -1) { // session\r\n sessionExpireReconnect();\r\n } else {\r\n consoleError(data);\r\n }\r\n });\r\n\r\n _this.socket.on(\"connect\", () => {\r\n _this.ConnectTime = getTimeStamp();\r\n sessionExpireCount = 0;\r\n if (!checkPageGuid()) {\r\n _this.dispose(\"checkPageGuid\");\r\n return;\r\n }\r\n refreshSocketSession(SocketSessionID);\r\n changeSocketState(_this.SocketState.Connect);\r\n if (!connectCheckTimer) {\r\n connectCheckTimer = setInterval(() => {\r\n if (checkPageGuid()) {\r\n if (_this.GetSocketState() === SocketUtil.SocketState.Connect && !_this.checkConnected()) {\r\n setTimeout(() => {\r\n if (checkPageGuid() && _this.GetSocketState() === SocketUtil.SocketState.Connect && !_this.checkConnected()) {\r\n changeSocketState(_this.SocketState.Disconnect);\r\n }\r\n }, 2000);\r\n }\r\n } else {\r\n clearInterval(connectCheckTimer);\r\n connectCheckTimer = null;\r\n }\r\n }, 5000);\r\n }\r\n });\r\n\r\n _this.socket.on(\"disconnect\", () => {\r\n _this.DisconnectTime = getTimeStamp();\r\n if (!checkPageGuid()) {\r\n return;\r\n }\r\n\r\n changeSocketState(_this.SocketState.Disconnect);\r\n if (_this.getSessionID() === \"Expire\") {\r\n changeSocketState(_this.SocketState.Expire);\r\n }\r\n });\r\n\r\n _this.socket.on(\"reconnect\", () => {\r\n if (!checkPageGuid()) {\r\n return;\r\n }\r\n changeSocketState(_this.SocketState.Reconnect);\r\n });\r\n\r\n _this.socket.on(\"reconnecting\", () => {\r\n if (!checkPageGuid()) {\r\n return;\r\n }\r\n changeSocketState(_this.SocketState.Reconnecting);\r\n });\r\n\r\n _this.socket.on(\"reconnect_failed\", () => {\r\n if (_this.model === _this.ModelType.SocketSession) {\r\n _this.dispose(\"reconnect_failed\");\r\n TriggerSessionExpireEvent(\"reconnect_failed\");\r\n } else {\r\n _this.Reconnect(\"reconnect failed.\");\r\n }\r\n });\r\n\r\n _this.socket.on(\"anything\", () => {\r\n // Does nothing\r\n });\r\n };\r\n\r\n this.webSocketConnect = function () {\r\n if (checkPageGuid()) {\r\n if (!_this.Alone) {\r\n writeLocalStorage(\"SocketTimer\", getTimeStamp());\r\n if (!timerHandler) {\r\n timerHandler = setInterval(() => {\r\n if (checkPageGuid()) {\r\n writeLocalStorage(\"SocketTimer\", getTimeStamp());\r\n }\r\n }, 2000);\r\n }\r\n }\r\n\r\n clearTimeout(timeoutConnectThread);\r\n getSocketSession().then((config) => {\r\n getSocketIO().then(() => {\r\n if (!_this.socket) {\r\n _this.socket = io.connect(config.SocketServerURL, {\r\n query: {\r\n token: config.SocketSessionID\r\n },\r\n reconnectionAttempts: 5\r\n });\r\n socketServerUrl = config.SocketServerURL;\r\n refreshSocketSession(config.SocketSessionID);\r\n bindEvent(config.SocketSessionID);\r\n }\r\n }).catch(() => {\r\n changeSocketState(_this.SocketState.Error);\r\n });\r\n }).catch((e) => {\r\n switch (e.ErrorCode) {\r\n case SocketUtil.ErrorCode.ECPSessionExpire:\r\n case SocketUtil.ErrorCode.SessionExpire:\r\n if (_this.model === SocketUtil.ModelType.SocketSession) {\r\n TriggerSessionExpireEvent(e.ErrorMessage);\r\n } else if (typeof (EWS) !== \"undefined\") {\r\n // Task 656801: eChats: When sending eChats, I am getting a ! symbol\r\n EWS.Ready(() => {\r\n EWS.VerifySession();\r\n });\r\n }\r\n\r\n if (checkPageGuid()) {\r\n changeSocketState(_this.SocketState.Expire);\r\n }\r\n break;\r\n case SocketUtil.ErrorCode.HttpError:\r\n timeoutConnectThread = setTimeout(() => {\r\n _this.Reconnect(\"get session http error.\");\r\n }, 3000);\r\n break;\r\n case SocketUtil.ErrorCode.ECP_APITimeOut:\r\n timeoutConnectThread = setTimeout(() => {\r\n _this.Reconnect(\"Get session error. ECP api time out.\");\r\n }, 10000);\r\n break;\r\n default:\r\n changeSocketState(_this.SocketState.Error);\r\n }\r\n });\r\n }\r\n };\r\n\r\n this.checkSocket = function () {\r\n _this.debug = true;\r\n if (!checkPageGuid()) {\r\n writeLocalStorage(\"CheckSocket\", getTimeStamp());\r\n } else {\r\n ECP.Dialog.Alert(\"Please check the console.\");\r\n const connect = _this.checkConnected();\r\n\r\n if (connect) {\r\n _this.createGroup([AuthenticationID], SocketUtil.GroupType.Silence).then((messageGroupInfo) => {\r\n const messageGroupID = messageGroupInfo.MessageGroup.MessageGroupID;\r\n _this.send({\r\n Command: SocketUtil.Command.Ping,\r\n MessageBody: \"TestSend\",\r\n MessageGroupID: messageGroupID,\r\n Transfer: SocketUtil.TransferType.Self,\r\n Push: false,\r\n Save: false\r\n }, () => {\r\n // Send Successful\r\n });\r\n }).catch((err) => {\r\n consoleError(`${err.ErrorCode}:${err.ErrorMessage}`);\r\n });\r\n }\r\n }\r\n };\r\n\r\n this.GetSocketState = function () {\r\n let SocketState = null;\r\n\r\n if (_this.Alone) {\r\n SocketState = _this.AloneSocketState;\r\n } else {\r\n const SocketStateStr = window.localStorage.getItem(\"SocketState\");\r\n if (SocketStateStr) {\r\n SocketState = SocketStateStr.split(\"_\")[0];\r\n }\r\n }\r\n\r\n return SocketState;\r\n };\r\n\r\n const localStorageListener = function (origEvent) {\r\n const localStorageKey = origEvent.key;\r\n const localStorageNewValue = origEvent.newValue;\r\n if (localStorageNewValue && localStorageNewValue !== \"\" && localStorageNewValue !== origEvent.oldValue) {\r\n switch (localStorageKey) {\r\n case \"SocketState\":\r\n trigger(localStorageNewValue.split(\"_\")[0], null, true);\r\n break;\r\n case \"SocketMessage\":\r\n trigger(\"message\", JSON.parse(localStorageNewValue), true);\r\n break;\r\n case \"SendMessage\":\r\n if (checkPageGuid()) {\r\n const messagePackage = JSON.parse(localStorageNewValue);\r\n messagePackage.isStorage = true;\r\n _this.send(messagePackage, (data) => {\r\n writeLocalStorage(\"SendCallback\", JSON.stringify({ state: true, event_id: messagePackage.event_id, data }));\r\n }, (data) => {\r\n writeLocalStorage(\"SendCallback\", JSON.stringify({ state: false, event_id: messagePackage.event_id, data }));\r\n });\r\n }\r\n break;\r\n case \"SendCallback\":\r\n const eventObj = JSON.parse(localStorageNewValue);\r\n if (eventObj?.event_id && sendCallback[eventObj.event_id]) {\r\n const callbackObj = sendCallback[eventObj.event_id];\r\n if (eventObj.state && callbackObj.success) {\r\n delete sendCallback[eventObj.event_id];\r\n callbackObj.success(eventObj.data);\r\n } else if (!eventObj.state && callbackObj.fail) {\r\n delete sendCallback[eventObj.event_id];\r\n callbackObj.fail(eventObj.data);\r\n }\r\n }\r\n\r\n break;\r\n case \"SocketSessionID\":\r\n if (localStorageNewValue === \"Expire\" && checkPageGuid() && _this.checkConnected()) {\r\n sessionExpireReconnect();\r\n }\r\n\r\n if (_this.checkConnected() && !checkPageGuid()) {\r\n clearInterval(timerHandler);\r\n timerHandler = null;\r\n _this.dispose(\"SocketSessionID checkPageGuid\");\r\n }\r\n break;\r\n case \"CheckSocket\":\r\n if (checkPageGuid()) {\r\n _this.checkSocket();\r\n window.localStorage.removeItem(\"CheckSocket\");\r\n }\r\n break;\r\n case \"FindSocketTimer\":\r\n if (checkPageGuid()) {\r\n writeLocalStorage(\"SocketTimer\", getTimeStamp());\r\n window.localStorage.removeItem(\"FindSocketTimer\");\r\n }\r\n break;\r\n case \"LastSocketInfo\":\r\n if (_this.checkConnected() && !checkPageGuid()) {\r\n clearInterval(timerHandler);\r\n timerHandler = null;\r\n _this.dispose(\"LastSocketInfo checkPageGuid\");\r\n }\r\n break;\r\n }\r\n }\r\n };\r\n\r\n const getQueryString = function (name) {\r\n const r = window.location.search.substring(1, window.location.search.length - 1).match(new RegExp(`(^|&)${name}=([^&]*)(&|$)`, \"i\"));\r\n if (r) {\r\n return decodeURIComponent(r[2]);\r\n }\r\n return null;\r\n };\r\n\r\n const mainPageLost = function (memo) {\r\n if (!checkPageGuid()) {\r\n refreshPageGuid();\r\n writeLocalStorage(\"SocketTimer\", getTimeStamp());\r\n\r\n const nowTime = getTimeStamp();\r\n // Task 737082: eChat take multiple minutes to load & display recent echats\r\n const random = Math.floor(Math.random() * 1500) + 1000;\r\n setTimeout(() => {\r\n if (checkPageGuid()) {\r\n _this.Reconnect(`${memo} Now Time: ${nowTime}.`);\r\n }\r\n }, random);\r\n }\r\n };\r\n\r\n // Task 910650: Cannot echat\r\n const daemon = function () {\r\n if (!_this.Alone) {\r\n let enterTimer = false;\r\n setInterval(() => {\r\n if (_this.storageErrorCount || enterTimer || checkPageGuid()) {\r\n return;\r\n }\r\n\r\n let socketTimer = window.localStorage.getItem(\"SocketTimer\");\r\n const nowTime1 = getTimeStamp();\r\n\r\n if (!socketTimer || nowTime1 - socketTimer < 0) {\r\n mainPageLost(\"Socket page close.\");\r\n } else if (nowTime1 - socketTimer > 10000) {\r\n writeLocalStorage(\"FindSocketTimer\", nowTime1);\r\n enterTimer = true;\r\n\r\n setTimeout(() => {\r\n const nowTime2 = getTimeStamp();\r\n const limit = 8000 + nowTime2 - nowTime1;\r\n\r\n socketTimer = window.localStorage.getItem(\"SocketTimer\");\r\n if (!socketTimer || nowTime2 - socketTimer < 0) {\r\n mainPageLost(\"Socket page close.\");\r\n } else if (nowTime2 - socketTimer > limit) {\r\n mainPageLost(`Socket page lost. Socket timer: ${socketTimer}.`);\r\n }\r\n enterTimer = false;\r\n }, 2000);\r\n }\r\n }, 1000);\r\n }\r\n };\r\n\r\n this.webSocketInit = function () {\r\n if (!_this.pageGuid || _this.pageGuid === \"\") {\r\n _this.pageGuid = guid();\r\n }\r\n if (!_this.Alone) {\r\n window.onstorage = localStorageListener;\r\n }\r\n _this.debug = getQueryString(\"DebugJs\") === \"true\";\r\n if (!_this.debug) {\r\n _this.debug = getCookie(\"DebugJs\") === \"true\";\r\n }\r\n\r\n const connectionString = getCookie(\"SocketConnectionString\");\r\n if (connectionString) {\r\n _this.model = _this.ModelType.SocketSession;\r\n } else {\r\n _this.model = _this.ModelType.ECPSession;\r\n }\r\n\r\n // Session Expire\r\n const isGuest = getCookie(\"Guest\");\r\n const SocketSessionID = _this.getSessionID();\r\n if ((_this.GetSocketState() === _this.SocketState.Expire || SocketSessionID === \"Expire\")) {\r\n if (_this.model === _this.ModelType.SocketSession) {\r\n refreshPageGuid();\r\n setTimeout(() => {\r\n _this.webSocketConnect(\"web socket init.\");\r\n }, Math.floor(Math.random() * 500));\r\n } else if (isGuest !== \"True\") {\r\n if (typeof (EWS) !== \"undefined\") {\r\n EWS.Ready(() => {\r\n EWS.VerifySession(() => {\r\n refreshPageGuid();\r\n setTimeout(() => {\r\n _this.webSocketConnect(\"ews ready.\");\r\n }, Math.floor(Math.random() * 500));\r\n });\r\n });\r\n } else {\r\n refreshPageGuid();\r\n setTimeout(() => {\r\n _this.webSocketConnect(\"web socket init.\");\r\n }, Math.floor(Math.random() * 500));\r\n }\r\n }\r\n }\r\n\r\n // Log out\r\n if (_this.model === _this.ModelType.ECPSession && isGuest === \"True\") {\r\n refreshSocketSession(\"Expire\");\r\n }\r\n\r\n // Socket timer\r\n daemon();\r\n\r\n // Session Expire\r\n if (typeof (EWS) !== \"undefined\" && _this.model === _this.ModelType.ECPSession) {\r\n EWS.VerifySessionFail(() => {\r\n if (!_this.Alone) {\r\n const SocketStateStr = window.localStorage.getItem(\"SocketState\");\r\n if (SocketStateStr) {\r\n const SocketState = SocketStateStr.split(\"_\")[0];\r\n if (SocketState === _this.SocketState.Expire) {\r\n return;\r\n }\r\n }\r\n refreshSocketSession(\"Expire\");\r\n }\r\n if (_this.checkConnected()) {\r\n _this.dispose(\"VerifySessionFail\");\r\n }\r\n });\r\n\r\n // Re Login\r\n EWS.ReLogin(() => {\r\n _this.Reconnect(\"ews relogin.\");\r\n });\r\n }\r\n };\r\n\r\n if (window.parent === window && (typeof IsImpersonateUser === \"undefined\" || !IsImpersonateUser)) {\r\n if ((typeof (EC_Fmt) !== \"undefined\" && (getQueryString(\"AloneEChat\") === \"true\")) || EC_Fmt.GetPageParameter(\"RunCodeItemTest\") || EC_Fmt.GetPageParameter(\"PreviewCode\")) {\r\n _this.Alone = true;\r\n _this.AloneSessionID = \"Expire\";\r\n _this.AloneSocketState = _this.SocketState.Expire;\r\n }\r\n\r\n // Task 713111: Gulfport: Mississippi will use the Encompass Cast devices for the monitor displays Need eChat from Dashboard that is logged in with QuickLink\r\n _this.webSocketInit();\r\n }\r\n };\r\n\r\n return new MainPageControllerClass();\r\n}(Option));\r\n\r\nSocketUtil.on(\"message\", (data) => {\r\n if (typeof (EC_Fmt) !== \"undefined\" && data.Command === SocketUtil.Command.ScreenShare) {\r\n if (EC_Fmt.Browser === ECP.Browser.Chrome) {\r\n if (typeof ScreenShare === \"undefined\") {\r\n const script = document.createElement(\"script\");\r\n script.src = \"SalesCommunication/ScreenShare_INC.js\";\r\n script.onload = function () {\r\n ScreenShare.Client.handleScreenShareMessage(data.DataInfo);\r\n };\r\n\r\n document.head.appendChild(script);\r\n } else {\r\n ScreenShare.Client.handleScreenShareMessage(data.DataInfo);\r\n }\r\n } else if (EC_Fmt.Browser === ECP.Browser.Firefox) {\r\n if (typeof ScreenShare_Firefox === \"undefined\") {\r\n const script = document.createElement(\"script\");\r\n script.src = \"SalesCommunication/ScreenShareForFirefox.js\";\r\n script.onload = function () {\r\n ScreenShare_Firefox.Client.handleScreenShareMessage(data.DataInfo);\r\n };\r\n\r\n document.head.appendChild(script);\r\n } else {\r\n ScreenShare_Firefox.Client.handleScreenShareMessage(data.DataInfo);\r\n }\r\n } else if (SocketUtil.debug) {\r\n ECP.Dialog.Alert(\"This browser does not support screen sharing\");\r\n }\r\n }\r\n});\r\n","\"use strict\";\r\n\r\nconst EChat = {\r\n eChatState: false,\r\n eChatMoving: false,\r\n eChatTouch: false,\r\n SavedMessageChange: false,\r\n __height: 385,\r\n __width: 350\r\n};\r\n\r\nEChat.CustomEvent = {\r\n SEARCH: \"Search\",\r\n SHOWDIALOG: \"ShowDialog\",\r\n NEWMESSAGE: \"NewMessage\",\r\n // REDRAWGROUP: \"RedrawGroup\",\r\n DELETEGROUP: \"DeleteGroup\",\r\n REDDOT: \"RedDot\",\r\n REDRAWTABLEALERTS: \"RedrawTableAlerts\"\r\n};\r\n\r\nEChat.LocalStorageType = {\r\n // ECHATCOMMAND: \"EChatCommand\",\r\n ECHATAUTHID: \"EChatAuthenticationID\",\r\n // ECHATUSERSETTING: \"EChatUserSetting\",\r\n DBUPDATE: \"DBUpdate\",\r\n DBDELETED: \"DBDeleted\",\r\n UNREADDATA: \"UnReadData\",\r\n ECHATSTARTSESSION: \"EChatStartSession\",\r\n STARTSCREENSHARE: \"StartScreenShare\",\r\n CLOSTSCREENSHARECONFIRM: \"CloseScreenShareConfirm\",\r\n RECEIVETASKDETAIL: \"ReceiveTaskDetail\",\r\n GROUPREADLOCK: \"GroupReadLock\"\r\n};\r\n\r\n// Task 521304: Team Calendar: updates based on Clay's feedback\r\nEChat.InitState = {\r\n UserData: false, // Init User data to memory\r\n InitUser: false// Init personal information\r\n};\r\n\r\nEChat.PromptType = {\r\n Normal: 0, // Sound, Push message, Unread tips,\r\n DoNotDisturb: 1// No Sound, No Push message, Unread tips\r\n};\r\n\r\nEChat.PostPermissionType = {\r\n Block: 0,\r\n ReadOnly: 1,\r\n Post: 2\r\n};\r\n\r\nEChat.DeliveryMethod = {\r\n eChat: 1,\r\n Email: 2,\r\n TextMessage: 3\r\n};\r\n\r\nEChat.DBTableName = {\r\n GROUPINFO: \"GroupInfo\",\r\n SETTINGS: \"Settings\",\r\n USERS: \"Users\",\r\n TABLEALERTS: \"TableAlerts\",\r\n LOG: \"Log\",\r\n // SUPPORTGROUPS: \"SupportGroups\",\r\n SENDMESSAGES: \"SendMessages\",\r\n TASKS: \"Tasks\"\r\n};\r\n\r\nEChat.ErrorType = {\r\n AJAX_ERROR: \"AjaxError\",\r\n WEBSOCKECT_ERROR: \"WebSocketError\",\r\n SENDMESSAG_EERROR: \"SendMessageError\",\r\n LOCALSTORAGE_ERROR: \"LocalStorageError\",\r\n SESSION_ERROR: \"VerifySessionFailed\",\r\n DATA_ERROR: \"DataError\",\r\n UnKnownError: 0,\r\n ParameterError: 1,\r\n QueryFailed: 2,\r\n VerifySessionFailed: 3,\r\n VerifyUserFailed: 4\r\n};\r\n\r\nEChat.Setting = {\r\n GroupNumPerShow: 10,\r\n MessageNumPerShow: 10,\r\n CharactersOfMessage: 4000,\r\n TabNumPerWindow: 5,\r\n minTabWidth: 120,\r\n MaxCharacterGroupNameDisplay: 1020, // title only displays 1020 character + ...\r\n DefaultUserIcon: \"https://cdn.e8.co/GlobalDocs/587681.png\",\r\n DefaultGroupIcon: \"https://cdn.e8.co/GlobalDocs/587682.png\",\r\n DefaultTaskIcon: \"https://cdn.e8.co/GlobalDocs/587683.png\",\r\n DefaultAlertIcon: \"DefaultAlertIcon\",\r\n showView: true\r\n};\r\n\r\n// restorage EChat user status\r\nEChat.UserStatus = {\r\n userId: null,\r\n mainPage: {\r\n isShow: false,\r\n currentTabName: null, // index of left menu\r\n position: {\r\n top: null,\r\n left: null,\r\n zIndex: null\r\n }\r\n },\r\n messageWindow: []\r\n};\r\n\r\nEChat.EmployeesAlertsType = {\r\n Day_Close: \"Day Close\",\r\n End_of_Day_Warnings: \"End of Day Warnings\",\r\n ASN_Receipt: \"ASN Receipt\",\r\n New_Customer_Account: \"New Customer Account\",\r\n PO_Receipt: \"PO Receipt\",\r\n REMIT_Receipt: \"REMIT Receipt\",\r\n Import_Conflict: \"Import Conflict\",\r\n Picker_Cut: \"Picker Cut\",\r\n Supplier_Comm_Warnings: \"Supplier Comm Warnings\",\r\n EDI_Download_Reminder: \"EDI Download Reminder\",\r\n EDI_Inbound_Errors: \"EDI Inbound Errors\",\r\n EDI_Outbound_Errors: \"EDI Outbound Errors\",\r\n Account_Mismapping: \"Account Mis-Mapping\",\r\n Can_Count_Import: \"Can Count Import\"\r\n};\r\n\r\nEChat.ViewType = {\r\n CloseView: 0,\r\n OpenView: 1,\r\n MinimizeView: 2\r\n};\r\n// Task 467970: Uncaught TypeError: Cannot read property 'UserList' of undefined\r\nEChat.UserType = {\r\n 0: \"None\",\r\n 1: \"Employee_Restricted\",\r\n 2: \"Employee_NotRestricted\",\r\n 10: \"Employee_MaxUserTypeID\",\r\n 12: \"Supplier\",\r\n 13: \"Customer\",\r\n 14: \"Chain\",\r\n 15: \"Carrier\",\r\n 16: \"Vendor\",\r\n 17: \"Guest\",\r\n 18: \"Support\"\r\n};\r\n\r\n// dispatch custom event\r\nEChat.EventDispatcher = function () {\r\n const _this = this;\r\n // An object containing all handlers\r\n let _h = {};\r\n\r\n this.bind = function (eventName, handler) {\r\n if (typeof eventName === \"undefined\") {\r\n return _this;\r\n }\r\n const eArr = ((typeof eventName) === \"string\") ? eventName.split(\" \") : eventName;\r\n for (let i = 0; i < eArr.length; i++) {\r\n const ev = eArr[i];\r\n if (!_h[ev]) {\r\n _h[ev] = [];\r\n }\r\n _h[ev].push(handler);\r\n }\r\n return _this;\r\n };\r\n\r\n this.unbind = function (eventName, handler) {\r\n if (!eventName) {\r\n _h = {};\r\n return _this;\r\n }\r\n const eArr = ((typeof eventName) === \"string\") ? eventName.split(\" \") : eventName;\r\n for (let i = 0; i < eArr.length; i++) {\r\n const ev = eArr[i];\r\n if (_h[ev]) {\r\n if (handler) {\r\n for (let j = _h[ev].length - 1; j >= 0; j--) {\r\n if (_h[ev][j] === handler) {\r\n delete _h[ev][j];\r\n _h[ev].splice(j, 1);\r\n }\r\n }\r\n } else {\r\n delete _h[ev];\r\n }\r\n }\r\n }\r\n return _this;\r\n };\r\n\r\n this.dispatch = function (eventName, content) {\r\n if (eventName && _h[eventName]) {\r\n for (let i = 0; i < _h[eventName].length; i++) {\r\n if (_h[eventName][i] !== undefined) {\r\n _h[eventName][i](content);\r\n }\r\n }\r\n }\r\n return _this;\r\n };\r\n\r\n this.createHandlerArgument = function (e, data) {\r\n return {\r\n event: e,\r\n data\r\n };\r\n };\r\n};\r\n\r\nEChat.Util = {\r\n initEChat() {\r\n return new Promise(((resolve) => {\r\n requestIdleCallback(() => {\r\n if (!EChat.ErrorBind) {\r\n EChat.ErrorBind = true;\r\n window.addEventListener(\"error\", (event) => {\r\n if (event.filename.indexOf(\"EChat.js\") !== -1) {\r\n let error_stack = \"\";\r\n if (event.error) {\r\n error_stack = event.error.stack;\r\n }\r\n const Log = {\r\n lineno: event.lineno,\r\n message: event.message,\r\n timeStamp: event.timeStamp,\r\n type: event.type,\r\n stack: error_stack\r\n };\r\n EChat.IndexedDB.WriteError(Log.message, Log.stack);\r\n }\r\n });\r\n }\r\n\r\n const eChatBtn = document.getElementById(\"EChatButton\");\r\n if (eChatBtn) {\r\n if (EChat.Util.availableCheck()) {\r\n EChat.Util.initMain().then(() => {\r\n resolve();\r\n EC_Fmt.TriggerEvent(document, \"EChatReady\");\r\n });\r\n } else {\r\n eChatBtn.style.display = \"none\";\r\n resolve();\r\n }\r\n }\r\n });\r\n }));\r\n },\r\n\r\n initMain() {\r\n return new Promise(((resolve) => {\r\n requestIdleCallback(() => {\r\n const HandleQueue = [];\r\n HandleQueue.push(async () => {\r\n EChat.V2010 = true;\r\n const EChatV2010 = await EChat.IndexedDB.GetSetting(\"EChatV2010\");\r\n if (!EChatV2010) {\r\n if (EChat.MainPageController) {\r\n EChat.MainPageController.closeAllWindow();\r\n }\r\n\r\n EChat.Util.removeEChat();\r\n await EChat.IndexedDB.ClearDateBase();\r\n await EChat.IndexedDB.UpdateSetting(\"EChatV2010\", EChat.Util.getTimeStamp(), true);\r\n }\r\n });\r\n\r\n // Task 998660: eChat Sound Alerts persist when disabled from eChat\r\n EChat.MainPageController.initSoundAlert();\r\n HandleQueue.push(() => EChat.IndexedDB.InitDB());\r\n HandleQueue.push(() => {\r\n EChat.MainPageController.unreadSumCountChange();\r\n return EChat.DataProvider.initUser();\r\n });\r\n\r\n EChat.IndexedDB.DBHandleQueue(HandleQueue).then(() => {\r\n document.getElementById(\"EChatButton\").addEventListener(\"click\", () => {\r\n if (!EChat.eChatState) {\r\n EChat.eChatState = true;\r\n EChat.Util.Loading(true);\r\n EChat.MainPageController.initMainPage().then(() => {\r\n EChat.IndexedDB.InitViewData().then(() => {\r\n EChat.IndexedDB.InitDBData().then(() => {\r\n EC_Fmt.TriggerEvent(document, \"EChatFirstOpen\");\r\n });\r\n EChat.MainPageController.unreadSumCountChange();\r\n });\r\n }).catch((e) => {\r\n EChat.Util.Loading(false);\r\n EChat.Util.errorAlert(e);\r\n });\r\n }\r\n });\r\n EChat.LocalStorage.startListen();\r\n\r\n resolve();\r\n });\r\n });\r\n }));\r\n },\r\n\r\n removeEChat() {\r\n const eChatBtn = document.getElementById(\"EChatButton\");\r\n if (eChatBtn && EChat.eChatState === true) {\r\n EChat.MainPageController.removeEChatView();\r\n EChat.FullWindowController.Destroy();\r\n eChatBtn.style.display = \"none\";\r\n EChat.eChatState = false;\r\n }\r\n },\r\n\r\n availableCheck() {\r\n const myUserAgent = navigator.userAgent.toLowerCase();\r\n const bIsIpad = myUserAgent.match(/ipad/i) === \"ipad\";\r\n const bIsIphoneOs = myUserAgent.match(/iphone/i) === \"iphone\";\r\n const bIsAndroid = myUserAgent.match(/android/i) === \"android\";\r\n const bIsWp = myUserAgent.match(/wpdesktop/i) === \"wpdesktop\";\r\n\r\n if (bIsIpad || bIsIphoneOs || bIsWp || bIsAndroid || (!EChat.WebSocket.check()) || (!EChat.LocalStorage.check()) || (!EChat.IndexedDB.check())) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n\r\n nav(url, e) {\r\n if (e && (e.ctrlKey || e.metaKey || e.button === 1)) {\r\n window.open(url);\r\n } else if (!e || e.button === 0) {\r\n if (!window.onbeforeunload) {\r\n EChat.Util.ShowLoading(\"All\");\r\n }\r\n window.location.href = url;\r\n }\r\n if (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n },\r\n\r\n ShowLoading(mySelector, loadingText) {\r\n if (!loadingText) {\r\n loadingText = \"Loading\";\r\n }\r\n\r\n let borderRadius = \"\";\r\n if (mySelector === \"All\") {\r\n mySelector = null;\r\n } else if (mySelector) {\r\n borderRadius = \"8px\";\r\n } else {\r\n mySelector = document.getElementById(\"EChatMainPage\");\r\n borderRadius = \"8px 8px 0 0\";\r\n }\r\n\r\n const loadDom = ECP.Dialog.ShowLoading(loadingText, mySelector);\r\n if (borderRadius) {\r\n const mark = loadDom.querySelector(\".ecp-html-loading-mask\");\r\n if (mark) {\r\n mark.style.borderRadius = borderRadius;\r\n }\r\n }\r\n\r\n return loadDom;\r\n },\r\n\r\n ShowLoader(mySelector, center) {\r\n if (mySelector) {\r\n const loader = document.createElement(\"DIV\");\r\n loader.classList.add(\"eChat-SuperLoading\", \"donutSpinner\");\r\n loader.innerHTML = \"
\";\r\n if (center) {\r\n loader.style.height = \"100%\";\r\n loader.style.display = \"flex\";\r\n loader.style.alignItems = \"center\";\r\n }\r\n mySelector.append(loader);\r\n }\r\n },\r\n\r\n SetWindowLocation(windowElement) {\r\n const windowCount = EChat.MainPageController.messageWindowList.length - 1;\r\n const windowHig = window.innerHeight;\r\n const windowWid = window.innerWidth;\r\n windowElement.style.display = \"block\";\r\n const tmpTop = windowHig / 2 - EChat.MainPageController.chatWindowSize.height / 2 + windowCount * 50;\r\n const tmpLeft = windowWid / 2 - EChat.MainPageController.chatWindowSize.width / 2 + windowCount * 50;\r\n const point = EChat.Util.checkPoint(tmpLeft, tmpTop, windowElement);\r\n windowElement.style.top = `${point.Top}px`;\r\n windowElement.style.left = `${point.Left}px`;\r\n const zIndex = EChat.Util.draggableZIndex();\r\n windowElement.style.zIndex = zIndex;\r\n },\r\n\r\n HideLoader(mySelector) {\r\n if (mySelector) {\r\n const loader = mySelector.querySelector(\".eChat-SuperLoading\");\r\n if (loader) {\r\n loader.remove();\r\n }\r\n }\r\n },\r\n\r\n getSearchText() {\r\n const dom = document.getElementById(\"EChatSearchText\");\r\n if (dom) {\r\n return dom.value.trim();\r\n }\r\n return \"\";\r\n },\r\n\r\n ListenerVisibility() {\r\n EChat.PageActive = true;\r\n document.addEventListener(\"visibilitychange\", async () => {\r\n if (document.visibilityState === \"visible\") {\r\n EChat.PageActive = true;\r\n if (EChat.eChatState) {\r\n EChat.IndexedDB.InitDBData();\r\n if (EChat.SavedMessageChange) {\r\n const curTab = document.querySelector(\"#EChatMainPage .eChat-CurrentTab\");\r\n if (curTab?.getAttribute(\"switch-tab\") === \"EChatSavedTab\") {\r\n EC_Fmt.TriggerEvent(document.getElementById(\"EChatSearchText\"), \"keyup\");\r\n }\r\n EChat.SavedMessageChange = true;\r\n }\r\n }\r\n } else if (document.visibilityState === \"hidden\") {\r\n EChat.PageActive = false;\r\n }\r\n }, { passive: true });\r\n },\r\n\r\n highLight(text, find, color, mini) {\r\n const resultDom = EC_Fmt.HtmlStrToElement(`${text}`);\r\n if (text && find) {\r\n if (resultDom?.textContent) {\r\n text = resultDom.textContent;\r\n let index = text.toLowerCase().indexOf(find.toLowerCase());\r\n if (mini) {\r\n if (index > 60) {\r\n const space = text.indexOf(\" \", index - 60);\r\n if (space >= 0 && space < index) {\r\n text = `... ${text.substr(space + 1)}`;\r\n } else {\r\n text = `... ${text.substr(index)}`;\r\n }\r\n index = text.toLowerCase().indexOf(find.toLowerCase());\r\n }\r\n }\r\n\r\n // Task 996347: Some issues with the new version of Web UI eChat\r\n if (index > -1) {\r\n const start = text.substring(0, index);\r\n const replaceWith = `${text.substr(index, find.length)}`;\r\n const end = text.substr(index + find.length);\r\n text = start + replaceWith + end;\r\n\r\n resultDom.innerHTML = \"\";\r\n\r\n if (start) {\r\n const startDom = document.createElement(\"SPAN\");\r\n startDom.textContent = start;\r\n resultDom.append(startDom);\r\n }\r\n\r\n const colorDom = EC_Fmt.HtmlStrToElement(replaceWith);\r\n resultDom.append(colorDom);\r\n\r\n if (end) {\r\n const endDom = document.createElement(\"SPAN\");\r\n endDom.textContent = end;\r\n resultDom.append(endDom);\r\n }\r\n }\r\n }\r\n } else {\r\n text = EC_Fmt.Null2EmptyStr(text);\r\n }\r\n\r\n return { text, dom: resultDom };\r\n },\r\n\r\n errorAlert(ex) {\r\n if (ex) {\r\n let message;\r\n if (ex.ErrorCode && ex.ErrorMessage) {\r\n let errorCodeStr = ex.ErrorCode;\r\n if (ex.ErrorCode === SocketUtil.ErrorCode.HttpError) {\r\n errorCodeStr = \"HttpRequestError\";\r\n }\r\n message = `${errorCodeStr} ${ex.ErrorMessage}`;\r\n } else {\r\n message = ex;\r\n }\r\n // eslint-disable-next-line no-console\r\n console.error(ex);\r\n\r\n const alertHTMLObj = document.createElement(\"div\");\r\n alertHTMLObj.innerHTML = message;\r\n if (alertHTMLObj.querySelector(\"#MainLayout\")) {\r\n ECP.Dialog.Alert(alertHTMLObj.querySelector(\"#MainLayout\").innerHTML);\r\n } else {\r\n ECP.Dialog.Alert(message);\r\n }\r\n }\r\n ECP.Dialog.HideLoading();\r\n },\r\n\r\n throwError(errorCode, errorMessage) {\r\n EChat.Util.handleError({ ErrorCode: errorCode, ErrorMessage: errorMessage });\r\n },\r\n\r\n ajaxHandleError(xhrObj, status, err) {\r\n EChat.Util.throwError(EChat.ErrorType.AJAX_ERROR, { xhrObj, status, err });\r\n },\r\n\r\n handleError(errorObj) {\r\n const eChatErrorType = EChat.ErrorType;\r\n switch (errorObj.ErrorCode) {\r\n case eChatErrorType.SENDMESSAG_EERROR:\r\n throw new Error(`error: ${errorObj.content}`);\r\n case eChatErrorType.VerifySessionFailed:\r\n EWS.VerifySession();\r\n break;\r\n default:\r\n // eslint-disable-next-line no-console\r\n console.error(errorObj.ErrorMessage);\r\n break;\r\n }\r\n return false;\r\n },\r\n\r\n // Task 917777: Copy a historical echat message with font format\r\n CopyFormat() {\r\n },\r\n\r\n // Class: content flicker\r\n FlickerContentClass(element) {\r\n const obj = element;\r\n let intervalID = null; // receive ID from window.setInterval()\r\n const originalContent = obj.textContent; // remember the original content of title\r\n let flickerFadeOutContent = null; // display when flag === true\r\n let flickerFadeInContent = null; // display when flag === false\r\n let flag = true; // auxiliary to judgment title fadeIn or fadeOut\r\n\r\n this.FlickerOn = function (str, interval) {\r\n if (!intervalID) {\r\n flickerFadeOutContent = `[${str}] ${originalContent}`;\r\n flickerFadeInContent = \"[\";\r\n for (let i = 0; i < str.length / 2 + 1; i++) { // append BlackSpaces\r\n flickerFadeInContent += \" \";\r\n }\r\n flickerFadeInContent += `] ${originalContent}`;\r\n\r\n intervalID = window.setInterval(() => {\r\n if (flag) {\r\n obj.textContent = flickerFadeOutContent;\r\n } else {\r\n obj.textContent = flickerFadeInContent;\r\n }\r\n flag = !flag;\r\n }, parseInt(interval));\r\n }\r\n };\r\n this.FlickerOff = function (isFlicker) {\r\n if (intervalID) {\r\n window.clearInterval(intervalID);\r\n intervalID = null;\r\n if (isFlicker) {\r\n obj.textContent = flickerFadeOutContent;\r\n } else {\r\n obj.textContent = originalContent; // restore the original title\r\n }\r\n } else if (!isFlicker) {\r\n obj.textContent = originalContent;\r\n }\r\n };\r\n },\r\n\r\n draggableZIndex() {\r\n let maxZIndex = 200;\r\n document.querySelectorAll(\".eChatDraggable\").forEach((dom) => {\r\n const index = Number(dom.style.zIndex);\r\n maxZIndex = index > maxZIndex ? index : maxZIndex;\r\n });\r\n return maxZIndex + 1;\r\n },\r\n\r\n // Task 1147400: DSDLink: eChat in the new Mobile Framework(echat Dashboard)\r\n resizeDialogMessage() {\r\n if (EChat.MainPageController.ClientOS === \"Mobile\") {\r\n const EchatMessageWindowDialog = document.querySelector(\"body > div.eChat-MessageWindow.eChatDraggable > div.eChat-MessageWindowDialog\");\r\n\r\n const EChatMessageWindowHeight = document.querySelector(\"body > div.eChat-MessageWindow.eChatDraggable\").clientHeight;\r\n const EchatMessageWindowHeadHeight = document.querySelector(\"body > div.eChat-MessageWindow.eChatDraggable > div.eChat-MessageWindowHead.eChatDragTarget\").clientHeight;\r\n const EChatMessageWindowSendHeight = document.querySelector(\"body > div.eChat-MessageWindow.eChatDraggable > div.eChat-MessageWindowSend\").clientHeight;\r\n const EchatMessageWindowTitleBoxHeight = document.querySelector(\"body > div.eChat-MessageWindow.eChatDraggable > div.eChat-MessageWindowTitleBox\").clientHeight;\r\n const EchatMessageWindowSearchHeight = document.querySelector(\"body > div.eChat-MessageWindow.eChatDraggable > div.eChat-MessageWindowSearch\").clientHeight;\r\n\r\n const height = EChatMessageWindowHeight - (EchatMessageWindowHeadHeight + EChatMessageWindowSendHeight + EchatMessageWindowTitleBoxHeight + EchatMessageWindowSearchHeight);\r\n EchatMessageWindowDialog.style.height = `${height}px`;\r\n }\r\n },\r\n\r\n getTimeStamp() {\r\n return (new Date()).getTime();\r\n },\r\n\r\n insertText(element, str) {\r\n if (typeof element.selectionStart === \"number\" && typeof element.selectionEnd === \"number\") {\r\n const startPos = element.selectionStart;\r\n const endPos = element.selectionEnd;\r\n let cursorPos = startPos;\r\n const tmpStr = element.value;\r\n element.value = tmpStr.substring(0, startPos) + str + tmpStr.substring(endPos, tmpStr.length);\r\n if (str === \"\\r\\n\") {\r\n cursorPos += 1;\r\n } else {\r\n cursorPos += str.length;\r\n }\r\n element.selectionStart = cursorPos;\r\n element.selectionEnd = cursorPos;\r\n }\r\n },\r\n\r\n urlConverter(msg) {\r\n if (msg.indexOf(\" -1 || msg.indexOf(\"\") > -1) {\r\n return msg;\r\n }\r\n // Task 960423: eChat Message seems to have disrupted echat/Encompass mobile\r\n msg = msg.replace(/ /g, \"✢\");\r\n // Task 960423: eChat Message seems to have disrupted echat/Encompass mobile\r\n const urlReg = /[a-zA-z]+:\\/\\/[^\\s\"'<>{}✢]*/gi;\r\n const replaceText = \"$&\";\r\n msg = msg.replace(urlReg, replaceText);\r\n msg = msg.replace(/✢/g, \" \");\r\n\r\n msg = msg.replace(\"
\", \"
\");\r\n msg = msg.replace(/()+$/, \"\");\r\n return msg;\r\n },\r\n\r\n longToDataTime(longNum) {\r\n longNum = Number(longNum);\r\n if (longNum === 0 || !EC_Fmt.isNumber(longNum)) {\r\n return \"\";\r\n }\r\n const dateTime = new Date(longNum);\r\n const year = dateTime.getFullYear();\r\n const month = dateTime.getMonth() + 1;\r\n const date = dateTime.getDate();\r\n let hour = dateTime.getHours();\r\n let minute = dateTime.getMinutes();\r\n const now = new Date();\r\n const sameYear = dateTime.getFullYear() === now.getFullYear();\r\n const sameDay = sameYear && dateTime.getMonth() === now.getMonth() && dateTime.getDate() === now.getDate();\r\n if (minute.toString().length === 1) {\r\n minute = `0${minute.toString()}`;\r\n }\r\n let second = dateTime.getSeconds();\r\n if (second.toString().length === 1) {\r\n second = `0${second.toString()}`;\r\n }\r\n\r\n let data = \"\";\r\n let time;\r\n if (!sameDay) {\r\n switch (EChat.DataProvider.CurrentUserInfo.DateFormat) {\r\n case 2:\r\n if (sameYear) {\r\n data = `${month}-${date}`;\r\n } else {\r\n data = `${year}-${month}-${date}`;\r\n }\r\n break;\r\n case 3:\r\n if (sameYear) {\r\n data = `${date}.${month}`;\r\n } else {\r\n data = `${date}.${month}.${year}`;\r\n }\r\n break;\r\n default:\r\n if (sameYear) {\r\n data = `${month}/${date}`;\r\n } else {\r\n data = `${month}/${date}/${year}`;\r\n }\r\n break;\r\n }\r\n }\r\n switch (EChat.DataProvider.CurrentUserInfo.TimeFormat) {\r\n case 2:\r\n time = `${hour}:${minute}:${second}`;\r\n break;\r\n default:\r\n if (hour === 12) {\r\n time = `${hour}:${minute} PM`;\r\n } else if (hour > 12) {\r\n time = `${hour - 12}:${minute} PM`;\r\n } else {\r\n if (hour === 0) {\r\n hour = 12;\r\n }\r\n time = `${hour}:${minute} AM`;\r\n }\r\n break;\r\n }\r\n return `${data} ${time}`;\r\n },\r\n\r\n getElementPosition(targetElement) {\r\n const tmpWidth = window.innerWidth - targetElement.clientWidth;\r\n const tmpHeight = window.innerHeight - targetElement.clientHeight;\r\n let tmptop = parseInt(targetElement.style.top);\r\n tmptop = tmptop < 0 ? 0 : tmptop;\r\n tmptop = tmptop > tmpHeight ? tmpHeight : tmptop;\r\n let tmpleft = parseInt(targetElement.style.left);\r\n tmpleft = tmpleft < 0 ? 0 : tmpleft;\r\n tmpleft = tmpleft > tmpWidth ? tmpWidth : tmpleft;\r\n return {\r\n Left: tmpleft,\r\n Top: tmptop\r\n };\r\n },\r\n\r\n checkPoint(x, y, targetElement) {\r\n const tmpWidth = window.innerWidth - targetElement.clientWidth;\r\n const tmpHeight = window.innerHeight - targetElement.clientHeight;\r\n const limitX = EChat.Util.getMenuWidth();\r\n const limitY = EChat.Util.getHeaderHeight();\r\n\r\n x = x < limitX ? limitX : x;\r\n x = x > tmpWidth ? tmpWidth : x;\r\n y = y < limitY ? limitY : y;\r\n y = y > tmpHeight ? tmpHeight : y;\r\n return {\r\n Left: x,\r\n Top: y\r\n };\r\n },\r\n\r\n getMenuWidth() {\r\n let width = 0;\r\n const menu = document.getElementById(\"Menu\");\r\n if (menu) {\r\n width = menu.offsetWidth;\r\n }\r\n return width;\r\n },\r\n\r\n getHeaderHeight() {\r\n let height = 0;\r\n const header = document.getElementById(\"Header\");\r\n if (header) {\r\n height = header.offsetHeight;\r\n }\r\n return height;\r\n },\r\n\r\n windowResizeListener() {\r\n window.addEventListener(\"resize\", () => {\r\n clearTimeout(EChat.MainPageController.windowChangeThread);\r\n EChat.MainPageController.windowChangeThread = requestIdleCallback(() => {\r\n // mainpage\r\n EChat.MainPageController.resizeMainPageWindow();\r\n // Task 1067218: DSDLink: eChat in the new Mobile Framework\r\n // messagewindow\r\n const messageWindowList = EChat.MainPageController.messageWindowList;\r\n if (EChat.MainPageController.ClientOS === \"PC\") {\r\n for (let i = 0; i < messageWindowList.length; i++) {\r\n messageWindowList[i].resizeMessageWindow();\r\n }\r\n } else {\r\n for (let i = 0; i < messageWindowList.length; i++) {\r\n messageWindowList[i].resizeMobileMessageWindow();\r\n // Task 1147400: DSDLink: eChat in the new Mobile Framework(echat Dashboard)\r\n EChat.Util.resizeDialogMessage();\r\n }\r\n }\r\n });\r\n });\r\n },\r\n\r\n autoResizeImage(maxWidth, maxHeight, objImg) {\r\n let ratio = 1;\r\n let w = objImg.width;\r\n let h = objImg.height;\r\n const wRatio = maxWidth / w;\r\n const hRatio = maxHeight / h;\r\n if (maxWidth === 0 && maxHeight === 0) {\r\n ratio = 1;\r\n } else if (maxWidth === 0) {\r\n if (hRatio < 1) {\r\n ratio = hRatio;\r\n }\r\n } else if (maxHeight === 0) {\r\n if (wRatio < 1) {\r\n ratio = wRatio;\r\n }\r\n } else if (wRatio < 1 || hRatio < 1) {\r\n ratio = (wRatio <= hRatio ? wRatio : hRatio);\r\n }\r\n if (ratio < 1) {\r\n w *= ratio;\r\n h *= ratio;\r\n }\r\n objImg.height = h;\r\n objImg.width = w;\r\n },\r\n\r\n checkImage(fileName) {\r\n let result = false;\r\n if (fileName !== \"\") {\r\n switch (fileName.substring(fileName.lastIndexOf(\".\") + 1, fileName.length).toLowerCase()) {\r\n case \"jpg\":\r\n case \"png\":\r\n case \"jpeg\":\r\n case \"gif\":\r\n result = true;\r\n break;\r\n default:\r\n result = false;\r\n break;\r\n }\r\n }\r\n return result;\r\n },\r\n\r\n Loading(state) {\r\n if (EC_Fmt.isNull(state)) {\r\n state = EChat.Loading;\r\n } else {\r\n EChat.Loading = state;\r\n }\r\n\r\n const EChatLoadingList = document.getElementById(\"EChatLoadingList\");\r\n if (EChatLoadingList) {\r\n if (state) {\r\n EChatLoadingList.style.display = \"block\";\r\n } else {\r\n EChatLoadingList.style.display = \"none\";\r\n }\r\n }\r\n },\r\n\r\n FileLoad(FileDom, WindowDom, SenderAuthenticationID, width, height) {\r\n if (!FileDom) {\r\n return;\r\n }\r\n\r\n FileDom.querySelectorAll(\"img\").forEach((dom) => {\r\n const imageWidth = parseInt(dom.getAttribute(\"image-width\"));\r\n const imageHeight = parseInt(dom.getAttribute(\"image-height\"));\r\n const thumbnailHeight = parseInt(dom.getAttribute(\"thumbnai-height\"));\r\n const thumbnailWidth = parseInt(dom.getAttribute(\"thumbnai-width\"));\r\n const thumbnailUrl = dom.getAttribute(\"thumbnai-url\");\r\n\r\n dom.setAttribute(\"title\", EC_Fmt.Trn(\"Double-click to view full size\"));\r\n dom.classList.add(\"eChat-Cursor\");\r\n dom.setAttribute(\"image-url\", dom.src);\r\n if (thumbnailUrl && thumbnailHeight > 0 && thumbnailWidth > 0) {\r\n dom.src = thumbnailUrl;\r\n dom.width = thumbnailWidth;\r\n dom.height = thumbnailHeight;\r\n EChat.Util.autoResizeImage(width, height, dom);\r\n } else if (imageWidth > 0 && imageHeight > 0) {\r\n dom.width = imageWidth;\r\n dom.height = imageHeight;\r\n EChat.Util.autoResizeImage(width, height, dom);\r\n } else {\r\n dom.addEventListener(\"load\", function () {\r\n EChat.Util.autoResizeImage(width, height, this);\r\n if (WindowDom) {\r\n const images = WindowDom.querySelectorAll(\"img\");\r\n if (images.length !== 0 && images[images.length - 1] === this) {\r\n WindowDom.scrollTop = WindowDom.scrollHeight;\r\n }\r\n }\r\n });\r\n }\r\n\r\n let clickFlag = null;\r\n dom.addEventListener(\"dblclick\", function () {\r\n if (clickFlag) {\r\n clearTimeout(clickFlag);\r\n }\r\n window.open(this.getAttribute(\"image-url\"));\r\n });\r\n\r\n dom.addEventListener(\"click\", () => {\r\n if (clickFlag) {\r\n clickFlag = clearTimeout(clickFlag);\r\n }\r\n\r\n clickFlag = requestIdleCallback(() => {\r\n const oldDom = document.getElementById(\"ImageQuickPreview\");\r\n if (oldDom) {\r\n oldDom.remove();\r\n }\r\n const preview = document.createElement(\"DIV\");\r\n preview.id = \"ImageQuickPreview\";\r\n const viewImage = document.createElement(\"IMG\");\r\n viewImage.src = dom.src;\r\n preview.appendChild(viewImage);\r\n\r\n preview.setAttribute(\"title\", EC_Fmt.Trn(\"Click to close the quick preview\"));\r\n preview.addEventListener(\"click\", () => {\r\n preview.remove();\r\n });\r\n\r\n const image_url = dom.getAttribute(\"image-url\");\r\n if (image_url !== dom.src) {\r\n const source = document.createElement(\"IMG\");\r\n source.style.display = \"none\";\r\n source.src = image_url;\r\n source.addEventListener(\"load\", () => {\r\n viewImage.src = image_url;\r\n });\r\n\r\n preview.append(source);\r\n }\r\n\r\n document.body.append(preview);\r\n }, { timeout: 1000 });\r\n });\r\n });\r\n\r\n FileDom.querySelectorAll(\"video\").forEach((dom) => {\r\n dom.style.maxWidth = `${width}px`;\r\n dom.style.maxHeight = `${height}px`;\r\n\r\n dom.style.width = \"300px\";\r\n dom.style.height = \"200px\";\r\n });\r\n\r\n FileDom.querySelectorAll(\"audio\").forEach((dom) => {\r\n dom.style.maxWidth = `${width}px`;\r\n });\r\n FileDom.querySelectorAll(\"message\").forEach((dom) => {\r\n const type = dom.getAttribute(\"type\");\r\n const filename = dom.getAttribute(\"filename\");\r\n const size = dom.getAttribute(\"size\");\r\n const displaysize = dom.getAttribute(\"displaysize\");\r\n const ext = dom.getAttribute(\"ext\");\r\n const src = dom.getAttribute(\"src\");\r\n const lng = dom.getAttribute(\"lng\");\r\n const lat = dom.getAttribute(\"lat\");\r\n const address = dom.getAttribute(\"address\");\r\n\r\n dom.textContent = \"\";\r\n\r\n if (type === \"file\") {\r\n switch (ext) {\r\n case \"mp4\":\r\n case \"m4v\":\r\n case \"webm\":\r\n case \"ogv\":\r\n const video = document.createElement(\"VIDEO\");\r\n video.controls = \"controls\";\r\n video.setAttribute(\"src\", src);\r\n video.style.maxWidth = `${width}px`;\r\n video.style.maxHeight = `${height}px`;\r\n video.style.width = \"300px\";\r\n video.style.height = \"200px\";\r\n dom.append(video);\r\n break;\r\n case \"wav\":\r\n case \"mp3\":\r\n const audio = document.createElement(\"AUDIO\");\r\n audio.controls = \"controls\";\r\n audio.setAttribute(\"src\", src);\r\n audio.style.maxWidth = `${width}px`;\r\n dom.append(audio);\r\n break;\r\n default:\r\n let FileClassName = \"\";\r\n switch (ext) {\r\n case \"xls\":\r\n case \"xlsx\":\r\n case \"csv\":\r\n FileClassName = \"ews-icon-emknowledgeXLS\";\r\n break;\r\n case \"txt\":\r\n FileClassName = \"ews-icon-emknowledgeTXT\";\r\n break;\r\n case \"rtf\":\r\n FileClassName = \"ews-icon-emknowledgeRTF\";\r\n break;\r\n case \"ppt\":\r\n case \"pptx\":\r\n case \"pptm\":\r\n case \"ppsx\":\r\n FileClassName = \"ews-icon-emknowledgePPT\";\r\n break;\r\n case \"pdf\":\r\n FileClassName = \"ews-icon-emknowledgePDF\";\r\n break;\r\n case \"html\":\r\n case \"htm\":\r\n FileClassName = \"ews-icon-emknowledgeHTML\";\r\n break;\r\n case \"doc\":\r\n case \"docx\":\r\n case \"docm\":\r\n FileClassName = \"ews-icon-emknowledgeDOC\";\r\n break;\r\n case \"tiff\":\r\n case \"tif\":\r\n case \"giff\":\r\n FileClassName = \"ews-icon-emknowledgeImage\";\r\n break;\r\n case \"avi\":\r\n case \"rmvb\":\r\n case \"rm\":\r\n case \"asf\":\r\n case \"divx\":\r\n case \"mpg\":\r\n case \"mpeg\":\r\n case \"mpe\":\r\n case \"wmv\":\r\n case \"mkv\":\r\n case \"vob\":\r\n FileClassName = \"ews-icon-emknowledgeVideo\";\r\n break;\r\n case \"wma\":\r\n case \"ogg\":\r\n case \"ape\":\r\n case \"acc\":\r\n FileClassName = \"ews-icon-emknowledgeAudio\";\r\n break;\r\n default:\r\n FileClassName = \"ews-icon-emreport\";\r\n break;\r\n }\r\n\r\n const fileTable = document.createElement(\"TABLE\");\r\n const fileTr = document.createElement(\"TR\");\r\n const fileTd1 = document.createElement(\"TD\");\r\n fileTd1.classList.add(\"eChat-File-Icon\");\r\n fileTd1.style.width = \"60px\";\r\n const fileTd2 = document.createElement(\"TD\");\r\n fileTd2.style.width = \"150px\";\r\n const fileName = document.createElement(\"B\");\r\n const fileTip = document.createElement(\"DIV\");\r\n const fileStateIcon = document.createElement(\"SPAN\");\r\n\r\n fileTable.append(fileTr);\r\n fileTr.append(fileTd1);\r\n fileTr.append(fileTd2);\r\n fileTd1.classList.add(FileClassName);\r\n fileTip.style.color = \"var(--neutral-50)\";\r\n fileTd2.append(fileName);\r\n fileTd2.append(fileTip);\r\n fileName.textContent = filename;\r\n // Task 1015039: Server Task Edit: Echat copy Message to Task with attached .xlsx displayed in Task Edit -> Task Details Unable to support this type.\r\n\r\n if (SenderAuthenticationID !== undefined) {\r\n fileStateIcon.classList.add(\"ews-icon-balance\");\r\n fileStateIcon.style.color = \"#15d22d\";\r\n if (EChat.DataProvider.IsCurrentUser(SenderAuthenticationID)) {\r\n fileTip.textContent = `${displaysize} Has been sent `;\r\n } else {\r\n fileTip.textContent = `${displaysize} Has been received `;\r\n }\r\n } else {\r\n fileTip.textContent = displaysize;\r\n }\r\n\r\n fileTip.append(fileStateIcon);\r\n\r\n dom.append(fileTable);\r\n dom.addEventListener(\"dblclick\", () => {\r\n if (FileClassName === \"ews-icon-emknowledgeXLS\") {\r\n // Task 991575: Can not download large xlsx from eChat too large to view Document and then download.\r\n const fileSize = size / 1024;\r\n if (fileSize <= 300) {\r\n window.open(`Home?DashboardID=187482&URL=${encodeURIComponent(src)}&FileName=${encodeURIComponent(filename)}`);\r\n } else if (fileSize > 300 && fileSize <= 1024) {\r\n const html = \"
The file is too large, please choose to continue browsing or download to view.
\";\r\n const dialog = ECP.Dialog.ShowDialog(\"Message\", html, {\r\n confirmButtonTitle: \"Preview\",\r\n confirmButtonAction: () => {\r\n window.open(`Home?DashboardID=187482&URL=${encodeURIComponent(src)}&FileName=${encodeURIComponent(filename)}`);\r\n }\r\n });\r\n const downloadBtn = document.createElement(\"Div\");\r\n // Task 1135380: EChat: Remove all the old buttons, use the new ecp-btn instead\r\n // downloadBtn.innerHTML = ECP.HTML.Button(\"downloadFileBtn\", \"Download\", ECP.HTML.Icons.Download);\r\n downloadBtn.innerHTML = `Download`;\r\n const dialogFooter = dialog.querySelector(\".ecp-dialog-footer\");\r\n dialogFooter.insertBefore(downloadBtn.firstElementChild, dialogFooter.firstChild);\r\n dialogFooter.firstChild.addEventListener(\"click\", () => {\r\n window.open(src);\r\n ECP.Dialog.CloseDialog(dialog);\r\n });\r\n } else {\r\n window.open(src);\r\n }\r\n } else {\r\n window.open(src);\r\n }\r\n });\r\n\r\n dom.setAttribute(\"title\", EC_Fmt.Trn(\"Double-click to download.\"));\r\n dom.classList.add(\"eChat-Cursor\");\r\n break;\r\n }\r\n } else if (type === \"location\") {\r\n const location = EC_Fmt.HtmlStrToElement(\"
\");\r\n const icon = EC_Fmt.HtmlStrToElement(\"\");\r\n\r\n location.append(icon);\r\n location.append(` ${address}`);\r\n location.addEventListener(\"click\", (event) => {\r\n EC_Fmt.OpenWithCtrlClickSupport(event, `api?APICommand=SalesComm_ShowLocationMap&lng=${lng}&lat=${lat}&zoom=16&address=${address}`);\r\n });\r\n dom.append(location);\r\n }\r\n });\r\n },\r\n\r\n PreventScroll(element) {\r\n if (element) {\r\n if (navigator.userAgent.toLowerCase().indexOf(\"firefox\") > -1) {\r\n element.addEventListener(\"wheel\", (e) => {\r\n const delta = e.deltaY * 10;\r\n if (delta !== 0) {\r\n if (delta > 60 || delta < -60) element.scrollTop += delta > 0 ? 60 : -60;\r\n else element.scrollTop += delta;\r\n }\r\n e.preventDefault();\r\n });\r\n } else {\r\n element.onmousewheel = function (e) {\r\n if (e.wheelDelta !== 0) {\r\n if (e.wheelDelta > 60 || e.wheelDelta < -60) element.scrollTop += e.wheelDelta > 0 ? -60 : 60;\r\n else element.scrollTop -= e.wheelDelta;\r\n }\r\n e.preventDefault();\r\n e.returnValue = false;\r\n };\r\n }\r\n }\r\n return element;\r\n },\r\n\r\n dragDialog({\r\n dialog, handle, start, stop, handleWidthFix, handleHeightFix, AllowSelection\r\n }) {\r\n if (dialog.getAttribute(\"isDialogDragAttached\")) {\r\n return;\r\n }\r\n\r\n let currentDialog = null;\r\n let startX;\r\n let startY;\r\n let startX_Min;\r\n let startX_Max;\r\n let startY_Min;\r\n let startY_Max;\r\n let topMin;\r\n let leftMin;\r\n\r\n const mousedown = (event) => {\r\n if (!dialog.getAttribute(\"isDialogDragAttached\") || EChat.FullWindowController.FullWindow) {\r\n return;\r\n }\r\n\r\n currentDialog = dialog;\r\n startX = event.clientX;\r\n startY = event.clientY;\r\n startX_Min = \"\";\r\n startX_Max = \"\";\r\n startY_Min = \"\";\r\n startY_Max = \"\";\r\n topMin = EChat.Util.getHeaderHeight();\r\n leftMin = EChat.Util.getMenuWidth();\r\n\r\n document.addEventListener(\"mousemove\", MoveDialog);\r\n document.addEventListener(\"mouseup\", MoveDone);\r\n\r\n if (handleWidthFix) {\r\n leftMin += handleWidthFix;\r\n }\r\n if (handleHeightFix) {\r\n topMin += handleHeightFix;\r\n }\r\n if (start) {\r\n start(dialog);\r\n }\r\n };\r\n\r\n const MoveDone = () => {\r\n if (currentDialog && !EChat.FullWindowController.FullWindow) {\r\n currentDialog = null;\r\n startX = 0;\r\n startY = 0;\r\n startX_Min = \"\";\r\n startX_Max = \"\";\r\n startY_Min = \"\";\r\n startY_Max = \"\";\r\n document.removeEventListener(\"mouseup\", MoveDone);\r\n document.removeEventListener(\"mousemove\", MoveDialog);\r\n\r\n if (document.body.style.webkitUserSelect !== \"auto\") {\r\n document.body.style.webkitUserSelect = \"auto\";\r\n }\r\n\r\n setTimeout(() => {\r\n EChat.eChatMoving = false;\r\n }, 1000);\r\n\r\n if (stop) {\r\n stop(dialog);\r\n }\r\n }\r\n };\r\n\r\n const MoveDialog = (e) => {\r\n if (currentDialog && !EChat.FullWindowController.FullWindow) {\r\n EChat.eChatMoving = true;\r\n\r\n let top = (currentDialog.style.top ? parseInt(currentDialog.style.top.replace(\"px\", \"\")) : currentDialog.getBoundingClientRect().y) + e.clientY - startY;\r\n let left = (currentDialog.style.left ? parseInt(currentDialog.style.left.replace(\"px\", \"\")) : currentDialog.getBoundingClientRect().x) + e.clientX - startX;\r\n const topMaxLimit = window.innerHeight - currentDialog.clientHeight;\r\n const leftMaxLimit = window.innerWidth - currentDialog.clientWidth;\r\n\r\n if (!AllowSelection && document.body.style.webkitUserSelect !== \"none\" && startY !== e.clientY && startX !== e.clientX) {\r\n document.body.style.webkitUserSelect = \"none\";\r\n }\r\n\r\n if (top < topMin) {\r\n top = topMin;\r\n // Task 954410: When there are too many DOM elements on the page. eChat minimizes the jam\r\n if (document.body.style.webkitUserSelect !== \"none\") {\r\n document.body.style.webkitUserSelect = \"none\";\r\n }\r\n }\r\n\r\n if (top > topMaxLimit) {\r\n if (topMaxLimit < topMin) {\r\n top = topMin;\r\n } else {\r\n top = topMaxLimit;\r\n }\r\n\r\n if (document.body.style.webkitUserSelect !== \"none\") {\r\n document.body.style.webkitUserSelect = \"none\";\r\n }\r\n if (startY_Max === \"\") {\r\n startY_Max = e.clientY;\r\n }\r\n }\r\n\r\n if (left < leftMin) {\r\n left = leftMin;\r\n if (document.body.style.webkitUserSelect !== \"none\") {\r\n document.body.style.webkitUserSelect = \"none\";\r\n }\r\n }\r\n\r\n if (left > leftMaxLimit) {\r\n left = leftMaxLimit;\r\n if (document.body.style.webkitUserSelect !== \"none\") {\r\n document.body.style.webkitUserSelect = \"none\";\r\n }\r\n if (startX_Max === \"\") {\r\n startX_Max = e.clientX;\r\n }\r\n }\r\n\r\n currentDialog.style.top = `${top}px`;\r\n currentDialog.style.left = `${left}px`;\r\n\r\n if ((startY_Min === \"\" || e.clientY > startY_Min) && (startY_Max === \"\" || e.clientY < startY_Max)) {\r\n startY = e.clientY;\r\n }\r\n if ((startX_Min === \"\" || e.clientX > startX_Min) && (startX_Max === \"\" || e.clientX < startX_Max)) {\r\n startX = e.clientX;\r\n }\r\n\r\n if (top === topMin && startY_Min === \"\") {\r\n startY_Min = e.clientY;\r\n }\r\n if (left === leftMin && startX_Min === \"\") {\r\n startX_Min = e.clientX;\r\n }\r\n }\r\n };\r\n\r\n handle.addEventListener(\"mousedown\", mousedown);\r\n dialog.querySelectorAll(\".eChatDragTarget\").forEach((dom) => {\r\n if (dom !== handle) {\r\n dom.addEventListener(\"mousedown\", mousedown);\r\n }\r\n });\r\n\r\n dialog.setAttribute(\"isDialogDragAttached\", \"1\");\r\n },\r\n\r\n dragResize({\r\n handle, start, move, end, resizeDirection\r\n }) {\r\n if (handle.getAttribute(\"isDialogDragAttached\")) {\r\n return;\r\n }\r\n\r\n let currentHandle = null;\r\n let startX;\r\n let startY;\r\n let lastStartX;\r\n let lastStartY;\r\n let topMin;\r\n let leftMin;\r\n const MoveStart = (e) => {\r\n if (EChat.FullWindowController.FullWindow) {\r\n return;\r\n }\r\n currentHandle = handle;\r\n lastStartY = e.pageY;\r\n lastStartX = e.pageX;\r\n startY = e.pageY;\r\n startX = e.pageX;\r\n document.body.style.webkitUserSelect = \"none\";\r\n document.addEventListener(\"mousemove\", Moveing);\r\n document.addEventListener(\"mouseup\", MoveDone);\r\n topMin = EChat.Util.getHeaderHeight();\r\n leftMin = EChat.Util.getMenuWidth();\r\n if (start) {\r\n start();\r\n }\r\n };\r\n\r\n const Moveing = (e) => {\r\n if (Math.random() > 0.8 && !EChat.FullWindowController.FullWindow) {\r\n return;\r\n }\r\n if (currentHandle) {\r\n const resizeContext = {};\r\n EChat.eChatMoving = true;\r\n\r\n if (e.pageY > window.innerHeight || e.pageX > window.innerWidth) {\r\n return;\r\n }\r\n\r\n let mouseY = e.pageY;\r\n let mouseX = e.pageX;\r\n\r\n if (mouseY < topMin) {\r\n mouseY = topMin;\r\n }\r\n\r\n if (mouseX < leftMin) {\r\n mouseX = leftMin;\r\n }\r\n\r\n if (resizeDirection === \"s\" || resizeDirection === \"se\") {\r\n resizeContext.RelativeHeight = mouseY - lastStartY;\r\n resizeContext.AbsoluteHeight = mouseY - startY;\r\n }\r\n\r\n if (resizeDirection === \"e\" || resizeDirection === \"se\") {\r\n resizeContext.RelativeWidth = mouseX - lastStartX;\r\n resizeContext.AbsoluteWidth = mouseX - startX;\r\n }\r\n\r\n lastStartY = mouseY;\r\n lastStartX = mouseX;\r\n\r\n if (move) {\r\n move(resizeContext);\r\n }\r\n }\r\n };\r\n\r\n const MoveDone = () => {\r\n if (currentHandle && !EChat.FullWindowController.FullWindow) {\r\n currentHandle = null;\r\n lastStartX = 0;\r\n lastStartY = 0;\r\n startX = 0;\r\n startY = 0;\r\n document.removeEventListener(\"mouseup\", MoveDone);\r\n document.removeEventListener(\"mousemove\", Moveing);\r\n document.body.style.webkitUserSelect = \"auto\";\r\n setTimeout(() => {\r\n EChat.eChatMoving = false;\r\n }, 1000);\r\n\r\n if (end) {\r\n end();\r\n // Task 1003469: The chat box size should not exceed the page size.\r\n if (resizeDirection === \"se\") {\r\n EChat.MainPageController.messageWindowList[0].changeOldMessageWin();\r\n }\r\n }\r\n }\r\n };\r\n handle.addEventListener(\"mousedown\", MoveStart);\r\n handle.setAttribute(\"isDialogDragAttached\", \"1\");\r\n },\r\n\r\n WaitTime(time) {\r\n return new Promise((resolve) => {\r\n setTimeout(() => {\r\n resolve();\r\n }, time);\r\n });\r\n },\r\n\r\n IsRecentSearchState() {\r\n const EChatSearchText = document.getElementById(\"EChatSearchText\");\r\n const EChatRecentSwitchBtn = document.getElementById(\"EChatRecentSwitchBtn\");\r\n return EChatSearchText && EChatRecentSwitchBtn?.classList.contains(\"eChat-CurrentTab\") && (EChatSearchText.value || EChatSearchText.getAttribute(\"tab\"));\r\n }\r\n};\r\n\r\nEChat.LocalStorage = (function () {\r\n const LocalStorageClass = function () {\r\n const _this = this;\r\n let localstorage;\r\n let sessionstorage;\r\n try {\r\n localstorage = window.localStorage;\r\n sessionstorage = window.sessionStorage;\r\n } catch (ex) {\r\n localstorage = null;\r\n sessionstorage = null;\r\n }\r\n this.isOpen = false;\r\n // this.isLocalOnStorage = false;\r\n\r\n this.check = function () {\r\n if (localstorage && sessionstorage) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n this.startListen = function () {\r\n if (!_this.isOpen) {\r\n window.addEventListener(\"storage\", localStorageListener);\r\n _this.isOpen = true;\r\n }\r\n };\r\n\r\n this.writeLocalStorage = function (key, value) {\r\n try {\r\n window.localStorage.setItem(key, value);\r\n } catch (e) {\r\n // Task 951021: JavaScript Error: includes/DefaultAll.min.js (1) - uncaught exception: QuotaExceededError. use 14.22KB\r\n if (e.name === \"QuotaExceededError\") {\r\n EChat.Util.removeEChat();\r\n if (!EChat.StorageError) {\r\n EChat.StorageError = true;\r\n // eslint-disable-next-line no-console\r\n console.warn(\"eChat initialization failed. Error: local storage quota exceeded.\");\r\n }\r\n } else {\r\n throw e;\r\n }\r\n }\r\n };\r\n\r\n this.readLocalStorage = function (key) {\r\n return window.localStorage.getItem(key);\r\n };\r\n\r\n this.removeLocalStorage = function (key) {\r\n window.localStorage.removeItem(key);\r\n };\r\n\r\n this.clearLocalStorage = function () {\r\n for (let i = 0; i < window.localStorage.length; i++) {\r\n const key = window.localStorage.key(i);\r\n if (key.indexOf(\"^\") > -1) {\r\n _this.removeLocalStorage(key);\r\n i--;\r\n }\r\n }\r\n };\r\n\r\n this.writeSessionStorage = function (key, value) {\r\n _this.isSessionOnStorage = true;\r\n sessionstorage.setItem(key, value);\r\n };\r\n\r\n this.readSessionStorage = function (key) {\r\n return sessionstorage.getItem(key);\r\n };\r\n\r\n this.removeSessionStorage = function (key) {\r\n sessionstorage.removeItem(key);\r\n };\r\n\r\n const localStorageListener = function (origEvent) {\r\n const localStorageKey = origEvent.key;\r\n const localStorageNewValue = origEvent.newValue;\r\n const eChatDataProvider = EChat.DataProvider;\r\n const currentAuthID = eChatDataProvider.CurrentUserInfo.AuthenticationID;\r\n if (localStorageNewValue && localStorageNewValue !== origEvent.oldValue) {\r\n switch (localStorageKey) {\r\n case EChat.LocalStorageType.ECHATAUTHID:\r\n const authID = Number(localStorageNewValue);\r\n if (authID !== eChatDataProvider.CurrentUserInfo.AuthenticationID) {\r\n eChatDataProvider.CurrentUserInfo.SenderAuthenticationID = authID;\r\n EChat.eChatState = false;\r\n EChat.MainPageController.removeEChatView();\r\n EChat.Util.initEChat();\r\n }\r\n break;\r\n case EChat.LocalStorageType.DBUPDATE:\r\n requestIdleCallback(() => {\r\n eChatDataProvider.DBUpdate(JSON.parse(localStorageNewValue));\r\n });\r\n break;\r\n case EChat.LocalStorageType.DBDELETED:\r\n eChatDataProvider.DBDeleted(JSON.parse(localStorageNewValue));\r\n break;\r\n case EChat.LocalStorageType.UNREADDATA:\r\n EChat.MainPageController.unReadDataChange(JSON.parse(localStorageNewValue), true);\r\n break;\r\n case `${currentAuthID}^${EChat.LocalStorageType.ECHATSTARTSESSION}`:\r\n eChatDataProvider.StartSessionReceive(JSON.parse(localStorageNewValue), true);\r\n break;\r\n case EChat.LocalStorageType.CLOSTSCREENSHARECONFIRM:\r\n ECP.Dialog.CloseDialog(ScreenShareRequestDialog);\r\n break;\r\n case EChat.LocalStorageType.RECEIVETASKDETAIL:\r\n EChat.MainPageController.receiveTaskDetail(JSON.parse(localStorageNewValue), true);\r\n break;\r\n }\r\n }\r\n return true;\r\n };\r\n };\r\n return new LocalStorageClass();\r\n}());\r\n\r\nEChat.WebSocket = (function () {\r\n const WebSocketClass = function () {\r\n const _this = this;\r\n let isInit = false;\r\n this.check = function () {\r\n return !(window.WebSocket === undefined);\r\n };\r\n\r\n this.WebSocketInit = function () {\r\n if (!isInit) {\r\n if (SocketUtil.checkConnected()) {\r\n EChat.MainPageController.updateUnreadSumCount(\"Socket connected\");\r\n EChat.IndexedDB.UpdateSetting(\"ConnectionTime\", EChat.Util.getTimeStamp()).then(() => {\r\n if (EChat.eChatState && EChat.PageActive) {\r\n EChat.IndexedDB.InitDBData();\r\n }\r\n });\r\n }\r\n SocketUtil.on(\"message\", webSocketMessage);\r\n SocketUtil.on(\"connect\", (data, isStorage) => {\r\n _this.UpdateEChatState(\"connect\");\r\n if (!isStorage) {\r\n setTimeout(() => {\r\n EChat.MainPageController.updateUnreadSumCount(\"Socket connected\");\r\n }, 1000);\r\n EChat.IndexedDB.UpdateSetting(\"ConnectionTime\", EChat.Util.getTimeStamp());\r\n }\r\n if (EChat.eChatState && EChat.PageActive) {\r\n setTimeout(() => {\r\n EChat.IndexedDB.InitDBData(0, true);\r\n }, 1000);\r\n }\r\n });\r\n SocketUtil.on(\"disconnect\", () => {\r\n _this.UpdateEChatState(\"disconnect\");\r\n });\r\n SocketUtil.on(\"reconnecting\", () => {\r\n _this.UpdateEChatState(\"reconnecting\");\r\n });\r\n SocketUtil.on(\"reconnect\", () => {\r\n _this.UpdateEChatState(\"reconnect\");\r\n });\r\n SocketUtil.on(\"expire\", () => {\r\n _this.UpdateEChatState(\"expire\");\r\n });\r\n\r\n isInit = true;\r\n }\r\n };\r\n\r\n this.UpdateEChatState = function (State) {\r\n const EChatStateEle = document.createElement(\"DIV\");\r\n let StateText = \"\";\r\n let Color = \"\";\r\n const EChatUserName = document.getElementById(\"EChatUserName\");\r\n const EChatMsgTip = document.getElementById(\"EChatMsgTip\");\r\n\r\n switch (State) {\r\n case SocketUtil.SocketState.Reconnect:\r\n StateText = \"Reconnect\";\r\n\r\n Color = \"#0089ff\";\r\n if (EChatUserName) {\r\n EChatUserName.style.display = \"none\";\r\n }\r\n break;\r\n case SocketUtil.SocketState.Connect:\r\n StateText = \"\";\r\n\r\n if (EChatUserName) {\r\n EChatUserName.style.display = \"block\";\r\n }\r\n\r\n const EChatNewMsgNum = document.getElementById(\"EChatNewMsgNum\");\r\n\r\n if (EChatMsgTip && EChatNewMsgNum?.innerText !== \"\") {\r\n EChatMsgTip.style.display = \"block\";\r\n }\r\n break;\r\n case SocketUtil.SocketState.Reconnecting:\r\n StateText = \"Reconnecting\";\r\n\r\n Color = \"var(--red-50)\";\r\n if (EChatUserName) {\r\n EChatUserName.style.display = \"none\";\r\n }\r\n if (EChatMsgTip) {\r\n EChatMsgTip.style.display = \"none\";\r\n }\r\n break;\r\n case SocketUtil.SocketState.Disconnect:\r\n StateText = \"Disconnected\";\r\n\r\n Color = \"var(--red-50)\";\r\n if (EChatUserName) {\r\n EChatUserName.style.display = \"none\";\r\n }\r\n if (EChatMsgTip) {\r\n EChatMsgTip.style.display = \"none\";\r\n }\r\n break;\r\n\r\n case SocketUtil.SocketState.Error:\r\n StateText = \"Error. Click Retry.\";\r\n\r\n Color = \"var(--red-50)\";\r\n if (EChatUserName) {\r\n EChatUserName.style.display = \"none\";\r\n }\r\n if (EChatMsgTip) {\r\n EChatMsgTip.style.display = \"none\";\r\n }\r\n break;\r\n\r\n case SocketUtil.SocketState.Expire:\r\n // Task 1047426: Change message from Session Expire to Session Expired\r\n StateText = \"Session Expired\";\r\n Color = \"var(--red-50)\";\r\n if (EChatUserName) {\r\n EChatUserName.style.display = \"none\";\r\n }\r\n if (EChatMsgTip) {\r\n EChatMsgTip.style.display = \"none\";\r\n }\r\n break;\r\n default:\r\n }\r\n\r\n EChatStateEle.style.cursor = \"pointer\";\r\n EChatStateEle.addEventListener(\"click\", () => {\r\n EWS.VerifySession(() => {\r\n SocketUtil.Reconnect();\r\n });\r\n });\r\n\r\n EChatStateEle.textContent = StateText;\r\n EChatStateEle.setAttribute(\"title\", \"Click reconnect.\");\r\n EChatStateEle.style.color = Color;\r\n\r\n const EChatStateTip = document.getElementById(\"EChatStateTip\");\r\n if (EChatStateTip) {\r\n EChatStateTip.innerHTML = \"\";\r\n EChatStateTip.append(EChatStateEle);\r\n }\r\n };\r\n\r\n const webSocketMessage = function (data, isStorage) {\r\n const eChatDataProvider = EChat.DataProvider;\r\n switch (data.Command) {\r\n case SocketUtil.Command.Message:\r\n const messageObj = {\r\n MessageID: data.MessageID,\r\n Message: data.MessageBody,\r\n MessageGroupID: data.MessageGroupID,\r\n SenderAuthenticationID: data.SenderAuthenticationID,\r\n TimeCreated: data.TimeCreated,\r\n DataInfo: data.DataInfo\r\n };\r\n\r\n eChatDataProvider.ReceiveMessage(messageObj, isStorage);\r\n break;\r\n case SocketUtil.Command.ReadGroupMessage:\r\n eChatDataProvider.SyncLocalLastReadTime({ MessageGroupID: data.MessageGroupID, DataInfo: data.DataInfo }, isStorage);\r\n break;\r\n case SocketUtil.Command.GroupChange:\r\n eChatDataProvider.UpdateGroupMessageReceive({ MessageGroupID: data.MessageGroupID, DataInfo: data.DataInfo }, isStorage);\r\n break;\r\n case SocketUtil.Command.WriteState:\r\n eChatDataProvider.WriteStateReceive({ MessageGroupID: data.MessageGroupID, SenderAuthenticationID: data.SenderAuthenticationID, DataInfo: data.DataInfo }, isStorage);\r\n break;\r\n case SocketUtil.Command.UserAvailability:\r\n eChatDataProvider.UpdateUserAvailability(data.DataInfo);\r\n break;\r\n case SocketUtil.Command.SupportGroup:\r\n break;\r\n case SocketUtil.Command.MessageRecalled:\r\n eChatDataProvider.MessageRecalled({\r\n MessageGroupID: data.MessageGroupID, MessageID: data.MessageID, SenderAuthenticationID: data.SenderAuthenticationID, MessageBody: data.MessageBody\r\n }, isStorage);\r\n break;\r\n case SocketUtil.Command.ReadTask:\r\n eChatDataProvider.SyncLocalTaskRead(data.DataInfo.TaskID, data.DataInfo.TaskSourceEncompassID, isStorage);\r\n break;\r\n case SocketUtil.Command.TaskChange:\r\n eChatDataProvider.UpdateTaskGroup(data.MessageGroupID, data.DataInfo.TaskID, isStorage);\r\n break;\r\n }\r\n };\r\n };\r\n return new WebSocketClass();\r\n}());\r\n\r\nEChat.DataProvider = (function () {\r\n const EChatDataProviderClass = function () {\r\n EChat.EventDispatcher.call(this);\r\n\r\n const _this = this;\r\n\r\n this.CurrentUserInfo = null;\r\n this.EncompassID = null;\r\n this.LastMessageTime = {};\r\n this.SendWriteStateTime = {};\r\n let lastUpdateSessionTime = 0;\r\n let createdGrouping = false;\r\n let RefreshHandle = -1;\r\n let missUserInfoHandle = -1;\r\n this.UserDict = {}; // index AuthenticationID\r\n this.MissUserInfo = [];\r\n\r\n this.DBUpdate = function (UpdateInfo) {\r\n if (UpdateInfo?.TableName) {\r\n const keyList = UpdateInfo.Key;\r\n const tableName = UpdateInfo.TableName;\r\n switch (tableName) {\r\n case EChat.DBTableName.GROUPINFO:\r\n EChat.IndexedDB.GetTableDataByKeyList(EChat.DBTableName.GROUPINFO, keyList).then(async (newGroupList) => {\r\n const values = Object.values(newGroupList);\r\n for (let i = 0; i < values.length; i++) {\r\n const newGroup = values[i];\r\n await EChat.MainPageController.redrawGroupEvent(newGroup);\r\n const msgGroupID = newGroup.MessageGroupID;\r\n EChat.MainPageController.updatePromptIcon({ groupID: msgGroupID, taskID: newGroup.TaskID, prompt: newGroup.Prompt });\r\n if (EChat.MainPageController.checkMessageWindowExist(msgGroupID)) {\r\n const chatTab = EChat.MainPageController.getMessageWindow(msgGroupID).chatTabList[msgGroupID];\r\n if (chatTab) {\r\n chatTab.GroupInfo = newGroup;\r\n chatTab.updateGroupName();\r\n chatTab.refreshMessageList(newGroup.Messages);\r\n }\r\n }\r\n }\r\n });\r\n break;\r\n case EChat.DBTableName.SETTINGS:\r\n const values = Object.values(keyList);\r\n for (let i = 0; i < values.length; i++) {\r\n switch (values[i]) {\r\n case \"InitUser\":\r\n EChat.IndexedDB.GetSetting(\"InitUser\").then((SettingValue) => {\r\n if (SettingValue) {\r\n SetCurrPageUserInfo(SettingValue);\r\n EChat.MainPageController.updateUserSetting(\"AudioAlert\", SettingValue.AudioAlert, true);\r\n }\r\n });\r\n break;\r\n case \"EChatState\":\r\n EChat.IndexedDB.GetSetting(\"EChatState\").then((SettingValue) => {\r\n if (SettingValue) {\r\n EChat.WebSocket.UpdateEChatState(SettingValue.State, SettingValue.Tittle);\r\n }\r\n });\r\n break;\r\n case \"Notify\":\r\n EChat.IndexedDB.GetSetting(\"Notify\").then((SettingValue) => {\r\n if (SettingValue && EChat.MainPageController.messageWindowList) {\r\n const messageValues = Object.values(EChat.MainPageController.messageWindowList);\r\n for (let k = 0; k < messageValues.length; k++) {\r\n const switchBtn = messageValues[i].notifySwitch;\r\n if (switchBtn && SettingValue.Notify) {\r\n switchBtn.Open();\r\n } else if (switchBtn) {\r\n switchBtn.Close();\r\n }\r\n }\r\n }\r\n });\r\n break;\r\n case \"RefreshBtnColor\":\r\n EChat.IndexedDB.GetSetting(\"RefreshBtnColor\").then((SettingValue) => {\r\n if (SettingValue) {\r\n EChat.MainPageController.RefreshBtnColor(SettingValue.Color, true);\r\n }\r\n });\r\n break;\r\n case \"UnreadGroup\":\r\n EChat.MainPageController.unreadSumCountChange();\r\n break;\r\n case \"ChatSize\":\r\n EChat.IndexedDB.GetSetting(\"ChatSize\").then((SettingValue) => {\r\n if (SettingValue && EChat.MainPageController) {\r\n EChat.MainPageController.chatWindowSize = SettingValue;\r\n }\r\n });\r\n break;\r\n case \"MainSize\":\r\n EChat.IndexedDB.GetSetting(\"MainSize\").then((SettingValue) => {\r\n if (SettingValue && EChat.MainPageController) {\r\n EChat.MainPageController.mainWindowSize = SettingValue;\r\n EChat.MainPageController.resizeDialog();\r\n }\r\n });\r\n break;\r\n case \"SavedMessages\":\r\n EChat.IndexedDB.GetSetting(\"SavedMessages\").then((SettingValue) => {\r\n if (SettingValue) {\r\n EChat.DataProvider.SavedMessage = SettingValue;\r\n EChat.MainPageController.refreshSavedMessage();\r\n EChat.SavedMessageChange = true;\r\n }\r\n });\r\n break;\r\n }\r\n }\r\n break;\r\n case EChat.DBTableName.TABLEALERTS:\r\n _this.dispatch(EChat.CustomEvent.REDRAWTABLEALERTS, _this.createHandlerArgument(null, null));\r\n break;\r\n default:\r\n }\r\n }\r\n };\r\n\r\n this.DBDeleted = function (DeleteInfo) {\r\n if (DeleteInfo?.TableName) {\r\n const keyList = DeleteInfo.Key;\r\n const tableName = DeleteInfo.TableName;\r\n switch (tableName) {\r\n // Task 438700\r\n case EChat.DBTableName.GROUPINFO:\r\n const values = Object.values(keyList);\r\n for (let i = 0; i < values.length; i++) {\r\n _this.dispatch(EChat.CustomEvent.DELETEGROUP, _this.createHandlerArgument(null, values[i]));\r\n }\r\n break;\r\n }\r\n }\r\n };\r\n\r\n this.api = function (commmand, data, ReturnText) {\r\n return new Promise(((resolve, reject) => {\r\n EWS.VerifySession(() => {\r\n const myRequest = new ECP.EC_Request(commmand);\r\n if (data) {\r\n const keys = Object.keys(data);\r\n for (let i = 0; i < keys.length; i++) {\r\n myRequest.AddRequestVariable(keys[i], data[keys[i]], ECP.EC_Verb.Post);\r\n }\r\n }\r\n if (ReturnText) {\r\n myRequest.SetReturnType(ECP.EC_ReturnType.Text);\r\n myRequest.Submit().then((text) => {\r\n if (text.indexOf(\"{\") === 0) {\r\n try {\r\n const jsonObj = JSON.parse(text);\r\n if (!jsonObj.errors) {\r\n resolve(text);\r\n } else {\r\n reject(`ajax error. ${jsonObj.errors[0].detail}`);\r\n }\r\n } catch (e) {\r\n resolve(text);\r\n }\r\n } else {\r\n resolve(text);\r\n }\r\n });\r\n } else {\r\n myRequest.SetReturnType(ECP.EC_ReturnType.Json);\r\n myRequest.Submit().then((jsonObj) => {\r\n if (!jsonObj.errors) {\r\n resolve(jsonObj);\r\n } else {\r\n reject(`ajax error. ${jsonObj.errors[0].detail}`);\r\n }\r\n }).catch((ex) => {\r\n // eslint-disable-next-line no-console\r\n console.error(ex);\r\n reject(`ajax error. ${ex}`);\r\n });\r\n }\r\n });\r\n }\r\n ));\r\n };\r\n\r\n // Task 1033867: eChat: User icons are different on Recent view vs. Directory view\r\n this.GetMissUserInfo = function () {\r\n clearTimeout(missUserInfoHandle);\r\n missUserInfoHandle = setTimeout(async () => {\r\n const userInfoArr = await EChat.DataProvider.api(\"SalesComm_EChat_GetUsers\", {\r\n UserList: EC_Fmt.Null2EmptyStr(_this.MissUserInfo.join())\r\n });\r\n\r\n _this.MissUserInfo = [];\r\n for (let i = 0; i < userInfoArr.Users.length; i++) {\r\n const userInfo = userInfoArr.Users[i];\r\n const userDom = document.querySelector(`.eChat-Miss-Avatar[authid='${userInfo.AuthenticationID}']`);\r\n if (userDom && userInfo.Icon) {\r\n userDom.style.backgroundImage = `url(${userInfo.Icon})`;\r\n _this.UserDict[userInfo.AuthenticationID] = userInfo;\r\n userDom.classList.remove(\"eChat-Miss-Avatar\");\r\n userDom.removeAttribute(\"authid\");\r\n }\r\n }\r\n }, 1000);\r\n };\r\n\r\n this.GetTaskStatusElementByObjectiveID = function (ObjectiveID, TaskStatusID) {\r\n return new Promise(((resolve, reject) => {\r\n _this.api(`GetTaskStatusElementByObjectiveID&ObjectiveID=${ObjectiveID}&TaskStatusID=${TaskStatusID}`).then((data) => {\r\n if (data?.ele) {\r\n resolve(data.ele);\r\n } else {\r\n reject();\r\n }\r\n }).catch(() => {\r\n reject();\r\n });\r\n }));\r\n };\r\n\r\n this.GetTaskPublicMessageGroupID = async function (groupId) {\r\n const postData = {\r\n TaskSourceEncompassID: groupId.split(\"_\")[0],\r\n TaskID: groupId.split(\"_\")[1]\r\n };\r\n const result = await SocketUtil.api(\"GetTaskPublicMessageGroupID\", postData);\r\n return result;\r\n };\r\n\r\n this.GetGroupInfoByGroupID = async function (groupId, Refresh, ExcludeMessage) {\r\n let groupInfo = await EChat.IndexedDB.GetTableDataByKey(EChat.DBTableName.GROUPINFO, groupId);\r\n if (!groupInfo || Refresh === true) {\r\n const postData = { MessageGroupID: groupId };\r\n if (ExcludeMessage) {\r\n postData.ExcludeMessage = true;\r\n }\r\n\r\n let result;\r\n try {\r\n if (groupId.split(\"_\").length === 2) {\r\n postData.TaskID = groupId.split(\"_\")[1];\r\n postData.TaskSourceEncompassID = groupId.split(\"_\")[0];\r\n result = await SocketUtil.api(\"GetTaskGroupInfo2010\", postData);\r\n } else {\r\n result = await SocketUtil.api(\"GetGroupInfo2006\", postData);\r\n }\r\n } catch (e) {\r\n if (e.ErrorCode === SocketUtil.ErrorCode.NoPermission || e.ErrorCode === SocketUtil.ErrorCode.NoGroup) {\r\n await EChat.DataProvider.deleteGroupData(groupId, true, true);\r\n return null;\r\n }\r\n // eslint-disable-next-line no-console\r\n console.error(e.ErrorCode + e.ErrorMessage);\r\n return null;\r\n }\r\n\r\n await _this.WriteGroupInfo(result);\r\n const messageGroupID = result.MessageGroup.MessageGroupID;\r\n groupInfo = await EChat.IndexedDB.GetTableDataByKey(EChat.DBTableName.GROUPINFO, messageGroupID);\r\n\r\n // Task 833748: Receive the first message of a new message group. Total unread messages not updated\r\n if (groupInfo.GroupType === SocketUtil.GroupType.Task || groupInfo.Prompt !== EChat.PromptType.DoNotDisturb) {\r\n await EChat.IndexedDB.UpdateGroupUnread([groupInfo.MessageGroupID], groupInfo.UnReadCount, true);\r\n }\r\n\r\n await EChat.MainPageController.redrawGroupEvent(groupInfo);\r\n groupInfo.NewData = true;\r\n }\r\n\r\n return groupInfo;\r\n };\r\n\r\n this.WriteGroupInfo = async function (data) {\r\n const groupInfo = data.MessageGroup;\r\n groupInfo.Users = data.GroupUsers;\r\n groupInfo.Messages = data.Messages;\r\n if (data.GroupRead) {\r\n const groupRead = data.GroupRead;\r\n groupInfo.LastReadTime = groupRead.LastReadTime;\r\n groupInfo.ReadCount = groupRead.ReadCount;\r\n groupInfo.MessageCount = groupRead.MessageCount;\r\n groupInfo.UnReadCount = groupRead.UnReadCount;\r\n groupInfo.MessageUpdated = groupRead.MessageUpdated;\r\n groupInfo.Prompt = groupRead.Prompt;\r\n groupInfo.PostPermission = groupRead.PostPermission;\r\n }\r\n\r\n await EChat.IndexedDB.UpdateGroupInfo([groupInfo], true);\r\n };\r\n\r\n this.GetGroupInfoByAuthIDList = function (userList) {\r\n return new Promise((resolve) => {\r\n let groupData = null;\r\n EChat.Util.ShowLoading();\r\n EChat.IndexedDB.GetTableDataByIndex(EChat.DBTableName.GROUPINFO, \"GroupType\", SocketUtil.GroupType.Message).then((GroupDic) => {\r\n if (GroupDic) {\r\n const values = Object.values(GroupDic);\r\n for (let i = 0; i < values.length; i++) {\r\n if (_this.GetUserStrByGroupInfo(values[i]) === userList && EC_Fmt.isNull(values[i].GroupName)) {\r\n groupData = values[i];\r\n resolve(groupData);\r\n break;\r\n }\r\n }\r\n }\r\n if (!groupData && !createdGrouping) {\r\n createdGrouping = true;\r\n _this.CreateGroup(userList, SocketUtil.GroupType.Message).then((jsonData) => {\r\n ECP.Dialog.HideLoading();\r\n createdGrouping = false;\r\n if (jsonData) {\r\n resolve(jsonData);\r\n }\r\n }).catch((e) => {\r\n EChat.Util.errorAlert(e);\r\n createdGrouping = false;\r\n });\r\n } else {\r\n ECP.Dialog.HideLoading();\r\n }\r\n }).catch(() => {\r\n ECP.Dialog.HideLoading();\r\n });\r\n });\r\n };\r\n\r\n // Task 689770: Call Manager: Availability not working bases on the CallStatus.\r\n this.GetUserAvailabilityClassAndColor = function (Availability) {\r\n switch (Availability.toString()) {\r\n case \"\":\r\n return null;\r\n case \"0\":\r\n return null;\r\n case \"1\":\r\n return { Class: \"ews-icon-circle-closed\", Color: \"var(--primary-30)\" };\r\n case \"2\":\r\n return { Class: \"ews-icon-half-circle\", Color: \"var(--primary-30)\" };\r\n case \"3\":\r\n return { Class: \"ews-icon-minus\", Color: \"#ff9900\" };\r\n case \"4\":\r\n // Task 760966: Change color for In Call Availability status to blue\r\n return { Class: \"ews-icon-phone\", Color: \"#3851f2\" };\r\n case \"5\":\r\n return { Class: \"ews-icon-circle-closed\", Color: \"var(--red-50)\" };\r\n case \"6\":\r\n return { Class: \"ews-icon-half-circle\", Color: \"var(--red-50)\" };\r\n case \"7\":\r\n return { Class: \"ews-icon-circl-eopen\", Color: \"#bfbfbf\" };\r\n case \"8\":\r\n return { Class: \"ews-icon-audit\", Color: \"#d200ff\" };\r\n default:\r\n return { Class: \"ews-icon-circle-closed\", Color: \"#bfbfbf\" };\r\n }\r\n };\r\n\r\n // Task 930531: eChat Dashboard: Optimize the eChat dashboard, make it load faster\r\n this.GetGroupAvatarUrlAndAuthID = function (groupInfo, currentUserInfo) {\r\n let url = null;\r\n let chatAuthID = 0;\r\n if (groupInfo.GroupType === SocketUtil.GroupType.System) {\r\n url = EChat.Setting.DefaultAlertIcon;\r\n } else if (!EC_Fmt.isNull(groupInfo.Icon)) {\r\n url = groupInfo.Icon;\r\n } else if (groupInfo.GroupType === SocketUtil.GroupType.Task) {\r\n url = EChat.Setting.DefaultTaskIcon;\r\n } else if (groupInfo.Users?.length <= 2) {\r\n for (let i = 0; i < groupInfo.Users.length; i++) {\r\n const userAuthID = parseInt(groupInfo.Users[i]);\r\n\r\n if (userAuthID !== currentUserInfo.AuthenticationID || groupInfo.Users.length === 1) {\r\n chatAuthID = userAuthID;\r\n if (groupInfo.Messages) {\r\n for (let j = 0; j < groupInfo.Messages.length; j++) {\r\n if (userAuthID === parseInt(groupInfo.Messages[j].SenderAuthenticationID) && groupInfo.Messages[j].SenderUserAvatar) {\r\n url = groupInfo.Messages[j].SenderUserAvatar;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (EC_Fmt.isNull(url)) {\r\n url = EChat.Setting.DefaultUserIcon;\r\n }\r\n } else if (groupInfo.UserCount === 2) {\r\n // Super Seacher Result\r\n url = EChat.Setting.DefaultUserIcon;\r\n } else {\r\n url = EChat.Setting.DefaultGroupIcon;\r\n }\r\n return { Url: url, AuthID: chatAuthID };\r\n };\r\n\r\n this.GetUserInfo = async function (missUser) {\r\n if (missUser?.length !== 0) {\r\n try {\r\n const data = await EChat.DataProvider.api(\"SalesComm_EChat_GetUsers\", { UserList: missUser.toString() });\r\n if (data?.Users) {\r\n return data.Users;\r\n }\r\n } catch (e) {\r\n EChat.Util.errorAlert(e);\r\n }\r\n }\r\n return [];\r\n };\r\n\r\n this.CancelSavedMessage = async function ({\r\n TaskID, TaskDetailID, TaskSourceEncompassID, MessageGroupKey, MessageKey\r\n }) {\r\n let success = false;\r\n if (TaskDetailID || MessageKey) {\r\n try {\r\n await SocketUtil.api(\"CancelSavedMessage\", {\r\n TaskID,\r\n TaskDetailID,\r\n TaskSourceEncompassID,\r\n MessageGroupKey,\r\n MessageKey\r\n });\r\n success = true;\r\n } catch (e) {\r\n EChat.Util.errorAlert(e);\r\n }\r\n }\r\n return success;\r\n };\r\n\r\n this.AddSavedMessage = async function ({\r\n TaskID, TaskDetailID, TaskSourceEncompassID, MessageGroupKey, MessageKey\r\n }) {\r\n let success = false;\r\n if (TaskDetailID || MessageKey) {\r\n try {\r\n await SocketUtil.api(\"AddSavedMessage\", {\r\n TaskID,\r\n TaskDetailID,\r\n TaskSourceEncompassID,\r\n MessageGroupKey,\r\n MessageKey\r\n });\r\n success = true;\r\n } catch (e) {\r\n EChat.Util.errorAlert(e);\r\n }\r\n }\r\n\r\n return success;\r\n };\r\n\r\n this.GetGroupName = function (groupInfo, addTaskID) {\r\n let groupName = groupInfo.GroupName;\r\n if (!groupName || groupInfo.GroupType === SocketUtil.GroupType.Task) {\r\n groupName = groupInfo.DisplayName;\r\n if (!groupName) {\r\n groupName = \"None\";\r\n } else {\r\n groupName = groupName.replace(/<.*?>/g, \"\").replace(/[\\r\\n]/g, \"\");\r\n }\r\n }\r\n if (groupName.length > EChat.Setting.MaxCharacterGroupNameDisplay) {\r\n groupName = `${groupName.substr(0, EChat.Setting.MaxCharacterGroupNameDisplay)}...`;\r\n }\r\n if (addTaskID && groupInfo.GroupType === SocketUtil.GroupType.Task && groupInfo.TaskID) {\r\n groupName = `Task ${groupInfo.TaskID}: ${groupName}`;\r\n }\r\n return groupName;\r\n };\r\n this.Update_Session = function () {\r\n const now = EChat.Util.getTimeStamp();\r\n // Task 990979: Interacting with eChat does not extend browser session\r\n if (now - lastUpdateSessionTime > 1000 * 60 * 5) {\r\n lastUpdateSessionTime = now;\r\n _this.api(\"Update_Session\", \"\", true).catch(() => { });\r\n }\r\n };\r\n\r\n const GetInitUserDataByAjax = function () {\r\n return _this.api(\"SalesComm_EChat_InitUser\");\r\n };\r\n\r\n this.IsCurrentUser = function (AuthID) {\r\n let currentAuthenticationID;\r\n if (_this.CurrentUserInfo?.AuthenticationID) {\r\n currentAuthenticationID = _this.CurrentUserInfo.AuthenticationID;\r\n } else {\r\n currentAuthenticationID = AuthenticationID;\r\n }\r\n return parseInt(AuthID) === currentAuthenticationID;\r\n };\r\n\r\n // Task 1184633: SalesComm_EChat_InitUser to slow on CCD\r\n this.initUser = async function () {\r\n const DBUserData = await EChat.IndexedDB.GetSetting(\"InitUser\");\r\n return new Promise(((resolve) => {\r\n if (!DBUserData || !DBUserData.ExpireDate || DBUserData.ExpireDate <= EChat.Util.getTimeStamp()) {\r\n GetInitUserDataByAjax().then((jsonData) => {\r\n jsonData.ExpireDate = new Date((new Date()).setHours((new Date()).getHours() + 1)).getTime();\r\n SetInitUserData(jsonData).then(() => {\r\n resolve();\r\n });\r\n }).catch(() => {\r\n ECP.Dialog.Alert(\"eChat initialization failed. Please refresh the page and try again.\");\r\n });\r\n } else {\r\n SetInitUserData(DBUserData).then(() => {\r\n resolve();\r\n });\r\n }\r\n }));\r\n };\r\n\r\n const SetCurrPageUserInfo = function (jsonData) {\r\n _this.EncompassID = jsonData.EncompassID;\r\n\r\n _this.CurrentUserInfo = {\r\n UserID: jsonData.UserID,\r\n EncompassID: jsonData.EncompassID,\r\n AuthenticationID: parseInt(jsonData.AuthenticationID),\r\n UserName: jsonData.UserName,\r\n FullName: jsonData.FullName,\r\n CrossLocalPerm: jsonData.CrossLocalPerm,\r\n LocationIDStr: jsonData.LocationIDStr,\r\n DateFormat: jsonData.DateFormat,\r\n TimeFormat: jsonData.TimeFormat,\r\n AudioAlert: parseInt(jsonData.AudioAlert),\r\n UserAvatar: jsonData.UserAvatar || null,\r\n EnableEChat: jsonData.EnableEChat,\r\n PrimaryEncompassID: jsonData.PrimaryEncompassID\r\n };\r\n\r\n if (!jsonData.EnableEChat) {\r\n document.getElementById(\"EChatButton\").style.display = \"none\";\r\n } else {\r\n EChat.WebSocket.WebSocketInit();\r\n document.getElementById(\"EChatButton\").style.display = \"block\";\r\n }\r\n if (jsonData.IsCustomer) {\r\n EChat.IsCustomer = 1;\r\n } else {\r\n EChat.IsCustomer = 0;\r\n }\r\n\r\n if (_this.CurrentUserInfo.UserAvatar) {\r\n const eChatUserAvatarDisplays = document.getElementsByClassName(\"eChatUserAvatarDisplay\");\r\n for (let i = 0, len = eChatUserAvatarDisplays.length; i < len; i++) {\r\n eChatUserAvatarDisplays[i].style.backgroundImage = `url(${_this.CurrentUserInfo.UserAvatar})`;\r\n }\r\n }\r\n };\r\n\r\n const SetInitUserData = function (jsonData) {\r\n return new Promise(((resolve) => {\r\n SetCurrPageUserInfo(jsonData);\r\n\r\n EChat.IndexedDB.CheckCurrentDBAuthID(jsonData.AuthenticationID).then(() => {\r\n EChat.LocalStorage.writeLocalStorage(EChat.LocalStorageType.ECHATAUTHID, _this.CurrentUserInfo.AuthenticationID);\r\n if (!EChat.ReLoginEventIsBind) {\r\n EChat.ReLoginEventIsBind = true;\r\n EWS.ReLogin(() => {\r\n if (EChat.MainPageController) {\r\n EChat.MainPageController.closeAllWindow();\r\n }\r\n EChat.Util.initEChat(true);\r\n });\r\n\r\n EWS.VerifySessionFail(() => {\r\n EChat.Util.removeEChat();\r\n });\r\n }\r\n\r\n EChat.IndexedDB.UpdateSetting(\"InitUser\", jsonData, true).then(() => {\r\n EChat.InitState.InitUser = true;\r\n resolve();\r\n });\r\n });\r\n }));\r\n };\r\n\r\n this.SyncData = function () {\r\n return new Promise(((resolve, reject) => {\r\n EWS.VerifySession(() => {\r\n EChat.IndexedDB.GetSetting(\"LastSyncDate\").then((LastSyncDate) => {\r\n if (EC_Fmt.isNull(LastSyncDate)) {\r\n LastSyncDate = -1;\r\n }\r\n const promise1 = SocketUtil.api(\"SyncData2010\", { LastSyncDate });\r\n promise1.then((result) => {\r\n resolve(result);\r\n }).catch(() => {\r\n reject();\r\n });\r\n });\r\n });\r\n }));\r\n };\r\n\r\n // Task 1144583: eChat: Certain tasks show up with the title of None in the recent eChats section\r\n // Task 947307: Ensuring that the eChat and Task Edit interface encourages users to create Public Task Details.\r\n this.SendMessage = function ({\r\n messageGroupID, messageMark, messageBody, imgData, delayedSendTime, taskID, ghost, notify, isPublic, taskSourceEncompassID, notifyInternal, taskTitle\r\n }) {\r\n return new Promise(((resolve) => {\r\n EWS.VerifySession(() => {\r\n const socketSessionID = SocketUtil.getSessionID();\r\n const dataInfo = { SessionID: socketSessionID };\r\n\r\n if (ghost) {\r\n dataInfo.Ghost = ghost;\r\n }\r\n\r\n const messageRequest = {\r\n MessageGroupID: messageGroupID,\r\n MessageBody: messageBody,\r\n Command: SocketUtil.Command.Message,\r\n Push: true,\r\n Save: true,\r\n Transfer: SocketUtil.TransferType.All,\r\n DataInfo: dataInfo\r\n };\r\n\r\n // DelayMessage\r\n if (delayedSendTime) {\r\n _this.api(\"SendDelayEChatMessage\", {\r\n MessageGroupKey: messageGroupID,\r\n MessageBody: messageBody,\r\n DelayedSendTime: delayedSendTime\r\n }).then((data) => {\r\n const msgObj = {\r\n MessageGroupID: messageRequest.MessageGroupID,\r\n MessageID: messageMark,\r\n SenderAuthenticationID: _this.CurrentUserInfo.AuthenticationID,\r\n Message: messageBody,\r\n TimeCreated: data.TimeCreated\r\n };\r\n\r\n SendMessageSuccess(messageMark, msgObj, true);\r\n resolve(msgObj);\r\n }).catch((error) => {\r\n SendMessageFail(messageRequest.MessageGroupID, messageMark, error.ErrorMessage);\r\n });\r\n } else if (taskID) {\r\n const postData = {};\r\n let TaskDetailIsPublic = false;\r\n if (imgData && Array.isArray(imgData) && imgData.length !== 0) {\r\n postData.FileData = JSON.stringify(imgData);\r\n postData.SocketSessionID = socketSessionID;\r\n } else if (imgData && typeof (imgData) === \"object\") {\r\n postData.FileData = imgData;\r\n } else {\r\n postData.SocketSessionID = socketSessionID;\r\n }\r\n // Task 947307: Ensuring that the eChat and Task Edit interface encourages users to create Public Task Details.\r\n if (notify) {\r\n if (isPublic) {\r\n isPublic = true;\r\n notify = true;\r\n TaskDetailIsPublic = true;\r\n }\r\n } else if (notifyInternal) {\r\n if (isPublic) {\r\n isPublic = false;\r\n notify = true;\r\n TaskDetailIsPublic = true;\r\n } else {\r\n isPublic = false;\r\n notify = true;\r\n TaskDetailIsPublic = false;\r\n }\r\n } else if (isPublic) {\r\n isPublic = true;\r\n notify = false;\r\n TaskDetailIsPublic = true;\r\n } else {\r\n isPublic = false;\r\n notify = false;\r\n TaskDetailIsPublic = false;\r\n }\r\n\r\n postData.TaskDetail = messageBody;\r\n postData.TaskID = taskID;\r\n postData.TaskSourceEncompassID = taskSourceEncompassID;\r\n postData.Notify = notify;\r\n postData.ReturnMessage = true;\r\n postData.IsPublic = isPublic;\r\n postData.TaskDetailIsPublic = TaskDetailIsPublic;\r\n postData.TaskTitle = taskTitle;\r\n\r\n SocketUtil.api(\"SendTaskDetail\", postData).then(async (data) => {\r\n const msgObj = {\r\n MessageGroupID: data.MessageGroupID,\r\n MessageID: data.MessageID,\r\n SenderAuthenticationID: _this.CurrentUserInfo.AuthenticationID,\r\n Message: messageBody,\r\n TimeCreated: data.TimeCreated,\r\n SenderFullName: _this.CurrentUserInfo.FullName,\r\n SenderUserAvatar: _this.CurrentUserInfo.UserAvatar,\r\n IsPublic: isPublic,\r\n TaskID: taskID,\r\n TaskSourceEncompassID: taskSourceEncompassID\r\n };\r\n\r\n if (data.Message) {\r\n msgObj.Message = data.Message;\r\n }\r\n\r\n SendMessageSuccess(messageMark, msgObj, postData.ReturnMessage);\r\n await EChat.IndexedDB.InsertTaskDetail(msgObj);\r\n resolve(msgObj);\r\n }).catch((error) => {\r\n if (error.ErrorCode === SocketUtil.ErrorCode.NoGroup || error.ErrorCode === SocketUtil.ErrorCode.NoPermission) {\r\n // eslint-disable-next-line no-console\r\n console.error(error.ErrorMessage);\r\n error.ErrorMessage = \"The group does not exist.\";\r\n }\r\n SendMessageFail(messageGroupID, messageMark, error.ErrorMessage);\r\n });\r\n } else if (imgData) { // SendFile\r\n const postData = {};\r\n if (Array.isArray(imgData) && imgData.length !== 0) {\r\n postData.FileData = JSON.stringify(imgData);\r\n postData.SocketSessionID = socketSessionID;\r\n } else if (typeof (imgData) === \"object\") {\r\n postData.FileData = imgData;\r\n }\r\n\r\n postData.MessageRequest = JSON.stringify(messageRequest);\r\n postData.ReturnMessage = true;\r\n SocketUtil.api(\"SendMessage\", postData).then((data) => {\r\n const msgObj = {\r\n MessageGroupID: messageGroupID,\r\n MessageID: data.MessageID,\r\n SenderAuthenticationID: _this.CurrentUserInfo.AuthenticationID,\r\n Message: messageBody,\r\n TimeCreated: data.TimeCreated,\r\n SenderFullName: _this.CurrentUserInfo.FullName,\r\n SenderUserAvatar: _this.CurrentUserInfo.UserAvatar\r\n };\r\n\r\n if (data.Message) {\r\n msgObj.Message = data.Message;\r\n }\r\n\r\n EChat.IndexedDB.InsertMessage(msgObj, false, true).then(() => {\r\n SendMessageSuccess(messageMark, msgObj, true);\r\n resolve(msgObj);\r\n });\r\n }).catch((error) => {\r\n if (error.ErrorCode === SocketUtil.ErrorCode.NoGroup || error.ErrorCode === SocketUtil.ErrorCode.NoPermission) {\r\n // eslint-disable-next-line no-console\r\n console.error(error.ErrorMessage);\r\n error.ErrorMessage = \"The group does not exist.\";\r\n }\r\n SendMessageFail(messageRequest.MessageGroupID, messageMark, error.ErrorMessage);\r\n // Task 678780: JS error in sending message when session expires\r\n });\r\n } else { // SendMessage\r\n SocketUtil.send(messageRequest, (data) => {\r\n const msgObj = {\r\n MessageGroupID: messageRequest.MessageGroupID,\r\n MessageID: data.MessageID,\r\n SenderAuthenticationID: _this.CurrentUserInfo.AuthenticationID,\r\n // SenderEncompassID: _this.CurrentUserInfo.EncompassID,\r\n Message: messageBody,\r\n TimeCreated: data.TimeCreated,\r\n SenderFullName: _this.CurrentUserInfo.FullName,\r\n SenderUserAvatar: _this.CurrentUserInfo.UserAvatar\r\n };\r\n\r\n EChat.IndexedDB.InsertMessage(msgObj, false, true).then(() => {\r\n SendMessageSuccess(messageMark, msgObj, false);\r\n resolve(msgObj);\r\n });\r\n }, (data) => {\r\n SendMessageFail(messageRequest.MessageGroupID, messageMark, data);\r\n // Task 678780: JS error in sending message when session expires\r\n });\r\n }\r\n }, true, () => {\r\n SendMessageFail(messageGroupID, messageMark, \"Session expiration\");\r\n }, () => {\r\n SendMessageFail(messageGroupID, messageMark, \"Session expiration\");\r\n });\r\n }));\r\n };\r\n\r\n // Task 689770: Call Manager: Availability not working bases on the CallStatus.\r\n this.UpdateUserAvailability = (jsonData) => {\r\n if (jsonData.AuthenticationID && jsonData.Availability) {\r\n EChat.MainPageController.redrawUserAvailability(jsonData.AuthenticationID, jsonData.Availability);\r\n }\r\n\r\n // Task 961259: Dialer Status not updating right away\r\n if (parseInt(jsonData.AuthenticationID) === AuthenticationID && jsonData.AvailabilityDisplay) {\r\n EC_Fmt.SetCookie(\"LastUserTimeClockActivity\", `LastUserTimeClockActivity_${jsonData.AvailabilityDisplay}`, 5 / 24 / 60);\r\n }\r\n // Task 1092124: Time Clock Shifts showing inflated shift hours\r\n try {\r\n if (UpdateCurrentStatus && typeof (UpdateCurrentStatus) === \"function\") {\r\n UpdateCurrentStatus(parseInt(jsonData.Availability));\r\n }\r\n } catch (e) {\r\n return null;\r\n }\r\n return null;\r\n };\r\n\r\n this.ReceiveMessage = function (message, isStorage) {\r\n if (!message.Message || isStorage) {\r\n return;\r\n }\r\n const subStr = /(<[ ]*?script[^>]*?>)|(<\\/script>)/ig;\r\n message.Message = message.Message.replace(subStr, \"\");\r\n\r\n const Filter = [];\r\n Filter.push(\"onclick\");\r\n Filter.push(\"onclick\");\r\n Filter.push(\"onload\");\r\n Filter.push(\"ondrop\");\r\n Filter.push(\"onerror\");\r\n Filter.push(\"onkeydown\");\r\n Filter.push(\"onkeyup\");\r\n Filter.push(\"onbeforeunload\");\r\n Filter.push(\"ondragenter\");\r\n Filter.push(\"ondragover\");\r\n Filter.push(\"onmousemove\");\r\n Filter.push(\"onmouseup\");\r\n Filter.push(\"onorientationchange\");\r\n Filter.push(\"onpageshow\");\r\n Filter.push(\"onresize\");\r\n Filter.push(\"onstorage\");\r\n Filter.push(\"ontouchmove\");\r\n Filter.push(\"onunload\");\r\n Filter.push(\"onvisibilitychange\");\r\n const events = new RegExp(`<[\\\\s\\\\S]*?(${Filter.join(\"|\")})=('|\")([\\\\s\\\\S]*?)('|\")>`, \"ig\");\r\n const messageList = message.Message.match(events);\r\n if (messageList) {\r\n for (let i = 0; i < messageList.length; i++) {\r\n const mvalue = messageList[i];\r\n let value = messageList[i];\r\n for (let j = 0; j < Filter.length; j++) {\r\n value = value.replace(Filter[j], \"event\");\r\n }\r\n message.Message = message.Message.replace(mvalue, value);\r\n }\r\n }\r\n\r\n const checkGroupType = (groupInfo) => {\r\n let check = false;\r\n if (groupInfo) {\r\n if (groupInfo.GroupType === SocketUtil.GroupType.System || groupInfo.GroupType === SocketUtil.GroupType.Message || groupInfo.GroupType === SocketUtil.GroupType.Task) {\r\n check = true;\r\n }\r\n }\r\n return check;\r\n };\r\n\r\n if (message?.MessageGroupID) {\r\n _this.GetGroupInfoByGroupID(message.MessageGroupID).then((groupInfo) => {\r\n if (checkGroupType(groupInfo)) {\r\n let Ghost = false;\r\n if (groupInfo.GroupType === SocketUtil.GroupType.Task && message.DataInfo?.Ghost) {\r\n Ghost = true;\r\n }\r\n\r\n if (!messageExist(message, groupInfo)) {\r\n groupInfo.Messages.splice(0, 0, message);\r\n let addUnreadCount = false;\r\n\r\n if (!_this.IsCurrentUser(message.SenderAuthenticationID) || groupInfo.GroupType === SocketUtil.GroupType.System) {\r\n if (!Ghost) {\r\n addUnreadCount = true;\r\n }\r\n }\r\n\r\n if (message.DataInfo) {\r\n message.SenderFullName = message.DataInfo.SenderFullName;\r\n message.SenderUserAvatar = message.DataInfo.SenderUserAvatar;\r\n }\r\n\r\n if (!_this.IsCurrentUser(message.SenderAuthenticationID) && groupInfo.Prompt !== EChat.PromptType.DoNotDisturb && !Ghost) {\r\n EChat.MainPageController.playAudioAlters();\r\n }\r\n\r\n if (message.DataInfo?.TaskID) {\r\n message.IsPublic = message.DataInfo.IsPublic;\r\n message.TaskID = message.DataInfo.TaskID;\r\n message.TaskSourceEncompassID = message.DataInfo.TaskSourceEncompassID;\r\n message.GroupDisplayName = message.DataInfo.GroupDisplayName;\r\n if (message.DataInfo.TaskDetailID) {\r\n message.MessageID = message.DataInfo.TaskDetailID;\r\n }\r\n\r\n EChat.IndexedDB.InsertTaskDetail(message);\r\n } else {\r\n EChat.IndexedDB.InsertMessage(message, addUnreadCount, true).then(() => {\r\n const messageGroupID = groupInfo.MessageGroupID;\r\n if (EChat.MainPageController.checkMessageWindowExist(messageGroupID)) {\r\n EChat.MainPageController.currentMessageWindow.receiveNewMessage(message, messageGroupID);\r\n }\r\n }).catch();\r\n }\r\n } else if (groupInfo.NewData && !_this.IsCurrentUser(message.SenderAuthenticationID) && groupInfo.Prompt !== EChat.PromptType.DoNotDisturb && !Ghost) {\r\n EChat.MainPageController.playAudioAlters();\r\n }\r\n }\r\n });\r\n }\r\n };\r\n\r\n const SendMessageSuccess = function (messageMark, msgObj, overMessage) {\r\n const msgElement = document.getElementById(`messageblock_${messageMark * -1}`);\r\n if (msgElement) {\r\n msgElement.setAttribute(\"messageid\", msgObj.MessageID);\r\n msgElement.setAttribute(\"id\", `messageblock_${msgObj.MessageID}`);\r\n const mgsBody = msgElement.querySelector(`#message_${messageMark * -1}`);\r\n\r\n // Task 1046811: eChat displays messages in incorrect order\r\n const sendTimeDom = document.querySelector(`.SendTime[messagemark='${messageMark}']`);\r\n if (sendTimeDom) {\r\n sendTimeDom.innerHTML = EChat.Util.longToDataTime(msgObj.TimeCreated);\r\n sendTimeDom.setAttribute(\"messagemark\", msgObj.TimeCreated);\r\n }\r\n\r\n msgElement.setAttribute(\"messagemark\", msgObj.TimeCreated);\r\n\r\n if (mgsBody) {\r\n mgsBody.setAttribute(\"messageid\", msgObj.MessageID);\r\n mgsBody.setAttribute(\"id\", `message_${msgObj.MessageID}`);\r\n }\r\n const savedIcon = msgElement.querySelector(\".saved-message-icon\");\r\n if (savedIcon) {\r\n savedIcon.setAttribute(\"savedkey\", msgObj.MessageID);\r\n savedIcon.setAttribute(\"id\", `SavedKey_${msgObj.MessageID}`);\r\n }\r\n\r\n if (overMessage) {\r\n mgsBody.innerHTML = `
${msgObj.Message}
`;\r\n const messageGroupID = msgObj.TaskID ? `${msgObj.TaskSourceEncompassID}_${msgObj.TaskID}` : msgObj.MessageGroupID;\r\n const chatBoxElement = document.getElementById(`chatBox_${messageGroupID}`);\r\n if (chatBoxElement) {\r\n chatBoxElement.scrollTop = chatBoxElement.scrollHeight;\r\n EChat.Util.FileLoad(mgsBody, chatBoxElement, msgObj.SenderAuthenticationID, 423, 200);\r\n }\r\n }\r\n }\r\n };\r\n\r\n const SendMessageFail = function (messageGroupID, messageMark, error) {\r\n const msgElement = document.getElementById(`messageblock_-${messageMark}`);\r\n if (msgElement) {\r\n const flexElement = msgElement.querySelector(\".message-flex-box\");\r\n\r\n const errorIcon = EC_Fmt.HtmlStrToElement(`!`);\r\n errorIcon.addEventListener(\"click\", function () {\r\n const messages = this.parentNode.querySelectorAll(\".DialogBubbleHead > p\");\r\n for (let i = 0, len = messages.length; i < len; i++) {\r\n const sendText = messages[i].innerHTML;\r\n const groupid = this.getAttribute(\"groupid\");\r\n for (let j = 0, len2 = EChat.MainPageController.messageWindowList.length; j < len2; j++) {\r\n if (EChat.MainPageController.messageWindowList[j].currentTab.ID === groupid) {\r\n const MessageWindowTextArea = EChat.MainPageController.messageWindowList[j].element.querySelector(\".eChat-MessageWindowTextArea\");\r\n\r\n if (MessageWindowTextArea) {\r\n MessageWindowTextArea.innerHTML = sendText;\r\n }\r\n\r\n const sendBtn = EChat.MainPageController.messageWindowList[j].element.querySelector(\"#EChat_Send_Btn\");\r\n if (sendBtn) {\r\n sendBtn.click();\r\n }\r\n }\r\n }\r\n }\r\n });\r\n flexElement.insertBefore(errorIcon, flexElement.firstChild);\r\n const tab = EChat.MainPageController.getMessageWindow(messageGroupID).chatTabList[messageGroupID];\r\n if (tab) {\r\n tab.AddTipElement(EC_Fmt.HtmlStrToElement(`
${error}
`));\r\n }\r\n }\r\n };\r\n\r\n this.CreateGroup = async function (userList, groupType) {\r\n const result = await SocketUtil.createGroup(userList, groupType);\r\n\r\n const groupUsers = {};\r\n const groupMessages = {};\r\n const messageGroupID = result.MessageGroup.MessageGroupID;\r\n groupUsers[messageGroupID] = result.GroupUsers;\r\n groupMessages[messageGroupID] = result.Messages;\r\n\r\n await EChat.IndexedDB.UpdateGroupObject({\r\n GroupInfos: [result.MessageGroup],\r\n GroupUsers: groupUsers,\r\n GroupMessages: groupMessages\r\n });\r\n\r\n const messageGroup = await EChat.IndexedDB.GetTableDataByKey(EChat.DBTableName.GROUPINFO, messageGroupID);\r\n EChat.IndexedDB.NoticeUpdate(EChat.DBTableName.GROUPINFO, [messageGroupID]);\r\n\r\n if (result.Messages.length !== 0) {\r\n await EChat.MainPageController.redrawGroupEvent(messageGroup);\r\n }\r\n return messageGroup;\r\n };\r\n\r\n this.SaveEChatMessageToTaskDetail = function (groupID, taskID, messageIDStr) {\r\n return _this.api(\"SalesComm_SaveMessageToTaskDetail\", {\r\n MessageGroupKey: groupID,\r\n TaskID: taskID,\r\n MessageIDStr: messageIDStr\r\n });\r\n };\r\n\r\n this.CreateTask = function () {\r\n return _this.api(\"SalesComm_CreateSupportTask\");\r\n };\r\n\r\n this.GetUserStrByGroupInfo = function (groupInfo) {\r\n if (groupInfo.GroupType === SocketUtil.GroupType.System) {\r\n return groupInfo.GroupName;\r\n }\r\n if (!groupInfo.Users) {\r\n return \"\";\r\n }\r\n const userList = [];\r\n for (let i = 0; i < groupInfo.Users.length; i++) {\r\n userList.push(groupInfo.Users[i]);\r\n }\r\n return _this.GetUserStrByUserList(userList);\r\n };\r\n\r\n this.GetUserStrByUserList = function (UsersList) {\r\n const sortUserList = UsersList.sort((a, b) => parseInt(a) - parseInt(b));\r\n return sortUserList.join(\",\");\r\n };\r\n\r\n this.SyncLocalTaskRead = async function (TaskID, TaskSourceEncompassID, isFromLocalStorage) {\r\n if (TaskID && !isFromLocalStorage) {\r\n const groupList = await EChat.IndexedDB.GetTableAllData(EChat.DBTableName.GROUPINFO);\r\n const groupReadInfoList = [];\r\n const groupIdArr = [];\r\n for (let i = 0; i < groupList.length; i++) {\r\n let update = false;\r\n const groupInfo = groupList[i];\r\n\r\n if (groupInfo.MessageGroupID === `${TaskSourceEncompassID}_${TaskID}`) {\r\n update = true;\r\n }\r\n\r\n if (update) {\r\n groupReadInfoList.push({\r\n MessageGroupID: groupInfo.MessageGroupID,\r\n LastReadTime: EChat.Util.getTimeStamp(),\r\n ReadCount: groupInfo.MessageCount,\r\n MessageCount: groupInfo.MessageCount,\r\n MessageUpdated: groupInfo.MessageUpdated,\r\n UnReadCount: 0,\r\n Prompt: EChat.PromptType.Normal,\r\n PostPermission: EChat.PostPermissionType.Post\r\n });\r\n groupIdArr.push(groupInfo.MessageGroupID);\r\n }\r\n }\r\n\r\n await EChat.IndexedDB.UpdateGroupUnread(groupIdArr, 0, true);\r\n await EChat.IndexedDB.UpdateGroupReads(groupReadInfoList, true);\r\n EChat.MainPageController.updateUnReadNumIcon(\"read SyncLocalTaskRead\");\r\n }\r\n };\r\n\r\n this.UpdateTaskGroup = async function (MessageGroupID, TaskID, isFromLocalStorage) {\r\n if (MessageGroupID && TaskID && !isFromLocalStorage) {\r\n _this.GetGroupInfoByGroupID(`${MessageGroupID}_${TaskID}`, true, true);\r\n }\r\n };\r\n\r\n this.SyncLocalLastReadTime = function (data, isFromLocalStorage) {\r\n if (data?.DataInfo?.GroupReadInfo && !data.DataInfo.TaskID && !isFromLocalStorage) {\r\n EChat.IndexedDB.UpdateGroupUnread([data.DataInfo.GroupReadInfo.MessageGroupID], 0, true);\r\n EChat.IndexedDB.UpdateGroupReads([data.DataInfo.GroupReadInfo], true).then(() => {\r\n EChat.MainPageController.updateUnReadNumIcon(\"read SyncLastReadTime\");\r\n });\r\n }\r\n };\r\n\r\n this.SendWriteState = function (GroupID, ReceiverAuthID) {\r\n if (GroupID && ReceiverAuthID > 0) {\r\n const timeStamp = EChat.Util.getTimeStamp();\r\n const lastTime = _this.LastMessageTime[GroupID];\r\n const sendTime = _this.SendWriteStateTime[GroupID];\r\n if (!EC_Fmt.isNull(lastTime) && timeStamp - lastTime < 1000 * 60 && (EC_Fmt.isNull(sendTime) || timeStamp - sendTime > 5000)) {\r\n SocketUtil.send({\r\n MessageGroupID: GroupID,\r\n Command: SocketUtil.Command.WriteState,\r\n Push: false,\r\n Save: false,\r\n Transfer: SocketUtil.TransferType.Other\r\n });\r\n\r\n _this.SendWriteStateTime[GroupID] = timeStamp;\r\n }\r\n }\r\n };\r\n\r\n this.RecallMessage = function (messageGroupID, MessageID) {\r\n if (messageGroupID && MessageID) {\r\n const socketSessionID = SocketUtil.getSessionID();\r\n const dataInfo = {\r\n SessionID: socketSessionID,\r\n RecallMessageID: MessageID\r\n };\r\n const postData = {};\r\n\r\n const messageRequest = {\r\n MessageGroupID: messageGroupID,\r\n Command: SocketUtil.Command.MessageRecalled,\r\n Push: true,\r\n Save: false,\r\n Transfer: SocketUtil.TransferType.All,\r\n DataInfo: dataInfo\r\n };\r\n\r\n postData.MessageRequest = JSON.stringify(messageRequest);\r\n\r\n SocketUtil.api(\"SendMessage\", postData).then((data) => {\r\n _this.MessageRecalled({ MessageGroupID: messageGroupID, MessageID, MessageBody: data.Message }, false);\r\n }).catch((ex) => {\r\n if (ex) {\r\n ECP.Dialog.Alert(ex.ErrorMessage);\r\n }\r\n });\r\n }\r\n };\r\n\r\n this.SyncLastReadTime = async function (groupId) {\r\n if (!groupId) {\r\n return;\r\n }\r\n try {\r\n const groupInfo = await _this.GetGroupInfoByGroupID(groupId);\r\n if (!groupInfo) {\r\n return;\r\n }\r\n const UnreadGroup = await EChat.IndexedDB.GetSetting(\"UnreadGroup\");\r\n\r\n if (groupInfo.UnReadCount || (UnreadGroup && UnreadGroup[groupInfo.MessageGroupID])) {\r\n let GroupReadLockStr = EChat.LocalStorage.readLocalStorage(EChat.LocalStorageType.GROUPREADLOCK);\r\n let GroupReadLock = {};\r\n if (GroupReadLockStr) {\r\n GroupReadLock = JSON.parse(GroupReadLockStr);\r\n }\r\n const TimeNow = EChat.Util.getTimeStamp();\r\n if (GroupReadLock && GroupReadLock[groupInfo.MessageGroupID] && parseInt(TimeNow) - parseInt(GroupReadLock[groupInfo.MessageGroupID]) < 30000) {\r\n return;\r\n }\r\n\r\n if (!GroupReadLock) {\r\n GroupReadLock = {};\r\n }\r\n GroupReadLock[groupInfo.MessageGroupID] = TimeNow;\r\n EChat.LocalStorage.writeLocalStorage(EChat.LocalStorageType.GROUPREADLOCK, JSON.stringify(GroupReadLock));\r\n\r\n let data;\r\n try {\r\n if (groupInfo.GroupType === SocketUtil.GroupType.Task) {\r\n data = await SocketUtil.api(\"ReadTaskGroup2010\", {\r\n TaskID: groupInfo.MessageGroupID.split(\"_\")[1],\r\n TaskSourceEncompassID: groupInfo.MessageGroupID.split(\"_\")[0]\r\n });\r\n } else {\r\n data = await SocketUtil.api(\"ReadGroupMessage2006\", { MessageGroupID: groupInfo.MessageGroupID });\r\n }\r\n } catch (e) {\r\n if (e.ErrorCode === SocketUtil.ErrorCode.NoPermission) {\r\n EChat.DataProvider.deleteGroupData(groupId, true, true);\r\n } else {\r\n // eslint-disable-next-line no-console\r\n console.error(e);\r\n }\r\n return;\r\n }\r\n\r\n GroupReadLockStr = EChat.LocalStorage.readLocalStorage(EChat.LocalStorageType.GROUPREADLOCK);\r\n if (GroupReadLockStr) {\r\n GroupReadLock = JSON.parse(GroupReadLockStr);\r\n if (GroupReadLock) {\r\n delete GroupReadLock[groupInfo.MessageGroupID];\r\n EChat.LocalStorage.writeLocalStorage(EChat.LocalStorageType.GROUPREADLOCK, JSON.stringify(GroupReadLock));\r\n }\r\n }\r\n\r\n if (!data) {\r\n return;\r\n }\r\n\r\n if (groupInfo.GroupType === SocketUtil.GroupType.Task) {\r\n await EChat.IndexedDB.UpdateGroupReads(data.GroupReadInfos);\r\n const groupIdArr = [];\r\n if (data.GroupReadInfos.length !== 0) {\r\n for (let i = 0; i < data.GroupReadInfos.length; i++) {\r\n groupIdArr.push(data.GroupReadInfos[i].MessageGroupID);\r\n }\r\n }\r\n\r\n if (groupIdArr.indexOf(groupInfo.MessageGroupID) === -1) {\r\n groupInfo.UnReadCount = 0;\r\n groupInfo.ReadCount = groupInfo.MessageCount;\r\n groupIdArr.push(groupInfo.MessageGroupID);\r\n await EChat.IndexedDB.UpdateGroupInfo([groupInfo]);\r\n }\r\n\r\n await EChat.IndexedDB.UpdateGroupUnread(groupIdArr, 0, true);\r\n } else {\r\n await EChat.IndexedDB.UpdateGroupReads([data.GroupReadInfo]);\r\n await EChat.IndexedDB.UpdateGroupUnread([groupId], 0, true);\r\n }\r\n } else {\r\n await EChat.IndexedDB.UpdateGroupUnread([groupId], 0, true);\r\n return;\r\n }\r\n\r\n EChat.MainPageController.updateUnReadNumIcon(\"read SyncLastReadTime\");\r\n\r\n // Task 754035: eChat Notification won't go away\r\n clearTimeout(RefreshHandle);\r\n RefreshHandle = setTimeout(() => {\r\n EChat.MainPageController.updateUnreadSumCount(\"Delay update\");\r\n }, 7000);\r\n } catch (e) {\r\n // eslint-disable-next-line no-console\r\n console.error(e);\r\n }\r\n };\r\n\r\n this.ReadAllGroup = function () {\r\n EChat.Util.ShowLoading();\r\n SocketUtil.api(\"ReadAllGroupMessage2010\").then((data) => {\r\n if (data?.GroupReadInfoList) {\r\n EChat.IndexedDB.UpdateGroupReads(data.GroupReadInfoList).then(async () => {\r\n const newGroupIDList = [];\r\n const GroupList = await EChat.IndexedDB.GetTableAllData(EChat.DBTableName.GROUPINFO);\r\n for (let i = 0; i < GroupList.length; i++) {\r\n if (GroupList[i].UnReadCount !== 0) {\r\n GroupList[i].ReadCount = GroupList[i].MessageCount;\r\n GroupList[i].UnReadCount = 0;\r\n await EChat.IndexedDB.InsertOrUpdate(EChat.DBTableName.GROUPINFO, GroupList[i]);\r\n newGroupIDList.push(GroupList[i].MessageGroupID);\r\n }\r\n }\r\n\r\n EChat.IndexedDB.NoticeUpdate(EChat.DBTableName.GROUPINFO, newGroupIDList);\r\n EChat.MainPageController.updateUnReadNumIcon(\"ReadAllGroup\");\r\n EChat.MainPageController.updateUnreadSumCount(\"ReadAllGroup\");\r\n ECP.Dialog.HideLoading();\r\n }).cache(() => {\r\n ECP.Dialog.HideLoading();\r\n });\r\n } else {\r\n ECP.Dialog.HideLoading();\r\n }\r\n }).catch((e) => {\r\n ECP.Dialog.HideLoading();\r\n if (e.ErrorCode === SocketUtil.ErrorCode.NoPermission) {\r\n EChat.DataProvider.deleteGroupData(groupId, true, true);\r\n } else {\r\n // eslint-disable-next-line no-console\r\n console.error(e.ErrorCode + e.ErrorMessage);\r\n }\r\n });\r\n };\r\n\r\n this.UpdateTaskGroupByMessageGroup = async function (groupInfo) {\r\n const messageGroupID = groupInfo.MessageGroupID;\r\n\r\n const allTaskGroup = await EChat.IndexedDB.GetTableDataByIndex(EChat.DBTableName.GROUPINFO, \"GroupType\", SocketUtil.GroupType.Task);\r\n const updateGroupArr = [];\r\n for (let i = 0; i < allTaskGroup.length; i++) {\r\n if (allTaskGroup[i].MessageGroupID.indexOf(`${messageGroupID}_`) > -1) {\r\n const taskGroup = allTaskGroup[i];\r\n taskGroup.DisplayName = groupInfo.DisplayName;\r\n taskGroup.GroupName = groupInfo.GroupName;\r\n taskGroup.Icon = groupInfo.Icon;\r\n taskGroup.UserUpdated = groupInfo.UserUpdated;\r\n taskGroup.TimeUpdated = groupInfo.TimeUpdated;\r\n await EChat.MainPageController.redrawGroupEvent(taskGroup);\r\n updateGroupArr.push(taskGroup);\r\n\r\n if (EChat.MainPageController.checkMessageWindowExist(taskGroup.MessageGroupID)) {\r\n const messageWindow = EChat.MainPageController.getMessageWindow(taskGroup.MessageGroupID);\r\n const chatTab = messageWindow.chatTabList[taskGroup.MessageGroupID];\r\n if (chatTab) {\r\n chatTab.GroupInfo = taskGroup;\r\n chatTab.updateGroupName();\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (updateGroupArr.length !== 0) {\r\n const newGroupIDList = await EChat.IndexedDB.UpdateGroupInfo(updateGroupArr, false);\r\n EChat.IndexedDB.NoticeUpdate(EChat.DBTableName.GROUPINFO, newGroupIDList);\r\n }\r\n };\r\n\r\n this.UpdateGroupMessageReceive = async function (messageObj, isFromLocalStorage) {\r\n if (isFromLocalStorage) {\r\n return;\r\n }\r\n\r\n const messageGroupID = messageObj.MessageGroupID;\r\n const dataInfo = messageObj.DataInfo;\r\n if (messageGroupID && dataInfo?.Change) {\r\n if (dataInfo.Change === \"Deleted\") {\r\n await _this.deleteGroupData(messageGroupID, true, true);\r\n } else if (dataInfo.Change === \"Updated\") {\r\n let ExcludeMessage = true;\r\n if (dataInfo.MergeGroup) {\r\n await EChat.IndexedDB.DeleteTableDataByKey(EChat.DBTableName.GROUPINFO, messageGroupID, false);\r\n ExcludeMessage = false;\r\n }\r\n\r\n const groupInfo = await EChat.DataProvider.GetGroupInfoByGroupID(messageGroupID, true, ExcludeMessage);\r\n if (!groupInfo) {\r\n return;\r\n }\r\n\r\n await _this.UpdateTaskGroupByMessageGroup(groupInfo);\r\n if (EChat.MainPageController.checkMessageWindowExist(messageGroupID)) {\r\n const messageWindow = EChat.MainPageController.getMessageWindow(messageGroupID);\r\n const chatTab = messageWindow.chatTabList[messageGroupID];\r\n if (chatTab) {\r\n chatTab.GroupInfo = groupInfo;\r\n chatTab.updateGroupName();\r\n chatTab.refreshMessageList(groupInfo.Messages);\r\n }\r\n }\r\n\r\n // Task 833748: Receive the first message of a new message group. Total unread messages not updated\r\n setTimeout(() => {\r\n EChat.MainPageController.updateUnreadSumCount(\"Group update\");\r\n }, 3000);\r\n }\r\n }\r\n };\r\n\r\n this.WriteStateReceive = function (data) {\r\n if (data.MessageGroupID && EChat.PageActive) {\r\n const windowExist = EChat.MainPageController.checkMessageWindowExist(data.MessageGroupID);\r\n if (windowExist) {\r\n let SenderName = \"\";\r\n\r\n if (data.DataInfo?.SenderFullName) {\r\n SenderName = data.DataInfo.SenderFullName;\r\n }\r\n const writeStateName = document.querySelector(\".writeStateName\");\r\n if (writeStateName) {\r\n writeStateName.innerText = `${SenderName} ${EC_Fmt.Trn(\"Typing...\")}`;\r\n }\r\n const eChatWriteState = document.querySelector(\".eChatWriteState\");\r\n if (eChatWriteState) {\r\n eChatWriteState.style.display = \"block\";\r\n }\r\n setTimeout(() => {\r\n if (writeStateName) {\r\n writeStateName.innerText = \"\";\r\n }\r\n if (eChatWriteState) {\r\n eChatWriteState.style.display = \"none\";\r\n }\r\n }, 3000);\r\n }\r\n }\r\n };\r\n\r\n this.MessageRecalled = function (Data, isFromLocalStorage) {\r\n if (Data.SenderAuthenticationID && Data.SenderAuthenticationID > 0) {\r\n return;\r\n }\r\n\r\n const RecalledText = Data.MessageBody;\r\n const messageDom = document.getElementById(`message_${Data.MessageID}`);\r\n if (messageDom) {\r\n messageDom.innerHTML = RecalledText;\r\n }\r\n\r\n if (isFromLocalStorage) {\r\n return;\r\n }\r\n\r\n EChat.DataProvider.GetGroupInfoByGroupID(Data.MessageGroupID).then((groupInfo) => {\r\n if (!groupInfo || !groupInfo.Messages) {\r\n return;\r\n }\r\n\r\n for (let i = 0; i < groupInfo.Messages.length; i++) {\r\n const message = groupInfo.Messages[i];\r\n if (message.MessageID === Data.MessageID) {\r\n if (message.Message !== RecalledText) {\r\n message.Message = RecalledText;\r\n EChat.IndexedDB.UpdateGroupInfo([groupInfo], true).then(() => {\r\n EChat.MainPageController.redrawGroupEvent(groupInfo);\r\n });\r\n }\r\n break;\r\n }\r\n }\r\n });\r\n };\r\n\r\n const messageExist = function (newMessage, groupInfo) {\r\n for (let i = 0; i < groupInfo.Messages.length; i++) {\r\n if (groupInfo.Messages[i].MessageID === newMessage.MessageID) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n this.getGroupHistory = async function (viewMoreLastMessageTimeCreated) {\r\n let syncDate = parseInt(await EChat.IndexedDB.GetSetting(\"GroupHistorySyncDate\"));\r\n if (!EC_Fmt.isNumber(syncDate)) {\r\n syncDate = 0;\r\n }\r\n let result = await EChat.IndexedDB.GetRecentGroupList(viewMoreLastMessageTimeCreated, syncDate);\r\n\r\n if (result?.Groups.length !== 0) {\r\n return result;\r\n }\r\n\r\n let data;\r\n try {\r\n data = await SocketUtil.api(\"GetGroupHistory2010\", { LastSyncDate: syncDate });\r\n } catch (e) {\r\n // eslint-disable-next-line no-console\r\n console.error(e);\r\n return null;\r\n }\r\n\r\n await EChat.IndexedDB.UpdateGroupObject({\r\n GroupInfos: data.MessageGroups,\r\n GroupUsers: data.GroupUsers,\r\n GroupMessages: data.Messages,\r\n GroupReads: data.GroupReads\r\n });\r\n\r\n await EChat.IndexedDB.UpdateSetting(\"GroupHistorySyncDate\", data.LastSyncDate);\r\n\r\n result = await EChat.IndexedDB.GetRecentGroupList(syncDate, data.LastSyncDate);\r\n\r\n return result;\r\n };\r\n\r\n this.getMessageHistory = function (groupId, syncDate, savedMessageKey, limit) {\r\n return new Promise(((resolve) => {\r\n SocketUtil.api(\"GetMessagesHistory2006\", {\r\n MessageGroupID: groupId,\r\n StartDate: 0,\r\n EndDate: syncDate,\r\n Limit: limit || EChat.Setting.MessageNumPerShow,\r\n SavedMessageKey: savedMessageKey\r\n }).then((result) => {\r\n if (result?.Messages) {\r\n if (EChat.eChatState) {\r\n const messageDic = {};\r\n messageDic[groupId] = result.Messages;\r\n EChat.IndexedDB.UpdateGroupMessages(messageDic, false, false);\r\n }\r\n resolve(result.Messages);\r\n }\r\n }).catch();\r\n }));\r\n };\r\n\r\n this.getTaskDetailHistory = function (taskID, taskSourceEncompassID, savedTaskDetailID, endTaskDetailID, showError) {\r\n return new Promise(((resolve) => {\r\n // Task 921200: Task Detail showing in Task View but not in Task eChat View\r\n SocketUtil.api(\"GetTaskDetails\", {\r\n TaskID: taskID,\r\n TaskSourceEncompassID: taskSourceEncompassID,\r\n SavedTaskDetailID: savedTaskDetailID,\r\n EndTaskDetailID: endTaskDetailID,\r\n Limit: 10\r\n }).then((data) => {\r\n if (showError && data.NoExist) {\r\n EWS.Alert(`${data.TaskTitle}`);\r\n }\r\n // Task 1009651: Tasks in eChat taking users to encompasstech.com.\r\n if (Distributor === taskSourceEncompassID && data.TaskTitle) {\r\n const pattern = /[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\\.?/;\r\n data.TaskTitle = data.TaskTitle.replace(pattern, window.location.host);\r\n }\r\n resolve(data);\r\n }).catch((e) => {\r\n // Task 1041344: eChat: Opening Task eChat is not linking me to the task.\r\n EChat.Util.errorAlert(e);\r\n resolve(null);\r\n });\r\n }));\r\n };\r\n\r\n this.getGroupMessages = function (groupId) {\r\n return new Promise(((resolve) => {\r\n let msgList = [];\r\n if (groupId) {\r\n _this.GetGroupInfoByGroupID(groupId).then((groupInfo) => {\r\n if (groupInfo && Array.isArray(groupInfo.Messages)) {\r\n msgList = groupInfo.Messages;\r\n }\r\n resolve(msgList);\r\n });\r\n } else {\r\n resolve(msgList);\r\n }\r\n }));\r\n };\r\n\r\n this.uploadUserAvatar = function (imageData) {\r\n _this.api(\"SalesComm_UploadUserAvatar\", { ImageData: imageData.toString() }).then((data) => {\r\n EChat.IndexedDB.GetSetting(\"InitUser\").then((jsonData) => {\r\n if (jsonData && AuthenticationID === parseInt(jsonData.AuthenticationID) && jsonData.EncompassID === Distributor) {\r\n jsonData.UserAvatar = data.Url;\r\n SetInitUserData(jsonData);\r\n } else {\r\n GetInitUserDataByAjax().then((serverJsonData) => {\r\n SetInitUserData(serverJsonData);\r\n });\r\n }\r\n });\r\n });\r\n };\r\n\r\n this.uploadGroupSetting = async function (editGroup, userInfo) {\r\n const oldGroupInfo = await EChat.DataProvider.GetGroupInfoByGroupID(editGroup.MessageGroupID);\r\n let result;\r\n try {\r\n result = await SocketUtil.api(\"EditGroup2006\", editGroup);\r\n } catch (e) {\r\n return oldGroupInfo;\r\n }\r\n let displayMessage = \"\";\r\n const messageGroupID = result.MessageGroup.MessageGroupID;\r\n\r\n if (result.RemoveGroup) {\r\n EChat.DataProvider.deleteGroupData(result.RemoveGroup.MessageGroupID, false, false);\r\n await EChat.DataProvider.deleteGroupData(messageGroupID, true, false);\r\n EChat.MainPageController.updateUnReadNumIcon(\"RemoveGroup\");\r\n } else {\r\n await EChat.IndexedDB.UpdateGroupInfo([result.MessageGroup]);\r\n\r\n if (result.GroupUsers) {\r\n const groupUsers = {};\r\n groupUsers[messageGroupID] = result.GroupUsers;\r\n await EChat.IndexedDB.UpdateGroupUsers(groupUsers);\r\n }\r\n }\r\n\r\n if (result.RemoveUsers && result.AddUsers) {\r\n if (result.RemoveUsers.indexOf(AuthenticationID) > -1) {\r\n await _this.deleteGroupData(messageGroupID, true, true);\r\n return oldGroupInfo;\r\n }\r\n\r\n // Send Message Tip\r\n let addName = \"\";\r\n let changeCount = 0;\r\n for (let i = 0; i < result.AddUsers.length; i++) {\r\n const user = userInfo[result.AddUsers[i]];\r\n if (user && user?.Name) {\r\n if (addName) {\r\n addName += \", \";\r\n }\r\n addName += user.Name;\r\n changeCount++;\r\n }\r\n }\r\n\r\n if (addName) {\r\n const word = changeCount > 1 ? \"have\" : \"has\";\r\n displayMessage = `${addName} ${word} been added to this group.`;\r\n }\r\n\r\n let removeName = \"\";\r\n changeCount = 0;\r\n for (let i = 0; i < result.RemoveUsers.length; i++) {\r\n const user = userInfo[result.RemoveUsers[i]];\r\n if (user?.Name) {\r\n if (removeName) {\r\n removeName += \", \";\r\n }\r\n removeName += user.Name;\r\n changeCount++;\r\n }\r\n }\r\n\r\n if (removeName) {\r\n const word = changeCount > 1 ? \"have\" : \"has\";\r\n displayMessage += `${removeName} ${word} been deleted from this group.`;\r\n }\r\n }\r\n\r\n const newGroup = await EChat.DataProvider.GetGroupInfoByGroupID(messageGroupID);\r\n let oldGroupName = oldGroupInfo.GroupName;\r\n if (oldGroupName !== newGroup.GroupName) {\r\n if (!oldGroupName) {\r\n oldGroupName = \"Temp group\";\r\n }\r\n if (newGroup.GroupName !== \"\") {\r\n displayMessage += `${oldGroupName} has been named as ${newGroup.GroupName}.`;\r\n } else {\r\n displayMessage += `Group name ${oldGroupName} has been removed.`;\r\n }\r\n }\r\n\r\n if (displayMessage) {\r\n await EChat.DataProvider.SendMessage({\r\n messageGroupID,\r\n messageMark: EChat.Util.getTimeStamp(),\r\n messageBody: displayMessage\r\n });\r\n const windowExist = EChat.MainPageController.checkMessageWindowExist(messageGroupID);\r\n if (windowExist) {\r\n EChat.MainPageController.currentMessageWindow.chatTabList[messageGroupID].closeEvent();\r\n const groupInfoNew = await EChat.DataProvider.GetGroupInfoByGroupID(messageGroupID);\r\n if (groupInfoNew && windowExist) {\r\n // Task 1028228: echat error when adding members to a group.\r\n await EChat.MainPageController.getMessageWindow(messageGroupID).addRecentTab(groupInfoNew, true);\r\n }\r\n }\r\n }\r\n await EChat.MainPageController.redrawGroupEvent(newGroup);\r\n await _this.UpdateTaskGroupByMessageGroup(newGroup);\r\n\r\n return newGroup;\r\n };\r\n\r\n this.deleteGroupData = async function (groupId, close, updateUnRead) {\r\n await EChat.IndexedDB.DeleteTableDataByKey(EChat.DBTableName.GROUPINFO, groupId, close);\r\n if (close) {\r\n _this.dispatch(EChat.CustomEvent.DELETEGROUP, _this.createHandlerArgument(null, groupId));\r\n }\r\n\r\n if (groupId.indexOf(\"_\") === -1) {\r\n const allTaskGroup = await EChat.IndexedDB.GetTableDataByIndex(EChat.DBTableName.GROUPINFO, \"GroupType\", SocketUtil.GroupType.Task);\r\n const taskGroupArr = [];\r\n for (let i = 0; i < allTaskGroup.length; i++) {\r\n if (allTaskGroup[i].MessageGroupID.indexOf(`${groupId}_`) > -1) {\r\n taskGroupArr.push(allTaskGroup[i].MessageGroupID);\r\n }\r\n }\r\n if (taskGroupArr.length !== 0) {\r\n for (let i = 0, len = taskGroupArr.length; i < len; i++) {\r\n _this.dispatch(EChat.CustomEvent.DELETEGROUP, _this.createHandlerArgument(null, taskGroupArr[i]));\r\n await EChat.IndexedDB.DeleteTableDataByKey(EChat.DBTableName.GROUPINFO, taskGroupArr[i], close);\r\n }\r\n }\r\n }\r\n\r\n const updateGroupIDArr = [groupId];\r\n const allTaskGroup = await EChat.IndexedDB.GetTableDataByIndex(EChat.DBTableName.GROUPINFO, \"GroupType\", SocketUtil.GroupType.Task);\r\n for (let i = 0; i < allTaskGroup.length; i++) {\r\n const taskGroup = allTaskGroup[i];\r\n if (taskGroup.MessageGroupID.indexOf(`${groupId}_`) > -1) {\r\n updateGroupIDArr.push(taskGroup.MessageGroupID);\r\n }\r\n }\r\n\r\n await EChat.IndexedDB.UpdateGroupUnread(updateGroupIDArr, 0, true);\r\n if (updateUnRead) {\r\n EChat.MainPageController.updateUnReadNumIcon(\"group delete\");\r\n }\r\n };\r\n\r\n this.subScribeAlert = function (subScribeType, alertId, deliveryMethodStr) {\r\n _this.api(\"SalesComm_SubScribeAlert\", {\r\n SubScribeType: subScribeType,\r\n AlertID: alertId,\r\n DeliveryMethod: deliveryMethodStr\r\n }).then(() => {\r\n // Alert\r\n EChat.IndexedDB.GetTableDataByKey(EChat.DBTableName.TABLEALERTS, parseInt(alertId)).then((alertInfo) => {\r\n for (let i = 0, len = alertInfo.DeliveryMethodList.length; i < len; i++) {\r\n const DeliveryMethod = alertInfo.DeliveryMethodList[i];\r\n const deliveryMethodArr = deliveryMethodStr.toString().split(\",\");\r\n for (let j = 0, len2 = deliveryMethodArr.length; j < len2; j++) {\r\n if (DeliveryMethod === deliveryMethodArr[j]) {\r\n alertInfo.DeliveryMethodList.splice(i, 1);\r\n }\r\n }\r\n }\r\n if (subScribeType === 1) {\r\n alertInfo.DeliveryMethodList.push(deliveryMethodStr);\r\n }\r\n EChat.IndexedDB.UpdateTableAlert([alertInfo], true);\r\n });\r\n });\r\n };\r\n\r\n this.editGroupPromptType = async function (update) {\r\n const groupID = update.groupID;\r\n const taskID = update.taskID;\r\n\r\n const groupInfo = await EChat.DataProvider.GetGroupInfoByGroupID(groupID);\r\n\r\n if (groupInfo) {\r\n let prompt;\r\n if (groupInfo.Prompt === EChat.PromptType.DoNotDisturb) {\r\n prompt = EChat.PromptType.Normal;\r\n } else {\r\n prompt = EChat.PromptType.DoNotDisturb;\r\n }\r\n\r\n await SocketUtil.api(\"EditGroupPromptType\", {\r\n MessageGroupID: groupID,\r\n PromptType: prompt\r\n });\r\n\r\n await EChat.IndexedDB.UpdateGroupInfo([{\r\n MessageGroupID: groupID,\r\n Prompt: prompt\r\n }], true);\r\n\r\n groupInfo.Prompt = prompt;\r\n await EChat.MainPageController.updateUnreadSumCount(\"EditGroupPromptType\");\r\n await EChat.MainPageController.redrawGroupEvent(groupInfo);\r\n EChat.MainPageController.updatePromptIcon({ taskID, groupID, prompt });\r\n return prompt;\r\n }\r\n return null;\r\n };\r\n\r\n this.GetUnreadMessageGroups = async function () {\r\n let result = [];\r\n try {\r\n result = await SocketUtil.api(\"GetUnreadMessageGroups2010\", null);\r\n } catch (e) {\r\n // eslint-disable-next-line no-console\r\n console.error(`${e.ErrorCode} ${e.ErrorMessage}`);\r\n }\r\n\r\n return result;\r\n };\r\n\r\n this.GetCustomerGroup = async function (Search) {\r\n let result = [];\r\n try {\r\n result = await SocketUtil.api(\"GetCustomGroup\", { Search });\r\n } catch (e) {\r\n // eslint-disable-next-line no-console\r\n console.error(e.ErrorCode + e.ErrorMessage);\r\n }\r\n\r\n return result;\r\n };\r\n\r\n this.GetGroupUserInfo = async function (groupId) {\r\n let userInfoList = [];\r\n const groupInfo = await _this.GetGroupInfoByGroupID(groupId);\r\n if (!groupInfo) {\r\n return userInfoList;\r\n }\r\n // Task 716973: eChat Groups: Group does not list group members\r\n if (!groupInfo.Users || groupInfo.Users.length < parseInt(groupInfo.UserCount) || groupInfo.Users.length === 0) {\r\n const userList = await SocketUtil.api(\"GetGroupUsers\", {\r\n MessageGroupID: groupId,\r\n SenderSessionID: SocketUtil.getSessionID()\r\n });\r\n const userDic = {};\r\n userDic[groupId] = userList;\r\n await EChat.IndexedDB.UpdateGroupUsers(userDic);\r\n groupInfo.Users = userList;\r\n }\r\n\r\n if (groupInfo?.Users?.length !== 0) {\r\n userInfoList = await _this.GetUserInfo(groupInfo.Users);\r\n if (userInfoList.length < groupInfo.Users.length) {\r\n const missUser = [];\r\n for (let i = 0; i < userInfoList.length; i++) {\r\n const user = userInfoList[i];\r\n let j;\r\n for (j = 0; j < groupInfo.Users.length; j++) {\r\n if (parseInt(groupInfo.Users[j]) === parseInt(user.AuthenticationID)) {\r\n break;\r\n }\r\n }\r\n\r\n if (j === groupInfo.Users.length) {\r\n missUser.push(user.AuthenticationID);\r\n }\r\n }\r\n\r\n for (let i = 0; i < missUser.length; i++) {\r\n userInfoList.push({\r\n AuthenticationID: missUser[i],\r\n Name: `None ${missUser[i]}`\r\n });\r\n }\r\n }\r\n }\r\n return userInfoList;\r\n };\r\n };\r\n return new EChatDataProviderClass();\r\n}());\r\n\r\nEChat.MainPageController = (function () {\r\n const MainPageControllerClass = function () {\r\n const _this = this;\r\n const eChatPageUrl = `BI/EChatView2109.html?v=${ECPVersion}`;\r\n\r\n let userPageController = null;\r\n let recentPageController = null;\r\n let customGroupPageController = null;\r\n let settingsPageController = null;\r\n let savedPageController = null;\r\n let subscribePageController = null;\r\n let currentDisplayController = null;\r\n // Task 1067218: DSDLink: eChat in the new Mobile Framework\r\n this.ClientOS = \"\";\r\n this.messageWindowList = [];\r\n this.currentMessageWindow = null;\r\n this.mainPageViewType = null;\r\n this.mainPageTab = null;\r\n this.userSearchHandle = null;\r\n this.chatWindowSize = {\r\n height: 233,\r\n width: 600\r\n };\r\n this.mainWindowSize = {\r\n height: 385,\r\n currHeight: 0\r\n };\r\n this.windowChangeThread = 0;\r\n // Task 1067218: DSDLink: eChat in the new Mobile Framework\r\n const adjustClient = function () {\r\n const device = navigator.userAgent.toLowerCase();\r\n if (/ipad|iphone|midp|rv:1.2.3.4|ucweb|android|windows ce|windows mobile/.test(device)) {\r\n _this.ClientOS = \"Mobile\";\r\n } else {\r\n _this.ClientOS = \"PC\";\r\n }\r\n };\r\n\r\n const openView = function () {\r\n const EChatMainPage = document.getElementById(\"EChatMainPage\");\r\n adjustClient();\r\n\r\n if (EChatMainPage) {\r\n if (EChat.eChatMoving) {\r\n EChat.eChatMoving = false;\r\n }\r\n if (_this.mainPageViewType !== EChat.ViewType.OpenView) {\r\n EChatMainPage.style.display = \"block\";\r\n document.getElementById(\"EChatMainPageHead\").style.display = \"block\";\r\n document.getElementById(\"EChatMinimizeBtn\").style.display = \"block\";\r\n document.getElementById(\"EChatRefreshBtn\").style.display = \"block\";\r\n // Task 1074079:eChat: Close window buttons do not use the standard UI Kit\r\n document.getElementById(\"MinButtonSwitch\").style.display = \"block\";\r\n document.getElementById(\"MinButtonMin\").style.display = \"block\";\r\n document.getElementById(\"MinButtonMax\").style.display = \"block\";\r\n const EChatMaximizeBtn = document.getElementById(\"EChatMaximizeBtn\");\r\n EChatMainPage.classList.remove(\"minimize\");\r\n // Task 1067218: DSDLink: eChat in the new Mobile Framework\r\n if (_this.ClientOS === \"PC\") {\r\n document.getElementById(\"EChatMainPageContent\").style.display = \"flex\";\r\n if (EChatMaximizeBtn) {\r\n EChatMaximizeBtn.style.display = \"block\";\r\n document.querySelector(\"#EChatCloseBtn ecp-btn\").setAttribute(\"style\", \"font-size:16px;\");\r\n document.getElementById(\"EChatCloseBtn\").classList.remove(\"MinCloseBtn\");\r\n }\r\n EChatMainPage.style.top = `${window.innerHeight - EChatMainPage.offsetHeight}px`;\r\n\r\n _this.resizeMainPageWindow();\r\n _this.mainPageViewType = EChat.ViewType.OpenView;\r\n } else {\r\n EChat.FullWindowController.FullWindow = true;\r\n EChat.FullWindowController.ResizeFullWindow();\r\n EChat.FullWindowController.ResizeMobileFullWindow();\r\n document.getElementById(\"EChatMainPageContent\").style.display = \"flex\";\r\n _this.mainPageViewType = EChat.ViewType.OpenView;\r\n }\r\n }\r\n } else {\r\n EChat.Setting.showView = true;\r\n }\r\n gtag(\"event\", \"openEChat\");\r\n };\r\n\r\n const minimizeView = function () {\r\n if (EChat.eChatMoving) {\r\n EChat.eChatMoving = false;\r\n }\r\n if (_this.mainPageViewType !== EChat.ViewType.MinimizeView) {\r\n const EChatMainPage = document.getElementById(\"EChatMainPage\");\r\n if (EChatMainPage) {\r\n EChatMainPage.style.display = \"block\";\r\n document.getElementById(\"EChatMainPageHead\").style.display = \"block\";\r\n document.getElementById(\"EChatMinimizeBtn\").style.display = \"none\";\r\n document.getElementById(\"EChatRefreshBtn\").style.display = \"none\";\r\n document.getElementById(\"EChatMainPageContent\").style.display = \"none\";\r\n // Task 1074079:eChat: Close window buttons do not use the standard UI Kit\r\n document.getElementById(\"MinButtonSwitch\").style.display = \"none\";\r\n document.getElementById(\"MinButtonMin\").style.display = \"none\";\r\n document.getElementById(\"MinButtonMax\").style.display = \"none\";\r\n const EChatMaximizeBtn = document.getElementById(\"EChatMaximizeBtn\");\r\n if (EChatMaximizeBtn) {\r\n EChatMaximizeBtn.style.display = \"none\";\r\n document.getElementById(\"EChatCloseBtn\").classList.add(\"MinCloseBtn\");\r\n document.querySelector(\".MinCloseBtn ecp-btn\").setAttribute(\"style\", \"font-size:16px;width:26px;height:26px;\");\r\n }\r\n EChatMainPage.classList.add(\"minimize\");\r\n EChatMainPage.style.top = `${window.innerHeight - EChatMainPage.offsetHeight}px`;\r\n EChatMainPage.style.left = `${window.innerWidth - EChatMainPage.offsetWidth}px`;\r\n }\r\n _this.mainPageViewType = EChat.ViewType.MinimizeView;\r\n }\r\n };\r\n\r\n const refreshView = async function () {\r\n EChat.DataProvider.initUser();\r\n await EChat.MainPageController.updateUnreadSumCount(\"refreshView\");\r\n EChat.IndexedDB.InitDBData(0, true);\r\n if (SocketUtil.GetSocketState() !== SocketUtil.SocketState.Connect) {\r\n EWS.VerifySession(() => {\r\n SocketUtil.Reconnect();\r\n });\r\n }\r\n };\r\n\r\n this.updatePromptIcon = function (update) {\r\n const groupID = update.groupID;\r\n const taskID = update.taskID;\r\n const prompt = update.prompt;\r\n\r\n if (taskID) {\r\n return;\r\n }\r\n\r\n let alertClass;\r\n // lset editPromptTitle = \"\";\r\n if (prompt === EChat.PromptType.DoNotDisturb) {\r\n alertClass = \"ews-icon-DisablesVoice\";\r\n // Task 1160492: Changing title attributes on icon-only buttons to use tooltip instead\r\n // editPromptTitle = \"Unmute eChat Group\";\r\n } else {\r\n alertClass = \"ews-icon-alert\";\r\n // editPromptTitle = \"Mute eChat Group\";\r\n }\r\n\r\n for (let i = 0, len = EChat.MainPageController.messageWindowList.length; i < len; i++) {\r\n const mainWindow = EChat.MainPageController.messageWindowList[i];\r\n const promptDom = mainWindow.editPrompt;\r\n const currentTab = mainWindow.currentTab;\r\n if (promptDom && currentTab?.GroupInfo?.MessageGroupID === groupID) {\r\n // Task 1149732: Update 'eChat' page to new button component\r\n promptDom.setAttribute(\"icon\", \"\");\r\n promptDom.setAttribute(\"icon\", alertClass);\r\n }\r\n if (EChat.FullWindowController.FullWindow) {\r\n const OldIcon = mainWindow.element.querySelector(`.mce-tinymce .ews-icon-alert`);\r\n const NewIcon = mainWindow.element.querySelector(`.mce-tinymce .ews-icon-DisablesVoice`);\r\n if (prompt === EChat.PromptType.DoNotDisturb) {\r\n if (OldIcon) {\r\n OldIcon.parentElement.parentElement.classList.add(\"hidden\");\r\n }\r\n if (NewIcon) {\r\n NewIcon.parentElement.parentElement.classList.remove(\"hidden\");\r\n }\r\n } else {\r\n if (OldIcon) {\r\n OldIcon.parentElement.parentElement.classList.remove(\"hidden\");\r\n }\r\n if (NewIcon) {\r\n NewIcon.parentElement.parentElement.classList.add(\"hidden\");\r\n }\r\n }\r\n }\r\n }\r\n\r\n const echatDom = document.getElementById(`eChatPrompt_echat_${groupID}`);\r\n if (echatDom) {\r\n echatDom.classList.remove(\"ews-icon-alert\", \"ews-icon-DisablesVoice\");\r\n echatDom.classList.add(alertClass);\r\n echatDom.setAttribute(\"title\", editPromptTitle);\r\n }\r\n };\r\n\r\n const closeView = function () {\r\n if (EChat.eChatMoving) {\r\n EChat.eChatMoving = false;\r\n }\r\n if (_this.mainPageViewType !== EChat.ViewType.CloseView) {\r\n document.getElementById(\"EChatMainPage\").style.display = \"none\";\r\n _this.resizeMainPageWindow();\r\n _this.mainPageViewType = EChat.ViewType.CloseView;\r\n }\r\n if (EChat.FullWindowController.FullWindow) {\r\n if (EChat.MainPageController.messageWindowList.length) {\r\n EChat.MainPageController.messageWindowList[0].closeMessageWindow();\r\n }\r\n EChat.FullWindowController.Destroy();\r\n }\r\n gtag(\"event\", \"closeEChat\");\r\n };\r\n\r\n this.RefreshBtnColor = function (color, isFromLocalStorage) {\r\n if (color) {\r\n const EChatRefreshBtn = document.getElementById(\"EChatRefreshBtn\");\r\n if (EChatRefreshBtn) {\r\n EChatRefreshBtn.style.color = color;\r\n }\r\n\r\n if (!isFromLocalStorage) {\r\n EChat.IndexedDB.UpdateSetting(\"RefreshBtnColor\", { Color: color }, true);\r\n }\r\n }\r\n };\r\n\r\n this.loadEChatViewHtml = function () {\r\n return new Promise((resolve, reject) => {\r\n ECP.Tools.Ajax(eChatPageUrl, {\r\n method: \"GET\"\r\n }).then((response) => {\r\n response.text().then((htmlData) => {\r\n if (document.getElementById(\"EChatMainPage\")) {\r\n reject();\r\n return;\r\n }\r\n\r\n resolve(htmlData);\r\n });\r\n }).catch((e) => {\r\n EChat.eChatState = false;\r\n reject(e);\r\n });\r\n });\r\n };\r\n\r\n this.ReloadEChatData = async function (alertText) {\r\n if (EChat.MainPageController) {\r\n EChat.MainPageController.closeAllWindow();\r\n }\r\n\r\n EChat.Util.removeEChat();\r\n\r\n await EChat.IndexedDB.ClearDateBase();\r\n await EChat.IndexedDB.UpdateSetting(\"EChatV2010\", EChat.Util.getTimeStamp(), false);\r\n\r\n await EChat.Util.initEChat();\r\n if (alertText) {\r\n ECP.Dialog.Alert(alertText);\r\n }\r\n await EChat.IndexedDB.InitDBData(0, true);\r\n };\r\n\r\n this.initMainPage = function () {\r\n return new Promise((resolve, reject) => {\r\n _this.loadEChatViewHtml().then((htmlData) => {\r\n const htmlDom = EC_Fmt.HtmlStrToElement(htmlData);\r\n const htmlDomChildren = htmlDom.children.length;\r\n for (let i = 0; i < htmlDomChildren; i++) {\r\n document.querySelector(\"html > body\").append(htmlDom.children[0]);\r\n }\r\n\r\n // Task 1031971: Server eChat strings are not Localized all in English\r\n const transChar = document.querySelectorAll(\"body .eChatTrn\");\r\n const transPlaceholders = document.querySelectorAll(\".inputTrn\");\r\n transChar.forEach((item) => {\r\n item.innerText = EC_Fmt.Trn(item.innerText.trim());\r\n });\r\n transPlaceholders.forEach((t) => {\r\n t.setAttribute(\"placeholder\", EC_Fmt.Trn(t.getAttribute(\"placeholder\")));\r\n });\r\n\r\n // Task 666790: eChat: Clearing Data on eChat clears all groups\r\n EChat.eChatState = true;\r\n if (EChat.Setting.showView) {\r\n openView();\r\n } else {\r\n closeView();\r\n EChat.Setting.showView = true;\r\n }\r\n\r\n EChat.Util.dragDialog({\r\n dialog: document.getElementById(\"EChatMainPage\"),\r\n handle: document.getElementById(\"EChatMainPageHead\"),\r\n handleWidthFix: 0,\r\n handleHeightFix: 0,\r\n AllowSelection: true,\r\n // scroll: false,\r\n start(dom) {\r\n dom.style.zIndex = EChat.Util.draggableZIndex();\r\n },\r\n stop(dom) {\r\n dom.style.height = \"auto\";\r\n }\r\n });\r\n\r\n // Navigation Button\r\n document.getElementById(\"EChatButton\").addEventListener(\"click\", (e) => {\r\n openView();\r\n e.stopPropagation();\r\n });\r\n\r\n // MainPageHead\r\n document.getElementById(\"EChatMainPageHead\").addEventListener(\"click\", () => {\r\n if (EChat.eChatMoving) {\r\n EChat.eChatMoving = false;\r\n } else {\r\n openView();\r\n }\r\n });\r\n\r\n // Minimize Button\r\n document.getElementById(\"EChatMinimizeBtn\").parentNode.addEventListener(\"click\", (e) => {\r\n minimizeView();\r\n e.stopPropagation();\r\n });\r\n\r\n // Maximize Button\r\n const maxBtnParent = document.getElementById(\"EChatMaximizeBtn\");\r\n maxBtnParent.addEventListener(\"click\", () => {\r\n EChat.FullWindowController.SwichWindow();\r\n });\r\n\r\n // EChatRefresh Button\r\n document.getElementById(\"EChatRefreshBtn\").addEventListener(\"click\", (e) => {\r\n EChat.MainPageController.RefreshBtnColor(\"var(--neutral-70)\");\r\n refreshView();\r\n e.stopPropagation();\r\n });\r\n // Close Button\r\n document.getElementById(\"EChatCloseBtn\").parentNode.addEventListener(\"click\", (e) => {\r\n closeView();\r\n e.stopPropagation();\r\n });\r\n // Click to view Unread Message.\r\n document.getElementById(\"EChatNewMsgNum\").addEventListener(\"click\", () => {\r\n const EChatSearchText = document.getElementById(\"EChatSearchText\");\r\n EChatSearchText.value = \"Unread\";\r\n EC_Fmt.TriggerEvent(EChatSearchText, \"keyup\");\r\n });\r\n\r\n // searchPanel\r\n const EChatSearchDom = document.getElementById(\"EChatSearchText\");\r\n const SearchClearDom = document.querySelector(\"#EChatMainPageContent .eChat-SearchClear\");\r\n const searchFun = function (e) {\r\n currentDisplayController.searchPanelKeyupEvent(e, EChatSearchDom, false);\r\n if (EChatSearchDom.value) {\r\n SearchClearDom.classList.remove(\"hidden\");\r\n } else {\r\n SearchClearDom.classList.add(\"hidden\");\r\n }\r\n if (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n };\r\n EChatSearchDom.addEventListener(\"keyup\", searchFun);\r\n SearchClearDom.addEventListener(\"click\", () => {\r\n EChatSearchDom.value = \"\";\r\n searchFun();\r\n });\r\n\r\n const EChatAlertSearchDom = document.getElementById(\"EChatAlertSearchText\");\r\n EChatAlertSearchDom.addEventListener(\"keyup\", searchFun);\r\n // switch tab\r\n const clickTabEvent = function (e) {\r\n clearTimeout(_this.userSearchHandle);\r\n\r\n const tab = e.currentTarget.getAttribute(\"switch-tab\");\r\n e.currentTarget.classList.add(\"eChat-CurrentTab\");\r\n const children = document.querySelectorAll(\".EChatMainPageHeadTop2 #EChatTabHead > .eChat-CurrentTab\");\r\n for (let i = 0; i < children.length; i++) {\r\n if (children[i] !== e.currentTarget) {\r\n children[i].classList.remove(\"eChat-CurrentTab\");\r\n }\r\n }\r\n\r\n const EChatDirectorySwitch = document.getElementById(\"EChatDirectorySwitch\");\r\n if (tab === \"EChatDirectoryTab\" || tab === \"EChatGroupTab\" || tab === \"EChatUserTab\") {\r\n EChatDirectorySwitch.style.display = \"flex\";\r\n } else {\r\n EChatDirectorySwitch.style.display = \"none\";\r\n }\r\n\r\n if (tab === \"EChatSavedTab\") {\r\n document.querySelector(\".eChat-saved-sort-div\").classList.remove(\"hidden\");\r\n } else {\r\n document.querySelector(\".eChat-saved-sort-div\").classList.add(\"hidden\");\r\n }\r\n\r\n const tabDiv = document.querySelectorAll(\"#EChatTabBody > div\");\r\n for (let i = 0; i < tabDiv.length; i++) {\r\n if (tabDiv[i].getAttribute(\"tab\") === tab) {\r\n tabDiv[i].style.display = tabDiv[i].getAttribute(\"old-display\");\r\n } else {\r\n tabDiv[i].style.display = \"none\";\r\n }\r\n }\r\n\r\n const SearchClear = document.getElementById(\"EChatUserSearchClear\");\r\n if (SearchClear) {\r\n EC_Fmt.TriggerEvent(SearchClear, \"click\");\r\n }\r\n\r\n EChat.MainPageController.ShowCreateGroupButton();\r\n };\r\n const listItems = document.querySelectorAll(\".eChat-tab-head\");\r\n for (let i = 0, len = listItems.length; i < len; i++) {\r\n listItems[i].addEventListener(\"click\", clickTabEvent);\r\n }\r\n\r\n const EChatSearchText = document.getElementById(\"EChatSearchText\");\r\n const searchImage = document.querySelector(\"#EChatMainPageContent > .eChat-Search\");\r\n const EChatRecentSwitchBtn = document.getElementById(\"EChatRecentSwitchBtn\");\r\n EChatRecentSwitchBtn.addEventListener(\"click\", (e) => {\r\n // Task 649483: We should hide eChat Tasks until we can Chat from Tasks and view previous eChat Tasks\r\n if (currentDisplayController !== recentPageController) {\r\n currentDisplayController = recentPageController;\r\n }\r\n\r\n searchImage.style.display = \"block\";\r\n EChatSearchText.value = \"\";\r\n SearchClearDom.classList.add(\"hidden\");\r\n EChatSearchText.setAttribute(\"placeholder\", EC_Fmt.Trn(\"Search Users, Groups, Messages, Tasks ...\"));\r\n EChatSearchText.removeAttribute(\"tab\");\r\n EChatSearchText.removeAttribute(\"selected\");\r\n document.getElementById(\"EChatRecentList\").removeAttribute(\"tab\");\r\n document.getElementById(\"EChatRecentList\").innerHTML = \"\";\r\n\r\n if (typeof e.isTrigger === \"undefined\") {\r\n EChatSearchText.focus();\r\n }\r\n\r\n currentDisplayController.searchPanelKeyupEvent(null, EChatSearchText, true);\r\n document.getElementById(\"EChatRecentList\").scrollTop = 0;\r\n _this.mainPageTab = \"Recents\";\r\n });\r\n\r\n document.getElementById(\"EChatDirectoryTab\").addEventListener(\"click\", () => {\r\n EC_Fmt.TriggerEvent(document.getElementById(\"EChatUserSwitchBtn\"), \"click\");\r\n });\r\n\r\n document.getElementById(\"EChatUserSwitchBtn\").addEventListener(\"click\", async () => {\r\n document.getElementById(\"EChatDirectoryTab\").classList.add(\"eChat-CurrentTab\");\r\n document.getElementById(\"EChatGroupSwitchBtn\").classList.remove(\"active\");\r\n document.getElementById(\"EChatUserSwitchBtn\").classList.add(\"active\");\r\n\r\n if (currentDisplayController !== userPageController) {\r\n currentDisplayController = userPageController;\r\n } else {\r\n return;\r\n }\r\n _this.mainPageTab = \"Users\";\r\n\r\n EChatSearchText.value = \"\";\r\n SearchClearDom.classList.add(\"hidden\");\r\n EChatSearchText.setAttribute(\"placeholder\", EC_Fmt.Trn(\"Search Users, Job Title, Department ...\"));\r\n\r\n searchImage.style.display = \"block\";\r\n EChatSearchText.focus();\r\n\r\n // SetDefaultUser\r\n if (!EChatSearchText.value) {\r\n const recentList = await EChat.IndexedDB.GetTableAllData(EChat.DBTableName.GROUPINFO);\r\n const groupList = [];\r\n\r\n for (let i = 0; i < recentList.length; i++) {\r\n if (recentList[i].UserCount === 2 && recentList[i].Users && recentList[i].Users.length === 2 && recentList[i].Messages && recentList[i].Messages.length !== 0) {\r\n groupList.push(recentList[i]);\r\n }\r\n }\r\n\r\n if (groupList?.length !== 0) {\r\n groupList.sort((a, b) => EChat.IndexedDB.GetGroupSortTime(b) - EChat.IndexedDB.GetGroupSortTime(a));\r\n }\r\n\r\n const userArr = [];\r\n for (let i = 0; i < groupList.length; i++) {\r\n const authID1 = groupList[i].Users[0];\r\n const authID2 = groupList[i].Users[1];\r\n if (!EChat.DataProvider.IsCurrentUser(authID1) && !userArr.includes(authID1)) {\r\n userArr.push(authID1);\r\n } else if (!EChat.DataProvider.IsCurrentUser(authID2) && !userArr.includes(authID1)) {\r\n userArr.push(authID2);\r\n }\r\n\r\n if (userArr.length >= 10) {\r\n break;\r\n }\r\n }\r\n\r\n EChatSearchText.setAttribute(\"default-user\", userArr.join(\",\"));\r\n userPageController.searchPanelKeyupEvent(null, null, true);\r\n }\r\n });\r\n\r\n document.getElementById(\"EChatGroupSwitchBtn\").addEventListener(\"click\", async (e) => {\r\n document.getElementById(\"EChatDirectoryTab\").classList.add(\"eChat-CurrentTab\");\r\n e.currentTarget.classList.add(\"active\");\r\n document.getElementById(\"EChatUserSwitchBtn\").classList.remove(\"active\");\r\n\r\n if (currentDisplayController !== customGroupPageController) {\r\n currentDisplayController = customGroupPageController;\r\n } else {\r\n return;\r\n }\r\n _this.mainPageTab = \"Groups\";\r\n\r\n EChatSearchText.setAttribute(\"placeholder\", EC_Fmt.Trn(\"Search Groups\"));\r\n EChatSearchText.value = \"\";\r\n SearchClearDom.classList.add(\"hidden\");\r\n searchImage.style.display = \"block\";\r\n\r\n if (typeof e.isTrigger === \"undefined\") {\r\n EChatSearchText.focus();\r\n }\r\n if (currentDisplayController) {\r\n currentDisplayController.searchPanelKeyupEvent(null, \"\", true);\r\n }\r\n document.getElementById(\"EChatGroupList\").scrollTop = 0;\r\n });\r\n\r\n document.getElementById(\"EChatSettingSwitchBtn\").addEventListener(\"click\", () => {\r\n if (currentDisplayController !== settingsPageController) {\r\n currentDisplayController = settingsPageController;\r\n } else {\r\n return;\r\n }\r\n const EChatSettingsTab = document.getElementById(\"EChatSettingsList\");\r\n if (!EChatSettingsTab) {\r\n return;\r\n }\r\n\r\n EChatSettingsTab.style.display = \"block\";\r\n searchImage.style.display = \"none\";\r\n EChat.Util.Loading(true);\r\n EChat.DataProvider.api(\"SalesComm_EChat_GetTableAlertsData\").then((data) => {\r\n EChat.IndexedDB.UpdateTableAlert(data.TableAlert, true).then(() => {\r\n // Task 744404: JavaScript Error: includes/DefaultAll.min.js (1) - Uncaught TypeError: Cannot read property 'style' of null\r\n if (subscribePageController) {\r\n subscribePageController.drawTableAlerts(data.TableAlert);\r\n }\r\n EChat.Util.Loading(false);\r\n });\r\n }).catch(() => {\r\n EChat.Util.Loading(false);\r\n });\r\n });\r\n\r\n document.getElementById(\"EChatSavedTab\").addEventListener(\"click\", (e) => {\r\n if (currentDisplayController !== savedPageController) {\r\n currentDisplayController = savedPageController;\r\n } else {\r\n return;\r\n }\r\n const EChatSavedTab = document.getElementById(\"EChatSavedList\");\r\n if (!EChatSavedTab) {\r\n return;\r\n }\r\n\r\n EChatSavedTab.style.display = \"block\";\r\n searchImage.style.display = \"block\";\r\n\r\n _this.mainPageTab = \"Saved\";\r\n\r\n EChatSearchText.setAttribute(\"placeholder\", EC_Fmt.Trn(\"Search Saved Messages\"));\r\n EChatSearchText.value = \"\";\r\n\r\n if (typeof e.isTrigger === \"undefined\") {\r\n EChatSearchText.focus();\r\n }\r\n if (currentDisplayController) {\r\n currentDisplayController.searchPanelKeyupEvent(null, \"\", true);\r\n }\r\n document.getElementById(\"EChatSavedList\").scrollTop = 0;\r\n });\r\n\r\n document.querySelectorAll(\".eChat-Settings-Title\").forEach((dom) => {\r\n dom.addEventListener(\"click\", () => {\r\n const className = dom.getAttribute(\"content\");\r\n document.querySelectorAll(`#EChatSettingsList .${className}`).forEach((content) => {\r\n if (content.classList.contains(\"hidden\")) {\r\n content.classList.remove(\"hidden\");\r\n } else {\r\n content.classList.add(\"hidden\");\r\n }\r\n });\r\n });\r\n });\r\n\r\n // Task 1119613:eChat: Update all the buttons in eChat to ecp-btn\r\n EWS.Command.AddMenu(\"eChat-advanced-search\", async (control, name, menu, callback) => {\r\n await EChat.CustomComponent.InitUserSearchMenu(menu);\r\n callback(control, menu);\r\n }, (control, name, menu, arg) => {\r\n let searchBtn = menu.querySelector(\"#EChatUserSearchBtn\");\r\n EC_Fmt.RemoveAllEventListeners(searchBtn);\r\n searchBtn = menu.querySelector(\"#EChatUserSearchBtn\");\r\n searchBtn.addEventListener(\"click\", () => {\r\n const searchDom = arg.SearchDom;\r\n let searchKey = \"\";\r\n if (searchDom) {\r\n if (searchDom === \"eChat-advanced-search-btn\") {\r\n searchKey = EChatSearchDom.value;\r\n } else if (searchDom === \"advancedBtn\") {\r\n searchKey = document.getElementById(\"EChatGroupUserSearchText\").value;\r\n }\r\n }\r\n EChat.CustomComponent.UserSearch({\r\n All: false,\r\n UserTypeID: menu.querySelector(\"#EChatSelectUserType input[type='hidden']\").value,\r\n LocationID: menu.querySelector(\"#EChatSelectLocation input[type='hidden']\").value,\r\n RoleID: menu.querySelector(\"#EChatSelectRole input[type='hidden']\").value,\r\n Search: searchKey || \"\",\r\n Container: arg.Container,\r\n ClickCallBack: arg.ClickCallBack,\r\n Mark: arg.Mark,\r\n NotInArr: arg.NotInArr,\r\n ShowUserType: arg.ShowUserType,\r\n ShowFilters: arg.ShowFilters,\r\n HiddenCreateGroupBtn: false\r\n });\r\n EWS.Command.HideMenu(\"eChat-advanced-search\");\r\n });\r\n });\r\n\r\n // InitWindowResize\r\n oldmainpageW = window.innerWidth;\r\n oldmainpageH = window.innerHeight;\r\n EChat.Util.windowResizeListener();\r\n\r\n // Init Controller\r\n userPageController = new EChat.UserController();\r\n recentPageController = new EChat.RecentController();\r\n customGroupPageController = new EChat.CustomGroupController();\r\n settingsPageController = new EChat.SettingsController();\r\n savedPageController = new EChat.SavedController();\r\n subscribePageController = new EChat.SubscribeController();\r\n currentDisplayController = recentPageController;\r\n\r\n // Bind Event\r\n userPageController.InitSearch();\r\n\r\n EChat.DataProvider.bind(EChat.CustomEvent.REDRAWTABLEALERTS, redrawTableAlerts);\r\n EChat.DataProvider.bind(EChat.CustomEvent.DELETEGROUP, deleteGroupEvent);\r\n resolve();\r\n\r\n const stateStr = EChat.LocalStorage.readLocalStorage(\"SocketState\");\r\n if (stateStr?.split(\"_\")[0]) {\r\n EChat.WebSocket.UpdateEChatState(stateStr.split(\"_\")[0]);\r\n }\r\n\r\n EChat.IndexedDB.GetSetting(\"RefreshBtnColor\").then((SettingValue) => {\r\n if (SettingValue) {\r\n EChat.MainPageController.RefreshBtnColor(SettingValue.Color, true);\r\n }\r\n });\r\n\r\n EChat.IndexedDB.GetSetting(\"ChatSize\").then((SettingValue) => {\r\n if (SettingValue && EChat.MainPageController) {\r\n EChat.MainPageController.chatWindowSize = SettingValue;\r\n }\r\n });\r\n // Task 1067218: DSDLink: eChat in the new Mobile Framework\r\n adjustClient();\r\n if (EChat.FullWindowController.FullWindow && _this.ClientOS === \"PC\") {\r\n EChat.FullWindowController.ResizeTextArea();\r\n } else {\r\n EChat.IndexedDB.GetSetting(\"MainSize\").then((SettingValue) => {\r\n if (SettingValue && EChat.MainPageController) {\r\n EChat.MainPageController.mainWindowSize = SettingValue;\r\n let height = parseInt(SettingValue.height);\r\n if (!EC_Fmt.isNumber(height)) {\r\n height = EChat.__height;\r\n }\r\n EChatMainPage.style.setProperty(\"--height\", `${height}px`);\r\n _this.resizeDialog();\r\n }\r\n });\r\n }\r\n\r\n let oldHeight;\r\n let oldTop;\r\n const mainPage = document.getElementById(\"EChatMainPage\");\r\n\r\n EChat.Util.dragResize({\r\n resizeDirection: \"s\",\r\n handle: document.querySelector(\".eChat-ResizeHandle.eChat-Main-S\"),\r\n start: () => {\r\n oldHeight = parseInt(mainPage.style.getPropertyValue(\"--height\").replace(\"px\", \"\"));\r\n if (!EC_Fmt.isNumber(oldHeight)) {\r\n oldHeight = EChat.MainPageController.mainWindowSize.height;\r\n }\r\n if (!EC_Fmt.isNumber(oldHeight)) {\r\n oldHeight = EChat.__height;\r\n }\r\n\r\n oldTop = mainPage.getBoundingClientRect().top;\r\n },\r\n move: ({ AbsoluteHeight }) => {\r\n const minHeight = EChat.__height;\r\n if (oldHeight - AbsoluteHeight <= minHeight) {\r\n AbsoluteHeight = oldHeight - minHeight;\r\n }\r\n\r\n EChat.MainPageController.mainWindowSize.height = oldHeight - AbsoluteHeight;\r\n EChat.MainPageController.mainWindowSize.currHeight = 0;\r\n\r\n if (AbsoluteHeight) {\r\n mainPage.style.top = `${oldTop + AbsoluteHeight}px`;\r\n _this.resizeDialog();\r\n }\r\n },\r\n end: () => {\r\n EChat.IndexedDB.UpdateSetting(\"MainSize\", {\r\n height: EChat.MainPageController.mainWindowSize.height\r\n });\r\n }\r\n });\r\n }).catch((e) => {\r\n reject(e);\r\n });\r\n });\r\n };\r\n\r\n this.ShowCreateGroupButton = function (itemid) {\r\n const selectArr = [];\r\n if (itemid) {\r\n document.querySelectorAll(`#${itemid} input:checked`).forEach((dom) => {\r\n selectArr.push(dom.getAttribute(\"authid\"));\r\n });\r\n }\r\n\r\n const EChatCreateGroup = document.getElementById(\"EChatCreateGroup\");\r\n const EChatMainPageContent = document.getElementById(\"EChatMainPageContent\");\r\n\r\n const selectAuthID = document.getElementById(\"EChatSearchText\").getAttribute(\"selected\");\r\n if (selectAuthID) {\r\n const arr = selectAuthID.split(\",\");\r\n for (let i = 0; i < arr.length; i++) {\r\n if (!selectArr.includes(arr[i])) {\r\n selectArr.push(arr[i]);\r\n }\r\n }\r\n }\r\n const selectLength = selectArr.length;\r\n if (selectLength > 0) {\r\n EChatCreateGroup.textContent = selectLength === 1 ? EC_Fmt.Trn(\"Create Message\") : EC_Fmt.Trn(\"Create Group\");\r\n EChatCreateGroup.setAttribute(\"itemid\", itemid);\r\n EChatMainPageContent.classList.add(\"UserSelected\");\r\n } else {\r\n EChatMainPageContent.classList.remove(\"UserSelected\");\r\n EChatCreateGroup.removeAttribute(\"itemid\");\r\n }\r\n };\r\n\r\n const deleteGroupEvent = function (data) {\r\n const MessageGroupID = data.data;\r\n if (EChat.MainPageController.checkMessageWindowExist(MessageGroupID)) {\r\n _this.currentMessageWindow.chatTabList[MessageGroupID].closeEvent();\r\n }\r\n recentPageController.deleteGroup(MessageGroupID);\r\n customGroupPageController.deleteGroup(MessageGroupID);\r\n };\r\n\r\n this.redrawGroupEvent = async function (groupData) {\r\n if (!recentPageController) {\r\n return;\r\n }\r\n\r\n let flag;\r\n if (groupData) {\r\n if (EChat.MainPageController.checkMessageWindowExist(groupData.MessageGroupID)) {\r\n const groupID = _this.currentMessageWindow.currentTab.GroupInfo.MessageGroupID;\r\n if (groupID === groupData.MessageGroupID) {\r\n flag = true;\r\n } else {\r\n flag = false;\r\n }\r\n if (_this.currentMessageWindow.messageWindowViewType !== EChat.ViewType.OpenView) {\r\n flag = false;\r\n }\r\n } else {\r\n flag = false;\r\n }\r\n\r\n if (groupData.GroupType === SocketUtil.GroupType.Message || groupData.GroupType === SocketUtil.GroupType.Task || groupData.GroupType === SocketUtil.GroupType.System) {\r\n await recentPageController.redrawGroup(groupData, flag);\r\n if (groupData.GroupName) {\r\n customGroupPageController.redrawCustomGroup(groupData);\r\n } else {\r\n const customGroup = document.getElementById(`CustomGroup${groupData.MessageGroupID}`);\r\n if (customGroup) {\r\n customGroup.remove();\r\n }\r\n }\r\n }\r\n EChat.MainPageController.updateUnReadNumIcon(\"redrawGroupEvent\");\r\n }\r\n };\r\n\r\n this.dataCompleteEvent = async function (data) {\r\n if (!EChat.InitDataing) {\r\n EChat.Util.Loading(false);\r\n }\r\n\r\n if (EChat.eChatState && userPageController && customGroupPageController && recentPageController) {\r\n await recentPageController.initViewMore(data.Recent);\r\n }\r\n EChat.MainPageController.updateUnReadNumIcon(\"dataCompleteEvent\");\r\n await EChat.MainPageController.refreshSavedMessage();\r\n };\r\n\r\n const redrawTableAlerts = function () {\r\n const dataList = document.querySelector(\"#EChatSubscribeList .eChat-DataList\");\r\n if (dataList) {\r\n dataList.remove();\r\n }\r\n EChat.IndexedDB.GetTableAllData(EChat.DBTableName.TABLEALERTS).then((alertInfoList) => {\r\n subscribePageController.drawTableAlerts(alertInfoList);\r\n });\r\n };\r\n // Task 689770: Call Manager: Availability not working bases on the CallStatus.\r\n this.redrawUserAvailability = function (AuthID, Availability) {\r\n if (AuthID && parseInt(AuthID) > 0) {\r\n const ClassAndColor = EChat.DataProvider.GetUserAvailabilityClassAndColor(Availability);\r\n if (ClassAndColor && parseInt(AuthID) === AuthenticationID) {\r\n const icon = document.querySelector(\"#ews-status-display .ews-icon-phone\");\r\n if (icon) {\r\n icon.style.color = ClassAndColor.Color;\r\n }\r\n }\r\n }\r\n };\r\n\r\n this.removeEChatView = function () {\r\n EChat.DataProvider.unbind(EChat.CustomEvent.DELETEGROUP, deleteGroupEvent);\r\n // Task 717267: EChat.js:3498 Uncaught (in promise) TypeError: Cannot read property 'drawTableAlerts' of null\r\n EChat.DataProvider.unbind(EChat.CustomEvent.REDRAWTABLEALERTS, redrawTableAlerts);\r\n\r\n userPageController = null;\r\n recentPageController = null;\r\n customGroupPageController = null;\r\n settingsPageController = null;\r\n savedPageController = null;\r\n subscribePageController = null;\r\n currentDisplayController = null;\r\n _this.currentMessageWindow = null;\r\n\r\n EChat.MainPageController.closeAllWindow();\r\n\r\n const EChatMainPage = document.getElementById(\"EChatMainPage\");\r\n if (EChatMainPage) {\r\n EChatMainPage.remove();\r\n }\r\n changeBrowserImage(\"EChatLogo\", \"EncompassIcon\");\r\n _this.mainPageIsShow = false;\r\n _this.mainPageViewType = EChat.ViewType.CloseView;\r\n EChat.eChatState = false;\r\n EChat.CopyMessageController.ClearCopyMessageDialog();\r\n };\r\n\r\n this.playAudioAlters = function () {\r\n if (EChat.DataProvider.CurrentUserInfo.AudioAlert === 1) {\r\n let audioElement = document.getElementById(\"eChatSoundAlert\");\r\n if (!audioElement) {\r\n audioElement = EChat.MainPageController.initSoundAlert();\r\n }\r\n\r\n audioElement.play().catch(() => {\r\n // Task 663163: The play() request was interrupted by a call to pause()\r\n });\r\n }\r\n };\r\n\r\n this.addSavedMessage = function (SavedMessage) {\r\n savedPageController.addSavedMessage(SavedMessage);\r\n };\r\n\r\n this.cancelSavedMessage = function (SavedMessage) {\r\n savedPageController.cancelSavedMessage(SavedMessage);\r\n };\r\n\r\n this.refreshSavedMessage = async function () {\r\n if (!EChat.DataProvider.SavedMessage) {\r\n const settingSaved = await EChat.IndexedDB.GetSetting(\"SavedMessages\");\r\n if (settingSaved) {\r\n EChat.DataProvider.SavedMessage = settingSaved;\r\n } else {\r\n return;\r\n }\r\n }\r\n\r\n document.querySelectorAll(\".ChattingBox .saved-message-icon\").forEach((dom) => {\r\n if (EChat.DataProvider.SavedMessage.includes(dom.getAttribute(\"savedkey\"))) {\r\n dom.style.display = \"inline-block\";\r\n dom.classList.add(\"ews-icon-collection\");\r\n dom.classList.remove(\"ews-icon-uncollection\");\r\n } else {\r\n dom.style.display = \"\";\r\n dom.classList.add(\"ews-icon-uncollection\");\r\n dom.classList.remove(\"ews-icon-collection\");\r\n }\r\n });\r\n\r\n // Task 1074079:eChat: Close window buttons do not use the standard UI Kit\r\n document.querySelectorAll(\".UserUnit .recent-saved-btn ecp-btn\").forEach((dom) => {\r\n if (EChat.DataProvider.SavedMessage.includes(dom.getAttribute(\"savedkey\"))) {\r\n dom.setAttribute(\"icon\", \"ews-icon-collection\");\r\n } else {\r\n dom.setAttribute(\"icon\", \"ews-icon-uncollection\");\r\n }\r\n });\r\n };\r\n\r\n this.updateUserSetting = function (settingType, settingValue, isFromLocalStorage) {\r\n if (settingsPageController) {\r\n settingsPageController.updateSettings(settingType, settingValue, isFromLocalStorage);\r\n }\r\n };\r\n\r\n this.checkMessageWindowExist = function (groupId) {\r\n let tabExist = false;\r\n for (let i = 0; i < _this.messageWindowList.length; i++) {\r\n if (_this.messageWindowList[i].chatTabList[groupId]) {\r\n _this.currentMessageWindow = _this.messageWindowList[i];\r\n tabExist = true;\r\n break;\r\n }\r\n }\r\n return tabExist;\r\n };\r\n\r\n this.getMessageWindow = function (groupId) {\r\n let needCreate = true;\r\n if (_this.currentMessageWindow) {\r\n if (_this.checkMessageWindowExist(groupId)) {\r\n needCreate = false;\r\n } else if (EChat.FullWindowController.FullWindow && _this.messageWindowList.length !== 0) {\r\n needCreate = false;\r\n const messageWindow = _this.messageWindowList[0];\r\n if (messageWindow.tabWidth < EChat.Setting.minTabWidth) {\r\n let lastTabTime = 0;\r\n let closeTab = null;\r\n Object.keys(messageWindow.chatTabList).forEach((key) => {\r\n const tab = messageWindow.chatTabList[key];\r\n if (lastTabTime === 0 || tab.TabCreateTime < lastTabTime) {\r\n lastTabTime = tab.TabCreateTime;\r\n closeTab = tab;\r\n }\r\n });\r\n if (closeTab) {\r\n closeTab.closeEvent();\r\n }\r\n }\r\n _this.currentMessageWindow = _this.messageWindowList[0];\r\n } else if (!EChat.FullWindowController.FullWindow) {\r\n for (let i = 0; i < _this.messageWindowList.length; i++) {\r\n if (_this.messageWindowList[i].chatTabListCount < EChat.Setting.TabNumPerWindow) {\r\n _this.currentMessageWindow = _this.messageWindowList[i];\r\n needCreate = false;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (needCreate) {\r\n _this.addMessageWindow();\r\n }\r\n return _this.currentMessageWindow;\r\n };\r\n\r\n this.addMessageWindow = function () {\r\n _this.currentMessageWindow = new EChat.MessageWindowController();\r\n _this.currentMessageWindow.createMessageWindow();\r\n _this.messageWindowList.push(_this.currentMessageWindow);\r\n changeBrowserImage(\"EncompassIcon\", \"EChatLogo\");\r\n if (typeof (EChat.MainPageController.NewWindowEvent) === \"function\") {\r\n EChat.MainPageController.NewWindowEvent(_this.currentMessageWindow);\r\n }\r\n };\r\n\r\n this.removeMessageWindow = function (msgWindowController) {\r\n for (let i = 0; i < _this.messageWindowList.length; i++) {\r\n if (_this.messageWindowList[i] === msgWindowController) {\r\n _this.messageWindowList[i] = null;\r\n _this.messageWindowList.splice(i, 1);\r\n _this.currentMessageWindow = _this.messageWindowList[_this.messageWindowList.length - 1];\r\n break;\r\n }\r\n }\r\n if (_this.messageWindowList.length === 0) {\r\n changeBrowserImage(\"EChatLogo\", \"EncompassIcon\");\r\n }\r\n };\r\n\r\n const changeBrowserImage = function (oldName, newName) {\r\n // shortcut icon is currently base64 This feature is affected\r\n const browserImage = document.querySelector(\"link[rel='shortcut icon']\");\r\n if (browserImage) {\r\n const imgLink = browserImage.getAttribute(\"href\").replace(oldName, newName);\r\n browserImage.remove();\r\n\r\n const newLinkElement = EC_Fmt.HtmlStrToElement(``);\r\n document.querySelector(\"head\").append(newLinkElement);\r\n }\r\n };\r\n\r\n this.removeGroupsTabView = function (groupId) {\r\n if (customGroupPageController) {\r\n customGroupPageController.deleteGroup(groupId);\r\n }\r\n };\r\n\r\n this.openUserWindowByUserArr = function (userArr) {\r\n const userStr = EChat.DataProvider.GetUserStrByUserList(userArr);\r\n EChat.DataProvider.GetGroupInfoByAuthIDList(userStr).then((groupInfo) => {\r\n EChat.MainPageController.getMessageWindow(groupInfo.MessageGroupID).addRecentTab(groupInfo, false);\r\n }).catch(() => {\r\n });\r\n };\r\n\r\n let oldmainpageW = window.innerWidth;\r\n let oldmainpageH = window.innerHeight;\r\n this.resizeMainPageWindow = function () {\r\n const mainpage = document.getElementById(\"EChatMainPage\");\r\n if (!mainpage || !mainpage.clientWidth) {\r\n return;\r\n }\r\n\r\n if (!EChat.FullWindowController.FullWindow) {\r\n const limitLeft = EChat.Util.getMenuWidth();\r\n const limitTop = EChat.Util.getHeaderHeight();\r\n let rect = mainpage.getBoundingClientRect();\r\n let changeHeight = oldmainpageH - window.innerHeight;\r\n\r\n if (rect.bottom >= window.innerHeight) {\r\n changeHeight = rect.bottom - window.innerHeight;\r\n }\r\n\r\n if (rect.top - changeHeight < limitTop) {\r\n changeHeight = rect.top - limitTop;\r\n }\r\n mainpage.style.top = `${rect.top - changeHeight}px`;\r\n\r\n let changeWidth = oldmainpageW - window.innerWidth;\r\n if (rect.left - changeWidth < limitLeft) {\r\n changeWidth = rect.left - limitLeft;\r\n }\r\n\r\n rect = mainpage.getBoundingClientRect();\r\n mainpage.style.left = `${Math.min(rect.left - changeWidth, window.innerWidth - rect.width)}px`;\r\n oldmainpageH = window.innerHeight;\r\n oldmainpageW = window.innerWidth;\r\n\r\n _this.resizeDialog();\r\n } else {\r\n EChat.FullWindowController.ResizeFullWindow();\r\n }\r\n };\r\n\r\n this.receiveTaskDetail = async function (message) {\r\n const key = `${message.TaskSourceEncompassID}_${message.TaskID}`;\r\n const groupInfo = await EChat.DataProvider.GetGroupInfoByGroupID(key);\r\n if (!groupInfo) {\r\n return;\r\n }\r\n\r\n if (EChat.PageActive) {\r\n if (EChat.MainPageController.checkMessageWindowExist(key)) {\r\n const messageWindow = EChat.MainPageController.getMessageWindow(key);\r\n const chatTab = messageWindow.chatTabList[key];\r\n if (chatTab && messageWindow.currentTab === chatTab) {\r\n chatTab.GroupInfo = groupInfo;\r\n chatTab.updateGroupName();\r\n chatTab.refreshMessageList([message]);\r\n }\r\n }\r\n }\r\n\r\n if (EChat.eChatState && !EChat.Util.IsRecentSearchState()) {\r\n _this.redrawGroupEvent(groupInfo);\r\n }\r\n };\r\n\r\n this.unReadDataChange = function (unReadData) {\r\n const updateUI = function (MessageGroupID, UnReadCount, Prompt, GroupType) {\r\n if (EChat.eChatState) {\r\n // Task 1052118: Better distinguish whether the messages of the Echat Saved page belong to a group or a task.\r\n document.querySelectorAll(`#EChatRecentList #Unread_${MessageGroupID}, #EChatSavedList #Unread_${MessageGroupID}`).forEach((unReadElement) => {\r\n if (GroupType === SocketUtil.GroupType.Task) {\r\n unReadElement.setAttribute(\"new\", \"true\");\r\n } else {\r\n unReadElement.innerText = UnReadCount;\r\n unReadElement.setAttribute(\"new\", \"true\");\r\n if (parseInt(Prompt) === EChat.PromptType.DoNotDisturb) {\r\n unReadElement.style.background = \"var(--neutral-50)\";\r\n } else {\r\n unReadElement.style.background = \"\";\r\n }\r\n }\r\n if (UnReadCount) {\r\n unReadElement.style.display = \"block\";\r\n } else {\r\n unReadElement.style.display = \"none\";\r\n }\r\n });\r\n }\r\n };\r\n\r\n document.querySelectorAll(\"#EChatTabBody .echat-unread-count\").forEach((dom) => {\r\n dom.setAttribute(\"new\", \"false\");\r\n });\r\n\r\n if (unReadData.RecentGroup) {\r\n Object.keys(unReadData.RecentGroup).forEach((MessageGroupID) => {\r\n const readInfo = unReadData.RecentGroup[MessageGroupID];\r\n updateUI(MessageGroupID, readInfo.UnReadCount, readInfo.Prompt, readInfo.GroupType);\r\n });\r\n }\r\n\r\n EChat.IndexedDB.GetSetting(\"UnreadGroup\").then((unreadMessageGroups) => {\r\n if (!unreadMessageGroups) {\r\n return;\r\n }\r\n const redRecentDotElement = document.querySelector(\"#EChatRecentSwitchBtn .MessageTip\");\r\n if (redRecentDotElement) {\r\n if (Object.keys(unreadMessageGroups).length !== 0) {\r\n redRecentDotElement.style.display = \"block\";\r\n } else {\r\n redRecentDotElement.style.display = \"none\";\r\n }\r\n }\r\n });\r\n\r\n const unreadCounts = document.querySelectorAll(\"#EChatTabBody .echat-unread-count\");\r\n for (let i = 0, len = unreadCounts.length; i < len; i++) {\r\n const unreadCount = unreadCounts[i];\r\n if (unreadCount.getAttribute(\"new\") === \"false\") {\r\n unreadCount.innerText = \"\";\r\n unreadCount.style.display = \"none\";\r\n }\r\n unreadCount.removeAttribute(\"new\");\r\n }\r\n };\r\n\r\n this.updateUnReadNumIcon = function (memo) {\r\n if (SocketUtil.debug) {\r\n // eslint-disable-next-line no-console\r\n console.log(`Update Unread Count. ${memo}`);\r\n }\r\n EChat.IndexedDB.GetTableAllData(EChat.DBTableName.GROUPINFO).then((groupList) => {\r\n EChat.IndexedDB.GetSetting(\"UnreadGroup\").then((unreadMessageGroups) => {\r\n if (!unreadMessageGroups) {\r\n return;\r\n }\r\n const RecentGroup = {};\r\n for (let i = 0; i < groupList.length; i++) {\r\n const groupInfo = groupList[i];\r\n let unReadCount = parseInt(groupInfo.UnReadCount);\r\n if (unReadCount === 0 && unreadMessageGroups && unreadMessageGroups[groupInfo.MessageGroupID]) {\r\n unReadCount = parseInt(unreadMessageGroups[groupInfo.MessageGroupID]);\r\n }\r\n\r\n delete unreadMessageGroups[groupInfo.MessageGroupID];\r\n\r\n if (unReadCount > 0) {\r\n const Prompt = !EC_Fmt.isNumber(parseInt(groupInfo.Prompt)) ? EChat.PromptType.Normal : parseInt(groupInfo.Prompt);\r\n RecentGroup[groupInfo.MessageGroupID] = {\r\n UnReadCount: unReadCount,\r\n Prompt,\r\n GroupType: groupInfo.GroupType\r\n };\r\n }\r\n }\r\n\r\n // Task 955166: eChat: Viewing one unread eChat is removing the unread notification from other eChats\r\n const groupIdArr = Object.keys(unreadMessageGroups);\r\n for (let i = 0; i < groupIdArr.length; i++) {\r\n const groupId = groupIdArr[i];\r\n RecentGroup[groupId] = {\r\n UnReadCount: unreadMessageGroups[groupId],\r\n Prompt: EChat.PromptType.Normal,\r\n GroupType: groupId.split(\"_\").length === 2 ? SocketUtil.GroupType.Task : SocketUtil.GroupType.Message\r\n };\r\n }\r\n\r\n const unReadData = {\r\n RecentGroup\r\n };\r\n\r\n _this.unReadDataChange(unReadData);\r\n EChat.LocalStorage.writeLocalStorage(EChat.LocalStorageType.UNREADDATA, JSON.stringify(unReadData));\r\n });\r\n });\r\n };\r\n\r\n this.updateUnreadSumCount = async function (memo) {\r\n if (SocketUtil.debug) {\r\n // eslint-disable-next-line no-console\r\n console.log(`Update Unread Sum Count. ${memo}`);\r\n }\r\n\r\n const unreadMessageGroups = await EChat.DataProvider.GetUnreadMessageGroups();\r\n await EChat.IndexedDB.UpdateSetting(\"UnreadGroup\", unreadMessageGroups, true);\r\n _this.unreadSumCountChange(unreadMessageGroups);\r\n };\r\n\r\n this.unreadSumCountChange = async function (unreadMessageGroups) {\r\n if (!unreadMessageGroups) {\r\n unreadMessageGroups = await EChat.IndexedDB.GetSetting(\"UnreadGroup\");\r\n }\r\n\r\n let num = 0;\r\n if (unreadMessageGroups) {\r\n num = Object.keys(unreadMessageGroups).length;\r\n }\r\n\r\n num = num > 99 ? \"99+\" : num;\r\n const EChatTitleNewMsgNum = document.getElementById(\"EChatTitleNewMsgNum\");\r\n const EChatMsgTip = document.getElementById(\"EChatMsgTip\");\r\n const EChatNewMsgNum = document.getElementById(\"EChatNewMsgNum\");\r\n const EChatNewMsgTip = document.getElementById(\"EChatNewMsgTip\");\r\n\r\n if (num > 0 || num === \"99+\") {\r\n if (EChatTitleNewMsgNum) {\r\n EChatTitleNewMsgNum.style.display = \"block\";\r\n }\r\n if (EChatNewMsgTip) {\r\n EChatNewMsgTip.innerText = EC_Fmt.Trn(` new eChat${(num > 1 ? \"s\" : \"\")}`);\r\n }\r\n if (EChatNewMsgNum) {\r\n EChatNewMsgNum.innerText = ` ${num} `;\r\n }\r\n if (EChatTitleNewMsgNum) {\r\n EChatTitleNewMsgNum.innerText = num;\r\n }\r\n if (EChatMsgTip) {\r\n EChatMsgTip.style.display = \"block\";\r\n }\r\n if (_this.mainPageViewType === EChat.ViewType.CloseView) {\r\n minimizeView();\r\n }\r\n if (document.title.match(/\\([0-9]*\\+?\\)$/)) {\r\n document.title = document.title.replace(/\\([0-9]*\\)$/, `(${num})`);\r\n } else {\r\n document.title = `${document.title}(${num})`;\r\n }\r\n } else {\r\n document.title = document.title.replace(/\\([0-9]*\\)$/, \"\");\r\n if (EChatTitleNewMsgNum) {\r\n EChatTitleNewMsgNum.style.display = \"none\";\r\n }\r\n if (EChatMsgTip) {\r\n EChatMsgTip.style.display = \"none\";\r\n }\r\n\r\n if (EChatNewMsgTip) {\r\n EChatNewMsgTip.innerText = \"\";\r\n }\r\n\r\n if (EChatNewMsgNum) {\r\n EChatNewMsgNum.innerText = \"\";\r\n }\r\n }\r\n };\r\n\r\n this.initSoundAlert = function () {\r\n let audioElement = document.getElementById(\"eChatSoundAlert\");\r\n if (!audioElement) {\r\n audioElement = document.createElement(\"AUDIO\");\r\n audioElement.id = \"eChatSoundAlert\";\r\n audioElement.innerHTML = \"\";\r\n const EChatButton = document.getElementById(\"EChatButton\");\r\n if (EChatButton) {\r\n EChatButton.append(audioElement);\r\n audioElement.load();\r\n }\r\n }\r\n\r\n return audioElement;\r\n };\r\n\r\n this.closeAllWindow = function () {\r\n if (EChat.MainPageController && EChat.MainPageController.messageWindowList) {\r\n for (let i = 0; i < EChat.MainPageController.messageWindowList.length; i++) {\r\n const windowclose = EChat.MainPageController.messageWindowList[i];\r\n if (windowclose) {\r\n windowclose.closeMessageWindow();\r\n }\r\n }\r\n }\r\n };\r\n\r\n this.GetEditPromptButton = function (groupData) {\r\n let alertClass;\r\n if (parseInt(groupData.Prompt) === EChat.PromptType.DoNotDisturb) {\r\n alertClass = \"ews-icon-DisablesVoice\";\r\n } else {\r\n alertClass = \"ews-icon-alert\";\r\n }\r\n // Task 1074079:eChat: Close window buttons do not use the standard UI Kit\r\n const promptEditBtn = EC_Fmt.HtmlStrToElement(``);\r\n promptEditBtn.addEventListener(\"click\", (e) => {\r\n EChat.DataProvider.editGroupPromptType({ groupID: groupData.MessageGroupID }).catch(EChat.Util.errorAlert);\r\n e.stopPropagation();\r\n });\r\n\r\n return promptEditBtn;\r\n };\r\n\r\n // Task 1074079:eChat: Close window buttons do not use the standard UI Kit\r\n this.GetMinEditPromptButton = function (groupData) {\r\n let alertClass;\r\n if (parseInt(groupData.Prompt) === EChat.PromptType.DoNotDisturb) {\r\n alertClass = \"ews-icon-DisablesVoice\";\r\n } else {\r\n alertClass = \"ews-icon-alert\";\r\n }\r\n // Task 1119613:eChat: Update all the buttons in eChat to ecp-btn\r\n const promptEditBtn = EC_Fmt.HtmlStrToElement(``);\r\n promptEditBtn.addEventListener(\"click\", (e) => {\r\n EChat.DataProvider.editGroupPromptType({ groupID: groupData.MessageGroupID }).catch(EChat.Util.errorAlert);\r\n e.stopPropagation();\r\n });\r\n\r\n return promptEditBtn;\r\n };\r\n\r\n this.GetLastMessage = function (groupData) {\r\n let lastMessage = null;\r\n // Search message\r\n if (groupData.SortTime) {\r\n lastMessage = {\r\n TimeCreated: groupData.SortTime,\r\n TimeUpdated: groupData.SortTime,\r\n SenderAuthenticationID: groupData.SenderAuthenticationID,\r\n SenderFullName: groupData.SenderFullName,\r\n SenderUserAvatar: groupData.SenderUserAvatar,\r\n MessageID: groupData.MessageID,\r\n ScrollToMessageID: groupData.MessageID,\r\n Message: EC_Fmt.Null2EmptyStr(groupData.Message)\r\n };\r\n }\r\n\r\n // Task message\r\n if (groupData.LastSenderAuthenticationID) {\r\n lastMessage = {\r\n TimeCreated: groupData.MessageUpdated,\r\n TimeUpdated: groupData.MessageUpdated,\r\n SenderAuthenticationID: groupData.LastSenderAuthenticationID,\r\n SenderFullName: groupData.LastSenderFullName,\r\n MessageID: groupData.LastMessageID,\r\n SenderUserAvatar: groupData.LastSenderUserAvatar,\r\n Message: EC_Fmt.Null2EmptyStr(groupData.LastMessageBody)\r\n };\r\n }\r\n\r\n // Saved message\r\n if (groupData.SavedTime) {\r\n lastMessage = {\r\n TimeCreated: groupData.MessageTime,\r\n TimeUpdated: groupData.MessageTime,\r\n SenderAuthenticationID: groupData.SenderAuthenticationID,\r\n SenderFullName: groupData.SenderFullName,\r\n SenderUserAvatar: groupData.SenderUserAvatar,\r\n Message: EC_Fmt.Null2EmptyStr(groupData.Message)\r\n };\r\n }\r\n\r\n // Normal Message\r\n if (!lastMessage && groupData.Messages && groupData.Messages.length !== 0) {\r\n const newLastMessage = {};\r\n const keys = Object.keys(groupData.Messages[0]);\r\n for (let i = 0; i < keys.length; i++) {\r\n const key = keys[i];\r\n newLastMessage[key] = groupData.Messages[0][key];\r\n }\r\n lastMessage = newLastMessage;\r\n }\r\n\r\n if (!lastMessage) {\r\n lastMessage = {\r\n TimeCreated: groupData.MessageUpdated,\r\n Message: \"\"\r\n };\r\n }\r\n\r\n const MessageDiv = document.createElement(\"DIV\");\r\n lastMessage.Message = EC_Fmt.ReplaceAll(EC_Fmt.ReplaceAll(lastMessage.Message, \"
\", \" \"), \"
\", \" \");\r\n MessageDiv.innerHTML = lastMessage.Message;\r\n MessageDiv.querySelectorAll(\"font[cc-display]\").forEach((cc_display) => {\r\n if (cc_display) {\r\n cc_display.remove();\r\n }\r\n });\r\n lastMessage.Message = MessageDiv.textContent;\r\n\r\n const searchText = EChat.Util.getSearchText();\r\n if (searchText) {\r\n const hightLight = EChat.Util.highLight(MessageDiv.textContent, searchText, \"yellow\", true);\r\n lastMessage.DisplayMessageDom = hightLight.dom;\r\n lastMessage.DisplayMessage = hightLight.text;\r\n } else {\r\n lastMessage.DisplayMessage = MessageDiv.textContent;\r\n }\r\n\r\n if (!lastMessage.SenderUserAvatar) {\r\n lastMessage.SenderUserAvatar = EChat.Setting.DefaultUserIcon;\r\n }\r\n\r\n const Message = MessageDiv.querySelector(\"message\");\r\n if (Message) {\r\n lastMessage.DisplayMessage = Message.getAttribute(\"filename\");\r\n if (!lastMessage.DisplayMessage) {\r\n lastMessage.DisplayMessage = Message.getAttribute(\"type\");\r\n }\r\n if (lastMessage.DisplayMessage) {\r\n lastMessage.DisplayMessage = `[${lastMessage.DisplayMessage}]`;\r\n lastMessage.Message = lastMessage.DisplayMessage;\r\n }\r\n } else if (!lastMessage.DisplayMessage.trim() && MessageDiv.querySelector(\"img\")) {\r\n lastMessage.DisplayMessage = \"[Image]\";\r\n lastMessage.Message = lastMessage.DisplayMessage;\r\n }\r\n\r\n if (!lastMessage.SenderFullName) {\r\n lastMessage.SenderFullName = lastMessage.SenderAuthenticationID <= 0 ? \"System\" : `None_${lastMessage.SenderAuthenticationID}`;\r\n }\r\n\r\n return lastMessage;\r\n };\r\n\r\n this.SavedButtonEvent = function (msgObj, groupInfo) {\r\n const TaskSourceEncompassID = groupInfo.EncompassID;\r\n const SavedStatus = msgObj.MessageID && EChat.DataProvider.SavedMessage && EChat.DataProvider.SavedMessage.includes(msgObj.MessageID.toString());\r\n\r\n let TaskDetailID = \"\";\r\n let TaskID = \"\";\r\n let MessageGroupKey;\r\n let MessageKey = \"\";\r\n if (groupInfo.TaskID && parseInt(groupInfo.TaskID) > 0) {\r\n TaskDetailID = msgObj.MessageID;\r\n TaskID = parseInt(groupInfo.TaskID);\r\n MessageGroupKey = `${TaskSourceEncompassID}_${msgObj.TaskID}`;\r\n } else {\r\n MessageGroupKey = groupInfo.MessageGroupID;\r\n MessageKey = msgObj.MessageID;\r\n }\r\n\r\n if (SavedStatus) {\r\n EChat.MainPageController.cancelSavedMessage({\r\n TaskID,\r\n TaskDetailID,\r\n TaskSourceEncompassID,\r\n MessageGroupKey,\r\n MessageGroupID: MessageGroupKey,\r\n MessageKey\r\n });\r\n } else {\r\n EChat.MainPageController.addSavedMessage({\r\n TaskID,\r\n TaskDetailID,\r\n TaskSourceEncompassID,\r\n MessageGroupKey,\r\n MessageGroupID: MessageGroupKey,\r\n MessageKey,\r\n SavedTime: EChat.Util.getTimeStamp(),\r\n MessageTime: msgObj.TimeUpdated,\r\n GroupType: groupInfo.GroupType,\r\n SenderAuthenticationID: msgObj.SenderAuthenticationID,\r\n SenderUserAvatar: msgObj.SenderUserAvatar,\r\n SenderFullName: msgObj.SenderFullName,\r\n Message: msgObj.Message\r\n });\r\n }\r\n };\r\n\r\n this.resizeDialog = function () {\r\n if (_this.mainPageViewType === EChat.ViewType.OpenView) {\r\n const EChatMainPage = document.getElementById(\"EChatMainPage\");\r\n if (EChatMainPage) {\r\n const height = EChat.MainPageController.mainWindowSize.height;\r\n let currHeight = EChat.MainPageController.mainWindowSize.currHeight > 0 ? EChat.MainPageController.mainWindowSize.currHeight : height;\r\n let EChatMainPageRect = EChatMainPage.getBoundingClientRect();\r\n let EChatMainPageTop = EChatMainPageRect.top;\r\n let topHeight = EChatMainPageTop - EChat.Util.getHeaderHeight();\r\n let bottomHeight = EChatMainPageRect.bottom - window.innerHeight;\r\n\r\n if (bottomHeight > 0) {\r\n if (topHeight > 0) {\r\n if (topHeight > bottomHeight) {\r\n EChatMainPage.style.top = `${EChatMainPageTop - bottomHeight}px`;\r\n bottomHeight = 0;\r\n } else {\r\n EChatMainPage.style.top = `${EChatMainPageTop - topHeight}px`;\r\n bottomHeight -= topHeight;\r\n }\r\n\r\n EChatMainPageRect = EChatMainPage.getBoundingClientRect();\r\n EChatMainPageTop = EChatMainPageRect.top;\r\n topHeight = EChatMainPageTop - EChat.Util.getHeaderHeight();\r\n }\r\n currHeight -= bottomHeight;\r\n currHeight = Math.max(currHeight, EChat.__height);\r\n }\r\n\r\n if (height > currHeight && topHeight > 0) {\r\n let changeHeght = height - currHeight; // change > 0\r\n changeHeght = Math.min(changeHeght, topHeight);\r\n currHeight += changeHeght;\r\n EChatMainPage.style.top = `${EChatMainPageTop - changeHeght}px`;\r\n }\r\n\r\n EChat.MainPageController.mainWindowSize.currHeight = currHeight;\r\n EChatMainPage.style.setProperty(\"--height\", `${currHeight}px`);\r\n }\r\n }\r\n };\r\n };\r\n\r\n return new MainPageControllerClass();\r\n}());\r\n\r\nEChat.RecentController = function () {\r\n EChat.EventDispatcher.call(this);\r\n this.viewMoreLastMessageTimeCreated_Message = 0;\r\n\r\n const _this = this;\r\n let canEnter = true;\r\n let timeOutThread;\r\n let searchIng = false;\r\n let searchTextOld = \"\";\r\n\r\n const createRecentGroupElement = async function ({\r\n groupData, filterEmptyMessage, hideGroupButton, hideLastMessage, hideUnreadCount\r\n }) {\r\n if (groupData) {\r\n if (filterEmptyMessage && groupData.GroupType !== SocketUtil.GroupType.Task && (!groupData.Messages || groupData.Messages.length === 0)) {\r\n return false;\r\n }\r\n const eChatDataProvider = EChat.DataProvider;\r\n const searchText = EChat.Util.getSearchText();\r\n\r\n const lastMessageObj = EChat.MainPageController.GetLastMessage(groupData);\r\n const RecentGroupTemplate = EC_Fmt.HtmlStrToElement(document.getElementById(\"RecentGroupTemplate\").innerHTML);\r\n const LastMessageDiv = RecentGroupTemplate.querySelector(\".LastMessage\");\r\n\r\n const LastMessageMultiLine = (groupData.GroupType === SocketUtil.GroupType.Task || groupData.UserCount > 2) && lastMessageObj.DisplayMessage && !hideLastMessage;\r\n // Task 997223: eChat: Please include timestamps when filtered to unread.\r\n let NoLastMessage = false;\r\n if (LastMessageMultiLine) {\r\n const userNameDiv = LastMessageDiv.querySelector(\".eChat-LastMessageUserName\");\r\n userNameDiv.textContent = lastMessageObj.SenderFullName;\r\n userNameDiv.setAttribute(\"title\", lastMessageObj.SenderFullName);\r\n userNameDiv.setAttribute(\"data-user-name\", lastMessageObj.SenderFullName);\r\n const userImg = LastMessageDiv.querySelector(\".eChat-User-Img\");\r\n if (lastMessageObj.SenderUserAvatar) {\r\n userImg.style.backgroundImage = `url(${lastMessageObj.SenderUserAvatar})`;\r\n userImg.classList.add(\"eChat-ico-GroupIcon\");\r\n } else {\r\n userImg.classList.add(\"eChat-ico-DefaultUser\");\r\n }\r\n LastMessageDiv.querySelector(\".eChat-LastMessageTime\").textContent = EChat.Util.longToDataTime(lastMessageObj.TimeCreated);\r\n LastMessageDiv.querySelector(\".eChat-LastMessageInfo\").classList.remove(\"hidden\");\r\n if (lastMessageObj.DisplayMessageDom) {\r\n LastMessageDiv.querySelector(\".eChat-LastMessageBody\").append(lastMessageObj.DisplayMessageDom);\r\n } else {\r\n LastMessageDiv.querySelector(\".eChat-LastMessageBody\").textContent = lastMessageObj.DisplayMessage;\r\n }\r\n LastMessageDiv.querySelector(\".eChat-LastMessageBody\").setAttribute(\"title\", lastMessageObj.Message);\r\n } else if (groupData.GroupType !== SocketUtil.GroupType.Task && !hideLastMessage) {\r\n const LastMessageTime = RecentGroupTemplate.querySelector(\".recent-group-top .eChat-LastMessageTime\");\r\n LastMessageTime.textContent = EChat.Util.longToDataTime(lastMessageObj.TimeCreated);\r\n if (lastMessageObj.DisplayMessageDom) {\r\n LastMessageDiv.querySelector(\".eChat-LastMessageBody\").append(lastMessageObj.DisplayMessageDom);\r\n } else {\r\n LastMessageDiv.querySelector(\".eChat-LastMessageBody\").textContent = lastMessageObj.DisplayMessage;\r\n }\r\n LastMessageDiv.querySelector(\".eChat-LastMessageBody\").setAttribute(\"title\", lastMessageObj.Message);\r\n } else {\r\n const LastMessageTime = RecentGroupTemplate.querySelector(\".recent-group-top .eChat-LastMessageTime\");\r\n LastMessageDiv.querySelector(\".eChat-LastMessageBody\").classList.add(\"hidden\");\r\n LastMessageTime.textContent = EChat.Util.longToDataTime(lastMessageObj.TimeCreated);\r\n NoLastMessage = true;\r\n }\r\n\r\n RecentGroupTemplate.setAttribute(\"id\", `UserUnit${groupData.MessageGroupID}`);\r\n RecentGroupTemplate.setAttribute(\"groupid\", groupData.MessageGroupID);\r\n RecentGroupTemplate.setAttribute(\"lastmsgtime\", lastMessageObj.TimeCreated);\r\n RecentGroupTemplate.setAttribute(\"messageid\", EC_Fmt.Null2EmptyStr(lastMessageObj.MessageID));\r\n if (lastMessageObj.ScrollToMessageID) {\r\n RecentGroupTemplate.setAttribute(\"scroll-to-messageid\", EC_Fmt.Null2EmptyStr(lastMessageObj.ScrollToMessageID));\r\n }\r\n if (groupData.GroupType === SocketUtil.GroupType.Message && filterEmptyMessage) {\r\n if (!groupData.Users || (groupData.UserCount === 2 && groupData.Users.length === 0)) {\r\n try {\r\n const userList = await SocketUtil.api(\"GetGroupUsers\", {\r\n MessageGroupID: groupData.MessageGroupID,\r\n SenderSessionID: SocketUtil.getSessionID()\r\n });\r\n const userDic = {};\r\n userDic[groupData.MessageGroupID] = userList;\r\n groupData.Users = userList;\r\n await EChat.IndexedDB.UpdateGroupUsers(userDic);\r\n } catch (e) {\r\n EChat.Util.errorAlert(e);\r\n }\r\n }\r\n }\r\n\r\n const groupIconUrlAndAuthID = EChat.DataProvider.GetGroupAvatarUrlAndAuthID(groupData, EChat.DataProvider.CurrentUserInfo);\r\n let groupIconUrl = groupIconUrlAndAuthID.Url;\r\n const userIcoSpan = RecentGroupTemplate.querySelector(\".user-ico-span\");\r\n\r\n if (groupIconUrl === EChat.Setting.DefaultAlertIcon) {\r\n userIcoSpan.classList.add(\"ews-icon-warning\");\r\n userIcoSpan.classList.add(\"eChat-ico-Group\");\r\n } else if (groupIconUrl === EChat.Setting.DefaultTaskIcon) {\r\n userIcoSpan.classList.add(\"ews-icon-task\");\r\n userIcoSpan.classList.add(\"eChat-ico-Group\");\r\n } else {\r\n if (groupIconUrl === EChat.Setting.DefaultUserIcon) {\r\n if (EChat.DataProvider.UserDict[groupIconUrlAndAuthID.AuthID]) {\r\n groupIconUrl = EChat.DataProvider.UserDict[groupIconUrlAndAuthID.AuthID].Icon;\r\n } else if (!EChat.DataProvider.MissUserInfo.includes(groupIconUrlAndAuthID.AuthID)) {\r\n EChat.DataProvider.MissUserInfo.push(groupIconUrlAndAuthID.AuthID);\r\n userIcoSpan.classList.add(\"eChat-Miss-Avatar\");\r\n userIcoSpan.setAttribute(\"authid\", groupIconUrlAndAuthID.AuthID);\r\n EChat.DataProvider.GetMissUserInfo();\r\n }\r\n }\r\n\r\n userIcoSpan.style.backgroundImage = `url(${groupIconUrl})`;\r\n userIcoSpan.classList.add(\"eChat-ico-GroupIcon\");\r\n }\r\n\r\n // Task 762589: The Task title is enclosed in single quotes. EChat Task Group displays abnormally\r\n const groupName = eChatDataProvider.GetGroupName(groupData);\r\n const nameSpan = RecentGroupTemplate.querySelector(\".recent-group-name\");\r\n const includeUserSpan = RecentGroupTemplate.querySelector(\".recent-group-include-user\");\r\n if (searchText) {\r\n const groupNameDisplay = EChat.Util.highLight(groupName, searchText, \"yellow\", false).text;\r\n nameSpan.innerHTML = groupNameDisplay;\r\n includeUserSpan.classList.remove(\"hidden\");\r\n if (groupData.IncludeUser) {\r\n includeUserSpan.setAttribute(\"title\", `(Includes ${groupData.IncludeUser})`);\r\n const IncludeUser = EChat.Util.highLight(groupData.IncludeUser, searchText, \"yellow\", false).text;\r\n includeUserSpan.innerHTML = `(Includes ${IncludeUser})`;\r\n nameSpan.style.maxWidth = `calc(100% - 200px)`;\r\n }\r\n } else {\r\n includeUserSpan.classList.add(\"hidden\");\r\n includeUserSpan.innerHTML = \"\";\r\n nameSpan.textContent = groupName;\r\n }\r\n if (groupData.GroupType === SocketUtil.GroupType.Task || groupData.GroupType === SocketUtil.GroupType.Message) {\r\n nameSpan.classList.add(\"eChat-task-group-title\");\r\n }\r\n nameSpan.setAttribute(\"title\", groupName);\r\n nameSpan.setAttribute(\"data-user-name\", groupName);\r\n if (NoLastMessage) {\r\n nameSpan.style.maxWidth = \"calc(100% - 160px)\";\r\n }\r\n\r\n const groupEditBtn = RecentGroupTemplate.querySelector(\".recent-group-edit-btn\");\r\n\r\n if (groupData.GroupType === SocketUtil.GroupType.Task) {\r\n groupEditBtn.addEventListener(\"mousedown\", (e) => {\r\n const url = `Home?DashboardID=${ECP.CommonDashboards.TaskEdit}&Action=Add&TableEdit=TaskDetails&&FieldName=TaskID&FieldValue=${groupData.TaskID}&CurValue=${groupData.TaskID}&TableName=Tasks&SubTableJoinID=TaskDetails_Tasks&Search=TaskID~${groupData.TaskID}`;\r\n EChat.Util.nav(url, e);\r\n });\r\n } else {\r\n groupEditBtn.addEventListener(\"click\", (e) => {\r\n EChat.GroupSettingController.openGroupSettingWindow(groupData.MessageGroupID);\r\n e.stopPropagation();\r\n });\r\n }\r\n const alertInfoBtn = RecentGroupTemplate.querySelector(\".eChat-AlertDetail\");\r\n alertInfoBtn.addEventListener(\"mousedown\", (e) => {\r\n const url = EChat.CustomComponent.GetAlertDetailUrl(groupData.GroupName, groupData.MessageGroupID);\r\n EChat.Util.nav(url, e);\r\n });\r\n\r\n if (!hideUnreadCount) {\r\n const UnReadNumDiv = RecentGroupTemplate.querySelector(\".echat-unread-count\");\r\n UnReadNumDiv.setAttribute(\"id\", `Unread_${groupData.MessageGroupID}`);\r\n UnReadNumDiv.classList.add(groupData.GroupType === SocketUtil.GroupType.Task ? \"unread-task\" : \"unread-messages\");\r\n if (groupData.UnreadCount) {\r\n UnReadNumDiv.style.display = \"block\";\r\n if (groupData.GroupType !== SocketUtil.GroupType.Task) {\r\n UnReadNumDiv.innerText = groupData.UnreadCount;\r\n }\r\n }\r\n if (parseInt(groupData.Prompt) === EChat.PromptType.DoNotDisturb) {\r\n UnReadNumDiv.style.background = \"var(--neutral-50)\";\r\n }\r\n }\r\n\r\n // Task 729634: eChat: Uncaught Type Error: Cannot read property 'query Selector' of null Error message when clicking pencil icon to delete a message on echat.\r\n if (groupData.GroupType === SocketUtil.GroupType.Message && groupData.PostPermission !== EChat.PostPermissionType.ReadOnly) {\r\n groupEditBtn.classList.remove(\"hidden\");\r\n }\r\n\r\n if (groupData.GroupType === SocketUtil.GroupType.Task && groupData.EncompassID === Distributor) {\r\n groupEditBtn.classList.remove(\"hidden\");\r\n }\r\n\r\n const TaskSourceEncompassID = groupData.GroupType === SocketUtil.GroupType.Task ? groupData.EncompassID : \"\";\r\n const isCurrTask = EChat.DataProvider.CurrentUserInfo && EChat.DataProvider.CurrentUserInfo.PrimaryEncompassID === TaskSourceEncompassID;\r\n if (TaskSourceEncompassID === \"\" || isCurrTask) {\r\n if (lastMessageObj.MessageID && !hideLastMessage) {\r\n // Task 1074079:eChat: Close window buttons do not use the standard UI Kit\r\n const recentSavedBtn = RecentGroupTemplate.querySelector(\".recent-saved-btn ecp-btn\");\r\n recentSavedBtn.classList.remove(\"hidden\");\r\n recentSavedBtn.setAttribute(\"savedkey\", lastMessageObj.MessageID);\r\n if (EChat.DataProvider.SavedMessage && EChat.DataProvider.SavedMessage.includes(lastMessageObj.MessageID.toString())) {\r\n recentSavedBtn.setAttribute(\"icon\", \"ews-icon-collection\");\r\n }\r\n\r\n recentSavedBtn.addEventListener(\"click\", (e) => {\r\n EChat.MainPageController.SavedButtonEvent(lastMessageObj, groupData);\r\n e.stopPropagation();\r\n });\r\n }\r\n }\r\n\r\n if (groupData.GroupType === SocketUtil.GroupType.Message) {\r\n const groupButton = RecentGroupTemplate.querySelector(\".recnet-group-button\");\r\n groupButton.append(EChat.MainPageController.GetEditPromptButton(groupData));\r\n }\r\n\r\n if (groupData.GroupType === SocketUtil.GroupType.System) {\r\n // Task 1160151: 'i' icon in eChat for alerts from the system takes you to a page that says 'Deprecated in 22.07'- Delete this icon\r\n const LoadEmployeesAlertsType = [\r\n \"Day Close\",\r\n \"ASN Receipt\",\r\n \"New Customer Account\",\r\n \"PO Receipt\",\r\n \"REMIT Receipt\",\r\n \"Import Conflict\",\r\n \"Supplier Comm Warnings\",\r\n \"EDI Download Reminder\",\r\n \"Account Mis-Mapping\"\r\n ];\r\n for (let i = 0; i < LoadEmployeesAlertsType.length; i++) {\r\n if (groupData.GroupName === LoadEmployeesAlertsType[i]) {\r\n alertInfoBtn.classList.remove(\"hidden\");\r\n }\r\n }\r\n // Task 1134294: Encompass Mobile Picker Cut Alert Detail\r\n groupEditBtn.classList.add(\"hidden\");\r\n }\r\n\r\n RecentGroupTemplate.addEventListener(\"click\", (e) => {\r\n const groupId = groupData.MessageGroupID;\r\n if (groupId) {\r\n EChat.DataProvider.GetGroupInfoByGroupID(groupId).then((groupInfo) => {\r\n const messageid = RecentGroupTemplate.getAttribute(\"scroll-to-messageid\");\r\n EChat.MainPageController.getMessageWindow(groupInfo.MessageGroupID).addRecentTab(groupInfo, true, true, messageid);\r\n });\r\n }\r\n e.stopPropagation();\r\n });\r\n\r\n if (!hideGroupButton) {\r\n RecentGroupTemplate.addEventListener(\"mouseover\", () => {\r\n RecentGroupTemplate.querySelector(\".recnet-group-button\").classList.remove(\"hidden\");\r\n });\r\n RecentGroupTemplate.addEventListener(\"mouseleave\", () => {\r\n RecentGroupTemplate.querySelector(\".recnet-group-button\").classList.add(\"hidden\");\r\n });\r\n }\r\n\r\n return { TargetElement: RecentGroupTemplate, LastMsgTime: lastMessageObj.TimeCreated };\r\n }\r\n return false;\r\n };\r\n\r\n this.redrawGroup = async function (groupData) {\r\n if (EChat.Util.IsRecentSearchState()) {\r\n return;\r\n }\r\n\r\n const listEle = document.getElementById(\"EChatRecentList\");\r\n const exist = document.getElementById(`UserUnit${groupData.MessageGroupID}`);\r\n let TargetElement = null;\r\n\r\n const EChatRecentSection = document.getElementById(\"EChatRecentSection\");\r\n const searchKey = EChat.Util.getSearchText();\r\n // Task 962388: eChats: eChats sent to a user do not show in the recent list until I refresh\r\n if (searchKey && EChatRecentSection?.clientWidth > 0) {\r\n if (exist) {\r\n TargetElement = document.createElement(\"SPAN\");\r\n exist.after(TargetElement);\r\n } else {\r\n return;\r\n }\r\n }\r\n\r\n if (exist) {\r\n exist.remove();\r\n }\r\n\r\n const groupElement = await createRecentGroupElement({ groupData, filterEmptyMessage: !searchKey });\r\n if (groupElement?.TargetElement) {\r\n if (!TargetElement) {\r\n const LastMsgTime = groupElement.LastMsgTime;\r\n let TargetLastMsgTime = -1;\r\n\r\n const UserUnits = document.querySelectorAll(\"#EChatRecentList .UserUnit\");\r\n for (let i = 0, len = UserUnits.length; i < len; i++) {\r\n const UserUnit = UserUnits[i];\r\n const tmpLastMsgTime = parseInt(UserUnit.getAttribute(\"lastmsgtime\"));\r\n if (tmpLastMsgTime > LastMsgTime && (TargetLastMsgTime === -1 || TargetLastMsgTime >= tmpLastMsgTime)) {\r\n TargetElement = UserUnit;\r\n TargetLastMsgTime = tmpLastMsgTime;\r\n }\r\n }\r\n }\r\n\r\n if (!TargetElement) {\r\n listEle.prepend(groupElement.TargetElement);\r\n } else {\r\n TargetElement.after(groupElement.TargetElement);\r\n }\r\n groupElement.TargetElement.style.display = \"block\";\r\n }\r\n // Task 1160492: Changing title attributes on icon-only buttons to use tooltip instead\r\n _this.reviseEchatGroupProperties(groupElement.TargetElement, groupData);\r\n };\r\n\r\n // Task 1160492: Changing title attributes on icon-only buttons to use tooltip instead\r\n this.reviseEchatGroupProperties = function (groupElement, groupData) {\r\n const eCahtGroupList = groupElement;\r\n const Number = groupData.MessageGroupID;\r\n\r\n if (!EC_Fmt.isNull(eCahtGroupList)) {\r\n const eChatSavedBtn = eCahtGroupList.querySelector(\"[id ^= eChatSavedBtn]\");\r\n if (eChatSavedBtn) {\r\n if (eChatSavedBtn.id !== `eChatSavedBtn${Number}`) {\r\n eChatSavedBtn.setAttribute(\"id\", `eChatSavedBtn${Number}`);\r\n }\r\n }\r\n\r\n const eChatGroupEditBtn = eCahtGroupList.querySelector(\"[id ^= eChatGroupEditBtn]\");\r\n if (eChatGroupEditBtn) {\r\n if (eChatGroupEditBtn.id !== `eChatGroupEditBtn${Number}`) {\r\n eChatGroupEditBtn.setAttribute(\"id\", `eChatGroupEditBtn${Number}`);\r\n }\r\n }\r\n\r\n const eChatAlertDetailBtn = eCahtGroupList.querySelector(\"[id ^= eChatAlertDetailBtn]\");\r\n if (eChatAlertDetailBtn) {\r\n if (eChatAlertDetailBtn.id !== `eChatAlertDetailBtn${Number}`) {\r\n eChatAlertDetailBtn.setAttribute(\"id\", `eChatAlertDetailBtn${Number}`);\r\n }\r\n }\r\n\r\n const eChatAlertBtn = eCahtGroupList.querySelector(\"[id ^= eChatAlertBtn]\");\r\n if (eChatAlertBtn) {\r\n if (eChatAlertBtn.id !== `eChatAlertBtn${Number}`) {\r\n eChatAlertBtn.setAttribute(\"id\", `eChatAlertBtn${Number}`);\r\n }\r\n }\r\n\r\n const eChatTooltipDiv = document.getElementById(`eChatTooltip${Number}`);\r\n if (!EC_Fmt.isNull(eChatTooltipDiv)) {\r\n eChatTooltipDiv.remove();\r\n }\r\n\r\n _this.createEchatGroupTooltip(Number, eChatAlertBtn);\r\n }\r\n };\r\n\r\n // Task 1160492: Changing title attributes on icon-only buttons to use tooltip instead\r\n this.createEchatGroupTooltip = function (Number, eChatAlert) {\r\n const eChatTooltip = document.getElementById(\"EchatTooltip\");\r\n let eChatTooltipJs = document.getElementById(\"EchatJSTooltip\");\r\n\r\n if (EC_Fmt.isNull(eChatTooltipJs)) {\r\n eChatTooltipJs = document.createElement(\"div\");\r\n eChatTooltipJs.id = \"EchatJSTooltip\";\r\n eChatTooltip.append(eChatTooltipJs);\r\n }\r\n\r\n let eChatTooltipDiv = document.getElementById(`eChatTooltip${Number}`);\r\n if (EC_Fmt.isNull(eChatTooltipDiv)) {\r\n eChatTooltipDiv = EC_Fmt.HtmlStrToElement(`
`);\r\n eChatTooltipJs.append(eChatTooltipDiv);\r\n\r\n const eChatSavedBtn = EC_Fmt.HtmlStrToElement(`Recent Saved`);\r\n const eChatGroupEditBtn = EC_Fmt.HtmlStrToElement(`Group Edit`);\r\n const eChatAlertDetailBtn = EC_Fmt.HtmlStrToElement(`Alert Detail`);\r\n const eChatAlertBtn = EC_Fmt.HtmlStrToElement(`Mute/Unmute eChat Group`);\r\n\r\n if (eChatAlert) {\r\n eChatTooltipDiv.append(eChatSavedBtn, eChatGroupEditBtn, eChatAlertDetailBtn, eChatAlertBtn);\r\n }\r\n eChatTooltipDiv.append(eChatSavedBtn, eChatGroupEditBtn, eChatAlertDetailBtn);\r\n }\r\n };\r\n\r\n this.deleteGroup = function (groupId) {\r\n document.querySelectorAll(`#EChatRecentSection #UserUnit${groupId}`).forEach((target) => {\r\n target.remove();\r\n });\r\n };\r\n\r\n this.initViewMore = async function (groupList) {\r\n if (groupList?.length !== 0) {\r\n groupList.sort((a, b) => EChat.IndexedDB.GetGroupSortTime(b) - EChat.IndexedDB.GetGroupSortTime(a));\r\n\r\n // Message\r\n let count = 0;\r\n const limitGroup_Message = [];\r\n\r\n const checkGroup = (groupInfo) => {\r\n if (groupInfo.GroupType === SocketUtil.GroupType.Message && groupInfo.Messages && groupInfo.Messages.length !== 0) {\r\n return true;\r\n }\r\n if (groupInfo.GroupType === SocketUtil.GroupType.Task) {\r\n return true;\r\n }\r\n if (groupInfo.GroupType === SocketUtil.GroupType.System) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n for (let i = 0; i < groupList.length; i++) {\r\n if (checkGroup(groupList[i])) {\r\n limitGroup_Message.push(groupList[i]);\r\n count++;\r\n if (count >= 20) {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (limitGroup_Message.length !== 0) {\r\n _this.viewMoreLastMessageTimeCreated_Message = EChat.IndexedDB.GetGroupSortTime(limitGroup_Message[limitGroup_Message.length - 1]);\r\n await _this.drawGroups(limitGroup_Message);\r\n }\r\n }\r\n };\r\n\r\n this.drawGroups = async function (groupList) {\r\n if (groupList) {\r\n for (let i = 0; i < groupList.length; i++) {\r\n await _this.redrawGroup(groupList[i]);\r\n // New Message\r\n // Task 448559\r\n const msgGroupID = groupList[i].MessageGroupID;\r\n if (EChat.MainPageController.checkMessageWindowExist(msgGroupID)) {\r\n if (EChat.MainPageController.currentMessageWindow.chatTabList[msgGroupID]) {\r\n EChat.MainPageController.currentMessageWindow.chatTabList[msgGroupID].refreshMessageList(groupList[i].Messages);\r\n if (EChat.MainPageController.currentMessageWindow.messageWindowViewType === EChat.ViewType.OpenView) {\r\n EChat.DataProvider.SyncLastReadTime(msgGroupID);\r\n }\r\n }\r\n }\r\n }\r\n // View More Groups\r\n document.getElementById(\"EChatRecentList\").addEventListener(\"scroll\", function () {\r\n const searchText = EChat.Util.getSearchText();\r\n if (this.scrollTop + this.clientHeight >= (this.scrollHeight - 1) && canEnter) {\r\n if (!searchText) {\r\n canEnter = false;\r\n EChat.DataProvider.getGroupHistory(_this.viewMoreLastMessageTimeCreated_Message).then(async function (result) {\r\n if (result) {\r\n const recentList = result.Groups;\r\n _this.viewMoreLastMessageTimeCreated_Message = result.LastMessageTimeCreated;\r\n canEnter = true;\r\n if (recentList?.length !== 0) {\r\n let count = 0;\r\n for (let i = 0; i < recentList.length; i++) {\r\n count++;\r\n await _this.redrawGroup(recentList[i]);\r\n }\r\n\r\n if (searchText && count === 0) {\r\n this.scrollTop -= 40;\r\n }\r\n EChat.MainPageController.updateUnReadNumIcon(\"scroll\");\r\n }\r\n } else {\r\n canEnter = true;\r\n }\r\n }).catch(() => {\r\n canEnter = true;\r\n });\r\n }\r\n }\r\n });\r\n\r\n document.querySelectorAll(\"#EChatRecentSection .eChat-SupuerSearchList\").forEach((dom) => {\r\n dom.addEventListener(\"scroll\", function () {\r\n if (this.scrollTop + this.clientHeight >= (this.scrollHeight - 1) && canEnter) {\r\n const searchObj = document.getElementById(\"EChatSearchText\");\r\n const tab = searchObj.getAttribute(\"tab\");\r\n if (tab && EChat.Util.getSearchText()) {\r\n const viewMoreElement = document.querySelector(`#EChatRecentList #EChatSuperSearch${tab}Tab .eChat-SuperViewMore`);\r\n const NoRecords = document.querySelector(`#EChatRecentList #EChatSuperSearch${tab}List .eChat-SupuerSearchNoRecords`);\r\n if (NoRecords.clientWidth === 0) {\r\n const limit = 10;\r\n const startIndex = EC_Fmt.Null2ZeroInt(viewMoreElement.getAttribute(\"startIndex\")) + limit;\r\n const tabElement = document.querySelector(`#EChatRecentList #EChatSuperSearch${tab}Tab`);\r\n const listElement = document.querySelector(`#EChatRecentList #EChatSuperSearch${tab}List`);\r\n\r\n switch (tab) {\r\n case \"User\":\r\n canEnter = false;\r\n searchUser({\r\n searchText, limit, startIndex, listElement, tabElement, only: true\r\n }).then(() => {\r\n canEnter = true;\r\n }).catch(() => {\r\n canEnter = true;\r\n });\r\n break;\r\n case \"MessageAndTask\":\r\n canEnter = false;\r\n searchMessageAndTask({\r\n searchText, limit, startIndex, listElement, tabElement, only: true\r\n }).then(() => {\r\n canEnter = true;\r\n }).catch(() => {\r\n canEnter = true;\r\n });\r\n break;\r\n case \"Group\":\r\n canEnter = false;\r\n searchGroup({\r\n searchText, limit, startIndex, listElement, tabElement, only: true\r\n }).then(() => {\r\n canEnter = true;\r\n }).catch(() => {\r\n canEnter = true;\r\n });\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n });\r\n }\r\n };\r\n\r\n const searchUnread = function ({\r\n searchText, listElement, tabElement\r\n }) {\r\n return new Promise((resolve) => {\r\n const loading = listElement.querySelector(\".eChat-SuperLoading\");\r\n loading.style.display = \"block\";\r\n\r\n const noRecordsElement = listElement.querySelector(\".eChat-SupuerSearchNoRecords\");\r\n SocketUtil.api(\"SuperSearchByUnread2010\", {\r\n Search: searchText\r\n }).then(async (data) => {\r\n loading.style.display = \"none\";\r\n noRecordsElement.style.display = \"block\";\r\n if (data.length === 0) {\r\n tabElement.style.display = \"block\";\r\n listElement.style.display = \"block\";\r\n }\r\n\r\n for (let i = 0, len = data.length; i < len; i++) {\r\n const searchInfo = data[i];\r\n if (searchInfo.DisplayName && EChat.DataProvider.CurrentUserInfo && searchInfo.DisplayName !== EChat.DataProvider.CurrentUserInfo.FullName) {\r\n searchInfo.DisplayName = searchInfo.DisplayName.replace(`${EChat.DataProvider.CurrentUserInfo.FullName}, `, \"\").replace(`, ${EChat.DataProvider.CurrentUserInfo.FullName}`, \"\");\r\n }\r\n const groupItem = await createRecentGroupElement({ groupData: searchInfo });\r\n if (groupItem && !listElement.querySelector(`#UserUnit${searchInfo.MessageGroupID}`)) {\r\n listElement.querySelector(\".eChat-SuperItem\").append(groupItem.TargetElement);\r\n }\r\n }\r\n resolve(data.length);\r\n }).catch((ex) => {\r\n noRecordsElement.style.display = \"block\";\r\n loading.style.display = \"none\";\r\n EChat.Util.errorAlert(ex);\r\n resolve(0);\r\n });\r\n });\r\n };\r\n\r\n const searchMessageAndTask = function ({\r\n searchText, limit, startIndex, listElement, tabElement, only, animationLoading\r\n }) {\r\n return new Promise((resolve) => {\r\n const loading = listElement.querySelector(\".eChat-SuperLoading\");\r\n loading.style.display = \"block\";\r\n const noRecordsElement = listElement.querySelector(\".eChat-SupuerSearchNoRecords\");\r\n SocketUtil.api(\"SuperSearchByMessageAndTask\", {\r\n Search: searchText,\r\n Limit: limit,\r\n StartIndex: startIndex\r\n }).then(async (data) => {\r\n loading.style.display = \"none\";\r\n const viewMoreElement = tabElement.querySelector(\".eChat-SuperViewMore\");\r\n viewMoreElement.setAttribute(\"startIndex\", startIndex);\r\n\r\n if (data.length !== 0 || only) {\r\n tabElement.style.display = \"block\";\r\n listElement.style.display = \"block\";\r\n } else {\r\n listElement.style.display = \"none\";\r\n tabElement.style.display = \"none\";\r\n }\r\n\r\n if (data.length < limit) {\r\n viewMoreElement.style.display = \"none\";\r\n if (only) {\r\n noRecordsElement.style.display = \"block\";\r\n } else {\r\n noRecordsElement.style.display = \"none\";\r\n }\r\n } else {\r\n viewMoreElement.style.display = \"flex\";\r\n const viewMore = function () {\r\n this.removeEventListener(\"click\", viewMore);\r\n switchSearchUI(\"MessageAndTask\");\r\n searchMessageAndTask({\r\n searchText, limit: 10, startIndex: startIndex + limit, listElement, tabElement, only: true, animationLoading: true\r\n });\r\n };\r\n viewMoreElement.addEventListener(\"click\", viewMore);\r\n }\r\n\r\n for (let i = 0, len = data.length; i < len; i++) {\r\n const searchInfo = data[i];\r\n if (searchInfo.DisplayName && EChat.DataProvider.CurrentUserInfo && searchInfo.DisplayName !== EChat.DataProvider.CurrentUserInfo.FullName) {\r\n searchInfo.DisplayName = searchInfo.DisplayName.replace(`${EChat.DataProvider.CurrentUserInfo.FullName}, `, \"\").replace(`, ${EChat.DataProvider.CurrentUserInfo.FullName}`, \"\");\r\n }\r\n searchInfo.DisplayName = EChat.Util.highLight(searchInfo.DisplayName, searchText, \"yellow\", false).text;\r\n\r\n const groupItem = await createRecentGroupElement({ groupData: searchInfo, hideUnreadCount: true });\r\n if (groupItem && !listElement.querySelector(`#UserUnit${searchInfo.MessageGroupID}`)) {\r\n listElement.querySelector(\".eChat-SuperItem\").append(groupItem.TargetElement);\r\n }\r\n }\r\n if (animationLoading) {\r\n document.getElementById(\"EChatRecentList\").setAttribute(\"tab\", \"viewmore\");\r\n }\r\n resolve(data.length);\r\n }).catch((ex) => {\r\n noRecordsElement.style.display = \"block\";\r\n loading.style.display = \"none\";\r\n EChat.Util.errorAlert(ex);\r\n resolve(0);\r\n });\r\n });\r\n };\r\n\r\n const searchGroup = function ({\r\n searchText, limit, startIndex, listElement, tabElement, only, animationLoading\r\n }) {\r\n return new Promise((resolve) => {\r\n const loading = listElement.querySelector(\".eChat-SuperLoading\");\r\n loading.style.display = \"block\";\r\n\r\n const noRecordsElement = listElement.querySelector(\".eChat-SupuerSearchNoRecords\");\r\n SocketUtil.api(\"SuperSearchByGroup\", {\r\n Search: searchText,\r\n Limit: limit,\r\n StartIndex: startIndex\r\n }).then(async (data) => {\r\n loading.style.display = \"none\";\r\n const viewMoreElement = tabElement.querySelector(\".eChat-SuperViewMore\");\r\n viewMoreElement.setAttribute(\"startIndex\", startIndex);\r\n\r\n if (data.length !== 0 || only) {\r\n tabElement.style.display = \"block\";\r\n listElement.style.display = \"block\";\r\n } else {\r\n listElement.style.display = \"none\";\r\n tabElement.style.display = \"none\";\r\n }\r\n\r\n if (data.length < limit) {\r\n viewMoreElement.style.display = \"none\";\r\n if (only) {\r\n noRecordsElement.style.display = \"block\";\r\n } else {\r\n noRecordsElement.style.display = \"none\";\r\n }\r\n } else {\r\n viewMoreElement.style.display = \"flex\";\r\n const viewMore = function () {\r\n this.removeEventListener(\"click\", viewMore);\r\n switchSearchUI(\"Group\");\r\n searchGroup({\r\n searchText, limit: 10, startIndex: startIndex + limit, listElement, tabElement, only: true, animationLoading: true\r\n });\r\n };\r\n viewMoreElement.addEventListener(\"click\", viewMore);\r\n }\r\n\r\n for (let i = 0, len = data.length; i < len; i++) {\r\n const searchInfo = data[i];\r\n if (searchInfo.DisplayName && EChat.DataProvider.CurrentUserInfo && searchInfo.DisplayName !== EChat.DataProvider.CurrentUserInfo.FullName) {\r\n searchInfo.DisplayName = searchInfo.DisplayName.replace(`${EChat.DataProvider.CurrentUserInfo.FullName}, `, \"\").replace(`, ${EChat.DataProvider.CurrentUserInfo.FullName}`, \"\");\r\n }\r\n\r\n searchInfo.SortTime = \"None\";\r\n searchInfo.Message = \"\";\r\n const groupItem = await createRecentGroupElement({ groupData: searchInfo, hideLastMessage: true, hideUnreadCount: true });\r\n if (groupItem && !listElement.querySelector(`#UserUnit${searchInfo.MessageGroupID}`)) {\r\n listElement.querySelector(\".eChat-SuperItem\").append(groupItem.TargetElement);\r\n }\r\n }\r\n if (animationLoading) {\r\n document.getElementById(\"EChatRecentList\").setAttribute(\"tab\", \"viewmore\");\r\n }\r\n resolve(data.length);\r\n }).catch((ex) => {\r\n noRecordsElement.style.display = \"block\";\r\n loading.style.display = \"none\";\r\n EChat.Util.errorAlert(ex);\r\n resolve(0);\r\n });\r\n });\r\n };\r\n\r\n const searchUser = function ({\r\n searchText, limit, startIndex, listElement, tabElement, only, selectedUser, animationLoading\r\n }) {\r\n return new Promise((resolve) => {\r\n const loading = listElement.querySelector(\".eChat-SuperLoading\");\r\n loading.style.display = \"block\";\r\n const noRecordsElement = listElement.querySelector(\".eChat-SupuerSearchNoRecords\");\r\n EChat.DataProvider.api(\"EChat_SearchUser\", {\r\n Search: searchText,\r\n Limit: limit,\r\n StartIndex: startIndex,\r\n AuthenticationIDArr: EC_Fmt.Null2EmptyStr(selectedUser)\r\n }).then(async (data) => {\r\n loading.style.display = \"none\";\r\n const viewMoreElement = tabElement.querySelector(\".eChat-SuperViewMore\");\r\n viewMoreElement.setAttribute(\"startIndex\", startIndex);\r\n\r\n if (data.length !== 0 || only) {\r\n tabElement.style.display = \"block\";\r\n listElement.style.display = \"block\";\r\n } else {\r\n listElement.style.display = \"none\";\r\n tabElement.style.display = \"none\";\r\n }\r\n\r\n if (data.length < limit || selectedUser) {\r\n viewMoreElement.style.display = \"none\";\r\n if (only && !selectedUser) {\r\n noRecordsElement.style.display = \"block\";\r\n } else {\r\n noRecordsElement.style.display = \"none\";\r\n }\r\n } else {\r\n viewMoreElement.style.display = \"flex\";\r\n const viewMore = function () {\r\n this.removeEventListener(\"click\", viewMore);\r\n switchSearchUI(\"User\");\r\n searchUser({\r\n searchText, limit: 10, startIndex: startIndex + limit, listElement, tabElement, only: true, animationLoading: true\r\n });\r\n };\r\n viewMoreElement.addEventListener(\"click\", viewMore);\r\n document.getElementById(\"EChatRecentList\");\r\n }\r\n\r\n let selectAuthIDArr = [];\r\n const selectAuthID = document.getElementById(\"EChatSearchText\").getAttribute(\"selected\");\r\n if (selectAuthID) {\r\n selectAuthIDArr = selectAuthID.split(\",\");\r\n }\r\n\r\n for (let i = 0, len = data.length; i < len; i++) {\r\n const userInfo = data[i];\r\n userInfo.DisplayName = EChat.Util.highLight(userInfo.Name, searchText, \"yellow\", false).text;\r\n userInfo.DisplayDepartment = EChat.Util.highLight(userInfo.Department, searchText, \"yellow\", false).text;\r\n userInfo.DisplayJobTitle = EChat.Util.highLight(userInfo.JobTitle, searchText, \"yellow\", false).text;\r\n\r\n const userItemDisplay = EChat.CustomComponent.UserItemDisplay(userInfo, true, false);\r\n if (userItemDisplay && !listElement.querySelector(`.eChatUserItem[authid='${userInfo.AuthenticationID}']`)) {\r\n listElement.querySelector(\".eChat-SuperItem\").append(userItemDisplay);\r\n userItemDisplay.addEventListener(\"click\", function (e) {\r\n EChat.CustomComponent.UserSelectEvnet(e, userItemDisplay, \"EChatSuperSearchUserList\", () => {\r\n const authID = parseInt(this.getAttribute(\"authid\"));\r\n const userArr = [authID, EChat.DataProvider.CurrentUserInfo.AuthenticationID];\r\n EChat.MainPageController.openUserWindowByUserArr(userArr);\r\n }, false);\r\n });\r\n\r\n if (selectAuthIDArr.includes(userInfo.AuthenticationID.toString())) {\r\n userItemDisplay.querySelector(\"input\").checked = true;\r\n userItemDisplay.querySelector(\".eChatCheckBoxSpan\").style.backgroundPosition = \"-30px -25px\";\r\n userItemDisplay.setAttribute(\"select\", \"true\");\r\n }\r\n }\r\n }\r\n if (animationLoading) {\r\n document.getElementById(\"EChatRecentList\").setAttribute(\"tab\", \"viewmore\");\r\n }\r\n resolve(data.length);\r\n }).catch((ex) => {\r\n noRecordsElement.style.display = \"block\";\r\n loading.style.display = \"none\";\r\n EChat.Util.errorAlert(ex);\r\n resolve(0);\r\n });\r\n });\r\n };\r\n\r\n const switchSearchUI = function (tab) {\r\n document.querySelectorAll(\"#EChatRecentList .eChat-SupuerSearchTab, .eChat-SupuerSearchList, .eChat-SupuerSearchTab .eChat-SuperViewMore\").forEach((dom) => {\r\n if (tab) {\r\n dom.classList.add(\"hidden\");\r\n } else {\r\n dom.classList.remove(\"hidden\");\r\n }\r\n });\r\n\r\n document.querySelectorAll(\"#EChatRecentList .eChat-SupuerSearchTab .ews-icon-back\").forEach((dom) => {\r\n if (tab) {\r\n dom.classList.remove(\"hidden\");\r\n } else {\r\n dom.classList.add(\"hidden\");\r\n }\r\n });\r\n\r\n document.querySelectorAll(\"#EChatRecentList .SuperViewMoreTab\").forEach((dom) => {\r\n dom.classList.add(\"SuperViewMoreTab\");\r\n });\r\n\r\n if (tab) {\r\n const listDom = document.querySelector(`#EChatRecentList #EChatSuperSearch${tab}List`);\r\n const tabDom = document.querySelector(`#EChatRecentList #EChatSuperSearch${tab}Tab`);\r\n const viewMore = tabDom.querySelector(\"#EChatRecentList .eChat-SuperViewMore\");\r\n const backDom = tabDom.querySelector(\"#EChatRecentList .ews-icon-back\");\r\n const searchObj = document.getElementById(\"EChatSearchText\");\r\n\r\n listDom.classList.remove(\"hidden\");\r\n tabDom.classList.remove(\"hidden\");\r\n tabDom.classList.add(\"SuperViewMoreTab\");\r\n if (viewMore) {\r\n viewMore.classList.add(\"hidden\");\r\n }\r\n if (backDom) {\r\n backDom.classList.remove(\"hidden\");\r\n }\r\n\r\n searchObj.setAttribute(\"tab\", tab);\r\n backDom.removeEventListener(\"click\", backSearch);\r\n backDom.addEventListener(\"click\", backSearch);\r\n searchTextOld = `${searchObj.value}_${tab}`;\r\n } else {\r\n EChat.MainPageController.ShowCreateGroupButton(\"EChatSuperSearchUserList\");\r\n }\r\n };\r\n\r\n const backSearch = function () {\r\n const searchObj = document.getElementById(\"EChatSearchText\");\r\n searchObj.removeAttribute(\"tab\");\r\n document.getElementById(\"EChatRecentList\").removeAttribute(\"tab\");\r\n document.querySelectorAll(\"#EChatRecentList .eChat-SupuerSearchTab .ews-icon-back\").forEach((dom) => {\r\n dom.classList.add(\"hidden\");\r\n });\r\n RecentSearch(searchObj);\r\n };\r\n\r\n // RecentController\r\n this.searchPanelKeyupEvent = function (e, searchObj, noWait) {\r\n const listDom = document.getElementById(\"EChatRecentList\");\r\n EChat.CustomComponent.KeyCodeEvent({\r\n KeyCode: e ? e.keyCode : 0,\r\n ListDom: listDom,\r\n ItemClassArr: [\"UserUnit\", \"eChatUserItem\"],\r\n SelectClass: \"eChatSelectItem\",\r\n EnterOpenItem: !searchIng,\r\n InputEvent: async () => {\r\n searchIng = true;\r\n clearTimeout(timeOutThread);\r\n timeOutThread = setTimeout(async () => {\r\n await RecentSearch(searchObj);\r\n searchIng = false;\r\n }, noWait ? 0 : 750);\r\n }\r\n });\r\n };\r\n\r\n const ChineseCharacterPattern = /[\\u4E00-\\u9FA5]+/;\r\n\r\n const RecentSearch = async function (searchObj) {\r\n let searchText = EC_Fmt.Null2EmptyStr(searchObj.value);\r\n const tab = searchObj.getAttribute(\"tab\");\r\n if (`${searchText}_${tab}` === searchTextOld && searchText) {\r\n return;\r\n }\r\n\r\n searchTextOld = `${searchText}_${tab}`;\r\n\r\n if (ChineseCharacterPattern.test(searchText)) {\r\n if (searchText.length < 2 && searchText.length !== 0) {\r\n return;\r\n }\r\n } else if (searchText.length < 3 && searchText.length !== 0) {\r\n return;\r\n }\r\n\r\n if (searchText.length > 50) {\r\n searchText = searchText.substr(0, 50);\r\n if (searchObj) {\r\n searchObj.Value = searchText;\r\n }\r\n }\r\n\r\n let selectAuthIDArr = [];\r\n if (!tab || tab === \"User\") {\r\n const EChatSearchText = document.getElementById(\"EChatSearchText\");\r\n const selectedStr = EChatSearchText.getAttribute(\"selected\");\r\n if (selectedStr) {\r\n selectAuthIDArr = selectedStr.split(\",\");\r\n }\r\n\r\n document.querySelectorAll(\"#EChatSuperSearchUserList input:checked\").forEach((dom) => {\r\n const authid = dom.getAttribute(\"authid\");\r\n if (!selectAuthIDArr.includes(authid)) {\r\n selectAuthIDArr.push(authid);\r\n }\r\n });\r\n\r\n if (selectAuthIDArr.length !== 0) {\r\n EChatSearchText.setAttribute(\"selected\", selectAuthIDArr.join(\",\"));\r\n }\r\n }\r\n\r\n const EChatRecentList = document.getElementById(\"EChatRecentList\");\r\n if (searchText) {\r\n EChatRecentList.innerHTML = document.getElementById(\"EChatSuperSearch\").innerHTML;\r\n const EChatSuperSearchUnreadTab = EChatRecentList.querySelector(\"#EChatSuperSearchUnreadTab\");\r\n const EChatSuperSearchUnreadList = EChatRecentList.querySelector(\"#EChatSuperSearchUnreadList\");\r\n\r\n const EChatSuperSearchMessageAndTaskTab = EChatRecentList.querySelector(\"#EChatSuperSearchMessageAndTaskTab\");\r\n const EChatSuperSearchMessageAndTaskList = EChatRecentList.querySelector(\"#EChatSuperSearchMessageAndTaskList\");\r\n\r\n const EChatSuperSearchGroupTab = EChatRecentList.querySelector(\"#EChatSuperSearchGroupTab\");\r\n const EChatSuperSearchGroupList = EChatRecentList.querySelector(\"#EChatSuperSearchGroupList\");\r\n\r\n const EChatSuperSearchUserTab = EChatRecentList.querySelector(\"#EChatSuperSearchUserTab\");\r\n const EChatSuperSearchUserList = EChatRecentList.querySelector(\"#EChatSuperSearchUserList\");\r\n\r\n EChatRecentList.querySelectorAll(\".eChat-SupuerSearchNoRecords\").forEach((dom) => {\r\n dom.style.display = \"none\";\r\n });\r\n const promiseArr = [];\r\n\r\n if (searchText.toLowerCase() === \"unread\") {\r\n EChatSuperSearchUnreadTab.style.display = \"block\";\r\n EChatSuperSearchUnreadList.style.display = \"block\";\r\n promiseArr.push(searchUnread({\r\n searchText, listElement: EChatSuperSearchUnreadList, tabElement: EChatSuperSearchUnreadTab\r\n }));\r\n } else {\r\n EChatSuperSearchUnreadTab.style.display = \"none\";\r\n EChatSuperSearchUnreadList.style.display = \"none\";\r\n }\r\n\r\n const startIndex = 0;\r\n const limit = tab ? 20 : 3;\r\n\r\n switchSearchUI(tab);\r\n EChat.MainPageController.ShowCreateGroupButton(\"EChatSuperSearchUserList\");\r\n\r\n if (!tab || tab === \"User\") {\r\n promiseArr.push(searchUser({\r\n searchText, limit, startIndex, listElement: EChatSuperSearchUserList, tabElement: EChatSuperSearchUserTab, only: !!tab\r\n }));\r\n }\r\n\r\n if (!tab || tab === \"MessageAndTask\") {\r\n promiseArr.push(searchMessageAndTask({\r\n searchText, limit, startIndex, listElement: EChatSuperSearchMessageAndTaskList, tabElement: EChatSuperSearchMessageAndTaskTab, only: !!tab\r\n }));\r\n }\r\n\r\n if (!tab || tab === \"Group\") {\r\n promiseArr.push(searchGroup({\r\n searchText, limit, startIndex, listElement: EChatSuperSearchGroupList, tabElement: EChatSuperSearchGroupTab, only: !!tab\r\n }));\r\n }\r\n const dataCountArr = await Promise.all(promiseArr);\r\n // Show No Records\r\n if (!tab) {\r\n let hasResult = false;\r\n for (let i = 0; i < dataCountArr.length; i++) {\r\n if (dataCountArr[i] > 0) {\r\n hasResult = true;\r\n break;\r\n }\r\n }\r\n\r\n if (!hasResult) {\r\n const noMore = EChatRecentList.querySelector(\".EChatSuperSearch.eChat-SupuerSearchNoRecords\");\r\n noMore.style.display = \"block\";\r\n }\r\n }\r\n\r\n document.querySelectorAll(\"#EChatRecentSection .eChat-SupuerSearchList\").forEach((dom) => {\r\n dom.addEventListener(\"scroll\", function () {\r\n if (this.scrollTop + this.clientHeight >= (this.scrollHeight - 1) && canEnter) {\r\n const searchDom = document.getElementById(\"EChatSearchText\");\r\n const tabName = searchDom.getAttribute(\"tab\");\r\n const searchValue = EC_Fmt.Null2EmptyStr(searchDom.value);\r\n if (tabName && searchValue) {\r\n const viewMoreElement = document.querySelector(`#EChatRecentList #EChatSuperSearch${tabName}Tab .eChat-SuperViewMore`);\r\n const NoRecords = document.querySelector(`#EChatRecentList #EChatSuperSearch${tabName}List .eChat-SupuerSearchNoRecords`);\r\n if (NoRecords.clientWidth === 0) {\r\n const limitCount = 10;\r\n const nextStartIndex = EC_Fmt.Null2ZeroInt(viewMoreElement.getAttribute(\"startIndex\")) + limitCount;\r\n const tabElement = document.querySelector(`#EChatRecentList #EChatSuperSearch${tabName}Tab`);\r\n const listElement = document.querySelector(`#EChatRecentList #EChatSuperSearch${tabName}List`);\r\n\r\n switch (tabName) {\r\n case \"User\":\r\n canEnter = false;\r\n searchUser({\r\n searchText: searchValue, limit: limitCount, startIndex: nextStartIndex, listElement, tabElement, only: true\r\n }).then(() => {\r\n canEnter = true;\r\n }).catch(() => {\r\n canEnter = true;\r\n });\r\n break;\r\n case \"MessageAndTask\":\r\n canEnter = false;\r\n searchMessageAndTask({\r\n searchText: searchValue, limit: limitCount, startIndex: nextStartIndex, listElement, tabElement, only: true\r\n }).then(() => {\r\n canEnter = true;\r\n }).catch(() => {\r\n canEnter = true;\r\n });\r\n break;\r\n case \"Group\":\r\n canEnter = false;\r\n searchGroup({\r\n searchText: searchValue, limit: limitCount, startIndex: nextStartIndex, listElement, tabElement, only: true\r\n }).then(() => {\r\n canEnter = true;\r\n }).catch(() => {\r\n canEnter = true;\r\n });\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n });\r\n } else if (selectAuthIDArr.length > 0 && (!tab || tab === \"User\")) {\r\n const EChatSuperSearchUserTab = EChatRecentList.querySelector(\"#EChatSuperSearchUserTab\");\r\n const EChatSuperSearchUserList = EChatRecentList.querySelector(\"#EChatSuperSearchUserList\");\r\n\r\n const ItemList = EChatRecentList.querySelector(\"#EChatSuperSearchUserList .eChat-SuperItem\");\r\n ItemList.innerHTML = \"\";\r\n\r\n const clearAll = EC_Fmt.HtmlStrToElement(\"Clear All\");\r\n ItemList.append(clearAll);\r\n clearAll.addEventListener(\"click\", () => {\r\n EC_Fmt.TriggerEvent(document.getElementById(\"EChatRecentSwitchBtn\"), \"click\");\r\n });\r\n\r\n EChatRecentList.querySelectorAll(\".eChat-SupuerSearchTab, .eChat-SupuerSearchList\").forEach((dom) => {\r\n if (dom.id !== \"EChatSuperSearchUserTab\" && dom.id !== \"EChatSuperSearchUserList\") {\r\n dom.remove();\r\n }\r\n });\r\n\r\n await searchUser({\r\n searchText: \"\", limit: 0, startIndex: 0, listElement: EChatSuperSearchUserList, tabElement: EChatSuperSearchUserTab, only: !!tab, selectedUser: selectAuthIDArr.join(\",\")\r\n });\r\n\r\n EChat.MainPageController.ShowCreateGroupButton(\"EChatSuperSearchUserList\");\r\n } else if (tab) {\r\n EChatRecentList.querySelector(`#EChatSuperSearch${tab}List .eChat-SuperItem`).innerHTML = \"\";\r\n EChat.MainPageController.ShowCreateGroupButton(\"EChatSuperSearchUserList\");\r\n } else {\r\n switchSearchUI(\"\");\r\n EChatRecentList.innerHTML = \"\";\r\n document.getElementById(\"EChatSearchText\").removeAttribute(\"selected\");\r\n EChat.MainPageController.ShowCreateGroupButton();\r\n await EChat.IndexedDB.GetTableAllData(EChat.DBTableName.GROUPINFO).then(async (groupInfoList) => {\r\n await _this.initViewMore(groupInfoList);\r\n EChat.MainPageController.updateUnReadNumIcon(\"search cancel\");\r\n });\r\n }\r\n };\r\n};\r\n\r\nEChat.CustomGroupController = function () {\r\n const _this = this;\r\n let searchIng = false;\r\n let timeOutThread = 0;\r\n\r\n this.customGroupElement = EChat.Util.PreventScroll(document.getElementById(\"EChatGroupList\"));\r\n\r\n const createCustomGroupElement = function (groupData) {\r\n const divElement = EC_Fmt.HtmlStrToElement(`
`);\r\n const userIcoSpan = document.createElement(\"SPAN\");\r\n userIcoSpan.classList.add(\"Left\");\r\n const groupIconUrl = EChat.DataProvider.GetGroupAvatarUrlAndAuthID(groupData, EChat.DataProvider.CurrentUserInfo).Url;\r\n userIcoSpan.style.marginRight = \"5px\";\r\n userIcoSpan.style.backgroundImage = `url(${groupIconUrl})`;\r\n userIcoSpan.classList.add(\"eChat-ico-GroupIcon\");\r\n\r\n divElement.append(userIcoSpan);\r\n\r\n const nameSpan = EC_Fmt.HtmlStrToElement(`${groupData.GroupName}`);\r\n nameSpan.setAttribute(\"title\", groupData.GroupName);\r\n\r\n const includeUserSpan = document.createElement(\"SPAN\");\r\n const searchText = EChat.Util.getSearchText();\r\n const members = EC_Fmt.HtmlStrToElement(`${groupData.UserCount} members`);\r\n\r\n if (searchText) {\r\n const groupNameDisplay = EChat.Util.highLight(groupData.GroupName, searchText, \"yellow\", false).text;\r\n nameSpan.innerHTML = groupNameDisplay;\r\n if (groupData.IncludeUser) {\r\n nameSpan.setAttribute(\"title\", `${groupData.GroupName} (Includes ${groupData.IncludeUser})`);\r\n const IncludeUser = EChat.Util.highLight(groupData.IncludeUser, searchText, \"yellow\", false).text;\r\n nameSpan.innerHTML += ` (Includes ${IncludeUser})`;\r\n }\r\n } else {\r\n nameSpan.textContent = groupData.GroupName;\r\n divElement.append(members);\r\n }\r\n\r\n divElement.append(nameSpan);\r\n divElement.append(includeUserSpan);\r\n\r\n const groupToolBtn = EC_Fmt.HtmlStrToElement(``);\r\n if (groupData.PostPermission !== EChat.PostPermissionType.ReadOnly) {\r\n // Task 1074079:eChat: Close window buttons do not use the standard UI Kit\r\n const editButton = EC_Fmt.HtmlStrToElement(\"\");\r\n editButton.addEventListener(\"click\", (e) => {\r\n EChat.GroupSettingController.openGroupSettingWindow(groupData.MessageGroupID);\r\n e.stopPropagation();\r\n });\r\n groupToolBtn.append(editButton);\r\n }\r\n groupToolBtn.append(EChat.MainPageController.GetMinEditPromptButton(groupData));\r\n divElement.append(groupToolBtn);\r\n\r\n divElement.addEventListener(\"click\", function (e) {\r\n const groupId = this.getAttribute(\"groupid\");\r\n if (groupId) {\r\n EChat.DataProvider.GetGroupInfoByGroupID(groupId).then((groupInfo) => {\r\n EChat.MainPageController.getMessageWindow(groupInfo.MessageGroupID).addRecentTab(groupInfo, true);\r\n });\r\n }\r\n e.stopPropagation();\r\n });\r\n\r\n return divElement;\r\n };\r\n\r\n // Task 994745: Directory -> Groups. Add group member search\r\n this.CustomGroupSearch = async function (Search) {\r\n const EChatGroupList = document.getElementById(\"EChatGroupList\");\r\n EChatGroupList.innerHTML = \"\";\r\n EChat.Util.ShowLoading(EChatGroupList, Search ? \"Searching\" : \"\");\r\n const groupList = await EChat.DataProvider.GetCustomerGroup(Search);\r\n if (groupList) {\r\n for (let i = 0; i < groupList.length; i++) {\r\n const item = createCustomGroupElement(groupList[i]);\r\n _this.customGroupElement.append(item);\r\n }\r\n }\r\n ECP.Dialog.HideLoading();\r\n };\r\n\r\n this.redrawCustomGroup = function (groupData) {\r\n if (!EChat.Util.IsRecentSearchState()) {\r\n return;\r\n }\r\n\r\n const customGroup = document.getElementById(`CustomGroup${groupData.MessageGroupID}`);\r\n if (customGroup) {\r\n customGroup.remove();\r\n }\r\n if (groupData.GroupName) {\r\n const groupElement = createCustomGroupElement(groupData);\r\n const EChatGroupList = document.getElementById(\"EChatGroupList\");\r\n if (groupElement && EChatGroupList) {\r\n EChatGroupList.prepend(groupElement);\r\n }\r\n }\r\n };\r\n\r\n this.deleteGroup = function (groupId) {\r\n const customGroup = document.getElementById(`CustomGroup${groupId}`);\r\n if (customGroup) {\r\n customGroup.remove();\r\n }\r\n };\r\n\r\n // CustomGroupController\r\n this.searchPanelKeyupEvent = function (e, searchObj, noWait) {\r\n const listDom = document.getElementById(\"EChatGroupList\");\r\n EChat.CustomComponent.KeyCodeEvent({\r\n KeyCode: e ? e.keyCode : 0,\r\n ListDom: listDom,\r\n ItemClassArr: [\"eChatCustomGroupItem\"],\r\n SelectClass: \"eChatSelectItem\",\r\n EnterOpenItem: !searchIng,\r\n InputEvent: () => {\r\n searchIng = true;\r\n clearTimeout(timeOutThread);\r\n timeOutThread = setTimeout(async () => {\r\n await _this.CustomGroupSearch(searchObj.value);\r\n searchIng = false;\r\n }, noWait ? 0 : 750);\r\n }\r\n });\r\n };\r\n};\r\n\r\nEChat.UserController = function () {\r\n const _this = this;\r\n let searchIng = false;\r\n let timeOutThread;\r\n\r\n this.userListElement = document.getElementById(\"EChatUserList\");\r\n\r\n const userClickEvent = function (element) {\r\n const authID = element.getAttribute(\"authid\");\r\n const userArr = [authID, EChat.DataProvider.CurrentUserInfo.AuthenticationID];\r\n EChat.MainPageController.openUserWindowByUserArr(userArr);\r\n };\r\n\r\n const createGroupClickEvent = function () {\r\n const userArr = [];\r\n const userListElement = _this.userListElement;\r\n const EChatCreateGroup = document.getElementById(\"EChatCreateGroup\");\r\n const itemid = EChatCreateGroup.getAttribute(\"itemid\");\r\n if (!itemid) {\r\n return;\r\n }\r\n\r\n document.querySelectorAll(`#${itemid} input:checked`).forEach((dom) => {\r\n userArr.push(parseInt(dom.getAttribute(\"authid\")));\r\n });\r\n\r\n // Task :996408 eChat: When searching for multiple users and selecting 'Create Group' the group only contains the last user selected.\r\n const selected = document.getElementById(\"EChatSearchText\").getAttribute(\"selected\");\r\n if (selected) {\r\n const selectedArr = selected.split(\",\");\r\n for (let i = 0; i < selectedArr.length; i++) {\r\n const authid = parseInt(selectedArr[i]);\r\n if (!userArr.includes(authid)) {\r\n userArr.push(authid);\r\n }\r\n }\r\n }\r\n\r\n if (userArr.length) {\r\n const userStr = EChat.DataProvider.GetUserStrByUserList(userArr);\r\n EChat.DataProvider.GetGroupInfoByAuthIDList(userStr).then((groupInfo) => {\r\n EC_Fmt.TriggerEvent(document.getElementById(\"EChatRecentSwitchBtn\"), \"click\");\r\n EChat.MainPageController.getMessageWindow(groupInfo.MessageGroupID).addRecentTab(groupInfo, false);\r\n }).catch((ex) => {\r\n // eslint-disable-next-line no-console\r\n console.error(ex);\r\n });\r\n\r\n userListElement.querySelector(\"#EChatUserListItems\").innerHTML = \"\";\r\n document.getElementById(\"EChatSearchText\").value = \"\";\r\n } else {\r\n const userElement = userListElement.querySelector(\"#EChatUserListItems .eChatSelectItem input\");\r\n if (userElement) {\r\n userListElement.querySelector(\"#EChatUserListItems\").innerHTML = \"\";\r\n document.getElementById(\"EChatSearchText\").value = \"\";\r\n\r\n const userStr = EChat.DataProvider.GetUserStrByUserList([parseInt(userElement.getAttribute(\"authid\"))]);\r\n EChat.DataProvider.GetGroupInfoByAuthIDList(userStr).then((groupInfo) => {\r\n EChat.MainPageController.getMessageWindow(groupInfo.MessageGroupID).addRecentTab(groupInfo, false);\r\n EC_Fmt.TriggerEvent(document.getElementById(\"EChatRecentSwitchBtn\"), \"click\");\r\n }).catch(EChat.Util.errorAlert);\r\n }\r\n }\r\n };\r\n\r\n const UserSearch = function () {\r\n const listDom = document.getElementById(\"EChatUserListItems\");\r\n const SearchDom = document.getElementById(\"EChatSearchText\");\r\n const SearchText = EChat.Util.getSearchText();\r\n const userFilters = document.getElementById(\"ews-eChat-advanced-search-menu\");\r\n return EChat.CustomComponent.UserSearch({\r\n All: false,\r\n UserTypeID: !EC_Fmt.isNull(userFilters) ? EC_Fmt.Null2NullStr(userFilters.querySelector(\"#EChatSelectUserType input[type='hidden']\").value) : \"Null\",\r\n LocationID: !EC_Fmt.isNull(userFilters) ? EC_Fmt.Null2NullStr(userFilters.querySelector(\"#EChatSelectLocation input[type='hidden']\").value) : \"Null\",\r\n RoleID: !EC_Fmt.isNull(userFilters) ? EC_Fmt.Null2NullStr(userFilters.querySelector(\"#EChatSelectRole input[type='hidden']\").value) : \"Null\",\r\n Search: SearchText,\r\n Container: listDom,\r\n ClickCallBack: userClickEvent,\r\n Mark: document.getElementById(\"EChatUserList\"),\r\n SearchDom,\r\n SearchIcon: false,\r\n ShowUserType: true,\r\n ShowFilters: true,\r\n HiddenCreateGroupBtn: false\r\n }).then(() => {\r\n EChat.MainPageController.ShowCreateGroupButton(\"EChatUserListItems\");\r\n }).catch();\r\n };\r\n\r\n // UserController\r\n this.searchPanelKeyupEvent = function (e, searchObj, noWait) {\r\n const listDom = document.getElementById(\"EChatUserList\");\r\n EChat.CustomComponent.KeyCodeEvent({\r\n KeyCode: e ? e.keyCode : 0,\r\n ListDom: listDom,\r\n ItemClassArr: [\"eChatUserItem\"],\r\n SelectClass: \"eChatSelectItem\",\r\n EnterEvent: () => {\r\n if (!searchIng) {\r\n createGroupClickEvent();\r\n }\r\n },\r\n InputEvent: async () => {\r\n searchIng = true;\r\n clearTimeout(timeOutThread);\r\n timeOutThread = setTimeout(async () => {\r\n await UserSearch();\r\n searchIng = false;\r\n }, noWait ? 0 : 750);\r\n }\r\n });\r\n };\r\n\r\n this.InitSearch = function () {\r\n const createGroupBtn = document.getElementById(\"EChatCreateGroup\");\r\n createGroupBtn.removeEventListener(\"click\", createGroupClickEvent);\r\n createGroupBtn.addEventListener(\"click\", createGroupClickEvent);\r\n };\r\n};\r\n\r\nEChat.SubscribeController = function () {\r\n const _this = this;\r\n\r\n const createTableAlertElement = function (tableAlertInfo) {\r\n if (!tableAlertInfo) {\r\n return null;\r\n }\r\n\r\n const element = EC_Fmt.HtmlStrToElement(`
`);\r\n const topElement = EC_Fmt.HtmlStrToElement(\"
\");\r\n const alertNameElement = EC_Fmt.HtmlStrToElement(`${tableAlertInfo.Alert}`);\r\n\r\n let allCheck = false;\r\n let eChatCheck = false;\r\n let eMailCheck = false;\r\n let textCheck = false;\r\n\r\n if (Array.isArray(tableAlertInfo.DeliveryMethodList)) {\r\n if (tableAlertInfo.DeliveryMethodList.length > 0) {\r\n allCheck = true;\r\n for (let i = 0; i < tableAlertInfo.DeliveryMethodList.length; i++) {\r\n switch (tableAlertInfo.DeliveryMethodList[i]) {\r\n case EChat.DeliveryMethod.eChat:\r\n eChatCheck = true;\r\n break;\r\n case EChat.DeliveryMethod.Email:\r\n eMailCheck = true;\r\n break;\r\n case EChat.DeliveryMethod.TextMessage:\r\n textCheck = true;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n const switchButton = EChat.CustomComponent.SwichButton({\r\n id: `AlertSetting_${tableAlertInfo.AlertID}`,\r\n checked: allCheck,\r\n changeEvent(value) {\r\n if (parseInt(value) === 0) {\r\n subScribeAlert(value, tableAlertInfo.AlertID, `${EChat.DeliveryMethod.eChat.toString()},${EChat.DeliveryMethod.Email.toString()},${EChat.DeliveryMethod.TextMessage.toString()}`);\r\n eChatCheckBox.Close();\r\n eMailCheckBox.Close();\r\n textCheckBox.Close();\r\n }\r\n }\r\n }, topElement);\r\n\r\n topElement.append(alertNameElement);\r\n const bottomElement = EC_Fmt.HtmlStrToElement(\"
\");\r\n\r\n const checkCondition = function () {\r\n return switchButton.Checked();\r\n };\r\n\r\n const eChatCheckBox = EChat.CustomComponent.TextCheckBox({\r\n id: null,\r\n checked: eChatCheck,\r\n changeEvent(value) {\r\n subScribeAlert(value, tableAlertInfo.AlertID, EChat.DeliveryMethod.eChat);\r\n },\r\n checkCondition,\r\n text: EC_Fmt.Trn(\"eChat\")\r\n }, bottomElement);\r\n\r\n const eMailCheckBox = EChat.CustomComponent.TextCheckBox({\r\n id: null,\r\n checked: eMailCheck,\r\n changeEvent(value) {\r\n subScribeAlert(value, tableAlertInfo.AlertID, EChat.DeliveryMethod.Email);\r\n },\r\n checkCondition,\r\n text: EC_Fmt.Trn(\"Email\")\r\n }, bottomElement);\r\n\r\n const textCheckBox = EChat.CustomComponent.TextCheckBox({\r\n id: null,\r\n checked: textCheck,\r\n changeEvent(value) {\r\n subScribeAlert(value, tableAlertInfo.AlertID, EChat.DeliveryMethod.TextMessage);\r\n },\r\n checkCondition,\r\n text: EC_Fmt.Trn(\"Text\")\r\n }, bottomElement);\r\n\r\n element.append(topElement);\r\n element.append(bottomElement);\r\n return element;\r\n };\r\n\r\n const subScribeAlert = function (subScribeType, alertId, deliveryMethodStr) {\r\n EChat.DataProvider.subScribeAlert(subScribeType, alertId, deliveryMethodStr);\r\n };\r\n\r\n this.drawTableAlerts = function (tableAlertList) {\r\n this.subscribeListElement = EChat.Util.PreventScroll(document.querySelector(\"#EChatSubscribeList .eChat-List\"));\r\n if (Array.isArray(tableAlertList)) {\r\n tableAlertList.sort((a, b) => (b.DeliveryMethodList.length - a.DeliveryMethodList.length));\r\n for (let i = 0; i < tableAlertList.length; i++) {\r\n const SubscribeAlert = document.getElementById(`SubscribeAlertID_${tableAlertList[i].AlertID}`);\r\n if (SubscribeAlert) {\r\n SubscribeAlert.remove();\r\n }\r\n\r\n const targetElement = createTableAlertElement(tableAlertList[i]);\r\n if (targetElement) {\r\n _this.subscribeListElement.append(targetElement);\r\n }\r\n }\r\n }\r\n };\r\n};\r\n\r\nEChat.SettingsController = function () {\r\n const _this = this;\r\n const SettingType = {\r\n AudioAlert: \"AudioAlert\"\r\n };\r\n\r\n EChat.Util.PreventScroll(document.getElementById(\"EChatSettingsList\"));\r\n\r\n const initEChatAudioAlert = function () {\r\n const eChatAudioAlertElement = document.querySelector(\"#EChatAudioAlert input\");\r\n if (EChat.DataProvider.CurrentUserInfo.AudioAlert === 0) {\r\n eChatAudioAlertElement.checked = false;\r\n } else {\r\n eChatAudioAlertElement.checked = true;\r\n }\r\n\r\n eChatAudioAlertElement.addEventListener(\"change\", () => {\r\n if (eChatAudioAlertElement.checked) {\r\n _this.updateSettings(SettingType.AudioAlert, 1, false);\r\n } else {\r\n _this.updateSettings(SettingType.AudioAlert, 0, false);\r\n }\r\n });\r\n };\r\n\r\n this.updateSettings = function (settingType, settingValue, isFromLocalStorage) {\r\n settingValue = parseInt(settingValue);\r\n const eChatDataProvider = EChat.DataProvider;\r\n switch (settingType) {\r\n case SettingType.AudioAlert:\r\n eChatDataProvider.CurrentUserInfo.AudioAlert = settingValue;\r\n const checkBox = document.getElementById(\"EChatAlertCheckBox\");\r\n if (checkBox) {\r\n checkBox.checked = settingValue === 1;\r\n }\r\n\r\n if (!isFromLocalStorage) {\r\n const data = {\r\n AudioAlert: settingValue\r\n };\r\n EChat.DataProvider.api(\"SalesComm_EChatAudioSetting\", data).then(() => {\r\n EChat.IndexedDB.GetSetting(\"InitUser\").then((setting) => {\r\n if (setting) {\r\n setting.AudioAlert = settingValue;\r\n EChat.IndexedDB.UpdateSetting(\"InitUser\", setting, true);\r\n }\r\n });\r\n });\r\n }\r\n break;\r\n }\r\n };\r\n\r\n this.searchPanelKeyupEvent = function (e, searchObj) {\r\n const key = searchObj.value;\r\n const subscribeListDiv = document.querySelectorAll(\"#EChatSubscribeList .eChat-DataList\");\r\n if (subscribeListDiv.length === 0) {\r\n return;\r\n }\r\n let emptyDiv = document.getElementById(\"EChatSubEmptyMsg\");\r\n if (!emptyDiv) {\r\n emptyDiv = EC_Fmt.HtmlStrToElement(\"No Subscribe Found
\");\r\n document.getElementById(\"EChatSubscribeList\").append(emptyDiv);\r\n }\r\n let showEmpty = true;\r\n if (key !== \"\") {\r\n subscribeListDiv.forEach((dom) => {\r\n dom.style.display = \"none\";\r\n const nameSpans = dom.querySelectorAll(\".eChat-AlertTitle span\");\r\n let subScribeNameStr = \"\";\r\n if (nameSpans.length > 2) {\r\n subScribeNameStr = nameSpans[2].innerHTML.toLowerCase();\r\n }\r\n\r\n if (subScribeNameStr.indexOf(key.toLowerCase()) > -1) {\r\n dom.style.display = \"block\";\r\n showEmpty = false;\r\n }\r\n });\r\n } else {\r\n showEmpty = false;\r\n document.querySelectorAll(\"#EChatSubscribeList .eChat-DataList\").forEach((dom) => {\r\n dom.style.display = \"block\";\r\n });\r\n }\r\n if (showEmpty) {\r\n emptyDiv.style.display = \"block\";\r\n } else {\r\n emptyDiv.style.display = \"none\";\r\n }\r\n };\r\n\r\n const initEChatLoadingGif = function () {\r\n const pElement = EC_Fmt.HtmlStrToElement(\"
\");\r\n const EChatMainPage = document.getElementById(\"EChatMainPage\");\r\n if (EChatMainPage) {\r\n EChatMainPage.prepend(pElement);\r\n }\r\n };\r\n\r\n const initEChatUserAvatar = function () {\r\n document.getElementById(\"EChatUserName\").textContent = EChat.DataProvider.CurrentUserInfo.UserName;\r\n\r\n const UserIconDiv = document.getElementById(\"UserIconDiv\");\r\n UserIconDiv.classList.add(\"eChat-User-Img\");\r\n // Task 1108551: Editing eChat Group Image updates User image.\r\n EChat.CustomComponent.UserAvaterDisplay(UserIconDiv, EChat.DataProvider.CurrentUserInfo.UserAvatar, 1, 50, 50, true);\r\n };\r\n\r\n const initEChatDBButton = function () {\r\n document.getElementById(\"ClearDBButton\").addEventListener(\"click\", () => {\r\n EChat.MainPageController.ReloadEChatData(\"Clear Success\");\r\n });\r\n\r\n document.getElementById(\"ClearUnreadButton\").addEventListener(\"click\", () => {\r\n EChat.DataProvider.ReadAllGroup();\r\n });\r\n };\r\n initEChatLoadingGif();\r\n initEChatAudioAlert();\r\n initEChatUserAvatar();\r\n initEChatDBButton();\r\n};\r\n\r\nEChat.MessageWindowController = function () {\r\n const _this = this;\r\n // Data\r\n this.chatTabList = {};\r\n this.chatTabListCount = 0;\r\n this.currentTab = null;\r\n\r\n // View\r\n this.minimizeIsMoved = true;\r\n this.messageWindowViewType = null;\r\n this.minimizeTwinkle = false;\r\n this.isPublicSwitch = null;\r\n this.notifySwitch = null;\r\n // Task 947307: Ensuring that the eChat and Task Edit interface encourages users to create Public Task Details.\r\n this.notifyInternalSwitch = null;\r\n this.editPrompt = null;\r\n this.tabWidth = 150;\r\n\r\n const originalPoint = {\r\n Left: 0,\r\n Top: 0\r\n };\r\n\r\n this.getOriginalPoint = function () {\r\n return originalPoint;\r\n };\r\n\r\n this.element = null;\r\n let inputArea = null;\r\n let windowElement = null;\r\n let headerElement = null;\r\n let minimizeElement = null;\r\n let dialogElement = null;\r\n let sendElement = null;\r\n let handleElement = null;\r\n let resizeElement = null;\r\n let taskTitleElement = null;\r\n let searchElement = null;\r\n\r\n // Task 1133007: eChat: Unify the Insert/edit link function within Task Edit and eChat\r\n const createFloatLinkElement = function () {\r\n removeSearchElement();\r\n removeFloatFileElement();\r\n let element = null;\r\n if (sendElement) {\r\n // element = sendElement.querySelector(\".eChat-FloatLinkTool\");\r\n element = document.querySelector(\".eChat-FloatLinkTool\");\r\n }\r\n\r\n if (!element) {\r\n element = EC_Fmt.HtmlStrToElement(\"
\");\r\n const textInput = EC_Fmt.HtmlStrToElement(\"
Text to display
\");\r\n if (inputArea) {\r\n const tmpText = inputArea.getSelectValue();\r\n if (typeof tmpText === \"string\" && tmpText) {\r\n textInput.querySelector(\".link-display\").value = tmpText;\r\n textInput.querySelector(\".link-display\").setAttribute(\"id\", \"haveValue\");\r\n }\r\n }\r\n // Task 1133007: eChat: Unify the Insert/edit link function within Task Edit and eChat\r\n const topDiv = EC_Fmt.HtmlStrToElement(\"
Insert link\");\r\n\r\n const centreDiv = EC_Fmt.HtmlStrToElement(\"
\");\r\n centreDiv.append(EC_Fmt.HtmlStrToElement(\"
Url
\"));\r\n centreDiv.append(textInput);\r\n centreDiv.append(EC_Fmt.HtmlStrToElement(\"
Title
\"));\r\n centreDiv.append(EC_Fmt.HtmlStrToElement(\"
Target
\"));\r\n\r\n const bottomDiv = EC_Fmt.HtmlStrToElement(\"
\");\r\n const cancelButton = EC_Fmt.HtmlStrToElement(\"Cancel\");\r\n const okButton = EC_Fmt.HtmlStrToElement(\"OK\");\r\n\r\n // Task 1133007: eChat: Unify the Insert/edit link function within Task Edit and eChat\r\n cancelButton.addEventListener(\"click\", () => {\r\n removeFloatLinkElement();\r\n });\r\n document.addEventListener(\"keydown\", (e) => {\r\n if (e.keyCode === 27) {\r\n removeFloatLinkElement();\r\n } else if (e.keyCode === 13) {\r\n calculateFloatLinkElement();\r\n e.preventDefault();\r\n }\r\n });\r\n // Task 1133007: eChat: Unify the Insert/edit link function within Task Edit and eChat\r\n okButton.addEventListener(\"click\", (e) => {\r\n calculateFloatLinkElement();\r\n e.stopPropagation();\r\n });\r\n\r\n bottomDiv.append(cancelButton);\r\n bottomDiv.append(okButton);\r\n\r\n element.append(topDiv);\r\n element.append(centreDiv);\r\n element.append(bottomDiv);\r\n\r\n element.addEventListener(\"click\", (e) => {\r\n e.stopPropagation();\r\n });\r\n }\r\n return element;\r\n };\r\n\r\n // Task 1133007: eChat: Unify the Insert/edit link function within Task Edit and eChat\r\n const calculateFloatLinkElement = function () {\r\n let linkUrl = document.querySelector(\".link-url\").value;\r\n const linkDisplay = document.querySelector(\".link-display\").value;\r\n const linkTitle = document.querySelector(\".link-title\").value;\r\n const linkTarger = document.querySelector(\".link-targer\").value;\r\n\r\n if (EC_Fmt.isNull(linkUrl)) {\r\n removeFloatLinkElement();\r\n return;\r\n }\r\n if (linkUrl) {\r\n const urlRegex = \"^(http|ftp|https)\\\\:\\\\/\\\\/\";\r\n const reg = new RegExp(urlRegex, \"i\");\r\n if (!reg.test(linkUrl)) {\r\n linkUrl = `https://${linkUrl}`;\r\n }\r\n const linkText = document.querySelector(\".link-display\");\r\n if (linkText.id === \"haveValue\") {\r\n if (linkTarger === \"NewWindow\") {\r\n inputArea.replaceLinkNew(linkDisplay, linkUrl, linkTitle);\r\n } else if (linkTarger === \"None\") {\r\n inputArea.replaceLink(linkDisplay, linkUrl, linkTitle);\r\n }\r\n } else if (linkTarger === \"NewWindow\") {\r\n inputArea.insertLinkNew(linkDisplay, linkUrl, linkTitle);\r\n } else if (linkTarger === \"None\") {\r\n inputArea.insertLink(linkDisplay, linkUrl, linkTitle);\r\n }\r\n }\r\n _this.currentTab.PreMessage = inputArea.getValue();\r\n removeFloatLinkElement();\r\n };\r\n\r\n const removeFloatLinkElement = function () {\r\n if (sendElement) {\r\n // Task 1133007: eChat: Unify the Insert/edit link function within Task Edit and eChat\r\n // const element = sendElement.querySelector(\".eChat-FloatLinkTool\");\r\n const element = document.querySelector(\".eChat-FloatLinkTool\");\r\n if (element) {\r\n element.remove();\r\n }\r\n }\r\n };\r\n\r\n // dialog for set send time\r\n const createDelayedSendTimeElement = function () {\r\n removeSearchElement();\r\n removeFloatLinkElement();\r\n removeFloatFileElement();\r\n removeSearchDisplayElement();\r\n removeDelayedSendTimeElement();\r\n const element = EC_Fmt.HtmlStrToElement(\"
\");\r\n // Task 1149732: Update 'eChat' page to new button component\r\n const table = EC_Fmt.HtmlStrToElement(\"
\");\r\n const dateTimehtml = document.createElement(\"TD\");\r\n // Task 1147400: DSDLink: eChat in the new Mobile Framework(echat Dashboard)\r\n dateTimehtml.append(EC_Fmt.HtmlStrToElement(ECP.HTML.DateTimeInput(\"echat_DelayedTime\", \"echat_DelayedTime\", true, Date(), \"Date\", \"\", \"\")));\r\n dateTimehtml.setAttribute(\"width\", \"157\");\r\n\r\n const delayTip = function (e) {\r\n const echat_DelayedTime_Display = document.getElementById(\"echat_DelayedTime_Display\");\r\n if (echat_DelayedTime_Display) {\r\n const DelayedTime = echat_DelayedTime_Display.value;\r\n if (!EC_Fmt.isNull(DelayedTime)) {\r\n const DisplaySendMessage = document.getElementById(\"DisplaySendMessage\");\r\n DisplaySendMessage.innerHTML = `Message will send at ${DelayedTime}`;\r\n }\r\n }\r\n e.stopPropagation();\r\n };\r\n const display = dateTimehtml.querySelector(\"#echat_DelayedTime\");\r\n if (display) {\r\n display.addEventListener(\"blur\", delayTip);\r\n display.addEventListener(\"focus\", delayTip);\r\n }\r\n // Task 1149732: Update 'eChat' page to new button component\r\n const Delaybutton = EC_Fmt.HtmlStrToElement(\"\");\r\n // const delayInput = EC_Fmt.HtmlStrToElement(\"\");\r\n const delayInput = EC_Fmt.HtmlStrToElement(\"OK\");\r\n delayInput.addEventListener(\"click\", (e) => {\r\n // Task 1132060: echat: Future Send is not working\r\n const displayDom = dateTimehtml.querySelector(\"#echat_DelayedTime\");\r\n if (displayDom && !EC_Fmt.isNull(displayDom.value)) {\r\n sendingMessage();\r\n }\r\n removeDelayedSendTimeElement();\r\n e.stopPropagation();\r\n });\r\n Delaybutton.append(delayInput);\r\n\r\n const tableTr = table.querySelector(\"tr\");\r\n tableTr.append(dateTimehtml);\r\n tableTr.append(Delaybutton);\r\n const delayTipDiv = EC_Fmt.HtmlStrToElement(\"
\");\r\n element.append(table);\r\n element.append(delayTipDiv);\r\n element.addEventListener(\"click\", (e) => {\r\n e.stopPropagation();\r\n });\r\n return element;\r\n };\r\n\r\n const removeDelayedSendTimeElement = function () {\r\n if (sendElement) {\r\n const element = sendElement.querySelector(\".eChat-SetTimeTool\");\r\n if (element) {\r\n element.remove();\r\n }\r\n }\r\n };\r\n\r\n const removeFloatFileElement = function () {\r\n if (sendElement) {\r\n const element = sendElement.querySelector(\".eChat-FloatFileTool\");\r\n if (element) {\r\n element.remove();\r\n }\r\n }\r\n };\r\n\r\n const uploadFiles = function (files) {\r\n const Tab = _this.currentTab;\r\n let MessageGroupID = Tab.GroupInfo.MessageGroupID;\r\n if (Tab.GroupInfo.GroupType === SocketUtil.GroupType.Task) {\r\n MessageGroupID = MessageGroupID.split(\"_\")[0];\r\n }\r\n\r\n let isPublic = false;\r\n if (_this.isPublicSwitch && _this.isPublicSwitch.Checked()) {\r\n isPublic = true;\r\n }\r\n\r\n let Notify = true;\r\n if (_this.notifySwitch && !_this.notifySwitch.Checked()) {\r\n Notify = false;\r\n }\r\n\r\n // Task 947307: Ensuring that the eChat and Task Edit interface encourages users to create Public Task Details.\r\n let NotifyInternal = true;\r\n if (_this.notifyInternalSwitch && !_this.notifyInternalSwitch.Checked()) {\r\n NotifyInternal = false;\r\n }\r\n\r\n for (let i = 0; i < files.length; i++) {\r\n const fileObj = files[i];\r\n const tipDom = document.createElement(\"DIV\");\r\n tipDom.textContent = `Uploading File: ${fileObj.name}`;\r\n Tab.AddTipElement(tipDom);\r\n const chatBoxElement = document.getElementById(`chatBox_${Tab.ID}`);\r\n if (chatBoxElement) {\r\n chatBoxElement.scrollTop = chatBoxElement.scrollHeight;\r\n }\r\n\r\n EChat.DataProvider.SendMessage({\r\n messageGroupID: MessageGroupID,\r\n messageMark: EChat.Util.getTimeStamp(),\r\n messageBody: \"\",\r\n imgData: fileObj,\r\n taskID: Tab.GroupInfo.TaskID,\r\n isPublic,\r\n notify: Notify,\r\n taskSourceEncompassID: Tab.GroupInfo.EncompassID,\r\n notifyInternal: NotifyInternal\r\n }).then((msgObj) => {\r\n EChat.MainPageController.currentMessageWindow.receiveNewMessage(msgObj, Tab.GroupInfo.MessageGroupID);\r\n }).catch(() => {\r\n const tipDivDom = document.createElement(\"DIV\");\r\n tipDivDom.textContent = `Upload failed: ${fileObj.name}`;\r\n Tab.AddTipElement(tipDivDom);\r\n });\r\n }\r\n };\r\n const createFloatFileElement = function () {\r\n removeSearchElement();\r\n removeFloatLinkElement();\r\n let element = null;\r\n if (sendElement) {\r\n element = sendElement.querySelector(\".eChat-FloatFileTool\");\r\n }\r\n if (!element) {\r\n element = EC_Fmt.HtmlStrToElement(\"
\");\r\n const div = document.createElement(\"DIV\");\r\n div.setAttribute(\"style\", \"display:flex;\");\r\n const BrowseBtn = EC_Fmt.HtmlStrToElement(\"Browse\");\r\n BrowseBtn.addEventListener(\"click\", () => {\r\n windowElement.querySelector(\"#EChat_File_Input\").click();\r\n });\r\n div.append(BrowseBtn);\r\n div.append(EC_Fmt.HtmlStrToElement(\"\"));\r\n const EChat_File_Input = EC_Fmt.HtmlStrToElement(\"\");\r\n EChat_File_Input.addEventListener(\"change\", () => {\r\n const files = windowElement.querySelector(\"#EChat_File_Input\").files;\r\n let FileName_Input = \"\";\r\n for (let i = 0; i < files.length; i++) {\r\n const fileObj = files[i];\r\n if (i > 0) {\r\n FileName_Input += \", \";\r\n }\r\n FileName_Input += fileObj.name;\r\n }\r\n windowElement.querySelector(\"#EChat_FileName_Input\").value = FileName_Input;\r\n });\r\n div.append(EChat_File_Input);\r\n const sendBtn = EC_Fmt.HtmlStrToElement(\"Send\");\r\n sendBtn.addEventListener(\"click\", (e) => {\r\n const files = windowElement.querySelector(\"#EChat_File_Input\").files;\r\n uploadFiles(files);\r\n removeFloatFileElement();\r\n e.stopPropagation();\r\n });\r\n div.append(sendBtn);\r\n element.append(div);\r\n element.append(EC_Fmt.HtmlStrToElement(\"\"));\r\n element.addEventListener(\"click\", (e) => {\r\n e.stopPropagation();\r\n });\r\n }\r\n return element;\r\n };\r\n\r\n const createSearchElement = function () {\r\n removeFloatLinkElement();\r\n\r\n const rangeElement = EC_Fmt.HtmlStrToElement(\"\");\r\n rangeElement.append(EC_Fmt.HtmlStrToElement(\"\"));\r\n rangeElement.append(EC_Fmt.HtmlStrToElement(\"\"));\r\n rangeElement.append(EC_Fmt.HtmlStrToElement(\"\"));\r\n rangeElement.append(EC_Fmt.HtmlStrToElement(\"\"));\r\n rangeElement.addEventListener(\"change\", function () {\r\n _this.currentTab.SearchInfo.SearchDate = this.value;\r\n });\r\n\r\n const element = EC_Fmt.HtmlStrToElement(\"
\");\r\n\r\n const searchBtnClickEvent = function () {\r\n const inputEle = element.querySelector(\"input\");\r\n let inputValue = \"\";\r\n if (inputEle) {\r\n inputValue = inputEle.value;\r\n }\r\n\r\n if (inputValue) {\r\n inputValue = EC_Fmt.HtmlStrToElement(`
${inputValue}
`).innerHTML;\r\n dialogElement.append(createSearchDisplayElment());\r\n EChat.Util.ShowLoading(dialogElement);\r\n const selectValue = element.querySelector(\"select\").value;\r\n if (_this.currentTab) {\r\n _this.currentTab.SearchInfo.SearchDate = selectValue;\r\n _this.currentTab.SearchInfo.Search = true;\r\n }\r\n const groupId = _this.currentTab.GroupInfo.MessageGroupID;\r\n let promiss;\r\n\r\n if (_this.currentTab.GroupInfo.GroupType === SocketUtil.GroupType.Task) {\r\n promiss = SocketUtil.api(\"SearchTaskDetail\", { TaskID: _this.currentTab.GroupInfo.TaskID, SearchValue: inputValue, DateRange: selectValue });\r\n } else {\r\n promiss = SocketUtil.api(\"SearchMessages2006\", { MessageGroupID: groupId, SearchValue: inputValue, DateRange: selectValue });\r\n }\r\n\r\n promiss.then((result) => {\r\n ECP.Dialog.HideLoading();\r\n displaySearchMessageList(result.Messages, inputValue);\r\n }).catch(() => {\r\n ECP.Dialog.HideLoading();\r\n if (dialogElement) {\r\n const display = dialogElement.querySelector(\".eChat-SearchDisplay\");\r\n if (display) {\r\n display.append(EC_Fmt.HtmlStrToElement(\"
Search Error
\"));\r\n }\r\n }\r\n });\r\n }\r\n };\r\n const div = EC_Fmt.HtmlStrToElement(\"
\");\r\n div.append(EC_Fmt.HtmlStrToElement(\"Search\"));\r\n const SearchItem = EC_Fmt.HtmlStrToElement(\"\");\r\n SearchItem.addEventListener(\"keyup\", function (e) {\r\n if (e.keyCode === 13) {\r\n searchBtnClickEvent();\r\n } else if (_this.currentTab) {\r\n _this.currentTab.SearchInfo.SearchText = this.value;\r\n }\r\n });\r\n\r\n div.append(SearchItem);\r\n\r\n div.append(rangeElement);\r\n\r\n const SearchButton = EC_Fmt.HtmlStrToElement(\"Search\");\r\n SearchButton.addEventListener(\"click\", (e) => {\r\n searchBtnClickEvent();\r\n e.stopPropagation();\r\n });\r\n div.append(SearchButton);\r\n\r\n const BackButton = EC_Fmt.HtmlStrToElement(\"Back\");\r\n BackButton.addEventListener(\"click\", (e) => {\r\n removeSearchElement();\r\n e.stopPropagation();\r\n });\r\n\r\n div.append(BackButton);\r\n element.append(div);\r\n element.addEventListener(\"click\", (e) => {\r\n e.stopPropagation();\r\n });\r\n return element;\r\n };\r\n\r\n const removeSearchElement = function () {\r\n if (searchElement) {\r\n searchElement.innerHTML = \"\";\r\n removeSearchDisplayElement();\r\n }\r\n\r\n if (_this.currentTab) {\r\n _this.currentTab.SearchInfo = null;\r\n }\r\n _this.resizeDialog();\r\n };\r\n\r\n const createSearchDisplayElment = function () {\r\n let element = dialogElement.querySelector(\".eChat-SearchDisplay\");\r\n if (!element) {\r\n element = EC_Fmt.HtmlStrToElement(\"
\");\r\n EChat.Util.PreventScroll(element);\r\n }\r\n return element;\r\n };\r\n\r\n const removeSearchDisplayElement = function () {\r\n if (dialogElement) {\r\n const element = dialogElement.querySelector(\".eChat-SearchDisplay\");\r\n if (element) {\r\n element.remove();\r\n }\r\n }\r\n };\r\n\r\n const displaySearchMessageList = function (messageList, inputValue) {\r\n if (dialogElement) {\r\n const element = dialogElement.querySelector(\".eChat-SearchDisplay\");\r\n if (element) {\r\n element.innerHTML = \"\";\r\n if (messageList.length > 0) {\r\n for (let i = messageList.length - 1; i >= 0; i--) {\r\n const item = messageList[i];\r\n item.Message = item.Message.replace(new RegExp(`(?![^<]*>)(${inputValue})`, \"gi\"), txt => `${txt}`);\r\n displaySearchMessageItem(element, item);\r\n }\r\n element.scrollTop = element.scrollHeight;\r\n } else {\r\n element.append(EC_Fmt.HtmlStrToElement(\"
Message Not Found
\"));\r\n }\r\n }\r\n }\r\n };\r\n\r\n const displaySearchMessageItem = function (targetElement, msgObj) {\r\n const eChatDataProvider = EChat.DataProvider;\r\n if (msgObj.Message) {\r\n let senderName;\r\n if (eChatDataProvider.IsCurrentUser(msgObj.SenderAuthenticationID)) {\r\n senderName = eChatDataProvider.CurrentUserInfo.FullName;\r\n } else {\r\n senderName = msgObj.SenderFullName;\r\n }\r\n let itemElement;\r\n let msgElement;\r\n let headImgElement;\r\n const spaceElement = document.createElement(\"SPAN\");\r\n spaceElement.classList.add(\"eChatAbsolute\");\r\n spaceElement.classList.add(\"ArrHead\");\r\n const senderNameElement = EC_Fmt.HtmlStrToElement(`
${senderName}
`);\r\n const textElement = document.createElement(\"DIV\");\r\n textElement.classList.add(\"Left\");\r\n textElement.classList.add(\"DialogBubbleHead\");\r\n if (senderName !== eChatDataProvider.CurrentUserInfo.FullName) {\r\n itemElement = EC_Fmt.HtmlStrToElement(`
`);\r\n msgElement = EC_Fmt.HtmlStrToElement(\"
\");\r\n senderNameElement.classList.add(\"MemberName\");\r\n if (msgObj.SenderAuthenticationID !== -1) {\r\n headImgElement = EC_Fmt.HtmlStrToElement(\"\");\r\n } else {\r\n headImgElement = EC_Fmt.HtmlStrToElement(\"\");\r\n }\r\n } else {\r\n itemElement = EC_Fmt.HtmlStrToElement(`
`);\r\n msgElement = EC_Fmt.HtmlStrToElement(\"
\");\r\n headImgElement = EC_Fmt.HtmlStrToElement(\"\");\r\n senderNameElement.classList.add(\"MemberNameRight\");\r\n }\r\n if (msgObj.SenderUserAvatar) {\r\n headImgElement.setAttribute(\"src\", msgObj.SenderUserAvatar);\r\n } else {\r\n headImgElement.setAttribute(\"src\", EChat.Setting.DefaultUserIcon);\r\n }\r\n\r\n if (!eChatDataProvider.IsCurrentUser(msgObj.SenderAuthenticationID)) {\r\n headImgElement.addEventListener(\"click\", () => {\r\n headImgClickEvent(msgObj.SenderAuthenticationID, userMemberCount);\r\n });\r\n }\r\n\r\n if (msgObj.SenderAuthenticationID <= 0) {\r\n headImgElement.style.cursor = \"default\";\r\n }\r\n\r\n const pElement = EC_Fmt.HtmlStrToElement(`

`);\r\n\r\n // Task:208316 Task Edit: eChat messages sent from Task Edit do not display the Return Characters.when the message is first displayed. Very ugly to read in eChat\r\n msgObj.Message = msgObj.Message.replace(/\\n/g, \"
\");\r\n pElement.append(EC_Fmt.HtmlStrToElement(`
${msgObj.Message}
`));\r\n EChat.Util.FileLoad(pElement, targetElement, msgObj.SenderAuthenticationID, 423, 200);\r\n EChat.Util.CopyFormat(pElement);\r\n\r\n textElement.append(pElement);\r\n\r\n msgElement.append(headImgElement);\r\n msgElement.append(spaceElement);\r\n\r\n if (parseInt(msgObj.SenderAuthenticationID) !== -1) {\r\n msgElement.append(senderNameElement);\r\n msgElement.append(document.createElement(\"DIV\"));\r\n } else {\r\n msgElement.append(senderNameElement);\r\n }\r\n\r\n const message_flex = EC_Fmt.HtmlStrToElement(`
`);\r\n message_flex.append(textElement);\r\n msgElement.append(message_flex);\r\n itemElement.append(msgElement);\r\n const timeElement = EC_Fmt.HtmlStrToElement(`
${EChat.Util.longToDataTime(msgObj.TimeCreated)}
`);\r\n targetElement.append(timeElement);\r\n targetElement.append(itemElement);\r\n }\r\n };\r\n\r\n this.createMessageWindow = function () {\r\n // Task 1160492: Changing title attributes on icon-only buttons to use tooltip instead\r\n windowElement = EC_Fmt.HtmlStrToElement(\"
\");\r\n headerElement = EC_Fmt.HtmlStrToElement(\"
\");\r\n minimizeElement = EC_Fmt.HtmlStrToElement(\"
\");\r\n dialogElement = EC_Fmt.HtmlStrToElement(\"
\");\r\n sendElement = EC_Fmt.HtmlStrToElement(\"
\");\r\n taskTitleElement = EC_Fmt.HtmlStrToElement(\"
\");\r\n searchElement = EC_Fmt.HtmlStrToElement(\"
\");\r\n handleElement = EC_Fmt.HtmlStrToElement(\"
\");\r\n resizeElement = EC_Fmt.HtmlStrToElement(\"
\");\r\n\r\n const Number = document.querySelectorAll(\"#eChatMessageWindow\").length;\r\n\r\n // Task 1074079:eChat: Close window buttons do not use the standard UI Kit\r\n // Task 1149732: Update 'eChat' page to new button component\r\n const closeBtn = EC_Fmt.HtmlStrToElement(`
`);\r\n\r\n const closeEvent = (e) => {\r\n if (e.button === 0) {\r\n _this.closeMessageWindow();\r\n e.stopPropagation();\r\n }\r\n };\r\n\r\n closeBtn.addEventListener(\"click\", closeEvent);\r\n closeBtn.addEventListener(\"mousedown\", closeEvent);\r\n\r\n // Task 1149732: Update 'eChat' page to new button component\r\n // Task 1160492: Changing title attributes on icon-only buttons to use tooltip instead\r\n const miniziseBtn = EC_Fmt.HtmlStrToElement(`
`);\r\n const miniziseEvent = (e) => {\r\n if (e.button === 0) {\r\n const tmpPoint = EChat.Util.getElementPosition(windowElement);\r\n originalPoint.Left = tmpPoint.Left;\r\n originalPoint.Top = tmpPoint.Top;\r\n _this.minimizeView();\r\n minimizeMessageWindow();\r\n e.stopPropagation();\r\n }\r\n };\r\n miniziseBtn.addEventListener(\"click\", miniziseEvent);\r\n miniziseBtn.addEventListener(\"mousedown\", miniziseEvent);\r\n\r\n // Task 1149732: Update 'eChat' page to new button component\r\n // Task 1160492: Changing title attributes on icon-only buttons to use tooltip instead\r\n const openDashboardBtn = EC_Fmt.HtmlStrToElement(`
`);\r\n openDashboardBtn.addEventListener(\"click\", () => {\r\n EChat.FullWindowController.SwichWindow();\r\n });\r\n\r\n headerElement.append(closeBtn);\r\n headerElement.append(openDashboardBtn);\r\n headerElement.append(miniziseBtn);\r\n headerElement.addEventListener(\"click\", (e) => {\r\n if (EChat.eChatMoving) {\r\n EChat.eChatMoving = false;\r\n }\r\n e.stopPropagation();\r\n });\r\n\r\n // Task 1074079:eChat: Close window buttons do not use the standard UI Kit\r\n const displayText = EC_Fmt.HtmlStrToElement(\"\");\r\n const minimizeCloseBtn = EC_Fmt.HtmlStrToElement(\"
\");\r\n const CloseButton = EC_Fmt.HtmlStrToElement(\"
\");\r\n minimizeCloseBtn.append(CloseButton);\r\n minimizeCloseBtn.addEventListener(\"click\", (e) => {\r\n _this.closeMessageWindow();\r\n e.stopPropagation();\r\n });\r\n minimizeElement.addEventListener(\"click\", (e) => {\r\n if (EChat.eChatMoving) {\r\n EChat.eChatMoving = false;\r\n } else {\r\n openView();\r\n }\r\n e.stopPropagation();\r\n });\r\n minimizeElement.append(displayText);\r\n minimizeElement.append(minimizeCloseBtn);\r\n\r\n // todo sendElement\r\n const textAreaDiv = document.createElement(\"DIV\");\r\n textAreaDiv.classList.add(\"echat-small-text-area\");\r\n\r\n // todo inputTool\r\n const inputTool = EC_Fmt.HtmlStrToElement(\"
\");\r\n // Task 1149732: Update 'eChat' page to new button component\r\n // const linkTool = EC_Fmt.HtmlStrToElement(\"\");\r\n // Task 1160492: Changing title attributes on icon-only buttons to use tooltip instead\r\n const linkTool = EC_Fmt.HtmlStrToElement(``);\r\n linkTool.addEventListener(\"click\", (e) => {\r\n const linkElement = createFloatLinkElement();\r\n // Task 1133007: eChat: Unify the Insert/edit link function within Task Edit and eChat\r\n // windowElement.querySelector(\".eChat-MessageWindowInputTool\").append(linkElement);\r\n document.querySelector(\"body\").append(linkElement);\r\n\r\n // Task 1133007: eChat: Unify the Insert/edit link function within Task Edit and eChat\r\n const linkDisplayValue = document.querySelector(\".link-display\").value;\r\n if (EC_Fmt.isNull(linkDisplayValue)) {\r\n const linkUrlKey = document.querySelector(\".link-url\");\r\n linkUrlKey.addEventListener(\"keyup\", () => {\r\n document.querySelector(\".link-display\").value = document.querySelector(\".link-url\").value;\r\n });\r\n }\r\n\r\n EChat.Util.SetWindowLocation(linkElement);\r\n\r\n EChat.Util.dragDialog({\r\n dialog: document.querySelector(\".eChat-FloatLinkTool\"),\r\n handle: document.querySelector(\".top-div\"),\r\n handleWidthFix: 0,\r\n handleHeightFix: 0,\r\n start(dom) {\r\n dom.style.zIndex = EChat.Util.draggableZIndex();\r\n },\r\n stop(dom) {\r\n dom.style.height = \"auto\";\r\n }\r\n });\r\n\r\n const temInput = linkElement.querySelector(\"input\");\r\n if (temInput) {\r\n temInput.focus();\r\n }\r\n windowElement.style.zIndex = EChat.Util.draggableZIndex();\r\n e.stopPropagation();\r\n });\r\n\r\n // Task 1149732: Update 'eChat' page to new button component\r\n // const clearFmtTool = EC_Fmt.HtmlStrToElement(\"
\");\r\n // Task 1160492: Changing title attributes on icon-only buttons to use tooltip instead\r\n const clearFmtTool = EC_Fmt.HtmlStrToElement(``);\r\n clearFmtTool.addEventListener(\"click\", (e) => {\r\n removeFloatLinkElement();\r\n removeFloatFileElement();\r\n removeSearchElement();\r\n inputArea.clearSelectFmt();\r\n _this.updateCharaterCounter();\r\n _this.currentTab.PreMessage = inputArea.getValue();\r\n windowElement.style.zIndex = EChat.Util.draggableZIndex();\r\n e.stopPropagation();\r\n });\r\n\r\n // Task 1149732: Update 'eChat' page to new button component\r\n // Task 1160492: Changing title attributes on icon-only buttons to use tooltip instead\r\n const openEChatTool = EC_Fmt.HtmlStrToElement(``);\r\n openEChatTool.addEventListener(\"click\", async (e) => {\r\n if (_this.currentTab.GroupInfo.GroupType === SocketUtil.GroupType.Task) {\r\n try {\r\n const messageGroupID = await EChat.DataProvider.GetTaskPublicMessageGroupID(_this.currentTab.GroupInfo.MessageGroupID);\r\n const groupInfo = await EChat.DataProvider.GetGroupInfoByGroupID(messageGroupID);\r\n EChat.MainPageController.getMessageWindow(groupInfo.MessageGroupID).addRecentTab(groupInfo, true);\r\n } catch (ex) {\r\n EChat.Util.errorAlert(ex);\r\n }\r\n }\r\n e.stopPropagation();\r\n });\r\n\r\n // Task 1149732: Update 'eChat' page to new button component\r\n // Task 1160492: Changing title attributes on icon-only buttons to use tooltip instead\r\n const searchTool = EC_Fmt.HtmlStrToElement(``);\r\n searchTool.addEventListener(\"click\", () => {\r\n removeSearchElement();\r\n searchElement.append(createSearchElement());\r\n const temInput = searchElement.querySelector(\"input\");\r\n if (temInput) {\r\n temInput.focus();\r\n }\r\n if (_this.currentTab) {\r\n _this.currentTab.SearchInfo = {\r\n Search: false,\r\n SearchDate: \"7\",\r\n SearchText: \"\"\r\n };\r\n _this.resizeDialog();\r\n _this.currentTab.scrollToBotton();\r\n }\r\n\r\n windowElement.style.zIndex = EChat.Util.draggableZIndex();\r\n });\r\n\r\n // Task 1149732: Update 'eChat' page to new button component\r\n // const copyTool = EC_Fmt.HtmlStrToElement(\"
\");\r\n // Task 1160492: Changing title attributes on icon-only buttons to use tooltip instead\r\n const copyTool = EC_Fmt.HtmlStrToElement(``);\r\n copyTool.addEventListener(\"click\", (e) => {\r\n EChat.CopyMessageController.ShowCopyMessageDialog(_this.currentTab.GroupInfo.MessageGroupID, \"CopyToSpecifiedTask\", (MessageIDStr) => {\r\n const TaskID = document.getElementById(\"EChat_CopyTaskID_InputHidden\").value;\r\n if (MessageIDStr) {\r\n if (TaskID) {\r\n EChat.DataProvider.SaveEChatMessageToTaskDetail(_this.currentTab.GroupInfo.MessageGroupID, TaskID, MessageIDStr).then(() => {\r\n EChat.CopyMessageController.ClearCopyMessageDialog();\r\n ECP.Dialog.Alert(\"Copy Succesfully!\");\r\n });\r\n } else if (Distributor.indexOf(\"Support\") === 0) {\r\n EChat.Util.ShowLoading(\"All\");\r\n EChat.DataProvider.CreateTask().then((data) => {\r\n if (data?.TaskID) {\r\n EChat.DataProvider.SaveEChatMessageToTaskDetail(_this.currentTab.GroupInfo.MessageGroupID, data.TaskID, MessageIDStr).then(() => {\r\n const url = `Home?DashboardID=${ECP.CommonDashboards.TaskEdit}&Action=Add&TableEdit=TaskDetails&&FieldName=TaskID&FieldValue=${data.TaskID}&CurValue=${data.TaskID}&TableName=Tasks&SubTableJoinID=TaskDetails_Tasks&Search=TaskID~${data.TaskID}`;\r\n EWS.HideLoading();\r\n window.open(url);\r\n EChat.CopyMessageController.ClearCopyMessageDialog();\r\n }).catch(EChat.Util.errorAlert);\r\n } else {\r\n EWS.HideLoading();\r\n }\r\n }).catch(EChat.Util.errorAlert);\r\n }\r\n }\r\n });\r\n e.stopPropagation();\r\n });\r\n\r\n // Task 1149732: Update 'eChat' page to new button component\r\n // const sendDelay = EC_Fmt.HtmlStrToElement(\"
\");\r\n // Task 1160492: Changing title attributes on icon-only buttons to use tooltip instead\r\n const sendDelay = EC_Fmt.HtmlStrToElement(``);\r\n sendDelay.addEventListener(\"click\", (e) => {\r\n if (inputArea.processImgData().htmlString) {\r\n const DelayDataElement = createDelayedSendTimeElement();\r\n windowElement.querySelector(\".echat-small-text-area\").append(DelayDataElement);\r\n e.stopPropagation();\r\n } else {\r\n ECP.Dialog.Alert(\"Please enter message before setting delay time.\");\r\n }\r\n windowElement.style.zIndex = EChat.Util.draggableZIndex();\r\n });\r\n\r\n // Task 1149732: Update 'eChat' page to new button component\r\n // const fileTool = EC_Fmt.HtmlStrToElement(\"
\");\r\n // Task 1160492: Changing title attributes on icon-only buttons to use tooltip instead\r\n const fileTool = EC_Fmt.HtmlStrToElement(``);\r\n fileTool.addEventListener(\"click\", (e) => {\r\n const imageElement = createFloatFileElement();\r\n windowElement.querySelector(\".echat-small-text-area\").append(imageElement);\r\n e.stopPropagation();\r\n windowElement.style.zIndex = EChat.Util.draggableZIndex();\r\n });\r\n\r\n // Task 1149732: Update 'eChat' page to new button component\r\n // _this.editPrompt = EC_Fmt.HtmlStrToElement(\"
\");\r\n // Task 1160492: Changing title attributes on icon-only buttons to use tooltip instead\r\n _this.editPrompt = EC_Fmt.HtmlStrToElement(``);\r\n _this.editPrompt.addEventListener(\"click\", (e) => {\r\n let editMessageGroupID = null;\r\n let editTaskID = null;\r\n if (_this.currentTab.GroupInfo.GroupType === SocketUtil.GroupType.Task) {\r\n editTaskID = _this.currentTab.GroupInfo.TaskID;\r\n } else {\r\n editMessageGroupID = _this.currentTab.GroupInfo.MessageGroupID;\r\n }\r\n EChat.DataProvider.editGroupPromptType({ groupID: editMessageGroupID, taskID: editTaskID }).then((prompt) => {\r\n _this.currentTab.GroupInfo.Prompt = prompt;\r\n }).catch(EChat.Util.errorAlert);\r\n e.stopPropagation();\r\n windowElement.style.zIndex = EChat.Util.draggableZIndex();\r\n });\r\n\r\n const createTask = EC_Fmt.HtmlStrToElement(\"
\");\r\n createTask.addEventListener(\"click\", (e) => {\r\n EChat.DataProvider.GetGroupInfoByGroupID(_this.currentTab.GroupInfo.MessageGroupID).then((groupInfo) => {\r\n EChat.TaskController.AddTask(groupInfo).then((newMessageGroupID) => {\r\n EChat.Util.ShowLoading(\"All\");\r\n EChat.DataProvider.GetGroupInfoByGroupID(newMessageGroupID).then((taskGroup) => {\r\n if (taskGroup) {\r\n EChat.MainPageController.getMessageWindow(taskGroup.MessageGroupID).addRecentTab(taskGroup, true);\r\n ECP.Dialog.HideLoading();\r\n } else {\r\n EChat.Util.errorAlert(\"The task was created successfully, but failed to open.\");\r\n }\r\n }).catch(EChat.Util.errorAlert);\r\n }).catch(EChat.Util.errorAlert);\r\n }).catch(EChat.Util.errorAlert);\r\n\r\n e.stopPropagation();\r\n });\r\n\r\n const publicDiv = EC_Fmt.HtmlStrToElement(\"
\");\r\n publicDiv.append(EC_Fmt.HtmlStrToElement(\"Is Public\"));\r\n\r\n _this.isPublicSwitch = EChat.CustomComponent.SwichButton({\r\n id: \"EChatIsPublic\",\r\n checked: true,\r\n changeEvent() {\r\n }\r\n }, publicDiv);\r\n\r\n const notifyDiv = EC_Fmt.HtmlStrToElement(\"
\");\r\n notifyDiv.append(EC_Fmt.HtmlStrToElement(\"Notify All\"));\r\n\r\n _this.notifySwitch = EChat.CustomComponent.SwichButton({\r\n id: \"EChatNotify\",\r\n checked: true,\r\n changeEvent(value) {\r\n for (let i = 0, len = EChat.MainPageController.messageWindowList.length; i < len; i++) {\r\n const switchBtn = EChat.MainPageController.messageWindowList[i].notifySwitch;\r\n // Task 947307: Ensuring that the eChat and Task Edit interface encourages users to create Public Task Details.\r\n // const NotifyInterDOM = document.querySelector(\".eChat-MessageWindowNotifyInternalTool\");\r\n if (switchBtn) {\r\n if (switchBtn.Checked() && value) {\r\n switchBtn.Open();\r\n EChat.MainPageController.messageWindowList[i].notifyInternalSwitch.Close();\r\n // NotifyInterDOM.classList.add(\"disabled\");\r\n EChat.MainPageController.messageWindowList[i].isPublicSwitch.Open();\r\n publicDiv.classList.add(\"disabled\");\r\n } else if (!switchBtn.Checked() && !value) {\r\n switchBtn.Close();\r\n publicDiv.classList.remove(\"disabled\");\r\n // NotifyInterDOM.classList.remove(\"disabled\");\r\n }\r\n }\r\n }\r\n\r\n EChat.IndexedDB.GetSetting(\"Notify\").then((setting) => {\r\n const Notify = !!value;\r\n if (setting?.Notify !== Notify) {\r\n EChat.IndexedDB.UpdateSetting(\"Notify\", { Notify }, true);\r\n }\r\n });\r\n }\r\n }, notifyDiv);\r\n\r\n // Task 947307: Ensuring that the eChat and Task Edit interface encourages users to create Public Task Details.\r\n const notifyInternalDiv = EC_Fmt.HtmlStrToElement(\"
\");\r\n notifyInternalDiv.append(EC_Fmt.HtmlStrToElement(\"Notify Internal\"));\r\n // notifyInternalDiv.classList.add(\"disabled\");\r\n\r\n _this.notifyInternalSwitch = EChat.CustomComponent.SwichButton({\r\n id: \"EChatNotifyInternal\",\r\n checked: false,\r\n changeEvent(value) {\r\n for (let i = 0, len = EChat.MainPageController.messageWindowList.length; i < len; i++) {\r\n const switchBtn = EChat.MainPageController.messageWindowList[i].notifyInternalSwitch;\r\n // const NotifyDOM = document.querySelector(\".eChat-MessageWindowNotifyTool\");\r\n if (switchBtn) {\r\n if (switchBtn.Checked() && value) {\r\n EChat.MainPageController.messageWindowList[i].notifySwitch.Close();\r\n switchBtn.Open();\r\n publicDiv.classList.remove(\"disabled\");\r\n // NotifyDOM.classList.add(\"disabled\");\r\n } else if (!switchBtn.Checked() && !value) {\r\n switchBtn.Close();\r\n // NotifyDOM.classList.remove(\"disabled\");\r\n }\r\n }\r\n }\r\n\r\n EChat.IndexedDB.GetSetting(\"NotifyInternal\").then((setting) => {\r\n const NotifyInternal = !!value;\r\n if (setting?.NotifyInternalyInternal) {\r\n EChat.IndexedDB.UpdateSetting(\"NotifyInternal\", { NotifyInternal }, true);\r\n }\r\n });\r\n }\r\n }, notifyInternalDiv);\r\n\r\n // Task 952514: Do not remember Public or Private in echat\r\n _this.isPublicSwitch.Open();\r\n const EChatIsPublic = publicDiv.querySelector(\"#EChatIsPublic\");\r\n if (EChatIsPublic) {\r\n EChatIsPublic.style.display = \"block\";\r\n }\r\n\r\n EChat.IndexedDB.GetSetting(\"Notify\").then((setting) => {\r\n if (setting?.Notify) {\r\n _this.notifySwitch.Open();\r\n } else if (setting) {\r\n _this.notifySwitch.Close();\r\n }\r\n\r\n const EChatNotify = publicDiv.querySelector(\"#EChatNotify\");\r\n if (EChatNotify) {\r\n EChatNotify.style.display = \"block\";\r\n }\r\n });\r\n\r\n const NotifyInterDOM = document.querySelector(\".eChat-MessageWindowNotifyInternalTool\");\r\n if (NotifyInterDOM) {\r\n NotifyInterDOM.style.display = \"block\";\r\n }\r\n\r\n EChat.Util.dragResize({\r\n resizeDirection: \"se\",\r\n handle: resizeElement,\r\n move: ({\r\n RelativeHeight,\r\n RelativeWidth\r\n }) => {\r\n EChat.MainPageController.chatWindowSize.width = Math.max(EChat.MainPageController.chatWindowSize.width + RelativeWidth, 600);\r\n EChat.MainPageController.chatWindowSize.height = Math.max(EChat.MainPageController.chatWindowSize.height + RelativeHeight, 233);\r\n\r\n _this.resizeDialog();\r\n },\r\n end: () => {\r\n EChat.IndexedDB.UpdateSetting(\"ChatSize\", EChat.MainPageController.chatWindowSize);\r\n }\r\n });\r\n\r\n inputTool.append(linkTool);\r\n inputTool.append(fileTool);\r\n inputTool.append(clearFmtTool);\r\n inputTool.append(openEChatTool);\r\n inputTool.append(searchTool);\r\n inputTool.append(copyTool);\r\n inputTool.append(sendDelay);\r\n inputTool.append(_this.editPrompt);\r\n textAreaDiv.append(publicDiv);\r\n // Task 947307: Ensuring that the eChat and Task Edit interface encourages users to create Public Task Details.\r\n textAreaDiv.append(notifyInternalDiv);\r\n textAreaDiv.append(notifyDiv);\r\n textAreaDiv.append(inputTool);\r\n\r\n // Task 759412:Allow user send file by dragging into the input field\r\n windowElement.addEventListener(\"dragenter\", (e) => {\r\n if (!e.dataTransfer || event.dataTransfer.types.indexOf(\"Files\") === -1) {\r\n return;\r\n }\r\n const loading = EChat.Util.ShowLoading(windowElement, \"Drop Send file\");\r\n if (loading) {\r\n loading.addEventListener(\"dragleave\", (event) => {\r\n if (loading.querySelector(\"td\") === event.target) {\r\n ECP.Dialog.HideLoading(loading);\r\n }\r\n\r\n event.preventDefault();\r\n event.stopPropagation();\r\n });\r\n\r\n loading.addEventListener(\"drop\", (event) => {\r\n ECP.Dialog.HideLoading();\r\n uploadFiles(event.dataTransfer.files);\r\n event.preventDefault();\r\n event.stopPropagation();\r\n });\r\n\r\n loading.addEventListener(\"dragover\", (event) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n });\r\n }\r\n e.preventDefault();\r\n e.stopPropagation();\r\n });\r\n\r\n windowElement.addEventListener(\"paste\", (e) => {\r\n if (e.clipboardData && e.clipboardData.files && e.clipboardData.files.length > 0) {\r\n const files = [];\r\n for (let i = 0; i < e.clipboardData.files.length; i++) {\r\n const file = e.clipboardData.files[i];\r\n if (!/image\\/\\w+/.test(file.type)) {\r\n files.push(file);\r\n }\r\n }\r\n if (files.length > 0) {\r\n uploadFiles(files);\r\n }\r\n }\r\n });\r\n\r\n // todo inputArea\r\n const inputAreaEle = EC_Fmt.HtmlStrToElement(\"
\");\r\n inputAreaEle.addEventListener(\"selectstart\", (e) => {\r\n e.stopPropagation();\r\n });\r\n\r\n inputArea = EChat.CustomComponent.InputArea(inputAreaEle);\r\n if (inputArea) {\r\n inputArea.bind(EChat.InputAreaComponentEvent.SendMessage, () => {\r\n sendingMessage();\r\n });\r\n\r\n inputAreaEle.addEventListener(\"paste\", () => {\r\n setTimeout(() => {\r\n for (let i = 0; i < inputAreaEle.children.length; i++) {\r\n if (inputAreaEle.children[i].style && inputAreaEle.children[i].style.backgroundColor) {\r\n inputAreaEle.children[i].style.background = \"none\";\r\n }\r\n }\r\n }, 300);\r\n });\r\n\r\n inputArea.bind(EChat.InputAreaComponentEvent.ValueChange, () => {\r\n // SendWriteState\r\n if (!_this.currentTab) {\r\n return;\r\n }\r\n const groupInfo = _this.currentTab.GroupInfo;\r\n if (groupInfo.Users.length === 2) {\r\n for (let i = 0, len = groupInfo.Users.length; i < len; i++) {\r\n if (!EChat.DataProvider.IsCurrentUser(groupInfo.Users[i])) {\r\n EChat.DataProvider.SendWriteState(groupInfo.MessageGroupID, groupInfo.Users[i]);\r\n }\r\n }\r\n }\r\n EChat.DataProvider.Update_Session();\r\n _this.updateCharaterCounter();\r\n _this.currentTab.PreMessage = inputArea.getValue();\r\n });\r\n }\r\n\r\n textAreaDiv.append(inputAreaEle);\r\n\r\n const sendDiv = EC_Fmt.HtmlStrToElement(\"
\");\r\n\r\n const writeStateSpan = EC_Fmt.HtmlStrToElement(\"\");\r\n const writeStateMsg = EC_Fmt.HtmlStrToElement(\"\");\r\n\r\n const sendSpan = EC_Fmt.HtmlStrToElement(\"\");\r\n // Task 1067218: DSDLink: eChat in the new Mobile Framework\r\n let tipMsg;\r\n if (EChat.MainPageController.ClientOS === \"PC\") {\r\n tipMsg = EC_Fmt.HtmlStrToElement(\"Available Characters Remaining:\");\r\n } else {\r\n tipMsg = EC_Fmt.HtmlStrToElement(\"Available Characters:\");\r\n }\r\n // const tipMsg = EC_Fmt.HtmlStrToElement(\"Available Characters Remaining:\");\r\n const numMsg = EC_Fmt.HtmlStrToElement(\"4000\");\r\n\r\n // Task 1119613:eChat: Update all the buttons in eChat to ecp-btn\r\n const sendBtn = EC_Fmt.HtmlStrToElement(\"Send\");\r\n sendBtn.addEventListener(\"click\", (e) => {\r\n windowElement.style.zIndex = EChat.Util.draggableZIndex();\r\n sendingMessage();\r\n e.stopPropagation();\r\n e.preventDefault();\r\n });\r\n writeStateSpan.append(writeStateMsg);\r\n sendSpan.append(tipMsg);\r\n sendSpan.append(numMsg);\r\n sendSpan.append(sendBtn);\r\n sendDiv.append(writeStateSpan);\r\n sendDiv.append(sendSpan);\r\n\r\n sendElement.append(textAreaDiv);\r\n sendElement.append(sendDiv);\r\n\r\n const handleSpan = EC_Fmt.HtmlStrToElement(\"\");\r\n const handleButton = EC_Fmt.HtmlStrToElement(\"Details\");\r\n handleButton.addEventListener(\"mousedown\", (e) => {\r\n const groupData = _this.currentTab.GroupInfo;\r\n const url = EChat.CustomComponent.GetAlertDetailUrl(groupData.GroupName, groupData.MessageGroupID);\r\n EChat.Util.nav(url, e);\r\n });\r\n handleSpan.append(handleButton);\r\n handleElement.append(handleSpan);\r\n\r\n // todo windowElement\r\n windowElement.append(headerElement);\r\n windowElement.append(minimizeElement);\r\n windowElement.append(dialogElement);\r\n windowElement.append(taskTitleElement);\r\n windowElement.append(searchElement);\r\n windowElement.append(sendElement);\r\n windowElement.append(handleElement);\r\n windowElement.append(resizeElement);\r\n // Task 1067218: DSDLink: eChat in the new Mobile Framework\r\n if (EChat.FullWindowController.FullWindow && EChat.MainPageController.ClientOS === \"PC\") {\r\n document.getElementById(\"EChatFullWindowContent\").append(windowElement);\r\n } else {\r\n document.querySelector(\"html > body\").append(windowElement);\r\n }\r\n\r\n closeView();\r\n\r\n EChat.Util.SetWindowLocation(windowElement);\r\n windowElement.addEventListener(\"click\", function () {\r\n if (_this.currentTab) {\r\n _this.currentTab.hideMenu();\r\n _this.currentTab.syncGroupLastReadTime();\r\n }\r\n if (!EChat.eChatMoving) {\r\n this.style.zIndex = EChat.Util.draggableZIndex();\r\n }\r\n removeFloatLinkElement();\r\n removeFloatFileElement();\r\n removeDelayedSendTimeElement();\r\n });\r\n\r\n EChat.Util.dragDialog({\r\n dialog: windowElement,\r\n handle: windowElement.querySelector(\".eChatDragTarget\"),\r\n handleWidthFix: 0,\r\n handleHeightFix: 0,\r\n start(dom) {\r\n if (_this.messageWindowViewType === EChat.ViewType.MinimizeView) {\r\n _this.minimizeIsMoved = true;\r\n }\r\n dom.style.zIndex = EChat.Util.draggableZIndex();\r\n },\r\n stop(dom) {\r\n dom.style.height = \"auto\";\r\n }\r\n });\r\n\r\n _this.element = windowElement;\r\n };\r\n\r\n const openView = function () {\r\n if (EChat.eChatMoving) {\r\n EChat.eChatMoving = false;\r\n }\r\n if (_this.messageWindowViewType === EChat.ViewType.MinimizeView) {\r\n twinkleOff();\r\n _this.currentTab.twinkleOff();\r\n windowElement.style.top = `${originalPoint.Top}px`;\r\n windowElement.style.left = `${originalPoint.Left}px`;\r\n }\r\n if (_this.messageWindowViewType !== EChat.ViewType.OpenView) {\r\n _this.messageWindowViewType = EChat.ViewType.OpenView;\r\n // Task 1067218: DSDLink: eChat in the new Mobile Framework\r\n if (EChat.MainPageController.ClientOS === \"PC\") {\r\n _this.resizeDialog();\r\n resizeElement.style.display = \"block\";\r\n } else {\r\n windowElement.classList.remove(\"eChat-ReadOnly\");\r\n const limitTop = EChat.Util.getHeaderHeight();\r\n EChat.MainPageController.chatWindowSize.width = window.innerWidth;\r\n EChat.MainPageController.chatWindowSize.height = window.innerHeight - 164 - limitTop;\r\n dialogElement.style.height = `${EChat.MainPageController.chatWindowSize.height}px`;\r\n windowElement.style.width = `${EChat.MainPageController.chatWindowSize.width}px`;\r\n windowElement.style.top = `${limitTop}px`;\r\n windowElement.style.left = \"0px\";\r\n sendElement.childNodes[0].childNodes[3].style.height = \"40px\";\r\n\r\n if (windowElement.childNodes[0].childElementCount > 1) {\r\n windowElement.childNodes[0].childNodes[2].remove();\r\n windowElement.childNodes[0].childNodes[1].remove();\r\n }\r\n resizeElement.style.display = \"none\";\r\n }\r\n windowElement.style.display = \"block\";\r\n headerElement.style.display = \"block\";\r\n minimizeElement.style.display = \"none\";\r\n // resizeElement.style.display = \"block\";\r\n const group_unread_button = windowElement.querySelector(\".group-unread-button-div\");\r\n if (group_unread_button) {\r\n group_unread_button.style.display = \"block\";\r\n }\r\n\r\n if (_this.currentTab) {\r\n if (_this.currentTab.GroupInfo.GroupType === SocketUtil.GroupType.Message || _this.currentTab.GroupInfo.GroupType === SocketUtil.GroupType.Task) {\r\n sendElement.style.display = \"block\";\r\n handleElement.style.display = \"none\";\r\n if (taskTitleElement && _this.currentTab.GroupInfo.GroupType === SocketUtil.GroupType.Task) {\r\n taskTitleElement.style.display = \"flex\";\r\n }\r\n dialogElement.style.display = \"block\";\r\n inputArea.focus();\r\n } else {\r\n handleElement.style.display = \"block\";\r\n sendElement.style.display = \"none\";\r\n dialogElement.style.display = \"block\";\r\n }\r\n _this.currentTab.setScrollTop();\r\n }\r\n _this.minimizeIsMoved = true;\r\n\r\n oldwinpageW = window.innerWidth - parseInt(EChat.MainPageController.chatWindowSize.width);\r\n oldwinpageH = window.innerHeight - (parseInt(EChat.MainPageController.chatWindowSize.height) + 178);\r\n oldwinpageW = oldwinpageW <= 0 ? 1 : oldwinpageW;\r\n oldwinpageH = oldwinpageH <= 0 ? 1 : oldwinpageH;\r\n }\r\n };\r\n\r\n this.resizeDialog = function () {\r\n windowElement.classList.remove(\"eChat-ReadOnly\");\r\n if (_this.messageWindowViewType === EChat.ViewType.OpenView) {\r\n if (_this.currentTab) {\r\n let height;\r\n if (_this.currentTab.GroupInfo.GroupType === SocketUtil.GroupType.Task || _this.currentTab.SearchInfo) {\r\n height = `${EChat.MainPageController.chatWindowSize.height}px`;\r\n } else if (_this.currentTab.GroupInfo.GroupType === SocketUtil.GroupType.System) {\r\n // Task 1134294: Encompass Mobile Picker Cut Alert Detail\r\n const detail = document.getElementById(\"details\");\r\n if (detail.style.display === \"none\") {\r\n height = `${EChat.MainPageController.chatWindowSize.height + 180}px`;\r\n } else {\r\n height = `${EChat.MainPageController.chatWindowSize.height + 148}px`;\r\n }\r\n } else if (_this.currentTab.GroupInfo.GroupType === SocketUtil.GroupType.Message && _this.currentTab.GroupInfo.PostPermission === EChat.PostPermissionType.ReadOnly) {\r\n windowElement.classList.add(\"eChat-ReadOnly\");\r\n height = `${EChat.MainPageController.chatWindowSize.height + 173}px`;\r\n } else {\r\n height = `${EChat.MainPageController.chatWindowSize.height + 25}px`;\r\n }\r\n\r\n dialogElement.style.height = height;\r\n }\r\n windowElement.style.width = `${EChat.MainPageController.chatWindowSize.width}px`;\r\n }\r\n // Task 1147400: DSDLink: eChat in the new Mobile Framework(echat Dashboard)\r\n EChat.Util.resizeDialogMessage();\r\n };\r\n\r\n this.minimizeView = function () {\r\n if (EChat.eChatMoving) {\r\n EChat.eChatMoving = false;\r\n }\r\n if (_this.messageWindowViewType !== EChat.ViewType.MinimizeView) {\r\n _this.messageWindowViewType = EChat.ViewType.MinimizeView;\r\n let groupName = \"\";\r\n if (_this.currentTab) {\r\n _this.currentTab.getScrollTop();\r\n groupName = EChat.DataProvider.GetGroupName(_this.currentTab.GroupInfo);\r\n }\r\n minimizeElement.querySelectorAll(\"#eChat-MinTable\").forEach((dom) => {\r\n dom.setAttribute(\"title\", groupName);\r\n dom.textContent = groupName;\r\n });\r\n\r\n windowElement.style.width = \"150px\";\r\n windowElement.style.display = \"block\";\r\n headerElement.style.display = \"none\";\r\n minimizeElement.style.display = \"block\";\r\n dialogElement.style.display = \"none\";\r\n sendElement.style.display = \"none\";\r\n handleElement.style.display = \"none\";\r\n resizeElement.style.display = \"none\";\r\n const group_unread_button = windowElement.querySelector(\".group-unread-button-div\");\r\n if (group_unread_button) {\r\n group_unread_button.style.display = \"none\";\r\n }\r\n\r\n _this.minimizeIsMoved = false;\r\n if (taskTitleElement) {\r\n taskTitleElement.style.display = \"none\";\r\n }\r\n\r\n oldwinpageW = window.innerWidth - 150;\r\n oldwinpageH = window.innerHeight - 30;\r\n oldwinpageW = oldwinpageW <= 0 ? 1 : oldwinpageW;\r\n oldwinpageH = oldwinpageH <= 0 ? 1 : oldwinpageH;\r\n }\r\n };\r\n\r\n const closeView = function () {\r\n if (EChat.eChatMoving) {\r\n EChat.eChatMoving = false;\r\n }\r\n if (_this.messageWindowViewType !== EChat.ViewType.CloseView) {\r\n _this.messageWindowViewType = EChat.ViewType.CloseView;\r\n windowElement.style.display = \"none\";\r\n }\r\n };\r\n\r\n const headImgClickEvent = function (authID, userMemberCount) {\r\n if (parseInt(userMemberCount) === 2) {\r\n window.open(`./Home?DashboardID=${ECP.CommonDashboards.TableView}&TableName=Users&Search=AuthenticationID~${authID}`);\r\n } else {\r\n const eChatDataProvider = EChat.DataProvider;\r\n const userStr = eChatDataProvider.GetUserStrByUserList([authID, eChatDataProvider.CurrentUserInfo.AuthenticationID]);\r\n EChat.DataProvider.GetGroupInfoByAuthIDList(userStr).then((groupInfo) => {\r\n EChat.MainPageController.getMessageWindow(groupInfo.MessageGroupID).addRecentTab(groupInfo, false);\r\n });\r\n }\r\n };\r\n\r\n const minimizeMessageWindow = function () {\r\n const EChatMainPage = document.getElementById(\"EChatMainPage\");\r\n const EChatTabHead = document.getElementById(\"EChatTabHead\");\r\n const EChatMainPageWidth = EChatMainPage ? EChatMainPage.clientWidth : 280;\r\n const EChatTabHeadWidth = EChatTabHead ? EChatTabHead.clientWidth : 55;\r\n if (windowElement && _this.messageWindowViewType === EChat.ViewType.MinimizeView) {\r\n removeSearchElement();\r\n const elementWidth = windowElement.clientWidth + 5;\r\n const mainPageWidth = EChatMainPageWidth + EChatTabHeadWidth + 10;\r\n const maxCount = Math.floor((window.innerWidth - mainPageWidth) / elementWidth);\r\n let windowCount = 0;\r\n const windowList = EChat.MainPageController.messageWindowList;\r\n for (let i = 0; i < windowList.length; i++) {\r\n if (!windowList[i].minimizeIsMoved) {\r\n windowCount++;\r\n let tmpTop;\r\n let tmpLeft;\r\n if (windowCount < maxCount) {\r\n tmpTop = window.innerHeight - windowElement.clientHeight;\r\n tmpLeft = window.innerWidth - elementWidth * windowCount - mainPageWidth;\r\n } else {\r\n const floor = Math.floor(windowCount / maxCount);\r\n tmpTop = window.innerHeight - windowElement.clientHeight * floor;\r\n tmpLeft = window.innerWidth - elementWidth * windowCount - mainPageWidth;\r\n }\r\n windowList[i].element.style.top = `${tmpTop}px`;\r\n windowList[i].element.style.left = `${tmpLeft}px`;\r\n }\r\n }\r\n }\r\n };\r\n\r\n this.resizeTab = function () {\r\n // Task 1119771: Echat chat window Tab bar position is misplaced.\r\n let maxWidth = 600;\r\n const head = windowElement.querySelector(\".eChat-MessageWindowHead\");\r\n if (head) {\r\n // Task 1149732: Update 'eChat' page to new button component\r\n maxWidth = head.clientWidth - 105;\r\n }\r\n const ulwidth = maxWidth / _this.chatTabListCount;\r\n\r\n // Task 1133270: eChat: Full screen eChat does not display full messages when too many eChat tabs are open and unable to click second row of eChat tabs\r\n headerElement.querySelectorAll(\"li\").forEach((dom) => {\r\n dom.style.maxWidth = `${ulwidth}px`;\r\n });\r\n _this.tabWidth = ulwidth;\r\n };\r\n\r\n this.switchWindowType = function (groupType, focusFlag) {\r\n if (groupType === SocketUtil.GroupType.Message || groupType === SocketUtil.GroupType.Task) {\r\n sendElement.style.display = \"block\";\r\n handleElement.style.display = \"none\";\r\n\r\n if (!focusFlag) {\r\n inputArea.focus();\r\n }\r\n } else {\r\n handleElement.style.display = \"block\";\r\n sendElement.style.display = \"none\";\r\n }\r\n\r\n dialogElement.style.display = \"block\";\r\n _this.resizeDialog();\r\n\r\n if (groupType === SocketUtil.GroupType.Task) {\r\n taskTitleElement.style.display = \"flex\";\r\n // Task 947307: Ensuring that the eChat and Task Edit interface encourages users to create Public Task Details.\r\n windowElement.querySelectorAll(\".eChat-MessageWindowPubicTool, .eChat-MessageWindowNotifyTool, .eChat-MessageWindowOpenEChatTool, .eChat-MessageWindowNotifyInternalTool\").forEach((dom) => {\r\n dom.style.display = \"inline-block\";\r\n });\r\n windowElement.querySelectorAll(\".eChat-MessageWindowSendDelayTool, .eChat-MessageWindowAlertTool, .eChat-MessageWindowCopyTool, .eChat-MessageWindowSearchTool\").forEach((dom) => {\r\n dom.style.display = \"none\";\r\n });\r\n\r\n if (EChat.FullWindowController.FullWindow) {\r\n if (EChat.FullWindowController.TextArea) {\r\n const mceDom = EChat.FullWindowController.TextArea.editorContainer;\r\n mceDom.querySelectorAll(\".ews-icon-echat\").forEach((dom) => {\r\n dom.parentElement.parentElement.classList.remove(\"hidden\");\r\n });\r\n mceDom.querySelectorAll(\".ews-icon-senddelay, .ews-icon-copy, .ews-icon-DisablesVoice, .ews-icon-alert, .ews-icon-chatshistory\").forEach((dom) => {\r\n dom.parentElement.parentElement.classList.add(\"hidden\");\r\n });\r\n }\r\n\r\n document.getElementById(\"EChatFullWindowContent\").classList.add(\"eChat-FullWindowTask\");\r\n }\r\n\r\n if (_this.isPublicSwitch) {\r\n _this.isPublicSwitch.Open();\r\n }\r\n } else {\r\n taskTitleElement.style.display = \"none\";\r\n\r\n windowElement.querySelectorAll(\".eChat-MessageWindowSendDelayTool, .eChat-MessageWindowAlertTool, .eChat-MessageWindowCopyTool, .eChat-MessageWindowSearchTool\").forEach((dom) => {\r\n dom.style.display = \"inline-block\";\r\n });\r\n // Task 947307: Ensuring that the eChat and Task Edit interface encourages users to create Public Task Details.\r\n windowElement.querySelectorAll(\".eChat-MessageWindowPubicTool, .eChat-MessageWindowNotifyTool, .eChat-MessageWindowOpenEChatTool, .eChat-MessageWindowNotifyInternalTool\").forEach((dom) => {\r\n dom.style.display = \"none\";\r\n });\r\n\r\n if (EChat.FullWindowController.TextArea) {\r\n const mceDom = EChat.FullWindowController.TextArea.editorContainer;\r\n mceDom.querySelectorAll(\".ews-icon-echat\").forEach((dom) => {\r\n dom.parentElement.parentElement.classList.add(\"hidden\");\r\n });\r\n mceDom.querySelectorAll(\".ews-icon-senddelay, .ews-icon-copy, .ews-icon-DisablesVoice, .ews-icon-alert, .ews-icon-chatshistory\").forEach((dom) => {\r\n dom.parentElement.parentElement.classList.remove(\"hidden\");\r\n });\r\n document.getElementById(\"EChatFullWindowContent\").classList.remove(\"eChat-FullWindowTask\");\r\n }\r\n }\r\n\r\n if (_this.currentTab && _this.currentTab.GroupInfo) {\r\n const GroupInfo = _this.currentTab.GroupInfo;\r\n EChat.MainPageController.updatePromptIcon({ groupID: GroupInfo.MessageGroupID, taskID: GroupInfo.TaskID, prompt: GroupInfo.Prompt });\r\n }\r\n\r\n // Task 1147400: DSDLink: eChat in the new Mobile Framework(echat Dashboard)\r\n _this.resizeDialog();\r\n _this.HideUnreadButton(true);\r\n };\r\n\r\n let twinkleHandle = null;\r\n const twinkleOn = function (isPlay) {\r\n if (minimizeElement) {\r\n if (isPlay) {\r\n if (!twinkleHandle) {\r\n twinkleHandle = setInterval(() => {\r\n minimizeElement.classList.toggle(\"TwinkleOn\");\r\n }, 600);\r\n\r\n setTimeout(() => {\r\n if (twinkleHandle) {\r\n minimizeElement.classList.add(\"TwinkleOn\");\r\n clearInterval(twinkleHandle);\r\n twinkleHandle = null;\r\n }\r\n }, 3000);\r\n }\r\n } else {\r\n minimizeElement.classList.add(\"TwinkleOn\");\r\n }\r\n _this.minimizeTwinkle = true;\r\n }\r\n };\r\n\r\n const twinkleOff = function () {\r\n if (minimizeElement) {\r\n minimizeElement.classList.remove(\"TwinkleOn\");\r\n if (twinkleHandle) {\r\n clearInterval(twinkleHandle);\r\n twinkleHandle = null;\r\n }\r\n _this.minimizeTwinkle = false;\r\n }\r\n };\r\n\r\n this.twinkleClose = function () {\r\n twinkleOff();\r\n };\r\n\r\n this.closeMessageWindow = function () {\r\n let isOpenView = false;\r\n if (_this.messageWindowViewType === EChat.ViewType.OpenView) {\r\n isOpenView = true;\r\n }\r\n Object.keys(_this.chatTabList).forEach((tab) => {\r\n if (_this.chatTabList[tab] === _this.currentTab && isOpenView) {\r\n _this.chatTabList[tab].closeTab();// true\r\n } else {\r\n _this.chatTabList[tab].closeTab();// false\r\n }\r\n delete _this.chatTabList[tab];\r\n _this.chatTabListCount--;\r\n });\r\n\r\n // Task 1160492: Changing title attributes on icon-only buttons to use tooltip instead\r\n const number = (windowElement.querySelector(`[id^=\"ewsIconCloseMessage\"]`).id).substr(-1);\r\n document.getElementById(`messageWindowTooltip${number}`).remove();\r\n\r\n windowElement.remove();\r\n EChat.MainPageController.removeMessageWindow(_this);\r\n };\r\n\r\n // Task 1003469: The chat box size should not exceed the page size.\r\n let oldwinpageW = window.innerWidth - parseInt(EChat.MainPageController.chatWindowSize.width);\r\n let oldwinpageH = window.innerHeight - (parseInt(EChat.MainPageController.chatWindowSize.height) + 178);\r\n let oldMessageWinH = 1;\r\n let oldMessageWinW = 1;\r\n let overedPartH = 0;\r\n let overedPartW = 0;\r\n this.resizeMessageWindow = function () {\r\n let winpageW;\r\n let winpageH;\r\n const limitLeft = EChat.Util.getMenuWidth();\r\n const limitTop = EChat.Util.getHeaderHeight();\r\n let winpageLeft = parseInt(windowElement.style.left);\r\n let winpageTop = parseInt(windowElement.style.top);\r\n let MessageWinH = parseInt(dialogElement.style.height);\r\n let MessageWinW = parseInt(EChat.MainPageController.chatWindowSize.width);\r\n\r\n if (_this.messageWindowViewType === EChat.ViewType.MinimizeView) {\r\n winpageW = window.innerWidth - 150;\r\n winpageH = window.innerHeight - 30;\r\n windowElement.style.top = `${winpageH}px`;\r\n windowElement.style.left = `${winpageW}px`;\r\n } else {\r\n winpageW = window.innerWidth - parseInt(EChat.MainPageController.chatWindowSize.width);\r\n winpageH = window.innerHeight - (parseInt(EChat.MainPageController.chatWindowSize.height) + 178);\r\n\r\n const moveHeight = winpageH - oldwinpageH;\r\n const moveWidth = winpageW - oldwinpageW;\r\n if (moveHeight < 0) {\r\n if (Math.abs(moveHeight) > (winpageTop - limitTop)) {\r\n winpageTop = limitTop;\r\n MessageWinH = MessageWinH - (Math.abs(moveHeight) - (winpageTop - limitTop)) > 260 ? (MessageWinH - (Math.abs(moveHeight) - (winpageTop - limitTop))) : 260;\r\n } else {\r\n winpageTop -= Math.abs(moveHeight);\r\n }\r\n } else if (moveHeight > 0) {\r\n if (window.innerHeight > MessageWinH + 178 + limitTop) {\r\n if (overedPartH < 0) {\r\n if (moveHeight > Math.abs(overedPartH)) {\r\n if (moveHeight - Math.abs(overedPartH) > oldMessageWinH - MessageWinH) {\r\n winpageTop += (moveHeight - Math.abs(overedPartH) - (oldMessageWinH - MessageWinH));\r\n MessageWinH = oldMessageWinH;\r\n } else {\r\n MessageWinH += moveHeight - Math.abs(overedPartH);\r\n }\r\n }\r\n } else if (overedPartH > 0) {\r\n if (moveHeight > (oldMessageWinH - MessageWinH)) {\r\n winpageTop += (moveHeight - (oldMessageWinH - MessageWinH));\r\n MessageWinH = oldMessageWinH;\r\n } else {\r\n MessageWinH += moveHeight;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (moveWidth < 0) {\r\n if (Math.abs(moveWidth) > (winpageLeft - limitLeft)) {\r\n winpageLeft = limitLeft;\r\n MessageWinW = MessageWinW - (Math.abs(moveWidth) - (winpageLeft - limitLeft)) > 600 ? (MessageWinW - (Math.abs(moveWidth) - (winpageLeft - limitLeft))) : 600;\r\n } else {\r\n winpageLeft -= Math.abs(moveWidth);\r\n }\r\n } else if (moveWidth > 0) {\r\n if (overedPartW < 0) {\r\n if (moveWidth > Math.abs(overedPartW)) {\r\n if (moveWidth - Math.abs(overedPartW) > oldMessageWinW - MessageWinW) {\r\n winpageLeft += (moveWidth - Math.abs(overedPartW) - (oldMessageWinW - MessageWinW));\r\n MessageWinW = oldMessageWinW;\r\n } else {\r\n MessageWinW += moveWidth - Math.abs(overedPartW);\r\n }\r\n }\r\n } else if (overedPartW > 0) {\r\n if (moveWidth > (oldMessageWinW - MessageWinW)) {\r\n winpageLeft += (moveWidth - (oldMessageWinW - MessageWinW));\r\n MessageWinW = oldMessageWinW;\r\n } else {\r\n MessageWinW += moveWidth;\r\n }\r\n }\r\n }\r\n\r\n dialogElement.style.height = `${MessageWinH}px`;\r\n EChat.MainPageController.chatWindowSize.width = MessageWinW;\r\n windowElement.style.width = `${MessageWinW}px`;\r\n windowElement.style.top = `${winpageTop}px`;\r\n windowElement.style.left = `${winpageLeft}px`;\r\n oldwinpageW = window.innerWidth - parseInt(EChat.MainPageController.chatWindowSize.width);\r\n oldwinpageH = window.innerHeight - (parseInt(EChat.MainPageController.chatWindowSize.height) + 178);\r\n overedPartH = window.innerHeight - (MessageWinH + 178) - parseInt(windowElement.style.top);\r\n overedPartW = window.innerWidth - MessageWinW - parseInt(windowElement.style.left);\r\n }\r\n };\r\n\r\n // Task 1003469: The chat box size should not exceed the page size.\r\n this.initMessageWindowPosition = function () {\r\n let winpageLeft = parseInt(windowElement.style.left);\r\n let winpageTop = parseInt(windowElement.style.top);\r\n let MessageWinH = parseInt(dialogElement.style.height);\r\n let MessageWinW = parseInt(EChat.MainPageController.chatWindowSize.width);\r\n const limitLeft = EChat.Util.getMenuWidth();\r\n const limitTop = EChat.Util.getHeaderHeight();\r\n\r\n oldMessageWinH = parseInt(dialogElement.style.height);\r\n oldMessageWinW = parseInt(EChat.MainPageController.chatWindowSize.width);\r\n\r\n if (window.innerHeight < MessageWinH + 178 + limitTop) {\r\n winpageTop = limitTop;\r\n MessageWinH = window.innerHeight - limitTop - 178 < 260 ? 260 : window.innerHeight - limitTop - 178;\r\n }\r\n\r\n if (window.innerWidth < MessageWinW + limitLeft) {\r\n winpageLeft = limitLeft;\r\n MessageWinW = window.innerWidth - limitLeft < 600 ? 600 : window.innerWidth - limitLeft;\r\n }\r\n\r\n dialogElement.style.height = `${MessageWinH}px`;\r\n EChat.MainPageController.chatWindowSize.width = MessageWinW;\r\n windowElement.style.width = `${MessageWinW}px`;\r\n windowElement.style.top = `${winpageTop}px`;\r\n windowElement.style.left = `${winpageLeft}px`;\r\n };\r\n\r\n // Task 1003469: The chat box size should not exceed the page size.\r\n this.changeOldMessageWin = function () {\r\n oldMessageWinH = parseInt(EChat.MainPageController.chatWindowSize.height);\r\n oldMessageWinW = parseInt(EChat.MainPageController.chatWindowSize.width);\r\n oldwinpageW = window.innerWidth - parseInt(EChat.MainPageController.chatWindowSize.width);\r\n oldwinpageH = window.innerHeight - (parseInt(EChat.MainPageController.chatWindowSize.height) + 178);\r\n };\r\n\r\n // Task 1067218: DSDLink: eChat in the new Mobile Framework\r\n this.resizeMobileMessageWindow = function () {\r\n const limitTop = EChat.Util.getHeaderHeight();\r\n const newDialogHeight = window.innerHeight - limitTop - 137;\r\n const newDialogWidth = window.innerWidth;\r\n\r\n dialogElement.style.height = `${newDialogHeight}px`;\r\n windowElement.style.width = `${newDialogWidth}px`;\r\n windowElement.style.top = `${limitTop}px`;\r\n windowElement.style.left = \"0px\";\r\n };\r\n\r\n // Data\r\n const addTab = function (key, tab) {\r\n _this.chatTabList[key] = tab;\r\n _this.chatTabListCount++;\r\n };\r\n\r\n this.deleteTab = function (key) {\r\n delete _this.chatTabList[key];\r\n _this.chatTabListCount--;\r\n };\r\n\r\n this.addRecentTab = async function (groupInfo, sync, showUnreadButton, savedKey) {\r\n const twinkle = false;\r\n const focusFlag = false;\r\n if (_this.messageWindowViewType !== EChat.ViewType.OpenView) {\r\n openView();\r\n }\r\n const key = groupInfo.MessageGroupID;\r\n const unreadCount = groupInfo.UnReadCount;\r\n if (!_this.chatTabList[key]) {\r\n const chatTabController = new EChat.ChatTabController(groupInfo, _this);\r\n\r\n headerElement.append(chatTabController.createHeadElement());\r\n dialogElement.append(chatTabController.createContentElement());\r\n addTab(key, chatTabController);\r\n _this.resizeTab();\r\n\r\n await EChat.FullWindowController.ResizeTextArea();\r\n _this.topTab(_this.chatTabList[key], sync, twinkle, focusFlag);\r\n\r\n if (groupInfo.GroupType === SocketUtil.GroupType.Task) {\r\n EChat.Util.ShowLoading(windowElement);\r\n let data;\r\n try {\r\n data = await EChat.DataProvider.getTaskDetailHistory(groupInfo.TaskID, groupInfo.EncompassID, EC_Fmt.Null2ZeroInt(savedKey), 0, true);\r\n ECP.Dialog.HideLoading();\r\n if (data) {\r\n chatTabController.drawHistoryMessages(data.TaskDetails, !!savedKey);\r\n chatTabController.scorllToMessage(_this, groupInfo, savedKey);\r\n chatTabController.disablePublic(data.IsCustomer);\r\n // Task 947307: Ensuring that the eChat and Task Edit interface encourages users to create Public Task Details.\r\n chatTabController.disableNotifyInternal(data.IsCustomer);\r\n chatTabController.windowScroll();\r\n chatTabController.showTaskTitle(data.TaskTitle);\r\n }\r\n } catch (e) {\r\n EChat.Util.errorAlert(e);\r\n return _this.chatTabList[key];\r\n }\r\n } else {\r\n if (savedKey && (!groupInfo.Messages || groupInfo.Messages.filter(x => x.MessageKey === savedKey).length === 0)) {\r\n groupInfo.Messages = await EChat.DataProvider.getMessageHistory(groupInfo.MessageGroupID, 0, savedKey, null);\r\n }\r\n chatTabController.drawHistoryMessages(groupInfo.Messages, !!savedKey);\r\n chatTabController.scorllToMessage(_this, groupInfo, savedKey);\r\n chatTabController.windowScroll(groupInfo.Messages && groupInfo.Messages.length < 10 && groupInfo.Messages.length < groupInfo.MessageCount);\r\n }\r\n chatTabController.updateGroupName();\r\n } else {\r\n _this.chatTabList[key].GroupInfo = groupInfo;\r\n await EChat.FullWindowController.ResizeTextArea();\r\n _this.topTab(_this.chatTabList[key], sync, twinkle, focusFlag);\r\n\r\n if (groupInfo.GroupType === SocketUtil.GroupType.Task) {\r\n EChat.Util.ShowLoading(windowElement);\r\n let data;\r\n try {\r\n data = await EChat.DataProvider.getTaskDetailHistory(groupInfo.TaskID, groupInfo.EncompassID, EC_Fmt.Null2ZeroInt(savedKey), 0, true);\r\n } catch (e) {\r\n EChat.Util.errorAlert(e);\r\n return _this.chatTabList[key];\r\n }\r\n\r\n ECP.Dialog.HideLoading();\r\n if (data) {\r\n _this.chatTabList[key].clearMessage();\r\n _this.chatTabList[key].drawHistoryMessages(data.TaskDetails, !!savedKey);\r\n _this.chatTabList[key].scorllToMessage(_this, groupInfo, savedKey);\r\n _this.chatTabList[key].disablePublic(data.IsCustomer);\r\n // Task 947307: Ensuring that the eChat and Task Edit interface encourages users to create Public Task Details.\r\n _this.chatTabList[key].disableNotifyInternal(data.IsCustomer);\r\n _this.chatTabList[key].showTaskTitle(data.TaskTitle);\r\n }\r\n } else {\r\n if (savedKey && (!groupInfo.Messages || groupInfo.Messages.filter(x => x.MessageKey === savedKey).length === 0)) {\r\n groupInfo.Messages = await EChat.DataProvider.getMessageHistory(groupInfo.MessageGroupID, 0, savedKey, null);\r\n }\r\n _this.chatTabList[key].refreshMessageList(groupInfo.Messages);\r\n }\r\n\r\n _this.chatTabList[key].updateGroupName();\r\n }\r\n EChat.MainPageController.updatePromptIcon({ groupID: groupInfo.MessageGroupID, taskID: groupInfo.TaskID, prompt: groupInfo.Prompt });\r\n\r\n // Task 1134294: Encompass Mobile Picker Cut Alert Detail\r\n const LoadEmployeesAlertsType = [\r\n \"Day Close\",\r\n \"ASN Receipt\",\r\n \"New Customer Account\",\r\n \"PO Receipt\",\r\n \"REMIT Receipt\",\r\n \"Import Conflict\",\r\n \"Supplier Comm Warnings\",\r\n \"EDI Download Reminder\",\r\n \"Account Mis-Mapping\"\r\n ];\r\n // Task 1201832: eChat window sticking\r\n const DetailsButton = document.getElementById(\"details\");\r\n if (LoadEmployeesAlertsType.indexOf(groupInfo.GroupName) >= 0) {\r\n DetailsButton.style.display = \"block\";\r\n } else {\r\n DetailsButton.style.display = \"none\";\r\n }\r\n _this.resizeDialog();\r\n _this.currentTab.scrollToBotton();\r\n\r\n if (showUnreadButton && unreadCount > 0 && groupInfo.GroupType !== SocketUtil.GroupType.Task) {\r\n _this.ShowUnreadButton(groupInfo.MessageGroupID, unreadCount);\r\n }\r\n // Task 1067218: DSDLink: eChat in the new Mobile Framework\r\n if (EChat.MainPageController.ClientOS === \"PC\") {\r\n this.initMessageWindowPosition();\r\n }\r\n\r\n // Task 1160492: Changing title attributes on icon-only buttons to use tooltip instead\r\n _this.createMessageWindowTooltip();\r\n // Task 1147400: DSDLink: eChat in the new Mobile Framework(echat Dashboard)\r\n _this.resizeDialog();\r\n return _this.chatTabList[key];\r\n };\r\n\r\n // Task 1160492: Changing title attributes on icon-only buttons to use tooltip instead\r\n this.createMessageWindowTooltip = function () {\r\n const frequency = document.querySelectorAll(\"#eChatMessageWindow\").length;\r\n const Number = frequency - 1;\r\n\r\n let messageWindowTooltip = document.getElementById(\"messageWindowTooltip\");\r\n\r\n if (EC_Fmt.isNull(messageWindowTooltip)) {\r\n messageWindowTooltip = EC_Fmt.HtmlStrToElement(`
`);\r\n document.body.append(messageWindowTooltip);\r\n }\r\n\r\n let messageWindowTooltipDiv = document.getElementById(`messageWindowTooltip${Number}`);\r\n if (EC_Fmt.isNull(messageWindowTooltipDiv)) {\r\n messageWindowTooltipDiv = EC_Fmt.HtmlStrToElement(`
`);\r\n messageWindowTooltip = document.getElementById(\"messageWindowTooltip\");\r\n messageWindowTooltip.append(messageWindowTooltipDiv);\r\n\r\n const ewsIconRuleMessage = EC_Fmt.HtmlStrToElement(`Minimize Window`);\r\n const ewsIconBreakOutMessage = EC_Fmt.HtmlStrToElement(`Maximize Window`);\r\n const ewsIconCloseMessage = EC_Fmt.HtmlStrToElement(`Close Window`);\r\n\r\n const LinkToolMessage = EC_Fmt.HtmlStrToElement(`Insert Link`);\r\n const FileToolMessage = EC_Fmt.HtmlStrToElement(`Upload Files`);\r\n const FmtToolMessage = EC_Fmt.HtmlStrToElement(`Clear Format`);\r\n const SearchToolMessage = EC_Fmt.HtmlStrToElement(`Search History`);\r\n const CopyToolMessage = EC_Fmt.HtmlStrToElement(`Copy or Create New Task`);\r\n const SendDelayToolMessage = EC_Fmt.HtmlStrToElement(`Delay Send`);\r\n const AlertToolMessage = EC_Fmt.HtmlStrToElement(`Mute/Unmute eChat Group`);\r\n const OpenEChatToolMessage = EC_Fmt.HtmlStrToElement(`Open eChat`);\r\n\r\n messageWindowTooltipDiv.append(ewsIconRuleMessage, ewsIconCloseMessage, ewsIconBreakOutMessage, LinkToolMessage, FileToolMessage,\r\n FmtToolMessage, SearchToolMessage, CopyToolMessage, SendDelayToolMessage, AlertToolMessage, OpenEChatToolMessage);\r\n }\r\n };\r\n\r\n this.ShowUnreadButton = function (MessageGroupID, UnreadCount) {\r\n const unreadButton = windowElement.querySelector(\".group-unread-button-div\");\r\n if (unreadButton) {\r\n unreadButton.remove();\r\n }\r\n\r\n let headRect = windowElement.querySelector(\".eChat-MessageWindowHead\").getBoundingClientRect();\r\n let limitY = headRect.y + headRect.height;\r\n let messageArr = windowElement.querySelectorAll(`#chatBox_${MessageGroupID} .echat-message-block.Left`);\r\n let addButton = true;\r\n if (messageArr.length >= UnreadCount) {\r\n const messageDom = messageArr[messageArr.length - UnreadCount];\r\n addButton = limitY > messageDom.getBoundingClientRect().y;\r\n }\r\n\r\n if (!addButton) {\r\n return;\r\n }\r\n const button = EC_Fmt.HtmlStrToElement(`
Scroll to unread
`);\r\n button.addEventListener(\"click\", async () => {\r\n messageArr = windowElement.querySelectorAll(`#chatBox_${MessageGroupID} .echat-message-block.Left`);\r\n if (messageArr.length < UnreadCount) {\r\n let noMessage = false;\r\n EChat.Util.ShowLoading(windowElement);\r\n while (!noMessage && messageArr.length < UnreadCount) {\r\n noMessage = await _this.chatTabList[MessageGroupID].windowScroll(true);\r\n messageArr = windowElement.querySelectorAll(`#chatBox_${MessageGroupID} .echat-message-block.Left`);\r\n }\r\n ECP.Dialog.HideLoading();\r\n }\r\n\r\n headRect = windowElement.querySelector(\".eChat-MessageWindowHead\").getBoundingClientRect();\r\n limitY = headRect.y + headRect.height;\r\n UnreadCount = Math.min(messageArr.length, UnreadCount);\r\n const messageDom = messageArr[messageArr.length - UnreadCount];\r\n const moveHight = limitY - messageDom.getBoundingClientRect().y;\r\n const chatBoxElement = document.getElementById(`chatBox_${MessageGroupID}`);\r\n if (chatBoxElement) {\r\n chatBoxElement.scrollTop = chatBoxElement.scrollTop - moveHight - 20;\r\n }\r\n\r\n _this.HideUnreadButton(true);\r\n });\r\n\r\n windowElement.append(button);\r\n };\r\n\r\n this.HideUnreadButton = function (force) {\r\n const unreadButton = windowElement.querySelector(\".group-unread-button-div\");\r\n if (unreadButton) {\r\n const UnreadCount = parseInt(unreadButton.getAttribute(\"unread-count\"));\r\n if (force || !UnreadCount) {\r\n unreadButton.remove();\r\n } else {\r\n const headRect = windowElement.querySelector(\".eChat-MessageWindowHead\").getBoundingClientRect();\r\n const limitY = headRect.y + headRect.height;\r\n\r\n let hideButton = false;\r\n const messageArr = windowElement.querySelectorAll(\".echat-message-block.Left\");\r\n if (messageArr.length >= UnreadCount) {\r\n const messageDom = messageArr[messageArr.length - UnreadCount];\r\n hideButton = limitY <= messageDom.getBoundingClientRect().y;\r\n }\r\n\r\n if (hideButton) {\r\n unreadButton.remove();\r\n }\r\n }\r\n }\r\n };\r\n\r\n this.DisabledInputArr = function (disabled) {\r\n const MessageWindowTextArea = document.querySelector(\".eChat-MessageWindowTextArea\");\r\n if (disabled) {\r\n if (MessageWindowTextArea) {\r\n MessageWindowTextArea.setAttribute(\"contenteditable\", \"false\");\r\n }\r\n dialogElement.style.paddingBottom = \"0px\";\r\n } else if (MessageWindowTextArea) {\r\n MessageWindowTextArea.setAttribute(\"contenteditable\", \"true\");\r\n }\r\n };\r\n\r\n this.addAlertTab = function (groupInfo, sync, twinkle) {\r\n if (_this.messageWindowViewType !== EChat.ViewType.OpenView) {\r\n openView();\r\n }\r\n const key = groupInfo.MessageGroupID;\r\n let chatTabController = _this.chatTabList[key];\r\n if (!chatTabController) {\r\n chatTabController = new EChat.ChatTabController(groupInfo, _this);\r\n headerElement.append(chatTabController.createHeadElement());\r\n dialogElement.append(chatTabController.createContentElement());\r\n addTab(key, chatTabController);\r\n _this.resizeTab();\r\n _this.switchWindowType(groupInfo.GroupType);\r\n chatTabController.drawHistoryMessages(groupInfo.Messages);\r\n chatTabController.windowScroll();\r\n }\r\n _this.topTab(chatTabController, sync, twinkle);\r\n };\r\n\r\n this.topTab = function (chatTabController, sync, twinkle, focusFlag) {\r\n if (_this.currentTab !== chatTabController) {\r\n removeFloatLinkElement();\r\n removeFloatFileElement();\r\n windowElement.style.zIndex = EChat.Util.draggableZIndex();\r\n\r\n if (_this.currentTab) {\r\n _this.currentTab.hideTab();\r\n }\r\n chatTabController.showTab(sync, twinkle);\r\n _this.currentTab = chatTabController;\r\n // Task 689566: eChat: Bell Icon gets messed up when opening eChat Groups with both muted and unmuted notifications\r\n\r\n if (_this.messageWindowViewType === EChat.ViewType.OpenView) {\r\n _this.switchWindowType(chatTabController.GroupInfo.GroupType, focusFlag);\r\n }\r\n\r\n if (!_this.currentTab.PreMessage) {\r\n _this.currentTab.PreMessage = \"\";\r\n }\r\n if (_this.currentTab.SearchInfo) {\r\n searchRestore(_this.currentTab.SearchInfo);\r\n } else if (_this.messageWindowViewType === EChat.ViewType.OpenView) {\r\n removeSearchElement();\r\n }\r\n inputArea.setValue(_this.currentTab.PreMessage);\r\n _this.updateCharaterCounter();\r\n\r\n _this.DisabledInputArr(false);\r\n\r\n _this.currentTab.bottomScroll();\r\n _this.currentTab.showTaskTitle();\r\n }\r\n };\r\n\r\n this.updateCharaterCounter = function () {\r\n const count = inputArea.getValueCount();\r\n const charatersLeft = 4000 - Number(count);\r\n\r\n const msgWarning = sendElement.querySelector(\".eChatWarning\");\r\n const msgNumber = sendElement.querySelector(\".eChatNumber\");\r\n if (!msgWarning || !msgNumber) {\r\n return;\r\n }\r\n\r\n if (charatersLeft >= 0) {\r\n // Task 1067218: DSDLink: eChat in the new Mobile Framework\r\n if (EChat.MainPageController.ClientOS === \"PC\") {\r\n msgWarning.innerHTML = \"Available Characters Remaining:\";\r\n } else {\r\n msgWarning.innerHTML = \"Available Characters:\";\r\n }\r\n msgWarning.style.color = \"var(--neutral-50)\";\r\n msgNumber.innerHTML = charatersLeft;\r\n } else {\r\n msgWarning.style.color = \"var(--red-50)\";\r\n msgWarning.innerHTML = \"Message is too long, the message will not be sent:\";\r\n msgNumber.innerHTML = \"\";\r\n }\r\n };\r\n\r\n const sendingMessage = function () {\r\n removeFloatFileElement();\r\n removeFloatLinkElement();\r\n removeSearchElement();\r\n const eChatDataProvider = EChat.DataProvider;\r\n let orignalText = inputArea.getValue();\r\n orignalText = EChat.Util.urlConverter(orignalText);\r\n const imgObj = inputArea.processImgData();\r\n imgObj.htmlString = EChat.Util.urlConverter(imgObj.htmlString);\r\n // Task 1132060: echat: Future Send is not working\r\n const delayedSendTime = document.getElementById(\"echat_DelayedTime\") ? document.getElementById(\"echat_DelayedTime\").value : \"\";\r\n const TimeCreated = EChat.Util.getTimeStamp();\r\n const MessageGroupID = _this.currentTab.GroupInfo.MessageGroupID;\r\n const EncompassID = _this.currentTab.GroupInfo.EncompassID;\r\n let IsPublic = true;\r\n let Notify = true;\r\n // Task 947307: Ensuring that the eChat and Task Edit interface encourages users to create Public Task Details.\r\n let NotifyInternal = true;\r\n // Task 1144583: eChat: Certain tasks show up with the title of None in the recent eChats section\r\n const TaskTitleDom = document.querySelector(\".eChat-MessageWindowTitle\").innerHTML;\r\n const taskTitle = TaskTitleDom.split(\": \")[1];\r\n\r\n if (_this.currentTab.GroupInfo.GroupType === SocketUtil.GroupType.Task) {\r\n if (_this.isPublicSwitch && !_this.isPublicSwitch.Checked()) {\r\n IsPublic = false;\r\n }\r\n\r\n if (_this.notifySwitch && !_this.notifySwitch.Checked()) {\r\n Notify = false;\r\n }\r\n\r\n if (_this.notifyInternalSwitch && !_this.notifyInternalSwitch.Checked()) {\r\n NotifyInternal = false;\r\n }\r\n }\r\n\r\n const messageObj = {\r\n MessageID: `-${TimeCreated}`,\r\n Message: orignalText,\r\n MessageGroupID,\r\n SenderAuthenticationID: eChatDataProvider.CurrentUserInfo.AuthenticationID,\r\n GroupType: _this.currentTab.GroupInfo.GroupType,\r\n TimeCreated,\r\n DelayedSendTime: delayedSendTime,\r\n IsPublic,\r\n SenderFullName: eChatDataProvider.CurrentUserInfo.FullName,\r\n SenderUserAvatar: eChatDataProvider.CurrentUserInfo.UserAvatar,\r\n TaskID: _this.currentTab.GroupInfo.TaskID\r\n };\r\n\r\n if (imgObj.htmlString !== \"\" && imgObj.htmlString !== \"
\" && inputArea.getValueCount() <= EChat.Setting.CharactersOfMessage) {\r\n inputArea.setValue(\"\");\r\n if (EChat.FullWindowController.FullWindow && EChat.FullWindowController.TextArea) {\r\n setTimeout(() => {\r\n inputArea.setValue(\"\");\r\n }, 10);\r\n }\r\n _this.updateCharaterCounter();\r\n _this.currentTab.PreMessage = \"\";\r\n // Task 1046811: eChat displays messages in incorrect order\r\n _this.currentTab.drawNewMessage(messageObj, true);\r\n\r\n if (imgObj.imgList.length === 0) {\r\n imgObj.imgList = null;\r\n }\r\n eChatDataProvider.SendMessage({\r\n messageGroupID: messageObj.MessageGroupID,\r\n messageMark: TimeCreated,\r\n messageBody: imgObj.htmlString,\r\n imgData: imgObj.imgList,\r\n delayedSendTime: (new Date(delayedSendTime)).getTime(),\r\n taskID: messageObj.TaskID,\r\n taskSourceEncompassID: EncompassID,\r\n isPublic: IsPublic,\r\n notify: Notify,\r\n notifyInternal: NotifyInternal,\r\n // Task 1144583: eChat: Certain tasks show up with the title of None in the recent eChats section\r\n taskTitle: !EC_Fmt.isNull(taskTitle) ? taskTitle : \"\"\r\n });\r\n }\r\n };\r\n\r\n this.receiveNewMessage = function (msg, groupId) {\r\n const chatTab = _this.chatTabList[groupId];\r\n if (chatTab && !document.getElementById(`messageblock_${msg.MessageID}`)) {\r\n if (_this.messageWindowViewType === EChat.ViewType.OpenView) {\r\n if (chatTab === _this.currentTab) {\r\n setTimeout(() => {\r\n _this.currentTab.syncGroupLastReadTime();\r\n }, 3000);\r\n _this.currentTab.drawNewMessage(msg);\r\n } else {\r\n if (parseInt(msg.SenderAuthenticationID) !== EChat.DataProvider.CurrentUserInfo.AuthenticationID) {\r\n chatTab.twinkleOn(true);\r\n }\r\n chatTab.drawNewMessage(msg);\r\n }\r\n } else if (_this.messageWindowViewType === EChat.ViewType.MinimizeView) {\r\n if (chatTab !== _this.currentTab) {\r\n const minimizeElementSpan = minimizeElement.querySelector(\"span\");\r\n if (minimizeElementSpan) {\r\n minimizeElementSpan.setAttribute(\"title\", chatTab.TabName);\r\n minimizeElementSpan.textContent = chatTab.TabName;\r\n }\r\n _this.topTab(chatTab, false, false);\r\n }\r\n if (parseInt(msg.SenderAuthenticationID) !== EChat.DataProvider.CurrentUserInfo.AuthenticationID) {\r\n twinkleOn(true);\r\n chatTab.twinkleOn(false);\r\n }\r\n chatTab.drawNewMessage(msg);\r\n }\r\n }\r\n };\r\n\r\n const searchRestore = function (searchInfo) {\r\n if (searchInfo) {\r\n searchElement.innerHTML = \"\";\r\n searchElement.append(createSearchElement());\r\n const InputToolInput = document.querySelector(\".eChat-InputToolInput\");\r\n if (InputToolInput) {\r\n InputToolInput.value = searchInfo.SearchText;\r\n }\r\n const SearchItem = document.querySelector(\"select.eChat-SearchItem\");\r\n if (SearchItem) {\r\n SearchItem.value = searchInfo.SearchDate;\r\n }\r\n if (searchInfo.Search === true) {\r\n const SearchButton = document.querySelector(\".eChat-SearchButton\");\r\n if (SearchButton) {\r\n SearchButton.click();\r\n }\r\n } else {\r\n removeSearchDisplayElement();\r\n }\r\n }\r\n };\r\n};\r\n\r\nEChat.ChatTabController = function (messageGroup, messageWindowController) {\r\n const _this = this;\r\n\r\n this.GroupInfo = messageGroup;\r\n this.ID = messageGroup.MessageGroupID;\r\n this.TabName = EChat.DataProvider.GetGroupName(messageGroup);\r\n this.targetWindowController = messageWindowController;\r\n this.isTwinkle = false;\r\n this.PreMessage = \"\";\r\n this.TaskTitle = \"\";\r\n this.TabCreateTime = EChat.Util.getTimeStamp();\r\n let viewMoreCount = 0;\r\n let syncDate = 0;\r\n let lastMessageID = \"\";\r\n let lastScrollTop = 0;\r\n let isScrollBottom = false;\r\n let tabMenu = null;\r\n\r\n this.updateGroupName = function () {\r\n _this.TabName = EChat.DataProvider.GetGroupName(_this.GroupInfo);\r\n const tabDom = document.getElementById(`span_${_this.ID}`);\r\n if (tabDom) {\r\n tabDom.innerText = _this.TabName;\r\n }\r\n };\r\n\r\n const createMenuElement = async function () {\r\n let result = null;\r\n if (_this.GroupInfo.GroupType === SocketUtil.GroupType.Message || _this.GroupInfo.GroupType === SocketUtil.GroupType.Task) {\r\n result = EC_Fmt.HtmlStrToElement(\"\");\r\n result.addEventListener(\"mousedown\", (e) => {\r\n e.stopPropagation();\r\n });\r\n EChat.Util.PreventScroll(result);\r\n\r\n let userList = [];\r\n let error = \"\";\r\n if (_this.GroupInfo.GroupType === SocketUtil.GroupType.Task) {\r\n const messageGroupID = await EChat.DataProvider.GetTaskPublicMessageGroupID(_this.GroupInfo.MessageGroupID);\r\n if (messageGroupID) {\r\n userList = await EChat.DataProvider.GetGroupUserInfo(messageGroupID);\r\n } else {\r\n error = \"The group does not exist.\";\r\n }\r\n } else {\r\n userList = await EChat.DataProvider.GetGroupUserInfo(_this.GroupInfo.MessageGroupID);\r\n }\r\n\r\n let topTxt = `Members ${userList.length}`;\r\n if (error) {\r\n topTxt = error;\r\n }\r\n\r\n const topElement = EC_Fmt.HtmlStrToElement(`
${topTxt}
`);\r\n if (_this.GroupInfo.GroupType === SocketUtil.GroupType.Message && _this.GroupInfo.PostPermission !== EChat.PostPermissionType.ReadOnly) {\r\n // Task 1074079:eChat: Close window buttons do not use the standard UI Kit\r\n const groupEditBtn = EC_Fmt.HtmlStrToElement(\"\");\r\n groupEditBtn.addEventListener(\"click\", () => {\r\n EChat.GroupSettingController.openGroupSettingWindow(_this.GroupInfo.MessageGroupID);\r\n });\r\n topElement.append(groupEditBtn);\r\n }\r\n\r\n result.append(topElement);\r\n for (let i = 0; i < userList.length; i++) {\r\n const userInfo = userList[i];\r\n if (userInfo) {\r\n const divElement = EC_Fmt.HtmlStrToElement(\"
\");\r\n\r\n let iconUrl;\r\n if (!userInfo.Icon) {\r\n iconUrl = EChat.Setting.DefaultUserIcon;\r\n } else {\r\n iconUrl = userInfo.Icon;\r\n }\r\n\r\n const nameSpan = EC_Fmt.HtmlStrToElement(`${userInfo.Name}`);\r\n const iconImgSpan = EC_Fmt.HtmlStrToElement(\"\");\r\n const iconSpan = EC_Fmt.HtmlStrToElement(``);\r\n iconImgSpan.append(iconSpan);\r\n divElement.append(iconImgSpan);\r\n divElement.append(nameSpan);\r\n result.append(divElement);\r\n }\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n this.closeEvent = function () {\r\n if (EChat.eChatMoving) {\r\n EChat.eChatMoving = false;\r\n }\r\n if (_this.targetWindowController.chatTabListCount > 1) {\r\n if (_this.GroupInfo.GroupType === SocketUtil.GroupType.System) {\r\n _this.targetWindowController.deleteTab(_this.GroupInfo.MessageGroupID);\r\n } else {\r\n _this.targetWindowController.deleteTab(_this.GroupInfo.MessageGroupID);\r\n }\r\n\r\n _this.targetWindowController.resizeTab();\r\n // Task 941875: Task title was not updated correctly when echat closed chat tab\r\n if (_this === _this.targetWindowController.currentTab) {\r\n const tabList = Object.keys(_this.targetWindowController.chatTabList);\r\n for (let i = tabList.length - 1; i >= 0; i--) {\r\n const openedTab = _this.targetWindowController.chatTabList[tabList[i]];\r\n if (openedTab?.GroupInfo) {\r\n _this.targetWindowController.addRecentTab(openedTab.GroupInfo, false, false);\r\n break;\r\n }\r\n }\r\n _this.closeTab();// true\r\n } else {\r\n _this.closeTab();// false\r\n }\r\n } else {\r\n _this.targetWindowController.closeMessageWindow();\r\n }\r\n _this.targetWindowController = null;\r\n };\r\n\r\n this.createHeadElement = function () {\r\n const msgItem = EC_Fmt.HtmlStrToElement(`
  • `);\r\n const msgItemInner = EC_Fmt.HtmlStrToElement(\"
    \");\r\n\r\n // Task 1149732: Update 'eChat' page to new button component\r\n const nameDisplayElement = EC_Fmt.HtmlStrToElement(`${_this.TabName}`);\r\n nameDisplayElement.setAttribute(\"title\", _this.TabName);\r\n\r\n // Task 1074079: eChat: Close window buttons do not use the standard UI Kit\r\n // Task 1149732: Update 'eChat' page to new button component\r\n // const closeElement = EC_Fmt.HtmlStrToElement(\"\");\r\n const closeElement = EC_Fmt.HtmlStrToElement(\"\");\r\n closeElement.addEventListener(\"click\", (e) => {\r\n _this.closeEvent();\r\n e.stopPropagation();\r\n });\r\n\r\n msgItemInner.append(nameDisplayElement);\r\n msgItemInner.append(closeElement);\r\n msgItem.append(msgItemInner);\r\n\r\n msgItem.addEventListener(\"click\", async () => {\r\n if (_this === _this.targetWindowController.currentTab) {\r\n if (!tabMenu || (tabMenu?.clientWidth === 0)) {\r\n tabMenu = await createMenuElement(msgItem);\r\n if (tabMenu) {\r\n msgItem.append(tabMenu);\r\n tabMenu.style.display = \"block\";\r\n }\r\n }\r\n } else {\r\n _this.targetWindowController.topTab(_this, true, false);\r\n }\r\n });\r\n\r\n msgItem.addEventListener(\"mouseenter\", function () {\r\n this.querySelectorAll(\".CloseDialog\").forEach((dom) => {\r\n dom.style.display = \"block\";\r\n });\r\n });\r\n\r\n msgItem.addEventListener(\"mouseleave\", function () {\r\n this.querySelectorAll(\".CloseDialog\").forEach((dom) => {\r\n dom.style.display = \"none\";\r\n });\r\n });\r\n\r\n return msgItem;\r\n };\r\n\r\n const headImgClickEvent = function (authID, userName, userMemberCount) {\r\n if (parseInt(userMemberCount) === 2 && authID > 0) {\r\n window.open(`./Home?DashboardID=${ECP.CommonDashboards.TableView}&TableName=Users&Search=AuthenticationID~${authID}`);\r\n } else {\r\n const eChatDataProvider = EChat.DataProvider;\r\n const userStr = eChatDataProvider.GetUserStrByUserList([authID, eChatDataProvider.CurrentUserInfo.AuthenticationID]);\r\n EChat.DataProvider.GetGroupInfoByAuthIDList(userStr).then((groupInfo) => {\r\n EChat.MainPageController.getMessageWindow(groupInfo.MessageGroupID).addRecentTab(groupInfo, false);\r\n });\r\n }\r\n };\r\n\r\n this.createContentElement = function () {\r\n const chattingBoxElement = EC_Fmt.HtmlStrToElement(`
    `);\r\n EChat.Util.PreventScroll(chattingBoxElement);\r\n chattingBoxElement.addEventListener(\"scroll\", scrollCheck);\r\n return chattingBoxElement;\r\n };\r\n\r\n const createSendTimeElement = function (sendTime) {\r\n return EC_Fmt.HtmlStrToElement(`
    ${EChat.Util.longToDataTime(sendTime)}
    `);\r\n };\r\n\r\n const createMessageElement = function (msgObj) {\r\n const eChatDataProvider = EChat.DataProvider;\r\n\r\n // Task 1147400: DSDLink: eChat in the new Mobile Framework(echat Dashboard)\r\n if (EChat.MainPageController.ClientOS === \"Mobile\") {\r\n if (EC_App) {\r\n const filterATag = /]*href=['\"]([^'\"]+)[^\"]*/gi;\r\n const ATag = msgObj.Message;\r\n const aTagResult = ATag.match(filterATag);\r\n if (!EC_Fmt.isNull(aTagResult)) {\r\n for (let i = 0; i < aTagResult.length; i++) {\r\n const URL_ID = EC_Fmt.HtmlStrToElement(`
    `);\r\n document.body.append(URL_ID);\r\n URL_ID.innerHTML = ATag;\r\n const aTag = URL_ID.querySelectorAll(\"a\");\r\n for (let j = 0; j < aTag.length; j++) {\r\n const href = aTag[j].href;\r\n // const filterUrl = /https?:\\/\\/(\\w+\\.)?(\\w+\\.)+(com\"|cn\"|)/gi;\r\n // const urlAddress = aTagResult[i].match(filterUrl);\r\n msgObj.Message = msgObj.Message.replace(`${aTagResult[j]}`, `
    ${senderName}
    `);\r\n const textElement = document.createElement(\"DIV\");\r\n const flexElement = EC_Fmt.HtmlStrToElement(\"
    \");\r\n if (!eChatDataProvider.IsCurrentUser(msgObj.SenderAuthenticationID)) {\r\n itemElement = EC_Fmt.HtmlStrToElement(`
    `);\r\n msgElement = EC_Fmt.HtmlStrToElement(\"
    \");\r\n headImgElement = EC_Fmt.HtmlStrToElement(\"\");\r\n senderNameElement.classList.add(\"MemberName\");\r\n textElement.classList.add(\"DialogBubbleHead\");\r\n textElement.classList.add(\"Left\");\r\n } else {\r\n itemElement = EC_Fmt.HtmlStrToElement(`
    `);\r\n delayimgElement = EC_Fmt.HtmlStrToElement(\"\");\r\n msgElement = EC_Fmt.HtmlStrToElement(\"
    \");\r\n delaymessge = EC_Fmt.HtmlStrToElement(`
    This message will be delivered on ${msgObj.DelayedSendTime}
    `);\r\n headImgElement = EC_Fmt.HtmlStrToElement(\"\");\r\n senderNameElement.classList.add(\"MemberNameRight\");\r\n textElement.classList.add(\"Left\");\r\n textElement.classList.add(\"DialogBubbleHead\");\r\n }\r\n\r\n // MessageUserHeadImg\r\n const userMemberCount = _this.GroupInfo.Users.length;\r\n if (msgObj.SenderUserAvatar) {\r\n headImgElement.setAttribute(\"src\", msgObj.SenderUserAvatar);\r\n } else {\r\n headImgElement.setAttribute(\"src\", EChat.Setting.DefaultUserIcon);\r\n }\r\n\r\n if (!eChatDataProvider.IsCurrentUser(msgObj.SenderAuthenticationID)) {\r\n headImgElement.addEventListener(\"click\", () => {\r\n headImgClickEvent(msgObj.SenderAuthenticationID, userMemberCount);\r\n });\r\n }\r\n\r\n if (msgObj.SenderAuthenticationID <= 0) {\r\n headImgElement.style.cursor = \"default\";\r\n }\r\n\r\n const pElement = EC_Fmt.HtmlStrToElement(`

    `);\r\n\r\n // Task:208316 Task Edit: eChat messages sent from Task Edit do not display the Return Characters.when the message is first displayed. Very ugly to read in eChat\r\n msgObj.Message = msgObj.Message.replace(/\\n/g, \"
    \");\r\n pElement.append(EC_Fmt.HtmlStrToElement(`
    ${msgObj.Message}
    `));\r\n EChat.Util.CopyFormat(pElement);\r\n\r\n const chatBoxElement = document.getElementById(`chatBox_${_this.ID}`);\r\n EChat.Util.FileLoad(pElement, chatBoxElement, msgObj.SenderAuthenticationID, 423, 200);\r\n textElement.append(pElement);\r\n flexElement.append(textElement);\r\n msgElement.append(headImgElement);\r\n msgElement.append(senderNameElement);\r\n msgElement.append(document.createElement(\"DIV\"));\r\n msgElement.append(flexElement);\r\n itemElement.append(msgElement);\r\n\r\n if (msgObj.IsPublic === false || parseInt(msgObj.IsPublic) === 0) {\r\n const privateLabelContainer = document.createElement(\"DIV\");\r\n const privateLabel = EC_Fmt.HtmlStrToElement(\"Private\");\r\n if (!eChatDataProvider.IsCurrentUser(msgObj.SenderAuthenticationID)) {\r\n privateLabelContainer.classList.add(\"PrivateLeft\");\r\n privateLabelContainer.classList.add(\"Left\");\r\n } else {\r\n privateLabelContainer.classList.add(\"Right\");\r\n privateLabelContainer.classList.add(\"PrivateRight\");\r\n }\r\n privateLabelContainer.append(privateLabel);\r\n itemElement.append(privateLabelContainer);\r\n }\r\n\r\n if (msgObj.DelayedSendTime) {\r\n itemElement.append(delaymessge);\r\n flexElement.prepend(delayimgElement);\r\n }\r\n\r\n const TaskSourceEncompassID = _this.GroupInfo.GroupType === SocketUtil.GroupType.Task ? _this.GroupInfo.EncompassID : \"\";\r\n const isCurrTask = EChat.DataProvider.CurrentUserInfo && EChat.DataProvider.CurrentUserInfo.PrimaryEncompassID === TaskSourceEncompassID;\r\n if (TaskSourceEncompassID === \"\" || isCurrTask) {\r\n const SavedStatus = msgObj.MessageID && EChat.DataProvider.SavedMessage && EChat.DataProvider.SavedMessage.includes(msgObj.MessageID.toString());\r\n const SavedMessageIcon = EC_Fmt.HtmlStrToElement(``);\r\n if (SavedStatus) {\r\n SavedMessageIcon.style.display = \"inline-block\";\r\n SavedMessageIcon.classList.add(\"ews-icon-collection\");\r\n } else {\r\n SavedMessageIcon.classList.add(\"ews-icon-uncollection\");\r\n }\r\n\r\n SavedMessageIcon.setAttribute(\"savedkey\", msgObj.MessageID);\r\n SavedMessageIcon.addEventListener(\"click\", () => {\r\n // Sent message . savedkey updated asynchronously\r\n msgObj.MessageID = SavedMessageIcon.getAttribute(\"savedkey\");\r\n EChat.MainPageController.SavedButtonEvent(msgObj, _this.GroupInfo);\r\n });\r\n\r\n if (eChatDataProvider.IsCurrentUser(msgObj.SenderAuthenticationID)) {\r\n flexElement.prepend(SavedMessageIcon);\r\n } else {\r\n flexElement.append(SavedMessageIcon);\r\n }\r\n }\r\n\r\n itemElement.addEventListener(\"click\", function (e) {\r\n const messageid = this.getAttribute(\"messageid\");\r\n const sender = this.getAttribute(\"sender\");\r\n\r\n if (e.altKey && messageid && messageid[0] !== \"-\" && document.getElementById(`message_${messageid}`).innerText !== \"[Recalled a message]\") {\r\n if (_this.GroupInfo.GroupType === SocketUtil.GroupType.Message && eChatDataProvider.IsCurrentUser(sender)) {\r\n EWS.Confirm(\"Recall this message ?\", () => {\r\n eChatDataProvider.RecallMessage(_this.ID, messageid);\r\n });\r\n }\r\n }\r\n });\r\n\r\n return itemElement;\r\n }\r\n return null;\r\n };\r\n\r\n const createFloatMessageElement = function () {\r\n let floatDiv = document.getElementById(`EChatFloatMessage_${_this.ID}`);\r\n if (floatDiv) {\r\n if (floatDiv.children.length > 0) {\r\n const msgSpan = floatDiv.children[0];\r\n if (EC_Fmt.Trn(msgSpan.textContent) === EC_Fmt.Trn(\"You have a new message\")) {\r\n msgSpan.innerHTML = `${EC_Fmt.Trn(\"You have\")} 2 ${EC_Fmt.Trn(\"new messages\")}`;\r\n } else if (msgSpan.children.length > 0) {\r\n const numSpan = msgSpan.children[0];\r\n numSpan.textContent = Number(numSpan.textContent) + 1;\r\n }\r\n }\r\n } else {\r\n floatDiv = EC_Fmt.HtmlStrToElement(`
    `);\r\n floatDiv.append(EC_Fmt.HtmlStrToElement(\"You have a new message\"));\r\n floatDiv.append(EC_Fmt.HtmlStrToElement(\"\"));\r\n\r\n floatDiv.addEventListener(\"click\", function () {\r\n scrollToBottom(this.getAttribute(\"groupid\"));\r\n });\r\n }\r\n return floatDiv;\r\n };\r\n\r\n this.bottomScroll = function () {\r\n if (isScrollBottom) {\r\n scrollToBottom(_this.ID);\r\n }\r\n };\r\n\r\n const scrollToBottom = function (messageGroupID) {\r\n const chatBoxElement = document.getElementById(`chatBox_${messageGroupID}`);\r\n if (chatBoxElement) {\r\n chatBoxElement.scrollTop = chatBoxElement.scrollHeight;\r\n }\r\n chatBoxElement.scrollTop = chatBoxElement.scrollHeight;\r\n isScrollBottom = true;\r\n };\r\n\r\n const removeFloatMessageElement = function () {\r\n const floatMessage = document.getElementById(`EChatFloatMessage_${_this.ID}`);\r\n if (floatMessage) {\r\n floatMessage.remove();\r\n }\r\n };\r\n\r\n // Not called anywhere\r\n // this.createBottomMessageElement = function (message, callback) {\r\n // _this.removeBottomMessageElement();\r\n // const chatBoxElement = document.getElementById(`chatBox_${_this.ID}`);\r\n // const link = EC_Fmt.HtmlStrToElement(``);\r\n // link.addEventListener(\"click\", callback);\r\n // chatBoxElement.append(link);\r\n // };\r\n\r\n this.removeBottomMessageElement = function () {\r\n const bootom = document.getElementById(`EChatBottomLink${_this.ID}`);\r\n if (bootom) {\r\n bootom.remove();\r\n }\r\n };\r\n\r\n this.AddTipElement = function (TipElement) {\r\n const chatBoxElement = document.getElementById(`chatBox_${_this.ID}`);\r\n if (TipElement && chatBoxElement) {\r\n TipElement.classList.add(\"EChatChatTip\");\r\n chatBoxElement.append(TipElement);\r\n _this.setScrollTop();\r\n }\r\n };\r\n\r\n const scrollCheck = function () {\r\n const chatBoxElement = document.getElementById(`chatBox_${_this.ID}`);\r\n if (chatBoxElement) {\r\n if (chatBoxElement.offsetHeight + chatBoxElement.scrollTop >= chatBoxElement.scrollHeight - 1) {\r\n isScrollBottom = true;\r\n removeFloatMessageElement();\r\n } else {\r\n isScrollBottom = false;\r\n }\r\n }\r\n };\r\n\r\n // Task 998916: Task information does not update when pulling up many eChats and clicking on eChat tabs.\r\n this.showTaskTitle = function (taskTitle) {\r\n if (taskTitle) {\r\n _this.TaskTitle = taskTitle;\r\n } else {\r\n taskTitle = _this.TaskTitle;\r\n }\r\n\r\n if (_this.targetWindowController && _this.targetWindowController.element && taskTitle) {\r\n const titleDom = _this.targetWindowController.element.querySelector(\".eChat-MessageWindowTitle\");\r\n if (titleDom) {\r\n titleDom.innerHTML = taskTitle;\r\n }\r\n }\r\n // Task 1147400: DSDLink: eChat in the new Mobile Framework(echat Dashboard)\r\n EChat.Util.resizeDialogMessage();\r\n };\r\n\r\n this.disablePublic = function (disable) {\r\n if (_this.targetWindowController && _this.targetWindowController.element) {\r\n const PubicTool = _this.targetWindowController.element.querySelector(\".eChat-MessageWindowPubicTool\");\r\n if (PubicTool) {\r\n if (disable) {\r\n PubicTool.style.display = \"none\";\r\n _this.targetWindowController.isPublicSwitch.Open();\r\n } else {\r\n PubicTool.style.display = \"inline-block\";\r\n }\r\n }\r\n }\r\n };\r\n\r\n // Task 947307: Ensuring that the eChat and Task Edit interface encourages users to create Public Task Details.\r\n this.disableNotifyInternal = function (disable) {\r\n if (_this.targetWindowController && _this.targetWindowController.element) {\r\n const NotifyInternal = _this.targetWindowController.element.querySelector(\".eChat-MessageWindowNotifyInternalTool\");\r\n if (NotifyInternal) {\r\n if (disable) {\r\n NotifyInternal.style.display = \"none\";\r\n _this.targetWindowController.notifyInternalSwitch.Close();\r\n } else {\r\n NotifyInternal.style.display = \"inline-block\";\r\n }\r\n }\r\n }\r\n };\r\n\r\n this.drawHistoryMessages = function (jsonObj, showAll) {\r\n const chatBoxElement = document.getElementById(`chatBox_${_this.ID}`);\r\n if (jsonObj && chatBoxElement) {\r\n let scrollTopNum = 0;\r\n const showMsgNum = jsonObj.length > EChat.Setting.MessageNumPerShow && !showAll ? EChat.Setting.MessageNumPerShow : jsonObj.length;\r\n for (let i = 0; i < showMsgNum; i++) {\r\n if (!chatBoxElement.querySelector(`#messageblock_${jsonObj[i].MessageID}`)) {\r\n const msgElement = createMessageElement(jsonObj[i]);\r\n if (msgElement) {\r\n chatBoxElement.prepend(msgElement);\r\n scrollTopNum += msgElement.offsetHeight;\r\n const timeElement = createSendTimeElement(jsonObj[i].TimeCreated);\r\n chatBoxElement.prepend(timeElement);\r\n scrollTopNum += timeElement.offsetHeight;\r\n\r\n if (!lastMessageID) {\r\n syncDate = jsonObj[i].TimeCreated;\r\n lastMessageID = jsonObj[i].MessageID;\r\n } else if (_this.GroupInfo.GroupType === SocketUtil.GroupType.Task && parseInt(jsonObj[i].MessageID) < parseInt(lastMessageID)) {\r\n lastMessageID = jsonObj[i].MessageID;\r\n syncDate = jsonObj[i].TimeCreated;\r\n } else if (_this.GroupInfo.GroupType !== SocketUtil.GroupType.Task && jsonObj[i].TimeCreated < syncDate) {\r\n syncDate = jsonObj[i].TimeCreated;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (viewMoreCount === 0) {\r\n chatBoxElement.scrollTop = chatBoxElement.scrollHeight;\r\n chatBoxElement.querySelectorAll(\"img\").forEach((dom) => {\r\n dom.addEventListener(\"load\", () => {\r\n lastScrollTop = chatBoxElement.scrollTop;\r\n });\r\n });\r\n isScrollBottom = true;\r\n } else {\r\n chatBoxElement.scrollTop += scrollTopNum;\r\n }\r\n lastScrollTop = chatBoxElement.scrollTop;\r\n }\r\n };\r\n\r\n this.scorllToMessage = function (messsageWindow, groupInfo, MessageKey) {\r\n if (!MessageKey) {\r\n return;\r\n }\r\n const windowElement = messsageWindow.element;\r\n const messageDom = windowElement.querySelector(`#message_${MessageKey}`);\r\n if (!messageDom) {\r\n return;\r\n }\r\n\r\n // Task 996524: Move the task link back to the bottom of the eChat window\r\n const headRect = windowElement.querySelector(\".eChat-MessageWindowHead\").getBoundingClientRect();\r\n\r\n const limitY = headRect.y + headRect.height;\r\n const moveHight = limitY - messageDom.getBoundingClientRect().y;\r\n const chatBoxElement = document.getElementById(`chatBox_${groupInfo.MessageGroupID}`);\r\n if (chatBoxElement) {\r\n chatBoxElement.scrollTop = chatBoxElement.scrollTop - moveHight - 70;\r\n }\r\n };\r\n\r\n const scrollEvent = async function () {\r\n scrollCheck();\r\n let noMessage = false;\r\n if (this.scrollTop === 0 && this.scrollHeight > 0) {\r\n noMessage = await scrollPage();\r\n }\r\n _this.targetWindowController.HideUnreadButton(noMessage);\r\n };\r\n\r\n const scrollPage = async function () {\r\n if (viewMoreCount >= 0) {\r\n viewMoreCount++;\r\n const showCount = EChat.Setting.MessageNumPerShow * viewMoreCount;\r\n const moreMessageElement = document.createElement(\"DIV\");\r\n\r\n const messageList = await EChat.DataProvider.getGroupMessages(_this.GroupInfo.MessageGroupID);\r\n if (messageList.length > showCount) {\r\n const showMsgList = messageList.splice(showCount, EChat.Setting.MessageNumPerShow);\r\n _this.drawHistoryMessages(showMsgList);\r\n if (showMsgList.length > 0) {\r\n syncDate = showMsgList[showMsgList.length - 1].TimeCreated;\r\n lastMessageID = showMsgList[showMsgList.length - 1].MessageID;\r\n }\r\n } else {\r\n if (messageList.length > 0) {\r\n syncDate = messageList[messageList.length - 1].TimeCreated;\r\n lastMessageID = messageList[messageList.length - 1].MessageID;\r\n }\r\n viewMoreCount = -1;\r\n await getServerMessageHistory();\r\n }\r\n\r\n const chatBoxElement = document.getElementById(`chatBox_${_this.ID}`);\r\n if (chatBoxElement) {\r\n chatBoxElement.prepend(moreMessageElement);\r\n }\r\n } else if (viewMoreCount === -1) {\r\n await getServerMessageHistory();\r\n }\r\n\r\n const noMessage = viewMoreCount < -1;\r\n return noMessage;\r\n };\r\n\r\n this.windowScroll = async function (TriggerOnce) {\r\n // Task 996347: Some issues with the new version of Web UI eChat\r\n const chatBoxElement = document.getElementById(`chatBox_${_this.ID}`);\r\n if (!chatBoxElement) {\r\n return true;\r\n }\r\n chatBoxElement.removeEventListener(\"scroll\", scrollEvent);\r\n\r\n let result = true;\r\n if (TriggerOnce) {\r\n result = await scrollPage();\r\n }\r\n\r\n chatBoxElement.addEventListener(\"scroll\", scrollEvent);\r\n\r\n return result;\r\n };\r\n\r\n const getServerMessageHistory = async function () {\r\n if (parseInt(syncDate) !== 0) {\r\n let data;\r\n if (_this.GroupInfo.GroupType === SocketUtil.GroupType.Task) {\r\n data = await EChat.DataProvider.getTaskDetailHistory(_this.GroupInfo.TaskID, _this.GroupInfo.EncompassID, 0, lastMessageID, false);\r\n } else {\r\n data = await EChat.DataProvider.getMessageHistory(_this.GroupInfo.MessageGroupID, syncDate, null);\r\n }\r\n\r\n let messageList = [];\r\n if (data) {\r\n if (_this.GroupInfo.GroupType === SocketUtil.GroupType.Task) {\r\n messageList = data.TaskDetails;\r\n } else {\r\n messageList = data;\r\n }\r\n }\r\n\r\n if (messageList.length > 0) {\r\n syncDate = messageList[messageList.length - 1].TimeCreated;\r\n lastMessageID = messageList[messageList.length - 1].MessageID;\r\n _this.drawHistoryMessages(messageList);\r\n } else {\r\n viewMoreCount = -2;// end\r\n }\r\n }\r\n };\r\n\r\n // Task 1046811: eChat displays messages in incorrect order\r\n this.drawNewMessage = function (msgObj, isAddToBottom) {\r\n if (msgObj) {\r\n const chatBoxElement = document.getElementById(`chatBox_${_this.ID}`);\r\n if (chatBoxElement) {\r\n if (!chatBoxElement.querySelector(`#messageblock_${msgObj.MessageID}`)) {\r\n const msgElement = createMessageElement(msgObj);\r\n if (msgElement) {\r\n const timeElement = createSendTimeElement(msgObj.TimeCreated);\r\n // Task 1035772: Echat chat messages are displayed in incorrect order\r\n let lastDom = null;\r\n let lastDomTime = -1;\r\n\r\n chatBoxElement.querySelectorAll(\".SendTime\").forEach((dom) => {\r\n const messagemark = parseInt(dom.getAttribute(\"messagemark\"));\r\n if (!EC_Fmt.isNumber(messagemark) && msgObj.TimeCreated < messagemark && (messagemark < lastDomTime || lastDomTime === -1)) {\r\n lastDomTime = messagemark;\r\n lastDom = dom;\r\n }\r\n });\r\n\r\n if (!isAddToBottom && lastDom) {\r\n chatBoxElement.insertBefore(msgElement, lastDom);\r\n chatBoxElement.insertBefore(timeElement, msgElement);\r\n } else {\r\n chatBoxElement.append(timeElement);\r\n chatBoxElement.append(msgElement);\r\n if (!isScrollBottom && parseInt(msgObj.SenderAuthenticationID) !== EChat.DataProvider.CurrentUserInfo.AuthenticationID) {\r\n const floatElement = createFloatMessageElement(msgObj);\r\n chatBoxElement.append(floatElement);\r\n } else {\r\n chatBoxElement.scrollTop = chatBoxElement.scrollHeight;\r\n }\r\n }\r\n }\r\n\r\n const timeStamp = EChat.Util.getTimeStamp();\r\n EChat.DataProvider.LastMessageTime[msgObj.MessageGroupID] = timeStamp;\r\n }\r\n }\r\n }\r\n };\r\n\r\n this.scrollToBotton = function () {\r\n const chatBoxElement = document.getElementById(`chatBox_${_this.ID}`);\r\n if (chatBoxElement) {\r\n chatBoxElement.scrollTop = chatBoxElement.scrollHeight;\r\n }\r\n };\r\n\r\n this.refreshMessageList = function (MessageObjList) {\r\n MessageObjList = MessageObjList.sort((a, b) => a.TimeCreated - b.TimeCreated);\r\n for (let i = 0, len = MessageObjList.length; i < len; i++) {\r\n const msg = MessageObjList[i];\r\n if (msg.TimeCreated > syncDate) {\r\n _this.targetWindowController.receiveNewMessage(msg, _this.ID);\r\n }\r\n }\r\n };\r\n\r\n this.clearMessage = function () {\r\n const chatBox = document.getElementById(`chatBox_${_this.ID}`);\r\n if (chatBox) {\r\n chatBox.innerHTML = \"\";\r\n }\r\n viewMoreCount = 0;\r\n syncDate = 0;\r\n lastMessageID = \"\";\r\n lastScrollTop = 0;\r\n };\r\n\r\n this.closeTab = function () {\r\n const header = document.getElementById(`header_${_this.ID}`);\r\n if (header) {\r\n header.remove();\r\n }\r\n\r\n const chatBox = document.getElementById(`chatBox_${_this.ID}`);\r\n if (chatBox) {\r\n chatBox.remove();\r\n }\r\n };\r\n\r\n this.showTab = function (sync, twinkle) {\r\n if (sync) {\r\n _this.syncGroupLastReadTime();\r\n }\r\n if (twinkle) {\r\n _this.twinkleOn(false);\r\n } else {\r\n _this.twinkleOff();\r\n }\r\n const chatBoxElement = document.getElementById(`chatBox_${_this.ID}`);\r\n if (chatBoxElement) {\r\n chatBoxElement.scrollTop = lastScrollTop;\r\n chatBoxElement.style.display = \"block\";\r\n }\r\n document.getElementById(`header_${_this.ID}`).classList.add(\"CurrentHead\");\r\n };\r\n\r\n this.syncGroupLastReadTime = function () {\r\n if (_this.GroupInfo && (_this.GroupInfo.GroupType === SocketUtil.GroupType.Message\r\n || _this.GroupInfo.GroupType === SocketUtil.GroupType.Task\r\n || _this.GroupInfo.GroupType === SocketUtil.GroupType.System)) {\r\n EChat.DataProvider.SyncLastReadTime(_this.GroupInfo.MessageGroupID);\r\n }\r\n };\r\n\r\n let twinkleHandle = null;\r\n\r\n this.twinkleOn = function (isPlay) {\r\n const target = document.getElementById(`header_${_this.ID}`);\r\n if (target) {\r\n if (isPlay) {\r\n if (!twinkleHandle) {\r\n twinkleHandle = setInterval(() => {\r\n target.classList.toggle(\"TwinkleOn\");\r\n }, 600);\r\n\r\n setTimeout(() => {\r\n if (twinkleHandle) {\r\n target.classList.add(\"TwinkleOn\");\r\n clearInterval(twinkleHandle);\r\n twinkleHandle = null;\r\n }\r\n }, 3000);\r\n }\r\n } else {\r\n target.classList.add(\"TwinkleOn\");\r\n }\r\n _this.isTwinkle = true;\r\n }\r\n };\r\n\r\n this.twinkleOff = function () {\r\n const target = document.getElementById(`header_${_this.ID}`);\r\n if (target) {\r\n target.classList.remove(\"TwinkleOn\");\r\n if (twinkleHandle) {\r\n clearInterval(twinkleHandle);\r\n twinkleHandle = null;\r\n }\r\n _this.isTwinkle = false;\r\n }\r\n };\r\n\r\n this.hideTab = function () {\r\n _this.hideMenu();\r\n const chatBoxElement = document.getElementById(`chatBox_${_this.ID}`);\r\n if (chatBoxElement) {\r\n lastScrollTop = chatBoxElement.scrollTop;\r\n chatBoxElement.style.display = \"none\";\r\n }\r\n\r\n const header = document.getElementById(`header_${_this.ID}`);\r\n if (header) {\r\n header.classList.remove(\"CurrentHead\");\r\n }\r\n };\r\n\r\n this.setScrollTop = function () {\r\n const chatBoxElement = document.getElementById(`chatBox_${_this.ID}`);\r\n if (chatBoxElement) {\r\n if (isScrollBottom) {\r\n chatBoxElement.scrollTop = chatBoxElement.scrollHeight;\r\n } else {\r\n chatBoxElement.scrollTop = lastScrollTop;\r\n }\r\n }\r\n };\r\n\r\n this.getScrollTop = function () {\r\n const chatBox = document.getElementById(`chatBox_${_this.ID}`);\r\n if (chatBox) {\r\n lastScrollTop = chatBox.scrollTop;\r\n }\r\n };\r\n\r\n this.hideMenu = function () {\r\n const eChatDialogTabMenus = document.getElementsByClassName(\"eChatDialogTabMenu\");\r\n for (let i = 0; i < eChatDialogTabMenus.length; i++) {\r\n eChatDialogTabMenus[i].remove();\r\n }\r\n };\r\n return _this;\r\n};\r\n\r\nEChat.CopyMessageController = (function () {\r\n const CopyMessageControllerClass = function () {\r\n const _this = this;\r\n this.Type = null;\r\n this.GroupInfo = null;\r\n let syncDate = 0;\r\n let SaveCallBack = null;\r\n let Scrolling = false;\r\n let lastClickElement = null;\r\n\r\n this.ShowCopyMessageDialog = function (MessageGroupID, Type, CallBack) {\r\n SaveCallBack = CallBack;\r\n _this.Type = Type;\r\n const echat_CopyMessageList = document.getElementById(\"echat_CopyMessageList\");\r\n if (echat_CopyMessageList) {\r\n _this.ClearCopyMessageDialog();\r\n const echat_CopyMessage_Dialog = document.getElementById(\"echat_CopyMessage_Dialog\");\r\n const cpoy_Window = echat_CopyMessage_Dialog.querySelector(\".eChat-MessageWindow\");\r\n echat_CopyMessage_Dialog.style.display = \"block\";\r\n echat_CopyMessage_Dialog.querySelector(\".eChat-CloseButton\").addEventListener(\"click\", _this.ClearCopyMessageDialog);\r\n echat_CopyMessage_Dialog.querySelector(\"#SaveSelectMessageBtn\").addEventListener(\"click\", SaveMessageToTaskDetail);\r\n cpoy_Window.style.zIndex = EChat.Util.draggableZIndex();\r\n EChat.Util.ShowLoading(cpoy_Window);\r\n\r\n echat_CopyMessage_Dialog.addEventListener(\"click\", () => {\r\n document.querySelector(\"#echat_CopyMessage_Dialog > .eChat-MessageWindow\").style.zIndex = EChat.Util.draggableZIndex();\r\n });\r\n\r\n EChat.Util.dragDialog({\r\n dialog: echat_CopyMessage_Dialog.querySelector(\".eChat-MessageWindow\"),\r\n handle: document.querySelector(\".eChatDragTarget\"),\r\n handleWidthFix: 0,\r\n handleHeightFix: 0,\r\n start(dom) {\r\n dom.style.zIndex = EChat.Util.draggableZIndex();\r\n },\r\n stop(dom) {\r\n dom.style.height = \"auto\";\r\n }\r\n });\r\n\r\n const initMessage = function () {\r\n EChat.DataProvider.GetGroupInfoByGroupID(MessageGroupID).then((GroupInfo) => {\r\n _this.GroupInfo = GroupInfo;\r\n if (GroupInfo.Messages.length > 0) {\r\n GroupInfo.Messages = GroupInfo.Messages.sort((a, b) => b.TimeCreated - a.TimeCreated);\r\n const chatBoxElement = document.getElementById(\"echat_CopyMessageList\");\r\n DrawHistoryCopyMessages(GroupInfo.Messages, chatBoxElement);\r\n }\r\n echat_CopyMessageList.scrollTop = echat_CopyMessageList.scrollHeight;\r\n EWS.HideLoading();\r\n });\r\n };\r\n\r\n const SaveSelectMessageBtn = document.getElementById(\"SaveSelectMessageBtn\");\r\n SaveSelectMessageBtn.classList.add(\"CopyToNewTask\");\r\n\r\n const EChat_Copy_Select_Div = document.getElementById(\"EChat_Copy_Select_Div\");\r\n switch (_this.Type) {\r\n case \"CopyToSpecifiedTask\":\r\n SaveSelectMessageBtn.classList.remove(\"CopyToNewTask\");\r\n EChat_Copy_Select_Div.style.display = \"block\";\r\n\r\n let placeholder = \"Task\";\r\n if (Distributor.indexOf(\"Support\") === 0) {\r\n placeholder = \"New Task\";\r\n }\r\n\r\n ECP.HTML.FillWithAutoComplete(EChat_Copy_Select_Div, {\r\n InputName: \"EChat_CopyTaskID_Input\",\r\n CurValue: \"\",\r\n IsSearch: false,\r\n Width: 0,\r\n RefTable: \"Tasks\",\r\n RefField: \"TaskID\",\r\n RefFieldDisplay: \"Task\",\r\n DataType: ECP.DataType._Integer,\r\n RefFieldDisplayDataType: ECP.DataType._Text,\r\n Required: false,\r\n RandomID: false,\r\n Translate: false,\r\n LimitToRefList: true,\r\n Placeholder: placeholder\r\n }).then(() => {\r\n initMessage();\r\n });\r\n break;\r\n default:\r\n }\r\n } else {\r\n ECP.Dialog.Alert(\"Please click the EChat icon to initialize the interface.\");\r\n }\r\n };\r\n\r\n const CreateCopyMessageElement = function (msgObj, listDom) {\r\n if (msgObj.MessageID) {\r\n const messagesgElement = listDom.querySelector(`#copy_message_${msgObj.MessageID}`);\r\n if (messagesgElement) {\r\n return null;\r\n }\r\n }\r\n if (msgObj.Message) {\r\n const senderName = msgObj.SenderFullName;\r\n const headImgElement = EC_Fmt.HtmlStrToElement(\"\");\r\n const senderNameElement = EC_Fmt.HtmlStrToElement(`
    ${senderName}
    `);\r\n const textElement = document.createElement(\"DIV\");\r\n const flexElement = EC_Fmt.HtmlStrToElement(\"
    \");\r\n const itemElement = EC_Fmt.HtmlStrToElement(`
    `);\r\n const msgElement = EC_Fmt.HtmlStrToElement(\"
    \");\r\n textElement.classList.add(\"Left\");\r\n senderNameElement.classList.add(\"EChat_CopyMessage_MemberName\");\r\n textElement.classList.add(\"EChat_CopyMessage_DialogBubbleHead\");\r\n\r\n if (msgObj.SenderUserAvatar) {\r\n headImgElement.setAttribute(\"src\", msgObj.SenderUserAvatar);\r\n } else {\r\n headImgElement.setAttribute(\"src\", EChat.Setting.DefaultUserIcon);\r\n }\r\n headImgElement.style.cursor = \"default\";\r\n headImgElement.style.marginLeft = \"5px\";\r\n\r\n const pElement = EC_Fmt.HtmlStrToElement(`

    `);\r\n\r\n msgObj.Message = msgObj.Message.replace(/\\n/g, \"
    \");\r\n pElement.append(EC_Fmt.HtmlStrToElement(`
    ${msgObj.Message}
    `));\r\n EChat.Util.CopyFormat(pElement);\r\n\r\n const copyBoxElement = document.getElementById(`copyBox_${_this.GroupInfo.MessageGroupID}`);\r\n EChat.Util.FileLoad(pElement, copyBoxElement, msgObj.SenderAuthenticationID, 180, 81);\r\n\r\n // CopySelect\r\n const selectElement = EC_Fmt.HtmlStrToElement(``);\r\n selectElement.querySelector(\"input\").addEventListener(\"change\", (e) => {\r\n if (e.currentTarget.checked) {\r\n itemElement.classList.add(\"eChat-copy-message-select\");\r\n } else {\r\n itemElement.classList.remove(\"eChat-copy-message-select\");\r\n }\r\n // Task 1007704: eChat copy to Task not responding.\r\n const count = document.querySelectorAll(\"#echat_CopyMessageList input:checked\").length;\r\n document.querySelector(\"#echat_CopyMessage_Dialog .selectNum\").innerHTML = count;\r\n });\r\n\r\n itemElement.addEventListener(\"click\", (e) => {\r\n let input = selectElement.querySelector(\"input\");\r\n if (e.target !== input) {\r\n input.checked = !input.checked;\r\n EC_Fmt.TriggerEvent(input, \"change\");\r\n }\r\n\r\n if (e.shiftKey && lastClickElement && lastClickElement !== itemElement) {\r\n let startDom = itemElement;\r\n let endDom = lastClickElement;\r\n\r\n if (lastClickElement.getBoundingClientRect().y > itemElement.getBoundingClientRect().y) {\r\n startDom = lastClickElement;\r\n endDom = itemElement;\r\n }\r\n\r\n let count = 0;\r\n let currDom = startDom.previousSibling;\r\n while (currDom && count < 100) {\r\n if (currDom !== endDom) {\r\n input = currDom.querySelector(\"input\");\r\n input.checked = true;\r\n EC_Fmt.TriggerEvent(input, \"change\");\r\n } else {\r\n break;\r\n }\r\n currDom = currDom.previousSibling;\r\n count++;\r\n }\r\n window.getSelection().removeAllRanges();\r\n } else {\r\n lastClickElement = itemElement;\r\n }\r\n });\r\n\r\n flexElement.append(textElement);\r\n\r\n textElement.append(pElement);\r\n msgElement.append(selectElement);\r\n msgElement.append(headImgElement);\r\n\r\n msgElement.append(senderNameElement);\r\n msgElement.append(flexElement);\r\n itemElement.append(msgElement);\r\n\r\n return itemElement;\r\n }\r\n\r\n return null;\r\n };\r\n\r\n this.ClearCopyMessageDialog = function () {\r\n // Task 744404: JavaScript Error: includes/DefaultAll.min.js (1) - Uncaught TypeError: Cannot read property 'style' of null\r\n if (document.getElementById(\"echat_CopyMessage_Dialog\")) {\r\n document.getElementById(\"echat_CopyMessage_Dialog\").style.display = \"none\";\r\n }\r\n\r\n if (document.getElementById(\"echat_CopyMessageList\")) {\r\n document.getElementById(\"echat_CopyMessageList\").innerHTML = \"\";\r\n }\r\n\r\n const echat_CopyMessage_Dialog = document.getElementById(\"echat_CopyMessage_Dialog\");\r\n if (echat_CopyMessage_Dialog) {\r\n echat_CopyMessage_Dialog.click = null;\r\n echat_CopyMessage_Dialog.querySelector(\".eChat-CloseButton\").click = null;\r\n echat_CopyMessage_Dialog.querySelector(\"#SaveSelectMessageBtn\").click = null;\r\n }\r\n const ChattingBox = document.querySelector(\"#echat_CopyMessage_Dialog .ChattingBox\");\r\n if (ChattingBox) {\r\n EC_Fmt.RemoveAllEventListeners(ChattingBox);\r\n }\r\n\r\n syncDate = 0;\r\n };\r\n\r\n this.GetCheckMessageIDStr = function () {\r\n let MessageIDStr = \"\";\r\n document.querySelectorAll(\".EChat_CopyMessage_Select[type='checkbox']\").forEach((dom) => {\r\n if (dom.checked) {\r\n if (MessageIDStr) {\r\n MessageIDStr += \",\";\r\n }\r\n MessageIDStr += dom.value;\r\n }\r\n });\r\n return MessageIDStr;\r\n };\r\n\r\n const SaveMessageToTaskDetail = function (e) {\r\n const MessageIDStr = _this.GetCheckMessageIDStr();\r\n if (MessageIDStr) {\r\n document.querySelector(\"#echat_CopyMessage_Dialog #SaveSelectMessageBtn\").click = null;\r\n if (SaveCallBack) {\r\n SaveCallBack(MessageIDStr, e);\r\n } else {\r\n _this.ClearCopyMessageDialog();\r\n }\r\n }\r\n };\r\n\r\n const getDBGroupHistoryMessage = function (limit) {\r\n limit = limit || EChat.Setting.MessageNumPerShow;\r\n return new Promise(((resolve) => {\r\n const groupInfo = _this.GroupInfo;\r\n let msgList = [];\r\n if (groupInfo && Array.isArray(groupInfo.Messages)) {\r\n msgList = groupInfo.Messages;\r\n }\r\n\r\n let count = 0;\r\n const messageList = [];\r\n let nextSyncDate = parseInt(syncDate);\r\n\r\n for (let i = 0, len = msgList.length; i < len; i++) {\r\n if ((syncDate === 0 || parseInt(msgList[i].TimeCreated) < syncDate) && count < limit) {\r\n messageList.push(msgList[i]);\r\n count++;\r\n if (msgList[i].TimeCreated < nextSyncDate || nextSyncDate === 0) {\r\n nextSyncDate = parseInt(msgList[i].TimeCreated);\r\n }\r\n }\r\n }\r\n\r\n if (count === 0) {\r\n EChat.DataProvider.getMessageHistory(groupInfo.MessageGroupID, syncDate, null, limit).then((messageArr) => {\r\n resolve(messageArr);\r\n });\r\n } else {\r\n syncDate = parseInt(nextSyncDate);\r\n resolve(messageList);\r\n }\r\n }));\r\n };\r\n\r\n this.GetCopyMessageListDom = function (GroupInfo, chatBoxElement) {\r\n syncDate = 0;\r\n _this.GroupInfo = GroupInfo;\r\n return DrawHistoryCopyMessages(GroupInfo.Messages, chatBoxElement);\r\n };\r\n\r\n const DrawHistoryCopyMessages = function (messageList, chatBoxElement) {\r\n if (messageList) {\r\n chatBoxElement.scroll = null;\r\n let scrollTopNum = 0;\r\n let showMsgNum;\r\n let isFirst = false;\r\n if (syncDate === 0) {\r\n isFirst = true;\r\n showMsgNum = messageList.length > EChat.Setting.MessageNumPerShow ? EChat.Setting.MessageNumPerShow : messageList.length;\r\n } else {\r\n showMsgNum = messageList.length;\r\n }\r\n\r\n for (let i = 0; i < showMsgNum; i++) {\r\n const msgElement = CreateCopyMessageElement(messageList[i], chatBoxElement);\r\n if (msgElement) {\r\n chatBoxElement.prepend(msgElement);\r\n scrollTopNum += msgElement.offsetHeight;\r\n if (messageList[i].TimeCreated < syncDate || syncDate === 0) {\r\n syncDate = messageList[i].TimeCreated;\r\n }\r\n }\r\n }\r\n // Task 1007704: eChat copy to Task not responding.\r\n const selectAllBtn = document.querySelector(\"#echat_CopyMessage_Dialog .selectAll\");\r\n const clearCopyMessageDialogSelected = document.querySelector(\"#echat_CopyMessage_Dialog .clear\");\r\n let copyMessageInput = chatBoxElement.querySelectorAll(\"input\");\r\n const selectNum = document.querySelector(\"#echat_CopyMessage_Dialog .selectNum\");\r\n selectNum.innerHTML = document.querySelectorAll(\"#echat_CopyMessage_Dialog .eChat-copy-message-select\").length;\r\n const SelectAllEvent = async function () {\r\n copyMessageInput = chatBoxElement.querySelectorAll(\"input\");\r\n if (copyMessageInput.length !== 0) {\r\n if (copyMessageInput.length >= 50) {\r\n copyMessageInput.forEach((item) => {\r\n item.checked = true;\r\n item.parentElement.parentElement.parentElement.classList.add(\"eChat-copy-message-select\");\r\n });\r\n\r\n selectNum.innerHTML = copyMessageInput.length;\r\n } else {\r\n if (copyMessageInput.length < 50 && copyMessageInput.length >= 10 && loadCount < 1) {\r\n await getDBGroupHistoryMessage(40).then((result) => {\r\n DrawHistoryCopyMessages(result, chatBoxElement);\r\n Scrolling = false;\r\n copyMessageInput = chatBoxElement.querySelectorAll(\"input\");\r\n }).catch(() => {\r\n Scrolling = false;\r\n EChat.Util.errorAlert();\r\n });\r\n }\r\n if (copyMessageInput.length < 50) {\r\n copyMessageInput.forEach((item) => {\r\n item.checked = true;\r\n item.parentElement.parentElement.parentElement.classList.add(\"eChat-copy-message-select\");\r\n });\r\n selectNum.innerHTML = copyMessageInput.length;\r\n } else {\r\n for (let i = copyMessageInput.length - 50; i < copyMessageInput.length; i++) {\r\n copyMessageInput[i].checked = true;\r\n copyMessageInput[i].parentElement.parentElement.parentElement.classList.add(\"eChat-copy-message-select\");\r\n }\r\n selectNum.innerHTML = document.querySelectorAll(\"#echat_CopyMessage_Dialog .eChat-copy-message-select\").length;\r\n }\r\n }\r\n }\r\n };\r\n if (!isFirst) {\r\n const _selectAllBtn = EC_Fmt.RemoveAllEventListeners(selectAllBtn);\r\n _selectAllBtn.addEventListener(\"click\", SelectAllEvent);\r\n } else {\r\n selectAllBtn.addEventListener(\"click\", SelectAllEvent);\r\n }\r\n\r\n clearCopyMessageDialogSelected.addEventListener(\"click\", () => {\r\n if (copyMessageInput.length !== 0) {\r\n copyMessageInput.forEach((item) => {\r\n item.checked = false;\r\n item.parentElement.parentElement.parentElement.classList.remove(\"eChat-copy-message-select\");\r\n });\r\n selectNum.innerHTML = 0;\r\n }\r\n });\r\n\r\n chatBoxElement.addEventListener(\"scroll\", function () {\r\n if (this.scrollTop === 0 && this.scrollHeight > 0) {\r\n if (!Scrolling) {\r\n Scrolling = true;\r\n getDBGroupHistoryMessage(null).then((result) => {\r\n DrawHistoryCopyMessages(result, chatBoxElement);\r\n Scrolling = false;\r\n }).catch(() => {\r\n Scrolling = false;\r\n EChat.Util.errorAlert();\r\n });\r\n }\r\n }\r\n });\r\n\r\n if (isFirst) {\r\n chatBoxElement.scrollTop = chatBoxElement.scrollHeight;\r\n chatBoxElement.querySelectorAll(\"img\").forEach((dom) => {\r\n dom.addEventListener(\"load\", () => {\r\n setTimeout(() => {\r\n chatBoxElement.scrollTop = chatBoxElement.scrollHeight;\r\n }, 50);\r\n });\r\n });\r\n } else {\r\n chatBoxElement.scrollTop = scrollTopNum;\r\n }\r\n }\r\n };\r\n };\r\n return new CopyMessageControllerClass();\r\n}());\r\n\r\nEChat.GroupSettingController = (function () {\r\n const GroupSettingController = function () {\r\n let eChatMask = null;\r\n let groupSettingWindow = null;\r\n let groupInfo = null;\r\n let userObj = { GroupMemberObj: [] };\r\n const userInfo = {};\r\n let groupSavedData = {};\r\n\r\n const createGroupSettingWindow = async function () {\r\n const eChatMaskHTML = `
    `;\r\n eChatMask = EC_Fmt.HtmlStrToElement(eChatMaskHTML);\r\n document.querySelector(\"html > body\").append(EC_Fmt.HtmlStrToElement(eChatMaskHTML));\r\n eChatMask = document.querySelector(\".donutSpinner.eChat-Mask\");\r\n\r\n const dialogTitle = \"Group Settings\";\r\n\r\n groupSettingWindow = EChat.CustomComponent.BasicWindow({\r\n id: \"EChatGroupSettings\",\r\n height: 560,\r\n width: 600,\r\n draggable: true,\r\n headerTitle: EC_Fmt.Trn(dialogTitle),\r\n closeCallBack: removeGroupSettingWindow\r\n });\r\n\r\n const content = EC_Fmt.HtmlStrToElement(\"
    \");\r\n const leftContent = EC_Fmt.HtmlStrToElement(\"
    \");\r\n const middleContent = EC_Fmt.HtmlStrToElement(\"
    \");\r\n // Task 1119613:eChat: Update all the buttons in eChat to ecp-btn\r\n const rightContent = EC_Fmt.HtmlStrToElement(\"
    \");\r\n\r\n content.append(leftContent);\r\n content.append(middleContent);\r\n content.append(rightContent);\r\n\r\n // todo left content\r\n const groupLeft = EC_Fmt.HtmlStrToElement(\"
    \");\r\n\r\n const groupIconText = EC_Fmt.HtmlStrToElement(`${EC_Fmt.Trn(\"Group Icon\")}`);\r\n const groupIconImage = EC_Fmt.HtmlStrToElement(\"
    \");\r\n const groupIconBtn = EChat.CustomComponent.ChangePictureButton(saveImageEvent);\r\n groupIconBtn.style.margin = \"5px 0 0 0\";\r\n groupLeft.append(groupIconText);\r\n groupLeft.append(groupIconImage);\r\n groupLeft.append(groupIconBtn);\r\n\r\n leftContent.append(groupLeft);\r\n\r\n // todo middle content\r\n const groupNameDiv = EC_Fmt.HtmlStrToElement(\"
    \");\r\n const groupNameText = EC_Fmt.HtmlStrToElement(`${EC_Fmt.Trn(\"Group Name\")}`);\r\n const groupNameInput = EC_Fmt.HtmlStrToElement(\"\");\r\n groupNameDiv.append(groupNameText);\r\n groupNameDiv.append(groupNameInput);\r\n middleContent.append(groupNameDiv);\r\n\r\n const groupMemberDiv = EC_Fmt.HtmlStrToElement(\"
    \");\r\n const groupMemberText = EC_Fmt.HtmlStrToElement(\"Members\");\r\n const groupMemberList = EC_Fmt.HtmlStrToElement(\"
    \");\r\n EChat.Util.PreventScroll(groupMemberList);\r\n groupMemberList.style.height = \"364px\";\r\n\r\n const groupMemberDeleteBtn = EChat.CustomComponent.BasicButton({\r\n blackButton: false,\r\n title: EC_Fmt.Trn(\"- Delete Member\"),\r\n clickEvent: groupMemberDeleteEvent\r\n });\r\n groupMemberDeleteBtn.style.margin = \"5px 0 0 0\";\r\n // Task 1119613:eChat: Update all the buttons in eChat to ecp-btn\r\n groupMemberDeleteBtn.style.borderRadius = \"4px\";\r\n\r\n groupMemberDiv.append(groupMemberText);\r\n groupMemberDiv.append(groupMemberList);\r\n groupMemberDiv.append(groupMemberDeleteBtn);\r\n\r\n middleContent.append(groupMemberDiv);\r\n\r\n // todo right content\r\n const allUserDiv = EC_Fmt.HtmlStrToElement(\"
    \");\r\n const allUserText = EC_Fmt.HtmlStrToElement(`${EC_Fmt.Trn(\"All Users\")}`);\r\n const allUserSearchInput = EC_Fmt.HtmlStrToElement(\"
    \");\r\n const editGroupUserList = EC_Fmt.HtmlStrToElement(\"
    \");\r\n const allUserInputDiv = EC_Fmt.HtmlStrToElement(``);\r\n // Task 1119613:eChat: Update all the buttons in eChat to ecp-btn\r\n const advancedBtn = EC_Fmt.HtmlStrToElement(\"Advanced Search \");\r\n\r\n // Task 694706: Echat on support: Is it intentional to see other distributors users\r\n let timeOuntId;\r\n const searchClear = allUserInputDiv.querySelector(\".eChat-SearchClear\");\r\n const allUserInput = allUserInputDiv.querySelector(\"#EChatGroupUserSearchText\");\r\n allUserInput.addEventListener(\"keyup\", function (e) {\r\n if (allUserInput.value) {\r\n searchClear.classList.remove(\"hidden\");\r\n } else {\r\n searchClear.classList.add(\"hidden\");\r\n }\r\n const listDom = document.querySelector(\".eChat-EditGroupUserList\");\r\n EChat.CustomComponent.KeyCodeEvent({\r\n KeyCode: e ? e.keyCode : 0,\r\n ListDom: listDom,\r\n ItemClassArr: [\"eChatUserItem\"],\r\n SelectClass: \"eChatSelectItem\",\r\n EnterEvent: (dom) => {\r\n dom.querySelector(\"input\").checked = !dom.querySelector(\"input\").checked;\r\n },\r\n InputEvent: () => {\r\n clearTimeout(timeOuntId);\r\n timeOuntId = setTimeout(() => {\r\n const nameArr = Object.keys(userObj.GroupMemberObj);\r\n const NotInArr = [];\r\n for (let i = 0; i < nameArr.length; i++) {\r\n NotInArr.push(parseInt(userObj.GroupMemberObj[nameArr[i]].AuthenticationID));\r\n }\r\n const userFilters = document.getElementById(\"ews-eChat-advanced-search-menu\");\r\n EChat.CustomComponent.UserSearch({\r\n All: false,\r\n UserTypeID: !EC_Fmt.isNull(userFilters) ? EC_Fmt.Null2NullStr(userFilters.querySelector(\"#EChatSelectUserType input[type='hidden']\").value) : \"Null\",\r\n LocationID: !EC_Fmt.isNull(userFilters) ? EC_Fmt.Null2NullStr(userFilters.querySelector(\"#EChatSelectLocation input[type='hidden']\").value) : \"Null\",\r\n RoleID: !EC_Fmt.isNull(userFilters) ? EC_Fmt.Null2NullStr(userFilters.querySelector(\"#EChatSelectRole input[type='hidden']\").value) : \"Null\",\r\n Search: this.value,\r\n Container: editGroupUserList,\r\n Mark: document.querySelector(\".eChat-EditGroupUserList\"),\r\n NotInArr,\r\n SearchDom: this,\r\n ShowUserType: false,\r\n ShowFilters: false,\r\n HiddenCreateGroupBtn: true,\r\n MessageGroupKey: groupInfo.MessageGroupID\r\n }).then(() => {\r\n }).catch();\r\n }, 750);\r\n }\r\n });\r\n });\r\n\r\n advancedBtn.addEventListener(\"click\", () => {\r\n const nameArr = Object.keys(userObj.GroupMemberObj);\r\n const NotInArr = [];\r\n for (let i = 0; i < nameArr.length; i++) {\r\n NotInArr.push(parseInt(userObj.GroupMemberObj[nameArr[i]].AuthenticationID));\r\n }\r\n\r\n EWS.Command.ShowMenu(\"eChat-advanced-search\", advancedBtn, {\r\n Container: editGroupUserList,\r\n Mark: document.getElementById(\"EChatGroupSettings\"),\r\n NotInArr,\r\n ShowUserType: false,\r\n ShowFilters: false,\r\n SearchDom: \"advancedBtn\"\r\n });\r\n });\r\n\r\n searchClear.addEventListener(\"click\", () => {\r\n EChatGroupUserSearchText.value = \"\";\r\n EC_Fmt.TriggerEvent(EChatGroupUserSearchText, \"keyup\");\r\n });\r\n\r\n allUserSearchInput.append(allUserInputDiv);\r\n allUserSearchInput.append(advancedBtn);\r\n\r\n const groupMemberAddBtn = EChat.CustomComponent.BasicButton({\r\n title: EC_Fmt.Trn(\"+ Add Member to Group\"),\r\n blackButton: false,\r\n clickEvent: () => {\r\n EChat.Util.ShowLoading(document.getElementById(\"EChatGroupSettings\"));\r\n groupMemberAddEvent().then(() => {\r\n ECP.Dialog.HideLoading();\r\n editGroupUserList.innerHTML = \"\";\r\n allUserInput.value = \"\";\r\n }).catch(() => {\r\n ECP.Dialog.HideLoading();\r\n });\r\n }\r\n });\r\n groupMemberAddBtn.style.margin = \"5px 0 0 0\";\r\n // Task 1119613:eChat: Update all the buttons in eChat to ecp-btn\r\n // groupMemberAddBtn.style.border = \"solid 1px var(--neutral-30)\";\r\n groupMemberAddBtn.style.borderRadius = \"4px\";\r\n allUserDiv.append(allUserText);\r\n allUserDiv.append(allUserSearchInput);\r\n allUserDiv.append(editGroupUserList);\r\n allUserDiv.append(groupMemberAddBtn);\r\n\r\n rightContent.append(allUserDiv);\r\n\r\n const footer = EC_Fmt.HtmlStrToElement(\"
    \");\r\n const bottomBtn = EChat.CustomComponent.BasicButton({\r\n title: EC_Fmt.Trn(\"Delete this Group\"),\r\n // Task 1119613:eChat: Update all the buttons in eChat to ecp-btn\r\n icon: EC_Fmt.Trn(\"ews-icon-delete\"),\r\n blackButton: false,\r\n clickEvent: delBtnEvent\r\n });\r\n\r\n const option = {\r\n title: EC_Fmt.Trn(\"OK\"),\r\n // Task 1119613:eChat: Update all the buttons in eChat to ecp-btn\r\n type: EC_Fmt.Trn(\"primary\"),\r\n blackButton: true,\r\n clickEvent: okBtnEvent\r\n };\r\n\r\n const okBtn = EChat.CustomComponent.BasicButton(option);\r\n okBtn.classList.add(\"btn-attention\");\r\n footer.append(bottomBtn);\r\n footer.append(okBtn);\r\n groupSettingWindow.insertContent(content);\r\n groupSettingWindow.insertContent(footer);\r\n\r\n setGroupSettingData();\r\n };\r\n\r\n const removeGroupSettingWindow = function () {\r\n if (eChatMask) {\r\n eChatMask.remove();\r\n eChatMask = null;\r\n groupSettingWindow = null;\r\n groupInfo = null;\r\n userObj = { GroupMemberObj: [] };\r\n groupSavedData = {\r\n };\r\n }\r\n };\r\n\r\n const userObjToArray = function (targetObj) {\r\n const resultArr = [];\r\n const keys = Object.keys(targetObj).sort();\r\n for (let i = 0; i < keys.length; i++) {\r\n const item = targetObj[keys[i]];\r\n resultArr.push(item);\r\n }\r\n return resultArr;\r\n };\r\n\r\n const setGroupSettingData = function () {\r\n if (groupInfo) {\r\n if (eChatMask) {\r\n const groupIconUrl = EChat.DataProvider.GetGroupAvatarUrlAndAuthID(groupInfo, EChat.DataProvider.CurrentUserInfo).Url;\r\n // Task 1108551: Editing eChat Group Image updates User image.\r\n EChat.CustomComponent.UserAvaterDisplay(document.getElementById(\"EChatGroupSettingIcon\"), groupIconUrl, groupInfo.Users.length, 128, 128, false);\r\n const EChatGroupSettingName = document.getElementById(\"EChatGroupSettingName\");\r\n EChatGroupSettingName.value = groupInfo.GroupName;\r\n EChatGroupSettingName.select();\r\n EChat.DataProvider.GetGroupUserInfo(groupInfo.MessageGroupID).then((groupMemberArray) => {\r\n for (let i = 0; i < groupMemberArray.length; i++) {\r\n const tmpUser = groupMemberArray[i];\r\n userObj.GroupMemberObj[tmpUser.Name] = tmpUser;\r\n userInfo[tmpUser.AuthenticationID] = tmpUser;\r\n }\r\n drawGroupMember(groupMemberArray);\r\n });\r\n } else {\r\n EChat.Util.throwError(EChat.ErrorType.DATA_ERROR, \"eChatMask is null\");\r\n }\r\n } else {\r\n EChat.Util.throwError(EChat.ErrorType.DATA_ERROR, \"groupInfo is null\");\r\n }\r\n };\r\n\r\n const drawGroupMember = function (groupMemberArray) {\r\n const parentElement = document.getElementById(\"EChatGroupSettingMembers\");\r\n if (!parentElement) {\r\n return;\r\n }\r\n parentElement.innerHTML = \"\";\r\n for (let i = 0; i < groupMemberArray.length; i++) {\r\n if (groupMemberArray[i]) {\r\n const UserItemDisplay = EChat.CustomComponent.UserItemDisplay(groupMemberArray[i], true, false);\r\n UserItemDisplay.style.width = \"95%\";\r\n UserItemDisplay.addEventListener(\"click\", function () {\r\n const input = this.querySelector(\"input\");\r\n const eChatCheckBoxSpan = this.querySelector(\".eChatCheckBoxSpan\");\r\n if (input.checked) {\r\n eChatCheckBoxSpan.style.backgroundPosition = \"0px -25px\";\r\n } else {\r\n eChatCheckBoxSpan.style.backgroundPosition = \"-30px -25px\";\r\n }\r\n input.checked = !input.checked;\r\n });\r\n\r\n parentElement.append(UserItemDisplay);\r\n }\r\n }\r\n };\r\n\r\n this.openGroupSettingWindow = function (groupId) {\r\n EChat.Util.ShowLoading(\"All\");\r\n EChat.DataProvider.GetGroupInfoByGroupID(groupId, true, true).then((tmpGroupInfo) => {\r\n if (!tmpGroupInfo) {\r\n ECP.Dialog.Alert(EC_Fmt.Trn(\"This Group has been deleted from server.\"));\r\n EChat.DataProvider.deleteGroupData(groupId, true, false).then(() => {\r\n ECP.Dialog.HideLoading();\r\n EChat.MainPageController.updateUnReadNumIcon(\"group setting\");\r\n }).catch(EChat.Util.errorAlert);\r\n } else if (tmpGroupInfo.PostPermission === EChat.PostPermissionType.ReadOnly) {\r\n ECP.Dialog.HideLoading();\r\n ECP.Dialog.Alert(\"Read-only access. This group cannot be edited.\");\r\n } else if (!eChatMask) {\r\n ECP.Dialog.HideLoading();\r\n groupInfo = tmpGroupInfo;\r\n groupSavedData.MessageGroupID = tmpGroupInfo.MessageGroupID;\r\n createGroupSettingWindow();\r\n }\r\n });\r\n };\r\n\r\n const okBtnEvent = function () {\r\n const groupName = document.getElementById(\"EChatGroupSettingName\").value;\r\n if (groupInfo.DisplayName !== groupName || groupName === \"\") {\r\n groupSavedData.GroupName = groupName;\r\n }\r\n const newUsers = [];\r\n Object.keys(userObj.GroupMemberObj).forEach((item) => {\r\n if (!EC_Fmt.isNull(userObj.GroupMemberObj[item].AuthenticationID)) {\r\n newUsers.push(userObj.GroupMemberObj[item].AuthenticationID);\r\n }\r\n });\r\n\r\n const oldUsersStr = EChat.DataProvider.GetUserStrByGroupInfo(groupInfo);\r\n const newUsersStr = EChat.DataProvider.GetUserStrByUserList(newUsers);\r\n if (newUsersStr !== oldUsersStr) {\r\n groupSavedData.UserList = newUsersStr;\r\n }\r\n\r\n if (eChatMask) {\r\n eChatMask.style.zIndex = 10000;\r\n EChat.DataProvider.uploadGroupSetting(groupSavedData, userInfo).then((group) => {\r\n groupInfo = group;\r\n groupSettingWindow.closeWindow();\r\n EChat.IndexedDB.InitDBData(0, true);\r\n });\r\n }\r\n };\r\n const delBtnEvent = function () {\r\n EWS.Confirm(\"Are you sure to delete the EChat Group ?\", () => {\r\n EChat.IndexedDB.GetTableDataByKey(EChat.DBTableName.GROUPINFO, groupSavedData.MessageGroupID).then((groupInfoNew) => {\r\n if (groupInfoNew) {\r\n SocketUtil.api(\"DeleteGroup\", { MessageGroupID: groupSavedData.MessageGroupID }).then((messageGroupID) => {\r\n groupSettingWindow.closeWindow();\r\n if (messageGroupID) {\r\n EChat.DataProvider.deleteGroupData(messageGroupID, true, true);\r\n }\r\n }).catch(() => {\r\n // eslint-disable-next-line no-console\r\n console.error(\"delete error\");\r\n });\r\n } else {\r\n groupSettingWindow.closeWindow();\r\n }\r\n });\r\n }, () => {\r\n\r\n });\r\n };\r\n\r\n const saveImageEvent = function (imageData) {\r\n if (imageData) {\r\n const eChatUserAvatarDisplays = document.querySelectorAll(\"EChatGroupSettingIcon .eChatUserAvatarDisplay\");\r\n for (let i = 0; i < eChatUserAvatarDisplays.length; i++) {\r\n const Avatar = eChatUserAvatarDisplays[i];\r\n Avatar.style.backgroundImage = `url(${imageData})`;\r\n Avatar.style.backgroundRepeat = \"no-repeat\";\r\n Avatar.style.backgroundSize = \"cover\";\r\n }\r\n groupSavedData.Icon = imageData;\r\n }\r\n };\r\n\r\n const groupMemberDeleteEvent = function () {\r\n const checkedList = document.querySelectorAll(\"#EChatGroupSettingMembers input[type='checkbox']\");\r\n checkedList.forEach((dom) => {\r\n if (dom.checked) {\r\n const checkBoxElement = dom;\r\n const userName = checkBoxElement.getAttribute(\"fullname\");\r\n delete userObj.GroupMemberObj[userName];\r\n checkBoxElement.parentNode.parentNode.remove();\r\n }\r\n });\r\n };\r\n\r\n const groupMemberAddEvent = async function () {\r\n const userArr = [];\r\n document.querySelectorAll(\".eChat-EditGroupUserList input:checked\").forEach((dom) => {\r\n userArr.push(parseInt(dom.getAttribute(\"authid\")));\r\n });\r\n\r\n if (userArr.length) {\r\n const userInfoArr = await EChat.DataProvider.GetUserInfo(userArr);\r\n for (let i = 0; i < userInfoArr.length; i++) {\r\n const tmpUser = userInfoArr[i];\r\n userObj.GroupMemberObj[tmpUser.Name] = tmpUser;\r\n userInfo[tmpUser.AuthenticationID] = tmpUser;\r\n }\r\n\r\n drawGroupMember(userObjToArray(userObj.GroupMemberObj));\r\n }\r\n };\r\n };\r\n return new GroupSettingController();\r\n}());\r\n\r\nEChat.TaskController = (function () {\r\n const TaskController = function () {\r\n const _this = this;\r\n let dialog;\r\n let groupInfo;\r\n\r\n this.MessageGroupID = \"\";\r\n this.TaskID = 0;\r\n this.Title = 0;\r\n this.CustomerID = 0;\r\n this.AssignToUserID = 0;\r\n this.ObjectiveTypeID = 0;\r\n this.ObjectiveID = 0;\r\n this.TaskStatusID = 0;\r\n this.FeatureID = 0;\r\n this.FoundIn = \"\";\r\n\r\n this.AddTask = function (group) {\r\n return new Promise(() => {\r\n Clear();\r\n groupInfo = group;\r\n _this.MessageGroupID = groupInfo.MessageGroupID;\r\n _this.ObjectiveID = !_this.ObjectiveID && IsSupport() ? 1 : _this.ObjectiveID;\r\n _this.ObjectiveTypeID = !_this.ObjectiveTypeID && IsSupport() ? 5 : _this.ObjectiveTypeID;\r\n _this.AssignToUserID = EC_Fmt.Null2ZeroInt(_this.AssignToUserID) === 0 ? UserID : _this.AssignToUserID;\r\n _this.FeatureID = !_this.FeatureID && IsSupport() ? 1 : _this.FeatureID;\r\n\r\n EChat.Util.ShowLoading(\"All\");\r\n OpenDialog().then(() => {\r\n ECP.Dialog.HideLoading();\r\n }).catch(EChat.Util.errorAlert);\r\n });\r\n };\r\n\r\n const OpenDialog = async function () {\r\n let EChatTaskDialogBase = document.getElementById(\"EChatTaskDialog\");\r\n if (!EChatTaskDialogBase) {\r\n const htmlData = await EChat.MainPageController.loadEChatViewHtml();\r\n EChatTaskDialogBase = EC_Fmt.HtmlStrToElement(htmlData).querySelector(\"#EChatTaskDialog\");\r\n }\r\n const DialogTitle = _this.TaskID === 0 ? \"Add new task\" : \"Edit task\";\r\n dialog = ECP.Dialog.ShowDialog(DialogTitle, EChatTaskDialogBase.innerHTML, {\r\n width: 680,\r\n height: 440,\r\n disableResize: true,\r\n confirmButtonTitle: \"Save Changes\"\r\n }, Clear);\r\n dialog.querySelector(\".ecp-dialog-content\").style.paddingRight = \"1px\";\r\n\r\n const promiseArr = [];\r\n promiseArr.push(AddField(\"Title\"));\r\n promiseArr.push(AddField(\"Customer\"));\r\n promiseArr.push(AddField(\"AssignTo\"));\r\n promiseArr.push(AddField(\"ObjectiveType\"));\r\n promiseArr.push(AddField(\"Objective\"));\r\n promiseArr.push(AddField(\"Status\"));\r\n\r\n if (IsSupport()) {\r\n promiseArr.push(AddField(\"Feature1505\"));\r\n promiseArr.push(AddField(\"FoundIn\"));\r\n }\r\n\r\n await Promise.all(promiseArr);\r\n\r\n dialog.querySelector(`#EChatTaskTitleDiv textarea`).focus();\r\n await AddCopyMessage();\r\n };\r\n\r\n const AddField = async function (FieldName) {\r\n const triggerElement = dialog.querySelector(`#EChatTask${FieldName}Div`);\r\n const InputName = `EChat${FieldName}Field`;\r\n let OnChangeCallback = null;\r\n\r\n let Option = {\r\n InputName,\r\n Width: 170,\r\n Required: false,\r\n LimitToRefList: true,\r\n IsSearch: false,\r\n Translate: false,\r\n ListLength: 40,\r\n AllowAddRelated: false\r\n };\r\n\r\n switch (FieldName) {\r\n case \"Title\": {\r\n triggerElement.querySelector(\"textarea\").style.minWidth = `${Option.Width}px`;\r\n triggerElement.querySelector(\"textarea\").style.maxWidth = `${Option.Width}px`;\r\n triggerElement.querySelector(\"textarea\").style.width = `${Option.Width}px`;\r\n triggerElement.querySelector(\"textarea\").tabIndex = 1;\r\n triggerElement.querySelector(\"textarea\").setAttribute(\"placeholder\", \"Task Title\");\r\n Option = null;\r\n break;\r\n }\r\n case \"Customer\": {\r\n Option.RefTable = \"Customers\";\r\n Option.RefField = \"CustomerID\";\r\n Option.DataType = ECP.DataType._Integer;\r\n Option.RefFieldDisplay = \"CustomerNumCompany\";\r\n Option.RefFieldDisplayDataType = ECP.DataType._Text;\r\n Option.RefFieldFilter = \"AccountStatus = 'Active'\";\r\n Option.CurValue = _this.CustomerID;\r\n Option.TabIndex = 2;\r\n Option.Placeholder = \"Customer\";\r\n break;\r\n }\r\n case \"AssignTo\": {\r\n Option.RefTable = \"Users\";\r\n Option.RefField = \"UserID\";\r\n Option.DataType = ECP.DataType._Integer;\r\n Option.RefFieldDisplay = \"PictureAndDesc\";\r\n Option.RefFieldDisplayDataType = ECP.DataType._Text;\r\n Option.RefFieldFilter = `\"Users\".\"UserTypeID\" < 10 AND \"Users\".\"Active\" = 1`;\r\n Option.CurValue = _this.AssignToUserID;\r\n Option.TabIndex = 3;\r\n Option.Placeholder = \"Assign To\";\r\n break;\r\n }\r\n case \"ObjectiveType\": {\r\n Option.RefTable = \"ObjectiveTypes\";\r\n Option.RefField = \"ObjectiveTypeID\";\r\n Option.DataType = ECP.DataType._Integer;\r\n Option.RefFieldDisplay = \"ObjectiveType\";\r\n Option.RefFieldDisplayDataType = ECP.DataType._Text;\r\n Option.CurValue = _this.ObjectiveTypeID;\r\n Option.TabIndex = 4;\r\n Option.Placeholder = \"Objective Type\";\r\n break;\r\n }\r\n case \"Objective\": {\r\n Option.RefTable = \"Objectives\";\r\n Option.RefField = \"ObjectiveID\";\r\n Option.DataType = ECP.DataType._Integer;\r\n Option.RefFieldDisplay = \"Objective\";\r\n Option.RefFieldDisplayDataType = ECP.DataType._Text;\r\n Option.CurValue = _this.ObjectiveID;\r\n Option.TabIndex = 5;\r\n Option.Placeholder = \"Objective\";\r\n OnChangeCallback = () => {\r\n AddField(\"Status\");\r\n };\r\n break;\r\n }\r\n case \"Status\": {\r\n if (dialog.querySelector(\"#EChatObjectiveFieldHidden\")) {\r\n if (_this.ObjectiveID === dialog.querySelector(\"#EChatObjectiveFieldHidden\").value) {\r\n Option = null;\r\n break;\r\n }\r\n _this.ObjectiveID = dialog.querySelector(\"#EChatObjectiveFieldHidden\").value;\r\n }\r\n triggerElement.innerHTML = await EChat.DataProvider.GetTaskStatusElementByObjectiveID(_this.ObjectiveID, 0);\r\n triggerElement.querySelector(\"select\").tabIndex = 6;\r\n triggerElement.querySelector(\"select\").style.width = `${Option.Width}px`;\r\n Option = null;\r\n break;\r\n }\r\n case \"Feature1505\": {\r\n Option.RefTable = \"ZZ_Features\";\r\n Option.RefField = \"FeatureID\";\r\n Option.DataType = ECP.DataType._Integer;\r\n Option.RefFieldDisplay = \"FeatureDescription\";\r\n Option.RefFieldDisplayDataType = ECP.DataType._Text;\r\n Option.CurValue = _this.FeatureID;\r\n Option.TabIndex = 7;\r\n Option.Placeholder = \"Feature 1505\";\r\n triggerElement.parentElement.classList.remove(\"hidden\");\r\n break;\r\n }\r\n case \"FoundIn\": {\r\n triggerElement.querySelector(\"textarea\").tabIndex = 8;\r\n triggerElement.querySelector(\"textarea\").style.minWidth = `${Option.Width}px`;\r\n triggerElement.querySelector(\"textarea\").style.maxWidth = `${Option.Width}px`;\r\n triggerElement.querySelector(\"textarea\").style.width = `${Option.Width}px`;\r\n triggerElement.querySelector(\"textarea\").setAttribute(\"placeholder\", \"Found in\");\r\n triggerElement.parentElement.classList.remove(\"hidden\");\r\n Option = null;\r\n break;\r\n }\r\n }\r\n\r\n if (Option) {\r\n triggerElement.innerHTML = \"\";\r\n await ECP.HTML.FillWithAutoComplete(triggerElement, Option, null, null, OnChangeCallback);\r\n }\r\n\r\n return triggerElement;\r\n };\r\n\r\n const AddCopyMessage = async function () {\r\n const MessageListDiv = dialog.querySelector(\"#EChatTaskCopyMessageList\");\r\n if (groupInfo.Messages && groupInfo.Messages.length > 0) {\r\n dialog.querySelector(\".eChat-no-copy-message\").classList.remove(\"eChat-no-copy-message\");\r\n MessageListDiv.innerHTML = \"\";\r\n EChat.CopyMessageController.GetCopyMessageListDom(groupInfo, MessageListDiv);\r\n }\r\n };\r\n\r\n const IsSupport = function () {\r\n return Distributor.indexOf(\"Support\") === 0;\r\n };\r\n\r\n const Clear = function () {\r\n _this.MessageGroupID = \"\";\r\n _this.TaskID = 0;\r\n _this.Title = 0;\r\n _this.CustomerID = 0;\r\n _this.AssignToUserID = 0;\r\n _this.ObjectiveTypeID = 0;\r\n _this.ObjectiveID = 0;\r\n _this.TaskStatusID = 0;\r\n _this.FeatureID = 0;\r\n _this.FoundIn = \"\";\r\n _this.CopyMessageIDList = \"\";\r\n if (dialog) {\r\n dialog.remove();\r\n }\r\n };\r\n };\r\n\r\n return new TaskController();\r\n}());\r\n\r\nEChat.SavedController = function () {\r\n const _this = this;\r\n let searchIng = false;\r\n let timeOutThread = 0;\r\n let canEnter = true;\r\n let lastStartIndex = 0;\r\n\r\n const createSavedMessageElement = function (savedMessage) {\r\n const SavedMessageTemplate = EC_Fmt.HtmlStrToElement(document.getElementById(\"SavedMessageTemplate\").innerHTML);\r\n const LastMessageDiv = SavedMessageTemplate.querySelector(\".LastMessage\");\r\n const lastMessageObj = EChat.MainPageController.GetLastMessage(savedMessage);\r\n const LastMessageTime = SavedMessageTemplate.querySelector(\".saved-message-top .eChat-LastMessageTime\");\r\n // Task 1052118: Better distinguish whether the messages of the Echat Saved page belong to a group or a task.\r\n const UnreadDom = SavedMessageTemplate.querySelector(\".echat-unread-count\");\r\n\r\n // Task 1052118: Better distinguish whether the messages of the Echat Saved page belong to a group or a task.\r\n if (savedMessage.GroupType === SocketUtil.GroupType.Task) {\r\n const userNameDiv = LastMessageDiv.querySelector(\".eChat-LastMessageUserName\");\r\n userNameDiv.textContent = lastMessageObj.SenderFullName;\r\n userNameDiv.setAttribute(\"title\", lastMessageObj.SenderFullName);\r\n userNameDiv.setAttribute(\"data-user-name\", lastMessageObj.SenderFullName);\r\n const userImg = LastMessageDiv.querySelector(\".eChat-User-Img\");\r\n if (lastMessageObj.SenderUserAvatar) {\r\n userImg.style.backgroundImage = `url(${lastMessageObj.SenderUserAvatar})`;\r\n userImg.classList.add(\"eChat-ico-GroupIcon\");\r\n } else {\r\n userImg.classList.add(\"eChat-ico-DefaultUser\");\r\n }\r\n LastMessageDiv.querySelector(\".eChat-LastMessageTime\").textContent = EChat.Util.longToDataTime(lastMessageObj.TimeCreated);\r\n LastMessageDiv.querySelector(\".eChat-LastMessageInfo\").classList.remove(\"hidden\");\r\n UnreadDom.classList.add(\"unread-task\");\r\n } else {\r\n LastMessageTime.textContent = EChat.Util.longToDataTime(lastMessageObj.TimeCreated);\r\n UnreadDom.classList.add(\"unread-messages\");\r\n }\r\n UnreadDom.setAttribute(\"id\", `Unread_${savedMessage.MessageGroupID}`);\r\n\r\n if (lastMessageObj.DisplayMessageDom) {\r\n LastMessageDiv.querySelector(\".eChat-LastMessageBody\").append(lastMessageObj.DisplayMessageDom);\r\n } else {\r\n LastMessageDiv.querySelector(\".eChat-LastMessageBody\").textContent = lastMessageObj.DisplayMessage;\r\n }\r\n\r\n LastMessageDiv.querySelector(\".eChat-LastMessageBody\").setAttribute(\"title\", lastMessageObj.Message);\r\n SavedMessageTemplate.setAttribute(\"groupid\", savedMessage.MessageGroupKey);\r\n SavedMessageTemplate.setAttribute(\"messagetime\", savedMessage.MessageTime);\r\n SavedMessageTemplate.setAttribute(\"savedtime\", savedMessage.SavedTime);\r\n\r\n const userIcoSpan = SavedMessageTemplate.querySelector(\".user-ico-span\");\r\n let groupName = lastMessageObj.SenderFullName;\r\n if (savedMessage.GroupType === SocketUtil.GroupType.System) {\r\n userIcoSpan.classList.add(\"ews-icon-warning\");\r\n userIcoSpan.classList.add(\"eChat-ico-Group\");\r\n } else if (savedMessage.GroupType === SocketUtil.GroupType.Task) {\r\n userIcoSpan.classList.add(\"ews-icon-task\");\r\n userIcoSpan.classList.add(\"eChat-ico-Group\");\r\n groupName = savedMessage.TaskTitle;\r\n } else if (lastMessageObj.SenderUserAvatar) {\r\n userIcoSpan.style.backgroundImage = `url(${lastMessageObj.SenderUserAvatar})`;\r\n userIcoSpan.classList.add(\"eChat-ico-GroupIcon\");\r\n } else {\r\n userIcoSpan.style.backgroundImage = `url(${EChat.Setting.DefaultUserIcon})`;\r\n userIcoSpan.classList.add(\"eChat-ico-GroupIcon\");\r\n }\r\n\r\n const nameSpan = SavedMessageTemplate.querySelector(\".saved-message-name\");\r\n const searchText = EChat.Util.getSearchText();\r\n if (searchText) {\r\n const groupNameDisplay = EChat.Util.highLight(groupName, searchText, \"yellow\", false).text;\r\n nameSpan.innerHTML = groupNameDisplay;\r\n } else {\r\n nameSpan.textContent = groupName;\r\n }\r\n\r\n nameSpan.setAttribute(\"title\", groupName);\r\n nameSpan.setAttribute(\"data-user-name\", groupName);\r\n let savedKey = \"\";\r\n const cancelBtn = SavedMessageTemplate.querySelector(\".eChat-cancel-saved\");\r\n if (savedMessage.TaskID) {\r\n cancelBtn.setAttribute(\"taskid\", savedMessage.TaskID);\r\n }\r\n if (savedMessage.TaskDetailID) {\r\n savedKey = savedMessage.TaskDetailID;\r\n cancelBtn.setAttribute(\"taskdetailid\", savedMessage.TaskDetailID);\r\n }\r\n if (savedMessage.TaskSourceEncompassID) {\r\n cancelBtn.setAttribute(\"tasksourceencompassid\", savedMessage.TaskSourceEncompassID);\r\n }\r\n if (savedMessage.MessageGroupKey) {\r\n cancelBtn.setAttribute(\"messagegroupkey\", savedMessage.MessageGroupKey);\r\n }\r\n if (savedMessage.MessageKey) {\r\n savedKey = savedMessage.MessageKey;\r\n cancelBtn.setAttribute(\"messagekey\", savedMessage.MessageKey);\r\n }\r\n cancelBtn.addEventListener(\"click\", (e) => {\r\n _this.cancelSavedMessage({\r\n TaskID: cancelBtn.getAttribute(\"taskid\"),\r\n TaskDetailID: cancelBtn.getAttribute(\"taskdetailid\"),\r\n TaskSourceEncompassID: cancelBtn.getAttribute(\"tasksourceencompassid\"),\r\n MessageGroupKey: cancelBtn.getAttribute(\"messagegroupkey\"),\r\n MessageKey: cancelBtn.getAttribute(\"messagekey\")\r\n });\r\n\r\n e.stopPropagation();\r\n });\r\n\r\n SavedMessageTemplate.setAttribute(\"id\", `SavedMessage_${savedKey}`);\r\n SavedMessageTemplate.addEventListener(\"click\", (e) => {\r\n const groupId = savedMessage.MessageGroupID;\r\n EChat.DataProvider.GetGroupInfoByGroupID(groupId).then(async (groupInfo) => {\r\n // Task 1024583: Server EChat Click on Saved tab and then on a Message Group freezes browser\r\n if (groupInfo) {\r\n const messsageWindow = EChat.MainPageController.getMessageWindow(groupInfo.MessageGroupID);\r\n await messsageWindow.addRecentTab(groupInfo, true, false, savedKey);\r\n }\r\n });\r\n e.stopPropagation();\r\n });\r\n\r\n SavedMessageTemplate.addEventListener(\"mouseover\", () => {\r\n SavedMessageTemplate.querySelector(\".saved-message-button\").classList.remove(\"hidden\");\r\n });\r\n SavedMessageTemplate.addEventListener(\"mouseleave\", () => {\r\n SavedMessageTemplate.querySelector(\".saved-message-button\").classList.add(\"hidden\");\r\n });\r\n\r\n return SavedMessageTemplate;\r\n };\r\n\r\n this.addSavedMessage = async function (SavedMessage) {\r\n if (await EChat.DataProvider.AddSavedMessage(SavedMessage)) {\r\n if (!EChat.DataProvider.SavedMessage) {\r\n EChat.DataProvider.SavedMessage = [];\r\n }\r\n\r\n const savedKey = SavedMessage.TaskDetailID ? SavedMessage.TaskDetailID.toString() : SavedMessage.MessageKey;\r\n if (!EChat.DataProvider.SavedMessage.includes(savedKey)) {\r\n EChat.DataProvider.SavedMessage.push(savedKey);\r\n await EChat.MainPageController.refreshSavedMessage();\r\n drawSavedMessage(SavedMessage);\r\n EChat.IndexedDB.UpdateSetting(\"SavedMessages\", EChat.DataProvider.SavedMessage, true);\r\n }\r\n }\r\n };\r\n\r\n this.cancelSavedMessage = async function (SavedMessage) {\r\n const success = await EChat.DataProvider.CancelSavedMessage(SavedMessage);\r\n const savedKey = SavedMessage.TaskDetailID > 0 ? SavedMessage.TaskDetailID : SavedMessage.MessageKey;\r\n const SavedMessageDom = document.getElementById(`SavedMessage_${savedKey}`);\r\n if (SavedMessageDom) {\r\n SavedMessageDom.remove();\r\n }\r\n\r\n if (success && EChat.DataProvider.SavedMessage) {\r\n const val = SavedMessage.TaskDetailID ? SavedMessage.TaskDetailID.toString() : SavedMessage.MessageKey;\r\n const index = EChat.DataProvider.SavedMessage.indexOf(val);\r\n if (index > -1) {\r\n EChat.DataProvider.SavedMessage.splice(index, 1);\r\n }\r\n await EChat.MainPageController.refreshSavedMessage();\r\n EChat.IndexedDB.UpdateSetting(\"SavedMessages\", EChat.DataProvider.SavedMessage, true);\r\n }\r\n };\r\n\r\n const drawSavedMessage = function (SavedMessage) {\r\n const listEle = document.getElementById(\"EChatSavedList\");\r\n const savedKey = SavedMessage.TaskDetailID > 0 ? SavedMessage.TaskDetailID : SavedMessage.MessageKey;\r\n const exist = document.getElementById(`SavedMessage_${savedKey}`);\r\n let TargetElement = null;\r\n const Sort = document.getElementById(\"EChatSavedSort\").value;\r\n if (exist) {\r\n exist.remove();\r\n }\r\n\r\n const messageSortTime = SavedMessage.MessageTime;\r\n const groupElement = createSavedMessageElement(SavedMessage);\r\n if (groupElement) {\r\n if (!TargetElement) {\r\n let TargetLastMsgTime = -1;\r\n\r\n const ItemList = document.querySelectorAll(\"#EChatSavedList .SavedMessageItem\");\r\n for (let i = 0, len = ItemList.length; i < len; i++) {\r\n const Item = ItemList[i];\r\n const tmpLastMsgTime = parseInt(Item.getAttribute(\"messagetime\"));\r\n if (tmpLastMsgTime > messageSortTime && (TargetLastMsgTime === -1 || TargetLastMsgTime >= tmpLastMsgTime)) {\r\n TargetElement = Item;\r\n TargetLastMsgTime = tmpLastMsgTime;\r\n }\r\n }\r\n }\r\n\r\n if (Sort === \"MessageTimeDESC\") {\r\n if (!TargetElement) {\r\n listEle.prepend(groupElement);\r\n } else {\r\n TargetElement.after(groupElement);\r\n }\r\n } else if (Sort === \"MessageTimeASC\") {\r\n if (!TargetElement) {\r\n listEle.append(groupElement);\r\n } else {\r\n TargetElement.before(groupElement);\r\n }\r\n } else {\r\n listEle.prepend(groupElement);\r\n }\r\n\r\n groupElement.style.display = \"block\";\r\n // Task 1052118: Better distinguish whether the messages of the Echat Saved page belong to a group or a task.\r\n _this.updateUnreadCount(SavedMessage.MessageGroupID, SavedMessage.TaskID, \"write\", SavedMessage.UnreadCount);\r\n }\r\n };\r\n\r\n const showPage = function ({\r\n searchText, limit, startIndex, sort\r\n }) {\r\n return new Promise((resolve) => {\r\n const listEle = document.getElementById(\"EChatSavedList\");\r\n if (startIndex === 0) {\r\n document.getElementById(\"EChatSavedList\").innerHTML = \"\";\r\n EChat.Util.ShowLoading(listEle, searchText ? \"Searching\" : \"\");\r\n } else {\r\n EChat.Util.ShowLoader(listEle, false);\r\n }\r\n\r\n EChat.SavedMessageChange = false;\r\n\r\n SocketUtil.api(\"GetSavedMessage\", {\r\n Search: searchText,\r\n Limit: limit,\r\n StartIndex: startIndex,\r\n Sort: sort\r\n }).then(async (data) => {\r\n if (startIndex === 0) {\r\n ECP.Dialog.HideLoading();\r\n } else {\r\n EChat.Util.HideLoader(listEle);\r\n }\r\n\r\n lastStartIndex = startIndex;\r\n let change = false;\r\n if (!EChat.DataProvider.SavedMessage) {\r\n EChat.DataProvider.SavedMessage = [];\r\n }\r\n for (let i = 0, len = data.length; i < len; i++) {\r\n const SavedMessage = data[i];\r\n drawSavedMessage(SavedMessage);\r\n\r\n const savedKey = SavedMessage.TaskDetailID ? SavedMessage.TaskDetailID.toString() : SavedMessage.MessageKey;\r\n if (!EChat.DataProvider.SavedMessage.includes(savedKey)) {\r\n EChat.DataProvider.SavedMessage.push(savedKey);\r\n change = true;\r\n }\r\n }\r\n\r\n if (change) {\r\n await EChat.MainPageController.refreshSavedMessage();\r\n EChat.IndexedDB.UpdateSetting(\"SavedMessages\", EChat.DataProvider.SavedMessage, true);\r\n }\r\n\r\n resolve(data.length);\r\n }).catch((ex) => {\r\n EChat.Util.errorAlert(ex);\r\n resolve(0);\r\n });\r\n });\r\n };\r\n\r\n // Saved\r\n this.searchPanelKeyupEvent = function (e, searchObj, noWait) {\r\n const listDom = document.getElementById(\"EChatSavedList\");\r\n EChat.CustomComponent.KeyCodeEvent({\r\n KeyCode: e ? e.keyCode : 0,\r\n ListDom: listDom,\r\n ItemClassArr: [\"SavedMessageItem\"],\r\n SelectClass: \"eChatSelectItem\",\r\n EnterOpenItem: !searchIng,\r\n InputEvent: () => {\r\n searchIng = true;\r\n clearTimeout(timeOutThread);\r\n timeOutThread = setTimeout(async () => {\r\n canEnter = true;\r\n const sort = document.getElementById(\"EChatSavedSort\").value;\r\n await showPage({\r\n searchText: EChat.Util.getSearchText(), limit: EChat.FullWindowController.FullWindow ? 25 : 10, startIndex: 0, sort\r\n });\r\n searchIng = false;\r\n }, noWait ? 0 : 750);\r\n }\r\n });\r\n };\r\n\r\n this.updateUnreadCount = function (MessageGroupID, TaskID, action, unreadCount) {\r\n const unreadDom = document.querySelector(`#EChatSavedList .echat-unread-count[id='Unread_${MessageGroupID}']`);\r\n\r\n if (action === \"read\") {\r\n unreadDom.style.display = \"none\";\r\n unreadDom.innerHTML = \"\";\r\n } else if (action === \"write\" && unreadCount > 0) {\r\n unreadDom.style.display = \"block\";\r\n unreadDom.setAttribute(\"new\", \"true\");\r\n if (TaskID === 0) {\r\n unreadDom.innerHTML = unreadCount;\r\n }\r\n }\r\n };\r\n\r\n const initEvent = function () {\r\n document.getElementById(\"EChatSavedList\").addEventListener(\"scroll\", async function () {\r\n if (this.scrollTop + this.clientHeight >= (this.scrollHeight - 1) && canEnter) {\r\n canEnter = false;\r\n const searchText = EChat.Util.getSearchText();\r\n const sort = document.getElementById(\"EChatSavedSort\").value;\r\n const limit = 10;\r\n const count = await showPage({\r\n searchText, limit, startIndex: lastStartIndex + limit, sort\r\n });\r\n if (count === 0) {\r\n canEnter = false;\r\n } else {\r\n canEnter = true;\r\n }\r\n }\r\n });\r\n\r\n document.getElementById(\"EChatSavedSort\").addEventListener(\"change\", (event) => {\r\n canEnter = true;\r\n const sort = event.currentTarget.value;\r\n showPage({\r\n searchText: EChat.Util.getSearchText(), limit: 10, startIndex: 0, sort\r\n });\r\n });\r\n };\r\n\r\n initEvent();\r\n};\r\n\r\nEChat.InputAreaComponentEvent = {\r\n ValueChange: \"ValueChange\",\r\n SendMessage: \"SendMessage\"\r\n};\r\n\r\nEChat.CustomComponent = {\r\n BasicWindow(windowProperty) {\r\n const BasicWindowClass = function () {\r\n // todo property\r\n const property = {\r\n id: windowProperty.id || null,\r\n height: windowProperty.height || 400,\r\n width: windowProperty.width || 400,\r\n top: windowProperty.top || null,\r\n left: windowProperty.left || null,\r\n draggable: windowProperty.draggable || false,\r\n headerTitle: windowProperty.headerTitle || null,\r\n closeCallBack: windowProperty.closeCallBack || null,\r\n taskID: windowProperty.taskID || 0\r\n };\r\n let baseWindow = null;\r\n let header = null;\r\n let content = null;\r\n const createWindow = function () {\r\n // todo window\r\n baseWindow = EC_Fmt.HtmlStrToElement(`
    `);\r\n if (property.id) {\r\n baseWindow.setAttribute(\"id\", property.id);\r\n }\r\n\r\n // todo header\r\n header = EC_Fmt.HtmlStrToElement(\"
    \");\r\n\r\n header.addEventListener(\"click\", (e) => {\r\n if (EChat.eChatMoving) {\r\n EChat.eChatMoving = false;\r\n }\r\n e.stopPropagation();\r\n });\r\n if (property.headerTitle) {\r\n const title = EC_Fmt.HtmlStrToElement(`${property.headerTitle}`);\r\n header.append(title);\r\n }\r\n // Task 1119613:eChat: Update all the buttons in eChat to ecp-btn\r\n const closeBtn = EC_Fmt.HtmlStrToElement(\"
    \");\r\n closeBtn.append(EC_Fmt.HtmlStrToElement(\"\"));\r\n closeBtn.addEventListener(\"click\", (e) => {\r\n deleteWindow();\r\n e.stopPropagation();\r\n });\r\n header.append(closeBtn);\r\n\r\n // todo content\r\n content = EC_Fmt.HtmlStrToElement(`
    `);\r\n\r\n baseWindow.append(header);\r\n baseWindow.append(content);\r\n document.querySelector(\"html > body\").append(baseWindow);\r\n\r\n const top = EC_Fmt.isNull(property.top) ? (window.innerHeight / 2 - baseWindow.clientHeight / 2) : property.top;\r\n const left = EC_Fmt.isNull(property.left) ? (window.innerWidth / 2 - baseWindow.clientWidth / 2) : property.left;\r\n baseWindow.style.top = `${top}px`;\r\n baseWindow.style.left = `${left}px`;\r\n\r\n baseWindow.classList.add(\"eChatDraggable\");\r\n baseWindow.style.zIndex = EChat.Util.draggableZIndex();\r\n EChat.Util.dragDialog({\r\n dialog: baseWindow,\r\n handle: baseWindow.querySelector(\".eChatWindowHead\"),\r\n handleWidthFix: 0,\r\n handleHeightFix: 0,\r\n start(dom) {\r\n dom.style.zIndex = EChat.Util.draggableZIndex();\r\n },\r\n stop(dom) {\r\n dom.style.height = \"auto\";\r\n }\r\n });\r\n };\r\n const deleteWindow = function () {\r\n if (typeof property.closeCallBack === \"function\") {\r\n property.closeCallBack();\r\n }\r\n if (baseWindow) {\r\n baseWindow.remove();\r\n }\r\n };\r\n\r\n this.insertContent = function (element) {\r\n if (content) {\r\n content.append(element);\r\n }\r\n };\r\n this.closeWindow = function () {\r\n deleteWindow();\r\n };\r\n createWindow();\r\n };\r\n\r\n return new BasicWindowClass();\r\n },\r\n\r\n Maximize() {\r\n let MessageGroupID = \"\";\r\n let TaskID = \"\";\r\n let TaskSourceEncompassID = \"\";\r\n const currentWindow = EChat.MainPageController.currentMessageWindow;\r\n if (currentWindow?.currentTab?.GroupInfo) {\r\n const GroupInfo = currentWindow.currentTab.GroupInfo;\r\n if (GroupInfo.GroupType === SocketUtil.GroupType.Task) {\r\n TaskSourceEncompassID = GroupInfo.MessageGroupID.split(\"_\")[0];\r\n TaskID = GroupInfo.MessageGroupID.split(\"_\")[1];\r\n } else {\r\n MessageGroupID = GroupInfo.MessageGroupID;\r\n }\r\n }\r\n let url = `Home?DashboardID=174945`;\r\n if (EChat.MainPageController.mainPageTab) {\r\n url += `&Tab=${EChat.MainPageController.mainPageTab}`;\r\n }\r\n\r\n if (TaskID) {\r\n url += `&TaskID=${TaskID}`;\r\n url += `&TaskSourceEncompassID=${TaskSourceEncompassID}`;\r\n } else {\r\n url += `&MessageGroupID=${MessageGroupID}`;\r\n }\r\n\r\n // Task 646165: eChat: Threads in small eChat should have an echat icon next to them to allow you to jump into the existing echat group in the eChat dashboard\r\n document.querySelectorAll(\".eChat-MaximizeButton\").forEach((dom) => {\r\n dom.setAttribute(\"href\", url);\r\n });\r\n },\r\n\r\n BasicButton(buttonProperty) {\r\n // todo property\r\n const property = {\r\n id: buttonProperty.id || null,\r\n imageUrl: buttonProperty.imageUrl || null,\r\n imageClass: buttonProperty.imageClass || null,\r\n imagePosition: buttonProperty.imagePosition || null,\r\n title: buttonProperty.title || \"Button\",\r\n // Task 1119613:eChat: Update all the buttons in eChat to ecp-btn\r\n icon: buttonProperty.icon || null,\r\n type: buttonProperty.type || null,\r\n ecpid: buttonProperty.ecpid || null,\r\n width: buttonProperty.width || null,\r\n arrow: buttonProperty.arrow || false,\r\n clickEvent: buttonProperty.clickEvent || null,\r\n blackButton: buttonProperty.blackButton || true\r\n };\r\n const baseButton = EC_Fmt.HtmlStrToElement(\"
    \");\r\n if (property.id) {\r\n baseButton.setAttribute(\"id\", property.id);\r\n }\r\n if (!buttonProperty.blackButton) {\r\n baseButton.classList.add(\"White\");\r\n }\r\n if (EC_Fmt.isNull(property.width)) {\r\n baseButton.style.width = `${property.width}px`;\r\n }\r\n // Task 1119613:eChat: Update all the buttons in eChat to ecp-btn\r\n const title = EC_Fmt.HtmlStrToElement(`${property.title}`);\r\n\r\n if (property.imageUrl) {\r\n const image = EChat.CustomComponent.BasicImage({\r\n imageUrl: property.imageUrl,\r\n imagePosition: property.imagePosition\r\n });\r\n image.style.float = \"left\";\r\n image.style.margin = \"5px 0 5px 10px\";\r\n baseButton.append(image);\r\n }\r\n if (property.imageClass) {\r\n const image = EChat.CustomComponent.BasicImage({});\r\n image.style.margin = \"5px 0 0 10px\";\r\n image.classList.add(property.imageClass);\r\n }\r\n baseButton.append(title);\r\n\r\n if (property.arrow) {\r\n const arrowDiv = EC_Fmt.HtmlStrToElement(\"
    \");\r\n arrowDiv.append(title);\r\n baseButton.append(arrowDiv);\r\n } else {\r\n baseButton.append(title);\r\n }\r\n baseButton.addEventListener(\"click\", (e) => {\r\n if (typeof property.clickEvent === \"function\") {\r\n property.clickEvent(e);\r\n }\r\n });\r\n return baseButton;\r\n },\r\n\r\n BasicImage(imageProperty) {\r\n // todo property\r\n const property = {\r\n id: imageProperty.id || null,\r\n height: imageProperty.height || 16,\r\n width: imageProperty.width || 16,\r\n imageUrl: imageProperty.imageUrl || null,\r\n imagePosition: imageProperty.imagePosition || \"0 0\"\r\n };\r\n const baseImage = EC_Fmt.HtmlStrToElement(`
    `);\r\n if (property.id) {\r\n baseImage.setAttribute(\"id\", property.id);\r\n }\r\n if (property.imageUrl) {\r\n baseImage.style.backgroundImage = property.imageUrl;\r\n baseImage.style.backgroundRepeat = \"no-repeat\";\r\n baseImage.style.backgroundPosition = property.imagePosition;\r\n }\r\n return baseImage;\r\n },\r\n\r\n Camera(videoId, imageCanvasId) {\r\n const CameraClass = function () {\r\n const _this = this;\r\n EChat.EventDispatcher.call(this);\r\n const videoEleId = videoId;\r\n const imageCanvasEleId = imageCanvasId;\r\n let videoStream = null;\r\n\r\n if (!document.getElementById(videoEleId) || !document.getElementById(imageCanvasEleId)) {\r\n return;\r\n }\r\n\r\n this.openCamera = function () {\r\n navigator.getMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;\r\n if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {\r\n navigator.mediaDevices.getUserMedia({\r\n video: true,\r\n audio: false\r\n }).then((stream) => {\r\n videoStream = stream;\r\n const element = document.getElementById(videoEleId);\r\n if (element) {\r\n element.srcObject = videoStream;\r\n element.play();\r\n } else {\r\n _this.closeCamera();\r\n }\r\n }).catch((err) => {\r\n let errInfo = err.name || err;\r\n switch (errInfo) {\r\n case \"DevicesNotFoundError\":\r\n errInfo = \"Devices Not Found Error\";\r\n break;\r\n case \"PermissionDeniedError\":\r\n errInfo = \"Permission Denied Error\";\r\n break;\r\n default:\r\n break;\r\n }\r\n _this.dispatch(\"CameraError\", _this.createHandlerArgument(null, errInfo));\r\n });\r\n }\r\n };\r\n\r\n this.snapPhoto = function () {\r\n if (!videoStream) {\r\n return null;\r\n }\r\n const imageCanvas = document.getElementById(imageCanvasEleId);\r\n const context = imageCanvas.getContext(\"2d\");\r\n context.drawImage(document.getElementById(videoEleId), 0, 0, imageCanvas.width, imageCanvas.height);\r\n const imgData = imageCanvas.toDataURL(\"png\");\r\n return imgData;\r\n };\r\n\r\n this.closeCamera = function () {\r\n if (videoStream) {\r\n if (typeof videoStream.stop === \"function\") {\r\n videoStream.stop();\r\n } else {\r\n const videoTrack = videoStream.getTracks()[0];\r\n if (videoTrack && typeof videoTrack.stop === \"function\") {\r\n videoTrack.stop();\r\n }\r\n }\r\n videoStream = null;\r\n const videoEle = document.getElementById(videoEleId);\r\n if (videoEle) {\r\n videoEle.removeAttribute(\"src\");\r\n }\r\n }\r\n };\r\n };\r\n\r\n return new CameraClass();\r\n },\r\n\r\n InputArea(element) {\r\n const AreaClass = function () {\r\n if (!element) {\r\n return;\r\n }\r\n const _this = this;\r\n const isFirFox = /firefox/.test(navigator.userAgent.toLowerCase());\r\n const isSafari = /safari/.test(navigator.userAgent.toLowerCase());\r\n\r\n EChat.EventDispatcher.call(this);\r\n\r\n const editorEvent = EChat.InputAreaComponentEvent;\r\n const editorElement = element;\r\n let mouseIsDown = false;\r\n let hasPasteContent = false;\r\n\r\n const initInputArea = function () {\r\n editorElement.setAttribute(\"contenteditable\", true);\r\n EChat.Util.PreventScroll(editorElement);\r\n editorElement.addEventListener(\"paste\", pasteEvent);\r\n editorElement.addEventListener(\"input\", inputEvent);\r\n editorElement.addEventListener(\"keydown\", keydownEvent);\r\n editorElement.addEventListener(\"keyup\", keyupEvent);\r\n editorElement.addEventListener(\"click\", clickEvent);\r\n editorElement.addEventListener(\"blur\", blurEvent);\r\n editorElement.addEventListener(\"mouseout\", mouseoutEvent);\r\n editorElement.addEventListener(\"mouseup\", mouseupEvent);\r\n editorElement.addEventListener(\"mousedown\", mousedownEvent);\r\n };\r\n\r\n this.getValueCount = function () {\r\n if (EChat.FullWindowController.FullWindow && EChat.FullWindowController.TextArea) {\r\n EChat.FullWindowController.TextArea.save();\r\n }\r\n\r\n // Task 757946: EChat word count is incorrect\r\n let count = editorElement.innerHTML.length;\r\n editorElement.querySelectorAll(\"img\").forEach((dom) => {\r\n if (dom.src.indexOf(\"data:image\") === 0) {\r\n // Each picture is calculated according to 300 characters.\r\n count -= dom.src.length - 300;\r\n }\r\n });\r\n return count;\r\n };\r\n\r\n this.getValue = function () {\r\n if (EChat.FullWindowController.FullWindow && EChat.FullWindowController.TextArea) {\r\n EChat.FullWindowController.TextArea.save();\r\n }\r\n return editorElement.innerHTML.replace(/\\n/g, \"\");\r\n };\r\n\r\n this.setValue = function (str) {\r\n editorElement.innerHTML = str;\r\n if (EChat.FullWindowController.FullWindow && EChat.FullWindowController.TextArea) {\r\n EChat.FullWindowController.TextArea.setContent(str);\r\n EChat.FullWindowController.TextArea.save();\r\n }\r\n if (!str) {\r\n hasPasteContent = false;\r\n }\r\n };\r\n\r\n this.focus = function () {\r\n editorElement.focus();\r\n if (window.getSelection !== undefined && blurRange) {\r\n const selection = window.getSelection();\r\n selection.removeAllRanges();\r\n selection.addRange(blurRange);\r\n }\r\n };\r\n\r\n // Task 1133007: eChat: Unify the Insert/edit link function within Task Edit and eChat\r\n // this.replaceLink = function (title, url) {\r\n this.replaceLink = function (title, url, name) {\r\n _this.focus();\r\n if (typeof title === \"string\" && title) {\r\n // const link = EC_Fmt.HtmlStrToElement(`
    ${title}`);\r\n const link = EC_Fmt.HtmlStrToElement(`${title}`);\r\n replaceNode(title, link);\r\n }\r\n };\r\n\r\n // Task 1133007: eChat: Unify the Insert/edit link function within Task Edit and eChat\r\n this.replaceLinkNew = function (title, url, name) {\r\n _this.focus();\r\n if (typeof title === \"string\" && title) {\r\n const link = EC_Fmt.HtmlStrToElement(`${title}`);\r\n replaceNode(title, link);\r\n }\r\n };\r\n\r\n const replaceNode = function (str, node) {\r\n if (window.getSelection !== undefined) {\r\n const selection = window.getSelection();\r\n const range = selection.getRangeAt(0);\r\n if (blurRange) {\r\n blurRange.deleteContents();\r\n }\r\n range.insertNode(node);\r\n }\r\n };\r\n\r\n // Task 1133007: eChat: Unify the Insert/edit link function within Task Edit and eChat\r\n // this.insertLink = function (title, url) {\r\n this.insertLink = function (title, url, name) {\r\n _this.focus();\r\n if (title === \"\") {\r\n title = \"Link\";\r\n }\r\n // const link = EC_Fmt.HtmlStrToElement(`${title} `);\r\n const link = EC_Fmt.HtmlStrToElement(`${title} `);\r\n insertNode(link);\r\n };\r\n\r\n // Task 1133007: eChat: Unify the Insert/edit link function within Task Edit and eChat\r\n this.insertLinkNew = function (title, url, name) {\r\n _this.focus();\r\n if (title === \"\") {\r\n title = \"Link\";\r\n }\r\n const link = EC_Fmt.HtmlStrToElement(`${title} `);\r\n insertNode(link);\r\n };\r\n\r\n this.insertImage = function (url) {\r\n _this.focus();\r\n const img = new Image();\r\n img.src = url;\r\n imageHandler(img);\r\n insertNode(img);\r\n };\r\n\r\n this.processImgData = function () {\r\n const obj = {\r\n htmlString: \"\",\r\n imgList: []\r\n };\r\n\r\n if (EChat.FullWindowController.FullWindow && EChat.FullWindowController.TextArea) {\r\n EChat.FullWindowController.TextArea.save();\r\n }\r\n\r\n let formatIndex = 0;\r\n editorElement.querySelectorAll(\"img\").forEach((dom) => {\r\n const dataSrc = dom.src.toString();\r\n const str = \"data:image\";\r\n if (dataSrc.substr(0, str.length) === str) {\r\n dom.outerHTML = `{${formatIndex}}`;\r\n formatIndex++;\r\n obj.imgList.push(dataSrc);\r\n }\r\n });\r\n obj.htmlString = element.innerHTML;\r\n return obj;\r\n };\r\n\r\n const pasteEvent = function (e) {\r\n hasPasteContent = true;\r\n if (isFirFox) { // FirFox automatically inserts\r\n return;\r\n }\r\n\r\n const clipboardData = e.clipboardData;\r\n let items;\r\n let item;\r\n let types;\r\n if (clipboardData) {\r\n items = clipboardData.items;\r\n if (items?.length === 1) {\r\n item = items[0];\r\n types = clipboardData.types || [];\r\n for (let i = 0; i < types.length; i++) {\r\n if (types[i] === \"Files\") {\r\n item = items[i];\r\n\r\n break;\r\n }\r\n }\r\n if (item?.kind === \"file\" && /image\\/\\w+/.test(item.type)) {\r\n imageReader(item);\r\n }\r\n }\r\n }\r\n };\r\n\r\n const imageReader = function (item) {\r\n if (item) {\r\n const fileData = item.getAsFile();\r\n const fileReader = new FileReader();\r\n fileReader.onload = function (e) {\r\n setTimeout(() => {\r\n // Task 689760: There will be two duplicate images when you paste echat on chrome 83\r\n let exist = false;\r\n document.querySelectorAll(\".eChat-MessageWindowTextArea img\").forEach((dom) => {\r\n if (dom.src === e.target.result) {\r\n exist = true;\r\n }\r\n });\r\n\r\n // Task 748051: EChat pictures are still stored in the input box after sending\r\n if (exist || !hasPasteContent) {\r\n return;\r\n }\r\n\r\n const img = new Image();\r\n img.src = e.target.result;\r\n imageHandler(img);\r\n insertNode(img);\r\n _this.dispatch(editorEvent.ValueChange, _this.createHandlerArgument(null, null));\r\n }, 300);\r\n };\r\n fileReader.readAsDataURL(fileData);\r\n }\r\n };\r\n\r\n const imageHandler = function (img) {\r\n if (img.getAttribute(\"title\") === \"\") {\r\n img.getAttribute(\"title\", EC_Fmt.Trn(\"Double-click to view full size\"));\r\n img.classList.add(\"eChat-Cursor\");\r\n img.addEventListener(\"load\", function () {\r\n EChat.Util.autoResizeImage(500, 80, this);\r\n });\r\n img.addEventListener(\"dblclick\", function () {\r\n window.open(this.src);\r\n });\r\n }\r\n };\r\n\r\n const inputEvent = function () {\r\n editorElement.querySelectorAll(\"img\").forEach((dom) => {\r\n imageHandler(dom);\r\n });\r\n _this.dispatch(editorEvent.ValueChange, _this.createHandlerArgument(null, null));\r\n };\r\n\r\n // Task 1003603: eChat: Returns in messages should support shift+enter\r\n const keydownEvent = function (e) {\r\n if (e.keyCode === 13) {\r\n if (e.ctrlKey || e.metaKey || e.shiftKey) {\r\n insertEnter();\r\n e.stopPropagation();\r\n e.preventDefault();\r\n } else {\r\n _this.dispatch(editorEvent.SendMessage, _this.createHandlerArgument(null, null));\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n }\r\n };\r\n\r\n const keyupEvent = function () {\r\n setRange();\r\n };\r\n\r\n const insertEnter = function () {\r\n if (window.getSelection !== undefined) {\r\n const selection = window.getSelection();\r\n const range = selection.getRangeAt(0);\r\n\r\n let node;\r\n const nodebr = document.createElement(\"br\");\r\n if (range.startContainer.length === range.startOffset\r\n && range.startOffset === range.endOffset\r\n && range.endOffset === range.endContainer.length\r\n && !(/msie/.test(navigator.userAgent.toLowerCase()))) {\r\n const nodediv = document.createElement(\"DIV\");\r\n\r\n if (range.commonAncestorContainer && range.commonAncestorContainer.parentElement && !range.commonAncestorContainer.parentElement.classList.contains(\"eChat-MessageWindowTextArea\")) {\r\n insertAfter(nodebr, range.commonAncestorContainer.parentElement);\r\n insertAfter(nodediv, range.commonAncestorContainer.parentElement);\r\n } else {\r\n range.insertNode(nodebr);\r\n range.insertNode(nodediv);\r\n }\r\n node = nodediv;\r\n } else {\r\n range.insertNode(nodebr);\r\n node = nodebr;\r\n }\r\n selection.removeAllRanges();\r\n\r\n const newrange = document.createRange();\r\n newrange.setStartAfter(node);\r\n newrange.setEndAfter(node);\r\n selection.addRange(newrange);\r\n }\r\n };\r\n\r\n const insertNode = function (node) {\r\n if (window.getSelection) {\r\n const selection = window.getSelection();\r\n const range = selection.getRangeAt(0);\r\n range.insertNode(node);\r\n selection.removeAllRanges();\r\n\r\n const newrange = document.createRange();\r\n newrange.setStartAfter(node);\r\n newrange.setEndAfter(node);\r\n selection.addRange(newrange);\r\n\r\n setRange();\r\n }\r\n };\r\n\r\n const insertAfter = function (newElement, targetElement) {\r\n const parent = targetElement.parentNode;\r\n if (parent.lastChild === targetElement) {\r\n parent.append(newElement);\r\n } else {\r\n parent.insertBefore(newElement, targetElement.nextSibling);\r\n }\r\n };\r\n\r\n let blurRange = null;\r\n const setRange = function () {\r\n if (window.getSelection) {\r\n const selection = window.getSelection();\r\n if (selection) {\r\n let range = null;\r\n try {\r\n range = selection.getRangeAt(0);\r\n } catch (e) {\r\n // eslint-disable-next-line no-console\r\n console.error(e);\r\n }\r\n if (range) {\r\n blurRange = range.cloneRange();\r\n }\r\n }\r\n }\r\n };\r\n\r\n const clickEvent = function () {\r\n setRange();\r\n };\r\n\r\n const mouseupEvent = function () {\r\n mouseIsDown = false;\r\n setRange();\r\n };\r\n\r\n const mouseoutEvent = function () {\r\n if (mouseIsDown) {\r\n mouseIsDown = false;\r\n setRange();\r\n }\r\n };\r\n\r\n const mousedownEvent = function () {\r\n mouseIsDown = true;\r\n };\r\n\r\n const blurEvent = function () {\r\n if (!isFirFox && !isSafari) {\r\n setRange();\r\n }\r\n };\r\n\r\n this.getSelectValue = function () {\r\n if (blurRange) {\r\n return blurRange.toString();\r\n }\r\n return null;\r\n };\r\n\r\n this.clearSelectFmt = function () {\r\n // Task 757955: EChat clear format tool does not preserve line breaks\r\n const editorElementText = editorElement.innerText;\r\n editorElement.innerHTML = editorElementText.replace(/\\n/g, \"
    \");\r\n if (window.getSelection && editorElementText) { // IE9+、Firefox、Safari、Chrome和Opera\r\n const selection = window.getSelection();\r\n const range = document.createRange();\r\n const editorElementLastNode = editorElement.lastChild;\r\n range.setStart(editorElementLastNode, editorElementLastNode.length);\r\n selection.removeAllRanges();\r\n selection.addRange(range);\r\n setRange();\r\n _this.focus();\r\n editorElement.scrollTop = editorElement.scrollHeight;\r\n } else {\r\n _this.focus();\r\n }\r\n };\r\n\r\n initInputArea();\r\n };\r\n\r\n return new AreaClass();\r\n },\r\n\r\n ImageCrop(canvasId, imageSource) {\r\n const ImageCropClass = function () {\r\n const canvas = document.getElementById(canvasId);\r\n if (!canvas && imageSource) {\r\n return;\r\n }\r\n\r\n function Selection(x, y, w, h) {\r\n this.x = x; // initial positions\r\n this.y = y;\r\n this.w = w; // and size\r\n this.h = h;\r\n\r\n this.px = x; // extra variables to dragging calculations\r\n this.py = y;\r\n\r\n this.csize = 2; // resize cubes size\r\n this.csizeh = 4; // resize cubes size (on hover)\r\n\r\n this.bHow = [false, false, false, false]; // hover statuses\r\n this.iCSize = [this.csize, this.csize, this.csize, this.csize]; // resize cubes sizes\r\n this.bDrag = [false, false, false, false]; // drag statuses\r\n this.bDragAll = false; // drag whole selection\r\n }\r\n\r\n Selection.prototype.draw = function () {\r\n ctx.strokeStyle = \"var(--primary-120)\";\r\n ctx.lineWidth = 2;\r\n ctx.strokeRect(this.x, this.y, this.w, this.h);\r\n\r\n // draw part of original image\r\n if (this.w > 0 && this.h > 0) {\r\n ctx.drawImage(image, this.x, this.y, this.w, this.h, this.x, this.y, this.w, this.h);\r\n }\r\n\r\n // draw resize cubes\r\n ctx.fillStyle = \"var(--neutral-10)\";\r\n ctx.fillRect(this.x - this.iCSize[0], this.y - this.iCSize[0], this.iCSize[0] * 2, this.iCSize[0] * 2);\r\n ctx.fillRect(this.x + this.w - this.iCSize[1], this.y - this.iCSize[1], this.iCSize[1] * 2, this.iCSize[1] * 2);\r\n ctx.fillRect(this.x + this.w - this.iCSize[2], this.y + this.h - this.iCSize[2], this.iCSize[2] * 2, this.iCSize[2] * 2);\r\n ctx.fillRect(this.x - this.iCSize[3], this.y + this.h - this.iCSize[3], this.iCSize[3] * 2, this.iCSize[3] * 2);\r\n };\r\n\r\n const drawScene = function () {\r\n ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); // clear canvas\r\n\r\n // draw source image\r\n ctx.drawImage(image, 0, 0, ctx.canvas.width, ctx.canvas.height);\r\n\r\n // and make it darker\r\n ctx.fillStyle = \"rgba(0, 0, 0, 0.5)\";\r\n ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height);\r\n\r\n // draw selection\r\n selectObj.draw();\r\n };\r\n\r\n const createSelection = function () {\r\n let startLen;\r\n if (image.width < 300 || image.height < 300) {\r\n startLen = image.width < image.height ? image.width : image.height;\r\n startLen -= 10;\r\n } else {\r\n startLen = 250;\r\n }\r\n const x = ctx.canvas.width / 2 - startLen / 2;\r\n const y = ctx.canvas.height / 2 - startLen / 2;\r\n return new Selection(x, y, startLen, startLen);\r\n };\r\n\r\n const ctx = canvas.getContext(\"2d\");\r\n let iMouseX = 1;\r\n let iMouseY = 1;\r\n let selectObj = null;\r\n const image = new Image();\r\n image.onload = function () {\r\n selectObj = createSelection();\r\n drawScene();\r\n canvas.addEventListener(\"mousemove\", (e) => {\r\n const rect = canvas.getBoundingClientRect();\r\n const canvasOffset = {\r\n top: rect.top + document.body.scrollTop,\r\n left: rect.left + document.body.scrollLeft\r\n };\r\n\r\n iMouseX = Math.floor(e.pageX - canvasOffset.left);\r\n iMouseY = Math.floor(e.pageY - canvasOffset.top);\r\n\r\n if (selectObj.bDragAll) {\r\n let cx = iMouseX - selectObj.px;\r\n cx = cx < 0 ? 0 : cx;\r\n const mx = ctx.canvas.width - selectObj.w;\r\n cx = cx > mx ? mx : cx;\r\n selectObj.x = cx;\r\n let cy = iMouseY - selectObj.py;\r\n cy = cy < 0 ? 0 : cy;\r\n const my = ctx.canvas.height - selectObj.h;\r\n cy = cy > my ? my : cy;\r\n selectObj.y = cy;\r\n }\r\n for (let i = 0; i < 4; i++) {\r\n selectObj.bHow[i] = false;\r\n selectObj.iCSize[i] = selectObj.csize;\r\n }\r\n\r\n // hovering over resize cubes\r\n if (iMouseX > selectObj.x - selectObj.csizeh && iMouseX < selectObj.x + selectObj.csizeh\r\n && iMouseY > selectObj.y - selectObj.csizeh && iMouseY < selectObj.y + selectObj.csizeh) {\r\n selectObj.bHow[0] = true;\r\n selectObj.iCSize[0] = selectObj.csizeh;\r\n }\r\n if (iMouseX > selectObj.x + selectObj.w - selectObj.csizeh && iMouseX < selectObj.x + selectObj.w + selectObj.csizeh\r\n && iMouseY > selectObj.y - selectObj.csizeh && iMouseY < selectObj.y + selectObj.csizeh) {\r\n selectObj.bHow[1] = true;\r\n selectObj.iCSize[1] = selectObj.csizeh;\r\n }\r\n if (iMouseX > selectObj.x + selectObj.w - selectObj.csizeh && iMouseX < selectObj.x + selectObj.w + selectObj.csizeh\r\n && iMouseY > selectObj.y + selectObj.h - selectObj.csizeh && iMouseY < selectObj.y + selectObj.h + selectObj.csizeh) {\r\n selectObj.bHow[2] = true;\r\n selectObj.iCSize[2] = selectObj.csizeh;\r\n }\r\n if (iMouseX > selectObj.x - selectObj.csizeh && iMouseX < selectObj.x + selectObj.csizeh\r\n && iMouseY > selectObj.y + selectObj.h - selectObj.csizeh && iMouseY < selectObj.y + selectObj.h + selectObj.csizeh) {\r\n selectObj.bHow[3] = true;\r\n selectObj.iCSize[3] = selectObj.csizeh;\r\n }\r\n\r\n // in case of dragging of resize cubes\r\n let iFW;\r\n let iFH;\r\n let iFX;\r\n let iFY;\r\n if (selectObj.bDrag[0]) {\r\n iFX = iMouseX - selectObj.px;\r\n iFY = iMouseY - selectObj.py;\r\n iFW = selectObj.w + selectObj.x - iFX;\r\n iFH = selectObj.h + selectObj.y - iFY;\r\n const mx = iFX + iFW;\r\n const my = iFY + iFH;\r\n const l = iFW < iFH ? iFH : iFW;\r\n iFW = l;\r\n iFH = l;\r\n iFX = mx - l;\r\n iFY = my - l;\r\n }\r\n if (selectObj.bDrag[1]) {\r\n iFX = selectObj.x;\r\n iFY = iMouseY - selectObj.py;\r\n iFW = iMouseX - selectObj.px - iFX;\r\n iFH = selectObj.h + selectObj.y - iFY;\r\n const my = iFY + iFH;\r\n const l = iFW < iFH ? iFH : iFW;\r\n iFW = l;\r\n iFH = l;\r\n iFY = my - l;\r\n }\r\n if (selectObj.bDrag[2]) {\r\n iFX = selectObj.x;\r\n iFY = selectObj.y;\r\n iFW = iMouseX - selectObj.px - iFX;\r\n iFH = iMouseY - selectObj.py - iFY;\r\n const l = iFW < iFH ? iFH : iFW;\r\n iFW = l;\r\n iFH = l;\r\n }\r\n if (selectObj.bDrag[3]) {\r\n iFX = iMouseX - selectObj.px;\r\n iFY = selectObj.y;\r\n iFW = selectObj.w + selectObj.x - iFX;\r\n iFH = iMouseY - selectObj.py - iFY;\r\n const mx = iFX + iFW;\r\n const l = iFW < iFH ? iFH : iFW;\r\n iFW = l;\r\n iFH = l;\r\n iFX = mx - l;\r\n }\r\n\r\n if (iFX >= 0 && iFX <= ctx.canvas.width\r\n && iFY >= 0 && iFY <= ctx.canvas.height\r\n && (iFW + iFX) <= ctx.canvas.width && iFW > selectObj.csizeh * 2\r\n && (iFH + iFY) <= ctx.canvas.height && iFH > selectObj.csizeh * 2) {\r\n selectObj.w = iFW;\r\n selectObj.h = iFH;\r\n\r\n selectObj.x = iFX;\r\n selectObj.y = iFY;\r\n }\r\n drawScene();\r\n });\r\n\r\n canvas.addEventListener(\"mousedown\", (e) => {\r\n const rect = canvas.getBoundingClientRect();\r\n const canvasOffset = {\r\n top: rect.top + document.body.scrollTop,\r\n left: rect.left + document.body.scrollLeft\r\n };\r\n iMouseX = Math.floor(e.pageX - canvasOffset.left);\r\n iMouseY = Math.floor(e.pageY - canvasOffset.top);\r\n\r\n selectObj.px = iMouseX - selectObj.x;\r\n selectObj.py = iMouseY - selectObj.y;\r\n\r\n if (selectObj.bHow[0]) {\r\n selectObj.px = iMouseX - selectObj.x;\r\n selectObj.py = iMouseY - selectObj.y;\r\n }\r\n if (selectObj.bHow[1]) {\r\n selectObj.px = iMouseX - selectObj.x - selectObj.w;\r\n selectObj.py = iMouseY - selectObj.y;\r\n }\r\n if (selectObj.bHow[2]) {\r\n selectObj.px = iMouseX - selectObj.x - selectObj.w;\r\n selectObj.py = iMouseY - selectObj.y - selectObj.h;\r\n }\r\n if (selectObj.bHow[3]) {\r\n selectObj.px = iMouseX - selectObj.x;\r\n selectObj.py = iMouseY - selectObj.y - selectObj.h;\r\n }\r\n\r\n if (iMouseX > selectObj.x + selectObj.csizeh\r\n && iMouseX < selectObj.x + selectObj.w - selectObj.csizeh\r\n && iMouseY > selectObj.y + selectObj.csizeh\r\n && iMouseY < selectObj.y + selectObj.h - selectObj.csizeh) {\r\n selectObj.bDragAll = true;\r\n }\r\n\r\n for (let i = 0; i < 4; i++) {\r\n if (selectObj.bHow[i]) {\r\n selectObj.bDrag[i] = true;\r\n }\r\n }\r\n });\r\n\r\n // Task 995299: eChat's avatar change function is abnormal.\r\n canvas.addEventListener(\"mouseleave\", () => {\r\n selectObj.bDragAll = false;\r\n for (let i = 0; i < 4; i++) {\r\n selectObj.bDrag[i] = false;\r\n }\r\n selectObj.px = 0;\r\n selectObj.py = 0;\r\n });\r\n canvas.addEventListener(\"mouseup\", () => {\r\n selectObj.bDragAll = false;\r\n for (let i = 0; i < 4; i++) {\r\n selectObj.bDrag[i] = false;\r\n }\r\n selectObj.px = 0;\r\n selectObj.py = 0;\r\n });\r\n };\r\n image.src = imageSource;\r\n\r\n this.getImageData = function () {\r\n const tmpCanvas = document.createElement(\"canvas\");\r\n const tmpCtx = tmpCanvas.getContext(\"2d\");\r\n tmpCanvas.width = selectObj.w;\r\n tmpCanvas.height = selectObj.h;\r\n tmpCtx.drawImage(image, selectObj.x, selectObj.y, selectObj.w, selectObj.h, 0, 0, selectObj.w, selectObj.h);\r\n return tmpCanvas.toDataURL();\r\n };\r\n };\r\n\r\n return new ImageCropClass();\r\n },\r\n\r\n ChangePictureButton(callback, btnDiv) {\r\n let cameraComponent = null;\r\n let imageCrop = null;\r\n const createEditPhotoWindow = function (image) {\r\n const editPhotoWindow = EChat.CustomComponent.BasicWindow({\r\n id: \"EChatTakePhoto\",\r\n height: 470,\r\n width: 600,\r\n draggable: true,\r\n headerTitle: \"Edit Photo\"\r\n });\r\n const x = image.width;\r\n const y = image.height;\r\n EChat.Util.autoResizeImage(600, 400, image);\r\n const content = EC_Fmt.HtmlStrToElement(\"
    \");\r\n const canvas = EC_Fmt.HtmlStrToElement(\"\");\r\n canvas.width = image.width;\r\n canvas.height = image.height;\r\n content.append(canvas);\r\n\r\n const footer = EC_Fmt.HtmlStrToElement(\"
    \");\r\n const okBtn = EChat.CustomComponent.BasicButton({\r\n title: EC_Fmt.Trn(\"OK\"),\r\n width: 100,\r\n whiteButton: false,\r\n clickEvent() {\r\n if (typeof callback === \"function\") {\r\n callback(imageCrop.getImageData());\r\n }\r\n editPhotoWindow.closeWindow();\r\n }\r\n });\r\n footer.append(okBtn);\r\n\r\n editPhotoWindow.insertContent(content);\r\n editPhotoWindow.insertContent(footer);\r\n\r\n const canvasTop = content.clientHeight / 2 - image.height / 2;\r\n canvas.style.marginTop = `${canvasTop}px`;\r\n\r\n const tmpCtx = canvas.getContext(\"2d\");\r\n tmpCtx.drawImage(image, 0, 0, x, y, 0, 0, canvas.width, canvas.height);\r\n imageCrop = EChat.CustomComponent.ImageCrop(\"EChatImageCanvas\", canvas.toDataURL());\r\n\r\n return editPhotoWindow;\r\n };\r\n const createTakePhotoWindow = function () {\r\n const takePhotoWindow = EChat.CustomComponent.BasicWindow({\r\n id: \"EChatTakePhoto\",\r\n height: 370,\r\n width: 400,\r\n draggable: true,\r\n headerTitle: \"Take Photo\",\r\n closeCallBack() {\r\n if (cameraComponent) {\r\n cameraComponent.closeCamera();\r\n }\r\n }\r\n });\r\n // todo content\r\n const content = EC_Fmt.HtmlStrToElement(\"
    \");\r\n const video = EC_Fmt.HtmlStrToElement(``);\r\n const canvas = EC_Fmt.HtmlStrToElement(\"\");\r\n canvas.width = 400;\r\n canvas.height = 300;\r\n content.append(video);\r\n content.append(canvas);\r\n // todo footer\r\n const footer = EC_Fmt.HtmlStrToElement(\"
    \");\r\n const snapshotBtn = EChat.CustomComponent.BasicButton({\r\n imageClass: \"ews-icon-emphotograph\",\r\n title: EC_Fmt.Trn(\"Snapshot\"),\r\n clickEvent() {\r\n const imageData = cameraComponent.snapPhoto();\r\n if (imageData) {\r\n snapshotBtn.style.display = \"none\";\r\n retakeBtn.style.display = \"inline-block\";\r\n okBtn.style.display = \"inline-block\";\r\n canvas.style.display = \"inline-block\";\r\n video.style.display = \"none\";\r\n imageCrop = EChat.CustomComponent.ImageCrop(\"EChatImageCanvas\", imageData);\r\n }\r\n }\r\n });\r\n const retakeBtn = EChat.CustomComponent.BasicButton({\r\n // imageUrl: \"url(images/EChatToolSprite.png)\",\r\n // imagePosition: \"-160px -55px\",\r\n imageClass: \"ews-icon-redo\",\r\n title: EC_Fmt.Trn(\"Retake\"),\r\n blackButton: false,\r\n width: 100,\r\n clickEvent() {\r\n retakeBtn.style.display = \"none\";\r\n okBtn.style.display = \"none\";\r\n snapshotBtn.style.display = \"inline-block\";\r\n video.style.display = \"inline-block\";\r\n canvas.style.display = \"none\";\r\n }\r\n });\r\n retakeBtn.style.display = \"none\";\r\n\r\n const okBtn = EChat.CustomComponent.BasicButton({\r\n title: EC_Fmt.Trn(\"OK\"),\r\n blackButton: true,\r\n width: 100,\r\n clickEvent() {\r\n if (typeof callback === \"function\") {\r\n callback(imageCrop.getImageData());\r\n }\r\n takePhotoWindow.closeWindow();\r\n }\r\n });\r\n okBtn.style.display = \"none\";\r\n footer.append(snapshotBtn);\r\n footer.append(retakeBtn);\r\n footer.append(okBtn);\r\n\r\n takePhotoWindow.insertContent(content);\r\n takePhotoWindow.insertContent(footer);\r\n return takePhotoWindow;\r\n };\r\n\r\n const initBtn = function () {\r\n if (!btnDiv) {\r\n btnDiv = EChat.CustomComponent.BasicButton({\r\n title: EC_Fmt.Trn(\"Change Picture\"),\r\n blackButton: false,\r\n arrow: true,\r\n clickEvent: (e) => {\r\n if (hidendiv.clientWidth > 0) {\r\n hidendiv.style.display = \"none\";\r\n } else {\r\n hidendiv.style.display = \"block\";\r\n }\r\n e.stopPropagation();\r\n }\r\n });\r\n btnDiv.style.width = \"124px\";\r\n // Task 1119613:eChat: Update all the buttons in eChat to ecp-btn\r\n // btnDiv.style.maxHeight = \"82px\";\r\n btnDiv.style.overflow = \"hidden\";\r\n } else {\r\n btnDiv.addEventListener(\"click\", (e) => {\r\n hidendiv.style.position = \"absolute\";\r\n hidendiv.style.top = \"0px\";\r\n hidendiv.style.left = \"0px\";\r\n hidendiv.style.width = \"auto\";\r\n if (hidendiv.clientWidth > 0) {\r\n hidendiv.style.display = \"none\";\r\n } else {\r\n hidendiv.style.display = \"block\";\r\n }\r\n e.stopPropagation();\r\n });\r\n }\r\n\r\n const hidendiv = EC_Fmt.HtmlStrToElement(\"\");\r\n const takePhotoBtn = EChat.CustomComponent.BasicButton({\r\n imageClass: \"ews-icon-emphotograph\",\r\n blackButton: false,\r\n title: EC_Fmt.Trn(\"Take Photo\"),\r\n clickEvent() {\r\n const supportPhoto = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;\r\n if (!supportPhoto) {\r\n ECP.Dialog.Alert(EC_Fmt.Trn(\"Browser does not support take photo function\"));\r\n } else if (!document.getElementById(\"EChatTakePhoto\")) {\r\n createTakePhotoWindow();\r\n cameraComponent = EChat.CustomComponent.Camera(\"EChatVideo\", \"EChatImageCanvas\");\r\n cameraComponent.bind(\"CameraError\", (data) => {\r\n ECP.Dialog.Alert(data.data);\r\n });\r\n if (cameraComponent) {\r\n cameraComponent.openCamera();\r\n }\r\n }\r\n }\r\n });\r\n hidendiv.append(takePhotoBtn);\r\n const uploadBtn = EChat.CustomComponent.BasicButton({\r\n imageClass: \"ews-icon-upload\",\r\n blackButton: false,\r\n title: EC_Fmt.Trn(\"Upload Photo\"),\r\n clickEvent(e) {\r\n if (document.getElementById(\"EChatTakePhoto\")) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n }\r\n });\r\n const inputValueChangeEvent = function () {\r\n const iconFile = this;\r\n if (iconFile.value) {\r\n if (EChat.Util.checkImage(iconFile.value)) {\r\n const fileReader = new FileReader();\r\n fileReader.onload = function (e) {\r\n const tmpImage = new Image();\r\n tmpImage.onload = function () {\r\n createEditPhotoWindow(tmpImage);\r\n iconFile.value = \"\";\r\n if (iconFile.value) {\r\n const parentNode = iconFile.parentNode;\r\n const cloneInput = iconFile.cloneNode();\r\n cloneInput.addEventListener(\"change\", inputValueChangeEvent);\r\n iconFile.remove();\r\n parentNode.append(cloneInput);\r\n }\r\n };\r\n tmpImage.src = e.target.result;\r\n };\r\n fileReader.readAsDataURL(this.files[0]);\r\n } else {\r\n ECP.Dialog.Alert(EC_Fmt.Trn(\"Please select image file. (.jpg, .png, .jpeg, .gif)\"));\r\n }\r\n }\r\n };\r\n const inputElement = EC_Fmt.HtmlStrToElement(\"\");\r\n inputElement.addEventListener(\"change\", inputValueChangeEvent);\r\n uploadBtn.style.overflow = \"hidden\";\r\n uploadBtn.append(inputElement);\r\n hidendiv.append(uploadBtn);\r\n const closeeChatAvatarBtn = EC_Fmt.HtmlStrToElement(\"
    \");\r\n closeeChatAvatarBtn.addEventListener(\"click\", (e) => {\r\n hidendiv.style.display = \"none\";\r\n e.stopPropagation();\r\n });\r\n hidendiv.append(closeeChatAvatarBtn);\r\n takePhotoBtn.classList.add(\"eChatAvatarBtnListItem\");\r\n uploadBtn.classList.add(\"eChatAvatarBtnListItem\");\r\n\r\n btnDiv.append(hidendiv);\r\n return btnDiv;\r\n };\r\n return initBtn();\r\n },\r\n // Task 1108551: Editing eChat Group Image updates User image.\r\n UserAvaterDisplay(parentElement, url, userCount, pWidth, pHeight, IsUserAvater) {\r\n // css border-box model parentElement must append to dom\r\n if (parentElement) {\r\n let userIconDisplay;\r\n if (IsUserAvater) {\r\n userIconDisplay = EC_Fmt.HtmlStrToElement(\"
    \");\r\n EChat.CustomComponent.ChangePictureButton((imageData) => {\r\n if (imageData) {\r\n document.querySelectorAll(\".eChatUserAvatarDisplay\").forEach((dom) => {\r\n dom.style.backgroundSize = \"cover\";\r\n dom.style.backgroundRepeat = \"no-repeat\";\r\n dom.style.backgroundImage = `url(${imageData})`;\r\n });\r\n const UserAvatarDisplay = document.getElementById(\"user-avatar-display\");\r\n if (UserAvatarDisplay) {\r\n UserAvatarDisplay.setAttribute(\"src\", imageData);\r\n }\r\n EChat.DataProvider.uploadUserAvatar(imageData);\r\n }\r\n }, userIconDisplay);\r\n } else {\r\n userIconDisplay = EC_Fmt.HtmlStrToElement(\"
    \");\r\n }\r\n\r\n let imageUrl;\r\n if (url) {\r\n imageUrl = `url(${url})`;\r\n userIconDisplay.style.backgroundImage = imageUrl;\r\n userIconDisplay.style.backgroundRepeat = \"no-repeat\";\r\n } else {\r\n if (userCount > 2) {\r\n userIconDisplay.style.backgroundImage = `url(\"${EChat.Setting.DefaultGroupIcon}\")`;\r\n } else {\r\n userIconDisplay.style.backgroundImage = `url(\"${EChat.Setting.DefaultUserIcon}\")`;\r\n }\r\n userIconDisplay.style.backgroundRepeat = \"no-repeat\";\r\n }\r\n // Task 758473: The default avatar of eChat users is not displayed correctly\r\n userIconDisplay.style.backgroundSize = \"cover\";\r\n userIconDisplay.style.height = `${pHeight}px`;\r\n userIconDisplay.style.width = `${pWidth}px`;\r\n userIconDisplay.style.borderRadius = `${pHeight / 2}px`;\r\n\r\n const AuthenticationID = EChat.DataProvider.CurrentUserInfo.AuthenticationID;\r\n const UserAvailabilityI = EC_Fmt.HtmlStrToElement(\"\");\r\n if (EChat.DataProvider.CurrentUserInfo.AuthenticationID > 0) {\r\n UserAvailabilityI.classList.add(`eChat-UserAvailability-${AuthenticationID}`);\r\n }\r\n parentElement.append(userIconDisplay);\r\n parentElement.append(UserAvailabilityI);\r\n }\r\n },\r\n\r\n UserItemDisplay(userInfo, checkbox, showUserType) {\r\n const divElement = EC_Fmt.HtmlStrToElement(`
    `);\r\n divElement.setAttribute(\"usertype\", userInfo.UserType);\r\n divElement.setAttribute(\"authid\", userInfo.AuthenticationID);\r\n\r\n let iconUrl;\r\n if (!userInfo.Icon) {\r\n iconUrl = EChat.Setting.DefaultUserIcon;\r\n } else {\r\n iconUrl = userInfo.Icon;\r\n }\r\n\r\n const iconImgSpan = EC_Fmt.HtmlStrToElement(\"\");\r\n const iconSpan = EC_Fmt.HtmlStrToElement(``);\r\n const PrimaryEncompassID = userInfo.PrimaryEncompassID ? ` (${userInfo.PrimaryEncompassID})` : \"\";\r\n const Department = userInfo.Department ? ` (Department includes ${userInfo.Department})` : \"\";\r\n const JobTitle = userInfo.JobTitle ? ` (JobTitle includes ${userInfo.JobTitle})` : \"\";\r\n const DisplayDepartment = userInfo.DisplayDepartment ? ` (Department includes ${userInfo.DisplayDepartment})` : Department;\r\n const DisplayJobTitle = userInfo.DisplayJobTitle ? ` (JobTitle includes ${userInfo.DisplayJobTitle})` : JobTitle;\r\n\r\n const nameSpan = EC_Fmt.HtmlStrToElement(`${userInfo.DisplayName ? userInfo.DisplayName : userInfo.Name}${PrimaryEncompassID}${DisplayDepartment}${DisplayJobTitle}`);\r\n nameSpan.setAttribute(\"title\", userInfo.Name + PrimaryEncompassID + Department + JobTitle);\r\n const checkBoxLable = EC_Fmt.HtmlStrToElement(\"\");\r\n const checkBoxSpan = EC_Fmt.HtmlStrToElement(\"\");\r\n const checkBoxInput = EC_Fmt.HtmlStrToElement(``);\r\n checkBoxInput.setAttribute(\"fullname\", userInfo.Name);\r\n checkBoxInput.setAttribute(\"username\", userInfo.UserName);\r\n\r\n checkBoxLable.append(checkBoxInput);\r\n checkBoxLable.append(checkBoxSpan);\r\n iconImgSpan.append(iconSpan);\r\n if (checkbox) {\r\n divElement.append(checkBoxLable);\r\n }\r\n divElement.append(iconImgSpan);\r\n divElement.append(nameSpan);\r\n\r\n if (showUserType) {\r\n const typeSpan = EC_Fmt.HtmlStrToElement(`${userInfo.UserType}`);\r\n typeSpan.setAttribute(\"title\", userInfo.UserType);\r\n divElement.append(typeSpan);\r\n }\r\n return divElement;\r\n },\r\n\r\n async InitUserSearchMenu(menu) {\r\n EChat.Util.ShowLoading();\r\n let EChatUserAdvancedSearch = document.getElementById(\"EChatUserAdvancedSearch\");\r\n let data;\r\n try {\r\n data = await EChat.DataProvider.api(\"EChat_GetUserSearchFilters\");\r\n } catch (e) {\r\n ECP.Dialog.HideLoading();\r\n return;\r\n }\r\n\r\n if (!EChatUserAdvancedSearch) {\r\n const htmlData = await EChat.MainPageController.loadEChatViewHtml();\r\n EChatUserAdvancedSearch = EC_Fmt.HtmlStrToElement(htmlData).querySelector(\"#EChatUserAdvancedSearch\");\r\n }\r\n menu.innerHTML = EChatUserAdvancedSearch.innerHTML;\r\n\r\n const changeEvent = function () {\r\n const menuUserTypeValues = menu.querySelector(\"#EChatSelectUserType input[type='hidden']\").value;\r\n const menuLocationValues = menu.querySelector(\"#EChatSelectLocation input[type='hidden']\").value;\r\n const menuRoleValues = menu.querySelector(\"#EChatSelectRole input[type='hidden']\").value;\r\n\r\n const filterButton = document.querySelector(\"#EChatMainPageContent .eChat-advanced-search-btn\");\r\n const SendMessageUserAdvancedSearchBtn = document.getElementById(\"SendMessageUserAdvancedSearchBtn\");\r\n if (filterButton) {\r\n filterButton.style.color = menuUserTypeValues || menuLocationValues || menuRoleValues ? \"#0e5aa7\" : \"var(--primary-120)\";\r\n }\r\n if (SendMessageUserAdvancedSearchBtn) {\r\n SendMessageUserAdvancedSearchBtn.style.color = menuUserTypeValues || menuLocationValues || menuRoleValues ? \"#0e5aa7\" : \"#bbb\";\r\n }\r\n };\r\n\r\n const locationDom = menu.querySelector(\"#EChatSelectLocation\");\r\n if (data.Locations) {\r\n let ValuesArr = \"\";\r\n for (let i = 0; i < data.Locations.length; i++) {\r\n const locationInfo = data.Locations[i];\r\n if (ValuesArr) {\r\n ValuesArr += \"^\";\r\n }\r\n ValuesArr += `${locationInfo.LocationID}|${locationInfo.Location}`;\r\n }\r\n\r\n await ECP.HTML.FillWithAutoComplete(locationDom,\r\n {\r\n InputName: \"EChatSelectLocationID\",\r\n DataType: ECP.DataType._AutoNumber,\r\n Width: 190,\r\n CurValue: \"\",\r\n CurDisplayValue: \"\",\r\n Required: false,\r\n LimitToRefList: true,\r\n IsSearch: true,\r\n Translate: false,\r\n TabIndex: 1,\r\n ValuesArr,\r\n Placeholder: \"\"\r\n }, null, null, changeEvent);\r\n }\r\n\r\n const roleDom = menu.querySelector(\"#EChatSelectRole\");\r\n if (data.Roles) {\r\n let ValuesArr = \"\";\r\n for (let i = 0; i < data.Roles.length; i++) {\r\n const roleInfo = data.Roles[i];\r\n if (ValuesArr) {\r\n ValuesArr += \"^\";\r\n }\r\n ValuesArr += `${roleInfo.RoleID}|${roleInfo.Role}`;\r\n }\r\n\r\n roleDom.innerHTML = \"\";\r\n await ECP.HTML.FillWithAutoComplete(roleDom,\r\n {\r\n InputName: \"EChatSelectRoleID\",\r\n DataType: ECP.DataType._AutoNumber,\r\n Width: 190,\r\n CurValue: \"\",\r\n CurDisplayValue: \"\",\r\n Required: false,\r\n LimitToRefList: true,\r\n IsSearch: true,\r\n Translate: false,\r\n TabIndex: 1,\r\n ValuesArr,\r\n Placeholder: \"\"\r\n }, null, null, changeEvent);\r\n }\r\n\r\n const userTypeDom = menu.querySelector(\"#EChatSelectUserType\");\r\n if (data.UserTypes) {\r\n let ValuesArr = \"\";\r\n for (let i = 0; i < data.UserTypes.length; i++) {\r\n const userTypeInfo = data.UserTypes[i];\r\n if (ValuesArr) {\r\n ValuesArr += \"^\";\r\n }\r\n ValuesArr += `${userTypeInfo.UserTypeID}|${userTypeInfo.UserType}`;\r\n }\r\n\r\n userTypeDom.innerHTML = \"\";\r\n await ECP.HTML.FillWithAutoComplete(userTypeDom,\r\n {\r\n InputName: \"EChatSelectUserTypeID\",\r\n DataType: ECP.DataType._AutoNumber,\r\n Width: 190,\r\n CurValue: \"\",\r\n CurDisplayValue: \"\",\r\n Required: false,\r\n LimitToRefList: true,\r\n IsSearch: true,\r\n Translate: false,\r\n TabIndex: 1,\r\n ValuesArr,\r\n Placeholder: \"\"\r\n }, null, null, changeEvent);\r\n }\r\n\r\n // Task 937742: eChat: Updates to eChat Search.\r\n const AjaxClear = menu.querySelector(\"#EChatUserSearchClear\");\r\n AjaxClear.addEventListener(\"click\", (event) => {\r\n event.stopPropagation();\r\n // Task 1147400: DSDLink: eChat in the new Mobile Framework(echat Dashboard)\r\n if (EChat.MainPageController.ClientOS === \"Mobile\") {\r\n document.getElementById(\"EChatSelectUserTypeIDInput\").setAttribute(\"selarray\", \"\");\r\n document.getElementById(\"EChatSelectRoleIDInput\").setAttribute(\"selarray\", \"\");\r\n document.getElementById(\"EChatSelectLocationIDInput\").setAttribute(\"selarray\", \"\");\r\n\r\n document.getElementById(\"EChatSelectUserTypeIDInput\").value = \"\";\r\n document.getElementById(\"EChatSelectRoleIDInput\").value = \"\";\r\n document.getElementById(\"EChatSelectLocationIDInput\").value = \"\";\r\n\r\n document.getElementById(\"EChatSelectUserTypeIDHidden\").value = \"\";\r\n document.getElementById(\"EChatSelectRoleIDHidden\").value = \"\";\r\n document.getElementById(\"EChatSelectLocationIDHidden\").value = \"\";\r\n } else {\r\n const Checkboxes = document.querySelectorAll(\"#EChatSelectRoleID_Results input[type='checkbox']:checked, #EChatSelectUserTypeID_Results input[type='checkbox']:checked, #EChatSelectLocationID_Results input[type='checkbox']:checked\");\r\n for (let i = 0, CheckboxesLength = Checkboxes.length; i < CheckboxesLength; i++) {\r\n EC_Fmt.TriggerEvent(Checkboxes[i].parentElement, \"click\");\r\n }\r\n document.getElementById(\"EChatSelectUserTypeIDHidden\").value = \"\";\r\n document.getElementById(\"EChatSelectRoleIDHidden\").value = \"\";\r\n document.getElementById(\"EChatSelectLocationIDHidden\").value = \"\";\r\n }\r\n });\r\n ECP.Dialog.HideLoading();\r\n },\r\n\r\n UserSelectEvnet(e, eChatUserItem, itemid, ClickCallBack, HiddenCreateGroupBtn) {\r\n let cancelAuthID = 0;\r\n const input = eChatUserItem.querySelector(\"input\");\r\n if (e.target.className === \"eChatCheckBoxSpan\" || e.target.className === \"eChatCheckBoxLable\") {\r\n const eChatParentCheckBoxSpan = eChatUserItem.querySelector(\".eChatCheckBoxSpan\");\r\n input.checked = !input.checked;\r\n if (input.checked) {\r\n eChatParentCheckBoxSpan.style.backgroundPosition = \"-30px -25px\";\r\n eChatUserItem.setAttribute(\"select\", \"true\");\r\n } else {\r\n cancelAuthID = input.getAttribute(\"authid\");\r\n eChatParentCheckBoxSpan.style.backgroundPosition = \"0px -25px\";\r\n eChatUserItem.setAttribute(\"select\", \"false\");\r\n }\r\n } else if (ClickCallBack) {\r\n ClickCallBack(input);\r\n }\r\n\r\n e.preventDefault();\r\n\r\n if (cancelAuthID && !HiddenCreateGroupBtn) {\r\n const EChatSearchText = document.getElementById(\"EChatSearchText\");\r\n let selectAuthIDArr = [];\r\n const selectedStr = EChatSearchText.getAttribute(\"selected\");\r\n if (selectedStr) {\r\n selectAuthIDArr = selectedStr.split(\",\");\r\n }\r\n\r\n const index = selectAuthIDArr.indexOf(cancelAuthID);\r\n if (index > -1) {\r\n selectAuthIDArr.splice(index, 1);\r\n EChatSearchText.setAttribute(\"selected\", selectAuthIDArr.join(\",\"));\r\n }\r\n\r\n if (selectAuthIDArr.length === 0 && !EChatSearchText.value && !EChatSearchText.getAttribute(\"tab\")) {\r\n if (itemid === \"EChatSuperSearchUserList\") {\r\n EC_Fmt.TriggerEvent(document.getElementById(\"EChatRecentSwitchBtn\"), \"click\");\r\n }\r\n }\r\n }\r\n if (!HiddenCreateGroupBtn) {\r\n EChat.MainPageController.ShowCreateGroupButton(itemid);\r\n }\r\n },\r\n\r\n async UserSearch(option) {\r\n let NotInArr = option.NotInArr;\r\n const {\r\n All, UserTypeID, LocationID, RoleID, Search, Container, ClickCallBack, Mark, SearchDom, ShowUserType, ShowFilters, HiddenCreateGroupBtn, MessageGroupKey\r\n } = option;\r\n\r\n const hasFilter = All || UserTypeID !== \"Null\" || LocationID !== \"Null\" || RoleID !== \"Null\" || Search !== \"\";\r\n const userIdArr = [];\r\n let DefaultUserStr = \"\";\r\n Container.querySelectorAll(\".eChatUserItem\").forEach((dom) => {\r\n const select = dom.getAttribute(\"select\");\r\n if (select === \"false\") {\r\n dom.remove();\r\n } else {\r\n if (hasFilter) {\r\n dom.style.display = \"none\";\r\n } else {\r\n dom.style.display = \"inline-block\";\r\n }\r\n userIdArr.push(parseInt(dom.getAttribute(\"userid\")));\r\n }\r\n });\r\n\r\n if (!hasFilter) {\r\n Container.querySelectorAll(\"#EChatUserAdvancedSearchTool\").forEach((dom) => {\r\n dom.remove();\r\n });\r\n\r\n if (userIdArr.length > 0) {\r\n let html = \"\";\r\n html += \"
    \";\r\n html += \" Clear All\";\r\n html += \"
    \";\r\n Container.prepend(EC_Fmt.HtmlStrToElement(html));\r\n Container.querySelector(\"#EChatUserClear\").addEventListener(\"click\", () => {\r\n Container.querySelectorAll(\".eChatUserItem\").forEach((dom) => {\r\n dom.remove();\r\n });\r\n Container.querySelector(\"#EChatUserAdvancedSearchTool\").remove();\r\n });\r\n }\r\n\r\n Container.querySelectorAll(\".eChat-UserType\").forEach((dom) => {\r\n dom.remove();\r\n });\r\n\r\n DefaultUserStr = SearchDom.getAttribute(\"default-user\");\r\n if (userIdArr.length === 0 && !DefaultUserStr) {\r\n return;\r\n }\r\n }\r\n\r\n if (NotInArr) {\r\n NotInArr = NotInArr.join(\",\");\r\n } else {\r\n NotInArr = \"\";\r\n }\r\n\r\n EChat.Util.ShowLoading(Mark, Search ? \"Searching\" : \"\");\r\n let userInfoList = [];\r\n try {\r\n userInfoList = await EChat.DataProvider.api(\"EChat_SearchUser\", {\r\n All, UserTypeID, LocationID, RoleID, Search, NotInArr, AuthenticationIDArr: EC_Fmt.Null2EmptyStr(DefaultUserStr), MessageGroupKey\r\n });\r\n\r\n Container.querySelectorAll(\"#EChatUserAdvancedSearchTool\").forEach((dom) => {\r\n dom.remove();\r\n });\r\n\r\n Container.querySelectorAll(\".eChat-UserType\").forEach((dom) => {\r\n dom.remove();\r\n });\r\n\r\n if (DefaultUserStr) {\r\n const DefaultUserArr = DefaultUserStr.split(\",\");\r\n const sortUserInfoList = [];\r\n for (let i = 0; i < DefaultUserArr.length; i++) {\r\n for (let j = 0; j < userInfoList.length; j++) {\r\n if (userInfoList[j].AuthenticationID.toString() === DefaultUserArr[i]) {\r\n sortUserInfoList.push(userInfoList[j]);\r\n }\r\n }\r\n }\r\n userInfoList = sortUserInfoList;\r\n }\r\n\r\n for (let i = 0; i < userInfoList.length; i++) {\r\n let UserItemDisplay;\r\n\r\n if (userIdArr.indexOf(parseInt(userInfoList[i].UserID)) > -1) {\r\n UserItemDisplay = Container.querySelector(`.eChatUserItem[userid='${userInfoList[i].UserID}']`);\r\n UserItemDisplay.style.display = \"inline-block\";\r\n } else {\r\n if (DefaultUserStr) {\r\n userInfoList[i].UserType = \"Recent\";\r\n }\r\n\r\n UserItemDisplay = EChat.CustomComponent.UserItemDisplay(userInfoList[i], true, ShowUserType);\r\n UserItemDisplay.addEventListener(\"click\", (e) => {\r\n EChat.CustomComponent.UserSelectEvnet(e, UserItemDisplay, \"EChatUserListItems\", ClickCallBack, HiddenCreateGroupBtn);\r\n });\r\n Container.append(UserItemDisplay);\r\n }\r\n }\r\n } catch (e) {\r\n EChat.Util.errorAlert(e);\r\n }\r\n ECP.Dialog.HideLoading();\r\n\r\n let html = `
    `;\r\n // Task 1119613:eChat: Update all the buttons in eChat to ecp-btn\r\n html += ` ${EC_Fmt.Trn(\"Select All\")}`\r\n + ` | `\r\n + `${EC_Fmt.Trn(\"Clear\")} `;\r\n if (ShowFilters) {\r\n html += ` ${EC_Fmt.Trn(\"Filters\")}`;\r\n }\r\n html += `
    `;\r\n\r\n Container.prepend(EC_Fmt.HtmlStrToElement(html));\r\n\r\n const menuUserType = document.querySelector(\"#EChatSelectUserType input[type='hidden']\");\r\n const menuLocation = document.querySelector(\"#EChatSelectLocation input[type='hidden']\");\r\n const menuRole = document.querySelector(\"#EChatSelectRole input[type='hidden']\");\r\n const filterButton = Container.querySelector(\".eChat-advanced-search-btn\");\r\n if (filterButton && menuUserType && menuLocation && menuRole) {\r\n filterButton.style.color = menuUserType.value || menuLocation.value || menuRole.value ? \"#0e5aa7\" : \"var(--primary-120)\";\r\n }\r\n\r\n Container.querySelector(\"#EChatUserSelectAll\").addEventListener(\"click\", async () => {\r\n if (hasFilter) {\r\n NotInArr = NotInArr.split(\",\");\r\n option.All = true;\r\n option.NotInArr = NotInArr;\r\n await EChat.CustomComponent.UserSearch(option);\r\n // Task 1027496: User using echat tried to send a message to a group of people but there were some problems with it.\r\n if (!HiddenCreateGroupBtn) {\r\n EChat.MainPageController.ShowCreateGroupButton(\"EChatUserListItems\");\r\n }\r\n } else if (userInfoList.length > 0) {\r\n Container.querySelectorAll(\".eChatUserItem\").forEach((dom) => {\r\n dom.querySelector(\"input\").checked = true;\r\n dom.querySelector(\".eChatCheckBoxSpan\").style.backgroundPosition = \"-30px -25px\";\r\n dom.setAttribute(\"select\", \"true\");\r\n });\r\n if (!HiddenCreateGroupBtn) {\r\n EChat.MainPageController.ShowCreateGroupButton(\"EChatUserListItems\");\r\n }\r\n }\r\n });\r\n\r\n Container.querySelector(\"#EChatUserClear\").addEventListener(\"click\", () => {\r\n Container.querySelectorAll(\".eChatUserItem\").forEach((dom) => {\r\n dom.querySelector(\"input\").checked = false;\r\n dom.querySelector(\".eChatCheckBoxSpan\").style.backgroundPosition = \"0px -25px\";\r\n dom.setAttribute(\"select\", \"false\");\r\n });\r\n EChat.MainPageController.ShowCreateGroupButton();\r\n });\r\n\r\n if (ShowFilters) {\r\n // Task 937742: eChat: Updates to eChat Search.\r\n Container.querySelector(\".eChat-advanced-search-btn\").addEventListener(\"click\", () => {\r\n EWS.Command.ShowMenu(\"eChat-advanced-search\", Container.querySelector(\".eChat-advanced-search-btn\"), {\r\n Container,\r\n ClickCallBack,\r\n Mark,\r\n NotInArr,\r\n ShowUserType,\r\n ShowFilters,\r\n SearchDom: \"eChat-advanced-search-btn\"\r\n });\r\n });\r\n }\r\n\r\n if (All) {\r\n Container.querySelectorAll(\".eChatUserItem\").forEach((dom) => {\r\n dom.querySelector(\"input\").checked = true;\r\n dom.querySelector(\".eChatCheckBoxSpan\").style.backgroundPosition = \"-30px -25px\";\r\n dom.setAttribute(\"select\", \"true\");\r\n });\r\n }\r\n },\r\n\r\n KeyCodeEvent({\r\n KeyCode, ListDom, ItemClassArr, SelectClass, EnterOpenItem, EnterEvent, InputEvent\r\n }) {\r\n if (KeyCode > 40 || KeyCode < 9) {\r\n if (InputEvent) {\r\n InputEvent();\r\n }\r\n return;\r\n }\r\n\r\n const itemList = [];\r\n ListDom.querySelectorAll(`.${ItemClassArr.join(\",.\")}`).forEach((dom) => {\r\n if (dom.clientWidth) {\r\n itemList.push(dom);\r\n } else {\r\n // Task 955476: eChat: Wrong eChat group opens when pressing Enter\r\n dom.classList.remove(SelectClass);\r\n }\r\n });\r\n\r\n if (itemList.length === 0) {\r\n return;\r\n }\r\n\r\n let selectDom = ListDom.querySelector(`.${SelectClass}`);\r\n if (!selectDom) {\r\n selectDom = itemList[0];\r\n if (selectDom) { // Esc\r\n selectDom.classList.add(SelectClass);\r\n ListDom.scrollTop = 0;\r\n }\r\n return;\r\n }\r\n\r\n // Enter\r\n if (KeyCode === 13) {\r\n if (EnterEvent) {\r\n EnterEvent(selectDom);\r\n return;\r\n }\r\n\r\n if (EnterOpenItem) {\r\n selectDom.classList.remove(SelectClass);\r\n EC_Fmt.TriggerEvent(selectDom, \"click\");\r\n return;\r\n }\r\n }\r\n\r\n // Esc\r\n if (KeyCode === 27) {\r\n selectDom.classList.remove(SelectClass);\r\n return;\r\n }\r\n\r\n let moveIndex = -1;\r\n for (let i = 0; i < itemList.length; i++) {\r\n if (itemList[i] === selectDom) {\r\n moveIndex = i;\r\n break;\r\n }\r\n }\r\n\r\n if (KeyCode === 38) { // up\r\n moveIndex--;\r\n } else if (KeyCode === 40) { // down\r\n moveIndex++;\r\n }\r\n\r\n moveIndex = moveIndex === -1 ? itemList.length - 1 : moveIndex;\r\n moveIndex = moveIndex === itemList.length ? 0 : moveIndex;\r\n\r\n const moveDom = itemList[moveIndex];\r\n if (moveDom) {\r\n selectDom.classList.remove(SelectClass);\r\n moveDom.classList.add(SelectClass);\r\n } else {\r\n return;\r\n }\r\n\r\n // scroll\r\n if (moveIndex === 0) {\r\n ListDom.scrollTop = 0;\r\n } else {\r\n const listRect = ListDom.getBoundingClientRect();\r\n const moveRect = moveDom.getBoundingClientRect();\r\n let moveHeight = (moveRect.y + moveRect.height) - (listRect.y + listRect.height);\r\n if (moveHeight > 0) {\r\n ListDom.scrollTop += moveHeight;\r\n } else {\r\n moveHeight = listRect.top - moveRect.top;\r\n if (moveHeight > 0) {\r\n ListDom.scrollTop -= moveHeight;\r\n }\r\n }\r\n }\r\n },\r\n\r\n SwichButton(buttonProperty, parentElement) {\r\n const ButtonClass = function () {\r\n if (parentElement) {\r\n const _this = this;\r\n const property = {\r\n id: buttonProperty.id || null,\r\n checked: buttonProperty.checked || null,\r\n changeEvent: buttonProperty.changeEvent || null\r\n };\r\n\r\n const inputID = `${EChat.Util.getTimeStamp()}_${Math.floor(Math.random() * 0x100000)}`;\r\n const element = EC_Fmt.HtmlStrToElement(`
    `\r\n + `
    `\r\n + ` `\r\n + ` `\r\n + `
    `\r\n + `
    `);\r\n\r\n const input = element.querySelector(\"input\");\r\n input.checked = property.checked;\r\n input.addEventListener(\"change\", () => {\r\n property.changeEvent(input.checked ? 1 : 0);\r\n });\r\n\r\n this.Open = function () {\r\n input.checked = true;\r\n };\r\n\r\n this.Close = function () {\r\n input.checked = false;\r\n };\r\n\r\n this.Checked = function () {\r\n return input.checked;\r\n };\r\n\r\n parentElement.append(element);\r\n return _this;\r\n }\r\n return null;\r\n };\r\n\r\n return new ButtonClass();\r\n },\r\n\r\n TextCheckBox(checkBoxProperty, parentElement) {\r\n const TextCheckBoxClass = function () {\r\n if (parentElement) {\r\n const _this = this;\r\n\r\n const property = {\r\n id: checkBoxProperty.id || null,\r\n checked: checkBoxProperty.checked || null,\r\n changeEvent: checkBoxProperty.changeEvent || null,\r\n text: checkBoxProperty.text || \"checkbox\",\r\n checkCondition: checkBoxProperty.checkCondition || null\r\n };\r\n\r\n const selfChangeEvent = function (value, e) {\r\n if (parseInt(value) === 1) {\r\n checkBoxSpan.style.backgroundPosition = \"-30px -25px\";\r\n } else {\r\n checkBoxSpan.style.backgroundPosition = \"-0px -25px\";\r\n }\r\n if (e && typeof property.changeEvent === \"function\") {\r\n property.changeEvent(value);\r\n }\r\n };\r\n\r\n const element = EC_Fmt.HtmlStrToElement(\"
    \");\r\n const checkBoxLable = EC_Fmt.HtmlStrToElement(\"\");\r\n const checkBoxSpan = EC_Fmt.HtmlStrToElement(\"\");\r\n const checkBoxInput = EC_Fmt.HtmlStrToElement(\"\");\r\n checkBoxLable.append(checkBoxInput);\r\n checkBoxLable.append(checkBoxSpan);\r\n const textElement = EC_Fmt.HtmlStrToElement(`${property.text}`);\r\n element.append(checkBoxLable);\r\n element.append(textElement);\r\n\r\n checkBoxInput.addEventListener(\"click\", (e) => {\r\n if (typeof property.checkCondition === \"function\" && property.checkCondition() !== true) {\r\n _this.Close();\r\n } else {\r\n selfChangeEvent(checkBoxInput.checked === true ? 1 : 0, e);\r\n }\r\n });\r\n\r\n this.Open = function (triggerEvent) {\r\n checkBoxInput.checked = true;\r\n selfChangeEvent(1, triggerEvent);\r\n };\r\n\r\n this.Close = function (triggerEvent) {\r\n checkBoxInput.checked = false;\r\n selfChangeEvent(0, triggerEvent);\r\n };\r\n\r\n if (property.checked) {\r\n _this.Open();\r\n } else {\r\n _this.Close();\r\n }\r\n parentElement.append(element);\r\n return _this;\r\n }\r\n return null;\r\n };\r\n\r\n return new TextCheckBoxClass();\r\n },\r\n\r\n GetAlertDetailUrl(alertType, MessageGroupID) {\r\n let url;\r\n const type = EChat.EmployeesAlertsType;\r\n switch (alertType) {\r\n case type.Day_Close:\r\n url = `Home?DashboardID=${ECP.CommonDashboards.TableView}&TableName=Locations&`;\r\n break;\r\n case type.End_of_Day_Warnings:\r\n url = `Home?DashboardID=172425&Action=Inbox&MessageGroupKey=${MessageGroupID}`;\r\n break;\r\n case type.ASN_Receipt:\r\n url = `Home?DashboardID=${ECP.CommonDashboards.TableView}&TableName=ExchangeTasks&Search=FunctionalType~856|Direction~2`;\r\n break;\r\n case type.New_Customer_Account:\r\n url = `Home?DashboardID=${ECP.CommonDashboards.TableView}&TableName=Users&Search=UserTypeID~3^4&SelectSort=TimeCreated.Desc&SelectDisplayInParent=UserName,Name,UserTypeID,RoleID,LocationID,TimeCreated`;\r\n break;\r\n case type.PO_Receipt:\r\n url = `Home?DashboardID=${ECP.CommonDashboards.TableView}&TableName=ExchangeTasks&Search=Direction~1|FunctionalType~850`;\r\n break;\r\n case type.REMIT_Receipt:\r\n url = `Home?DashboardID=${ECP.CommonDashboards.TableView}&TableName=ExchangeTasks&Search=FunctionalType~820|Direction~1`;\r\n break;\r\n case type.Import_Conflict:\r\n // Task 683249: Convert Import Conflicts to dashboard.\r\n url = \"Home?DashboardID=174029\";\r\n break;\r\n // Task 608641: Alerts: Details button not redirecting to the Messages Inbox\r\n case type.Picker_Cut:\r\n url = `Home?DashboardID=172425&Action=Inbox&MessageGroupKey=${MessageGroupID}`;\r\n break;\r\n case type.Supplier_Comm_Warnings:\r\n url = `Home?DashboardID=${ECP.CommonDashboards.TableView}&TableName=ExchangeTasks&Search=Direction~2|ReportType~BudNet`;\r\n break;\r\n case type.EDI_Download_Reminder:\r\n url = `Home?DashboardID=${ECP.CommonDashboards.TableView}&TableName=ExchangeTasks&Search=Status~2`;\r\n break;\r\n case type.EDI_Inbound_Errors:\r\n url = `Home?DashboardID=172425&Action=Inbox&MessageGroupKey=${MessageGroupID}`;\r\n break;\r\n case type.EDI_Outbound_Errors:\r\n url = `Home?DashboardID=172425&Action=Inbox&MessageGroupKey=${MessageGroupID}`;\r\n break;\r\n case type.Account_Mismapping:\r\n url = `Home?DashboardID=${ECP.CommonDashboards.TableView}&TableName=IncomeAccounts&`;\r\n break;\r\n case type.Can_Count_Import:\r\n url = `Home?DashboardID=172425&Action=Inbox&MessageGroupKey=${MessageGroupID}`;\r\n break;\r\n default:\r\n // Task 640677: When I click Details on the Education Stipend Alert in the eChat dialog it takes me to messages table and shows ALL Messages\r\n url = `Home?DashboardID=172425&Action=Inbox&MessageGroupKey=${MessageGroupID}`;\r\n break;\r\n }\r\n return url;\r\n }\r\n};\r\n\r\nEChat.IndexedDB = (function () {\r\n const IndexedDBClass = function () {\r\n EChat.EventDispatcher.call(this);\r\n const _this = this;\r\n const DB_NAME = \"EChat2005\";\r\n const DB_VERSION = 2;\r\n let OLD_DB_VERSION = -1;\r\n const READ_WRITE = \"readwrite\";\r\n const READ_ONLY = \"readonly\";\r\n // Task 654140: JavaScript Error: UnknownFile (0) - Error in promise - NotFoundError: Failed to execute 'transaction' on 'IDBDatabase': One of the specified object stores was not found.\r\n let SkipDBCheck = false;\r\n let openDBErrorCount = 0;\r\n let throwErrorCount = 0;// Task 452666: System Errors: LB1 JavaScript Error Captured: CSBG db\r\n this.check = function () {\r\n return window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB || window.msIndexedDB;\r\n };\r\n\r\n this.getDB = function () {\r\n return new Promise(((resolve, reject) => {\r\n const request = window.indexedDB.open(DB_NAME, DB_VERSION);\r\n request.onsuccess = function (evt) {\r\n resolve(evt.target.result);\r\n };\r\n request.onerror = function () {\r\n reject();\r\n };\r\n request.onupgradeneeded = function (evt) {\r\n const db = request.result;\r\n OLD_DB_VERSION = evt.oldVersion;\r\n InitTable(db, evt.oldVersion, evt.newVersion);\r\n EChat.Util.initMain();\r\n };\r\n }));\r\n };\r\n\r\n this.InitDB = function () {\r\n return new Promise(((resolve, reject) => {\r\n let db = null;\r\n\r\n setTimeout(() => {\r\n // Task 749799: JavaScript Error: includes/DefaultAll.min.js (1) - TypeError: window.indexedDB.databases is not a function\r\n if (!db && typeof (window.indexedDB.databases) === \"function\") {\r\n window.indexedDB.databases().then((dbList) => {\r\n for (let i = 0, len = dbList.length; i < len; i++) {\r\n if (dbList[i].name === DB_NAME && dbList[i].version < DB_VERSION) {\r\n ECP.Dialog.Alert(\"Please restart your Browser to resume using eChat.\");\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n }, 2000);\r\n\r\n const request = window.indexedDB.open(DB_NAME, DB_VERSION);\r\n request.onsuccess = function (evt) {\r\n db = evt.target.result;\r\n if (checkDB(db)) {\r\n DataUpgrade().then(() => {\r\n resolve();\r\n });\r\n\r\n DataDelete();\r\n // Task 439265\r\n db.onclose = function () {\r\n if (openDBErrorCount < 10) {\r\n openDBErrorCount++;\r\n _this.InitDB();\r\n }\r\n };\r\n db.onerror = function () {\r\n IndexedDBThrowError(\"db error\");\r\n };\r\n }\r\n };\r\n\r\n request.onerror = function (evt) {\r\n IndexedDBThrowError(`initDb error:${evt.target.errorCode}${evt.target.error}`);\r\n reject();\r\n };\r\n\r\n request.onupgradeneeded = async function (evt) {\r\n db = request.result;\r\n OLD_DB_VERSION = evt.oldVersion;\r\n InitTable(db, evt.oldVersion, evt.newVersion);\r\n await EChat.IndexedDB.UpdateSetting(\"EChatV2010\", EChat.Util.getTimeStamp(), false);\r\n EChat.Util.initMain();\r\n };\r\n }));\r\n };\r\n\r\n const checkDB = function (db) {\r\n if (!SkipDBCheck && db.objectStoreNames.length === 0) {\r\n // eslint-disable-next-line no-console\r\n console.warn(\"db Init error. Rebuild.\");\r\n const request = window.indexedDB.deleteDatabase(DB_NAME);\r\n request.onsuccess = function () {\r\n SkipDBCheck = true;\r\n _this.InitDB();\r\n };\r\n return false;\r\n }\r\n return true;\r\n };\r\n\r\n const InitTable = function (db) {\r\n if (!db.objectStoreNames.contains(EChat.DBTableName.GROUPINFO)) {\r\n db.createObjectStore(EChat.DBTableName.GROUPINFO, { keyPath: \"MessageGroupID\" }).createIndex(\"GroupType\", \"GroupType\", { unique: false });\r\n }\r\n if (!db.objectStoreNames.contains(EChat.DBTableName.SETTINGS)) {\r\n db.createObjectStore(EChat.DBTableName.SETTINGS, { keyPath: \"Key\" });\r\n }\r\n if (!db.objectStoreNames.contains(EChat.DBTableName.TABLEALERTS)) {\r\n db.createObjectStore(EChat.DBTableName.TABLEALERTS, { keyPath: \"AlertID\" });\r\n }\r\n if (!db.objectStoreNames.contains(EChat.DBTableName.LOG)) {\r\n db.createObjectStore(EChat.DBTableName.LOG, { keyPath: \"TimeStamp\" }).createIndex(\"ErrorType\", \"ErrorType\", { unique: false });\r\n }\r\n if (!db.objectStoreNames.contains(EChat.DBTableName.SENDMESSAGES)) {\r\n db.createObjectStore(EChat.DBTableName.SENDMESSAGES, { keyPath: \"TimeStamp\" });\r\n }\r\n if (!db.objectStoreNames.contains(EChat.DBTableName.TASKS)) {\r\n db.createObjectStore(EChat.DBTableName.TASKS, { keyPath: \"TaskID\" });\r\n }\r\n };\r\n\r\n const DataUpgrade = function () {\r\n return new Promise(((resolve) => {\r\n if (OLD_DB_VERSION >= 0) {\r\n const oldVersion = OLD_DB_VERSION;\r\n OLD_DB_VERSION = -1;\r\n for (let i = oldVersion; i < DB_VERSION; i++) {\r\n switch (i) {\r\n case 0:\r\n window.indexedDB.deleteDatabase(\"EChat\");\r\n window.localStorage.removeItem(\"ConnectGuid\");\r\n window.localStorage.removeItem(\"EChatTimer\");\r\n window.localStorage.removeItem(\"IsConnect\");\r\n window.localStorage.removeItem(\"UnReadCount\");\r\n window.localStorage.removeItem(\"EChatCommand\");\r\n\r\n break;\r\n default:\r\n break;\r\n }\r\n // eslint-disable-next-line no-console\r\n console.log(`IndexedDB Upgrade ${oldVersion}`);\r\n }\r\n }\r\n resolve();\r\n }));\r\n };\r\n const DataDelete = function () {\r\n DeleteOldData(EChat.DBTableName.SENDMESSAGES, \"TimeStamp\", 50);\r\n DeleteOldData(EChat.DBTableName.LOG, \"TimeStamp\", 50);\r\n };\r\n\r\n const DeleteOldData = function (TableName, KeyName, ReservedNumber) {\r\n if (parseInt(ReservedNumber) === 0) {\r\n _this.DeleteTableAllData(TableName);\r\n } else if (ReservedNumber > 0) {\r\n EChat.IndexedDB.GetTableAllData(TableName).then((DateList) => {\r\n for (let i = 0; i < DateList.length - ReservedNumber; i++) {\r\n _this.DeleteTableDataByKey(TableName, DateList[i][KeyName]);\r\n }\r\n });\r\n }\r\n };\r\n\r\n this.UpdateGroupMessages = async function (messages, over, limit) {\r\n const newGroupIDList = [];\r\n if (messages) {\r\n Object.keys(messages).forEach((groupID) => {\r\n newGroupIDList.push(groupID);\r\n });\r\n const oldGroupList = await EChat.IndexedDB.GetTableDataByKeyList(EChat.DBTableName.GROUPINFO, newGroupIDList);\r\n\r\n for (let i = 0, len = newGroupIDList.length; i < len; i++) {\r\n const groupID = newGroupIDList[i];\r\n const newMessages = messages[groupID];\r\n let oldGroup = oldGroupList[groupID];\r\n if (!oldGroup) {\r\n oldGroup = await EChat.DataProvider.GetGroupInfoByGroupID(groupID, true);\r\n }\r\n if (oldGroup) {\r\n if (over) {\r\n oldGroup.Messages = mergeGroupMessage(null, newMessages, limit);\r\n } else {\r\n oldGroup.Messages = mergeGroupMessage(oldGroup.Messages, newMessages, limit);\r\n }\r\n await EChat.IndexedDB.InsertOrUpdate(EChat.DBTableName.GROUPINFO, oldGroup);\r\n\r\n if (oldGroup.GroupType === SocketUtil.GroupType.Task) {\r\n const mergeTask = await EChat.IndexedDB.GetTableDataByKey(EChat.DBTableName.TASKS, oldGroup.TaskID);\r\n if (oldGroup.Messages && oldGroup.Messages.length > 0) {\r\n const tmpLastMessage = oldGroup.Messages[0];\r\n if (!mergeTask.LastMessage || mergeTask.LastMessage.TimeCreated <= tmpLastMessage.TimeCreated) {\r\n mergeTask.LastMessage = tmpLastMessage;\r\n await EChat.IndexedDB.InsertOrUpdate(EChat.DBTableName.TASKS, mergeTask);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return newGroupIDList;\r\n };\r\n\r\n this.UpdateGroupUsers = async function (groupUsers, Notice) {\r\n const newGroupIDList = [];\r\n if (groupUsers) {\r\n Object.keys(groupUsers).forEach((groupId) => {\r\n newGroupIDList.push(groupId);\r\n });\r\n const oldGroupList = await EChat.IndexedDB.GetTableDataByKeyList(EChat.DBTableName.GROUPINFO, newGroupIDList);\r\n for (let i = 0, len = newGroupIDList.length; i < len; i++) {\r\n const groupId = newGroupIDList[i];\r\n const newUsers = groupUsers[groupId];\r\n const oldGroup = oldGroupList[groupId];\r\n if (oldGroup) {\r\n oldGroup.Users = newUsers;\r\n await EChat.IndexedDB.InsertOrUpdate(EChat.DBTableName.GROUPINFO, oldGroup);\r\n }\r\n }\r\n\r\n if (Notice) {\r\n _this.NoticeUpdate(EChat.DBTableName.GROUPINFO, newGroupIDList);\r\n }\r\n }\r\n return newGroupIDList;\r\n };\r\n\r\n this.UpdateGroupObject = async function ({\r\n GroupInfos, GroupUsers, GroupMessages, GroupReads\r\n }) {\r\n let changeGroupIDArr = [];\r\n\r\n if (GroupInfos) {\r\n changeGroupIDArr = changeGroupIDArr.concat(await _this.UpdateGroupInfo(GroupInfos));\r\n }\r\n\r\n if (GroupUsers) {\r\n changeGroupIDArr = changeGroupIDArr.concat(await _this.UpdateGroupUsers(GroupUsers));\r\n }\r\n\r\n if (GroupMessages) {\r\n changeGroupIDArr = changeGroupIDArr.concat(await _this.UpdateGroupMessages(GroupMessages, false, true));\r\n }\r\n\r\n if (GroupReads) {\r\n changeGroupIDArr = changeGroupIDArr.concat(await _this.UpdateGroupReads(GroupReads));\r\n }\r\n\r\n changeGroupIDArr = Array.from(new Set(changeGroupIDArr));\r\n\r\n return changeGroupIDArr;\r\n };\r\n\r\n this.UpdateGroupInfo = async function (groupList, Notice) {\r\n const newGroupIDList = [];\r\n if (groupList?.length > 0) {\r\n for (let i = 0, len = groupList.length; i < len; i++) {\r\n newGroupIDList.push(groupList[i].MessageGroupID);\r\n }\r\n const oldGroupList = await EChat.IndexedDB.GetTableDataByKeyList(EChat.DBTableName.GROUPINFO, newGroupIDList);\r\n for (let i = 0, len = newGroupIDList.length; i < len; i++) {\r\n const newGroup = groupList[i];\r\n const oldGroup = oldGroupList[newGroup.MessageGroupID];\r\n const margeGroup = margeGroupInfo(oldGroup, newGroup);\r\n\r\n await EChat.IndexedDB.InsertOrUpdate(EChat.DBTableName.GROUPINFO, margeGroup);\r\n }\r\n if (Notice) {\r\n _this.NoticeUpdate(EChat.DBTableName.GROUPINFO, newGroupIDList);\r\n }\r\n }\r\n return newGroupIDList;\r\n };\r\n\r\n // New\r\n this.UpdateTaskGroup = async function (taskGroups) {\r\n const TaskIDList = [];\r\n for (let i = 0, len = taskGroups.length; i < len; i++) {\r\n TaskIDList.push(taskGroups[i].TaskID);\r\n }\r\n\r\n const oldTaskList = await EChat.IndexedDB.GetTableDataByKeyList(EChat.DBTableName.TASKS, TaskIDList);\r\n for (let i = 0; i < taskGroups.length; i++) {\r\n const taskGroup = taskGroups[i];\r\n const taskID = taskGroup.TaskID;\r\n if (oldTaskList[taskID]) {\r\n const oldGroupList = oldTaskList[taskID].MessageGroups;\r\n for (let j = 0; j < oldGroupList.length; j++) {\r\n const oldGroup = oldGroupList[j];\r\n if (taskGroup.MessageGroupID === oldGroup.MessageGroupID) {\r\n oldGroupList[j] = taskGroup;\r\n }\r\n }\r\n } else {\r\n oldTaskList[taskID] = { TaskID: taskID, MessageGroups: [taskGroup] };\r\n }\r\n }\r\n const oldTaskIdList = Object.keys(oldTaskList);\r\n for (let i = 0, len = oldTaskIdList.length; i < len; i++) {\r\n await EChat.IndexedDB.InsertOrUpdate(EChat.DBTableName.TASKS, oldTaskList[oldTaskIdList[i]]);\r\n }\r\n };\r\n\r\n this.UpdateGroupReads = async function (groupReads, Notice) {\r\n const newGroupIDList = [];\r\n if (groupReads) {\r\n for (let i = 0, len = groupReads.length; i < len; i++) {\r\n newGroupIDList.push(groupReads[i].MessageGroupID);\r\n }\r\n const oldGroupList = await EChat.IndexedDB.GetTableDataByKeyList(EChat.DBTableName.GROUPINFO, newGroupIDList);\r\n for (let i = 0, len = groupReads.length; i < len; i++) {\r\n const groupRead = groupReads[i];\r\n const oldGroup = oldGroupList[groupRead.MessageGroupID];\r\n if (oldGroup) {\r\n oldGroup.LastReadTime = groupRead.LastReadTime;\r\n oldGroup.ReadCount = groupRead.ReadCount;\r\n oldGroup.MessageCount = groupRead.MessageCount;\r\n oldGroup.UnReadCount = groupRead.UnReadCount;\r\n oldGroup.MessageUpdated = groupRead.MessageUpdated;\r\n oldGroup.Prompt = groupRead.Prompt;\r\n oldGroup.PostPermission = groupRead.PostPermission;\r\n\r\n await EChat.IndexedDB.InsertOrUpdate(EChat.DBTableName.GROUPINFO, oldGroup);\r\n }\r\n }\r\n\r\n if (Notice) {\r\n _this.NoticeUpdate(EChat.DBTableName.GROUPINFO, newGroupIDList);\r\n }\r\n }\r\n return newGroupIDList;\r\n };\r\n\r\n this.AsyncLock = {};\r\n this.SyncExecue = function (lockName, fun, arg1, arg2, arg3) {\r\n return new Promise((resolve) => {\r\n _this.AsyncLock[lockName] = SyncQueue(_this.AsyncLock[lockName], fun, arg1, arg2, arg3).finally(resolve);\r\n });\r\n };\r\n\r\n const SyncQueue = function (lockPromiss, fun, arg1, arg2, arg3) {\r\n return new Promise((resolve) => {\r\n if (lockPromiss) {\r\n lockPromiss.finally(() => {\r\n fun(arg1, arg2, arg3).finally(resolve);\r\n });\r\n } else {\r\n fun(arg1, arg2, arg3).finally(resolve);\r\n }\r\n });\r\n };\r\n\r\n this.UpdateGroupUnread = async function (groupIdArr, unreadCount, absoluteValue) {\r\n await _this.SyncExecue(\"UpdateGroupUnread\", UpdateGroupUnreadSubThread, groupIdArr, unreadCount, absoluteValue);\r\n };\r\n\r\n const UpdateGroupUnreadSubThread = async function (groupIdArr, unreadCount, absoluteValue) {\r\n const UnreadGroup = await EChat.IndexedDB.GetSetting(\"UnreadGroup\");\r\n if (!UnreadGroup) {\r\n return;\r\n }\r\n let hasChange = false;\r\n let Notice = false;\r\n\r\n for (let i = 0; i < groupIdArr.length; i++) {\r\n const MessageGroupID = groupIdArr[i];\r\n if (parseInt(unreadCount) === 0 && !EC_Fmt.isNull(UnreadGroup[MessageGroupID])) {\r\n delete UnreadGroup[MessageGroupID];\r\n hasChange = true;\r\n Notice = true;\r\n } else if (unreadCount > 0) {\r\n hasChange = true;\r\n if (EC_Fmt.isNull(UnreadGroup[MessageGroupID])) {\r\n Notice = true;\r\n UnreadGroup[MessageGroupID] = unreadCount;\r\n } else if (absoluteValue) {\r\n UnreadGroup[MessageGroupID] = unreadCount;\r\n } else {\r\n UnreadGroup[MessageGroupID] += unreadCount;\r\n }\r\n }\r\n }\r\n\r\n if (hasChange) {\r\n await _this.UpdateSetting(\"UnreadGroup\", UnreadGroup, Notice);\r\n await EChat.MainPageController.unreadSumCountChange(UnreadGroup);\r\n }\r\n };\r\n\r\n const DeleteGroup = async function (deleteGroups) {\r\n for (let i = 0, len = deleteGroups.length; i < len; i++) {\r\n await EChat.DataProvider.deleteGroupData(deleteGroups[i], true, false);\r\n }\r\n if (deleteGroups.length > 0) {\r\n await EChat.MainPageController.updateUnReadNumIcon(\"group delete\");\r\n }\r\n };\r\n\r\n this.InitDBData = async function (retry, force) {\r\n if (!force) {\r\n const ConnectionTime = await EChat.IndexedDB.GetSetting(\"ConnectionTime\");\r\n let LastSyncLocalDate = await EChat.IndexedDB.GetSetting(\"LastSyncLocalDate\");\r\n if (EC_Fmt.isNull(LastSyncLocalDate)) {\r\n LastSyncLocalDate = -1;\r\n }\r\n\r\n if (ConnectionTime <= LastSyncLocalDate) {\r\n return;\r\n }\r\n }\r\n\r\n try {\r\n EChat.InitDataing = true;\r\n EChat.Util.Loading(true);\r\n\r\n const data = await EChat.DataProvider.SyncData();\r\n const changeGroupIDArr = await _this.UpdateGroupObject({\r\n GroupInfos: data.MessageGroups,\r\n GroupUsers: data.GroupUsers,\r\n GroupMessages: data.Messages,\r\n GroupReads: data.GroupReads\r\n });\r\n\r\n await DeleteGroup(data.DeleteGroups);\r\n\r\n await _this.UpdateSetting(\"LastSyncDate\", data.LastSyncDate);\r\n if (data.SavedMessages) {\r\n await _this.UpdateSetting(\"SavedMessages\", data.SavedMessages, true);\r\n EChat.DataProvider.SavedMessage = data.SavedMessages;\r\n await EChat.MainPageController.refreshSavedMessage();\r\n }\r\n\r\n if (data.GroupHistorySyncDate) {\r\n await _this.UpdateSetting(\"GroupHistorySyncDate\", data.GroupHistorySyncDate);\r\n }\r\n _this.NoticeUpdate(EChat.DBTableName.GROUPINFO, changeGroupIDArr);\r\n await _this.UpdateSetting(\"LastSyncLocalDate\", EChat.Util.getTimeStamp());\r\n } catch (e) {\r\n if (!retry) {\r\n retry = 1;\r\n } else {\r\n retry++;\r\n }\r\n\r\n if (retry < 3) {\r\n setTimeout(() => {\r\n // eslint-disable-next-line no-console\r\n console.log(`InitDBData retry ${retry}`);\r\n _this.InitDBData(retry, true);\r\n }, 2000);\r\n return;\r\n }\r\n EChat.MainPageController.RefreshBtnColor(\"red\");\r\n EChat.InitDataing = false;\r\n EChat.Util.Loading(false);\r\n await _this.InitViewData();\r\n return;\r\n }\r\n\r\n await _this.InitViewData();\r\n\r\n EChat.MainPageController.RefreshBtnColor(\"var(--neutral-70)\");\r\n EChat.InitDataing = false;\r\n EChat.Util.Loading(false);\r\n };\r\n\r\n this.InitViewData = async function () {\r\n if (EChat.eChatState) {\r\n // Init CurrentUser Availability\r\n const recentList = await _this.GetTableAllData(EChat.DBTableName.GROUPINFO);\r\n\r\n if (recentList) {\r\n await EChat.MainPageController.dataCompleteEvent({\r\n Recent: recentList\r\n });\r\n }\r\n } else {\r\n EChat.MainPageController.updateUnReadNumIcon(\"init view data\");\r\n }\r\n };\r\n\r\n const margeGroupInfo = function (oldGroup, newGroup) {\r\n let margeGroup = {};\r\n if (oldGroup && newGroup) {\r\n margeGroup.MessageGroupID = oldGroup.MessageGroupID;\r\n if (newGroup.GroupCode) {\r\n margeGroup.GroupCode = newGroup.GroupCode;\r\n } else {\r\n margeGroup.GroupCode = oldGroup.GroupCode;\r\n }\r\n\r\n if (newGroup.GroupType) {\r\n margeGroup.GroupType = newGroup.GroupType;\r\n } else {\r\n margeGroup.GroupType = oldGroup.GroupType;\r\n }\r\n\r\n if (newGroup.UserCount > -1) {\r\n margeGroup.UserCount = newGroup.UserCount;\r\n } else {\r\n margeGroup.UserCount = oldGroup.UserCount;\r\n }\r\n\r\n if (newGroup.GroupName !== null && newGroup.GroupName !== undefined) {\r\n margeGroup.GroupName = newGroup.GroupName;\r\n } else {\r\n margeGroup.GroupName = oldGroup.GroupName;\r\n }\r\n\r\n if (newGroup.Icon !== null && newGroup.Icon !== undefined) {\r\n margeGroup.Icon = newGroup.Icon;\r\n } else {\r\n margeGroup.Icon = oldGroup.Icon;\r\n }\r\n\r\n if (newGroup.LastReadTime !== null && newGroup.LastReadTime !== undefined) {\r\n margeGroup.LastReadTime = newGroup.LastReadTime;\r\n } else {\r\n margeGroup.LastReadTime = oldGroup.LastReadTime;\r\n }\r\n\r\n if (newGroup.UnReadCount !== null && newGroup.UnReadCount !== undefined) {\r\n margeGroup.UnReadCount = newGroup.UnReadCount;\r\n } else {\r\n margeGroup.UnReadCount = oldGroup.UnReadCount;\r\n }\r\n\r\n if (newGroup.MessageUpdated !== null && newGroup.MessageUpdated !== undefined) {\r\n margeGroup.MessageUpdated = newGroup.MessageUpdated;\r\n } else {\r\n margeGroup.MessageUpdated = oldGroup.MessageUpdated;\r\n }\r\n\r\n if (newGroup.TimeUpdated !== null && newGroup.TimeUpdated !== undefined) {\r\n margeGroup.TimeUpdated = newGroup.TimeUpdated;\r\n } else {\r\n margeGroup.TimeUpdated = oldGroup.TimeUpdated;\r\n }\r\n\r\n if (newGroup.TimeCreated !== null && newGroup.TimeCreated !== undefined) {\r\n margeGroup.TimeCreated = newGroup.TimeCreated;\r\n } else {\r\n margeGroup.TimeCreated = oldGroup.TimeCreated;\r\n }\r\n\r\n if (newGroup.CreatedBy !== null && newGroup.CreatedBy !== undefined) {\r\n margeGroup.CreatedBy = newGroup.CreatedBy;\r\n } else {\r\n margeGroup.CreatedBy = oldGroup.CreatedBy;\r\n }\r\n\r\n if (newGroup.UserUpdated !== null && newGroup.UserUpdated !== undefined) {\r\n margeGroup.UserUpdated = newGroup.UserUpdated;\r\n } else {\r\n margeGroup.UserUpdated = oldGroup.UserUpdated;\r\n }\r\n\r\n if (newGroup.EncompassID !== null && newGroup.EncompassID !== undefined) {\r\n margeGroup.EncompassID = newGroup.EncompassID;\r\n } else {\r\n margeGroup.EncompassID = oldGroup.EncompassID;\r\n }\r\n\r\n if (newGroup.UpdatedBy !== null && newGroup.UpdatedBy !== undefined) {\r\n margeGroup.UpdatedBy = newGroup.UpdatedBy;\r\n } else {\r\n margeGroup.UpdatedBy = oldGroup.UpdatedBy;\r\n }\r\n\r\n if (newGroup.TaskID !== null && newGroup.TaskID !== undefined) {\r\n margeGroup.TaskID = newGroup.TaskID;\r\n } else {\r\n margeGroup.TaskID = oldGroup.TaskID;\r\n }\r\n\r\n if (newGroup.DisplayName !== null && newGroup.DisplayName !== undefined) {\r\n margeGroup.DisplayName = newGroup.DisplayName;\r\n } else {\r\n margeGroup.DisplayName = oldGroup.DisplayName;\r\n }\r\n\r\n if (newGroup.Users !== null && newGroup.Users !== undefined && newGroup.Users.length > 0) {\r\n margeGroup.Users = newGroup.Users;\r\n } else if (oldGroup.Users !== null && oldGroup.Users !== undefined && oldGroup.Users.length > 0) {\r\n margeGroup.Users = oldGroup.Users;\r\n }\r\n\r\n if (newGroup.Prompt !== null && newGroup.Prompt !== undefined) {\r\n margeGroup.Prompt = newGroup.Prompt;\r\n } else if (oldGroup.Prompt !== null && newGroup.Prompt !== undefined) {\r\n margeGroup.Prompt = oldGroup.Prompt;\r\n } else {\r\n margeGroup.Prompt = EChat.PromptType.Normal;\r\n }\r\n\r\n if (newGroup.PostPermission !== null && newGroup.PostPermission !== undefined) {\r\n margeGroup.PostPermission = newGroup.PostPermission;\r\n } else if (oldGroup.PostPermission !== null && newGroup.PostPermission !== undefined) {\r\n margeGroup.PostPermission = oldGroup.PostPermission;\r\n } else {\r\n margeGroup.PostPermission = EChat.PostPermissionType.Post;\r\n }\r\n\r\n if (newGroup.LastSenderAuthenticationID !== null && newGroup.LastSenderAuthenticationID !== undefined) {\r\n margeGroup.LastSenderAuthenticationID = newGroup.LastSenderAuthenticationID;\r\n } else {\r\n margeGroup.LastSenderAuthenticationID = oldGroup.LastSenderAuthenticationID;\r\n }\r\n\r\n if (newGroup.LastSenderFullName !== null && newGroup.LastSenderFullName !== undefined) {\r\n margeGroup.LastSenderFullName = newGroup.LastSenderFullName;\r\n } else {\r\n margeGroup.LastSenderFullName = oldGroup.LastSenderFullName;\r\n }\r\n\r\n if (newGroup.LastSenderUserAvatar !== null && newGroup.LastSenderUserAvatar !== undefined) {\r\n margeGroup.LastSenderUserAvatar = newGroup.LastSenderUserAvatar;\r\n } else {\r\n margeGroup.LastSenderUserAvatar = oldGroup.LastSenderUserAvatar;\r\n }\r\n\r\n if (newGroup.LastMessageBody !== null && newGroup.LastMessageBody !== undefined) {\r\n margeGroup.LastMessageBody = newGroup.LastMessageBody;\r\n } else {\r\n margeGroup.LastMessageBody = oldGroup.LastMessageBody;\r\n }\r\n\r\n if (newGroup.LastMessageID !== null && newGroup.LastMessageID !== undefined) {\r\n margeGroup.LastMessageID = newGroup.LastMessageID;\r\n } else {\r\n margeGroup.LastMessageID = oldGroup.LastMessageID;\r\n }\r\n\r\n margeGroup.Messages = mergeGroupMessage(oldGroup.Messages, newGroup.Messages, false);\r\n\r\n // Task 441343\r\n } else if (!newGroup) {\r\n margeGroup = oldGroup;\r\n } else if (!oldGroup) {\r\n margeGroup = newGroup;\r\n }\r\n\r\n if (margeGroup && !margeGroup.Messages) {\r\n margeGroup.Messages = [];\r\n }\r\n\r\n if (margeGroup && !margeGroup.Users) {\r\n margeGroup.Users = [];\r\n }\r\n\r\n if (margeGroup.DisplayName && EChat.DataProvider.CurrentUserInfo && margeGroup.DisplayName !== EChat.DataProvider.CurrentUserInfo.FullName) {\r\n margeGroup.DisplayName = margeGroup.DisplayName.replace(`${EChat.DataProvider.CurrentUserInfo.FullName}, `, \"\").replace(`, ${EChat.DataProvider.CurrentUserInfo.FullName}`, \"\");\r\n }\r\n\r\n return margeGroup;\r\n };\r\n\r\n const mergeGroupMessage = function (oldMessageList, newMessageList, limit) {\r\n let mergeMessageList = oldMessageList;\r\n if (newMessageList && mergeMessageList) {\r\n for (let i = 0, len = newMessageList.length; i < len; i++) {\r\n const newMessage = newMessageList[i];\r\n let isExist = false;\r\n for (let j = 0, len2 = mergeMessageList.length; j < len2; j++) {\r\n if (newMessage.MessageID === mergeMessageList[j].MessageID) {\r\n mergeMessageList[j] = newMessage;\r\n isExist = true;\r\n break;\r\n }\r\n }\r\n\r\n if (!isExist) {\r\n mergeMessageList.push(newMessage);\r\n }\r\n }\r\n } else if (!mergeMessageList) {\r\n mergeMessageList = newMessageList;\r\n } else if (!newMessageList) {\r\n mergeMessageList = oldMessageList;\r\n }\r\n\r\n if (!mergeMessageList) {\r\n mergeMessageList = [];\r\n }\r\n\r\n mergeMessageList = mergeMessageList.sort((a, b) => b.TimeCreated - a.TimeCreated);\r\n if (limit) {\r\n mergeMessageList.length = Math.min(mergeMessageList.length, 200);\r\n }\r\n\r\n return mergeMessageList;\r\n };\r\n\r\n this.NoticeUpdate = function (TableName, keyList) {\r\n if (keyList?.length > 0) {\r\n EChat.LocalStorage.writeLocalStorage(EChat.LocalStorageType.DBUPDATE, JSON.stringify({\r\n TableName,\r\n Time: EChat.Util.getTimeStamp(),\r\n Key: keyList\r\n }));\r\n }\r\n };\r\n\r\n this.InsertOrUpdate = function (tableName, DataObj) {\r\n return new Promise(((resolve, reject) => {\r\n _this.getDB().then((db) => {\r\n const transaction = db.transaction(tableName, READ_WRITE);\r\n const store = transaction.objectStore(tableName);\r\n try {\r\n const request = store.put(DataObj);\r\n request.onerror = function () {\r\n db.close();\r\n IndexedDBThrowError(`db put error:${request.error}`);\r\n reject();\r\n };\r\n\r\n request.onsuccess = function () {\r\n db.close();\r\n resolve(DataObj);\r\n };\r\n } catch (e) {\r\n db.close();\r\n // eslint-disable-next-line no-console\r\n console.error(DataObj);\r\n IndexedDBThrowError(`db put error:${e.message}`);\r\n reject();\r\n }\r\n });\r\n }));\r\n };\r\n\r\n this.GetRecentGroupList = function (LastMessageTimeCreated, MinTime) {\r\n return new Promise(((resolve) => {\r\n LastMessageTimeCreated = parseInt(LastMessageTimeCreated);\r\n const Groups = [];\r\n const Limit = 20;\r\n let MinMessageTimeCreated = -1;\r\n if (LastMessageTimeCreated >= 0) {\r\n _this.GetTableAllData(EChat.DBTableName.GROUPINFO).then((GroupList) => {\r\n if (GroupList) {\r\n const sortGroup = GroupList.sort((a, b) => _this.GetGroupSortTime(b) - _this.GetGroupSortTime(a));\r\n const checkGroup = function (groupInfo) {\r\n if (groupInfo.GroupType === SocketUtil.GroupType.Message) {\r\n return true;\r\n }\r\n if (groupInfo.GroupType === SocketUtil.GroupType.Task) {\r\n return true;\r\n }\r\n if (groupInfo.GroupType === SocketUtil.GroupType.System) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n let count = 0;\r\n for (let i = 0, len = sortGroup.length; i < len; i++) {\r\n // Task 695920: Showing unread echat notifications when there are no unread echats\r\n if (checkGroup(sortGroup[i])) {\r\n const sortTime = EChat.IndexedDB.GetGroupSortTime(sortGroup[i]);\r\n if (sortTime < LastMessageTimeCreated || LastMessageTimeCreated === 0) {\r\n if (sortTime >= MinTime) {\r\n Groups.push(GroupList[i]);\r\n count++;\r\n }\r\n }\r\n }\r\n if (count >= Limit) {\r\n break;\r\n }\r\n }\r\n if (count) {\r\n MinMessageTimeCreated = _this.GetGroupSortTime(Groups[Groups.length - 1]);\r\n }\r\n\r\n resolve({ Groups, LastMessageTimeCreated: MinMessageTimeCreated });\r\n }\r\n });\r\n } else {\r\n resolve({ Groups, LastMessageTimeCreated });\r\n }\r\n }));\r\n };\r\n\r\n this.GetGroupSortTime = function (groupInfo) {\r\n let sortTime = 0;\r\n if (groupInfo) {\r\n sortTime = parseInt(groupInfo.MessageUpdated);\r\n if (groupInfo.Messages && groupInfo.Messages.length > 0 && groupInfo.GroupType !== SocketUtil.GroupType.Task) {\r\n sortTime = parseInt(groupInfo.Messages[0].TimeCreated);\r\n }\r\n }\r\n return sortTime;\r\n };\r\n\r\n this.UpdateSetting = function (Key, Value, Notice) {\r\n return new Promise(((resolve) => {\r\n EChat.IndexedDB.InsertOrUpdate(EChat.DBTableName.SETTINGS, { Key, Value }).then(() => {\r\n if (Notice) {\r\n _this.NoticeUpdate(EChat.DBTableName.SETTINGS, [Key]);\r\n }\r\n resolve();\r\n }).catch(() => {\r\n resolve();\r\n });\r\n }));\r\n };\r\n\r\n this.GetTableAllData = function (tableName, limit) {\r\n return new Promise(((resolve, reject) => {\r\n _this.getDB().then((db) => {\r\n const transaction = db.transaction(tableName, READ_ONLY);\r\n const objectStore = transaction.objectStore(tableName);\r\n const request = objectStore.openCursor();\r\n let count = 0;\r\n const DataList = [];\r\n\r\n request.onerror = function () {\r\n db.close();\r\n IndexedDBThrowError(`db GetTableAllData error: ${request.error}`);\r\n reject();\r\n };\r\n\r\n request.onsuccess = function (event) {\r\n const cursor = event.target.result;\r\n\r\n if (cursor) {\r\n DataList.push(cursor.value);\r\n count++;\r\n if (!limit || (limit - count) > 0) {\r\n cursor.continue();\r\n } else {\r\n db.close();\r\n resolve(DataList);\r\n }\r\n } else {\r\n db.close();\r\n resolve(DataList);\r\n }\r\n };\r\n });\r\n }));\r\n };\r\n\r\n this.GetTableDataByIndex = function (tableName, index, key) {\r\n return new Promise(((resolve, reject) => {\r\n _this.getDB().then((db) => {\r\n const transaction = db.transaction(tableName, READ_ONLY);\r\n const objectStore = transaction.objectStore(tableName);\r\n const dbIndex = objectStore.index(index);\r\n const request = dbIndex.openCursor(IDBKeyRange.only(key));\r\n\r\n const DataList = [];\r\n\r\n request.onerror = function () {\r\n db.close();\r\n IndexedDBThrowError(`db GetTableAllData error: ${request.error}`);\r\n reject();\r\n };\r\n\r\n request.onsuccess = function (event) {\r\n const cursor = event.target.result;\r\n\r\n if (cursor) {\r\n DataList.push(cursor.value);\r\n cursor.continue();\r\n } else {\r\n db.close();\r\n resolve(DataList);\r\n }\r\n };\r\n });\r\n }));\r\n };\r\n\r\n this.GetTableDataByKeyList = function (tableName, keyList) {\r\n return new Promise(((resolve) => {\r\n if (keyList?.length > 0) {\r\n _this.getDB().then((db) => {\r\n const transaction = db.transaction(tableName, READ_ONLY);\r\n const objectStore = transaction.objectStore(tableName);\r\n const DataDic = {};\r\n\r\n for (let i = 0, len = keyList.length; i < len; i++) {\r\n let key = keyList[i];\r\n if (tableName === EChat.DBTableName.TABLEALERTS) {\r\n key = parseInt(key);\r\n if (!EC_Fmt.isNumber(key)) {\r\n key = null;\r\n }\r\n }\r\n\r\n // Task 673775: Constant Javascript errors for a specific user - Error in promise - DataError: Failed to execute 'get' on 'IDBObjectStore': No key or key range specified.\r\n if (!EC_Fmt.isNull(key)) {\r\n objectStore.get(key).onsuccess = function (event) {\r\n const cursor = this.result;\r\n if (cursor !== null && cursor !== undefined) {\r\n const primaryKey = event.target.source.keyPath;\r\n DataDic[cursor[primaryKey]] = cursor;\r\n }\r\n };\r\n }\r\n }\r\n\r\n transaction.oncomplete = function () {\r\n db.close();\r\n resolve(DataDic);\r\n };\r\n });\r\n } else {\r\n resolve({});\r\n }\r\n }));\r\n };\r\n\r\n this.GetTableDataByKey = function (tabeName, key) {\r\n return new Promise(((resolve) => {\r\n if (tabeName === EChat.DBTableName.USERS) {\r\n EChat.DataProvider.GetUserInfo([key]).then((users) => {\r\n if (users.length === 1) {\r\n resolve(users[0]);\r\n } else {\r\n resolve(null);\r\n }\r\n });\r\n return;\r\n }\r\n _this.getDB().then((db) => {\r\n const transaction = db.transaction(tabeName, READ_ONLY);\r\n const objectStore = transaction.objectStore(tabeName);\r\n let DataObj = null;\r\n if (!EC_Fmt.isNull(key)) {\r\n const request = objectStore.get(key);\r\n\r\n request.onerror = function () {\r\n db.close();\r\n IndexedDBThrowError(`GetTableDataByKey error:${request.error}`);\r\n resolve(null);\r\n };\r\n\r\n request.onsuccess = function () {\r\n DataObj = request.result;\r\n db.close();\r\n resolve(DataObj);\r\n };\r\n } else {\r\n db.close();\r\n resolve(null);\r\n }\r\n });\r\n }));\r\n };\r\n\r\n this.GetTableDataCount = function (tabeName) {\r\n return new Promise(((resolve, reject) => {\r\n _this.getDB().then((db) => {\r\n const transaction = db.transaction(tabeName, READ_ONLY);\r\n const objectStore = transaction.objectStore(tabeName);\r\n let Count = 0;\r\n const request = objectStore.count();\r\n\r\n request.onerror = function () {\r\n db.close();\r\n IndexedDBThrowError(`GetTableDataCount error:${request.error}`);\r\n reject();\r\n };\r\n\r\n request.onsuccess = function () {\r\n Count = request.result;\r\n db.close();\r\n resolve(Count);\r\n };\r\n });\r\n }));\r\n };\r\n\r\n this.DeleteTableDataByKey = function (tabeName, key, Notice) {\r\n return new Promise(((resolve, reject) => {\r\n _this.getDB().then((db) => {\r\n const transaction = db.transaction(tabeName, READ_WRITE);\r\n const objectStore = transaction.objectStore(tabeName);\r\n const request = objectStore.delete(key);\r\n if (!EC_Fmt.isNull(key)) {\r\n request.onerror = function () {\r\n db.close();\r\n IndexedDBThrowError(`DeleteTableDataByKey error:${request.error}`);\r\n reject();\r\n };\r\n\r\n request.onsuccess = function () {\r\n if (Notice) {\r\n EChat.LocalStorage.writeLocalStorage(EChat.LocalStorageType.DBDELETED, JSON.stringify({\r\n TableName: tabeName,\r\n Time: EChat.Util.getTimeStamp(),\r\n Key: [key]\r\n }));\r\n }\r\n db.close();\r\n resolve(key);\r\n };\r\n } else {\r\n db.close();\r\n reject();\r\n }\r\n });\r\n }));\r\n };\r\n\r\n this.DeleteTableDataByKeyList = function (tabeName, keyList, Notice) {\r\n return new Promise(((resolve, reject) => {\r\n _this.getDB().then((db) => {\r\n const transaction = db.transaction(tabeName, READ_WRITE);\r\n const objectStore = transaction.objectStore(tabeName);\r\n let request = null;\r\n for (let i = 0, len = keyList.length; i < len; i++) {\r\n const key = keyList[i];\r\n if (i === keyList.length - 1) {\r\n request = objectStore.delete(key);\r\n } else {\r\n objectStore.delete(key);\r\n }\r\n }\r\n\r\n request.onerror = function () {\r\n db.close();\r\n IndexedDBThrowError(`DeleteTableDataByKeyList error:${request.error}`);\r\n reject();\r\n };\r\n\r\n request.onsuccess = function () {\r\n if (Notice && keyList?.length > 0) {\r\n EChat.LocalStorage.writeLocalStorage(EChat.LocalStorageType.DBDELETED, JSON.stringify({\r\n TableName: tabeName,\r\n Time: EChat.Util.getTimeStamp(),\r\n Key: keyList\r\n }));\r\n }\r\n db.close();\r\n resolve(keyList);\r\n };\r\n });\r\n }));\r\n };\r\n\r\n this.DeleteTableAllData = function (tabeName, Notice) {\r\n return new Promise(((resolve) => {\r\n _this.getDB().then((db) => {\r\n const transaction = db.transaction(tabeName, READ_WRITE);\r\n const objectStore = transaction.objectStore(tabeName);\r\n const request = objectStore.clear();\r\n\r\n request.onerror = function () {\r\n db.close();\r\n resolve();\r\n IndexedDBThrowError(`DeleteTableAllData error:${request.error}`);\r\n };\r\n\r\n request.onsuccess = function () {\r\n if (Notice) {\r\n EChat.LocalStorage.writeLocalStorage(EChat.LocalStorageType.DBDELETED, JSON.stringify({\r\n TableName: tabeName,\r\n Time: EChat.Util.getTimeStamp(),\r\n Key: []\r\n }));\r\n }\r\n db.close();\r\n resolve();\r\n };\r\n });\r\n }));\r\n };\r\n\r\n this.DropTable = function (tabeName, Notice) {\r\n return new Promise(((resolve, reject) => {\r\n _this.getDB().then((db) => {\r\n const transaction = db.transaction(tabeName, READ_WRITE);\r\n const objectStore = transaction.objectStore(tabeName);\r\n const request = objectStore.clear();\r\n\r\n request.onerror = function () {\r\n db.close();\r\n IndexedDBThrowError(`DeleteTableAllData error:${request.error}`);\r\n reject();\r\n };\r\n\r\n request.onsuccess = function () {\r\n if (Notice) {\r\n EChat.LocalStorage.writeLocalStorage(EChat.LocalStorageType.DBDELETED, JSON.stringify({\r\n TableName: tabeName,\r\n Time: EChat.Util.getTimeStamp(),\r\n Key: []\r\n }));\r\n }\r\n db.close();\r\n resolve();\r\n };\r\n });\r\n }));\r\n };\r\n\r\n this.UpdateTableAlert = function (TableAlertList, Notice) {\r\n return new Promise(((resolve) => {\r\n const keyList = [];\r\n const errorList = [];\r\n if (TableAlertList?.length > 0) {\r\n const lastKey = TableAlertList[TableAlertList.length - 1].AlertID;\r\n\r\n for (let i = 0; i < TableAlertList.length; i++) {\r\n keyList.push(TableAlertList[i].AlertID);\r\n EChat.IndexedDB.InsertOrUpdate(EChat.DBTableName.TABLEALERTS, TableAlertList[i]).then((newData) => {\r\n if (lastKey === newData.AlertID) {\r\n if (Notice) {\r\n _this.NoticeUpdate(EChat.DBTableName.TABLEALERTS, keyList);\r\n }\r\n resolve();\r\n }\r\n }).catch((newData) => {\r\n errorList.push(newData.AlertID);\r\n if (lastKey === newData.AlertID) {\r\n resolve(errorList);\r\n }\r\n });\r\n }\r\n } else {\r\n resolve();\r\n }\r\n }));\r\n };\r\n\r\n this.UpdateSentMessage = function (webscoketMessage, Notice) {\r\n return new Promise(((resolve, reject) => {\r\n EChat.IndexedDB.InsertOrUpdate(EChat.DBTableName.SENDMESSAGES, webscoketMessage).then(() => {\r\n if (Notice) {\r\n _this.NoticeUpdate(EChat.DBTableName.SENDMESSAGES, [webscoketMessage.TimeStamp]);\r\n }\r\n resolve();\r\n }).catch(() => {\r\n reject();\r\n });\r\n }));\r\n };\r\n\r\n this.WriteError = function (msg, stack) {\r\n return new Promise(((resolve, reject) => {\r\n let stackTrace = \"\";\r\n if (stack) {\r\n stackTrace = stack;\r\n }\r\n\r\n EChat.IndexedDB.InsertOrUpdate(EChat.DBTableName.LOG, {\r\n TimeStamp: EChat.Util.getTimeStamp(), ErrorType: \"ErrorType\", Message: msg, Stack: stackTrace\r\n }).then(() => {\r\n resolve();\r\n }).catch(() => {\r\n reject();\r\n });\r\n }));\r\n };\r\n\r\n this.WriteDebug = function (msg) {\r\n return new Promise(((resolve, reject) => {\r\n EChat.IndexedDB.InsertOrUpdate(EChat.DBTableName.LOG, { TimeStamp: EChat.Util.getTimeStamp(), ErrorType: \"Debug\", Message: msg }).then(() => {\r\n resolve();\r\n }).catch(() => {\r\n reject();\r\n });\r\n }));\r\n };\r\n\r\n this.InsertMessage = function (message, addUnreadCount, Notice) {\r\n return new Promise(((resolve, reject) => {\r\n if (message !== null && message !== undefined && message.MessageGroupID) {\r\n EChat.DataProvider.GetGroupInfoByGroupID(message.MessageGroupID).then((groupInfo) => {\r\n let isExist = false;\r\n for (let i = 0, len = groupInfo.Messages.length; i < len; i++) {\r\n if (groupInfo.Messages[i].MessageID === message.MessageID) {\r\n isExist = true;\r\n break;\r\n }\r\n }\r\n if (!isExist) {\r\n message.TimeUpdated = message.TimeCreated;\r\n groupInfo.Messages.push(message);\r\n groupInfo.Messages = groupInfo.Messages.sort((a, b) => b.TimeCreated - a.TimeCreated);\r\n groupInfo.Messages.length = Math.min(groupInfo.Messages.length, 200);\r\n groupInfo.MessageUpdated = message.TimeCreated;\r\n if (addUnreadCount) {\r\n if (groupInfo.UnReadCount) {\r\n groupInfo.UnReadCount++;\r\n } else {\r\n groupInfo.UnReadCount = 1;\r\n }\r\n }\r\n\r\n _this.InsertOrUpdate(EChat.DBTableName.GROUPINFO, groupInfo).then(async () => {\r\n // Update Unread Sum Count\r\n if (!EChat.DataProvider.IsCurrentUser(message.SenderAuthenticationID) && addUnreadCount) {\r\n if (message.DataInfo && message.DataInfo.TaskID) {\r\n await EChat.IndexedDB.UpdateGroupUnread([`${message.MessageGroupID}_${message.DataInfo.TaskID}`], 1, false);\r\n } else if (groupInfo.Prompt !== EChat.PromptType.DoNotDisturb) {\r\n await EChat.IndexedDB.UpdateGroupUnread([message.MessageGroupID], 1, false);\r\n }\r\n }\r\n if (!EChat.eChatState) {\r\n EChat.MainPageController.updateUnReadNumIcon(\"Receive message.\");\r\n }\r\n\r\n await EChat.MainPageController.redrawGroupEvent(groupInfo);\r\n\r\n if (Notice) {\r\n _this.NoticeUpdate(EChat.DBTableName.GROUPINFO, [groupInfo.MessageGroupID]);\r\n }\r\n resolve();\r\n }).catch((ex) => {\r\n // eslint-disable-next-line no-console\r\n console.error(ex);\r\n reject(ex);\r\n });\r\n } else {\r\n resolve();\r\n }\r\n }).catch(() => {\r\n // eslint-disable-next-line no-console\r\n console.error(ex);\r\n reject();\r\n });\r\n } else {\r\n reject();\r\n }\r\n }));\r\n };\r\n\r\n this.InsertTaskDetail = function (message) {\r\n return new Promise(((resolve) => {\r\n if (message?.MessageGroupID && message?.TaskID) {\r\n const key = `${message.TaskSourceEncompassID}_${message.TaskID}`;\r\n\r\n EChat.DataProvider.GetGroupInfoByGroupID(key).then((groupInfo) => {\r\n groupInfo.MessageUpdated = message.TimeCreated;\r\n if (!EChat.DataProvider.IsCurrentUser(message.SenderAuthenticationID)) {\r\n if (groupInfo.UnReadCount) {\r\n groupInfo.UnReadCount++;\r\n } else {\r\n groupInfo.UnReadCount = 1;\r\n }\r\n }\r\n\r\n groupInfo.LastMessageBody = message.Message;\r\n groupInfo.LastSenderUserAvatar = message.SenderUserAvatar;\r\n groupInfo.LastSenderAuthenticationID = message.SenderAuthenticationID;\r\n groupInfo.LastSenderFullName = message.SenderFullName;\r\n groupInfo.LastMessageID = message.MessageID;\r\n\r\n _this.InsertOrUpdate(EChat.DBTableName.GROUPINFO, groupInfo).then(() => {\r\n // Update Unread Sum Count\r\n if (!EChat.DataProvider.IsCurrentUser(message.SenderAuthenticationID)) {\r\n EChat.IndexedDB.UpdateGroupUnread([key], 1, false);\r\n }\r\n if (!EChat.eChatState) {\r\n EChat.MainPageController.updateUnReadNumIcon(\"Receive task detial.\");\r\n }\r\n\r\n EChat.LocalStorage.writeLocalStorage(EChat.LocalStorageType.RECEIVETASKDETAIL, JSON.stringify(message));\r\n EChat.MainPageController.receiveTaskDetail(message, false);\r\n resolve();\r\n }).catch((ex) => {\r\n // eslint-disable-next-line no-console\r\n console.error(ex);\r\n resolve();\r\n });\r\n }).catch((ex) => {\r\n // eslint-disable-next-line no-console\r\n console.error(ex);\r\n resolve();\r\n });\r\n } else {\r\n resolve();\r\n }\r\n }));\r\n };\r\n\r\n this.CheckCurrentDBAuthID = function (newAuthID) {\r\n return new Promise(((resolve) => {\r\n _this.GetSetting(\"CurrentUser\").then((CurrentUser) => {\r\n if (!CurrentUser || !CurrentUser.AuthenticationID || parseInt(CurrentUser.AuthenticationID) !== parseInt(newAuthID) || Distributor !== CurrentUser.EncompassID) {\r\n _this.ClearDateBase().then(() => {\r\n if (SocketUtil.GetSocketState() === SocketUtil.SocketState.Connect) {\r\n SocketUtil.Reconnect();\r\n }\r\n if (EChat.MainPageController) {\r\n EChat.MainPageController.closeAllWindow();\r\n }\r\n _this.UpdateSetting(\"CurrentUser\", { AuthenticationID: newAuthID, EncompassID: Distributor }).then(async () => {\r\n await EChat.IndexedDB.UpdateSetting(\"EChatV2010\", EChat.Util.getTimeStamp(), false);\r\n resolve();\r\n });\r\n });\r\n } else {\r\n resolve();\r\n }\r\n }).catch(() => {\r\n resolve();\r\n });\r\n }));\r\n };\r\n\r\n this.ClearDateBase = async function () {\r\n await _this.DeleteTableAllData(EChat.DBTableName.GROUPINFO, true);\r\n await _this.DeleteTableAllData(EChat.DBTableName.SETTINGS, true);\r\n await _this.DeleteTableAllData(EChat.DBTableName.TABLEALERTS, true);\r\n await _this.DeleteTableAllData(EChat.DBTableName.SENDMESSAGES, true);\r\n await _this.DeleteTableAllData(EChat.DBTableName.TASKS, true);\r\n await _this.DeleteTableAllData(EChat.DBTableName.LOG, true);\r\n };\r\n\r\n this.GetSetting = function (SettingName) {\r\n return new Promise(((resolve) => {\r\n _this.GetTableDataByKey(EChat.DBTableName.SETTINGS, SettingName).then((Setting) => {\r\n if (Setting && Setting.Value !== null && Setting.Value !== undefined) {\r\n resolve(Setting.Value);\r\n } else {\r\n resolve(null);\r\n }\r\n });\r\n }));\r\n };\r\n\r\n const IndexedDBThrowError = function (msg) {\r\n if (!msg) {\r\n return;\r\n }\r\n\r\n throwErrorCount++;\r\n if (throwErrorCount > 1) {\r\n return;\r\n }\r\n\r\n // Task 754000: eChat Server: eChat page is not loading is is giving the user an 'Uncaught db GetTableAllData Error'\r\n if (msg.indexOf(\"Failed to read large IndexedDB value\") > -1) {\r\n // eslint-disable-next-line no-console\r\n console.warn(\"Failed to read large IndexedDB value. ReloadEChatData\");\r\n EChat.MainPageController.ReloadEChatData(\"Data loading failed. Will automatically reload.\");\r\n throw msg;\r\n } else {\r\n throw msg;\r\n }\r\n };\r\n\r\n this.DBHandleQueue = function (HandleArr) {\r\n return new Promise(((resolve) => {\r\n if (HandleArr.length > 0) {\r\n const nextStep = function () {\r\n if (HandleArr.length === 1) {\r\n resolve();\r\n }\r\n HandleArr.splice(0, 1);\r\n _this.DBHandleQueue(HandleArr).then(resolve).catch(resolve);\r\n };\r\n HandleArr[0]().then(nextStep).catch(nextStep);\r\n } else {\r\n resolve();\r\n }\r\n }));\r\n };\r\n };\r\n return new IndexedDBClass();\r\n}());\r\n\r\nEChat.FullWindowController = (function () {\r\n const FullWindowController = function () {\r\n const _this = this;\r\n let oldTop = 0;\r\n let oldLeft = 0;\r\n let oldHeight = 0;\r\n let keyupFlag = 0;\r\n let first = true;\r\n const oldWidth = EChat.__width;\r\n this.FullWindow = false;\r\n this.TextArea = null;\r\n\r\n this.SwichWindow = function () {\r\n if (_this.FullWindow) {\r\n SwichSmallWindow();\r\n } else {\r\n SwichFullWindow();\r\n }\r\n };\r\n\r\n const SwichFullWindow = function () {\r\n _this.FullWindow = true;\r\n // ui class\r\n const EChatMainPage = document.getElementById(\"EChatMainPage\");\r\n EChatMainPage.classList.add(\"EChatFullWindow\");\r\n\r\n // icon\r\n // Task 1074079:eChat: Close window buttons do not use the standard UI Kit\r\n const EChatMaximizeBtn = document.querySelector(\"#EChatMaximizeBtn ecp-btn\");\r\n EChatMaximizeBtn.setAttribute(\"icon\", \"ews-icon-recoverwindow\");\r\n\r\n _this.ResizeFullWindow();\r\n EChat.MainPageController.resizeDialog();\r\n\r\n // curr window\r\n const windowList = EChat.MainPageController.messageWindowList;\r\n const EChatFullWindowContent = document.getElementById(\"EChatFullWindowContent\");\r\n if (windowList.length > 0) {\r\n for (let i = 0; i < windowList.length; i++) {\r\n const messageWindow = windowList[i];\r\n if (messageWindow === EChat.MainPageController.currentMessageWindow) {\r\n EChatFullWindowContent.append(messageWindow.element);\r\n ScorllToBottom(messageWindow.currentTab);\r\n } else {\r\n messageWindow.closeMessageWindow();\r\n }\r\n }\r\n }\r\n\r\n _this.ResizeTextArea().then(() => {\r\n if (first) {\r\n first = false;\r\n setTimeout(() => {\r\n document.addEventListener(\"keydown\", (event) => {\r\n // Task 1027356: Full Screen UI: Best way to return to small view.\r\n if ((event.code === \"Escape\" || event.key === \"Escape\") && _this.FullWindow) {\r\n SwichSmallWindow();\r\n }\r\n });\r\n }, 100);\r\n }\r\n });\r\n UpdateTextCount();\r\n };\r\n\r\n const UpdateTextCount = function () {\r\n const textArea = document.querySelector(\".eChat-MessageWindowTextArea\");\r\n if (textArea) {\r\n EC_Fmt.TriggerEvent(textArea, \"input\");\r\n }\r\n };\r\n\r\n const ScorllToBottom = function (chatTab) {\r\n if (chatTab) {\r\n const chatBoxElement = document.getElementById(`chatBox_${chatTab.ID}`);\r\n if (chatBoxElement) {\r\n chatBoxElement.scrollTop = chatBoxElement.scrollHeight;\r\n }\r\n }\r\n };\r\n\r\n const SwichSmallWindow = function () {\r\n _this.FullWindow = false;\r\n // ui class\r\n const EChatMainPage = document.getElementById(\"EChatMainPage\");\r\n EChatMainPage.classList.remove(\"EChatFullWindow\");\r\n\r\n // icon\r\n const EChatMaximizeBtn = document.querySelector(\"#EChatMaximizeBtn ecp-btn\");\r\n EChatMaximizeBtn.setAttribute(\"icon\", \"ews-icon-break-out\");\r\n\r\n // location\r\n EChatMainPage.style.top = `${oldTop}px`;\r\n EChatMainPage.style.left = `${oldLeft}px`;\r\n\r\n // size\r\n EChat.MainPageController.mainWindowSize = { height: oldHeight };\r\n EChatMainPage.style.setProperty(\"--height\", `${oldHeight}px`);\r\n EChatMainPage.style.setProperty(\"--width\", `${oldWidth}px`);\r\n EChat.MainPageController.resizeDialog();\r\n\r\n // curr window\r\n const windowList = EChat.MainPageController.messageWindowList;\r\n const EChatFullWindowContent = document.getElementById(\"EChatFullWindowContent\");\r\n if (windowList.length > 0) {\r\n const messageWindow = windowList[0];\r\n if (messageWindow.chatTabListCount > EChat.Setting.TabNumPerWindow) {\r\n const tabArr = [];\r\n const groupIDArr = Object.keys(messageWindow.chatTabList);\r\n for (let i = 0; i < groupIDArr.length; i++) {\r\n const chatTab = messageWindow.chatTabList[groupIDArr[i]];\r\n tabArr.push({\r\n tab: chatTab,\r\n time: chatTab.TabCreateTime\r\n });\r\n }\r\n tabArr.sort((a, b) => b.time - a.time);\r\n\r\n for (let i = EChat.Setting.TabNumPerWindow; i < tabArr.length; i++) {\r\n tabArr[i].tab.closeEvent();\r\n }\r\n }\r\n\r\n EChat.Util.SetWindowLocation(messageWindow.element);\r\n document.querySelector(\"html > body\").append(messageWindow.element);\r\n ScorllToBottom(messageWindow.currentTab);\r\n }\r\n\r\n // clear ui\r\n EChatFullWindowContent.innerHTML = \"\";\r\n oldHeight = 0;\r\n oldTop = 0;\r\n oldLeft = 0;\r\n\r\n _this.ResizeTextArea();\r\n UpdateTextCount();\r\n\r\n const messageWindow = windowList[0];\r\n const messageWindowMinimize = messageWindow.element.querySelector(\".eChat-MessageWindowMinimize\").style.display;\r\n if (messageWindowMinimize === \"block\") {\r\n messageWindow.element.querySelector(\".eChat-MessageWindowDialog\").style.display = \"none\";\r\n messageWindow.element.querySelector(\".eChat-MessageWindowSend\").style.display = \"none\";\r\n messageWindow.element.querySelector(\".eChat-MessageWindowTitleBox\").style.display = \"none\";\r\n const screenHeight = window.innerHeight;\r\n const echatLeft = document.getElementById(\"EChatMainPage\").offsetLeft;\r\n const messageWindowLeft = messageWindow.element.clientWidth;\r\n messageWindow.element.style.top = `${screenHeight - 30}px`;\r\n messageWindow.element.style.left = `${echatLeft - messageWindowLeft}px`;\r\n }\r\n };\r\n\r\n this.ResizeFullWindow = function () {\r\n if (_this.FullWindow) {\r\n // location\r\n const topMin = EChat.Util.getHeaderHeight();\r\n const leftMin = 0;\r\n oldTop = oldTop || EChatMainPage.getBoundingClientRect().top;\r\n oldLeft = oldLeft || EChatMainPage.getBoundingClientRect().left;\r\n EChatMainPage.style.top = `${topMin}px`;\r\n EChatMainPage.style.left = `${leftMin}px`;\r\n\r\n // size\r\n const maxHeight = window.innerHeight - topMin;\r\n const maxWidth = window.innerWidth - leftMin;\r\n const EChatMainPageHead = document.getElementById(\"EChatMainPageHead\");\r\n const height = maxHeight - EChatMainPageHead.getBoundingClientRect().height;\r\n\r\n if (!oldHeight) {\r\n oldHeight = EChat.MainPageController.mainWindowSize.height ? EChat.MainPageController.mainWindowSize.height : EChat.__height;\r\n }\r\n EChat.MainPageController.mainWindowSize = { height };\r\n EChatMainPage.style.setProperty(\"--height\", `${height}px`);\r\n EChatMainPage.style.setProperty(\"--width\", `${maxWidth}px`);\r\n }\r\n };\r\n\r\n const InitTextArea = async function () {\r\n const MessageWindowTextArea = document.querySelector(\".eChat-MessageWindowTextArea\");\r\n if (!MessageWindowTextArea) {\r\n return;\r\n }\r\n const smallTool = document.querySelector(\".eChat-MessageWindowInputTool\");\r\n EChat.Util.ShowLoading(smallTool);\r\n const Option = {\r\n height: 110,\r\n toolbar: [\"link uploadfiles removeformat openechat searchhistory copytotask delaysend mutegroup unmutegroup echat fontsizeselect bold italic hr aligncenter alignleft alignright alignjustify bullist numlist wordcount\"],\r\n plugins: [\"hr link code\"],\r\n elementpath: false,\r\n statusbar: false,\r\n content_style: \"body{\"\r\n + \"height:100%\"\r\n + \"} \"\r\n + \"body>* {\"\r\n + \"margin:0!important;\"\r\n + \"font-size:13px\"\r\n + \"}\",\r\n setup: (editor) => {\r\n editor.on(\"keyup\", () => {\r\n clearTimeout(keyupFlag);\r\n keyupFlag = setTimeout(() => {\r\n if (_this.TextArea) {\r\n _this.TextArea.save();\r\n }\r\n UpdateTextCount();\r\n }, 500);\r\n });\r\n editor.on(\"keydown\", (e) => {\r\n if (e.keyCode === 13 && (e.ctrlKey || e.metaKey)) {\r\n EC_Fmt.TriggerEvent(document.getElementById(\"EChat_Send_Btn\"), \"click\");\r\n }\r\n });\r\n editor.addButton(\"uploadfiles\", {\r\n title: \"Upload Files\",\r\n icon: \"ews-icon-uploadfiles\",\r\n onclick: (e) => {\r\n e.stopPropagation();\r\n EC_Fmt.TriggerEvent(smallTool.querySelector(\".eChat-MessageWindowFileTool\"), \"click\");\r\n }\r\n });\r\n editor.addButton(\"openechat\", {\r\n title: \"Open eChat\",\r\n icon: \"ews-icon-echat\",\r\n onclick: (e) => {\r\n e.stopPropagation();\r\n EC_Fmt.TriggerEvent(smallTool.querySelector(\".eChat-MessageWindowOpenEChatTool\"), \"click\");\r\n }\r\n });\r\n editor.addButton(\"searchhistory\", {\r\n title: \"Search History\",\r\n icon: \"ews-icon-chatshistory\",\r\n onclick: (e) => {\r\n e.stopPropagation();\r\n EC_Fmt.TriggerEvent(smallTool.querySelector(\".eChat-MessageWindowSearchTool\"), \"click\");\r\n }\r\n });\r\n editor.addButton(\"copytotask\", {\r\n title: \"Copy or Create New Task\",\r\n icon: \"ews-icon-copy\",\r\n onclick: (e) => {\r\n e.stopPropagation();\r\n EC_Fmt.TriggerEvent(smallTool.querySelector(\".eChat-MessageWindowCopyTool\"), \"click\");\r\n }\r\n });\r\n editor.addButton(\"delaysend\", {\r\n title: \"Delay Send\",\r\n icon: \"ews-icon-senddelay\",\r\n onclick: (e) => {\r\n e.stopPropagation();\r\n EC_Fmt.TriggerEvent(smallTool.querySelector(\".eChat-MessageWindowSendDelayTool\"), \"click\");\r\n }\r\n });\r\n editor.addButton(\"mutegroup\", {\r\n title: \"Mute eChat Group\",\r\n icon: \"ews-icon-alert\",\r\n onclick: (e) => {\r\n e.stopPropagation();\r\n EC_Fmt.TriggerEvent(smallTool.querySelector(\".eChat-MessageWindowAlertTool\"), \"click\");\r\n }\r\n });\r\n editor.addButton(\"unmutegroup\", {\r\n title: \"Unmute eChat Group\",\r\n icon: \"ews-icon-DisablesVoice\",\r\n onclick: (e) => {\r\n e.stopPropagation();\r\n EC_Fmt.TriggerEvent(smallTool.querySelector(\".eChat-MessageWindowAlertTool\"), \"click\");\r\n }\r\n });\r\n },\r\n extended_valid_elements: \"strong\"\r\n };\r\n\r\n ECP.HTML.AddControl(ECP.HTML.ControlType.HtmlEdit);\r\n try {\r\n await ECP.HTML.LoadControls(true);\r\n _this.TextArea = (await EWS.TinymceEdit(\".eChat-MessageWindowTextArea\", \"\", null, Option))[0];\r\n _this.TextArea.contentDocument.querySelector(\"html\").style.height = \"115px\";\r\n _this.TextArea.iframeElement.style.height = \"130px\";\r\n _this.TextArea.editorContainer.style.height = \"165px\";\r\n } catch (ex) {\r\n EWS.Alert(`The rich text edit box failed to load. ${ex}`);\r\n }\r\n\r\n if (smallTool) {\r\n smallTool.classList.add(\"hidden\");\r\n }\r\n\r\n ECP.Dialog.HideLoading();\r\n };\r\n\r\n this.ResizeTextArea = async function () {\r\n // Task 1067218: DSDLink: eChat in the new Mobile Framework\r\n if (_this.FullWindow && !_this.TextArea && EChat.MainPageController.ClientOS === \"PC\") {\r\n await InitTextArea();\r\n } else if (!_this.FullWindow) {\r\n _this.Destroy();\r\n }\r\n\r\n const messageWindow = EChat.MainPageController.currentMessageWindow;\r\n if (messageWindow?.currentTab?.GroupInfo) {\r\n messageWindow.switchWindowType(messageWindow.currentTab && messageWindow.currentTab.GroupInfo.GroupType, false);\r\n }\r\n };\r\n\r\n this.Destroy = function () {\r\n if (_this.TextArea) {\r\n _this.TextArea.save();\r\n _this.TextArea.remove();\r\n _this.TextArea = null;\r\n }\r\n\r\n const smallTool = document.querySelector(\".eChat-MessageWindowInputTool\");\r\n if (smallTool) {\r\n smallTool.classList.remove(\"hidden\");\r\n }\r\n };\r\n // Task 1067218: DSDLink: eChat in the new Mobile Framework\r\n this.ResizeMobileFullWindow = function () {\r\n if (EChat.MainPageController.ClientOS !== \"PC\") {\r\n const EChatMainPageHead = document.getElementById(\"EChatMainPageHead\");\r\n const EChatMainPageContent = document.getElementById(\"EChatMainPageContent\");\r\n const EcahtTabHead = EChatMainPageHead.querySelector(\"#EChatTabHead\");\r\n const EcahtSearchText = EChatMainPageContent.querySelector(\"#EChatSearchText\");\r\n\r\n EChatMainPageContent.style.width = `100%`;\r\n // EcahtTabHead.style.width = `${parseInt(EChatMainPageHead.style.width) - 61}px`;\r\n // EcahtTabHead.style.display = \"flex\";\r\n // EcahtTabHead.style.JustifyContent = \"space-between\";\r\n\r\n EcahtTabHead.style.setProperty(\"display\", \"flex\");\r\n EcahtTabHead.style.setProperty(\"justify-content\", \"space-between\");\r\n EcahtTabHead.style.setProperty(\"width\", `${parseInt(window.innerWidth) - 82}px`);\r\n EcahtSearchText.style.width = \"99%\";\r\n }\r\n };\r\n };\r\n\r\n return new FullWindowController();\r\n}());\r\n\r\n// Task 524311: Unable to change picture for eChat group\r\n// eslint-disable-next-line no-unused-vars\r\nfunction AddMapMarker(lat, lng, zoom, address) {\r\n if (typeof (google) === \"undefined\") {\r\n ECP.Dialog.Alert(\"Failed to load Google Maps. Please refresh the page.\");\r\n return;\r\n }\r\n const myOptions = {\r\n zoom, mapTypeControl: false, center: new google.maps.LatLng(lat, lng), mapTypeId: google.maps.MapTypeId.ROADMAP\r\n };\r\n const map = new google.maps.Map(document.getElementById(\"MainLayout\"), myOptions);\r\n const marker = new google.maps.Marker({\r\n position: {\r\n lat: parseFloat(lat),\r\n lng: parseFloat(lng)\r\n },\r\n map\r\n });\r\n\r\n if (address) {\r\n const infowindow = new google.maps.InfoWindow({\r\n content: address\r\n });\r\n\r\n infowindow.open(map, marker);\r\n\r\n google.maps.event.addListener(marker, \"click\", () => {\r\n infowindow.open(map, marker);\r\n });\r\n }\r\n}\r\n\r\nEWS.Ready((EWS) => {\r\n // Task 646165: eChat: Threads in small eChat should have an echat icon next to them to allow you to jump into the existing echat group in the eChat dashboard\r\n if (EC_Fmt.GetURLParameters(window.location.href).AloneEChat === \"true\" || EC_Fmt.GetPageParameter(\"RunCodeItemTest\")) {\r\n return;\r\n }\r\n if (!IsImpersonateUser && window.parent === window) {\r\n requestIdleCallback(() => {\r\n // VerifyErrorAction\r\n let initFail = false;\r\n const VerifyErrorAction = function () {\r\n // eslint-disable-next-line no-console\r\n console.error(\"init EChat fail. Session Expired/ Network error.\");\r\n initFail = true;\r\n SocketUtil.on(\"connect\", () => {\r\n if (initFail) {\r\n initFail = false;\r\n // eslint-disable-next-line no-console\r\n console.log(\"init EChat.\");\r\n EChat.Util.initEChat().then(() => {\r\n EC_Fmt.TriggerEvent(document, \"EChatReady\");\r\n });\r\n }\r\n });\r\n };\r\n\r\n EWS.VerifySession(() => {\r\n EChat.Util.initEChat().then(() => {\r\n // Task 1027181: eChat: Redirect the old full screen eChat dashboard to the new full screen eChat\r\n EC_Fmt.TriggerEvent(document, \"EChatReady\");\r\n });\r\n }, false, VerifyErrorAction, VerifyErrorAction);\r\n\r\n EChat.Util.ListenerVisibility();\r\n });\r\n }\r\n});\r\n"]}