///By David Wyatt let sDefinition = ""; let sDefinitionParsed = ""; let oReport; let oLiveReport; let sCustomList = null; let oHTML; let aConnectionTier=aConnectionTierBackup.value;; let i = 0; let iDefinitionFind = 0; let iDefinitionCount = 0; let oSaved; let oSavedDef; let oRatings; let oNaming; let aComplexity; let aScoring; let oConfigReference; let oSolution; let aEnvironmentVar=[]; let sEnvironment=""; let oDependencies; let bUpdate=false; let aExceptions=[]; let aConnectors=[]; let bFirstFlow=false; let sPreviousFlow=""; const iResetStorage = 8; const regExpFileID = new RegExp("[A-Z0-9]{8}-([A-Z0-9]{4}-){3}[A-Z0-9]{12}","m"); const sHtml = '
'; const pLoading = document.getElementById("loading"); const spanVersion = document.getElementById("version"); const divCSV = document.getElementById("csvDropdown"); const divAdmin = document.getElementById("admin"); const butReview = document.getElementById("review-button"); const butReport = document.getElementById("report-button"); const butSolution = document.getElementById("solution-button"); const butShortcut = document.getElementById("shortcut-button"); const divDivider = document.getElementById("solution-divider"); const butData = document.getElementById("data-button"); const butDiagram = document.getElementById("diagram-button"); const butDefinition = document.getElementById("definition-button"); const lSolution = document.getElementById("solution-container"); const tSolution =document.getElementById("solution-title"); const iLoad = document.getElementById("loadSaved"); const divConfig = document.getElementById("admin"); const buLiveFlow = document.getElementById("loadLive"); const butExcept = document.getElementById("exception-button"); const divSolutionName = document.getElementById("solution-name"); const butSolutionDiagram = document.getElementById("solutionDiagram-button"); butSolutionDiagram.addEventListener("click", OpenSolutionDiagram); document.getElementById("review-button").addEventListener("click", OpenReview); document.getElementById("report-button").addEventListener("click", OpenReport); document.getElementById("data-button").addEventListener("click", OpenData); document.getElementById("diagram-button").addEventListener("click", OpenDiagram); document.getElementById("definition-button").addEventListener("click", OpenDefinition); document.getElementById("bugEmail").addEventListener("click", OpenBug); document.getElementById("restConfigs").addEventListener("click", ResetConfigs); document.getElementById("actionsCSVdownload").addEventListener("click", csvAction); document.getElementById("variablesCSVdownload").addEventListener("click", csvVariables); document.getElementById("connectionsCSVdownload").addEventListener("click", csvConnections); document.getElementById("loadSaved").addEventListener("click", loadSavedFlow); document.getElementById("compareFlows").addEventListener("click", OpenCompare); document.getElementById("addCompare-button").addEventListener("click", AddCompare); butExcept.addEventListener("click", OpenException); butSolution.addEventListener("click", OpenSolution); butShortcut.addEventListener("click", OpenShortcut); //beta const urlParams = new URLSearchParams(window.location.search); let sVersion = urlParams.get('version') || ""; if(sVersion=="beta"){ document.getElementById("version").innerText+="-Beta"; }else{ sVersion=localStorage.getItem("version"); } if(sVersion=="beta"){ document.getElementById("version").innerText+="-Beta"; } loadPlatform(pLoading) function DownloadCSV(sTable, data) { const oTable = aDownloadConfig.find((item) => item.Name == sTable); //const data=sessionStorage.getItem(data); let sName=oReport.name if (sName == false) { sName = "Flow"; } if (oTable && data != null) { if (sTable == "Actions") { let aTemp=oReport.actionArray.slice(0); aTemp.forEach((object) => { object.detail=object.detail.replaceAll(',','|'); object.notes=object.notes.replaceAll(',','|'); object.filter=object.filter.replaceAll(',','|'); object.secure=object.secure.replaceAll(',','|'); object.retry=object.retry.replaceAll(',','|'); delete object["environmentVariables"]; delete object["environmentB"]; delete object["branch"]; }) exportCSVFile( oTable.headers, aTemp, sName + "-" + oTable.Name ); } else if (sTable == "Variables") { let aTemp=oReport.variableArray.slice(0); aTemp.forEach((object) => { object.value=object.value.replaceAll(',','|'); object.value=object.value.substr(0,200); }) exportCSVFile( oTable.headers, aTemp, sName + "-" + oTable.Name ); } else if (sTable == "Connections") { exportCSVFile( oTable.headers, oReport.connectionArray, sName + "-" + oTable.Name ); } } } function OpenSolutionDiagram() { let sSolutionDiagram="#direction: right\n#fillArrows: true\n#lineWidth: 2\n#fill:#569AE5\n#background: white\n#acyclicer: greedy\n#ranker: tight-tree\n#.data: visual=database fill=#EBDAF9\n#.trigger: visual=roundrect fill=#569AE5\n#.if: visual=rhomb fill=#2596be\n#.switch: visual=ellipse fill=#2596be\n#.scope: visual=frame fill=#808080\n#.foreach: visual=transceiver fill=#00C1A0\n#.until: visual=sender fill=#00C1A0\n#.var: visual=input fill=#9925be\n#.terminate: visual=receiver fill=#cc4747\n#.var: visual=input fill=#EBDAF9\n"; let aAllActions=[]; let aFlowIds=[] let aLinks=[]; aExceptions.forEach((flow) => { aFlowIds.push({id:flow.id,name:flow.name}); flow.actionObjectArray.forEach((action) => { action.flowName=flow.name; action.flowId=flow.id; if(action.type=="Workflow"){ const oAction=JSON.parse(action.object) action.childflow=oAction.inputs.host.workflowReferenceName }else{ action.childflow=""; } aAllActions.push(action); }) }) const aChildFlows=aAllActions.filter((action) => action.type == "Workflow"); let sFilter=prompt("Would you like to filter out any flows containing search string?").toUpperCase(); if (sFilter==null || sFilter==""){sFilter="!£$%&^*&(()_)(¬`"} aFlowIds.forEach((flow) => { aChildFlows.filter((action) => action.childflow.toUpperCase() == flow.id).forEach((action) => { const oChildName=aFlowIds.find((item) => item.id == action.flowId.toUpperCase()); let sChildName=""; if(oChildName!=undefined){ sChildName=oChildName.name+"\n"+oChildName.id; }else{ sChildName=action.childflow; } if(!flow.name.toUpperCase().includes(sFilter) && !sChildName.toUpperCase().includes(sFilter)){ aLinks.push({link:"["+flow.name+"\n"+flow.id+"]<:-["+sChildName+"]\n"}) } }) }) const aUniqueLinks=getUniqueValues(aLinks, "link"); if(aUniqueLinks.length>0){ aUniqueLinks.forEach((link) => { sSolutionDiagram+=link; }) i = sessionStorage.getItem("windowCounter"); sessionStorage.setItem("solutionDiagram", JSON.stringify({svg:nomnoml.renderSvg(sSolutionDiagram),name:oReport.name})); const newWindow = window.open("Solution Diagram.html", "Solution Diagram" + new Date().getTime() + i); sessionStorage.setItem("windowCounter", i); }else{ pLoading.innerText="No Child flows found"; pLoading.style.color="red"; } } function OpenException() { SaveData(); sessionStorage.setItem("exception", createException(aExceptions,oNaming.data,sExceptionTemplate,oDependencies)); i = sessionStorage.getItem("windowCounter"); const newWindow = window.open("exception.html", "Exceptions" + new Date().getTime() + i); i++; sessionStorage.setItem("windowCounter", i); } function OpenReview() { SaveData(); sessionStorage.setItem("actions", JSON.stringify(removeCircularReferences(oReport.actionArray))); sessionStorage.setItem("review", oHTML.review); sessionStorage.setItem("references", oHTML.references); i = sessionStorage.getItem("windowCounter"); const newWindow = window.open("review.html", "Review" + new Date().getTime() + i); i++; sessionStorage.setItem("windowCounter", i); } function OpenReport() { SaveData(); sessionStorage.setItem("report", oHTML.report); i = sessionStorage.getItem("windowCounter"); const newWindow = window.open("report.html", "Report" + new Date().getTime() + i); i++; sessionStorage.setItem("windowCounter", i); } function OpenDiagram() { SaveData(); sessionStorage.setItem("actions", JSON.stringify(removeCircularReferences(oReport.actionArray))); sessionStorage.setItem("diagram", createDiagram(oReport.actionArray,oReport.name,oReport.trigger,oReport.actionObjectArray)); sessionStorage.setItem("name", oReport.name); sessionStorage.setItem("id", oReport.id); const oTrigger={ trigger: oReport.trigger, triggerData:oReport.triggerData, triggerParam:oReport.triggerParam, triggerConfig:oReport.triggerConfig, triggerExpress:oReport.triggerExpress, triggerInputs:oReport.triggerInputs, triggerRecur:oReport.triggerRecur } sessionStorage.setItem("trigger", JSON.stringify(oTrigger)); window.open('diagram.html'); } function OpenData() { SaveData(); i = sessionStorage.getItem("windowCounter"); const newWindow = window.open("", "Data" + new Date().getTime() + i); newWindow.document.write( sHtml + 'Schema:https://github.com/davedidisco/Auto-Review-Self-Config/blob/main/AutoReview-Schema.json
' +
JSON.stringify(oReport, undefined, 2) +
""
);
i++;
sessionStorage.setItem("windowCounter", i);
}
function OpenDefinition() {
SaveData();
i = sessionStorage.getItem("windowCounter");
const newWindow = window.open("", "Definition" + new Date().getTime() + i);
newWindow.document.write(
sHtml +
'' +
JSON.stringify(sDefinitionParsed, undefined, 2) +
"