{"version":3,"file":"FileExport.min.js","sources":["EncompassWebServices/Controls/FileExport.js"],"sourcesContent":["\"use strict\";\r\n\r\nconst BC_FileExport = function (EWS) {\r\n this.EWS = EWS;\r\n this.GoogleAttempts = 0;\r\n\r\n const me = this;\r\n let IsSubmit = false;\r\n\r\n EWS.Command.AddMenu(\"BC_FileExport_ExportMenu\", (control, name, menu, callback) => {\r\n menu.innerHTML = \"\";\r\n\r\n callback(control, menu);\r\n }, (control, name, menu, menuArgs) => {\r\n if (!IsSubmit) {\r\n // Task 969413: JavaScript Error: DashboardID=100120 (0) - TypeError: Cannot read property 'replaceChild' of null\r\n IsSubmit = true;\r\n menu.style.display = \"none\";\r\n menu.innerHTML = \"\";\r\n\r\n const processUrlCallback = menuArgs.processUrlCallback;\r\n const processGoogleCallback = menuArgs.processGoogleCallback;\r\n // Task 916478: Report Print: Print Preview is different in 21.02 than in 20.09. Printing the same report Driver Manifest 5.1 has different layouts in different ECP\r\n let customOptions = menuArgs.customOptions;\r\n\r\n EWS.VerifySession(() => {\r\n const myRequest = new ECP.EC_Request(\"FileExport_ExportMenu\");\r\n // Task 757605: I still have an issue with one of my other saved reports. When I try to export the file I get an error code 'error in promise'\r\n myRequest.AddRequestVariable(\"Url\", menuArgs.url, ECP.EC_Verb.Post);\r\n if (!EC_Fmt.isNull(menuArgs.formats)) {\r\n myRequest.AddRequestVariable(\"Formats\", menuArgs.formats);\r\n }\r\n myRequest.Submit().then((result) => {\r\n let html = \"\";\r\n const options = EWS.Json.Query(result, \"$.options[?(@.format != 'WebQuery')]\");\r\n\r\n for (let i = 0; i < options.length; i++) {\r\n html += `
`\r\n + `
`\r\n + `
${options[i].name}
`\r\n + \"
\";\r\n }\r\n\r\n if (customOptions) {\r\n if (!Array.isArray(customOptions)) {\r\n customOptions = [customOptions];\r\n }\r\n for (let i = 0; i < customOptions.length; i++) {\r\n const option = customOptions[i];\r\n\r\n html += `
`\r\n + `
`\r\n + `
${option.name}
`\r\n + \"
\";\r\n }\r\n }\r\n\r\n const query = EWS.Json.Query(result, \"$.options[?(@.format == 'WebQuery')]\")[0];\r\n\r\n if (query) {\r\n html += \"
\"\r\n + `
`\r\n + `
${query.name}
`\r\n + \"
\";\r\n }\r\n\r\n menu.innerHTML = html;\r\n menu.style.display = \"block\";\r\n\r\n menu = EC_Fmt.RemoveAllEventListeners(menu);\r\n\r\n menu.addEventListener(\"click\", (event) => {\r\n const trigger = event.target.closest(\".ews-menu-item\");\r\n\r\n if (trigger) {\r\n const format = trigger.getAttribute(\"format\");\r\n let url = trigger.getAttribute(\"url\");\r\n\r\n if (processUrlCallback) {\r\n url = processUrlCallback(url, format);\r\n }\r\n\r\n // Task 1033298: Adding Google Analytics as a default feature of dashboards\r\n gtag(\"event\", \"share\", { content_type: format });\r\n\r\n switch (format) {\r\n case \"Google\":\r\n me.AuthGoogle(url, null, processGoogleCallback);\r\n break;\r\n\r\n case \"Print\":\r\n Print_Preview(trigger.getAttribute(\"url\"), \"XLSX\", null, null, processUrlCallback);\r\n break;\r\n\r\n case \"WebQuery\":\r\n const PostData = new FormData();\r\n\r\n PostData.append(\"Format\", \"WebQuery\");\r\n PostData.append(\"Lifetime\", \"180\");\r\n PostData.append(\"Impersonate\", \"True\");\r\n PostData.append(\"Url\", url.replace(\"Format=WebQuery\", \"\"));\r\n\r\n EWS.VerifySession(() => {\r\n fetch(\"api?APICommand=QuickLinkAjax&Requests=Generate\", {\r\n credentials: \"same-origin\",\r\n method: \"POST\",\r\n body: PostData\r\n }).then(response => response.json()).then((responseJson) => {\r\n window.location.href = responseJson.url;\r\n });\r\n });\r\n break;\r\n case \"BrowserPrint\":\r\n menu.style.display = \"none\";\r\n window.print();\r\n break;\r\n\r\n case \"Custom\":\r\n const sequence = EC_Fmt.Null2ZeroInt(trigger.getAttribute(\"sequence\"));\r\n const option = customOptions[sequence];\r\n if (option?.processCallback) {\r\n option.processCallback();\r\n break;\r\n }\r\n break;\r\n\r\n default:\r\n let title = document.getElementsByTagName(\"title\");\r\n if (title.length > 0) {\r\n title = title[0].innerHTML;\r\n }\r\n EC_Fmt.DownloadFileFromURL(url, EC_Fmt.Null2EmptyStr(title));\r\n\r\n // Task 661168: Adding a download file animation\r\n menu.style.display = \"block\";\r\n\r\n const originalIcon = trigger.querySelector(\"div.ews-menu-icon\");\r\n const originalPosition = originalIcon.getBoundingClientRect();\r\n\r\n const animationContainer = document.createElement(\"div\");\r\n animationContainer.classList.add(\"ews-menu\");\r\n animationContainer.setAttribute(\"style\", `position:fixed;display:block;top:${originalPosition.top}px;left:${originalPosition.left}px;z-index:10001;color:var(--neutral-120)`);\r\n const icon = document.createElement(\"div\");\r\n animationContainer.appendChild(icon);\r\n\r\n document.body.appendChild(animationContainer);\r\n icon.setAttribute(\"style\", `position:fixed;display:block;top:${originalPosition.top}px;left:${originalPosition.left}px;z-index:10001;color:var(--neutral-120)`);\r\n icon.classList = originalIcon.classList;\r\n icon.innerHTML = ` ${title}`;\r\n requestAnimationFrame(() => {\r\n icon.classList.add(\"ews-menu-icon-download-animation\");\r\n setTimeout(() => {\r\n menu.style.display = \"none\";\r\n document.body.removeChild(animationContainer);\r\n }, 1000);\r\n });\r\n\r\n break;\r\n }\r\n // Task 694365: After clicking Export --> Print, do not hide\r\n if (menu) {\r\n menu.style.display = \"none\";\r\n }\r\n }\r\n });\r\n IsSubmit = false;\r\n });\r\n }, true, null, () => {\r\n // Task 604081: Export and print buttons do nothing on Quicklinks reports - Add option to login when clicking those buttons\r\n ECP.Dialog.ShowDialog(\"Confirm\", `
You are impersonating a user.Do you want to leave and go back to your login?
`, {\r\n cancelButtonTitle: \"Cancel\",\r\n confirmButtonTitle: \"OK\",\r\n confirmButtonAction: () => {\r\n window.location.href = `Home?DashboardID=${ECP.CommonDashboards.LogOn}&DestURL=${encodeURIComponent(window.location.href)}`;\r\n }\r\n });\r\n });\r\n }\r\n });\r\n};\r\n\r\nBC_FileExport.prototype.AuthGoogle = function (url, login, processGoogleCallback) {\r\n if (EC_Fmt.isMobile) {\r\n ECP.Dialog.HideLoading();\r\n url = url.replace(\"Format=Google\", \"Format=Excel\");\r\n ECP.Dialog.Alert(\"
To export to Google Drive from mobile:\"\r\n + `
1) Select 'Export to Excel'`\r\n + \"
2) Click the 'Share' button in the browser\"\r\n + \"
3) Select 'Copy to Sheets'\"\r\n + \"
\"\r\n + \"
This requires the Google Sheets app to already be installed.
\");\r\n } else {\r\n const me = this;\r\n\r\n if (this.GoogleAttempts < 5) {\r\n EWS.Load(\"https://apis.google.com/js/client.js?onload=handleClientLoad\", () => {\r\n if (gapi?.client && gapi?.auth) {\r\n const myRequest = new ECP.EC_Request(\"FileExport_GetKeys\");\r\n myRequest.Submit().then((result) => {\r\n me.Keys = result;\r\n\r\n // Task 705496: Cannot Export to Google Drive, or perform Table Import from Google Drive.\r\n gapi.auth2.authorize({\r\n client_id: me.Keys.google.client,\r\n scope: me.Keys.google.scope\r\n }, (googleResult) => {\r\n if (googleResult.error) {\r\n me.GoogleAttempts += 1;\r\n ECP.Dialog.HideLoading();\r\n ECP.Dialog.Alert(\"You Must Login to a Google Account in order to export to Google Drive.
Login via the popup.
If no popup is displayed, make sure popups are not blocked for this site.
\");\r\n return;\r\n }\r\n\r\n if (googleResult.access_token) {\r\n me.GoogleAttempts = 0;\r\n const tokenName = processGoogleCallback ? \"GoogleToken\" : \"Token\";\r\n\r\n if (url.indexOf(\"?\") >= 0 && !url.endsWith(\"&\")) {\r\n url += `&${tokenName}=${googleResult.access_token}`;\r\n } else if (url.indexOf(\"?\") >= 0) {\r\n url += `${tokenName}=${googleResult.access_token}`;\r\n } else {\r\n url += `?${tokenName}=${googleResult.access_token}`;\r\n }\r\n\r\n if (processGoogleCallback) {\r\n fetch(url, {\r\n credentials: \"same-origin\"\r\n }).then(response => response.json()).then((data) => {\r\n ECP.Dialog.HideLoading();\r\n processGoogleCallback(data);\r\n });\r\n } else {\r\n window.location.href = url;\r\n }\r\n }\r\n });\r\n\r\n gapi.client.setApiKey(me.Keys.google.app);\r\n });\r\n } else {\r\n ECP.Dialog.HideLoading();\r\n ECP.Dialog.Alert(\"Google Drive is unavailable. Please try again later.\");\r\n }\r\n });\r\n } else {\r\n ECP.Dialog.HideLoading();\r\n ECP.Dialog.Alert(\"Unable to login to Google.\");\r\n }\r\n }\r\n};\r\n\r\nBC_FileExport.prototype.Google = function (file, name, callback, login) {\r\n let immediate = true;\r\n\r\n if (login) {\r\n immediate = false;\r\n }\r\n\r\n const me = this;\r\n\r\n if (this.GoogleAttempts < 5) {\r\n EWS.Load(\"https://apis.google.com/js/client.js?onload=handleClientLoad\", () => {\r\n if (gapi?.client && gapi?.auth) {\r\n const myRequest = new ECP.EC_Request(\"FileExport_GetKeys\");\r\n myRequest.Submit().then((googleResult) => {\r\n me.Keys = googleResult;\r\n\r\n gapi.auth.authorize({\r\n client_id: me.Keys.google.client,\r\n scope: me.Keys.google.scope,\r\n immediate\r\n }, (googleAuthResult) => {\r\n me.GoogleAttempts += 1;\r\n\r\n if (googleAuthResult && !googleAuthResult.error) {\r\n me.GoogleAttempts = 0;\r\n\r\n if (googleAuthResult.access_token) {\r\n me.UploadGoogle(file, name, googleAuthResult.access_token, callback);\r\n }\r\n } else {\r\n me.Google(file, name, callback, true);\r\n }\r\n });\r\n\r\n gapi.client.setApiKey(me.Keys.google.app);\r\n });\r\n } else {\r\n ECP.Dialog.Alert(\"Google Drive is unavailable. Please try again later.\");\r\n }\r\n });\r\n } else {\r\n ECP.Dialog.Alert(\"Unable to login to Google.\");\r\n }\r\n};\r\n\r\nBC_FileExport.prototype.UploadGoogle = function (file, name, token, callback) {\r\n ECP.Dialog.ShowLoading();\r\n\r\n const myRequest = new ECP.EC_Request(\"FileExport_UploadGoogle\");\r\n myRequest.AddRequestVariable(\"File\", file, ECP.EC_Verb.Post);\r\n myRequest.AddRequestVariable(\"Token\", token, ECP.EC_Verb.Post);\r\n myRequest.Submit().then((googleResult) => {\r\n ECP.Dialog.HideLoading();\r\n\r\n try {\r\n googleResult = JSON.parse(googleResult);\r\n\r\n if (googleResult.status === \"success\") {\r\n if (!EC_Fmt.isNull(callback)) {\r\n callback();\r\n }\r\n } else {\r\n ECP.Dialog.Alert(googleResult.message);\r\n }\r\n } catch (error) {\r\n ECP.Dialog.Alert(`${error}\\n${googleResult}`);\r\n }\r\n }).catch((error) => {\r\n ECP.Dialog.HideLoading();\r\n throw error;\r\n });\r\n};\r\n\r\nBC_FileExport.prototype.ExportMenu = function (trigger, url, formats, processUrlCallback, processGoogleCallback, customOptions) {\r\n EWS.Command.ShowMenu(\"BC_FileExport_ExportMenu\", trigger, {\r\n url,\r\n formats,\r\n processUrlCallback,\r\n processGoogleCallback,\r\n customOptions\r\n });\r\n};\r\n\r\n(function (EWS) {\r\n // eslint-disable-next-line no-shadow\r\n EWS.Ready((EWS) => {\r\n EWS.FileExport = new BC_FileExport(EWS);\r\n });\r\n}(EWS));\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction FileExport_Menu(trigger, url, formats, processUrlCallback, processGoogleCallback, customOptions) {\r\n if (EWS?.FileExport) {\r\n EWS.FileExport.ExportMenu(trigger, url, formats, processUrlCallback, processGoogleCallback, customOptions);\r\n }\r\n}\r\n"],"names":["BC_FileExport","EWS","this","GoogleAttempts","me","let","IsSubmit","Command","AddMenu","control","name","menu","callback","innerHTML","menuArgs","style","display","processUrlCallback","processGoogleCallback","customOptions","VerifySession","myRequest","ECP","EC_Request","AddRequestVariable","url","EC_Verb","Post","EC_Fmt","isNull","formats","Submit","then","html","options","Json","Query","result","i","length","format","temp","document","getElementById","getAttribute","icon","Array","isArray","option","HTMLEncode","query","RemoveAllEventListeners","addEventListener","trigger","event","target","closest","gtag","content_type","AuthGoogle","Print_Preview","PostData","FormData","append","replace","fetch","credentials","method","body","response","json","window","location","href","responseJson","print","sequence","Null2ZeroInt","processCallback","title","getElementsByTagName","DownloadFileFromURL","Null2EmptyStr","originalIcon","querySelector","originalPosition","getBoundingClientRect","animationContainer","createElement","classList","add","setAttribute","top","left","appendChild","requestAnimationFrame","setTimeout","removeChild","Dialog","ShowDialog","cancelButtonTitle","confirmButtonTitle","confirmButtonAction","CommonDashboards","LogOn","encodeURIComponent","prototype","login","isMobile","HideLoading","Alert","Load","gapi","client","auth","Keys","auth2","authorize","client_id","google","scope","googleResult","error","access_token","tokenName","indexOf","endsWith","data","setApiKey","app","Google","file","immediate","googleAuthResult","UploadGoogle","token","ShowLoading","JSON","parse","status","message","catch","ExportMenu","ShowMenu","Ready","FileExport","FileExport_Menu"],"mappings":"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"}