Skip to content

Commit

Permalink
feat(): clear evaluation & transform refs BRICK_STORE-1486
Browse files Browse the repository at this point in the history
  • Loading branch information
morance committed May 27, 2020
1 parent 3c284d4 commit 98d93b6
Show file tree
Hide file tree
Showing 6 changed files with 79 additions and 4 deletions.
1 change: 1 addition & 0 deletions src/hook/emit.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ export function emit(data: EmitData): void {
try {
const repo: any[] = [];
const payload = dehydrate(data.payload, repo);
console.log(data);
window.postMessage(
{
source: MESSAGE_SOURCE_HOOK,
Expand Down
24 changes: 23 additions & 1 deletion src/panel/components/EvaluationsPanel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,15 @@ import classNames from "classnames";
import { PanelSelector } from "./PanelSelector";
import { useEvaluationsContext } from "../libs/EvaluationsContext";
import { PropList, PropItem } from "./PropList";
import { Storage } from "../libs/Storage";

export function EvaluationsPanel(): React.ReactElement {
const { evaluations, setEvaluations } = useEvaluationsContext();
const {
evaluations,
setEvaluations,
preserveLogs,
savePreserveLogs,
} = useEvaluationsContext();
const [stringWrap, setStringWrap] = React.useState(false);
const [q, setQ] = React.useState<string>();

Expand Down Expand Up @@ -43,6 +49,17 @@ export function EvaluationsPanel(): React.ReactElement {
[]
);

const handleToggleLogs = React.useCallback(
(event: React.FormEvent<HTMLInputElement>) => {
savePreserveLogs((event.target as HTMLInputElement).checked);
Storage.setItem(
"preserveLogs",
(event.target as HTMLInputElement).checked
);
},
[]
);

return (
<div
className={classNames("panel evaluations-panel", {
Expand All @@ -65,6 +82,11 @@ export function EvaluationsPanel(): React.ReactElement {
/>
</div>
<div className="toolbar-group">
<Switch
checked={preserveLogs}
label="preserve logs"
onChange={handleToggleLogs}
/>
<Switch
checked={stringWrap}
label="String Wrap"
Expand Down
30 changes: 28 additions & 2 deletions src/panel/components/Layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,14 @@ export function Layout(): React.ReactElement {
Storage.getItem("selectedPanel") ?? "Bricks"
);
const [evaluations, setEvaluations] = React.useState<Evaluation[]>([]);
const [preserveLogs, savePreserveLogs] = React.useState<boolean>(
Storage.getItem("preserveLogs") ?? true
);
const [transformations, setTransformations] = React.useState<
Transformation[]
>([]);

console.log(preserveLogs);
React.useEffect(() => {
function onMessage(event: MessageEvent): void {
let data: DehydratedPayload;
Expand All @@ -33,6 +37,12 @@ export function Layout(): React.ReactElement {
((data = event.data.payload), data?.type === "evaluation")
) {
setEvaluations((prev) => prev.concat(hydrate(data.payload, data.repo)));
} else if (
event.data?.source === MESSAGE_SOURCE_HOOK &&
((data = event.data.payload), data?.type === "locationChange") &&
!(Storage.getItem("preserveLogs") ?? true)
) {
setEvaluations([]);
}
}
window.addEventListener("message", onMessage);
Expand All @@ -49,6 +59,12 @@ export function Layout(): React.ReactElement {
setTransformations((prev) =>
prev.concat(hydrate(data.payload, data.repo))
);
} else if (
event.data?.source === MESSAGE_SOURCE_HOOK &&
((data = event.data.payload), data?.type === "locationChange") &&
!(Storage.getItem("preserveLogs") ?? true)
) {
setTransformations([]);
}
}
window.addEventListener("message", onMessage);
Expand All @@ -73,13 +89,23 @@ export function Layout(): React.ReactElement {
>
{selectedPanel === "Evaluations" ? (
<EvaluationsContext.Provider
value={{ evaluations, setEvaluations }}
value={{
evaluations,
setEvaluations,
preserveLogs,
savePreserveLogs,
}}
>
<EvaluationsPanel />
</EvaluationsContext.Provider>
) : selectedPanel === "Transformations" ? (
<TransformationsContext.Provider
value={{ transformations, setTransformations }}
value={{
transformations,
setTransformations,
preserveLogs,
savePreserveLogs,
}}
>
<TransformationsPanel />
</TransformationsContext.Provider>
Expand Down
24 changes: 23 additions & 1 deletion src/panel/components/TransformationsPanel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,15 @@ import classNames from "classnames";
import { PanelSelector } from "./PanelSelector";
import { useTransformationsContext } from "../libs/TransformationsContext";
import { PropItem } from "./PropList";
import { Storage } from "../libs/Storage";

export function TransformationsPanel(): React.ReactElement {
const { transformations, setTransformations } = useTransformationsContext();
const {
transformations,
setTransformations,
preserveLogs,
savePreserveLogs,
} = useTransformationsContext();
const [stringWrap, setStringWrap] = React.useState(false);

const handleClear = React.useCallback(() => {
Expand All @@ -20,6 +26,17 @@ export function TransformationsPanel(): React.ReactElement {
[]
);

const handleToggleLogs = React.useCallback(
(event: React.FormEvent<HTMLInputElement>) => {
savePreserveLogs((event.target as HTMLInputElement).checked);
Storage.setItem(
"preserveLogs",
(event.target as HTMLInputElement).checked
);
},
[]
);

return (
<div
className={classNames("panel transformations-panel", {
Expand All @@ -36,6 +53,11 @@ export function TransformationsPanel(): React.ReactElement {
</ButtonGroup>
</div>
<div className="toolbar-group">
<Switch
checked={preserveLogs}
label="preserve logs"
onChange={handleToggleLogs}
/>
<Switch
checked={stringWrap}
label="String Wrap"
Expand Down
2 changes: 2 additions & 0 deletions src/panel/libs/EvaluationsContext.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import { Evaluation } from "../../shared/interfaces";
export interface ContextOfEvaluations {
evaluations?: Evaluation[];
setEvaluations?: React.Dispatch<React.SetStateAction<Evaluation[]>>;
preserveLogs?: boolean;
savePreserveLogs?: React.Dispatch<React.SetStateAction<boolean>>;
}

export const EvaluationsContext = React.createContext<ContextOfEvaluations>({});
Expand Down
2 changes: 2 additions & 0 deletions src/panel/libs/TransformationsContext.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import { Transformation } from "../../shared/interfaces";
export interface ContextOfTransformations {
transformations?: Transformation[];
setTransformations?: React.Dispatch<React.SetStateAction<Transformation[]>>;
preserveLogs?: boolean;
savePreserveLogs?: React.Dispatch<React.SetStateAction<boolean>>;
}

export const TransformationsContext = React.createContext<
Expand Down

0 comments on commit 98d93b6

Please sign in to comment.