Skip to content

Commit

Permalink
Merge pull request #92 from Jaspersoft/error-callback-use-viz
Browse files Browse the repository at this point in the history
feature(jv-tools): enhance useVisualize hook to accept error callback
  • Loading branch information
grantbacon-jaspersoft authored Dec 2, 2024
2 parents de8475a + dac456d commit df1c459
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 8 deletions.
7 changes: 6 additions & 1 deletion packages/demo-input-controls/src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import {
Authentication,
InputControlProperties,
useVisualize,
VisualizeGenericError,
} from "@jaspersoft/jv-tools";
import { useEffect, useState } from "react";
import ReportPanel from "./report/ReportPanel.tsx";
Expand All @@ -27,8 +28,12 @@ const singleSelectReportUri = "/public/Samples/Reports/9g.CustomerDetailReport";
const visualizeUrl =
"https://mobiledemo.jaspersoft.com/jasperserver-pro/client/visualize.js";

const errorCallback = (errorCaught: Error | VisualizeGenericError | string) => {
console.log("check the error! ", errorCaught);
};

function App() {
const vContainer = useVisualize(visualizeUrl, myAuth);
const vContainer = useVisualize(visualizeUrl, myAuth, { errorCallback });
const [controlBuffer, setControlBuffer] =
useState<InputControlProperties[]>();
const [vReport, setVReport] = useState<any>();
Expand Down
1 change: 1 addition & 0 deletions packages/jv-tools/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { InputControlProperties } from "./src/input-controls";
export * from "./src/input-controls";
export type { useVisualizeConfig } from "./src/visualize/hooks/useVisualize.types";

export type Authentication = {
url?: string;
Expand Down
30 changes: 23 additions & 7 deletions packages/jv-tools/src/visualize/hooks/useVisualize.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,26 @@ import {
visualizejsLoader,
VisualizeFactory,
Authentication,
useVisualizeConfig,
VisualizeGenericError,
} from "../../..";

const useVisualize = (uri: string, auth?: Authentication) => {
const logOrTriggerError = (
config: useVisualizeConfig | undefined,
error: Error | VisualizeGenericError | string,
) => {
if (config?.errorCallback) {
config?.errorCallback(error);
} else {
console.error(String(error));
}
};

const useVisualize = (
uri: string,
auth: Authentication,
config?: useVisualizeConfig,
) => {
const [vContainer, setVContainer] = useState<{ v: VisualizeClient } | null>(
null,
);
Expand All @@ -21,14 +38,13 @@ const useVisualize = (uri: string, auth?: Authentication) => {
(v: VisualizeClient) => {
setVContainer({ v });
},
(e: any) => {
console.error(String(e));
},
(e: Error | VisualizeGenericError | string) =>
logOrTriggerError(config, e),
);
})
.catch((error: Error) => {
console.error("Error loading visualize.js: ", error);
});
.catch((error: Error | VisualizeGenericError | string) =>
logOrTriggerError(config, error),
);
}, [uri]);

return vContainer;
Expand Down
11 changes: 11 additions & 0 deletions packages/jv-tools/src/visualize/hooks/useVisualize.types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
/*
* Copyright © 2024. Cloud Software Group, Inc.
* This file is subject to the license terms contained
* in the license file that is distributed with this file.
*/

import { VisualizeGenericError } from "../../..";

export interface useVisualizeConfig {
errorCallback: (error: Error | VisualizeGenericError | string) => void;
}

0 comments on commit df1c459

Please sign in to comment.