Skip to content
This repository has been archived by the owner on Jul 28, 2018. It is now read-only.

15 task delete btn #23

Open
wants to merge 82 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
71cacf9
LoginTask1
dukadiesel Nov 21, 2017
7b93947
service adapter
dukadiesel Nov 21, 2017
c16359f
create authentication service
dukadiesel Nov 21, 2017
134c6af
Merge pull request #7 from nikolaneskovic/login
marina-workco Nov 21, 2017
11a3e93
Merge pull request #8 from nikolaneskovic/serviceAdapter
marina-workco Nov 21, 2017
0299f1f
post method fixed
dukadiesel Nov 22, 2017
ad25ea7
task4
dukadiesel Nov 22, 2017
be3619d
#5
dukadiesel Nov 22, 2017
a2afd5e
Merge pull request #10 from nikolaneskovic/logInRegisterUser
marina-workco Nov 22, 2017
c117364
Merge branch 'master' into dandrugi
nikolaneskovic Nov 22, 2017
d4815a2
Merge pull request #11 from nikolaneskovic/dandrugi
nikolaneskovic Nov 22, 2017
6e19248
error handler
dukadiesel Nov 22, 2017
22f0571
userAuthentication
dukadiesel Nov 22, 2017
ea5ed0a
validate client
dukadiesel Nov 22, 2017
1fc6ec9
error client side
dukadiesel Nov 23, 2017
b7454af
Merge pull request #14 from nikolaneskovic/6_scenario_error_handler
nikolaneskovic Nov 23, 2017
4ce416d
redirection to home page
dukadiesel Nov 23, 2017
b96cab6
error handler client side
dukadiesel Nov 23, 2017
22e9a5e
Merge pull request #15 from nikolaneskovic/6_scenario_error_handler
nikolaneskovic Nov 23, 2017
8b283fc
task7 deo
dukadiesel Nov 23, 2017
646ef61
Merge branch 'master' into task7
nikolaneskovic Nov 23, 2017
fd18ca8
Merge pull request #16 from nikolaneskovic/task7
nikolaneskovic Nov 23, 2017
e79c554
taskNo7
dukadiesel Nov 23, 2017
9c64010
Merge pull request #17 from nikolaneskovic/task7
nikolaneskovic Nov 23, 2017
ac96da1
imported profoile data
dukadiesel Nov 23, 2017
953fc5d
Merge pull request #18 from nikolaneskovic/8_profilePage
nikolaneskovic Nov 23, 2017
e306365
modalBox created
dukadiesel Nov 23, 2017
4e1d00d
Merge pull request #21 from nikolaneskovic/8_profilePage
nikolaneskovic Nov 24, 2017
5c2632a
edit user profile
dukadiesel Nov 24, 2017
654d7f1
Merge pull request #23 from nikolaneskovic/9_task_extendDataService
nikolaneskovic Nov 24, 2017
4979b7a
error handler refactoring
dukadiesel Nov 24, 2017
ec5bb14
people page created
dukadiesel Nov 25, 2017
ae30962
user-profile-linkCreated
dukadiesel Nov 25, 2017
7f48c83
user profile available
dukadiesel Nov 25, 2017
945a21d
css style
marina-workco Nov 26, 2017
e98000c
css styling
marina-workco Nov 26, 2017
55ae746
css style1
marina-workco Nov 26, 2017
abde1f7
Merge pull request #25 from nikolaneskovic/9_task_extendDataService
nikolaneskovic Nov 27, 2017
96c5526
filterUsers
dukadiesel Nov 27, 2017
2ae470c
Merge pull request #26 from nikolaneskovic/12_task_feedPage
nikolaneskovic Nov 27, 2017
9e9454c
insant jos malo
dukadiesel Nov 27, 2017
9e4bd6c
Merge pull request #27 from nikolaneskovic/task111
nikolaneskovic Nov 27, 2017
e4e98cb
search button
dukadiesel Nov 27, 2017
53d7d94
Merge pull request #28 from nikolaneskovic/13-task-searchButton
nikolaneskovic Nov 27, 2017
543b9ed
added all Posts
dukadiesel Nov 27, 2017
6df73cc
postst added in feed page
dukadiesel Nov 27, 2017
31735d0
Upload search!
dukadiesel Nov 27, 2017
b0fb7f3
Merge pull request #29 from nikolaneskovic/taskSearch
nikolaneskovic Nov 27, 2017
e93746e
upload search - finished
dukadiesel Nov 27, 2017
ff9ef2f
Merge pull request #30 from nikolaneskovic/taskSearch
nikolaneskovic Nov 27, 2017
b9c17f8
userDTO added
dukadiesel Nov 27, 2017
2f3c911
profileDto created
dukadiesel Nov 27, 2017
32e8ce5
input polja
dukadiesel Nov 27, 2017
c3837f2
Merge pull request #31 from nikolaneskovic/taskSearch
nikolaneskovic Nov 27, 2017
0d4ce7e
Merge pull request #32 from nikolaneskovic/13-task-searchButton
nikolaneskovic Nov 27, 2017
ab63ad4
onBlur func
dukadiesel Nov 27, 2017
bb07a5a
addPost Modal box created
dukadiesel Nov 27, 2017
4600656
Validation of Module
dukadiesel Nov 28, 2017
a614456
Merge pull request #38 from nikolaneskovic/tasksofYesterday
nikolaneskovic Nov 28, 2017
5ebbe8d
close button added
dukadiesel Nov 28, 2017
dcf363c
video post
dukadiesel Nov 28, 2017
8774420
added Image and Post
dukadiesel Nov 28, 2017
c0a6024
video page created
dukadiesel Nov 28, 2017
2b76cae
singlePage created
dukadiesel Nov 29, 2017
2299f8b
filter btn
dukadiesel Nov 29, 2017
9990844
filtered all posts
dukadiesel Nov 29, 2017
d151fc7
delete button created
dukadiesel Nov 29, 2017
7994bce
deleteBtn
dukadiesel Nov 29, 2017
ded80b1
Merge pull request #39 from nikolaneskovic/14-task-addButton
nikolaneskovic Nov 29, 2017
d049c57
linkovani useri sa ListOfComments
dukadiesel Nov 30, 2017
a234c68
Merge pull request #40 from nikolaneskovic/linkingOfUsers
nikolaneskovic Nov 30, 2017
d02b45c
deleteBtn -delete func
dukadiesel Nov 30, 2017
b1c970e
single Post Page created
dukadiesel Nov 30, 2017
81405d7
postonfeedpage created and video,image,post files deleted
dukadiesel Nov 30, 2017
83c6866
delete button done
dukadiesel Nov 30, 2017
55216cb
image placeholder added
dukadiesel Nov 30, 2017
3e14ced
delete button only for user
dukadiesel Nov 30, 2017
b2ee4ed
pagination created
dukadiesel Nov 30, 2017
463e174
added features to delete btn
marina-workco Nov 30, 2017
1fb33ec
gif background
marina-workco Nov 30, 2017
8c2f804
style
marina-workco Nov 30, 2017
645303b
Merge branch 'master' into 15-task-deleteBtn
nikolaneskovic Dec 1, 2017
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3,412 changes: 2,371 additions & 1,041 deletions package-lock.json

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,11 @@
"author": "BIT",
"license": "ISC",
"dependencies": {
"axios": "^0.17.1",
"babel-polyfill": "^6.26.0",
"react": "^16.1.0",
"react-dom": "^16.1.0",
"react-modal": "^3.1.3",
"react-router-dom": "^4.2.2"
},
"devDependencies": {
Expand Down
5 changes: 5 additions & 0 deletions reminder.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
-izvuci podatke za svakog user-a preko profile DTO
-uradi validaciju edit profile forme
-sa stranice People do svog naloga treba da dodjes na stranicu profile koja ima edit dugme, a ne na stranicu People/:userID
-sredi Search dugme
-sredi div za error na login formi i na register formi
24 changes: 22 additions & 2 deletions src/components/app.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,35 @@
import React from "react";
import LoginPage from "./login/loginPage";
import LoginForm from "./login/loginForm";
import RegisterForm from "./login/registerForm";
import { Switch, Route, Redirect } from "react-router-dom";
import MainPage from "./common/mainPage";
import AuthenticationService from "./../services/authenticationService";

import HelloWorld from "./helloWorld/helloWorld";

class App extends React.Component {
constructor(props) {
super(props);
this.authenticationService = new AuthenticationService();
}


render() {
return <HelloWorld />;

if (!this.authenticationService.isUserAuthenticated()) {
return (
<Switch>
<Redirect exact from="/" to="/login" />
<Route exact path="/login" component={LoginPage} />
<Route exact path="/register" component={LoginPage} />
</Switch>

);
}

return <MainPage />;
}
}


export default App;
12 changes: 12 additions & 0 deletions src/components/common/footer.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import React from "react";

const Footer = () => {
return (

<footer className="footer">
<p>Copyright Ⓒ <span > Team Candies </span></p>
</footer>
);

};
export default Footer;
36 changes: 36 additions & 0 deletions src/components/common/header.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import React from "react";
import LogOutButton from "../common/logOutButton";
import { Link } from "react-router-dom";

const Header = () => {

return (
<div className="navbar navbar-expand-lg navbar-dark bg-primary">
<div className='container'>
<Link className="navbar-brand" to="/feed">Bitbook</Link>

<div className="collapse navbar-collapse" id="navbarTogglerDemo03">
<ul className="navbar-nav mr-auto mt-2 mt-lg-0">
<li className="nav-item active">
<Link className="nav-link" to="/profile">Profile<span className="sr-only">(current)</span></Link>
</li>
<li className="nav-item active">
<Link className="nav-link" to="/people">People<span className="sr-only">(current)</span></Link>
</li>
<li className="nav-item active">
<Link className="nav-link" to="/feed">Feed<span className="sr-only">(current)</span></Link>
</li>
</ul>

<LogOutButton />
</div>
</div>
</div>




);
};

export default Header;
26 changes: 26 additions & 0 deletions src/components/common/logOutButton.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import React from "react";
import AuthenticationService from "../../services/authenticationService";

class LogOutButton extends React.Component {
constructor(props) {
super(props);
this.authenticationService = new AuthenticationService();
this.handleClickLogOut = this.handleClickLogOut.bind(this);
}

handleClickLogOut() {
this.authenticationService.logOut();
}

render() {
return (<button className="btn btn-secondary btn" type="button" name="action" id="logout" onClick={this.handleClickLogOut}>
LogOut</button>);
}
}

export default LogOutButton;





34 changes: 34 additions & 0 deletions src/components/common/mainPage.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import React from "react";
import { Switch, Route } from "react-router-dom";

import Header from "./header";
import Footer from "./footer";
import ProfilePage from "../profile/profilePage";
import People from "../peoplePage/people";
import UserProfile from "../peoplePage/userProfile";
import FeedPage from "../feed/FeedPage";
import SinglePostPage from "../feed/SinglePostPage";


class MainPage extends React.Component {
constructor(props) {
super(props);
}
render() {
return (
<div>
<Header />
<Switch>
<Route exact path="/profile" component={ProfilePage} />
<Route exact path="/people" component={People} />
<Route path="/people/:id" component={UserProfile} />
<Route exact path="/feed" component={FeedPage} />
<Route path="/feed/:type/:id" component={SinglePostPage} />
</Switch>
<Footer />
</div>
);
}
};

export default MainPage;
32 changes: 32 additions & 0 deletions src/components/common/searchInput.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import React from "react";
import PropTypes from "prop-types";


export default class Search extends React.Component {
constructor(props) {
super(props);
this.state = {
searchString: ""
};
this.handleChange = this.handleChange.bind(this);
}

handleChange(event) {
const value = event.target.value;
this.setState({ searchString: value });

this.props.useSearchString(value);
}

render() {
return (<div className="col-12">
<input className="searchInput" value={this.state.searchString} onChange={this.handleChange} placeholder="Search" />
</div>
);
}

}
Search.propTypes = {
useSearchString: PropTypes.func,
};

59 changes: 59 additions & 0 deletions src/components/feed/AllPosts.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
import React from "react";
import PropTypes from "prop-types";

import PostOnFeedPage from "./postTypeComponents/PostOnFeedPage";

import FilterList from "./FilterList";

class AllPosts extends React.Component {
constructor(props) {
super(props);
this.state = {
filterType: "all"
};
this.filterSelected = this.filterSelected.bind(this);
this.refreshPage = this.refreshPage.bind(this);
}



// getComponentByType(post, type) {

// if (type === "text" && (this.state.filterType == "text" || this.state.filterType == "all")) {
// return <PostOnFeedPage post={post} key={post.id} />;
// }
// if (type === "video" && (this.state.filterType == "video" || this.state.filterType == "all")) {
// return <PostOnFeedPage post={post} key={post.id} />;
// }
// if (type === "image" && (this.state.filterType == "image" || this.state.filterType == "all")) {
// return <PostOnFeedPage post={post} key={post.id} />;
// }

// return "";
// }

filterSelected(type) {
this.setState({
filterType: type
});

}
refreshPage(){
this.props.refreshPage();
}
render() {
return (
<div>
<FilterList onFilterSelected={this.filterSelected} />
{this.props.posts.map(post => <PostOnFeedPage key={post.id} post={post} refreshPage={this.refreshPage} />)}
</div>
);
}
}
AllPosts.propTypes = {
posts: PropTypes.array,
refreshPage: PropTypes.func

};

export default AllPosts;
40 changes: 40 additions & 0 deletions src/components/feed/CommentsForm.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import React from "react";
import PropTypes from "prop-types";

class CommentsForm extends React.Component {
constructor(props) {
super(props);
this.state = {
body: "",
};
this.handleChange = this.handleChange.bind(this);
this.handleClick = this.handleClick.bind(this);
}
handleChange(event) {
this.setState({ body: event.target.value });
}
handleClick() {
this.props.saveComment(this.state.body);
this.setState({body:""});
}


render() {
return (
<div className="container">
<div className="row videoPost">
<input type="text" value={this.state.body} onChange={this.handleChange} />
<button className="commentBtn" onClick={this.handleClick}>Comment</button>
</div>
</div>

);
};
}

CommentsForm.propTypes = {
postId: PropTypes.number,
type: PropTypes.string,
saveComment: PropTypes.func
};
export default CommentsForm;
34 changes: 34 additions & 0 deletions src/components/feed/FilterList.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import React, { Component } from "react";
import PropTypes from "prop-types";

class FilterList extends Component {

constructor(props) {
super(props);

}
handleClickImage() {
}

render() {
return (
<div className="col-1 offset-10">
<div className="btn-group">
<button type="button" className="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Filter posts</button>
<div className="dropdown-menu">
<button className="dropdown-item" onClick={() => this.props.onFilterSelected("image")}>Images</button>
<button className="dropdown-item" onClick={() => this.props.onFilterSelected("text")}>Posts</button>
<button className="dropdown-item" onClick={() => this.props.onFilterSelected("video")}>Videos</button>
<button className="dropdown-item" onClick={() => this.props.onFilterSelected("all")}>All</button>
</div>
</div>
</div>
);
}
}
FilterList.propTypes = {
onFilterSelected: PropTypes.func,

};
export default FilterList;
25 changes: 25 additions & 0 deletions src/components/feed/ListOfComments.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import React from "react";
import PropTypes from "prop-types";

import SingleComment from "./postTypeComponents/SingleComment";

class ListOfComments extends React.Component {
constructor(props) {
super(props);
}

render() {
return (
<div>
{this.props.allComments.map(comment => <SingleComment comment={comment} key={comment.id} />)}
</div>
);
}
}
ListOfComments.propTypes = {
postId: PropTypes.number,
allComments: PropTypes.array


};
export default ListOfComments;
22 changes: 22 additions & 0 deletions src/components/feed/Pagination.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import React, { Component } from "react";
import { Link } from "react-router-dom";

class Pagination extends Component {
render() {
return (
<nav aria-label="Page navigation example">
<ul className="pagination">
<li className="page-item"><button className="page-link" onClick={this.showPosts}>Previous</button></li>
<li className="page-item"><button className="page-link" >1</button></li>
<li className="page-item"><button className="page-link" >2</button></li>
<li className="page-item"><button className="page-link" >3</button></li>
<li className="page-item"><button className="page-link" >Next</button></li>
</ul>
</nav>
);
}
}

export default Pagination;


Loading