diff --git a/admin.js b/admin.js index e161b25..85b86fe 100644 --- a/admin.js +++ b/admin.js @@ -88,7 +88,7 @@ module.exports.set_obj=(inp,cook,res)=>{ } } -module.exports.reg = (inp,cook,res)=>{ +module.exports.new_user = (inp,cook,res)=>{ try { let uuid = func.get_uuid(inp["login"]); let admin = inp["admin"]; @@ -131,4 +131,19 @@ module.exports.reg = (inp,cook,res)=>{ } catch (error) { func.log("backend user registration error - "+error); } +} + +module.exports.find_user = (inp,cook,res)=>{ + try { + db.fva("users","login",inp["login"],`${inp["from"]},${inp["load_interval"]}`,(data)=>{ + if(data["length"] > 0){ + res.send({body:data,out:"good"}); + } + else{ + res.send({out:"bad"}); + } + },true) + } catch (error) { + func.log("backend single object loading err0r - "+error); + } } \ No newline at end of file diff --git a/db.js b/db.js index b64e727..2c778ad 100644 --- a/db.js +++ b/db.js @@ -1,6 +1,6 @@ const mysql = require('mysql'); const vars = require('./vars'); -const db_host = "db"; +const db_host = "localhost"; const admin = mysql.createConnection({ host: db_host, @@ -39,7 +39,7 @@ module.exports.dl = (table,key,value,callback,prevs = false) => { // get values where module.exports.gv = (table,key,value,callback,prevs = false) => { - // console.log('SELECT * FROM `'+table+'` WHERE `'+key+'` = '+value); + // console.log(`SELECT * FROM ${table} WHERE ${key} = ${value}`); db(prevs).query(`SELECT * FROM ${table} WHERE ${key} = ${value}`, (err, rows, fields) => { if (err) { console.log("sql err"); @@ -52,7 +52,7 @@ module.exports.gv = (table,key,value,callback,prevs = false) => { // get all from table module.exports.gav = (table,limit = "0",callback,prevs = false) => { - // console.log('SELECT * FROM `'+table+'` WHERE `'+key+'` = '+value); + // console.log(`SELECT * FROM ${table} WHERE 1 ${limit}`); limit = (limit != "0")? `LIMIT ${limit}`:""; db(prevs).query(`SELECT * FROM ${table} WHERE 1 ${limit}`, (err, rows, fields) => { if (err) { @@ -92,6 +92,31 @@ module.exports.sv = (table,key,value,ekey,evalue,callback,prevs = false,no_srt = }) } +module.exports.fv = (table,key,value,callback,prevs = false) => { + // console.log(`UPDATE ${table} SET ${key} = ${value} WHERE ${ekey} = '${evalue}'`); + db(prevs).query(`SELECT * FROM ${table} WHERE ${key} LIKE '%${value}%'`, (err , rows) => { + if (err) { + console.log("sql err"); + throw err; + }else{ + if(callback)callback(rows); + } + }) +} + +module.exports.fva = (table,key,value,limit = "0",callback,prevs = false) => { + // console.log(`UPDATE ${table} SET ${key} = ${value} WHERE ${ekey} = '${evalue}'`); + limit = (limit != "0")? `LIMIT ${limit}`:""; + db(prevs).query(`SELECT * FROM ${table} WHERE ${key} LIKE '%${value}%' ${limit}`, (err , rows) => { + if (err) { + console.log("sql err"); + throw err; + }else{ + if(callback)callback(rows); + } + }) +} + module.exports.uv = (table,keys,values,ekey,evalue,callback,prevs = false,no_srt = false) => { values = values.split("."); keys = keys.split("."); diff --git a/index.js b/index.js index 7ea4ece..12231fd 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("/admin/obj/new", (req,res) => { +app.post("/admin/objects/new", (req,res) => { try{ let inp = req.body; let cook = req.cookies; @@ -223,7 +223,7 @@ app.post("/admin/obj/new", (req,res) => { func.log("router object creating error - "+error); } }) -app.post("/admin/obj/edit", (req,res) => { +app.post("/admin/objects/edit", (req,res) => { try{ let inp = req.body; let cook = req.cookies; @@ -234,7 +234,7 @@ app.post("/admin/obj/edit", (req,res) => { func.log("router object creating error - "+error); } }) -app.post("/admin/obj/del", (req,res) => { +app.post("/admin/objects/delete", (req,res) => { try{ let inp = req.body; let cook = req.cookies; @@ -245,7 +245,18 @@ app.post("/admin/obj/del", (req,res) => { func.log("router object creating error - "+error); } }) -app.post("/admin/new/group", (req,res) => { +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); + } +}) +app.post("/admin/groups/new", (req,res) => { try{ let inp = req.body; let cook = req.cookies; @@ -256,7 +267,7 @@ app.post("/admin/new/group", (req,res) => { func.log("router object creating error - "+error); } }) -app.post("/admin/delete/group", (req,res) => { +app.post("/admin/groups/delete", (req,res) => { try{ let inp = req.body; let cook = req.cookies; @@ -278,12 +289,12 @@ app.post("/admin/users/get", (req,res) => { func.log("router object creating error - "+error); } }) -app.post('/admin/users/reg', (req, res) => { +app.post('/admin/users/new', (req, res) => { try{ let inp = req.body; let cook = req.cookies; func.sid(cook,res,()=>{ - admin.reg(inp,cook,res); + admin.new_user(inp,cook,res); },true,true) } catch (error) { func.log("router registration error - "+error); @@ -300,18 +311,7 @@ app.post("/admin/users/edit", (req,res) => { func.log("router object creating error - "+error); } }) -app.post("/admin/users/get/user", (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); - } -}) -app.post("/admin/users/del/user", (req,res) => { +app.post("/admin/users/delete", (req,res) => { try{ let inp = req.body; let cook = req.cookies; @@ -322,6 +322,17 @@ app.post("/admin/users/del/user", (req,res) => { func.log("router object creating error - "+error); } }) +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); + } +}) diff --git a/object.js b/object.js index d85c982..218683c 100644 --- a/object.js +++ b/object.js @@ -1,11 +1,10 @@ -const { name } = require('ejs'); const db = require('./db'); const func = require('./func'); const vars = require('./vars'); module.exports.loads = (inp,cook,res)=>{ try { - db.ggv("objects","`name`,`id`,`height`,`width`,`description`,`gid`","gid",`${inp["gid"]}`,(odata)=>{ + db.ggv("objects","`name`,`id`,`height`,`width`,`description`,`cost`,`gid`","gid",`${inp["gid"]}`,(odata)=>{ // func.log(odata); res.send({out:"good",body:odata}); }) @@ -34,7 +33,7 @@ module.exports.new = (inp,cook,res)=>{ 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.nr("objects","`cost`,`name`,`img`,`height`,`width`,`description`,`gid`",`'${inp["cost"]}','${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"}); @@ -91,11 +90,12 @@ module.exports.save = (inp,cook,res)=>{ 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); + db.ggv("object_groups","name","id",inp["gid"],(gname)=>{let group = gname[0]["name"] + db.dl("objects",`id`,`'${inp["id"]}' AND gid = '${inp["gid"]}'`,()=>{ + func.log(`admin group deleted name:${name} group:${group}`); + res.send({out:"good"}); + },true); + }) } catch (error) { func.log("backend single object loading err0r - "+error); } @@ -139,4 +139,14 @@ module.exports.del_group = (inp,cook,res)=>{ } catch (error) { func.log("backend single object loading err0r - "+error); } +} + +module.exports.find = (inp,cook,res)=>{ + try { + db.fv("objects",`SUBSTRING_INDEX(name,'/',1)`,inp["name"],(db_res)=>{ + res.send({out:"good",body:db_res}); + },true); + } catch (error) { + func.log("backend single object loading err0r - "+error); + } } \ No newline at end of file diff --git a/public/lib/fn.js b/public/lib/fn.js index f8dda21..678d282 100644 --- a/public/lib/fn.js +++ b/public/lib/fn.js @@ -67,7 +67,7 @@ function check_sid(redirect = true){ } function logout(redirect = true) { - let dialog = confirm(`${lang("logout")}?`); + let dialog = confirm(`выйти?`); if(dialog){ clear_ck(redirect); } diff --git a/public/lib/inter.js b/public/lib/inter.js index df5d971..700ebb0 100644 --- a/public/lib/inter.js +++ b/public/lib/inter.js @@ -32,27 +32,20 @@ function create(clas,x,y,body,id,size){ } } else if (db_data != null){ - if ($.cookie("cache") == "true"){ - if (objs_imgs[main_clas] == null){ - load_obj(main_clas,"`img`",(odata)=>{ - objs_imgs[main_clas] = odata["img"]; - make(odata["img"]); - }) - } - else{ - make(objs_imgs[main_clas]) - } - } - else{ + if (objs_imgs[main_clas] == null){ load_obj(main_clas,"`img`",(odata)=>{ objs_imgs[main_clas] = odata["img"]; make(odata["img"]); }) } + else{ + make(objs_imgs[main_clas]) + } } function make(img){ obj.src = img; - obj.title = `${db_data["name"].replace("$"," ").split("/g")[0]}\n${db_data["description"]}\n${lang("width")}:${db_data["width"]}см ${lang("height")}:${db_data["height"]}см`; + 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.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})`; if(size){ obj.style.width = `${db_data["width"] * 2}px`; @@ -68,6 +61,7 @@ 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"; document.getElementById('drags').style.width = document.getElementsByClassName("wall")[0].style.width; + document.getElementsByClassName("zones")[0].style.height = document.getElementsByClassName("wall")[0].style.height; drag_start(); } @@ -96,6 +90,23 @@ function wall_size_change(type,value){ } } +function calc_total(){ + let total=0; + Object.entries(objs).forEach(([key,value]) => { + if(key != "height"&&key!="width"&key!="total"){ + // console.log(key,value); + // console.log(Object.keys(value).length); + // console.log(objs_store[key]); + if(objs_store[key] != null){ + total += parseInt(parseInt(objs_store[key]["cost"]) * Object.keys(value).length); + } + } + // console.log(Object.keys(objs).at(-1)); + }); + // return total; + document.getElementById("proj_cost").innerText = total; +} + function load(objss){ // objs = JSON.parse($.cookie("objs")); // console.log(objs); @@ -120,12 +131,13 @@ function load(objss){ } }); resize_drags(); + calc_total() } function load_proj_cloud(){ proj_from = "cloud"; document.getElementById("drags").innerHTML = ""; - document.getElementById("top_panel_center").innerText = `${lang("loading")} ${proj_name} ${lang("from")} ${lang("cloud")}`; + document.getElementById("top_panel_center").innerText = `загрузка ${proj_name} из облака`; $.post( "/load_proj",{name:proj_name}) .done(function( res ) { if(res["out"] == "good"){ @@ -134,7 +146,7 @@ function load_proj_cloud(){ // console.log(JSON.parse(res["body"])); // $.cookie("objs",res["body"]); load(JSON.parse(res["body"])); - document.getElementById("top_panel_center").innerText = `${proj_name} (${lang("cloud")})`; + document.getElementById("top_panel_center").innerText = `${proj_name} (облако)`; } else if(res["out"] == "bad proj"){ console.log("bad"); @@ -151,7 +163,7 @@ function load_proj_local(){ if(localStorage.getItem(proj_name) == null){ save_local() } - document.getElementById("top_panel_center").innerText = `${proj_name} (${lang("local")})`; + document.getElementById("top_panel_center").innerText = `${proj_name} (локальное хранилище)`; document.getElementById("drags").innerHTML = ""; load(JSON.parse(localStorage.getItem(proj_name))); } @@ -199,7 +211,7 @@ function load_objs(callback){ if(res["out"] == "good"){ // console.log(res["body"]); res["body"].forEach(element => { - objs_store[`${element["name"]}`] = {description:element["description"],height:element["height"],width:element["width"],id:element["id"],name:element["name"]} + objs_store[`${element["name"]}`] = {description:element["description"],height:element["height"],width:element["width"],id:element["id"],name:element["name"],cost:element["cost"]} }); callback(res["body"]); } @@ -254,22 +266,22 @@ interact('.trash').dropzone({ accept: '.drag', overlap: 0.2, - ondragenter: function (event) { - var drag = event.relatedTarget; - var zone = event.target; - console.log(drag.classList); - if(objs[drag.classList[0]] != null&&objs[drag.classList[0]][drag.id] != null) delete objs[drag.classList[0]][drag.id]; - zone.classList.add('drop-target'); - drag.classList.add('can-drop'); + ondragenter: function (event) {var drag = event.relatedTarget;var zone = event.target; + + // console.log(drag.classList); + if(objs[drag.classList[0]] != null&&objs[drag.classList[0]][drag.id] != null) { + delete objs[drag.classList[0]][drag.id]; + } + calc_total() + + zone.classList.add('drop-target');drag.classList.add('can-drop'); drag.remove(); }, 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');}, - ondrop: function (event) { - var drag = event.relatedTarget; + ondrop: function (event) {var drag = event.relatedTarget; // console.log(drag.id); // console.log(objs); - drag.classList.add('in_zone') - drag.classList.remove('can-drop') + drag.classList.add('in_zone');drag.classList.remove('can-drop'); }, ondropdeactivate: function (event) {var zone = event.target;zone.classList.remove('drop-active');zone.classList.remove('drop-target');} }) @@ -278,23 +290,25 @@ interact('.dropzone').dropzone({ accept: '.drag', overlap: 0.5, - ondragenter: function (event) { - var drag = event.relatedTarget; - var zone = event.target; + ondragenter: function (event) {var drag = event.relatedTarget;var zone = event.target; + + if (objs[drag.classList[0]] == null){ + objs[drag.classList[0]] = {}; + } if(drag.id == "none") drag.id = get_id(drag.classList[0]); - zone.classList.add('drop-target'); - drag.classList.add('can-drop'); + if (objs[drag.classList[0]][drag.id] == null){ + objs[drag.classList[0]][drag.id] = {}; + calc_total() + } + + 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');}, - ondrop: function (event) { - var drag = event.relatedTarget - // console.log(drag.classList[0]); - if (objs[drag.classList[0]] == null) objs[drag.classList[0]] = {}; + ondrop: function (event) {var drag = event.relatedTarget + objs[drag.classList[0]][drag.id] = {y:drag.getAttribute('data-y'),x:drag.getAttribute('data-x'),body:drag.innerHTML}; - // console.log(objs); - // $.cookie("objs",JSON.stringify(objs)); - drag.classList.add('in_zone') - drag.classList.remove('can-drop') + + drag.classList.add('in_zone');drag.classList.remove('can-drop'); }, ondropdeactivate: function (event) {var zone = event.target;zone.classList.remove('drop-active');zone.classList.remove('drop-target');} }) @@ -303,14 +317,11 @@ interact('.createzone').dropzone({ accept: '.spawn', overlap: 0.2, - ondragenter: function (event) { - var drag = event.relatedTarget; - var zone = event.target;zone.classList.add('drop-target'); - drag.classList.add('can-drop'); + ondragenter: function (event) {var drag = event.relatedTarget;var zone = event.target; + zone.classList.add('drop-target');drag.classList.add('can-drop'); }, - ondragleave: function (event) { - var drag = event.relatedTarget; - var zone = event.target; + ondragleave: function (event) {var drag = event.relatedTarget;var zone = event.target; + 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})`; @@ -321,12 +332,15 @@ interact('.createzone').dropzone({ let x = zone.getBoundingClientRect().left - document.getElementById("drags").getBoundingClientRect().left; let y = zone.getBoundingClientRect().top - document.getElementById("drags").getBoundingClientRect().top; create(`${zone.classList[0]} spawn drag`,x,y,`${zone.classList[0]}`,`none`); + drag.classList.remove('spawn'); } zone.classList.remove('drop-target'); }, - ondrop: function (event) {var drag = event.relatedTargetdrag.classList.remove('in_zone');drag.classList.remove('can-drop');}, - ondropdeactivate: function (event) {var zone = event.target;zone.classList.remove('drop-active');zone.classList.remove('drop-target');} + ondrop: function (event) {var drag = event.relatedTarget; + drag.classList.remove('in_zone');drag.classList.remove('can-drop');}, + ondropdeactivate: function (event) {var zone = event.target; + zone.classList.remove('drop-active');zone.classList.remove('drop-target');} }) function drag_start() { diff --git a/views/admin.ejs b/views/admin.ejs index 543288f..a646cfd 100644 --- a/views/admin.ejs +++ b/views/admin.ejs @@ -7,22 +7,24 @@ } -

<%= lang("hello admin") %>


+
- <%- include('./admin/objects/object_creation.ejs') %> +

объект

<%- include('./admin/objects/object_groups.ejs') %> + <%- include('./admin/objects/object_creation.ejs') %> <%- include('./admin/objects/object_edit.ejs') %>
+

пользователь

<%- include('./admin/users/user_reg.ejs') %> <%- include('./admin/users/user_edit.ejs') %>
-

<%= lang("logs") %>


+

логи


- +
diff --git a/views/admin/objects/object_creation.ejs b/views/admin/objects/object_creation.ejs index d3860a7..25348bc 100644 --- a/views/admin/objects/object_creation.ejs +++ b/views/admin/objects/object_creation.ejs @@ -16,56 +16,64 @@ display: flex; } #img_prev{ + object-fit: fill; height: 200px; width: 200px; } -
-

object

-

creation

-
-
+
-
+

- <%= lang('Image preview') %> + предпросмотр картинки
- +
+
creation
- "> - + +
- +
100см
- +
100см
- +
+ +
+ +
руб.
+
+
+
+
+
-
+ \ No newline at end of file diff --git a/views/admin/objects/object_edit.ejs b/views/admin/objects/object_edit.ejs index 2f4c577..f697182 100644 --- a/views/admin/objects/object_edit.ejs +++ b/views/admin/objects/object_edit.ejs @@ -3,29 +3,44 @@ background-color: #bfe4ff; border: dashed 4px transparent; border-radius: 4px; - height: 50px; - width: 50px; + height: 55px; + width: 55px; margin: 5px; margin-top: 0px; + margin-bottom: 20px; } img{ width: 100%; height: 100%; + object-fit: contain; pointer-events: none; } - #objs_in_group{ + #objs_in_group,#founded_objs_list{ display: flex; flex-wrap: wrap; + padding: 0px; + } + #find_obj_btns{ + /* display: flex; */ + margin: auto 0px; + /* height: 25px; */ } -

object edit

+
+

изменение объектов

+
+ + +
+
+
- - + +
\ No newline at end of file diff --git a/views/admin/objects/object_groups.ejs b/views/admin/objects/object_groups.ejs index a30f778..37b8d9c 100644 --- a/views/admin/objects/object_groups.ejs +++ b/views/admin/objects/object_groups.ejs @@ -1,11 +1,17 @@ -

objects group

+
+

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

-
- - +
+ +
@@ -15,8 +21,8 @@ function delete_group() { let select = document.getElementById("group_select"); let group_id = select.options[select.selectedIndex].getAttribute("gid"); - if(confirm(`are you sure you want to delete group ${select.options[select.selectedIndex].text}`) == true){ - $.post( "/admin/delete/group", { gid:group_id}) + if(confirm(`вы уверены вы хотите удалить группу ${select.options[select.selectedIndex].text}`) == true){ + $.post( "/admin/groups/delete", { gid:group_id}) .done(function( res ) { if(res["out"] == "good"){ // console.log(res["body"]); @@ -27,9 +33,9 @@ } } function create_new_group() { - let group_name = ask("enter group name"); + let group_name = ask("название группы"); if(group_name != ""){ - $.post( "/admin/new/group", { name:group_name.replace(" ","$")}) + $.post( "/admin/groups/new", { name:group_name.replace(" ","$")}) .done(function( res ) { if(res["out"] == "good"){ // console.log(res["body"]); diff --git a/views/admin/users/user_edit.ejs b/views/admin/users/user_edit.ejs index a8f3e45..97abce7 100644 --- a/views/admin/users/user_edit.ejs +++ b/views/admin/users/user_edit.ejs @@ -7,7 +7,7 @@ display: flex; justify-content: space-between; text-align: center; - margin: 20px auto; + margin: 0px auto; padding: 10px; background-color:cornsilk; } @@ -27,20 +27,30 @@ list-style: none; height: 320px; } + #find_user_btns{ + /* display: flex; */ + margin: auto 0px; + /* height: 25px; */ + } -

<%=lang("users")%>

+
+

пользователи

+
+ + +
+
-

<%= lang("total") %>: 

0

-
<%=lang("from")%> 
0
 <%=lang("to")%> 
10
-
-
+

всего: 

0

+
с 
0
 по 
10
+
+
-
  • <%= lang("login") %>
    <%= lang("privileges") %>
    <%= lang("edit") %>
  • -
      -
    +
  • логин
    превилегии
    функции
  • +
      @@ -49,54 +59,53 @@ let users_from = 0; let load_interval = 5; load_users_data(users_from); - function load_users_data(from,to){ + function load_users_data(from,by_name=false){ // if(to == "forward") {users_from+=load_interval;} // else if(to == "back") {users_from-=load_interval;} document.getElementById("user_list").innerHTML = ""; document.getElementById("users_from").innerText = from; document.getElementById("users_to").innerText = from+load_interval; - $.post( "/admin/users/get",{from:from,load_interval:load_interval}) - .done(function( res ) { - // console.log("serv reg"); - if(res["out"] == "good"){ - // console.log(res["body"]); - document.getElementById("users_count").innerText = res["count"]; - res["body"].forEach(user => { - let user_sec = document.createElement("li"); - user_sec.id = `user_${user["id"]}`; - - let user_name = document.createElement("div"); - user_name.id = `login_${user["id"]}`; - user_name.innerText = user["login"]; - - let user_pass = document.createElement("div"); - user_pass.id = `pass_${user["id"]}`; - user_pass.innerText = user["pass"]; - user_pass.style.display = "none"; - - let user_prevs = document.createElement("div"); - user_prevs.id = `admin_${user["id"]}`; - user_prevs.innerText = Boolean(user["admin"]); - - let user_buttons = document.createElement("button"); - user_buttons.id = "user_buttons"; - user_buttons.innerText = "<%=lang('edit')%>"; - user_buttons.classList.add(user["id"]); - user_buttons.classList.add("menu_btn"); - - user_sec.append(user_pass); - user_sec.append(user_name); - user_sec.append(user_prevs); - user_sec.append(user_buttons); - - document.getElementById("user_list").append(user_sec); + if(!by_name){ + $.post( "/admin/users/get",{from:from,load_interval:load_interval}) + .done(function( res ) { + if(res["out"] == "good"){ + document.getElementById("users_count").innerText = res["count"]; + res["body"].forEach(user => { + let user_sec = document.createElement("li");user_sec.id = `user_${user["id"]}`; + let user_name = document.createElement("div");user_name.id = `login_${user["id"]}`;user_name.innerText = user["login"]; + let user_pass = document.createElement("div");user_pass.id = `pass_${user["id"]}`;user_pass.innerText = user["pass"];user_pass.style.display = "none"; + let user_prevs = document.createElement("div");user_prevs.id = `admin_${user["id"]}`;user_prevs.innerText = Boolean(user["admin"]); + let user_buttons = document.createElement("button");user_buttons.id = "user_buttons"; user_buttons.innerText = "изменить"; user_buttons.classList.add(user["id"]); user_buttons.classList.add("menu_btn"); + + user_sec.append(user_pass);user_sec.append(user_name);user_sec.append(user_prevs);user_sec.append(user_buttons); + document.getElementById("user_list").append(user_sec); + }); + } + else if (res["out"] == "bad"){ + + } + }); + } + else{ + let login = ask("имя"); + if (login != ""){ + $.post( "/admin/users/find",{login:login,from:from,load_interval:load_interval}) + .done(function( res ) { + if(res["out"] == "good"){ + res["body"].forEach(user => { + let user_sec = document.createElement("li");user_sec.id = `user_${user["id"]}`; + let user_name = document.createElement("div");user_name.id = `login_${user["id"]}`;user_name.innerText = user["login"]; + let user_pass = document.createElement("div");user_pass.id = `pass_${user["id"]}`;user_pass.innerText = user["pass"];user_pass.style.display = "none"; + let user_prevs = document.createElement("div");user_prevs.id = `admin_${user["id"]}`;user_prevs.innerText = Boolean(user["admin"]); + let user_buttons = document.createElement("button");user_buttons.id = "user_buttons"; user_buttons.innerText = "изменить"; user_buttons.classList.add(user["id"]); user_buttons.classList.add("menu_btn"); + + user_sec.append(user_pass);user_sec.append(user_name);user_sec.append(user_prevs);user_sec.append(user_buttons); + document.getElementById("user_list").append(user_sec); + }); + } }); - // document.getElementById("reg_response").innerHTML = `user ${login} successfully registered `; } - else if (res["out"] == "bad"){ - - } - }); + } } function user_edit(key){ let user = document.getElementById("user_edit_menu"); @@ -107,7 +116,7 @@ let value = null; if(key!="admin") {value = ask(key,document.getElementById(`${key}_${id}`).innerText)} - else if (confirm(`<%=lang('are you sure you want to change')%> <%=lang('admin privileges')%> <%=lang('for')%> ${login} <%=lang("to the")%> ${!admin}?`) == true){value = (!admin)}; + else if (confirm(`вы точно хотите изменить привелегии пользователя ${login} на ${!admin}?`) == true){value = (!admin)}; if(value != null){ $.post( "/admin/users/edit",{key:key,value:value,id:id,login:login}) .done(function( res ) { @@ -125,8 +134,8 @@ let user = document.getElementById("user_edit_menu"); let id = user.getAttribute("login_id"); let login = user.getAttribute("login_name"); - if(confirm(`<%= lang("are you sure you want to delete user") %> ${login}?`) == true){ - $.post( "/admin/users/del/user",{login:login,id:id}) + if(confirm(`вы точно хотите удалить пользователя ${login}?`) == true){ + $.post( "/admin/users/delete",{login:login,id:id}) .done(function( res ) { if(res["out"] == "good"){ load_users_data(users_from); @@ -135,29 +144,10 @@ } } - let user_edit_menu = document.createElement("div"); - user_edit_menu.id = "user_edit_menu"; - user_edit_menu.classList.add("cmenu"); - - let user_chenge_name = document.createElement("button"); - user_chenge_name.innerHTML = "<%= lang('change login') %>"; - user_chenge_name.setAttribute("onclick","user_edit('login')"); - - let user_chenge_pass = document.createElement("button"); - user_chenge_pass.innerHTML = "<%= lang('change password') %>"; - user_chenge_pass.setAttribute("onclick","user_edit('pass')"); - - let user_chenge_prevs = document.createElement("button"); - user_chenge_prevs.innerHTML = "<%= lang('change privileges') %>"; - user_chenge_prevs.setAttribute("onclick","user_edit('admin')"); - - let user_delete = document.createElement("button"); - user_delete.innerHTML = "<%= lang('delete user') %>"; - user_delete.setAttribute("onclick","user_del()"); - - user_edit_menu.append(user_chenge_name); - user_edit_menu.append(user_chenge_pass); - user_edit_menu.append(user_chenge_prevs); - user_edit_menu.append(user_delete); - document.body.append(user_edit_menu); + let user_edit_menu = document.createElement("div");user_edit_menu.id = "user_edit_menu"; user_edit_menu.classList.add("cmenu"); + let user_chenge_name = document.createElement("button");user_chenge_name.innerHTML = "именить логин"; user_chenge_name.setAttribute("onclick","user_edit('login')"); + let user_chenge_pass = document.createElement("button");user_chenge_pass.innerHTML = "изменить пароль"; user_chenge_pass.setAttribute("onclick","user_edit('pass')"); + let user_chenge_prevs = document.createElement("button");user_chenge_prevs.innerHTML = "сменить привелегии";user_chenge_prevs.setAttribute("onclick","user_edit('admin')"); + let user_delete = document.createElement("button");user_delete.innerHTML = "удалить пользователя";user_delete.setAttribute("onclick","user_del()"); + user_edit_menu.append(user_chenge_name);user_edit_menu.append(user_chenge_pass);user_edit_menu.append(user_chenge_prevs);user_edit_menu.append(user_delete);document.body.append(user_edit_menu); diff --git a/views/admin/users/user_reg.ejs b/views/admin/users/user_reg.ejs index 3832ec6..dfcb16f 100644 --- a/views/admin/users/user_reg.ejs +++ b/views/admin/users/user_reg.ejs @@ -1,23 +1,23 @@ -

      <%= lang("user registration") %>

      -
      +

      регистрация пользователя

      +
      - "> - "> - + + +
      - +
      -
      + \ No newline at end of file diff --git a/views/header.ejs b/views/header.ejs index 6793052..09f7c25 100644 --- a/views/header.ejs +++ b/views/header.ejs @@ -45,11 +45,6 @@ z-index: 100; } -
      @@ -70,15 +65,18 @@ let right = document.getElementById("top_panel_right"); let left = document.getElementById("top_panel_left"); - if(document.title != "main") menu.innerHTML += `
      `; + if(document.title != "main") menu.innerHTML += `
      `; right.innerHTML += ``; if (res["admin"] == true){ - menu.innerHTML += `
      `; + menu.innerHTML += `
      `; } - menu.innerHTML += "
      "; + menu.innerHTML += "
      "; }); + onscroll = (e)=>{ + hide_menus(); + } onclick = (e) => { // e.preventDefault() // console.log(e); @@ -96,7 +94,7 @@ hide_menus(); let menu = document.getElementById("user_menu"); menu.style.display = 'block'; - menu.style = `top:${e.target.getBoundingClientRect().top+30}px;left:${e.target.getBoundingClientRect().left}px`; + menu.style = `top:${e.target.getBoundingClientRect().top + 25}px;left:${e.target.getBoundingClientRect().left - 20}px`; // menu.onmouseleave = () => menu.style.display = 'none'; // menu.innerHTML = "

      Option1

      Option2

      Option3

      Option4

      " // document.body.appendChild(menu) @@ -104,7 +102,7 @@ hide_menus(); let menu = document.getElementById("project_menu"); menu.style.display = 'block'; - menu.style = `top:${e.target.getBoundingClientRect().top+30}px;left:${e.target.getBoundingClientRect().left}px`; + menu.style = `top:${e.target.getBoundingClientRect().top + 25}px;left:${e.target.getBoundingClientRect().left - 20}px`; // menu.onmouseleave = () => menu.style.display = 'none'; // menu.innerHTML = "

      Option1

      Option2

      Option3

      Option4

      " // document.body.appendChild(menu) @@ -117,10 +115,10 @@ menu.setAttribute("login_pass",document.getElementById(`pass_${e.target.classList[0]}`).innerText); menu.setAttribute("login_admin",document.getElementById(`admin_${e.target.classList[0]}`).innerText); menu.style.display = 'block'; - menu.style = `top:${e.target.getBoundingClientRect().top+30}px;left:${e.target.getBoundingClientRect().left-40}px`; + menu.style = `top:${e.target.getBoundingClientRect().top + 25}px;left:${e.target.getBoundingClientRect().left - 20}px`; // menu.onmouseleave = () => menu.style.display = 'none'; // menu.innerHTML = "

      Option1

      Option2

      Option3

      Option4

      " - // document.body.appendChild(menu) + // document.body.appendChild(menu)s } else if(e.target.id == "object_menu"){ @@ -133,8 +131,11 @@ 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+30}px;left:${e.target.getBoundingClientRect().left-40}px`; + // 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) diff --git a/views/login.ejs b/views/login.ejs index 0be5c95..53242af 100644 --- a/views/login.ejs +++ b/views/login.ejs @@ -10,16 +10,18 @@ - -
      - - -
      - - +
      + +
      + + +
      + +
      +
      @@ -31,33 +33,27 @@ const login = CryptoJS.AES.encrypt(document.getElementById('login').value,$.cookie("sid")).toString(); const pass = CryptoJS.AES.encrypt(document.getElementById('pass').value,$.cookie("sid")).toString(); const sid = $.cookie("sid"); - $.post( "/back_login", { login:login,pass:pass,sid:sid }) - .done(function( res ) { - if (res["out"] == "bad"){ - console.log(res["err"]); - if (res["err"] == "user" || res["err"] == "pass"){ - document.querySelector("#res").innerHTML = "

      wrong password or login

      "; + if(login!=""&&pass!=""){ + $.post( "/back_login", { login:login,pass:pass,sid:sid }) + .done(function( res ) { + if (res["out"] == "bad"){ + console.log(res["err"]); + if (res["err"] == "user" || res["err"] == "pass"){ + document.querySelector("#res").innerHTML = "

      wrong password or login

      "; + } } - } - else{ - if(res["out"] == "goto"){ - // postForm(res["url"], res["args"]); - goto(res["url"]); + else{ + if(res["out"] == "goto"){ + // postForm(res["url"], res["args"]); + goto(res["url"]); + } + // if(res["out"] == "logged"){ + // // postForm(res["url"], res["args"]); + // // document.querySelector("#res").innerHTML = `

      user already logged in from sid - ${res["sid"]}


      `; + // } } - // if(res["out"] == "logged"){ - // // postForm(res["url"], res["args"]); - // // document.querySelector("#res").innerHTML = `

      user already logged in from sid - ${res["sid"]}


      `; - // } - } - }); + }); + } } - - var input = document.getElementById("pass"); - input.addEventListener("keypress", function(event) { - if (event.key === "Enter") { - event.preventDefault(); - document.getElementById("log_btn").click(); - } - }); <%- include('./static/end.ejs') %> \ No newline at end of file diff --git a/views/main.ejs b/views/main.ejs index 1a92199..79ec8e0 100644 --- a/views/main.ejs +++ b/views/main.ejs @@ -46,7 +46,7 @@
      - +
      diff --git a/views/project.ejs b/views/project.ejs index 44c244f..ae8dfb0 100644 --- a/views/project.ejs +++ b/views/project.ejs @@ -16,6 +16,13 @@ position: absolute; margin: auto; } + #drags img{ + object-fit: contain; + } + + .zones{ + margin-block: 10px; + } .wall { /* border: dashed 4px transparent; */ @@ -104,10 +111,10 @@
      -
      -
      -
      -
      +
      +
      +
      +
      @@ -117,27 +124,27 @@
      -
      object group
      +
      группа товаров

      - +
      0
      - +
      0
      - <%= lang('black hole') %> + чёрная дыра
      @@ -145,6 +152,7 @@
      +
      цена проекта:
       руб.