|
|
|
@ -8,7 +8,7 @@ TODO: Link each overview value to the sub-page that focuses on it. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
import React, { useState, useEffect, useContext } from "react"; |
|
|
|
import React, { useState, useEffect, useContext } from "react"; |
|
|
|
import { Row, Skeleton, Empty, Typography } from "antd"; |
|
|
|
import { Row, Skeleton, Result, List, Typography, Card } from "antd"; |
|
|
|
import { UserOutlined, ClockCircleOutlined } from "@ant-design/icons"; |
|
|
|
import { UserOutlined, ClockCircleOutlined } from "@ant-design/icons"; |
|
|
|
import { formatDistanceToNow, formatRelative } from "date-fns"; |
|
|
|
import { formatDistanceToNow, formatRelative } from "date-fns"; |
|
|
|
import { BroadcastStatusContext } from "../utils/broadcast-status-context"; |
|
|
|
import { BroadcastStatusContext } from "../utils/broadcast-status-context"; |
|
|
|
@ -28,16 +28,54 @@ import OwncastLogo from "./components/logo" |
|
|
|
const { Title } = Typography; |
|
|
|
const { Title } = Typography; |
|
|
|
|
|
|
|
|
|
|
|
function Offline() { |
|
|
|
function Offline() { |
|
|
|
|
|
|
|
const data = [ |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
title: "Send some test content", |
|
|
|
|
|
|
|
content: ( |
|
|
|
|
|
|
|
<div> |
|
|
|
|
|
|
|
With any video you have around you can pass it to the test script and start streaming it. |
|
|
|
|
|
|
|
<blockquote> |
|
|
|
|
|
|
|
<em>./test/ocTestStream.sh yourVideo.mp4</em> |
|
|
|
|
|
|
|
</blockquote> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
), |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
title: "Use your broadcasting software", |
|
|
|
|
|
|
|
content: ( |
|
|
|
|
|
|
|
<div> |
|
|
|
|
|
|
|
<a href="https://owncast.online/docs/broadcasting/">Learn how to point your existing software to your new server and start streaming your content.</a> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
title: "Something else", |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
]; |
|
|
|
return ( |
|
|
|
return ( |
|
|
|
<div> |
|
|
|
<div> |
|
|
|
<Empty |
|
|
|
<Result |
|
|
|
image={<OwncastLogo />} |
|
|
|
icon={<OwncastLogo />} |
|
|
|
imageStyle={{ |
|
|
|
title="No stream is active." |
|
|
|
height: 60, |
|
|
|
subTitle="You should start one." |
|
|
|
|
|
|
|
/> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<List |
|
|
|
|
|
|
|
grid={{ |
|
|
|
|
|
|
|
gutter: 16, |
|
|
|
|
|
|
|
xs: 1, |
|
|
|
|
|
|
|
sm: 2, |
|
|
|
|
|
|
|
md: 4, |
|
|
|
|
|
|
|
lg: 4, |
|
|
|
|
|
|
|
xl: 6, |
|
|
|
|
|
|
|
xxl: 3, |
|
|
|
}} |
|
|
|
}} |
|
|
|
description={ |
|
|
|
dataSource={data} |
|
|
|
<span>There is no stream currently active. Start one.</span> |
|
|
|
renderItem={(item) => ( |
|
|
|
} |
|
|
|
<List.Item> |
|
|
|
|
|
|
|
<Card title={item.title}>{item.content}</Card> |
|
|
|
|
|
|
|
</List.Item> |
|
|
|
|
|
|
|
)} |
|
|
|
/> |
|
|
|
/> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
); |
|
|
|
); |
|
|
|
|