diff --git a/.gitignore b/.gitignore index ec7932d..891076a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /node_modules /mysql -docker-compose.yaml \ No newline at end of file +docker-compose.yaml +/public/img/object \ No newline at end of file diff --git a/index.js b/index.js index 970a0d6..cd41700 100644 --- a/index.js +++ b/index.js @@ -29,40 +29,25 @@ const app = express(); // const { name } = require('ejs'); const maxRequestBodySize = '20mb'; +let cache_options = { + maxAge: "4d", + etag: false +} app.set('view engine', 'ejs'); app.use(express.urlencoded({ extended: false, limit: maxRequestBodySize })); -app.use(express.static('public')); +app.use(express.static('public',cache_options)); app.use(cookieParser()); /// user -app.get('/', (req, res) => { - let inp = req.body; - let cook = req.cookies; - func.sid(cook,res,(include)=>{ - if(include){ - res.redirect('main'); - } - else{ - res.redirect('login'); - } - },false) -}); app.get("/login" , (req,res) =>{ res.render('login'); }) -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 { let inp = req.body; let cook = req.cookies; @@ -360,6 +345,39 @@ app.post("/admin/users/find", (req,res) => {try{ }) +app.get('/', (req, res) => { + let inp = req.body; + let cook = req.cookies; + func.sid(cook,res,(include)=>{ + if(include){ + res.redirect('main'); + } + else{ + res.redirect('login'); + } + },false) +}); +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.get("/help", (req,res) =>{try{ + let inp = req.body;let cook = req.cookies; + func.sid(cook,res,()=>{ + res.render('help'); + }) +} catch (error) {func.log("router getting user information by uuid error - "+error);} +}); +app.get("/temp", (req,res) =>{try{ + let inp = req.body;let cook = req.cookies; + func.sid(cook,res,()=>{ + res.render('templates'); + }) +} catch (error) {func.log("router getting user information by uuid error - "+error);} +}); app.get("/htc/:hex",(req,res) =>{ res.send(CssFilterConverter.hexToFilter(`#${req.params["hex"]}`)); }) @@ -368,6 +386,7 @@ app.post("/color",(req,res) =>{ func.img_recolor(res,inp["img"],inp["hex"]); }) app.all('*', (req, res) => { - res.status(404).send('

404! Page not


go to main page'); + res.status(404) + res.render("static/404"); }); app.listen(process.env.PORT || 8080, () => func.log("server for puzzle started UwU")); \ No newline at end of file diff --git a/object.js b/object.js index 615edd6..997eb71 100644 --- a/object.js +++ b/object.js @@ -10,7 +10,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`,`cost`,`gid`,`colors`,`pid`","gid",`${gin}`,(odata)=>{ + db.ggv("objects","`name`,`id`,`height`,`width`,`cost`,`gid`,`colors`,`pid`,`img`","gid",`${gin}`,(odata)=>{ // func.log(odata); res.send({out:"good",body:odata}); }) diff --git a/project.js b/project.js index 8fab4a3..f52bf7d 100644 --- a/project.js +++ b/project.js @@ -85,30 +85,29 @@ module.exports.del = (inp,cook,res)=>{ module.exports.save = (inp,cook,res)=>{ try { db.gv("users","uuid",`'${cook["uuid"]}'`, (udata)=>{ udata = udata[0] - db.gv("projects","uid",udata["id"],(pdata)=>{ + db.ggv("projects","`id`,`uid`","name",`'${inp["name"]}'`,(pdata)=>{pdata = pdata[0] var date = moment().format('YYYY-MM-DD'); var time = moment().format('hh:mm:ss'); - let projin = null; - // func.log(pdata); - pdata.forEach(projt => { - if(projt["name"] == inp["name"] && projt["uid"] == udata["id"]){ - projin = projt; - return; - } - }) - if(projin == null){ + if(pdata == null){ // func.log("proj not in"); // func.log(pname,udata["id"],proj); func.log(`good boy ${udata["uuid"]} created project ${inp["name"]} from ${cook["sid"]}`); db.nr("projects","`uid`,`name`,`body`,`img`,creation_date",`'${udata["id"]}','${inp["name"]}','${inp["proj"]}','${inp["img"]}','${date+"T"+time}'`); res.send({out:"good"}); - } else if (projin != null){ - db.sv("projects","body",inp["proj"],"id",projin["id"],()=>{}); - db.sv("projects","last_change_date",`${date+"T"+time}`,"id",projin["id"],()=>{}); - if(inp["img"] != "") db.sv("projects","img",inp["img"],"id",projin["id"],()=>{}); - func.log(`good boy ${udata["uuid"]} saved project ${projin["name"]} from ${cook["sid"]}`); - // func.log("proj in"); - res.send({out:"good"}); + } else if (pdata != null && pdata["uid"] == udata["id"]){ + if(inp["proj"] != JSON.stringify({height:"2",width:"4"})){ + db.gv("projects","id",pdata["id"],(projin)=>{projin = projin[0] + db.sv("projects","body",inp["proj"],"id",projin["id"],()=>{}); + db.sv("projects","last_change_date",`${date+"T"+time}`,"id",projin["id"],()=>{}); + if(inp["img"] != "") db.sv("projects","img",inp["img"],"id",projin["id"],()=>{}); + func.log(`good boy ${udata["uuid"]} saved project ${projin["name"]} from ${cook["sid"]}`); + // func.log("proj in"); + res.send({out:"good"}); + }) + } + else{ + res.send({out:"bad",err:"proj"}); + } } }) }) diff --git a/public/img/icon/down.png b/public/img/icon/down.png new file mode 100644 index 0000000..f42cfba Binary files /dev/null and b/public/img/icon/down.png differ diff --git a/public/img/icon/up.png b/public/img/icon/up.png new file mode 100644 index 0000000..635c7b4 Binary files /dev/null and b/public/img/icon/up.png differ diff --git a/public/lib/fn.js b/public/lib/fn.js index b62b90f..c38839e 100644 --- a/public/lib/fn.js +++ b/public/lib/fn.js @@ -82,11 +82,12 @@ function logout(redirect = true) { }}); } -function ask(text,def = "") { - let name = prompt(text,def); - if(name != "" && name != " "){ - return name; - } +function ask(text,params={def:"",func}) { + msg(text,{type:"enter",def:params.def,res:(out)=>{ + if(out != false){ + params.func(out); + } + }}) } @@ -315,4 +316,59 @@ async function removeImageBackground(image) { }) .catch(console.error); } - \ No newline at end of file + + + + function img_cache(callback){ + function preloadImages(array,callback) { + // let wait_msg = msg("кеширование картинок",{type:"wait"}) + if (!preloadImages.list) { + preloadImages.list = []; + } + var list = preloadImages.list; + for (var i = 0; i < array.length; i++) { + console.log(array[i],is_cached(array[i])); + if(!is_cached(array[i])){ + var img = new Image(); + img.onload = function() { + var index = list.indexOf(this); + if (index !== -1) { + list.splice(index, 1); + } + // if(i==array.length-1){ + // msg_del(wait_msg.id); + // } + } + list.push(img); + img.src = array[i]; + if(i==array.length-1){ + callback(); + } + } + } + } + + $.post( "/get_objs") + .done(function( res ) { + if(res["out"] == "good"){ + // console.log(res["body"]); + let sources = []; + res["body"].forEach(element => { + sources.push(element["img"]); + if(element == res["body"].at(-1)){ + // console.log(sources); + preloadImages(sources,()=>{ + // console.log("cached"); + callback(); + }) + } + }); + } + }); + + function is_cached(img_url){ + var imgEle = document.createElement("img"); + imgEle.src = img_url; + return imgEle.complete || (imgEle.width+imgEle.height) > 0; + } +} \ No newline at end of file diff --git a/public/lib/inter.js b/public/lib/inter.js index d266de7..d2b9c6a 100644 --- a/public/lib/inter.js +++ b/public/lib/inter.js @@ -2,7 +2,6 @@ window.dragMoveListener = dragMoveListener; let root = document.getElementById("drags"); let objs = { height:"2",width:"4",color:"#FFFFFF"}; let objs_store = {}; -let objs_imgs = {}; let proj_from = "cloud"; let cur_obj; let objs_back = []; @@ -10,7 +9,7 @@ let objs_forw = []; let proj_state = "loading"; let cm_mod = 2; -function create(clas,x,y,color = null,id,size){ +function create(clas,x,y,color = null,id,size,layer = 0){ let main_clas = clas.split(" ")[0]; // if (body == null || body == "") body = "[]"; let obj = document.createElement("img"); @@ -39,15 +38,7 @@ function create(clas,x,y,color = null,id,size){ // } } else if (db_data != null){ - 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]) - } + make(objs_store[main_clas]["img"]) } function make(img){ // console.log(db_data); @@ -55,7 +46,7 @@ function create(clas,x,y,color = null,id,size){ obj.title = `${db_data["name"].replaceAll("$"," ").split("~g")[0]}\nцена:${db_data["cost"]}\nширина:${db_data["width"]}см высота:${db_data["height"]}см`; obj.setAttribute("cost",db_data["cost"]) obj.setAttribute("colors",Boolean(db_data["colors"])) - obj.setAttribute("img",img) + obj.setAttribute("data-img",img) obj.setAttribute("gid",db_data["gid"]) obj.setAttribute("pid",db_data["pid"]) obj.setAttribute("color",color) @@ -70,7 +61,18 @@ function create(clas,x,y,color = null,id,size){ } calc_total(); }) - obj.setAttribute("onclick",`obj_click("${id}")`); + obj.setAttribute("decoding","async"); + obj.setAttribute("loading","lazy"); + if(id != "none"){obj.setAttribute("onclick",`obj_click("${id}")`);} + // console.log(main_clas); + if(main_clas.split("~p~").at(-1) == "Бизиборды"){ + obj.setAttribute("layer",99999); + obj.style.zIndex = 99999; + } + else{ + obj.setAttribute("layer",layer); + obj.style.zIndex = layer; + } root.append(obj); set_pos(obj,x,y); } @@ -78,6 +80,10 @@ function create(clas,x,y,color = null,id,size){ function obj_click(id){ if (cur_obj != id){ let obj = document.getElementById(id); + + let cur_layer = obj.style.zIndex; + document.getElementById("layer_inp").value = cur_layer; + cur_obj = id; if (obj.getAttribute("colors") == "true"){ clear_palette(); @@ -91,20 +97,22 @@ function obj_click(id){ else{ document.getElementById("obj_color_div").style.display = "none"; } + obj_selection(); // console.log(obj.); } - // function obj_selection(){ - // 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 obj_selection(){ + 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 = "2px black solid"; + element.style.borderRadius = "0.2vw"; + } + }); + } } function resize_drags(){ @@ -191,7 +199,7 @@ function load(objss){ // console.log(keys,value["x"],value["y"],value["body"]); // let count = Object.keys(objs[keys]).length; // console.log(count); - create(keys+" drag",value["x"],value["y"],value["color"],key,true); + create(keys+" drag",value["x"],value["y"],value["color"],key,true,value["layer"]); } }) } @@ -205,7 +213,6 @@ function load(objss){ document.getElementById("wall").style.backgroundColor = values; } if (keys == Object.keys(objs).at(-1)){ - loaded(); proj_state = "loaded"; } }); @@ -234,7 +241,7 @@ function load_proj_cloud(){ // document.getElementById("top_panel_center").innerText = `${proj_name} (облако)`; } else if(res["out"] == "bad proj"){ - console.log("bad"); + // console.log("bad"); save(()=>{ goto("/proj/load/"+proj_name); },false); @@ -284,13 +291,13 @@ function save(callback,with_pic = true){ function load_objs(callback,group){ // let select = document.getElementById("group_select"); - console.log(group); + // console.log(group); $.post( "/get_objs",{gid:group}) .done(function( res ) { if(res["out"] == "good"){ // console.log(res["body"]); res["body"].forEach(element => { - objs_store[`${element["name"]}`] = {height:element["height"],width:element["width"],id:element["id"],name:element["name"],cost:element["cost"],colors:element["colors"],gid:element["gid"],pid:element["pid"]} + objs_store[`${element["name"]}`] = {img:element["img"],height:element["height"],width:element["width"],id:element["id"],name:element["name"],cost:element["cost"],colors:element["colors"],gid:element["gid"],pid:element["pid"]} }); callback(res["body"]); } @@ -320,7 +327,7 @@ function load_obj(name,key,callback){ function dragMoveListener (event) { var drag = event.target - obj_click(drag.id) + if(drag.id != "none"){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); @@ -381,7 +388,7 @@ interact('.dropzone').dropzone({ ondrop: function (event) {var drag = event.relatedTarget if (proj_state == "loaded"){objs_back.push(JSON.parse(JSON.stringify(objs)));} - objs[drag.classList[0]][drag.id] = {y:drag.getAttribute('data-y'),x:drag.getAttribute('data-x'),body:drag.innerHTML,color:drag.getAttribute("color")}; + objs[drag.classList[0]][drag.id] = {y:drag.getAttribute('data-y'),x:drag.getAttribute('data-x'),body:drag.innerHTML,color:drag.getAttribute("color"),layer:drag.getAttribute('layer')}; drag.classList.add('in_zone');drag.classList.remove('can-drop'); // console.log(objs["KeyBoard~g~не$основное"]["KeyBoard~g~не$основное_1"]); @@ -408,7 +415,7 @@ 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,null,`none`); + create(`${zone.classList[0]} spawn drag`,x,y,null,`none`,false,0); if (proj_state == "loaded"){objs_back.push(JSON.parse(JSON.stringify(objs)));} drag.classList.remove('spawn'); } @@ -429,7 +436,7 @@ function drag_start() { Object.entries(zones).forEach(([key, zone]) => { 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,null,`none`); + create(`${zone.classList[0]} spawn drag`,x,y,null,`none`,false,0); }); } diff --git a/views/admin/objects/object_colors.ejs b/views/admin/objects/object_colors.ejs index 9e07cf4..20eefc0 100644 --- a/views/admin/objects/object_colors.ejs +++ b/views/admin/objects/object_colors.ejs @@ -49,15 +49,16 @@ } function del_color(){ let color_id = document.getElementById(cur_color).getAttribute("color_id") - let wait_msg = msg("удаление цвета",{type:"wait"}) - $.post( "/admin/colors/delete", {id:color_id}) - .done(function( res ) { - if(res["out"] == "good"){ - msg_del(wait_msg.id); - msg("цвет удалён"); - obj_colors_load(); - console.log(res["body"]); - } - }); + msg("Удалить этот цвет?",{type:"ask",res:(out)=>{if(out){ + $.post( "/admin/colors/delete", {id:color_id}) + .done(function( res ) { + if(res["out"] == "good"){ + msg("цвет удалён"); + obj_colors_load(); + console.log(res["body"]); + } + }); + }}}) + } \ No newline at end of file diff --git a/views/admin/objects/object_edit.ejs b/views/admin/objects/object_edit.ejs index 667607c..9dd781c 100644 --- a/views/admin/objects/object_edit.ejs +++ b/views/admin/objects/object_edit.ejs @@ -29,7 +29,7 @@

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

-
+
@@ -86,7 +86,7 @@ function obj_del(id){ // let select = document.getElementById("group_select"); let menu = document.getElementById(`object_${id}`); - if (confirm(`вы точно хотите удалить ${menu.getAttribute("name").split("~")[0]}?`)){ + msg(`вы точно хотите удалить ${menu.getAttribute("name").split("~")[0]}?`,{type:"ask",res:(out)=>{if(res){ let wait_msg = msg("удаление товара",{type:"wait"}); $.post( "/admin/objects/delete", { id:id,}) .done(function( res ) { @@ -96,7 +96,7 @@ edit_get_objs(); } }); - } + }}}) } function save_edited_obj(id){ @@ -194,16 +194,16 @@ }); } else{ - let name = ask("название"); - if(name != "")[ - $.post( "/admin/objects/find", { name:name.replaceAll(" ","$")}) - .done(function( res ) { - if(res["out"] == "good"){ - // console.log(res["body"]); - callback(res["body"]) - } - }) - ] + ask("название",{func:(name)=>{ + $.post( "/admin/objects/find", { name:name.replaceAll(" ","$")}) + .done(function( res ) { + if(res["out"] == "good"){ + // console.log(res["body"]); + callback(res["body"]) + } + }) + } + }); } } diff --git a/views/admin/objects/object_groups.ejs b/views/admin/objects/object_groups.ejs index 60eff14..edac48d 100644 --- a/views/admin/objects/object_groups.ejs +++ b/views/admin/objects/object_groups.ejs @@ -86,57 +86,59 @@ let name = document.getElementById("group_drop-"+pid).innerText; msg(`вы уверены вы хотите удалить раздел ${name}`,{type:"ask",res:(out)=>{ if(out == true){ - $.post( "/admin/parts/delete", {pid:pid}) - .done(function( res ) { - if(res["out"] == "good"){ - // console.log(res["body"]); - // load_groups(); - edit_get_objs(); - hide_menus(); - setTimeout(()=>{ - parts_load(); - msg(`раздел ${name} удалён`) - },500) - } - }); - } + $.post( "/admin/parts/delete", {pid:pid}) + .done(function( res ) { + if(res["out"] == "good"){ + // console.log(res["body"]); + // load_groups(); + edit_get_objs(); + hide_menus(); + setTimeout(()=>{ + parts_load(); + msg(`раздел ${name} удалён`) + },500) + } + }); + } }}) } function create_new_group(pid) { - let group_name = ask("название группы"); - if(group_name != null && group_name != ""){ - $.post( "/admin/groups/new", { name:group_name.replaceAll(" ","$"),pid:pid}) - .done(function( res ) { - if(res["out"] == "good"){ - // console.log(res["body"]); - // load_groups(); - edit_get_objs(); - hide_menus(); - setTimeout(()=>{ - parts_load(); - msg(`группа ${group_name.replaceAll(" ","$")} создана`) - },500) - } - }); - } + ask("название группы",{func:(group_name)=>{ + if(group_name != null && group_name != ""){ + $.post( "/admin/groups/new", { name:group_name.replaceAll(" ","$"),pid:pid}) + .done(function( res ) { + if(res["out"] == "good"){ + // console.log(res["body"]); + // load_groups(); + edit_get_objs(); + hide_menus(); + setTimeout(()=>{ + parts_load(); + msg(`группа ${group_name.replaceAll(" ","$")} создана`) + },500) + } + }); + } + }}); } function create_new_part() { - let part_name = ask("название раздела"); - if(part_name != null && part_name != ""){ - $.post( "/admin/parts/new", { name:part_name.replaceAll(" ","$")}) - .done(function( res ) { - if(res["out"] == "good"){ - // console.log(res["body"]); - // load_groups(); - hide_menus(); - setTimeout(()=>{ - parts_load(); - msg(`раздел ${part_name.replaceAll(" ","$")} создан`) - },500) + ask("название раздела",{func:(part_name)=>{ + if(part_name != null && part_name != ""){ + $.post( "/admin/parts/new", { name:part_name.replaceAll(" ","$")}) + .done(function( res ) { + if(res["out"] == "good"){ + // console.log(res["body"]); + // load_groups(); + hide_menus(); + setTimeout(()=>{ + parts_load(); + msg(`раздел ${part_name.replaceAll(" ","$")} создан`) + },500) + } + }); } - }); - } + }}) } function parts_load(){ diff --git a/views/admin/users/user_edit.ejs b/views/admin/users/user_edit.ejs index 8daf3ec..39c4b7b 100644 --- a/views/admin/users/user_edit.ejs +++ b/views/admin/users/user_edit.ejs @@ -115,22 +115,23 @@ }); } else{ - let login = ask("имя"); - if (login != ""){ - form = 0; - $.post( "/admin/users/find",{login:login,from:from,load_interval:load_interval}) - .done(function( res ) { - if(res["out"] == "good"){ - res["body"].forEach(user => { - make_user(user,res); - }); - } - else if(res["out"] == "bad"){ - msg("нет пользователя с таким иминем") - load_users_data(users_from); - } - }); - } + ask("имя",{func:(out)=>{ + if(out != null && out != "" && out != " "){ + from = 0; + $.post( "/admin/users/find",{login:out,from:from,load_interval:load_interval}) + .done(function( res ) { + if(res["out"] == "good"){ + res["body"].forEach(user => { + make_user(user,res); + }); + } + else if(res["out"] == "bad"){ + msg("нет пользователя с таким иминем") + load_users_data(users_from); + } + }); + } + }}) } function make_user(user,res){ @@ -205,16 +206,21 @@ let pass= document.getElementById(`pass_${id}`).innerText; let value = null; if (key == 'login' || key == "pass") { - value = ask(`изменение ${key} пользователя ${login}`,document.getElementById(`${key}_${id}`).innerText); + ask(`изменение ${key} пользователя ${login}`,{def:document.getElementById(`${key}_${id}`).innerText,func:(out)=>{ + if(out != null && out != "" && out != " "){ + make(out); + } + }}); } else if (key == "admin"){ value = admin; + make(value) } else if (key == "rights"){ value = args[0]["rights"]; + make(value) } - - if(value != null){ + function make(value){ $.post( "/admin/users/edit",{key:key,value:value,id:id,login:login}) .done(function( res ) { // console.log("serv reg"); @@ -261,14 +267,15 @@ } function user_del(id){ let login = document.getElementById(`login_${id}`).innerText; - if(confirm(`вы точно хотите удалить пользователя ${login}?`) == true){ - $.post( "/admin/users/delete",{login:login,id:id}) - .done(function( res ) { - if(res["out"] == "good"){ - load_users_data(users_from); - } - }); - } + msg(`вы точно хотите удалить пользователя ${login}?`,{type:"ask",res:(out)=>{if(out){ + $.post( "/admin/users/delete",{login:login,id:id}) + .done(function( res ) { + if(res["out"] == "good"){ + load_users_data(users_from); + } + }); + } + }}) } let user_edit_menu = document.createElement("div");user_edit_menu.id = "user_edit_menu"; user_edit_menu.classList.add("cmenu"); diff --git a/views/header.ejs b/views/header.ejs index ff43b2b..0283494 100644 --- a/views/header.ejs +++ b/views/header.ejs @@ -127,7 +127,7 @@
- + @@ -162,6 +162,7 @@ let menu = document.getElementById("top_panel_center"); if (res["admin"] == true){ + if (typeof admin != "undefined"){Object.values(admin).forEach(afunc => {afunc()});} menu.innerHTML += `
`; switch (document.URL.split("/").at(-1)) { case ("admin"):document.getElementById("page_btn_admin").style.border = "1px solid black";break; diff --git a/views/help.ejs b/views/help.ejs new file mode 100644 index 0000000..6ccd5bc --- /dev/null +++ b/views/help.ejs @@ -0,0 +1,16 @@ +<%- include('./static/start.ejs',{name:'help',async: true}) %> +<%- include('./header.ejs') %> + + +
+
+

Морской Сергей Юрьевич - руководитель проекта:

+

Kонтакты:

+
+
+ + +<%- include('./static/end.ejs',{soc:true}) %> + \ No newline at end of file diff --git a/views/load.ejs b/views/load.ejs index 137ed8d..5d9dffe 100644 --- a/views/load.ejs +++ b/views/load.ejs @@ -30,7 +30,7 @@ cursor: pointer; } #load_help{ - width: 12vw; + /* width: 12vw; */ justify-content: space-between; position:absolute; top:50%; @@ -47,7 +47,14 @@
- +
+
Страница Долго загружается?
+
Вы можете
+
+ +
+
Но лучьше подождать
+
\ No newline at end of file diff --git a/views/login.ejs b/views/login.ejs index b98753c..a1a3815 100644 --- a/views/login.ejs +++ b/views/login.ejs @@ -141,9 +141,10 @@ // logo.style.transform = 'translate(-40vw,-20vh)'; // logo.style.position = "absolute" function log(){ - 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"); + console.log(sid); + const login = CryptoJS.AES.encrypt(document.getElementById('login').value,sid).toString(); + const pass = CryptoJS.AES.encrypt(document.getElementById('pass').value,sid).toString(); if(login!=""&&pass!=""){ $.post( "/back_login", { login:login,pass:pass,sid:sid }) .done(function( res ) { diff --git a/views/main.ejs b/views/main.ejs index d52dd01..7deaf39 100644 --- a/views/main.ejs +++ b/views/main.ejs @@ -61,24 +61,25 @@ }); } function new_proj(objs = null){ - let name = ask("please enter project name"); - objs = (objs == null)? { height:"2",width:"4"}:objs; - if(name != null && name!= "" && name!=" " && typeof name != "undefined" && name!="undefined"){ - $.post( "/save_proj", {proj:JSON.stringify(objs),name:name,img:"/img/proj_placeholder.webp"}) - .done(function( res ) { - if(res["out"] == "good"){ - // console.log(scr) - // console.log("good"); - // if(callback) callback(res); - goto(`/proj/load/${name}`); - } - }) - } + let name = ask("Введите название проекта ",{func:(name)=>{ + objs = (objs == null)? { height:"2",width:"4"}:objs; + if(name != null && name!= "" && name!=" " && typeof name != "undefined" && name!="undefined"){ + $.post( "/save_proj", {proj:JSON.stringify(objs),name:name,img:"/img/proj_placeholder.webp"}) + .done(function( res ) { + if(res["out"] == "good"){ + goto(`/proj/load/${name}`); + } + else if(res["out"] == "bad" && res["err"] == "proj"){ + msg("Проект уже существует") + } + }) + } + }}); } load_projs((projs)=>{ console.log(projs); if(projs.length == 0){ - setTimeout(loaded(),1000) + setTimeout(()=>{loaded()},500); } else{ projs.forEach(proj => { @@ -99,7 +100,7 @@
`; - setTimeout(loaded(),1000) + setTimeout(()=>{loaded()},500); }); } }); @@ -112,37 +113,52 @@ } function del_proj(proj_name){ - let del = confirm(`удалить проект ${proj_name}?`); - if(del == true){ - $.post( "/proj/delete",{name:proj_name}) - .done(function( res ) { - if(res["out"] == "good"){ - goto("/main") - } - }) - } + msg(`удалить проект ${proj_name}?`,{type:"ask",res:(out)=>{ + if(out){ + $.post( "/proj/delete",{name:proj_name}) + .done(function( res ) { + if(res["out"] == "good"){ + goto("/main") + } + }) + } + }}) } function copy_proj(proj){ $.post( "/load_proj",{name:proj}) .done(function( res ) { if(res["out"] == "good"){ - new_proj(JSON.parse(res["body"])) + let name = ask("Введите название копии проекта ",{func:(name)=>{ + if(name != null && name!= "" && name!=" " && typeof name != "undefined" && name!="undefined"){ + $.post( "/save_proj", {proj:res["body"],name:name,img:"/img/proj_placeholder.webp"}) + .done(function( res ) { + if(res["out"] == "good"){ + goto(`/proj/load/${name}`); + } + else if(res["out"] == "bad" && res["err"] == "proj"){ + msg("Проект уже существует") + } + }) + } + }}); } }) } + function rename_proj(name){ let cur_proj = document.getElementById(`proj_${name}`); - let new_name = ask(`новое имя для проекта ${name}`); - if(new_name != null){ - $.post( "/proj/rename",{name:new_name,id:cur_proj.getAttribute("proj_id")}) - .done(function( res ) { - if(res["out"] == "good"){ - goto("/main"); - } - }) - } + ask(`новое имя для проекта ${name}`,{func:(new_name)=>{ + if(new_name != null){ + $.post( "/proj/rename",{name:new_name,id:cur_proj.getAttribute("proj_id")}) + .done(function( res ) { + if(res["out"] == "good"){ + goto("/main"); + } + }) + } + }}); } <%- include('./static/end.ejs',{soc:true}) %> \ No newline at end of file diff --git a/views/message.ejs b/views/message.ejs index 76d7553..0e84c83 100644 --- a/views/message.ejs +++ b/views/message.ejs @@ -17,6 +17,7 @@ width: auto; height: auto; min-width: 100px; + position:relative; max-width: 200px; background-color: rgba(255, 255, 255, 0.9); border: 0.2vw rgba(0, 0, 0, 0.2) solid; @@ -42,7 +43,7 @@ \ No newline at end of file diff --git a/views/static/start.ejs b/views/static/start.ejs index fce7eb8..41316a0 100644 --- a/views/static/start.ejs +++ b/views/static/start.ejs @@ -11,6 +11,10 @@ <%= name %> + + +
+
+ +
+
+ + + + + +<%- include('./static/end.ejs',{soc:true}) %> + \ No newline at end of file