From 6f52ee42baf1b5276a6be5ee0f1e807c7e1b479e Mon Sep 17 00:00:00 2001 From: Joshua Sigona Date: Sat, 14 Aug 2021 18:41:58 +0900 Subject: [PATCH] Finish skill tree backend and frontend connections --- src/App.js | 23 +++++++---- src/skilltree/skillTreeEditor.js | 69 ++++++++++++++++++++++++-------- 2 files changed, 69 insertions(+), 23 deletions(-) diff --git a/src/App.js b/src/App.js index c3357f0..b5724e8 100644 --- a/src/App.js +++ b/src/App.js @@ -357,7 +357,7 @@ function AdminPanel(p) { {page:"Skills",url:"/admin/skills",table:"/skill"}, {page:"Skill Types",url:"/admin/skilltypes",table:"/skill_type"}, {page:"Skill Data",url:"/admin/skilldata",table:"/skill_data"}, - {page:Skill Tree Editor,url:"/admin/skilltreeeditor",render:}, + {page:Skill Tree Editor,url:"/admin/skilltreeeditor",render:}, {page:"Skill Tree Data",url:"/admin/skilltreedata",table:"/skill_tree_data"}, {page:"Photon Arts",url:"/admin/photonarts",table:"/photon_art",duplicate:true}, {page:"Class Skills",url:"/admin/classskills",table:"/class_skill",duplicate:true}, @@ -753,6 +753,7 @@ function App() { const [TESTMODE,setTESTMODE] = useState(false) const [DATA,setDATA] = useState({GetData:()=>{}}) const [DATAID,setDATAID] = useState({GetData:()=>{}}) + const [update,setUpdate] = useState(false) const [LOGGEDINUSER,setLOGGEDINUSER] = useState("") const [LOGGEDINHASH,setLOGGEDINHASH] = useState("") @@ -765,6 +766,19 @@ function App() { return data!==undefined?data[table]!==undefined?data[table][row]!==undefined?data[table][row][col]!==undefined?data[table][row][col]:data[table][row]:data[table]:data:"no data" } + useEffect(()=>{ + if (update) { + setUpdate(false) + axios.get(GetBackendURL({TESTMODE:TESTMODE})+"/data") + .then((data)=>{ + setDATA(data.data) + }) + axios.get(GetBackendURL({TESTMODE:TESTMODE})+"/dataid") + .then((data)=>{ + setDATAID(data.data) + }) + } + },[update]) useEffect(()=>{ axios.get(GetBackendURL({TESTMODE:TESTMODE})+"/data") @@ -786,7 +800,7 @@ function App() { {APP_TITLE+" - Admin Panel"} - + @@ -836,11 +850,6 @@ function App() { - - - - - {APP_TITLE} diff --git a/src/skilltree/skillTreeEditor.js b/src/skilltree/skillTreeEditor.js index f197976..d25a8ec 100644 --- a/src/skilltree/skillTreeEditor.js +++ b/src/skilltree/skillTreeEditor.js @@ -7,9 +7,11 @@ function SkillTreeEditor(p) { const ADJUSTMENT = [-32,-32] + const [firstLoad,setFirstLoad] = useState(true) + const [classList,setClassList] = useState({}) const [skillTreeData,setSkillTreeData] = useState({}) - const [cl,setCl] = useState(0) + const [cl,setCl] = useState(-1) const [lineColor,setLineColor] = useState("#000000") const [lineWidth,setLineWidth] = useState(3) const [dimensionX,setDimensionX] = useState(6) @@ -25,7 +27,7 @@ function SkillTreeEditor(p) { const [loading,setLoading] = useState(false) function GetSkills(x,y) { - var filtered = skillData.filter((skill)=>Number(skill[0])===x&&Number(skill[1])===y) + var filtered = skillData.filter((skill)=>Number(skill.split(",")[0])===Number(x)&&Number(skill.split(",")[1])===Number(y)) if (filtered.length>0) { return filtered[0] } else { @@ -35,12 +37,29 @@ function SkillTreeEditor(p) { function SaveSkillTrees() { axios.post(p.BACKENDURL+"/saveskilltree",{ - + pass:p.password, + data:skillLines.slice(0,dimensionY).map((str)=>str.slice(0,dimensionX)).join(','), + skill_data:skillData.join(';'), + line_color:lineColor, + line_width:lineWidth, + gridsizex:gridSizeX, + gridsizey:gridSizeY, + gridpaddingx:gridPaddingX, + gridpaddingy:gridPaddingY, + class_id:cl }) .then((data)=>{ - + if (data.data==="OK!") { + setMessage({"Successfully saved skill tree for "+p.GetData("class",undefined,undefined,true)[cl].name+"!"}) + p.setUpdate(true) + } + }) + .catch((err)=>{ + setMessage({err.message}) + }) + .then(()=>{ + setLoading(false) }) - setLoading(false) } useEffect(()=>{ @@ -50,6 +69,7 @@ function SkillTreeEditor(p) { useEffect(()=>{ var keys = Object.keys(skillTreeData) + var found = false for (var id of keys) { //console.log(cl+"/"+skillTreeData[id].class_id) if (Number(skillTreeData[id].class_id)===Number(cl)) { @@ -65,12 +85,22 @@ function SkillTreeEditor(p) { setGridSizeY(skillTreeData[id].gridsizey) setGridPaddingX(skillTreeData[id].gridpaddingx) setGridPaddingY(skillTreeData[id].gridpaddingy) + found=true } } + if (!found) { + setSkillLines([]) + setSkillData([]) + setDimensionX(6) + setDimensionY(6) + } },[skillTreeData,cl]) useEffect(()=>{ - setCl(Object.keys(classList)[0]) + if (firstLoad) { + setCl(Object.keys(classList)[0]) + setFirstLoad(false) + } },[classList]) useEffect(()=>{ @@ -127,27 +157,34 @@ function SkillTreeEditor(p) { return <> {loading?:<> +

{message}

-
+ }}>{"Save "+p.GetData("class",undefined,undefined,true)[cl]?.name+" Skill Tree"}}
{renderedInputs.map((control)=>control)} - {setLineColor(f.currentTarget.value)}}/> - {setLineWidth(f.currentTarget.value)}}/> - {setDimensionX(f.currentTarget.value)}}/> - {setDimensionY(f.currentTarget.value)}}/> - {setGridSizeX(f.currentTarget.value)}}/> - {setGridSizeY(f.currentTarget.value)}}/> - {setGridPaddingX(f.currentTarget.value)}}/> - {setGridPaddingY(f.currentTarget.value)}}/> +
+
+
+ {setLineColor(f.currentTarget.value)}}/>
+ {setLineWidth(f.currentTarget.value)}}/>
+ {setDimensionX(f.currentTarget.value)}}/>
+ {setDimensionY(f.currentTarget.value)}}/>
+ {setGridSizeX(f.currentTarget.value)}}/>
+ {setGridSizeY(f.currentTarget.value)}}/>
+ {setGridPaddingX(f.currentTarget.value)}}/>
+ {setGridPaddingY(f.currentTarget.value)}}/>
}