Loading dashboard...
);
8 | }
9 |
10 | const grabbers = props.grabberStats.grabbers;
11 |
12 | const grabberRowClass = (grabber) => {
13 | if (grabber.urls.length > 0)
14 | return ""
15 | if (grabber.lastUniqueAgeDays >= 7)
16 | return "table-danger"
17 | else return "table-warning"
18 | }
19 |
20 | const grabberAgeMessage = (grabber) => {
21 | if (grabber.lastUniqueAgeDays < 1){
22 | return "today";
23 | } else if (grabber.lastUniqueAgeDays < 999) {
24 | return grabber.lastUniqueAgeDays + " days ago";
25 | } else {
26 | return "never";
27 | }
28 | }
29 |
30 | const grabCountMessage = (grabber) =>
31 | (grabber.urls.length > 0)
32 | ? grabber.urls.length
33 | : (
75 |
{grabber.id}
76 |
77 |
78 | {grabber.name} (
{grabber.callsign})
79 | in {grabber.location} (
website)
80 |
81 | {renderActivityIcon(grabber.lastUniqueAgeMinutes)}
82 |
83 |
84 | {
85 | renderPrimaryImage(latestUrl)
86 | }
87 |
88 | {
89 | Object.keys(grabber.urls)
90 | .map(x => grabber.urls[x])
91 | .reverse()
92 | .slice(0, maxThumbnailCount)
93 | .map(x => renderDatedThumbnail(x))
94 | }
95 |
96 | {
97 | showStitch ? (
98 |
99 | {
100 | Object.keys(grabber.urls)
101 | .map(x => grabber.urls[x])
102 | .map(url => (
103 |
104 |
109 |
110 | ))
111 | }
112 |
113 | ) : ""
114 | }
115 |
116 |
117 | );
118 | }
119 |
120 | export default GrabberDetails;
--------------------------------------------------------------------------------
/src/frontend/src/components/GrabberList.js:
--------------------------------------------------------------------------------
1 |
2 | import React from 'react';
3 | import GrabberDetails from './GrabberDetails';
4 |
5 | const GrabberList = (props) => {
6 |
7 | if (!props.grabberStats || Object.keys(props.grabberStats).length === 0) {
8 | return (Loading grabbers...
);
9 | }
10 |
11 | const grabbers = props.grabberStats.grabbers;
12 | const maxGrabberCount = props.maxGrabberCount;
13 | const thumbnailCount = props.thumbnailCount;
14 | const isStichVisible = props.isStichVisible;
15 |
16 | return (
17 | Object.keys(grabbers)
18 | .filter(id => grabbers[id].urls.length > 0)
19 | .slice(0, maxGrabberCount)
20 | .map(id =>
21 | Loading grabbers...
);
8 | }
9 |
10 | const grabbers = props.grabberStats.grabbers;
11 |
12 | const getImage = (grabber) => {
13 | const latestUrl = grabber.urls[grabber.urls.length - 1];
14 | const basename = latestUrl.substr(latestUrl.lastIndexOf('/') + 1);
15 | return (
16 | Loading thumbnails...
);
8 | }
9 |
10 | const grabbers = props.grabberStats.grabbers;
11 |
12 | const getThumbnail = (grabber) => {
13 | return (
14 |