diff --git a/dali/dfu/dfurun.cpp b/dali/dfu/dfurun.cpp index 537bad7c106..72989b5ed34 100644 --- a/dali/dfu/dfurun.cpp +++ b/dali/dfu/dfurun.cpp @@ -667,7 +667,7 @@ class CDFUengine: public CInterface, implements IDFUengine if (write) auditflags |= DALI_LDAP_WRITE_WANTED; - SecAccessFlags perm; + SecAccessFlags perm = SecAccess_None; IClusterInfo *iClusterInfo = fd->queryClusterNum(0); const char *planeName = iClusterInfo->queryGroupName(); if (!isEmptyString(planeName)) @@ -697,6 +697,7 @@ class CDFUengine: public CInterface, implements IDFUengine Owned env = factory->openEnvironment(); if (env->isDropZoneRestrictionEnabled()) throw makeStringException(-1,"Empty plane name."); + perm = SecAccess_Full; //Not able to check DropZone permissions without a plane name #else throw makeStringException(-1,"Unexpected empty plane name."); // should never be the case in containerized setups #endif diff --git a/esp/src/eclwatch/VizWidget.js b/esp/src/eclwatch/VizWidget.js index 4708c10b94c..6ff09e500b7 100644 --- a/esp/src/eclwatch/VizWidget.js +++ b/esp/src/eclwatch/VizWidget.js @@ -391,7 +391,7 @@ define([ refreshData: function () { if (this.limit.get("value") > this.rows.length) { - var result = this.wu.results[this.params.Sequence]; + var result = this.wu.results.filter(r => r.Sequence == this.params.Sequence)[0]; var context = this; result.fetchNRows(this.rows.length, this.limit.get("value")).then(function (response) { context.rows = context.rows.concat(response); diff --git a/esp/src/src-react/components/Results.tsx b/esp/src/src-react/components/Results.tsx index f867da58f61..58d6ac9f890 100644 --- a/esp/src/src-react/components/Results.tsx +++ b/esp/src/src-react/components/Results.tsx @@ -91,10 +91,22 @@ export const Results: React.FunctionComponent = ({ key: "open legacy", text: nlsHPCC.OpenLegacyMode, disabled: !uiState.hasSelection, iconProps: { iconName: "WindowEdit" }, onClick: () => { if (selection.length === 1) { - window.location.href = `#/workunits/${wuid}/outputs/${selection[0].Name}/legacy`; + window.location.href = `#/workunits/${wuid}/outputs/${selection[0].Name}?__legacy`; } else { for (let i = selection.length - 1; i >= 0; --i) { - window.open(`#/workunits/${wuid}/outputs/${selection[i].Name}/legacy`, "_blank"); + window.open(`#/workunits/${wuid}/outputs/${selection[i].Name}?__legacy`, "_blank"); + } + } + } + }, + { + key: "visualize", text: nlsHPCC.Visualize, disabled: !uiState.hasSelection, iconProps: { iconName: "BarChartVertical" }, + onClick: () => { + if (selection.length === 1) { + window.location.href = `#/workunits/${wuid}/outputs/${selection[0].Sequence}?__visualize`; + } else { + for (let i = selection.length - 1; i >= 0; --i) { + window.open(`#/workunits/${wuid}/outputs/${selection[i].Sequence}?__visualize`, "_blank"); } } } diff --git a/esp/src/src-react/components/WorkunitDetails.tsx b/esp/src/src-react/components/WorkunitDetails.tsx index c09f3ef5806..8b17f47aa53 100644 --- a/esp/src/src-react/components/WorkunitDetails.tsx +++ b/esp/src/src-react/components/WorkunitDetails.tsx @@ -11,18 +11,19 @@ import { DojoAdapter } from "../layouts/DojoAdapter"; import { pivotItemStyle } from "../layouts/pivot"; import { pushUrl } from "../util/history"; import { WorkunitPersona } from "./controls/StateIcon"; -import { Results } from "./Results"; -import { Variables } from "./Variables"; -import { SourceFiles } from "./SourceFiles"; import { Helpers } from "./Helpers"; +import { IFrame } from "./IFrame"; +import { Logs } from "./Logs"; +import { Metrics } from "./Metrics"; import { Queries } from "./Queries"; import { Resources } from "./Resources"; +import { Result } from "./Result"; +import { Results } from "./Results"; import { FetchEditor, WUXMLSourceEditor } from "./SourceEditor"; +import { SourceFiles } from "./SourceFiles"; +import { Variables } from "./Variables"; import { Workflows } from "./Workflows"; -import { Metrics } from "./Metrics"; import { WorkunitSummary } from "./WorkunitSummary"; -import { Result } from "./Result"; -import { Logs } from "./Logs"; const logger = scopedLogger("src-react/components/WorkunitDetails.tsx"); @@ -84,7 +85,9 @@ export const WorkunitDetails: React.FunctionComponent = ({ {state ? - : + queryParams.hasOwnProperty("__legacy") ?