From 933db53e93a1229fdf149556d61da5c4c7e1a331 Mon Sep 17 00:00:00 2001 From: Abubakar Abid Date: Fri, 18 Aug 2023 08:20:02 -0700 Subject: [PATCH] Better handling of empty dataframe in `gr.DataFrame` (#5256) * better handling of empty dataframe * add changeset * hide comments * add changeset * remove * lint * null case * add stories * stories * lint --------- Co-authored-by: gradio-pr-bot --- .changeset/khaki-otters-wear.md | 6 +++ js/dataframe/Dataframe.stories.svelte | 63 +++++++++++++++++++++++++++ js/dataframe/shared/Table.svelte | 23 ++++++---- js/dropdown/Dropdown.stories.svelte | 19 +++++++- 4 files changed, 100 insertions(+), 11 deletions(-) create mode 100644 .changeset/khaki-otters-wear.md create mode 100644 js/dataframe/Dataframe.stories.svelte diff --git a/.changeset/khaki-otters-wear.md b/.changeset/khaki-otters-wear.md new file mode 100644 index 0000000000..9043a54965 --- /dev/null +++ b/.changeset/khaki-otters-wear.md @@ -0,0 +1,6 @@ +--- +"@gradio/dataframe": patch +"gradio": patch +--- + +fix:Better handling of empty dataframe in `gr.DataFrame` diff --git a/js/dataframe/Dataframe.stories.svelte b/js/dataframe/Dataframe.stories.svelte new file mode 100644 index 0000000000..f814f10691 --- /dev/null +++ b/js/dataframe/Dataframe.stories.svelte @@ -0,0 +1,63 @@ + + + + + + + + + + + diff --git a/js/dataframe/shared/Table.svelte b/js/dataframe/shared/Table.svelte index 68f6dd5b63..fd3f5442b7 100644 --- a/js/dataframe/shared/Table.svelte +++ b/js/dataframe/shared/Table.svelte @@ -28,13 +28,10 @@ $: { if (values && !Array.isArray(values)) { headers = values.headers; - values = - values.data.length === 0 - ? [Array(headers.length).fill("")] - : values.data; + values = values.data; selected = false; } else if (values === null) { - values = [Array(headers.length).fill("")]; + values = []; selected = false; } } @@ -94,8 +91,7 @@ value: string | number; id: string; }[][] { - const data_row_length = _values.length > 0 ? _values.length : row_count[0]; - + const data_row_length = _values.length; return Array( row_count[1] === "fixed" ? row_count[0] @@ -105,7 +101,13 @@ ) .fill(0) .map((_, i) => - Array(col_count[1] === "fixed" ? col_count[0] : _values[0].length) + Array( + col_count[1] === "fixed" + ? col_count[0] + : data_row_length > 0 + ? _values[0].length + : headers.length + ) .fill(0) .map((_, j) => { const id = `${i}-${j}`; @@ -321,7 +323,6 @@ if (type === "select" && typeof id == "string") { const { cell } = els[id]; - // cell?.setAttribute("tabindex", "0"); await tick(); cell?.focus(); } @@ -396,6 +397,10 @@ function add_row(index?: number): void { if (row_count[1] !== "dynamic") return; + if (data.length === 0) { + values = [Array(headers.length).fill("")]; + return; + } data.splice( index ? index + 1 : data.length, 0, diff --git a/js/dropdown/Dropdown.stories.svelte b/js/dropdown/Dropdown.stories.svelte index 7e3ddb3773..fef4270921 100644 --- a/js/dropdown/Dropdown.stories.svelte +++ b/js/dropdown/Dropdown.stories.svelte @@ -21,8 +21,23 @@ +