diff --git a/index.js b/index.js
index db963c1..b5b20cb 100644
--- a/index.js
+++ b/index.js
@@ -389,6 +389,22 @@ app.post("/admin/template/delete", (req,res) => {try{
},true,true)
} catch (error) {route_err({req:req,error:error});}
})
+app.post("/admin/template/group/new", (req,res) => {try{
+ let inp = req.body;
+ let cook = req.cookies;
+ func.sid(cook,res,()=>{
+ templates.new_group(inp,cook,res);
+ },true,true)
+} catch (error) {route_err({req:req,error:error});}
+})
+app.post("/admin/template/group/delete", (req,res) => {try{
+ let inp = req.body;
+ let cook = req.cookies;
+ func.sid(cook,res,()=>{
+ templates.del_group(inp,cook,res);
+ },true,true)
+} catch (error) {route_err({req:req,error:error});}
+})
app.post("/template/loads", (req,res) => {try{
let inp = req.body;
let cook = req.cookies;
diff --git a/public/lib/inter_temp.js b/public/lib/inter_temp.js
index c6b901e..c6f8092 100644
--- a/public/lib/inter_temp.js
+++ b/public/lib/inter_temp.js
@@ -1,6 +1,6 @@
window.dragMoveListener = dragMoveListener;
let root = document.getElementById("drags");
-let objs = { height:"2",width:"4",color:"#FFFFFF"};
+let objs = { height:"2",width:"4",color:"#FFFFFF",total:0};
let objs_store = {};
let proj_from = "cloud";
let cur_obj;
diff --git a/templates.js b/templates.js
index e0cf294..dfe8196 100644
--- a/templates.js
+++ b/templates.js
@@ -50,6 +50,42 @@ module.exports.load_groups = (inp,cook,res)=>{
}
}
+module.exports.new_group = (inp,cook,res)=>{
+ try {
+ db.gv("template_groups","name",`'${inp["name"]}'`,(gdata)=>{gdata = gdata[0]
+ if(gdata == null){
+ func.log(`admin ${cook["uuid"]} created template group ${inp["name"]}`);
+ db.nr("template_groups","`name`,`count`",`'${inp["name"]}','0'`,true);
+ res.send({out:"good"});
+ }
+ else{
+ res.send({out:"bad"});
+ }
+ })
+ } catch (error) {
+ func.log("backend template group creating err0r - "+error);
+ }
+}
+
+module.exports.del_group = (inp,cook,res)=>{
+ try {
+ db.gv("template_groups","name",`'${inp["name"]}'`,(pdata)=>{pdata=pdata[0]
+ // res.send({out:"good",body:pdata});
+ if(pdata != null){
+ db.dl("template_groups","id",pdata["id"],()=>{
+ res.send({out:"good"});
+ func.log(`good boy ${cook["uuid"]} deleted template group ${inp["name"]}`);
+ },true)
+ }
+ else{
+ res.send({out:"bad"});
+ }
+ })
+ } catch (error) {
+ func.log("backend template group delete err0r - " - error);
+ }
+}
+
module.exports.rename = (inp,cook,res)=>{
try {
db.gv("templates","`id`",`'${inp["id"]}'`,(proj_name)=>{ proj_name = proj_name[0];
diff --git a/views/templates.ejs b/views/templates.ejs
index 46b0317..fbdeda2 100644
--- a/views/templates.ejs
+++ b/views/templates.ejs
@@ -62,8 +62,9 @@
}
.temp_div{
display: block;
- padding: 1vw;
- width: 15vw;
+ padding-block: 3vh;
+ padding-inline: 1vw;
+ width: 17vw;
}
.temp_desc{
padding: 0.5vw;
@@ -76,10 +77,12 @@
display: flex;
justify-content: flex-end;
}
- .admin_panel img{
+ .admin_panel img, .admin_panel_group img{
margin: 0.5vw;
width:24px;
height:24px;
+ z-index: 100;
+ position: relative;
}
@@ -106,37 +109,86 @@
$.post( "/template/group/loads")
.done(function( res ) {
console.log(res);
- Object.values(res["body"]).forEach(group => {
- let temp_group_div = document.createElement("div");
- let temp_group_drop = document.createElement("div");
- let temp_group_list = document.createElement("div");
- let name = document.createElement("div");
- let img = document.createElement("img");
+ if(Object.values(res["body"]).length > 0){
+
+ Object.values(res["body"]).forEach(group => {
+ let temp_group_div = document.createElement("div");
+ let temp_group_drop = document.createElement("div");
+ let temp_group_list = document.createElement("div");
+ let name = document.createElement("div");
+ let img = document.createElement("img");
- temp_group_div.id = `temp_group_div-${group["id"]}`;
- temp_group_drop.id = `temp_group_drop-${group["id"]}`;
- temp_group_list.id = `temp_group_list-${group["id"]}`;
+ temp_group_div.id = `temp_group_div-${group["id"]}`;
+ temp_group_drop.id = `temp_group_drop-${group["id"]}`;
+ temp_group_list.id = `temp_group_list-${group["id"]}`;
- temp_group_div.classList.add(`temp_group_div`);
- temp_group_drop.classList.add(`temp_group_drop`);
- temp_group_list.classList.add(`temp_group_list`);
+ temp_group_div.classList.add(`temp_group_div`);
+ temp_group_drop.classList.add(`temp_group_drop`);
+ temp_group_list.classList.add(`temp_group_list`);
- temp_group_drop.setAttribute("onclick", `temp_group_drop('${group["id"]}')`)
+ temp_group_drop.setAttribute("onclick", `temp_group_drop('${group["id"]}')`)
- img.style = "width: 1.5vw; height: 1.5vh; margin: auto;";
- name.style = "text-align: center;";
- name.innerText = group["name"];
- img.src = "/img/drop.png";
+ img.style = "width: 1.5vw; height: 1.5vh; margin: auto;";
+ name.style = "text-align: center;";
+ name.innerText = group["name"];
+ img.src = "/img/drop.png";
- temp_group_drop.append(name)
- temp_group_drop.append(img)
+ if(globalThis._admin_){
+ let admin_div = document.createElement("div");
+
+ let edit_btn = document.createElement("img");
+ edit_btn.setAttribute("onclick",`rename_group(${group["name"]})");`)
+ edit_btn.src = "/img/icon/edit.svg"
+ admin_div.append(edit_btn)
+
+ let del_btn = document.createElement("img");
+ del_btn.setAttribute("onclick",`del_group("${group["name"]}")`)
+ del_btn.src = "/img/icon/del.png"
+ admin_div.append(del_btn)
+
+ admin_div.classList.add("admin_panel_group")
+ temp_group_div.append(admin_div)
+ temp_group_drop.style.marginTop = "-60px"
+ }
- temp_group_div.append(temp_group_drop);
- temp_group_div.append(temp_group_list);
- document.getElementsByClassName("main")[0].append(temp_group_div);
- });
- });
+ temp_group_drop.append(name)
+ temp_group_drop.append(img)
+
+ temp_group_div.append(temp_group_drop);
+ temp_group_div.append(temp_group_list);
+ document.getElementsByClassName("main")[0].append(temp_group_div);
+ })
+ if(globalThis._admin_){
+ admin_btn_new()
+ }
+ }else{
+ if(globalThis._admin_){
+ admin_btn_new()
+ }
+ }
+ })
+
+ function admin_btn_new(){
+ let temp_group_div = document.createElement("div");
+ let temp_group_drop = document.createElement("div");
+ let name = document.createElement("div");
+
+
+ temp_group_div.classList.add(`temp_group_div`);
+ temp_group_drop.classList.add(`temp_group_drop`);
+ temp_group_drop.classList.add(`btn_blue`);
+
+ temp_group_drop.setAttribute("onclick", `new_group()`)
+
+ name.classList.add(`btn_blue`);
+ name.style = "text-align: center;";
+ name.innerText = 'Добавить новую группу шаблонов';
+
+ temp_group_drop.append(name)
+ temp_group_div.append(temp_group_drop);
+ document.getElementsByClassName("main")[0].append(temp_group_div);
+ }
}
function groups_close(){
@@ -198,35 +250,29 @@
temp_group_list.append(div)
});
if(globalThis._admin_){
- let div = document.createElement("div");
- let use_btn = document.createElement("button");
- let name = document.createElement("div");
- div.classList.add("temp_div")
-
- div.innerHTML = `
`
- name.innerText = "новый шаблон";
- name.style.textAlign = "center";
-
- div.append(name)
- temp_group_list.append(div)
+ admin_btn_new()
}
}
else{
if(globalThis._admin_){
- let div = document.createElement("div");
- let use_btn = document.createElement("button");
- let name = document.createElement("div");
- div.classList.add("temp_div")
-
- div.innerHTML = `
`
- name.innerText = "новый шаблон";
- name.style.textAlign = "center";
-
- div.append(name)
- temp_group_list.append(div)
+ admin_btn_new()
}
}
})
+
+ function admin_btn_new(){
+ let div = document.createElement("div");
+ let use_btn = document.createElement("button");
+ let name = document.createElement("div");
+ div.classList.add("temp_div")
+
+ div.innerHTML = `
`
+ name.innerText = "новый шаблон";
+ name.style.textAlign = "center";
+
+ div.append(name)
+ temp_group_list.append(div)
+ }
}
@@ -253,18 +299,20 @@
function new_temp(objs = null,gid){
msg("название нового шаблона",{type:"enter",res:(out)=>{
- name = out;
- objs = (objs == null)? { height:"2",width:"4"}:objs;
- if(name != null && name!= "" && name!=" " && typeof name != "undefined" && name!="undefined"){
- $.post( "/template/save/", {proj:JSON.stringify(objs),name:name,img:"/img/placeholder.png",gid})
- .done(function( res ) {
- if(res["out"] == "good"){
- goto(`/template/load/${out}`);
- }
- else if(res["out"] == "bad" && res["err"] == "proj"){
- msg("Проект уже существует")
- }
- })
+ if(out){
+ name = out;
+ objs = (objs == null)? {height:"2",width:"4",color:"#FFFFFF",total:0}:objs;
+ if(name != null && name!= "" && name!=" " && typeof name != "undefined" && name!="undefined"){
+ $.post( "/template/save/", {proj:JSON.stringify(objs),name:name,img:"/img/placeholder.png",gid})
+ .done(function( res ) {
+ if(res["out"] == "good"){
+ goto(`/template/load/${out}`);
+ }
+ else if(res["out"] == "bad" && res["err"] == "proj"){
+ msg("Проект уже существует")
+ }
+ })
+ }
}
}})
}
@@ -281,4 +329,37 @@
}
}})
}
+
+
+ function new_group(name){
+ msg("название новой группы шаблонов",{type:"enter",res:(out)=>{
+ if(out){
+ name = out;
+ if(name != null && name!= "" && name!=" " && typeof name != "undefined" && name!="undefined"){
+ $.post( "/admin/template/group/new", {name:name})
+ .done(function( res ) {
+ if(res["out"] == "good"){
+ goto(`/temp`);
+ }
+ else if(res["out"] == "bad"){
+ msg("группа уже существует")
+ }
+ })
+ }
+ }
+ }})
+ }
+
+ function del_group(name){
+ msg(`удалить группу шаблонов ${name}?`,{type:"ask",res:(out)=>{
+ if(out){
+ $.post( "/admin/template/group/delete",{name:name})
+ .done(function( res ) {
+ if(res["out"] == "good"){
+ goto("/temp")
+ }
+ })
+ }
+ }})
+ }
\ No newline at end of file