this.props.selectArticles(e,this.props.id)} id="bulle" onMouseEnter={this.handleDesc} onMouseLeave={this.handlePhoto}>
{this.state.redcrossPressed ?
Tu veux vraiment supprimer cet article ?
@@ -189,7 +102,7 @@ class ArticleDetails extends React.Component {
-
{this.state.quantity}
+
{this.props.quantity}
@@ -200,8 +113,6 @@ class ArticleDetails extends React.Component {
:
// INLINE
-
- // NOT SELECTED
diff --git a/src/js/Components/Articles.js b/src/js/Components/Articles.js
index f7c35c7..ede1d13 100644
--- a/src/js/Components/Articles.js
+++ b/src/js/Components/Articles.js
@@ -15,28 +15,12 @@ class Articles extends React.Component {
console.log(articles);
for (let i = 0; i
{
-
- switch (color) {
- case "white":
- element.style.cssText = "background-color:rgba(255, 255, 255, 0.75);"
- break;
- case "grey" :
- element.style.cssText = "background-color:rgba(105, 105, 105, 0.28);"
- break;
- case "red" :
- element.style.cssText = "background-color:rgba(255, 21, 21, 0.28);"
- break;
- case "red&white" :
- element.style.cssText = "background-color:rgba(255, 107, 107, 0.28);"
- break;
- }
- }
+
@@ -46,7 +30,7 @@ class Articles extends React.Component {
{
this.props.articles.map((article) =>
-
+
)}
diff --git a/src/js/Components/Selected.js b/src/js/Components/Selected.js
index 8d220c5..638632f 100644
--- a/src/js/Components/Selected.js
+++ b/src/js/Components/Selected.js
@@ -16,52 +16,11 @@ class Selected extends Component {
}
minusQuantitySelected = () => {
- this.updateArticle(-1)
+ this.props.updateArticles(-1)
}
plusQuantitySelected = () => {
- this.updateArticle(1)
- }
-
- updateArticle = (value) => {
-
- for (let i = 0 ; i < this.props.selectedArticles.length ; i++) {
-
- axios.put(`https://etud.insa-toulouse.fr/~proximo/v2/api/articles/${this.props.selectedArticles[i].id}`,
- {
- 'name':this.props.selectedArticles[i].name,
- 'description':this.props.selectedArticles[i].description,
- 'quantity':this.props.selectedArticles[i].quantity+value,
- 'price':this.props.selectedArticles[i].price,
- 'code':this.props.selectedArticles[i].code,
- 'category_id':this.props.selectedArticles[i].category.id
- }
- )
- .then(res => {
- console.log(res.data)
- })
- .catch(error => {
- console.log(error.response)
- })
-
- }
-
-
- }
-
- deleteSelectedArticles = () => {
-
- for (let i = 0 ; i < this.props.selectedArticles.length ; i++) {
-
- axios.delete(`https://etud.insa-toulouse.fr/~proximo/v2/api/articles/${this.props.selectedArticles[i].id}`)
- .then(res => {
- console.log(res.data)
- })
- .catch(error => {
- console.log(error.response)
- })
-
- }
+ this.props.updateArticles(1)
}
@@ -84,7 +43,7 @@ class Selected extends Component {
-
+
diff --git a/src/js/Views/Stock.js b/src/js/Views/Stock.js
index 0bf2841..e110222 100644
--- a/src/js/Views/Stock.js
+++ b/src/js/Views/Stock.js
@@ -15,7 +15,7 @@ import AppLoader from '../Components/AppLoader';
import Categories from '../Components/Categories';
import EditCategory from '../Components/EditCategory';
import Sort from '../Components/Sort';
-import { Link } from 'react-router-dom';
+import { Link, Redirect } from 'react-router-dom';
import Selected from '../Components/Selected';
export default class Stock extends React.Component {
@@ -38,7 +38,8 @@ export default class Stock extends React.Component {
lowToHigh: true,
selectedArticles:[],
counter:0,
- code:''
+ code:'',
+
}
}
@@ -47,11 +48,190 @@ export default class Stock extends React.Component {
}
+
+
+ deleteSelectedArticles = () => {
+ for (let i = 0 ; i < this.state.selectedArticles.length ; i++) {
+
+ axios.delete(`https://etud.insa-toulouse.fr/~proximo/v2/api/articles/${this.state.selectedArticles[i].id}`)
+ .then(res => {
+ console.log(res.data)
+ if (i === this.state.selectedArticles.length-1){
+ this.setState({counter:0,selectedArticles:[]},()=>{
+ this.getArticles()
+ })
+ }
+ })
+ .catch(error => {
+ console.log(error.response)
+ })
+ }
+}
+
+ // OnClick : selon si on clique sur tel ou tel element : on va colorer en blanc et selectionner
+ // on va minus ou plus quantity et colorer en rouge
+
+ selectArticles = (e,id) => {
+ let currentElement = e.target;
+ let iconElement;
+ if (e.target.tagName === "path"){
+ currentElement = e.target.parentElement
+ iconElement = currentElement
+ }
+ if ((e.target.id === "minusIcon") || (e.target.id === "plusIcon")){
+ iconElement = currentElement
+ }
+ while (currentElement.id !== "bulle"){
+ currentElement = currentElement.parentElement
+ }
+
+ if ((e.target.id !== "categoryIcon") && (e.target.id !== "penblue") && (e.target.id !== "crossred") && (e.target.id !== "") && (e.target.id !== "bluepen") && (e.target.id !== "redcross") && (e.target.id !== "no") && (e.target.id !== "minusIcon") && (e.target.id !== "plusIcon")){
+ let index = this.getArticleById(id).i;
+ let articles = this.state.articles;
+ articles[index].selected = !this.state.articles[index].selected;
+ console.log(articles[index].selected);
+ this.setState({articles:articles},()=>{
+ if (this.state.articles[index].selected){
+ this.select(id)
+ if (this.state.articles[index].quantity === 0){
+ this.colorArticle("red&white",currentElement)
+ } else {
+ this.colorArticle("white",currentElement)
+ }
+ } else {
+ this.deselect(id)
+ if (this.state.articles[index].quantity === 0){
+ this.colorArticle("red",currentElement)
+ } else {
+ this.colorArticle("grey",currentElement)
+ }
+ }
+ })
+ } else if (iconElement.id === "minusIcon"){
+ this.minusQuantity(currentElement,id)
+ } else if (iconElement.id === "plusIcon"){
+ this.plusQuantity(currentElement,id)
+ }
+ }
+
+ colorArticle = (color,element) => {
+
+ switch (color) {
+ case "white":
+ element.style.cssText = "background-color:rgba(255, 255, 255, 0.75);"
+ break;
+ case "grey" :
+ element.style.cssText = "background-color:rgba(105, 105, 105, 0.28);"
+ break;
+ case "red" :
+ element.style.cssText = "background-color:rgba(255, 21, 21, 0.28);"
+ break;
+ case "red&white" :
+ element.style.cssText = "background-color:rgba(255, 107, 107, 0.28);"
+ break;
+ }
+}
+
+ plusQuantity = (element,id) => {
+ let index = this.getArticleById(id).i;
+ let articles = this.state.articles;
+ articles[index].quantity++;
+ console.log(articles[index]);
+ this.setState({articles:articles},()=>{
+ this.updateArticle(index,id);
+ if (this.state.articles[index].quantity > 0 ){
+ if (this.state.articles[index].selected){
+ this.colorArticle("white",element)
+ } else {
+ this.colorArticle("grey",element)
+ }
+ }
+ })
+}
+
+minusQuantity = (element,id) => {
+ let index = this.getArticleById(id).i;
+
+ if (this.state.articles[index].quantity > 0){
+ let articles = this.state.articles;
+ articles[index].quantity--;
+ console.log(articles[index]);
+ this.setState({articles:articles},()=>{
+ this.updateArticle(index,id);
+ if (this.state.articles[index].quantity === 0 ){
+ if (this.state.articles[index].selected){
+ this.colorArticle("red&white",element)
+ } else {
+ this.colorArticle("red",element)
+ }
+ }
+ })
+ }
+}
+
+updateSelectedArticles = (value) => {
+
+ let articles = this.state.selectedArticles;
+
+ for (let i = 0 ; i < this.state.selectedArticles.length ; i++) {
+
+
+ if (articles[i].quantity >= 0){
+ articles[i].quantity+=value;
+ }
+ // implémenter une fonction pour récupérer l'élément correspondant à l'id
+
+ this.setState({selectedArticles:articles},() => {
+ axios.put(`https://etud.insa-toulouse.fr/~proximo/v2/api/articles/${this.state.selectedArticles[i].id}`,
+ {
+ 'name':this.state.selectedArticles[i].name,
+ 'description':this.state.selectedArticles[i].description,
+ 'quantity':this.state.selectedArticles[i].quantity,
+ 'price':this.state.selectedArticles[i].price,
+ 'code':this.state.selectedArticles[i].code,
+ 'category_id':this.state.selectedArticles[i].category.id
+ }
+ )
+
+ .then(res => {
+ console.log(res.data)
+ })
+ .catch(error => {
+ console.log(error.response)
+ })
+
+
+ })
+
+ }
+
+
+}
+
+updateArticle = (index,id) => {
+ axios.put(`https://etud.insa-toulouse.fr/~proximo/v2/api/articles/${id}`,
+ {
+ 'name':this.state.articles[index].name,
+ 'description':this.state.articles[index].description,
+ 'quantity':this.state.articles[index].quantity,
+ 'price':this.state.articles[index].price,
+ 'code':this.state.articles[index].code,
+ 'category_id':this.state.articles[index].category.id
+ }
+ )
+ .then(res => {
+ console.log(res.data)
+ })
+ .catch(error => {
+ console.log(error.response)
+ })
+}
+
select = (id) => {
console.log(id)
this.setState({counter:this.state.counter+1},()=>{
console.log(this.state.counter)
- this.state.selectedArticles.push(this.getArticleById(id))
+ this.state.selectedArticles.push(this.getArticleById(id).current)
console.log(this.state.selectedArticles)
})
}
@@ -68,14 +248,14 @@ export default class Stock extends React.Component {
trouve = !trouve;
}
}
- return(current);
+ return({current,i});
}
deselect = (id) => {
this.setState({counter:this.state.counter-1},()=>{
console.log(this.state.counter)
- this.setState({selectedArticles: this.state.selectedArticles.filter((item) => item !== this.getArticleById(id))},()=>{
+ this.setState({selectedArticles: this.state.selectedArticles.filter((item) => item !== this.getArticleById(id).current)},()=>{
console.log(this.state.selectedArticles)
})
@@ -131,6 +311,9 @@ export default class Stock extends React.Component {
getArticles = () => {
axios.get('https://etud.insa-toulouse.fr/~proximo/v2/api/articles')
.then(res => {
+ for (let i = 0; i
{
console.log(this.state.articles)
this.setState({sortType: "name"})
@@ -187,21 +370,7 @@ export default class Stock extends React.Component {
this.setState({onEditCategory:false})
}
- // handleChangeSortType = (e) => {
- // console.log(e.target.value)
- // this.setState({sortType:e.target.value},()=>{
- // if (this.state.sortType === "Ordre Alphabétique"){
- // this.sortArticles("name")
- // } else if(this.state.sortType === "Catégorie"){
- // this.sortArticles("category_id")
- // } else if(this.state.sortType === "Quantité"){
- // this.sortArticles("quantity")
- // } else if(this.state.sortType === "Prix"){
- // this.sortArticles("price");
- // }
- // })
- // }
//ATTENTION ça a changé, on passe directement le string en argument (j'avais besoin d'utiliser cette fonction autrement, voir dans Sort.js)
handleChangeSortType = (type) => {
@@ -277,13 +446,13 @@ export default class Stock extends React.Component {
{this.state.articles && this.state.articles[0] ?
this.state.onSortedCategories ?
-
- :
+
+ :
:
}