Skip to content

Commit

Permalink
166 cannot select distribution when config is empty (#176)
Browse files Browse the repository at this point in the history
* fix: yaml Object key.source undefined fix

* fix: empty url serverSide validate bug
  • Loading branch information
roshan-gh authored Nov 6, 2023
1 parent e184741 commit f7ac7d1
Show file tree
Hide file tree
Showing 7 changed files with 25 additions and 30 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ describe("findLeafs", () => {
const docElements = getParsedValue(yaml);
const yamlItems = extractServiceItems(docElements);

const result = findLeafs(yamlItems, docElements.filter((item: IItem) => item.key.source === "service")[0], {});
const result = findLeafs(yamlItems, docElements.filter((item: IItem) => item.key?.source === "service")[0], {});
expect(result).toEqual({
extensions: [
{ source: "health_check", offset: 64 },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ export function validateOtelCollectorConfigurationAndSetMarkers(
serviceItemsData = {};
serviceItemsData = findLeafs(
serviceItems,
docElements.filter((item: IItem) => item.key.source === "service")[0],
docElements.filter((item: IItem) => item.key?.source === "service")[0],
serviceItemsData
);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,12 +107,12 @@ describe("findPipelinesKeyValues", () => {
const yaml = editorBinding.fallback;
const docElements = getParsedValue(yaml);
const serviceItems: IItem[] | undefined = extractServiceItems(docElements);
const pipeLineItems: IItem[] | undefined = serviceItems?.filter((item: IItem) => item.key.source === "pipelines");
const pipeLineItems: IItem[] | undefined = serviceItems?.filter((item: IItem) => item.key?.source === "pipelines");

const result = findPipelinesKeyValues(
pipeLineItems,
docElements.filter((item: IItem) => item.key.source === "pipelines")[0],
docElements.filter((item: IItem) => item.key.source === "service")[0],
docElements.filter((item: IItem) => item.key?.source === "pipelines")[0],
docElements.filter((item: IItem) => item.key?.source === "service")[0],
{}
);
expect(result).toEqual({
Expand Down
14 changes: 7 additions & 7 deletions packages/otelbin/src/components/monaco-editor/parseYaml.ts
Original file line number Diff line number Diff line change
Expand Up @@ -82,13 +82,13 @@ export function extractMainItemsData(docElements: IItem[]) {
const mainItemsData: IValidateItem = {};

const mainKeys = docElements
.filter((item: IItem) => item.key.source !== "service")
.map((item: IItem) => item.key.source);
.filter((item: IItem) => item.key?.source !== "service")
.map((item: IItem) => item.key?.source);

mainKeys.forEach((key: string) => {
mainItemsData[key] =
docElements
.filter((item: IItem) => item.key.source === key)[0]
.filter((item: IItem) => item.key?.source === key)[0]
?.value?.items?.map((item: IItem) => {
return { source: item.key?.source, offset: item.key?.offset };
}) || [];
Expand All @@ -100,7 +100,7 @@ export function extractServiceItems(docElements: IItem[]) {
const serviceItems =
(Array.isArray(docElements) &&
docElements.length > 0 &&
docElements.filter((item: IItem) => item.key.source === "service")[0]?.value?.items) ||
docElements.filter((item: IItem) => item.key?.source === "service")[0]?.value?.items) ||
[];
return serviceItems;
}
Expand All @@ -114,7 +114,7 @@ export function findLeafs(yamlItems?: IItem[], parent?: IItem, serviceItemsData?
if (item.value.source && parent) {
const source = item.value.source;
const offset = item.value.offset;
const parentKey = parent.key.source;
const parentKey = parent.key?.source;

if (!serviceItemsData) return;
if (!serviceItemsData[parentKey]) {
Expand Down Expand Up @@ -148,8 +148,8 @@ export function findPipelinesKeyValues(
if (item.value.source && parent) {
const source = item.value.source;
const offset = item.value.offset;
const parentKey = parent.key.source;
const level1ParentKey = level1Parent?.key.source;
const parentKey = parent.key?.source;
const level1ParentKey = level1Parent?.key?.source;
if (!serviceItemsData) return;
if (!serviceItemsData[parentKey]) {
serviceItemsData[parentKey] = [];
Expand Down
6 changes: 3 additions & 3 deletions packages/otelbin/src/components/react-flow/FlowClick.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,12 @@ export function FlowClick(
const mainItemsData: IValidateItem = extractMainItemsData(docElements);
let pipelinesKeyValues: IValidateItem | undefined = {};
const serviceItems: IItem[] | undefined = extractServiceItems(docElements);
const pipeLineItems: IItem[] | undefined = serviceItems?.filter((item: IItem) => item.key.source === "pipelines");
const pipeLineItems: IItem[] | undefined = serviceItems?.filter((item: IItem) => item.key?.source === "pipelines");

pipelinesKeyValues = findPipelinesKeyValues(
pipeLineItems,
docElements.filter((item: IItem) => item.key.source === "pipelines")[0],
docElements.filter((item: IItem) => item.key.source === "service")[0],
docElements.filter((item: IItem) => item.key?.source === "pipelines")[0],
docElements.filter((item: IItem) => item.key?.source === "service")[0],
pipelinesKeyValues
);

Expand Down
12 changes: 6 additions & 6 deletions packages/otelbin/src/components/react-flow/ReactFlow.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@ export default function Flow({
const parsedYaml = Array.from(new Parser().parse(value));
const doc = parsedYaml.find((token) => token.type === "document") as Document;
const docItems = doc?.value?.items ?? [];
const docService = docItems.find((item: IItem) => item.key.source === "service");
return docService?.value.items.find((item: IItem) => item.key.source === "pipelines");
const docService = docItems.find((item: IItem) => item.key?.source === "service");
return docService?.value.items.find((item: IItem) => item.key?.source === "pipelines");
}, [value]);
const initNodes = useNodes(jsonData);
const [nodes, setNodes] = useNodesState(initNodes !== undefined ? initNodes : []);
Expand Down Expand Up @@ -127,8 +127,8 @@ export default function Flow({
(pipelines.value.items[i]?.value.items[j]?.value.items[0]?.value.offset || 0) +
(pipelines.value.items[i]?.value.items[j]?.value.items[0]?.value.source?.length || 0)
) {
const level2 = pipelines.value.items[i]?.key.source || "";
const level3 = pipelines.value.items[i]?.value.items[j]?.key.source || "";
const level2 = pipelines.value.items[i]?.key?.source || "";
const level3 = pipelines.value.items[i]?.value.items[j]?.key?.source || "";
setFocusOnNode(wordAtCursor.word, level2, level3);
setCenter(
getNodePositionX(wordAtCursor.word, level2, level3) + 50,
Expand All @@ -143,8 +143,8 @@ export default function Flow({
(pipelines.value.items[i]?.value.items[j]?.value.items[k]?.value.offset || 0) +
(pipelines.value.items[i]?.value.items[j]?.value.items[k]?.value.source?.length || 0)
) {
const level2 = pipelines.value.items[i]?.key.source || "";
const level3 = pipelines.value.items[i]?.value.items[j]?.key.source || "";
const level2 = pipelines.value.items[i]?.key?.source || "";
const level3 = pipelines.value.items[i]?.value.items[j]?.key?.source || "";
setFocusOnNode(wordAtCursor.word, level2, level3);
setCenter(
getNodePositionX(wordAtCursor.word, level2, level3) + 50,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import { IconButton } from "../icon-button";
import { CurrentBadge } from "./ValidationTypeContent";
import type { Distribution } from "~/types";
import { useState } from "react";
import { useRouter } from "next/navigation";
import { useUrlState } from "~/lib/urlState/client/useUrlState";
import { distroBinding, distroVersionBinding } from "../validation/binding";
import type { ICurrentDistro } from "./ValidationType";
Expand All @@ -29,11 +28,10 @@ export default function ValidationTile({
}) {
const isDistroActive = id === currentDistro?.provider;

const [, getUrl] = useUrlState([distroBinding, distroVersionBinding]);
const [, getLink] = useUrlState([distroBinding, distroVersionBinding]);
const [version, setVersion] = useState<string>(
isDistroActive ? currentDistro.version : data.releases[0]?.version ?? ""
);
const router = useRouter();

function formatVersionsRange(versions?: string[] | string) {
if (typeof versions === "string") {
Expand Down Expand Up @@ -114,12 +112,9 @@ export default function ValidationTile({
</Select>
<Button
onClick={() => {
router.push(
getUrl({
distro: id,
distroVersion: version,
})
);
if (typeof window !== "undefined") {
window.history.pushState(null, "", getLink({ distro: id, distroVersion: version }));
}
setOpen(false);
}}
size={"xs"}
Expand Down

0 comments on commit f7ac7d1

Please sign in to comment.