You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by "Prasanth345 (via GitHub)" <gi...@apache.org> on 2025/08/20 10:47:43 UTC
[PR] Feature(UI) : Add upstream/downstream task filtering in Graph & Grid views (#53458) [airflow]
Prasanth345 opened a new pull request, #54722:
URL: https://github.com/apache/airflow/pull/54722
### Summary
This PR addresses [#53458](https://github.com/apache/airflow/issues/53458) by introducing task filtering options in both **Graph** and **Grid** views to improve task visualization and debugging.
Users can now filter the DAG to display:
- Only upstream tasks
- Only downstream tasks
- Both upstream & downstream tasks
- All tasks (default)
### Implementation Details
- **Graph View**
- Added support for filtering visible nodes and edges based on selected task.
- Users can toggle upstream, downstream, or both via a dropdown.
- **Grid View**
- Built adjacency maps (`upstreamMap` and `downstreamMap`) from DAG structure data.
- Implemented DFS traversal to collect upstream and downstream task chains.
- Introduced `visibleIds` logic to selectively show tasks based on filter selection.
- Ensured group nodes remain visible to preserve layout.
- **UI Enhancements**
- Added a `Filter` dropdown with options:
- **Filter Dag by task** (label for "all")
- **Only upstream**
- **Only downstream**
- **Both upstream & downstream**
- Improved `ActionButton` so display text (`buttonLabel`) can differ from dropdown item label.
### Testing
- Verified filtering in both **Graph** and **Grid** views.
- Confirmed correct upstream/downstream traversal.
- Checked that "all" restores full DAG display with button label as "Filter Dag by task".
### Why
This improves DAG observability by letting users focus on relevant upstream/downstream chains. It is especially useful for large DAGs where visual noise makes debugging difficult.
### Related Issue
Closes https://github.com/apache/airflow/issues/53458
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Feature(UI) : Add upstream/downstream task filtering in Graph & Grid views (#53458) [airflow]
Posted by "r-richmond (via GitHub)" <gi...@apache.org>.
r-richmond commented on PR #54722:
URL: https://github.com/apache/airflow/pull/54722#issuecomment-3234141641
I'm very excited to see this, thank you for adding it. I'm not a front end person so I'll leave the review to Brent
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Feature(UI) : Add upstream/downstream task filtering in Graph & Grid views (#53458) [airflow]
Posted by "Lee-W (via GitHub)" <gi...@apache.org>.
Lee-W commented on code in PR #54722:
URL: https://github.com/apache/airflow/pull/54722#discussion_r2342157058
##########
airflow-core/src/airflow/ui/public/i18n/locales/en/components.json:
##########
@@ -94,6 +94,14 @@
"sortedAscending": "sorted ascending",
"sortedDescending": "sorted descending",
"sortedUnsorted": "unsorted",
+ "taskFilter": {
+ "action_prefix": "Filter",
+ "all": "All",
+ "both": "Both upstream & downstream",
+ "button_all": "Filter DAG by task",
Review Comment:
```suggestion
"button_all": "Filter Dag by task",
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Feature(UI) : Add upstream/downstream task filtering in Graph & Grid views (#53458) [airflow]
Posted by "bbovenzi (via GitHub)" <gi...@apache.org>.
bbovenzi commented on PR #54722:
URL: https://github.com/apache/airflow/pull/54722#issuecomment-3383403991
@Prasanth345 Can you rebase this so we can get this PR for 3.2?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Feature(UI) : Add upstream/downstream task filtering in Graph & Grid views (#53458) [airflow]
Posted by "bbovenzi (via GitHub)" <gi...@apache.org>.
bbovenzi closed pull request #54722: Feature(UI) : Add upstream/downstream task filtering in Graph & Grid views (#53458)
URL: https://github.com/apache/airflow/pull/54722
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Feature(UI) : Add upstream/downstream task filtering in Graph & Grid views (#53458) [airflow]
Posted by "pierrejeambrun (via GitHub)" <gi...@apache.org>.
pierrejeambrun commented on PR #54722:
URL: https://github.com/apache/airflow/pull/54722#issuecomment-3442051801
@Prasanth345 are you still working on this?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Feature(UI) : Add upstream/downstream task filtering in Graph & Grid views (#53458) [airflow]
Posted by "bbovenzi (via GitHub)" <gi...@apache.org>.
bbovenzi commented on code in PR #54722:
URL: https://github.com/apache/airflow/pull/54722#discussion_r2342052397
##########
airflow-core/src/airflow/ui/src/components/FilterTaskButton.tsx:
##########
@@ -0,0 +1,122 @@
+/*!
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import { Box } from "@chakra-ui/react";
+import { useTranslation } from "react-i18next";
+import { MdFilterList } from "react-icons/md";
+import { useSearchParams, useParams } from "react-router-dom";
+
+import { Menu } from "src/components/ui";
+import { Button } from "src/components/ui";
+import ActionButton from "src/components/ui/ActionButton";
+
+const FILTER_PARAM = "task_filter";
+
+const OPTIONS = [
+ { buttonKey: "taskFilter.button_all", itemKey: "taskFilter.all", value: "all" },
+ { buttonKey: "taskFilter.upstream", itemKey: "taskFilter.upstream", value: "upstream" },
+ { buttonKey: "taskFilter.downstream", itemKey: "taskFilter.downstream", value: "downstream" },
+ { buttonKey: "taskFilter.both", itemKey: "taskFilter.both", value: "both" },
+] as const;
+
+type FilterValue = (typeof OPTIONS)[number]["value"];
+
+type Props = {
+ readonly withText?: boolean;
+};
+
+const FilterTaskButton = ({ withText = true }: Props) => {
+ const { t: translate } = useTranslation("components");
+ const [searchParams, setSearchParams] = useSearchParams();
+ const { taskId } = useParams<{ taskId?: string }>();
+
+ const rawFilter = searchParams.get(FILTER_PARAM) as FilterValue | null;
+ const currentFilter = rawFilter ?? "all";
+
+ const isActiveForThisTask = currentFilter !== "all";
+
+ const handleSelect = (value: FilterValue) => {
+ const next = new URLSearchParams(searchParams.toString());
+
+ if (value === "all") {
+ next.delete(FILTER_PARAM);
+ } else {
+ if (taskId === undefined) {
+ return; // optional: show tooltip instead
+ }
+ next.set(FILTER_PARAM, value);
+ }
+
+ setSearchParams(next, { replace: true });
+ };
+
+ const selectedOption = OPTIONS.find((opt) => opt.value === currentFilter) ?? OPTIONS[0];
+ const buttonLabel = translate(selectedOption.buttonKey);
+
+ return (
+ <Box display="inline-block" position="relative">
+ <Menu.Root positioning={{ gutter: 0, placement: "bottom" }}>
+ <Menu.Trigger asChild>
+ <Box position="relative">
+ <ActionButton
+ actionName={`${translate("taskFilter.action_prefix", { defaultValue: "Filter" })}: ${buttonLabel}`}
+ flexDirection="row-reverse"
+ icon={<MdFilterList />}
+ text={buttonLabel}
+ withText={withText}
+ />
+ {isActiveForThisTask ? (
+ <Box
+ bg="blue.500"
Review Comment:
We should use a semantic token here instead of hard coding blue.500
##########
airflow-core/src/airflow/ui/public/i18n/locales/en/components.json:
##########
@@ -94,6 +94,14 @@
"sortedAscending": "sorted ascending",
"sortedDescending": "sorted descending",
"sortedUnsorted": "unsorted",
+ "taskFilter": {
+ "action_prefix": "Filter",
+ "all": "All",
+ "both": "Both upstream & downstream",
+ "button_all": "Filter DAG by task",
+ "downstream": "Only downstream",
+ "upstream": "Only upstream"
+ },
Review Comment:
This is after translation freeze. You should post this PR in the i18n channel of the Airflow Slack.
##########
airflow-core/src/airflow/ui/src/pages/TaskInstance/Header.tsx:
##########
@@ -119,6 +120,7 @@ export const Header = ({
taskInstance={taskInstance}
withText={containerWidth > 700}
/>
+ <FilterTaskButton withText={containerWidth > 700} />
Review Comment:
We should change this hardcode value now that there are so many buttons. Do you mind making it `const HEADER_BREAKPOINT = 1000;`?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Feature(UI) : Add upstream/downstream task filtering in Graph & Grid views (#53458) [airflow]
Posted by "bbovenzi (via GitHub)" <gi...@apache.org>.
bbovenzi commented on code in PR #54722:
URL: https://github.com/apache/airflow/pull/54722#discussion_r2301537660
##########
airflow-core/src/airflow/ui/src/components/TaskFilter/TaskInstance/TaskFilterTaskInstanceButton.tsx:
##########
@@ -0,0 +1,78 @@
+/*!
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import { Box } from "@chakra-ui/react";
+import { MdFilterList } from "react-icons/md";
+import { useLocalStorage } from "usehooks-ts";
+
+import type { TaskInstanceResponse } from "openapi/requests";
+import { Menu } from "src/components/ui";
+import ActionButton from "src/components/ui/ActionButton";
+
+type Props = {
+ readonly taskInstance: TaskInstanceResponse;
+ readonly withText?: boolean;
+};
+
+const filterOptions = [
+ { buttonLabel: "Filter Dag by task", label: "All", value: "all" },
+ { buttonLabel: "Only upstream", label: "Only upstream", value: "upstream" },
+ { buttonLabel: "Only downstream", label: "Only downstream", value: "downstream" },
+ { buttonLabel: "Both upstream & downstream", label: "Both upstream & downstream", value: "both" },
Review Comment:
We will need to move these to the translation json files. We might be able to reuse some of the task clear action text.
##########
airflow-core/src/airflow/ui/src/components/TaskFilter/TaskInstance/TaskFilterTaskInstanceButton.tsx:
##########
@@ -0,0 +1,78 @@
+/*!
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import { Box } from "@chakra-ui/react";
+import { MdFilterList } from "react-icons/md";
+import { useLocalStorage } from "usehooks-ts";
+
+import type { TaskInstanceResponse } from "openapi/requests";
+import { Menu } from "src/components/ui";
+import ActionButton from "src/components/ui/ActionButton";
+
+type Props = {
+ readonly taskInstance: TaskInstanceResponse;
+ readonly withText?: boolean;
+};
+
+const filterOptions = [
+ { buttonLabel: "Filter Dag by task", label: "All", value: "all" },
+ { buttonLabel: "Only upstream", label: "Only upstream", value: "upstream" },
+ { buttonLabel: "Only downstream", label: "Only downstream", value: "downstream" },
+ { buttonLabel: "Both upstream & downstream", label: "Both upstream & downstream", value: "both" },
+];
+
+const TaskFilterTaskInstanceButton = ({ taskInstance, withText = true }: Props) => {
+ const dagId = taskInstance.dag_id;
+ const [selected, setSelected] = useLocalStorage<string>(`upstreamDownstreamFilter-${dagId}`, "all");
+
+ const handleSelect = (value: string) => {
+ setSelected(value);
+ };
+
+ return (
+ <Box>
+ <Menu.Root positioning={{ gutter: 0, placement: "bottom" }}>
+ <Menu.Trigger asChild>
+ <ActionButton
+ actionName={`Filter: ${filterOptions.find((opt) => opt.value === selected)?.buttonLabel}`}
+ flexDirection="row-reverse"
+ icon={<MdFilterList />}
+ text={filterOptions.find((opt) => opt.value === selected)?.buttonLabel ?? ""}
+ withText={withText}
+ />
+ </Menu.Trigger>
+
+ <Menu.Content>
+ {filterOptions.map((option) => (
+ <Menu.Item
+ asChild
+ disabled={selected === option.value}
+ key={option.value}
+ onClick={() => handleSelect(option.value)}
+ value={option.value}
+ >
+ <div className="px-2 py-1 cursor-pointer">{option.label}</div>
Review Comment:
We should use a <Text> or Button or a chakra component here instead
##########
airflow-core/src/airflow/ui/src/components/TaskFilter/TaskInstance/TaskFilterTaskInstanceButton.tsx:
##########
@@ -0,0 +1,78 @@
+/*!
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import { Box } from "@chakra-ui/react";
+import { MdFilterList } from "react-icons/md";
+import { useLocalStorage } from "usehooks-ts";
+
+import type { TaskInstanceResponse } from "openapi/requests";
+import { Menu } from "src/components/ui";
+import ActionButton from "src/components/ui/ActionButton";
+
+type Props = {
+ readonly taskInstance: TaskInstanceResponse;
+ readonly withText?: boolean;
+};
+
+const filterOptions = [
+ { buttonLabel: "Filter Dag by task", label: "All", value: "all" },
+ { buttonLabel: "Only upstream", label: "Only upstream", value: "upstream" },
+ { buttonLabel: "Only downstream", label: "Only downstream", value: "downstream" },
+ { buttonLabel: "Both upstream & downstream", label: "Both upstream & downstream", value: "both" },
+];
+
+const TaskFilterTaskInstanceButton = ({ taskInstance, withText = true }: Props) => {
+ const dagId = taskInstance.dag_id;
+ const [selected, setSelected] = useLocalStorage<string>(`upstreamDownstreamFilter-${dagId}`, "all");
Review Comment:
A query param is a better place to keep the state instead of localStorage
##########
airflow-core/src/airflow/ui/src/components/TaskFilter/TaskInstance/TaskFilterTaskInstanceButton.tsx:
##########
@@ -0,0 +1,78 @@
+/*!
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import { Box } from "@chakra-ui/react";
+import { MdFilterList } from "react-icons/md";
+import { useLocalStorage } from "usehooks-ts";
+
+import type { TaskInstanceResponse } from "openapi/requests";
+import { Menu } from "src/components/ui";
+import ActionButton from "src/components/ui/ActionButton";
+
+type Props = {
+ readonly taskInstance: TaskInstanceResponse;
+ readonly withText?: boolean;
+};
+
+const filterOptions = [
+ { buttonLabel: "Filter Dag by task", label: "All", value: "all" },
+ { buttonLabel: "Only upstream", label: "Only upstream", value: "upstream" },
+ { buttonLabel: "Only downstream", label: "Only downstream", value: "downstream" },
+ { buttonLabel: "Both upstream & downstream", label: "Both upstream & downstream", value: "both" },
+];
+
+const TaskFilterTaskInstanceButton = ({ taskInstance, withText = true }: Props) => {
+ const dagId = taskInstance.dag_id;
+ const [selected, setSelected] = useLocalStorage<string>(`upstreamDownstreamFilter-${dagId}`, "all");
+
+ const handleSelect = (value: string) => {
+ setSelected(value);
+ };
+
+ return (
+ <Box>
+ <Menu.Root positioning={{ gutter: 0, placement: "bottom" }}>
+ <Menu.Trigger asChild>
+ <ActionButton
+ actionName={`Filter: ${filterOptions.find((opt) => opt.value === selected)?.buttonLabel}`}
Review Comment:
Translation here too
##########
airflow-core/src/airflow/ui/src/components/TaskFilter/TaskInstance/TaskFilterTaskInstanceButton.tsx:
##########
Review Comment:
We can rename this to FilterTaskButton and it doesn't need to be in it's own folder with an index file
##########
airflow-core/src/airflow/ui/src/layouts/Details/Graph/utils.ts:
##########
@@ -0,0 +1,108 @@
+/*!
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import type { Edge } from "@xyflow/react";
+
+type FilterType = "all" | "both" | "downstream" | "upstream";
+
+type GraphParams<T extends { id: string }> = {
+ edges: Array<Edge>;
+ filter: FilterType;
+ nodes: Array<T>;
+ taskId?: string;
+};
+
+export const filterGraph = <T extends { id: string }>({
Review Comment:
We already have `includeDownstream, includeUpstream, root` in `useStructureServiceStructureData` let's use those instead of filtering everything on the frontend
##########
airflow-core/src/airflow/ui/src/components/TaskFilter/index.tsx:
##########
@@ -0,0 +1,20 @@
+/*!
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+export { default as TaskFilterTaskInstanceButton } from "./TaskInstance";
Review Comment:
Again, if there's only one file within these two folders then the folders and index files are extraneous.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Feature(UI) : Add upstream/downstream task filtering in Graph & Grid views (#53458) [airflow]
Posted by "bbovenzi (via GitHub)" <gi...@apache.org>.
bbovenzi commented on code in PR #54722:
URL: https://github.com/apache/airflow/pull/54722#discussion_r2334384314
##########
airflow-core/src/airflow/ui/public/i18n/locales/en/components.json:
##########
@@ -96,6 +96,17 @@
"sortedAscending": "sorted ascending",
"sortedDescending": "sorted descending",
"sortedUnsorted": "unsorted",
+ "taskFilter": {
+ "action_prefix": "Filter",
+ "button_all": "Filter DAG by task",
+ "button_both": "Both upstream & downstream",
+ "button_downstream": "Only downstream",
+ "button_upstream": "Only upstream",
+ "item_all": "All",
+ "item_both": "Both upstream & downstream",
+ "item_downstream": "Only downstream",
+ "item_upstream": "Only upstream"
+ },
Review Comment:
Can we consolidate some of these?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Feature(UI) : Add upstream/downstream task filtering in Graph & Grid views (#53458) [airflow]
Posted by "r-richmond (via GitHub)" <gi...@apache.org>.
r-richmond commented on PR #54722:
URL: https://github.com/apache/airflow/pull/54722#issuecomment-3280646339
Just FYI 3.1 is in the process of being prepared. If this PR isn't merged/completed by the end of the week it will miss 3.1 and we will have to wait for the next release.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Feature(UI) : Add upstream/downstream task filtering in Graph & Grid views (#53458) [airflow]
Posted by "bbovenzi (via GitHub)" <gi...@apache.org>.
bbovenzi commented on PR #54722:
URL: https://github.com/apache/airflow/pull/54722#issuecomment-3559654422
Closing now that https://github.com/apache/airflow/pull/57237 was merged
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Feature(UI) : Add upstream/downstream task filtering in Graph & Grid views (#53458) [airflow]
Posted by "bbovenzi (via GitHub)" <gi...@apache.org>.
bbovenzi commented on PR #54722:
URL: https://github.com/apache/airflow/pull/54722#issuecomment-3224914529
Thanks for adding this!
I think we need to make it more obvious when the grid+graph are filtered. Especially if I filter on one task but then click on a different task. Perhaps the filter button should be moved next to the "Options" dropdown?
Also, we should probably filter the Tasks list while we're at it: https://github.com/apache/airflow/pull/54163
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org