diff --git a/frontend/src/components/tables/ChannelsTable.jsx b/frontend/src/components/tables/ChannelsTable.jsx
index a3593ddc..63cfef47 100644
--- a/frontend/src/components/tables/ChannelsTable.jsx
+++ b/frontend/src/components/tables/ChannelsTable.jsx
@@ -45,6 +45,7 @@ import {
Stack,
Select,
NumberInput,
+ Tooltip,
} from '@mantine/core';
import { getCoreRowModel, flexRender } from '@tanstack/react-table';
import './table.css';
@@ -52,6 +53,7 @@ import useChannelsTableStore from '../../store/channelsTable';
import ChannelTableStreams from './ChannelTableStreams';
import LazyLogo from '../LazyLogo';
import useLocalStorage from '../../hooks/useLocalStorage';
+import useEPGsStore from '../../store/epgs';
import { CustomTable, useTable } from './CustomTable';
import ChannelsTableOnboarding from './ChannelsTable/ChannelsTableOnboarding';
import ChannelTableHeader from './ChannelsTable/ChannelTableHeader';
@@ -217,6 +219,9 @@ const ChannelRowActions = React.memo(
);
const ChannelsTable = ({}) => {
+ // EPG data lookup
+ const tvgsById = useEPGsStore((s) => s.tvgsById);
+ const epgs = useEPGsStore((s) => s.epgs);
const theme = useMantineTheme();
const channelGroups = useChannelsStore((s) => s.channelGroups);
const canEditChannelGroup = useChannelsStore((s) => s.canEditChannelGroup);
@@ -705,6 +710,50 @@ const ChannelsTable = ({}) => {
),
},
+ {
+ id: 'epg',
+ header: 'EPG',
+ accessorKey: 'epg_data_id',
+ cell: ({ getValue }) => {
+ const epgDataId = getValue();
+ const epgObj = epgDataId ? tvgsById[epgDataId] : null;
+ const epgName =
+ epgObj && epgObj.epg_source
+ ? epgs[epgObj.epg_source]?.name || epgObj.epg_source
+ : null;
+ const epgDataName = epgObj?.name;
+ const tvgId = epgObj?.tvg_id;
+ const tooltip = epgObj
+ ? `${epgName ? `EPG Name: ${epgName}\n` : ''}${epgDataName ? `TVG Name: ${epgDataName}\n` : ''}${tvgId ? `TVG-ID: ${tvgId}` : ''}`.trim()
+ : '';
+ return (
+