-
+
this.itemClick()}>
+
+ {this.props.name}
);
}
- loadPreview() {
- const updateRequest = new FormData();
- updateRequest.append('action', 'getRandomTagPreview');
- updateRequest.append('id', this.props.tag_id);
-
- fetch('/api/Tags.php', {method: 'POST', body: updateRequest})
- .then((response) => response.text())
- .then((result) => {
- this.setState({thumbnail: result});
- });
+ itemClick() {
+ this.fetchVideoData(this.props.name);
}
}
diff --git a/src/elements/VideoContainer.js b/src/elements/VideoContainer.js
new file mode 100644
index 0000000..5ed8ac2
--- /dev/null
+++ b/src/elements/VideoContainer.js
@@ -0,0 +1,73 @@
+import React from "react";
+import Preview from "./Preview";
+
+class VideoContainer extends React.Component {
+ constructor(props: P, context: any) {
+ super(props, context);
+
+ this.data = props.data;
+
+ this.state = {
+ loadeditems: [],
+ selectionnr: null
+ };
+ }
+ // stores current index of loaded elements
+ loadindex = 0;
+
+ componentDidMount() {
+ document.addEventListener('scroll', this.trackScrolling);
+
+ this.loadPreviewBlock(12);
+ }
+
+ render() {
+ return (
+
+ {this.state.loadeditems.map(elem => (
+
+ ))}
+
+ );
+ }
+
+ componentWillUnmount() {
+ this.setState({});
+ document.removeEventListener('scroll', this.trackScrolling);
+ }
+
+ loadPreviewBlock(nr) {
+ console.log("loadpreviewblock called ...")
+ let ret = [];
+ for (let i = 0; i < nr; i++) {
+ // only add if not end
+ if (this.data.length > this.loadindex + i) {
+ ret.push(this.data[this.loadindex + i]);
+ }
+ }
+
+ this.setState({
+ loadeditems: [
+ ...this.state.loadeditems,
+ ...ret
+ ]
+ });
+
+
+ this.loadindex += nr;
+ }
+
+ trackScrolling = () => {
+ // comparison if current scroll position is on bottom
+ // 200 stands for bottom offset to trigger load
+ if (window.innerHeight + document.documentElement.scrollTop + 200 >= document.documentElement.offsetHeight) {
+ this.loadPreviewBlock(8);
+ }
+ }
+}
+
+export default VideoContainer;
\ No newline at end of file
diff --git a/src/pages/CategoryPage.js b/src/pages/CategoryPage.js
index 4f3da7d..899656e 100644
--- a/src/pages/CategoryPage.js
+++ b/src/pages/CategoryPage.js
@@ -30,24 +30,21 @@ class CategoryPage extends React.Component {
{this.state.loadedtags ?
this.state.loadedtags.map((m) => (
+ tag_id={m.tag_id}
+ viewbinding={this.props.viewbinding}/>
)) :
"loading"
}
diff --git a/src/pages/HomePage.js b/src/pages/HomePage.js
index 5b3e096..cadea97 100644
--- a/src/pages/HomePage.js
+++ b/src/pages/HomePage.js
@@ -1,22 +1,16 @@
import React from "react";
-import Preview from "../elements/Preview";
import SideBar from "../elements/SideBar";
import Tag from "../elements/Tag";
+import VideoContainer from "../elements/VideoContainer";
import "../css/HomePage.css"
import "../css/DefaultPage.css"
class HomePage extends React.Component {
- // stores all available movies
- data = null;
- // stores current index of loaded elements
- loadindex = 0;
-
constructor(props, context) {
super(props, context);
this.state = {
- loadeditems: [],
sideinfo: {
videonr: null,
fullhdvideonr: null,
@@ -25,12 +19,13 @@ class HomePage extends React.Component {
tagnr: null
},
tag: "All",
- selectionnr: null
+ data: [],
+ selectionnr: 0
};
}
componentDidMount() {
- document.addEventListener('scroll', this.trackScrolling);
+ // document.addEventListener('scroll', this.trackScrolling);
// initial get of all videos
this.fetchVideoData("all");
this.fetchStartData();
@@ -47,17 +42,19 @@ class HomePage extends React.Component {
updateRequest.append('action', 'getMovies');
updateRequest.append('tag', tag);
+ console.log("fetching data");
+
// fetch all videos available
fetch('/api/videoload.php', {method: 'POST', body: updateRequest})
.then((response) => response.json()
.then((result) => {
- this.data = result;
this.setState({
- loadeditems: [],
- selectionnr: this.data.length
+ data: []
+ });
+ this.setState({
+ data: result,
+ selectionnr: result.length
});
- this.loadindex = 0;
- this.loadPreviewBlock(16);
}))
.catch(() => {
console.log("no connection to backend");
@@ -90,11 +87,6 @@ class HomePage extends React.Component {
});
}
- componentWillUnmount() {
- this.setState({});
- document.removeEventListener('scroll', this.trackScrolling);
- }
-
render() {
return (
@@ -134,15 +126,10 @@ class HomePage extends React.Component {
}}>HD
-
- {this.state.loadeditems.map(elem => (
-
- ))}
-
+ {this.state.data.length !== 0 ?
+
: null}
@@ -150,35 +137,6 @@ class HomePage extends React.Component {
);
}
-
- loadPreviewBlock(nr) {
- console.log("loadpreviewblock called ...")
- let ret = [];
- for (let i = 0; i < nr; i++) {
- // only add if not end
- if (this.data.length > this.loadindex + i) {
- ret.push(this.data[this.loadindex + i]);
- }
- }
-
- this.setState({
- loadeditems: [
- ...this.state.loadeditems,
- ...ret
- ]
- });
-
-
- this.loadindex += nr;
- }
-
- trackScrolling = () => {
- // comparison if current scroll position is on bottom
- // 200 stands for bottom offset to trigger load
- if (window.innerHeight + document.documentElement.scrollTop + 200 >= document.documentElement.offsetHeight) {
- this.loadPreviewBlock(8);
- }
- }
}
export default HomePage;