From c9321dc7e59935f8a115d6928e8cbb61fd0edf7a Mon Sep 17 00:00:00 2001 From: N0rdye Date: Mon, 10 Jul 2023 14:41:59 +0500 Subject: [PATCH] added object edit --- db.js | 27 ++++++- index.js | 29 +++++-- object.js | 68 ++++++++++++++-- views/admin/objects/object_creation.ejs | 49 +++++++++++- views/admin/objects/object_edit.ejs | 102 +++++++++++++++++++++--- views/admin/objects/object_groups.ejs | 2 + views/admin/users/user_edit.ejs | 2 +- views/header.ejs | 17 ++++ 8 files changed, 265 insertions(+), 31 deletions(-) diff --git a/db.js b/db.js index 5c69272..1cfcaa3 100644 --- a/db.js +++ b/db.js @@ -81,8 +81,8 @@ module.exports.ggv = (table,ekey,key,value,callback,prevs = false) => { // set value where module.exports.sv = (table,key,value,ekey,evalue,callback,prevs = false,no_srt = false) => { value = (no_srt)? value:`'${value}'`; + // console.log(`UPDATE ${table} SET ${key} = ${value} WHERE ${ekey} = '${evalue}'`); db(prevs).query(`UPDATE ${table} SET ${key} = ${value} WHERE ${ekey} = '${evalue}'`, (err , rows) => { - // console.log("UPDATE `"+table+"` SET `"+key+"` = '"+value+"' WHERE `"+ekey+"` = '"+evalue+"'"); if (err) { console.log("sql err"); throw err; @@ -91,6 +91,31 @@ module.exports.sv = (table,key,value,ekey,evalue,callback,prevs = false,no_srt = } }) } + +module.exports.uv = (table,keys,values,ekey,evalue,callback,prevs = false,no_srt = false) => { + values = values.split("."); + keys = keys.split("."); + let sets = ''; + for (let i = 0; i < keys.length; i++) { + if(i != keys.length-1){ + sets+=`${keys[i]} = ${values[i]},`; + } + else{ + sets+=`${keys[i]} = ${values[i]}`; + } + + } + // console.log(`UPDATE ${table} SET ${sets} WHERE ${ekey} = '${evalue}'`); + db(prevs).query(`UPDATE ${table} SET ${sets} WHERE ${ekey} = '${evalue}'`, (err , rows) => { + if (err) { + console.log("sql err"); + throw err; + }else{ + if(callback)callback(rows); + } + }) +} + // new record module.exports.nr = (table,keys,values,prevs = false,callback) =>{ // console.log('INSERT INTO `'+table+'`('+keys+') VALUES ('+values+')'); diff --git a/index.js b/index.js index 8a02e90..7ea4ece 100644 --- a/index.js +++ b/index.js @@ -212,7 +212,7 @@ app.get("/get_logs", (req,res) => { try{let cook = req.cookies;func.sid(cook,res,()=>{func.logs_file(res);})} catch (error) {func.log("router logs download error - "+error);} }) -app.post("/new_obj", (req,res) => { +app.post("/admin/obj/new", (req,res) => { try{ let inp = req.body; let cook = req.cookies; @@ -223,6 +223,28 @@ app.post("/new_obj", (req,res) => { func.log("router object creating error - "+error); } }) +app.post("/admin/obj/edit", (req,res) => { + try{ + let inp = req.body; + let cook = req.cookies; + func.sid(cook,res,()=>{ + obj.save(inp,cook,res); + },true,true) + } catch (error) { + func.log("router object creating error - "+error); + } +}) +app.post("/admin/obj/del", (req,res) => { + try{ + let inp = req.body; + let cook = req.cookies; + func.sid(cook,res,()=>{ + obj.del(inp,cook,res); + },true,true) + } catch (error) { + func.log("router object creating error - "+error); + } +}) app.post("/admin/new/group", (req,res) => { try{ let inp = req.body; @@ -300,11 +322,6 @@ app.post("/admin/users/del/user", (req,res) => { func.log("router object creating error - "+error); } }) -app.post("/admin/change_objs", (req,res) => { - try{let cook = req.cookies;func.sid(cook,res,()=>{func.logs_file(res);})} - catch (error) {func.log("router logs download error - "+error);} -}) - diff --git a/object.js b/object.js index 1a50bbd..d85c982 100644 --- a/object.js +++ b/object.js @@ -30,14 +30,14 @@ module.exports.new = (inp,cook,res)=>{ try { db.ggv("object_groups","name","id",`'${inp["gid"]}'`,(gname)=>{gname = gname[0] db.ggv("objects","name","gid",`'${inp["gid"]}' AND name = '${inp["name"]}/g/${gname["name"]}'`,(db_name)=>{ - if(db_name[0] != null){ - res.send({out:"bad",err:"name"}); - } - else if (db_name[0] == null){ - db.nr("objects","`name`,`img`,`height`,`width`,`description`,`gid`",`'${inp["name"]}/g/${gname["name"]}','${inp["img"]}','${inp["height"]}','${inp["width"]}','${inp["desc"]}','${inp["gid"]}'`,true); - db.sv("object_groups","count",`(count + 1)`,"id",inp["gid"],()=>{},true,true) - func.log(`admin object created name:${inp["name"]} group:${gname["name"]}`); - res.send({out:"good"}); + if(db_name[0] != null){ + res.send({out:"bad",err:"name"}); + } + else if (db_name[0] == null){ + db.nr("objects","`name`,`img`,`height`,`width`,`description`,`gid`",`'${inp["name"]}/g/${gname["name"]}','${inp["img"]}','${inp["height"]}','${inp["width"]}','${inp["desc"]}','${inp["gid"]}'`,true); + db.sv("object_groups","count",`(count + 1)`,"id",inp["gid"],()=>{},true,true) + func.log(`admin object created name:${inp["name"]} group:${gname["name"]}`); + res.send({out:"good"}); } // console.log(db_name); // db.ggv("objects","gid","name",`'${inp["name"]}'`,(db_name)=>{ @@ -49,6 +49,58 @@ module.exports.new = (inp,cook,res)=>{ } } +module.exports.save = (inp,cook,res)=>{ + try { + // let changed = []; + let changes = JSON.parse(inp["changes"]); + let taken_name = false; + Object.entries(changes).forEach(([key,value]) => { + // console.log(key,value); + // console.log( Object.keys(changes).pop()); + if(key == "name"){ + db.ggv("objects","id","name",`'${value}'`,(gname)=>{gname = gname[0] + if(gname == null){ + db.sv("objects",key,value,"id",inp["id"],()=>{ + chack_if_last(key) + },true); + } + else{ + taken_name = true; + // console.log(taken_name); + chack_if_last(key) + } + }) + } + else if (key != "name"){ + // console.log("not name"); + db.sv("objects",key,value,"id",inp["id"],()=>{ + chack_if_last(key) + },true); + // changed.push(key); + } + }); + function chack_if_last(key){ + if(key == Object.keys(changes).at(-1)){ + res.send({out:"good",name_err:taken_name}); + } + } + } catch (error) { + func.log("backend object creating error - "+error); + } +} +module.exports.del = (inp,cook,res)=>{ + try { + let name = inp["name"].split("/")[0]; + let group = inp["name"].split("/").at(-1); + db.dl("objects",`id`,`'${inp["id"]}' AND gid = '${inp["gid"]}'`,()=>{ + func.log(`admin group deleted ${name} from ${group}`); + res.send({out:"good"}); + },true); + } catch (error) { + func.log("backend single object loading err0r - "+error); + } +} + module.exports.load_groups = (inp,cook,res)=>{ try { db.gav("object_groups","0",(gdata)=>{ diff --git a/views/admin/objects/object_creation.ejs b/views/admin/objects/object_creation.ejs index 1dbc530..3e14080 100644 --- a/views/admin/objects/object_creation.ejs +++ b/views/admin/objects/object_creation.ejs @@ -21,7 +21,10 @@ } -

<%= lang("create new object") %>

+
+

object

+

creation

+
@@ -37,7 +40,7 @@
"> - +
@@ -56,6 +59,9 @@
+
+ +
@@ -76,6 +82,41 @@ } } + + function set_obj_edit_params(img = "",name = "",description="",height = 100,width = 100){ + if(img ==""&&name ==""&&description == ""){ + document.getElementById("object_edit_type").innerText = "creation"; + document.getElementById("obj_apply_btn").innerText = "create object"; + document.getElementById("obj_apply_btn").setAttribute("onclick","create_obj()"); + }else { + document.getElementById("object_edit_type").innerText = "edit"; + document.getElementById("obj_apply_btn").innerText = "save edited object"; + document.getElementById("obj_apply_btn").setAttribute("onclick","save_edited_obj()"); + } + + let img_file = document.getElementById("img_file"); + let img_prev = document.getElementById("img_prev"); + let name_div = document.getElementById("nobj_name"); + let description_div = document.getElementById("nobj_description"); + + let height_slider = document.getElementById("obj_height"); + let height_text = document.getElementById("obj_height_value"); + let width_slider = document.getElementById("obj_width"); + let width_text = document.getElementById("obj_width_value"); + + name_div.value = name; + img_file.value = null; + img_prev.src = img; + img_prev.style.height = `${height*2}px`; + img_prev.style.width = `${width*2}px`; + description_div.value = description; + + height_slider.value = height; + width_slider.value = width; + height_text.innerText = `${height}см`; + width_text.innerText = `${width}см`; + } + function previewFile() { var preview = document.querySelector('img'); var file = document.querySelector('input[type=file]').files[0]; @@ -94,7 +135,7 @@ function new_obj(name,img,height,width,description,callback){ let select = document.getElementById("group_select"); - $.post( "/new_obj", { name:name,img:img,desc:description,height:height,width:width,gid:select.options[select.selectedIndex].getAttribute("gid")}) + $.post( "/admin/obj/new", { name:name,img:img,desc:description,height:height,width:width,gid:select.options[select.selectedIndex].getAttribute("gid")}) .done(function( res ) { // if(res["out"] == "good"){ // console.log(res["body"]); @@ -108,7 +149,7 @@ let description = document.getElementById("nobj_description").value; let height = document.getElementById("obj_height").value; let width = document.getElementById("obj_width").value; - var img = document.querySelector('img').src; + var img = document.querySelector('#img_prev').src; name = name.replace(" ","$"); if (img != "http://n0rsrv2:3002/admin"){ document.getElementById("obj_resp").innerHTML = "creating object"; diff --git a/views/admin/objects/object_edit.ejs b/views/admin/objects/object_edit.ejs index 4a2365e..b6860de 100644 --- a/views/admin/objects/object_edit.ejs +++ b/views/admin/objects/object_edit.ejs @@ -11,6 +11,7 @@ img{ width: 100%; height: 100%; + pointer-events: none; } #objs_in_group{ display: flex; @@ -22,10 +23,9 @@
-
- - - +
+ +