Skip to content

Commit

Permalink
UODATE, POST done, DELETE and UI need to be fixed
Browse files Browse the repository at this point in the history
  • Loading branch information
sky1122 committed Nov 14, 2022
1 parent 0bd39b3 commit 94e2b2b
Show file tree
Hide file tree
Showing 8 changed files with 247 additions and 42 deletions.
Binary file modified api/__pycache__/views.cpython-310.pyc
Binary file not shown.
3 changes: 3 additions & 0 deletions api/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,10 @@ def member_detail(request, pk):

elif request.method == 'PUT':
data = JSONParser().parse(request)
print("data")
print(data)
serializer = MemberSerializer(member, data=data)
print(serializer.is_valid())
if serializer.is_valid():
serializer.save()
return JsonResponse(serializer.data)
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/App.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import './App.css';
import {Routes, Route} from "react-router-dom";
import AddTeamMember from './components/AddTeamMember';

import Footer from './components/Footer';
import Nav from './components/Nav';
import TeamList from './components/TeamList';
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/components/AddTeamMember.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React from 'react'
import Info from './Form'
import Info from './FormCreate'

export default function AddTeamMember() {
return (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,79 +3,101 @@ import axios from 'axios';


const POST_MEMBER_API = "http://127.0.0.1:8000/api/member";
export default function Info(memberProps) {
export default function Info(Props) {
let initialValues = {
first_name: "",
last_name: "",
email: "",
phone: ""
};
const {member} = memberProps

};
let checkedValue = "1";

if (member !== "None" || member !== undefined) {
if ("member" in Props) {
const { member } = Props;
initialValues = {
first_name: member.member.first_name,
last_name: member.member.last_name,
email: member.member.email,
phone: member.member.phone
}
checkedValue = member.member.role;
}
let teamId = '';

if ("teamId" in Props) {
teamId = Props.teamId;
}
console.log(initialValues)

const [values, setValues] = useState(initialValues);
const [checkedOption, setCheckedOption] = useState("1");
const [checkedOption, setCheckedOption] = useState(checkedValue);
const handleInputChange = (e) => {
const { name, value } = e.target;
setValues({
...values,
[name]: value,
});

};
console.log("handleInputChange");
const { name, value } = e.target;
setValues({
...values,
[name]: value,
});

};
const handleOptionChange = (e) => {
setCheckedOption(e.target.value);
}

const handleOnSumbit = (e) => {
console.log("handleOnSumbit");
e.preventDefault();

const member = {
first_name: values.firstName,
last_name: values.lastName,
first_name: values.first_name,
last_name: values.last_name,
email: values.email,
phone: values.phone,
role: checkedOption,
team: ""
team: teamId
};
console.log(member);
console.log(POST_MEMBER_API);
axios({
method: 'post',
url: POST_MEMBER_API,
data: member
}).then(function (response) {
console.log(response);
}).catch(function (error) {
console.log(error);
});


// axios.post(POST_MEMBER_API, member)
// .catch((err) => { console.error(err) });
// this.props.history.push('/Team')

axios.post(POST_MEMBER_API, member)
.catch((err) => { console.error(err) });
};


return (
<div>
<div class="flex flex-col justify-center w-9/12">
<div className="flex flex-col justify-center w-9/12">
<form className='input-search' onSubmit={handleOnSumbit}>
<div><h2>Info</h2></div>
<div>
<label>First Name</label>
<input
type="text"
placeholder="First Name"
name="firstName"
name="first_name"
onChange={handleInputChange}
value={values.first_name}
defaultValue={values.first_name === undefined ? "" : values.first_name}
className="input input-bordered w-full max-w-xs" />
</div>
<div>
<label>Last Name</label>
<input
type="text"
placeholder="Last Name"
name="lastName"
name="last_name"
onChange={handleInputChange}
value={values.last_name}
defaultValue={values.last_name === undefined ? "" : values.last_name}
className="input input-bordered w-full max-w-xs" />
</div>
<div>
Expand All @@ -85,17 +107,17 @@ export default function Info(memberProps) {
placeholder="Email"
name='email'
onChange={handleInputChange}
value={values.email}
defaultValue={values.email === undefined ? "" : values.email}
className="input input-bordered w-full max-w-xs" />
</div>
<div>
<label>Phone</label>
<label>Phone</label>
<input
type="text"
placeholder="Phone"
name='phone'
onChange={handleInputChange}
value={values.phone}
defaultValue={values.phone === undefined ? "" : values.phone}
className="input input-bordered w-full max-w-xs" />
</div>

Expand All @@ -106,12 +128,12 @@ export default function Info(memberProps) {
<span className="label-text">Regulat - Can't delete members</span>
<input
type="radio"
name="radio-10"
name="radio-10"
value="1"
checked={checkedOption === "1"}
onChange={handleOptionChange}
className="radio checked:bg-red-500"
/>
/>
</label>
</div>
<div className="form-control">
Expand All @@ -123,11 +145,11 @@ export default function Info(memberProps) {
value="0"
checked={checkedOption === "0"}
onChange={handleOptionChange}
className="radio checked:bg-blue-500"/>
className="radio checked:bg-blue-500" />
</label>
</div>
</div>
<button className="btn btn-info" type='submit'>Info</button>
<button className="btn btn-info" type='submit' >Submit</button>
</form>
</div>

Expand Down
145 changes: 145 additions & 0 deletions frontend/src/components/FormUpdate.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
import React, { useState } from "react";
import axios from 'axios';


const PUT_MEMBER_API = "http://127.0.0.1:8000/api/member/";
export default function FormUpdate(Props) {
let initialValues = {
first_name: "",
last_name: "",
email: "",
phone: ""
};
let checkedValue = "1";

const { member } = Props;
initialValues = {
first_name: member.member.first_name,
last_name: member.member.last_name,
email: member.member.email,
phone: member.member.phone
}
checkedValue = member.member.role;


const [values, setValues] = useState(initialValues);
const [checkedOption, setCheckedOption] = useState(checkedValue);
const handleInputChange = (e) => {
const { name, value } = e.target;
setValues({
...values,
[name]: value,
});

};
const handleOptionChange = (e) => {
setCheckedOption(e.target.value);
}

const handleOnSumbit = (e) => {
console.log("handleOnSumbit");
e.preventDefault();

const data = {
first_name: values.first_name,
last_name: values.last_name,
email: values.email,
phone: values.phone,
role: checkedOption,
id: member.member.id,
team: member.member.team
};
const id = member.member.id.toString().replace("\\", "");
axios({
method: 'put',
url: PUT_MEMBER_API + id,
data: data
}).then(function (response) {
console.log(response);
}).catch(function (error) {
console.log(error);
});
};

return (
<div>
<div className="flex flex-col justify-center w-9/12">
<form className='input-search' onSubmit={handleOnSumbit}>
<div><h2>Info</h2></div>
<div>
<label>First Name</label>
<input
type="text"
placeholder="First Name"
name="first_name"
onChange={handleInputChange}
defaultValue={values.first_name === undefined ? "" : values.first_name}
className="input input-bordered w-full max-w-xs" />
</div>
<div>
<label>Last Name</label>
<input
type="text"
placeholder="Last Name"
name="last_name"
onChange={handleInputChange}
defaultValue={values.last_name === undefined ? "" : values.last_name}
className="input input-bordered w-full max-w-xs" />
</div>
<div>
<label>Email</label>
<input
type="text"
placeholder="Email"
name='email'
onChange={handleInputChange}
defaultValue={values.email === undefined ? "" : values.email}
className="input input-bordered w-full max-w-xs" />
</div>
<div>
<label>Phone</label>
<input
type="text"
placeholder="Phone"
name='phone'
onChange={handleInputChange}
defaultValue={values.phone === undefined ? "" : values.phone}
className="input input-bordered w-full max-w-xs" />
</div>

<h2>role</h2>
<div>
<div className="form-control">
<label className="label cursor-pointer">
<span className="label-text">Regulat - Can't delete members</span>
<input
type="radio"
name="radio-10"
value="1"
checked={checkedOption === "1"}
onChange={handleOptionChange}
className="radio checked:bg-red-500"
/>
</label>
</div>
<div className="form-control">
<label className="label cursor-pointer">
<span className="label-text">Admin - Can delete members</span>
<input
type="radio"
name="radio-10"
value="0"
checked={checkedOption === "0"}
onChange={handleOptionChange}
className="radio checked:bg-blue-500" />
</label>
</div>
</div>
<button className="btn btn-info" type='submit' >Update</button>
</form>
</div>

</div>

)
}
Loading

0 comments on commit 94e2b2b

Please sign in to comment.