Skip to content

Commit 44729b4

Browse files
authored
Merge pull request EGCETSII#64 from Full-Tortuga/feature/EGCETSII#20-voting-form
Feature/EGCETSII#20 voting form
2 parents 7e9fb3e + a719e97 commit 44729b4

16 files changed

Lines changed: 456 additions & 243 deletions

File tree

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { axios } from "api/axios";
22

3-
43
const baseApi = {
54
// KEYS OPERATIONS
65
//Bulk operation
@@ -11,8 +10,7 @@ const baseApi = {
1110
getKey: (id: string) => axios.get(`/base/key/${id}`),
1211
createKey: (key: any) => axios.post("/base/key/", key),
1312
updateKey: (key: any) => axios.put(`/base/key/${key.id}`, key),
14-
deleteKey: (id: string) => axios.delete(`/base/key/${id}`),
15-
13+
deleteKey: (id: string) => axios.delete(`/base/key/${id}`),
1614

1715
// AUTH OPERATIONS
1816
//Bulk operation
@@ -23,8 +21,7 @@ const baseApi = {
2321
//Individual operations
2422
getAuth: (id: string) => axios.get(`/base/auth/${id}`),
2523
updateAuth: (auth: any) => axios.put(`/base/auth/${auth.id}`, auth),
26-
deleteAuth: (id: string) => axios.delete(`/base/auth/${id}`)
24+
deleteAuth: (id: string) => axios.delete(`/base/auth/${id}`),
2725
};
2826

29-
30-
export default baseApi;
27+
export default baseApi;
Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,16 @@
11
import { axios } from "api/axios";
22
import { Census } from "types/census";
33

4-
54
const censusApi = {
65
//Bulk operation
76
getCensuss: () => axios.get("/census"),
8-
deleteCensuss: () => axios.delete(`/census`),
9-
7+
deleteCensuss: () => axios.delete(`/census`),
108

119
//Individual operations
1210
getCensus: (id: string) => axios.get(`/census/${id}`),
1311
createCensus: (census: Census) => axios.post("/census/", census),
1412
updateCensus: (census: Census) => axios.put(`/census/${census.id}`, census),
15-
deleteCensus: (id: string) => axios.delete(`/census/${id}`),
16-
};
17-
13+
deleteCensus: (id: string) => axios.delete(`/census/${id}`),
14+
};
1815

19-
export default censusApi;
16+
export default censusApi;
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import userApi from "./userApiUtils";
22
import authApi from "./authApiUtils";
3+
import votingApi from "./votingApiUtils";
34

4-
export { authApi, userApi };
5+
export { authApi, userApi, votingApi };

decide/administration/frontend/src/api/votingApiUtils.ts

Lines changed: 45 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,60 @@
11
import { axios } from "api/axios";
2-
import { Question, Voting } from "types/voting";
3-
2+
import { votingType } from "types";
43

54
const votingApi = {
5+
//QUESTION API
6+
//Bulk Operations
7+
getQuestions: () => axios.get("/voting/question"),
8+
deleteQuestions: (idList: number[]) =>
9+
axios.delete("/voting/questions", {
10+
data: { idList: idList },
11+
}),
12+
deleteAllQuestions: () => axios.delete(`/voting/question`),
13+
14+
//Individual Operations
15+
getQuestion: (questionId: number) =>
16+
axios.get(`/voting/question/${questionId}/`),
17+
createQuestion: (question: votingType.Question) =>
18+
axios.post("/voting/question/", question),
19+
updateQuestion: (question: votingType.Question, questionId: number) =>
20+
axios.put(`/voting/question/${questionId}/`, question),
21+
deleteQuestion: (questionId: number) =>
22+
axios.delete(`/voting/question/${questionId}/`),
23+
24+
//VOTING API
25+
//Bulk Operations
26+
getVotings: () => axios.get(`/votings`),
27+
deleteVotings: (idList: number[]) =>
28+
axios.delete("/votings", {
29+
data: { idList: idList },
30+
}),
31+
deleteAllVotings: () => axios.delete(`/votings`),
632

7-
//QUESTION API
8-
//Bulk Operations
9-
getQuestions: () => axios.get("/voting/question"),
10-
deleteQuestions: (idList: any) => axios.delete("/voting/questions", idList),
11-
deleteAllQuestions: () => axios.delete(`/voting/question`),
12-
13-
//Individual Operations
14-
getQuestion: (question_id: number) => axios.get(`/voting/question/${question_id}`),
15-
createQuestion: (question: Question) => axios.post("/voting/question/", question),
16-
updateQuestion: (question: Question, question_id: number) => axios.put(`/voting/question/${question_id}`, question),
17-
deleteQuestion: (question_id: number) => axios.delete(`/voting/question/${question_id}`),
18-
19-
20-
//VOTING API
21-
//Bulk Operations
22-
getVotings:() => axios.get(`/votings`),
23-
deleteVotings: (idList: any) => axios.delete("/votings", idList),
24-
deleteAllVotings: () => axios.delete(`/votings`),
25-
26-
startVotings:(
27-
idList:any[]
28-
) =>
33+
startVotings: (idList: number[]) =>
2934
axios.put("/votings", {
30-
idList: idList,
31-
action: "start",
35+
idList: idList,
36+
action: "start",
3237
}),
3338

34-
stopVotings:(
35-
idList:any[]
36-
) =>
39+
stopVotings: (idList: number[]) =>
3740
axios.put("/votings", {
38-
idList: idList,
39-
action: "stop",
41+
idList: idList,
42+
action: "stop",
4043
}),
4144

42-
tallyVotings:(
43-
idList:any[]
44-
) =>
45+
tallyVotings: (idList: number[]) =>
4546
axios.put("/votings", {
46-
idList: idList,
47-
action: "tally",
47+
idList: idList,
48+
action: "tally",
4849
}),
49-
50-
//Individual Operations
51-
getVoting: (voting_id: number) => axios.get(`/votings/${voting_id}`),
52-
createVoting: (voting: Voting) => axios.post("/votings", voting),
53-
updateVoting: (voting: Voting, voting_id: number) => axios.put(`/votings/${voting_id}`, voting),
54-
deleteVoting: (voting_id: number) => axios.delete(`/votings/${voting_id}`),
50+
51+
//Individual Operations
52+
getVoting: (votingId: number) => axios.get(`/votings/${votingId}/`),
53+
createVoting: (voting: votingType.VotingFormFields) =>
54+
axios.post("/votings", voting),
55+
updateVoting: (voting: votingType.VotingFormFields, votingId: number) =>
56+
axios.put(`/votings/${votingId}/`, voting),
57+
deleteVoting: (votingId: number) => axios.delete(`/votings/${votingId}/`),
5558
};
5659

5760
export default votingApi;
58-

decide/administration/frontend/src/components/02-molecules/Table/table.tsx

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,17 @@ const Component = (props: {
66
rows: any[];
77
columns: GridColDef[];
88
setSelected: any;
9+
initialSelection?: number[];
910
}) => {
1011
const filterRows = React.useCallback(
1112
(ids: any[]) => {
12-
console.log(ids);
1313
return props.rows.filter((row: any) => ids.includes(row.id));
1414
},
1515
[props.rows]
1616
);
1717

1818
const [selectionModel, setSelectionModel] =
19-
React.useState<GridSelectionModel>([]);
19+
React.useState<GridSelectionModel>(props.initialSelection || []);
2020

2121
const updateSelectionModel = React.useCallback(
2222
(newSelection: GridSelectionModel) => {
@@ -26,6 +26,11 @@ const Component = (props: {
2626
[props, filterRows]
2727
);
2828

29+
React.useEffect(() => {
30+
updateSelectionModel(selectionModel);
31+
// eslint-disable-next-line react-hooks/exhaustive-deps
32+
}, [props.rows]);
33+
2934
return (
3035
<div className="w-full">
3136
<DataGrid
@@ -34,7 +39,7 @@ const Component = (props: {
3439
columns={props.columns}
3540
pageSize={10}
3641
checkboxSelection
37-
selectionModel={selectionModel}
42+
selectionModel={props.initialSelection || selectionModel}
3843
onSelectionModelChange={(e) => updateSelectionModel(e)}
3944
/>
4045
</div>

0 commit comments

Comments
 (0)