diff --git a/func.js b/func.js index 5441e27..44abac0 100644 --- a/func.js +++ b/func.js @@ -56,18 +56,21 @@ module.exports.sid = (cook,res,callback,auto = true,admin_check = false)=>{ } } else{ - if(auto) res.send({out:"bad",err:"wrong"}); + // if(auto) res.send({out:"bad",err:"wrong"}); + if(auto) res.redirect("/"); else if(!auto) callback(false); } }); } else{ - if(auto) res.send({out:"bad",err:"expired"}); + // if(auto) res.send({out:"bad",err:"expired"}); + if(auto) res.redirect("/"); else if(!auto) callback(false); } }); }else{ - if(auto) res.send({out:"bad",err:"nocr"}); + // if(auto) res.send({out:"bad",err:"nocr"}); + if(auto) res.redirect("/"); else if(!auto) callback(false); } } catch (error) { diff --git a/index.js b/index.js index f341ed7..389debe 100644 --- a/index.js +++ b/index.js @@ -54,104 +54,83 @@ app.get('/', (req, res) => { app.get("/login" , (req,res) =>{ res.render('login'); }) -app.get("/main", (req,res) =>{ - res.render('main'); +app.get("/main", (req,res) =>{try{ + let inp = req.body; + let cook = req.cookies; + func.sid(cook,res,()=>{ + res.render('main'); + }) + } catch (error) {func.log("router getting user information by uuid error - "+error);} }); -app.post('/back_login', (req, res) => { - try { +app.post('/back_login', (req, res) => {try { let inp = req.body; let cook = req.cookies; user.login(inp,cook,res); - } catch (error) { - func.log("router login error - "+error); - } + } catch (error) {func.log("router login error - "+error);} }); -app.post("/sid_log",(req,res) =>{ - try{ +app.post("/sid_log",(req,res) =>{try{ let inp = req.body; let cook = req.cookies; user.sid_log(inp,cook,res,req); - } catch (error) { - func.log("router sid logging in error - "+error); - } + } catch (error) {func.log("router sid logging in error - "+error);} }) -app.post("/get_sid" , (req,res) =>{ - try{ +app.post("/get_sid" , (req,res) =>{try{ let inp = req.body; let sid = func.get_uuid(); res.cookie("sid",sid,{maxAge:(vars.week),path:"/;SameSite=Strict"}); res.send({out:"good"}); - } catch (error) { - func.log("router sid getting error - "+error); - } + } catch (error) {func.log("router sid getting error - "+error);} }); -app.post("/clear_sid" , (req,res) =>{ - try{ +app.post("/clear_sid" , (req,res) =>{try{ let inp = req.body; let cook = req.cookies; user.clear_sid(inp,cook,res); - } catch (error) { - func.log("router sid clearing error - "+error); - } + } catch (error) {func.log("router sid clearing error - "+error);} }); -app.post("/get_cr_uuid", (req,res) => { - try{ +app.post("/get_cr_uuid", (req,res) => {try{ let inp = req.body; let cook = req.cookies; func.sid(cook,res,()=>{ user.get_cr(inp,cook,res); }) - } catch (error) { - func.log("router getting user information by uuid error - "+error); - } + } catch (error) {func.log("router getting user information by uuid error - "+error);} }) + /// project app.get("/proj/load/:name" , (req,res) =>{ res.render('project',{proj_name:req.params["name"]}); }) -app.post("/save_proj", (req,res) => { - try{ +app.post("/save_proj", (req,res) => {try{ let inp = req.body; let cook = req.cookies; func.sid(cook,res,()=>{ proj.save(inp,cook,res); }) - } catch (error) { - func.log("router project saving error - "+error); - } + } catch (error) {func.log("router project saving error - "+error);} }) -app.post("/load_proj", (req,res) => { - try{ +app.post("/load_proj", (req,res) => {try{ let inp = req.body; let cook = req.cookies; func.sid(cook,res,()=>{ proj.load(inp,cook,res); }) - } catch (error) { - func.log("router project loading error - "+error); - } + } catch (error) {func.log("router project loading error - "+error);} }) -app.post("/proj/delete", (req,res) => { - try{ +app.post("/proj/delete", (req,res) => {try{ let inp = req.body; let cook = req.cookies; func.sid(cook,res,()=>{ proj.del(inp,cook,res); }) - } catch (error) { - func.log("router project loading error - "+error); - } + } catch (error) {func.log("router project loading error - "+error);} }) -app.post("/proj/download", (req,res) => { - try{ +app.post("/proj/download", (req,res) => {try{ let inp = req.body; let cook = req.cookies; func.sid(cook,res,()=>{ proj.download(inp,cook,res); }) - } catch (error) { - func.log("router project loading error - "+error); - } + } catch (error) {func.log("router project loading error - "+error);} }) app.post("/get_projs", (req,res) => { try{ @@ -160,9 +139,7 @@ app.post("/get_projs", (req,res) => { func.sid(cook,res,()=>{ proj.loads(inp,cook,res); }) - } catch (error) { - func.log("router user projects getting error - "+error); - } + } catch (error) {func.log("router user projects getting error - "+error);} }) app.post("/get_objs", (req,res) => { try{ @@ -172,247 +149,168 @@ app.post("/get_objs", (req,res) => { func.sid(cook,res,()=>{ obj.loads(inp,cook,res); }) - } catch (error) { - func.log("router objects getting error - "+error); - } + } catch (error) {func.log("router objects getting error - "+error);} }) -app.post("/get_obj", (req,res) => { - try{ +app.post("/get_obj", (req,res) => {try{ let inp = req.body; let cook = req.cookies; // func.log(inp["name"]); func.sid(cook,res,()=>{ obj.load(inp,cook,res); }) - } catch (error) { - func.log("router single object getting error - "+error); - } + } catch (error) {func.log("router single object getting error - "+error);} }) -app.post("/get_groups", (req,res) => { - try{ +app.post("/get_groups", (req,res) => {try{ let inp = req.body; let cook = req.cookies; // func.log(inp["name"]); func.sid(cook,res,()=>{ obj.load_groups(inp,cook,res); }) - } catch (error) { - func.log("router single object getting error - "+error); - } + } catch (error) {func.log("router single object getting error - "+error);} }) -app.post("/object/parts/get", (req,res) => { - try{ +app.post("/object/parts/get", (req,res) => {try{ let inp = req.body; let cook = req.cookies; // func.log(inp["name"]); func.sid(cook,res,()=>{ obj.load_parts(inp,cook,res); }) - } catch (error) { - func.log("router single object getting error - "+error); - } + } catch (error) {func.log("router single object getting error - "+error);} }) -app.post("/object/group/get", (req,res) => { - try{ +app.post("/object/group/get", (req,res) => {try{ let inp = req.body; let cook = req.cookies; // func.log(inp["name"]); func.sid(cook,res,()=>{ obj.load_group(inp,cook,res); }) - } catch (error) { - func.log("router single object getting error - "+error); - } + } catch (error) {func.log("router single object getting error - "+error);} }) + + /// admin -app.get("/admin", (req,res) =>{ - try { +app.get("/admin", (req,res) =>{try { let inp = req.body; let cook = req.cookies; func.sid(cook,res,(rights)=>{ res.render('admin'); },true,true) - } catch (error) { - func.log("router admin page error - "+error); - } + } catch (error) {func.log("router admin page error - "+error);} }); -app.get("/admin/objects", (req,res) =>{ - try { - let inp = req.body; - let cook = req.cookies; - func.sid(cook,res,(rights)=>{ - if (rights == 1 || rights == 3){ - res.render('admin/objects'); - } - else{ - res.redirect('/admin'); - } - },true,true) - } catch (error) { - func.log("router admin page error - "+error); - } +app.get("/admin/:type", (req,res) =>{try { + let inp = req.body; + let cook = req.cookies; + func.sid(cook,res,(rights)=>{ + if ((req.params["type"] == "objects") && (rights == 1 || rights == 3)){ + res.render('admin/objects'); + } + else if ((req.params["type"] == "users") && (rights == 2 || rights == 3)){ + res.render('admin/users'); + } + else{res.redirect('/admin');} + },true,true) +} catch (error) {func.log("router admin page error - "+error);} }); -app.get("/admin/users", (req,res) =>{ - try { - let inp = req.body; - let cook = req.cookies; - func.sid(cook,res,(rights)=>{ - if (rights == 2 || rights == 3){ - res.render('admin/users'); - } - else{ - res.redirect('/admin'); - } - },true,true) - } catch (error) { - func.log("router admin page error - "+error); - } -}); -app.get("/home", (req,res) =>{ - res.render('home'); -}); -// app.get("/admin/edit/:edit" , (req,res) =>{ -// try { -// let inp = req.body; -// let cook = req.cookies; -// func.sid(cook,res,()=>{ -// switch (req.params["edit"]) { -// case "users": -// res.render('admin/user_edit');break; -// case "projects": -// res.render('admin/project_edit');break; -// case "objects": -// res.render('admin/object_edit');break; -// } -// },true,true) -// } catch (error) { -// func.log("router admin edit page error - "+error); -// } -// }) 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("/admin/objects/new", (req,res) => { - try{ +app.post("/admin/objects/new", (req,res) => {try{ let inp = req.body; let cook = req.cookies; func.sid(cook,res,()=>{ obj.new(inp,cook,res); },true,true) - } catch (error) { - func.log("router object creating error - "+error); - } + } catch (error) {func.log("router object creating error - "+error);} }) -app.post("/admin/objects/edit", (req,res) => { - try{ +app.post("/admin/objects/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); - } + } catch (error) {func.log("router object creating error - "+error);} }) -app.post("/admin/objects/delete", (req,res) => { - try{ +app.post("/admin/objects/delete", (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); - } + } catch (error) {func.log("router object creating error - "+error);} }) -app.post("/admin/objects/find", (req,res) => { - try{ +app.post("/admin/objects/find", (req,res) => {try{ let inp = req.body; let cook = req.cookies; func.sid(cook,res,()=>{ obj.find(inp,cook,res); },true,true) - } catch (error) { - func.log("router object creating error - "+error); - } + } catch (error) {func.log("router object creating error - "+error);} }) -app.post("/admin/groups/new", (req,res) => { - try{ +app.post("/admin/groups/new", (req,res) => {try{ let inp = req.body; let cook = req.cookies; func.sid(cook,res,()=>{ obj.new_group(inp,cook,res); },true,true) - } catch (error) { - func.log("router object creating error - "+error); - } + } catch (error) {func.log("router object creating error - "+error);} }) -app.post("/admin/groups/delete", (req,res) => { - try{ +app.post("/admin/parts/new", (req,res) => {try{ + let inp = req.body; + let cook = req.cookies; + func.sid(cook,res,()=>{ + obj.new_part(inp,cook,res); + },true,true) +} catch (error) {func.log("router object creating error - "+error);} +}) +app.post("/admin/groups/delete", (req,res) => {try{ let inp = req.body; let cook = req.cookies; func.sid(cook,res,()=>{ obj.del_group(inp,cook,res); },true,true) - } catch (error) { - func.log("router object creating error - "+error); - } + } catch (error) {func.log("router object creating error - "+error);} }) -app.post("/admin/users/get", (req,res) => { - try{ +app.post("/admin/users/get", (req,res) => {try{ let inp = req.body; let cook = req.cookies; func.sid(cook,res,()=>{ admin.get_users(inp,cook,res); },true,true) - } catch (error) { - func.log("router object creating error - "+error); - } + } catch (error) {func.log("router object creating error - "+error);} }) -app.post('/admin/users/new', (req, res) => { - try{ +app.post('/admin/users/new', (req, res) => {try{ let inp = req.body; let cook = req.cookies; func.sid(cook,res,()=>{ admin.new_user(inp,cook,res); },true,true) - } catch (error) { - func.log("router registration error - "+error); - } + } catch (error) {func.log("router registration error - "+error);} }) -app.post("/admin/users/edit", (req,res) => { - try{ +app.post("/admin/users/edit", (req,res) => {try{ let inp = req.body; let cook = req.cookies; func.sid(cook,res,()=>{ admin.edit_user(inp,cook,res); },true,true) - } catch (error) { - func.log("router object creating error - "+error); - } + } catch (error) {func.log("router object creating error - "+error);} }) -app.post("/admin/users/delete", (req,res) => { - try{ +app.post("/admin/users/delete", (req,res) => {try{ let inp = req.body; let cook = req.cookies; func.sid(cook,res,()=>{ admin.del_user(inp,cook,res); },true,true) - } catch (error) { - func.log("router object creating error - "+error); - } + } catch (error) {func.log("router object creating error - "+error);} }) -app.post("/admin/users/find", (req,res) => { - try{ +app.post("/admin/users/find", (req,res) => {try{ let inp = req.body; let cook = req.cookies; func.sid(cook,res,()=>{ admin.find_user(inp,cook,res); },true,true) - } catch (error) { - func.log("router object creating error - "+error); - } + } catch (error) {func.log("router object creating error - "+error);} }) diff --git a/object.js b/object.js index b8e3a2c..85631b7 100644 --- a/object.js +++ b/object.js @@ -7,7 +7,7 @@ module.exports.loads = (inp,cook,res)=>{ let gin if (typeof inp["gid"] == 'undefined' || inp["gid"] == null) gin = "1 OR 1=1" else gin = inp["gid"] - db.ggv("objects","`name`,`id`,`height`,`width`,`description`,`cost`,`gid`","gid",`${gin}`,(odata)=>{ + db.ggv("objects","`name`,`id`,`height`,`width`,`description`,`cost`,`gid`,`colors`","gid",`${gin}`,(odata)=>{ // func.log(odata); res.send({out:"good",body:odata}); }) @@ -140,13 +140,15 @@ module.exports.new_group = (inp,cook,res)=>{ db.nr("object_groups","`name`,`count`,`pid`",`'${inp["name"]}','0',${inp["pid"]}`,true,()=>{ db.glv("object_groups","id",(new_group)=>{ new_group = new_group[0]; db.gv("object_partition","id",`${inp["pid"]}`,(part_db)=>{part_db = part_db[0]; - if (part_db["groups"].split(",").lenght<2){ - db.sv("object_partition","`groups`",`${part_db["groups"]}`,"id",`${inp["pid"]}`,()=>{},true) + // console.log(part_db); + if (part_db["count"] == 0){ + db.sv("object_partition","`groups`",`${new_group["id"]}`,"id",`${inp["pid"]}`,()=>{},true) } else{ db.sv("object_partition","`groups`",`${part_db["groups"]},${new_group["id"]}`,"id",`${inp["pid"]}`,()=>{},true) } res.send({out:"good"}); + db.sv("object_partition","count",`(count + 1)`,"id",`${inp["pid"]}`,()=>{},true,true) func.log(`admin group created ${new_group["name"]}`); }) }) @@ -182,6 +184,7 @@ module.exports.del_group = (inp,cook,res)=>{ db.sv("object_partition","`groups`",`${new_groups}`,"`id`",`${inp["pid"]}`,()=>{ db.dl("object_groups",`id`,`'${inp["gid"]}'`,()=>{ func.log(`admin group deleted ${gname}`); + db.sv("object_partition","count",`(count - 1)`,"id",`${inp["pid"]}`,()=>{},true,true) res.send({out:"good"}); },true); },true) @@ -222,7 +225,7 @@ module.exports.new_part = (inp,cook,res)=>{ res.send({out:"bad"}); } else if (gdata == null){ - db.nr("object_partition","`name`,`count`",`'${inp["name"]}','0'`,true,()=>{ + db.nr("object_partition","`name`,`count`,`groups`",`'${inp["name"]}','0',''`,true,()=>{ res.send({out:"good"}); }) } diff --git a/public/lib/fn.js b/public/lib/fn.js index 6c28836..c7645c5 100644 --- a/public/lib/fn.js +++ b/public/lib/fn.js @@ -111,16 +111,18 @@ function load_groups(callback,groups,admin = false){ group_div.classList.add(`obj_group`); let group_label = document.createElement("label"); - group_label.innerText = group["name"].replace("$"," "); + group_label.innerText = group["name"].replaceAll("$"," "); group_label.setAttribute("for",`obj_group_${group["id"]}`) let group_inp = document.createElement("input"); group_inp.setAttribute("type","checkbox"); group_inp.setAttribute("onchange",`group_check(${group["id"]})`) - // group_inp.innerText = group["name"].replace("$"," "); + // group_inp.innerText = group["name"].replaceAll("$"," "); group_inp.setAttribute("group_count",group["count"]); + console.log(group["count"]); group_inp.setAttribute("gid",group["id"]); group_inp.id = `obj_group_${group["id"]}`; + group_inp.setAttribute("group_name",`${group["name"].replaceAll("$"," ")}`); group_inp.setAttribute("pid",`${group["pid"]}`); if (gids.includes(group["id"])){ @@ -149,6 +151,10 @@ function load_groups(callback,groups,admin = false){ } function group_check(gid){ + if (typeof gids[0] == 'undefined'){ + gids = [] + } + let gid_el = document.getElementById(`obj_group_${gid}`); if(gid_el.checked){ gids[gids.indexOf(gids.at(-1))+1] = gid; diff --git a/public/lib/inter.js b/public/lib/inter.js index b521143..4dd9c01 100644 --- a/public/lib/inter.js +++ b/public/lib/inter.js @@ -8,6 +8,7 @@ let cur_obj; let objs_back = []; let objs_forw = []; let proj_state = "loading"; +let cm_mod = 2; function create(clas,x,y,body,id,size){ let main_clas = clas.split(" ")[0]; @@ -49,21 +50,37 @@ function create(clas,x,y,body,id,size){ } function make(img){ obj.src = img; - obj.title = `${db_data["name"].replace("$"," ").split("/g")[0]}\nцена:${db_data["cost"]}\n${db_data["description"]}\nширина:${db_data["width"]}см высота:${db_data["height"]}см`; + obj.title = `${db_data["name"].replaceAll("$"," ").split("/g")[0]}\nцена:${db_data["cost"]}\n${db_data["description"]}\nширина:${db_data["width"]}см высота:${db_data["height"]}см`; obj.setAttribute("cost",db_data["cost"]) - // drag.transform = `translate(${drag.getAttribute("data-y")}px, ${drag.getAttribute("data-y")}px) scale(${db_data["width"] * 2} ${db_data["height"] * 2})`; + // drag.transform = `translate(${drag.getAttribute("data-y")}px, ${drag.getAttribute("data-y")}px) scale(${db_data["width"] * cm_mod} ${db_data["height"] * cm_mod})`; if(size){ - obj.style.width = `${db_data["width"] * 2}px`; - obj.style.height = `${db_data["height"] * 2}px`; + obj.style.width = `${db_data["width"] * cm_mod}px`; + obj.style.height = `${db_data["height"] * cm_mod}px`; } } calc_total(); }) - obj.setAttribute("onclick",`cur_obj = "${id}"`); + obj.setAttribute("onclick",`obj_click("${id}")`); root.append(obj); set_pos(obj,x,y); } +function obj_click(id){ + if (cur_obj != id){ + cur_obj = id; + let drags = document.getElementsByClassName("drag"); + Object.values(drags).forEach(element => { + // console.log(element.id,cur_obj); + if (element.id != cur_obj){ + element.style.border = "0px"; + } + else{ + element.style.border = "1px black solid"; + } + }); + } +} + function resize_drags(){ document.getElementById('drags').setAttribute("data-x",document.getElementsByClassName("wall")[0].getBoundingClientRect().left.toString()+"px"); document.getElementById('drags').style.left = document.getElementsByClassName("wall")[0].getBoundingClientRect().left.toString()+"px"; @@ -84,7 +101,7 @@ function wall_size_change(type,value = null){ // document.getElementById("wall_width_value").innerHTML = `${scroll}м`; // console.log(scroll); - wall.style.width = `${scroll * 200}px`; + wall.style.width = `${(scroll * 100) * cm_mod}px`; objs["width"] = scroll; } if(type != null && type == "height") { @@ -94,7 +111,7 @@ function wall_size_change(type,value = null){ // document.getElementById("wall_height_value").innerHTML = `${scroll}м`; // console.log(scroll); - wall.style.height = `${scroll * 200}px`; + wall.style.height = `${(scroll * 100) * cm_mod}px`; objs["height"] = scroll; } } @@ -116,7 +133,7 @@ function calc_total(start = false){ total += parseInt(parseInt(objs_store[key]["cost"]) * Object.keys(value).length); let obj_cost_div = document.createElement("li"); obj_cost_div.innerHTML = - `
${key.split("/g/")[0].replace("$"," ")}
`+ + `
${key.split("/g/")[0].replaceAll("$"," ")}
`+ `
 ${Object.keys(value).length}x
`+ `
${parseInt(parseInt(objs_store[key]["cost"]) * Object.keys(value).length)}
`; document.getElementById("cost_list").append(obj_cost_div); @@ -280,6 +297,7 @@ function load_obj(name,key,callback){ function dragMoveListener (event) { var drag = event.target + obj_click(drag.id) var x = (parseFloat(drag.getAttribute('data-x')) || 0) + event.dx var y = (parseFloat(drag.getAttribute('data-y')) || 0) + event.dy set_pos(drag,x,y); @@ -289,7 +307,7 @@ interact('.drag').draggable({ inertia: true, modifiers: [ interact.modifiers.restrictRect({restriction: dragzone,endOnly: true,elementRect:{ left: 0.15, right: 0.85, top: 0, bottom: 1 }}), - interact.modifiers.snap({targets: [interact.snappers.grid({ x: 2, y: 2 })],range: Infinity,relativePoints: [ { x: 0, y: 0 } ]}), + interact.modifiers.snap({targets: [interact.snappers.grid({ x: cm_mod, y: cm_mod })],range: Infinity,relativePoints: [ { x: 0, y: 0 } ]}), ], autoScroll: true, listeners: {move: dragMoveListener, end (event) {}} @@ -333,7 +351,6 @@ interact('.dropzone').dropzone({ objs[drag.classList[0]][drag.id] = {}; calc_total() } - drag.setAttribute("onclick",`cur_obj = "${drag.id}"`); zone.classList.add('drop-target');drag.classList.add('can-drop'); }, ondragleave: function (event) {var drag = event.relatedTarget;var zone = event.target;zone.classList.remove('drop-target');drag.classList.remove('in_zone');drag.classList.remove('can-drop');}, @@ -359,9 +376,9 @@ interact('.createzone').dropzone({ if(drag.classList[1] == "spawn" && drag.classList[0] == zone.classList[0]){ get_obj(drag.classList[0],(db_data)=>{ - // drag.transform = `translate(${drag.getAttribute("data-y")}px, ${drag.getAttribute("data-y")}px) scale(${db_data["width"] * 2} ${db_data["height"] * 2})`; - drag.style.width = `${db_data["width"] * 2}px`; - drag.style.height = `${db_data["height"] * 2}px`; + // drag.transform = `translate(${drag.getAttribute("data-y")}px, ${drag.getAttribute("data-y")}px) scale(${db_data["width"] * cm_mod} ${db_data["height"] * cm_mod})`; + drag.style.width = `${db_data["width"] * cm_mod}px`; + drag.style.height = `${db_data["height"] * cm_mod}px`; // console.log(db_data); }) let x = zone.getBoundingClientRect().left - document.getElementById("drags").getBoundingClientRect().left; diff --git a/views/admin/objects/object_creation.ejs b/views/admin/objects/object_creation.ejs index 80cf45a..e4f3cd2 100644 --- a/views/admin/objects/object_creation.ejs +++ b/views/admin/objects/object_creation.ejs @@ -23,19 +23,29 @@
-
+ +

-
- +
-
- предпросмотр картинки +
+ выбрать изображение +
+
+ +
-
creation
+
creation
@@ -91,15 +101,19 @@ } } - function set_obj_edit_params(img = "",name = "",description="",height = 100,width = 100,cost = 0,gid = 0){ + function set_obj_edit_params(img = "",name = "",description="",height = 100,width = 100,cost = 0,gid = 0, id = null){ if(img ==""&&name ==""&&description == ""){ document.getElementById("object_edit_type").innerText = "добавление"; document.getElementById("obj_apply_btn").value = "добавить товар"; document.getElementById("obj_apply_btn").setAttribute("onclick","create_obj()"); }else { document.getElementById("object_edit_type").innerText = "редактирование"; + let del_btn = document.createElement("button"); + del_btn.setAttribute("onclick",`obj_del(${id})`); + del_btn.innerText = "удалить объект"; + document.getElementById("object_edit_type").append(del_btn); document.getElementById("obj_apply_btn").value = "сохранить"; - document.getElementById("obj_apply_btn").setAttribute("onclick","save_edited_obj()"); + document.getElementById("obj_apply_btn").setAttribute("onclick",`save_edited_obj(${id})`); // document.getElementById("group_select").selectedIndex = document.getElementById("group_select").options[`obj_group_${gid}`].index; gids = [parseInt(gid)] console.log(gid); @@ -148,14 +162,21 @@ function new_obj(cost,name,img,height,width,description,callback){ let gid = gids[0]; - if(name!=""){ - $.post( "/admin/objects/new", { cost:cost,name:name,img:img,desc:description,height:height,width:width,gid:gid}) - .done(function( res ) { - // if(res["out"] == "good"){ - // console.log(res["body"]); - // } - callback(res); - }); + if(gid != null){ + if(name!=""){ + $.post( "/admin/objects/new", { cost:cost,name:name,img:img,desc:description,height:height,width:width,gid:gid}) + .done(function( res ) { + // if(res["out"] == "good"){ + // console.log(res["body"]); + // } + callback(res); + }); + } + } + else{ + alert("группа не выбранна") + let res = {out:"bad"} + callback(res); } } @@ -166,7 +187,7 @@ let width = document.getElementById("obj_width").value; var img = document.querySelector('#img_prev').src; var cost = document.getElementById("obj_cost").value; - name = name.replace(" ","$"); + name = name.replaceAll(" ","$"); if(name != ""){ if (img != "http://n0rsrv2:3002/admin"){ document.getElementById("obj_resp").innerHTML = "добавление товара"; @@ -174,15 +195,18 @@ if(res["out"] == "bad" && res["err"] == "name"){ document.getElementById("obj_resp").innerHTML = "товар уже существует"; } + else if (res["out"] == "bad" ){ + document.getElementById("obj_resp").innerHTML = "ошибка при добавлении товара"; + } else if(res["out"] == "good"){ document.getElementById("obj_resp").innerHTML = "товар добавлен"; setTimeout(()=>{ edit_get_objs(); },1000) - setTimeout(()=>{ - document.getElementById("obj_resp").innerHTML = ""; - },3000) } + setTimeout(()=>{ + document.getElementById("obj_resp").innerHTML = ""; + },3000) }); } else{ diff --git a/views/admin/objects/object_edit.ejs b/views/admin/objects/object_edit.ejs index d72da6b..37a9b53 100644 --- a/views/admin/objects/object_edit.ejs +++ b/views/admin/objects/object_edit.ejs @@ -38,19 +38,21 @@
-
- - -
- \ No newline at end of file diff --git a/views/admin/objects/object_groups.ejs b/views/admin/objects/object_groups.ejs index e5833ac..6237243 100644 --- a/views/admin/objects/object_groups.ejs +++ b/views/admin/objects/object_groups.ejs @@ -4,13 +4,19 @@ /* height: 5vh; */ margin: auto 0px; } + #obj_group { + margin-bottom: 20px; + } .obj_group{ display: flex; }
-

группы товаров

+
+

группы товаров

+ +
@@ -119,11 +126,11 @@
- - - - - + + + + +
@@ -152,14 +159,27 @@ let menu = document.getElementById("top_panel_center"); if (res["admin"] == true){ - menu.innerHTML += `
`; + menu.innerHTML += `
`; } // menu.innerHTML += "
"; + document.URL.split("puzzle.n0r.su/").at(-1) + switch (document.URL.split("puzzle.n0r.su/").at(-1)) { + case ("main"): + document.getElementById("page_btn_main").style.border = "1px solid black"; + break; + case ("admin"):document.getElementById("page_btn_admin").style.border = "1px solid black";break; + case ("admin/objects"):document.getElementById("page_btn_admin").style.border = "1px solid black";break; + case ("admin/users"):document.getElementById("page_btn_admin").style.border = "1px solid black";break; + default: + break; + } }); - onscroll = (e)=>{ - hide_menus(); - } + console.log("asd"); + + // onscroll = (e)=>{ + // hide_menus(); + // } onresize = (e)=>{ hide_menus(); } @@ -210,27 +230,27 @@ open_menu(); } - else if(e.target.id == "object_menu"){ - hide_menus(); - let menu = document.getElementById("object_edit_menu"); - let obj = e.target; - menu.setAttribute("obj_img",obj.getAttribute("src")); - menu.setAttribute("obj_name",obj.getAttribute("name")); - menu.setAttribute("obj_description",obj.getAttribute("description")); - menu.setAttribute("obj_height",obj.getAttribute("height")); - menu.setAttribute("obj_width",obj.getAttribute("width")); - menu.setAttribute("obj_id",obj.getAttribute("obj_id")); - menu.setAttribute("obj_cost",obj.getAttribute("cost")) - menu.setAttribute("obj_gid",obj.getAttribute("gid")) - menu.style.display = 'block'; - // menu.style = `top:${e.target.getBoundingClientRect().top+27}px;left:${e.target.getBoundingClientRect().left-13}px`; - menu.style = `top:${e.target.getBoundingClientRect().top + 40}px;left:${e.target.getBoundingClientRect().left - 5}px`; - // menu.onmouseleave = () => menu.style.display = 'none'; - // menu.innerHTML = "

Option1

Option2

Option3

Option4

" - // document.body.appendChild(menu) - open_menu(); + // else if(e.target.id == "object_menu"){ + // hide_menus(); + // let menu = document.getElementById("object_edit_menu"); + // let obj = e.target; + // menu.setAttribute("obj_img",obj.getAttribute("src")); + // menu.setAttribute("obj_name",obj.getAttribute("name")); + // menu.setAttribute("obj_description",obj.getAttribute("description")); + // menu.setAttribute("obj_height",obj.getAttribute("height")); + // menu.setAttribute("obj_width",obj.getAttribute("width")); + // menu.setAttribute("obj_id",obj.getAttribute("obj_id")); + // menu.setAttribute("obj_cost",obj.getAttribute("cost")) + // menu.setAttribute("obj_gid",obj.getAttribute("gid")) + // menu.style.display = 'block'; + // // menu.style = `top:${e.target.getBoundingClientRect().top+27}px;left:${e.target.getBoundingClientRect().left-13}px`; + // menu.style = `top:${e.target.getBoundingClientRect().top + 40}px;left:${e.target.getBoundingClientRect().left - 5}px`; + // // menu.onmouseleave = () => menu.style.display = 'none'; + // // menu.innerHTML = "

Option1

Option2

Option3

Option4

" + // // document.body.appendChild(menu) + // open_menu(); - } + // } else if(e.target.id == "proj_cost"){ hide_menus(); document.getElementById("cost_list").style = `margin-top:2.5vw;left:${e.target.getBoundingClientRect().left}px`; @@ -242,12 +262,12 @@ document.getElementById("group").innerHTML = ""; // console.log(e.target.getAttribute("groups").split(",")); - document.getElementById("group").style = `margin-top:2.5vw;left:${e.target.getBoundingClientRect().left}px;width: 14vw;padding: 0.45vw;display:block;`; + document.getElementById("group").style = `margin-top:2.9vw;left:${e.target.getBoundingClientRect().left}px;width: 14vw;padding: 0.45vw;display:block;padding-bottom: 0.7vw;`; console.log("group"); open_menu(); if (document.URL == "https://puzzle.n0r.su/admin/objects"){ - load_groups(()=>{},e.target.getAttribute("groups").split(","),true) + if(e.target.getAttribute("count") != 0)load_groups(()=>{},e.target.getAttribute("groups").split(","),true) let groups = document.getElementById("group"); let new_grp_btn = document.createElement("button"); new_grp_btn.setAttribute("onclick",`create_new_group(${e.target.getAttribute("pid")})`); @@ -256,7 +276,7 @@ groups.append(new_grp_btn) } else{ - load_groups(()=>{},e.target.getAttribute("groups").split(",")) + if(e.target.getAttribute("count") != 0)load_groups(()=>{},e.target.getAttribute("groups").split(",")) } // hide_menus(); // let menu = document.getElementById("object_edit_menu"); diff --git a/views/load.ejs b/views/load.ejs index a5e5c97..95411b8 100644 --- a/views/load.ejs +++ b/views/load.ejs @@ -4,12 +4,13 @@