connect traits view with backend
This commit is contained in:
		
							parent
							
								
									ab0b6efccc
								
							
						
					
					
						commit
						0a130fe955
					
				| @ -71,3 +71,45 @@ def set_questions(): | ||||
|     db.session.commit() | ||||
| 
 | ||||
|     return {"error": 0} | ||||
| 
 | ||||
| @routes_api_admin.route("/setTraits", methods=["GET", "POST"]) | ||||
| def set_traits(): | ||||
|     input_lang = flask.request.json["lang"] | ||||
|     input_traits = flask.request.json["traits"] | ||||
| 
 | ||||
| 
 | ||||
|     db_traits = db.session.query(Trait).all() | ||||
|      | ||||
|     modified_db_traits = [] | ||||
|     for input_trait in input_traits: | ||||
|         if input_trait["id"]: | ||||
|             # modify | ||||
|             db_trait = list(filter(lambda db_trait: db_trait.TRAIT_ID == int(input_trait["id"]), db_traits))[0] | ||||
|              | ||||
|             db.session.delete(db_trait.Name.TEXTS[0]) | ||||
|             db.session.delete(db_trait.Desc.TEXTS[0]) | ||||
|             db_trait.Name.TEXTS = [Text(None, None, input_lang, input_trait["name"])] | ||||
|             db_trait.Desc.TEXTS = [Text(None, None, input_lang, input_trait["desc"])] | ||||
|              | ||||
|             db.session.add(db_trait) | ||||
|             modified_db_traits.append(db_trait) | ||||
|         else: | ||||
|             # add | ||||
|             new_trait = Trait(None, None, None) | ||||
|              | ||||
|             new_trait.Name = Locale(None) | ||||
|             new_trait.Desc = Locale(None) | ||||
| 
 | ||||
|             new_trait.Name.TEXTS.append(Text(None, None, input_lang, input_trait["name"])) | ||||
|             new_trait.Desc.TEXTS.append(Text(None, None, input_lang, input_trait["desc"])) | ||||
|              | ||||
|             db.session.add(new_trait) | ||||
| 
 | ||||
|     # delete | ||||
|     for db_trait in db_traits: | ||||
|         if db_trait not in modified_db_traits: | ||||
|             db.session.remove() | ||||
| 
 | ||||
|     db.session.commit() | ||||
| 
 | ||||
|     return {"error": 0} | ||||
| @ -11,12 +11,14 @@ | ||||
|     {%endfor%} | ||||
| </section> | ||||
| <button onclick="addNewInput()">Add new</button> | ||||
| <button onclick="saveForm()">Save changes</button> | ||||
| 
 | ||||
| <p>Images are viewable in the npc views</p> | ||||
| 
 | ||||
| <script src="/static/js/api.js"></script> | ||||
| <script> | ||||
| 
 | ||||
| function addNewInput(){     | ||||
| function addNewInput(){ | ||||
|     let newTrait = traits.lastElementChild.cloneNode(true); | ||||
|     newTrait.id = ""; | ||||
|     newTrait.querySelector(".name_input").value = ""; | ||||
| @ -24,4 +26,16 @@ function addNewInput(){ | ||||
|     traits.appendChild(newTrait); | ||||
| } | ||||
| 
 | ||||
| function saveForm(){ | ||||
|     let data = []; | ||||
|     for(let section of traits.querySelectorAll("section")){ | ||||
|         let trait = {}; | ||||
|         trait["id"] = section.id | ||||
|         trait["name"] = section.querySelector(".name_input").value | ||||
|         trait["desc"] = section.querySelector(".desc_input").value | ||||
|         data.push(trait); | ||||
|     } | ||||
|     makeAPIRequest("admin/setTraits", {"traits": data, "lang": "FR"}, {"content": "json"}) | ||||
| } | ||||
| 
 | ||||
| </script> | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user