diff --git a/index.js b/index.js
index a36ca76..db963c1 100644
--- a/index.js
+++ b/index.js
@@ -346,7 +346,18 @@ app.post("/admin/users/find", (req,res) => {try{
// templates
-app.post('/admin/template/save', (req, res) => {try{
+app.get("/template/load/:name" , (req,res) =>{
+ res.render('template',{proj_name:req.params["name"]});
+})
+app.post("/template/get", (req,res) => {try{
+ let inp = req.body;
+ let cook = req.cookies;
+ func.sid(cook,res,()=>{
+ templates.load(inp,cook,res);
+ })
+} catch (error) {route_err({req:req,error:error});}
+})
+app.post('/template/save', (req, res) => {try{
let inp = req.body;
let cook = req.cookies;
func.sid(cook,res,()=>{
@@ -362,6 +373,14 @@ app.post("/admin/template/rename", (req,res) => {try{
},true,true)
} catch (error) {route_err({req:req,error:error});}
})
+app.post("/template/group/loads", (req,res) => {try{
+ let inp = req.body;
+ let cook = req.cookies;
+ func.sid(cook,res,()=>{
+ templates.load_groups(inp,cook,res);
+ },true,true)
+} catch (error) {route_err({req:req,error:error});}
+})
app.post("/admin/template/delete", (req,res) => {try{
let inp = req.body;
let cook = req.cookies;
@@ -370,14 +389,6 @@ app.post("/admin/template/delete", (req,res) => {try{
},true,true)
} catch (error) {route_err({req:req,error:error});}
})
-app.post("/template/load", (req,res) => {try{
- let inp = req.body;
- let cook = req.cookies;
- func.sid(cook,res,()=>{
- templates.load(inp,cook,res);
- })
-} 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/fn.js b/public/lib/fn.js
index 1257f80..b96c2f2 100644
--- a/public/lib/fn.js
+++ b/public/lib/fn.js
@@ -361,26 +361,26 @@ async function removeImageBackground(image) {
}
}
- $.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();
- sources.forEach(element => {
- console.log(element,is_cached(element));
- });
- })
- }
- });
- }
- });
+ // $.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();
+ // // sources.forEach(element => {
+ // // console.log(element,is_cached(element));
+ // // });
+ // })
+ // }
+ // });
+ // }
+ // });
function is_cached(img_url){
var imgEle = document.createElement("img");
diff --git a/public/lib/inter_temp.js b/public/lib/inter_temp.js
new file mode 100644
index 0000000..c6b901e
--- /dev/null
+++ b/public/lib/inter_temp.js
@@ -0,0 +1,441 @@
+window.dragMoveListener = dragMoveListener;
+let root = document.getElementById("drags");
+let objs = { height:"2",width:"4",color:"#FFFFFF"};
+let objs_store = {};
+let proj_from = "cloud";
+let cur_obj;
+let objs_back = [];
+let objs_forw = [];
+let proj_state = "loading";
+let cm_mod = 2;
+
+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");
+ obj.id = id;
+ obj.alt = id;
+ clas= clas.split(" ");
+ clas.forEach(cl => {
+ obj.classList.add(cl);
+ });
+ get_obj(main_clas,(db_data)=>{
+ // console.log(db_data);
+ // console.log(db_data);
+ // db_data.forEach(db_data => {
+ // });
+ if (db_data == null) {
+ delete objs[main_clas];
+ reload();
+ // if(proj_from == "cloud"){
+ // // save(()=>{
+ // // // goto("/proj/load/"+proj_name);
+ // // },false);
+ // }
+ // else if (proj_from == "local"){
+ // save_local();
+ // load_proj_local();
+ // }
+ }
+ else if (db_data != null){
+ make(objs_store[main_clas]["img"])
+ }
+ function make(img){
+ // console.log(db_data);
+ obj.src = img;
+ 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("data-img",img)
+ obj.setAttribute("gid",db_data["gid"])
+ obj.setAttribute("pid",db_data["pid"])
+ obj.setAttribute("color",color)
+ // 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"] * cm_mod}px`;
+ obj.style.height = `${db_data["height"] * cm_mod}px`;
+ }
+ if (color != null){
+ obj_color_change(color,obj)
+ }
+ }
+ calc_total();
+ })
+ 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",9999);
+ obj.style.zIndex = 9999;
+ }
+ else{
+ obj.setAttribute("layer",layer);
+ obj.style.zIndex = layer;
+ }
+ root.append(obj);
+ set_pos(obj,x,y);
+}
+
+function obj_click(id){
+ if (cur_obj != id){
+ let obj = document.getElementById(id);
+
+ let cur_layer = obj.style.zIndex;
+
+ cur_obj = id;
+ if(cur_layer=="9999"){
+ document.getElementsByClassName("layer_changer")[0].style.pointerEvents = "none";
+ document.getElementById("layer_inp").value = "-";
+ }
+ else{
+ document.getElementsByClassName("layer_changer")[0].style.pointerEvents = "all";
+ document.getElementById("layer_inp").value = cur_layer;
+ }
+
+ if (obj.getAttribute("colors") == "true"){
+ clear_palette();
+ obj_colors_load(()=>{
+ document.getElementById("obj_color_div").style.display = "flex";
+ if( document.getElementById(`color_${obj.getAttribute("color")}`) != null){
+ document.getElementById(`color_${obj.getAttribute("color")}`).style.border = "1px blue solid"
+ }
+ });
+ }
+ 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 = "2px black solid";
+ element.style.borderRadius = "0.2vw";
+ }
+ });
+ }
+}
+
+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();
+}
+
+function wall_size_change(type,value = null){
+ if (proj_state == "loaded"){objs_back.push(JSON.parse(JSON.stringify(objs)));}
+
+ let wall = document.getElementsByClassName("wall")[0];
+ let drags = document.getElementById("drags");
+ let scroll;
+ if(type != null && type == "width") {
+ if (value == null) scroll = parseFloat(document.getElementById("wall_width").value);
+ else if (value != null) scroll = value;
+ // document.getElementById("wall_width_value").innerHTML = (Math.ceil((parseFloat(scroll)+0.1)*10)/ 10);
+ // document.getElementById("wall_width_value").innerHTML = `${scroll}м`;
+
+ // console.log(scroll);
+ wall.style.width = `${(scroll * 100) * cm_mod}px`;
+ wall.style.left = drags.getBoundingClientRect().left;
+ objs["width"] = scroll;
+ }
+ if(type != null && type == "height") {
+ if (value == null) scroll = parseFloat(document.getElementById("wall_height").value);
+ else if (value != null) scroll = value;
+ // document.getElementById("wall_height_value").innerHTML = (Math.ceil((parseFloat(scroll)+0.1)*10)/ 10);
+ // document.getElementById("wall_height_value").innerHTML = `${scroll}м`;
+
+ // console.log(scroll);
+ wall.style.height = `${(scroll * 100) * cm_mod}px`;
+ objs["height"] = scroll;
+ }
+}
+
+function calc_total(start = false){
+ document.getElementById("cost_list").innerHTML = ""
+ if (start) {
+ document.getElementById("proj_cost_text").innerText = `Стоимость: ${objs["total"]} руб.`;
+ return;
+ }
+ let total=0;
+ Object.entries(objs).forEach(([key,value]) => {
+ // console.log(key);
+ if(key != "height"&&key!="width"&key!="total"){
+ // console.log(Object.keys(value).length);
+ // console.log(objs_store[key]);
+ if(objs_store[key] != null && objs_store[key]["cost"] > 0 && JSON.parse(document.getElementById(`group_drop-${objs_store[key]["pid"]}`).getAttribute("no-cost")) == false){
+ // console.log(key,value);
+ 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].replaceAll("$"," ")}`+
+ `
 ${Object.keys(value).length}X
`+
+ `
`+
+ `${parseInt(parseInt(objs_store[key]["cost"]) * Object.keys(value).length)}
`;
+ document.getElementById("cost_list").append(obj_cost_div);
+ }
+ }
+ // console.log(Object.keys(objs).at(-1));
+ });
+ // return total;
+
+ objs["total"] = total;
+ document.getElementById("proj_cost_text").innerText = `стоимость: ${total} руб.`;
+}
+
+function load(objss){
+ proj_state = "loading";
+ // objs = JSON.parse($.cookie("objs"));
+ // console.log(objs);
+ objs = objss;
+ Object.entries(objs).forEach(([keys, values]) => {
+ // console.log(keys,values);
+ if (keys != "width" && keys != "height" && keys != "color" && keys != "grided"){
+ Object.entries(values).forEach(([key, value]) => {
+ if(key != "class"){
+ // console.log(key,keys);
+ // 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,value["layer"]);
+ }
+ })
+ }
+ else {
+ document.getElementById(`wall_${keys}`).value = values;
+ wall_size_change(keys,values);
+ // document.getElementById("drags").style.left = $(".dropzone")[0].getBoundingClientRect().x;
+ }
+
+ if (keys == "color"){
+ document.getElementById("wall").style.backgroundColor = values;
+ }
+ if (keys == Object.keys(objs).at(-1)){
+ proj_state = "loaded";
+ loaded();
+ }
+ });
+ resize_drags();
+}
+function reload(save = false){
+ // objs = JSON.parse($.cookie("objs"));
+ // console.log(objs);
+ document.getElementById("drags").innerHTML = "";
+ load(objs);
+ if(save){save(()=>{},false)}
+}
+
+function load_proj_cloud(){
+ proj_from = "cloud";
+ document.getElementById("drags").innerHTML = "";
+ // document.getElementById("top_panel_center").innerText = `загрузка ${proj_name} из облака`;
+ $.post( "/template/get",{name:proj_name})
+ .done(function( res ) {
+ if(res["out"] == "good"){
+ // console.log("good");
+ // console.log(JSON.parse(`'${res["body"]}'`));
+ // console.log(JSON.parse(res["body"]));
+ // $.cookie("objs",res["body"]);
+ load(JSON.parse(res["body"]));
+ // document.getElementById("top_panel_center").innerText = `${proj_name} (облако)`;
+ }
+ else if(res["out"] == "bad proj"){
+ // console.log("bad");
+ save(()=>{
+ goto("/template/load"+proj_name);
+ },false);
+ }
+ })
+}
+
+function save(callback,with_pic = true){
+ // console.log(objs);
+ proj_from = "cloud";
+ if(with_pic){
+ proj_img((src)=>{
+ make_save(src);
+ })
+ }
+ else{
+ make_save();
+ }
+ function make_save(src = "img/img_placeholder.webp"){
+ $.post( "/template/save", {proj:JSON.stringify(objs),name:proj_name,img:src})
+ .done(function( res ) {
+ if(res["out"] == "good"){
+ // console.log(scr)
+ // console.log("good");
+ if(callback) callback(res);
+ }
+ })
+ }
+}
+
+function load_objs(callback,group){
+ // let select = document.getElementById("group_select");
+ // 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"]}`] = {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"]);
+ }
+ });
+}
+
+function get_obj(clas,callback){
+ if(objs_store[clas] != null){
+ callback(objs_store[clas]);
+ }
+ else{
+ load_objs(()=>{
+ callback(objs_store[clas]);
+ })
+ }
+}
+
+function load_obj(name,key,callback){
+ $.post( "/get_obj",{name:name,key:key})
+ .done(function( res ) {
+ if(res["out"] == "good"){
+ // console.log(res["body"]);
+ callback(res["body"]);
+ }
+ });
+}
+
+function dragMoveListener (event) {
+ var drag = event.target
+ 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);
+}
+ let dragzone = document.getElementsByClassName('wall')[0];
+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: cm_mod, y: cm_mod })],range: Infinity,relativePoints: [ { x: 0, y: 0 } ]}),
+ ],
+ autoScroll: true,
+ listeners: {move: dragMoveListener, end (event) {}}
+})
+
+// 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];
+// }
+// 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;
+// // console.log(drag.id);
+// // console.log(objs);
+// 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');}
+// })
+
+interact('.dropzone').dropzone({
+ accept: '.drag',
+ overlap: 0.5,
+
+ 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]);
+ if (objs[drag.classList[0]][drag.id] == null){
+ objs[drag.classList[0]][drag.id] = {};
+ drag.setAttribute("onclick",`obj_click("${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
+
+ 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"),layer:drag.getAttribute('layer')};
+ drag.classList.add('in_zone');drag.classList.remove('can-drop');
+ // console.log(objs["KeyBoard~g~не$основное"]["KeyBoard~g~не$основное_1"]);
+
+ },
+ ondropdeactivate: function (event) {var zone = event.target;zone.classList.remove('drop-active');zone.classList.remove('drop-target');}
+})
+
+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');
+ },
+ 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"] * 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;
+ let y = zone.getBoundingClientRect().top - document.getElementById("drags").getBoundingClientRect().top;
+ 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');
+ }
+ 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() {
+ let spawns = document.getElementsByClassName("spawn");
+ Object.entries(spawns).forEach(([key, spawn]) => {
+ spawn.parentElement.removeChild(spawn);
+ });
+ let zones = document.getElementsByClassName("createzone");
+ 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`,false,0);
+ });
+}
+
+function get_id(clas){
+ if(objs[clas] == null){ return `${clas}_0`}
+ else{
+ let count = Object.keys(objs[clas]).length;
+ return `${clas}_${count}`;
+ }
+}
\ No newline at end of file
diff --git a/templates.js b/templates.js
index 3ef12bd..e0cf294 100644
--- a/templates.js
+++ b/templates.js
@@ -5,9 +5,9 @@ const vars = require('./vars');
module.exports.load = (inp,cook,res)=>{
try {
- db.gv("projects","id",inp["id"],(pdata)=>{pdata = pdata[0];
+ db.gv("templates","name",`'${inp["name"]}'`,(pdata)=>{pdata = pdata[0];
+ console.log(pdata);
if (pdata != null){
- func.log(`good boy ${cook["uuid"]} loaded project ${pdata["name"]}`);
res.send({out:"good",body:pdata["body"]});
}
else{
@@ -15,72 +15,93 @@ module.exports.load = (inp,cook,res)=>{
}
})
} catch (error) {
- func.log("backend project loading error - ");
+ func.log("backend template loading error - ");
+ }
+}
+
+module.exports.load_all = (inp,cook,res)=>{
+ try {
+ db.gav("templates","0",(pdata)=>{
+ res.send({out:"good",body:pdata});
+ })
+ } catch (error) {
+ func.log("backend templates loading err0r - " - error);
}
}
module.exports.loads = (inp,cook,res)=>{
try {
- db.gav("projects","0",(pdata)=>{
+ db.gv("templates",'gid',`${inp["gid"]}`,(pdata)=>{
res.send({out:"good",body:pdata});
})
} catch (error) {
- func.log("backend projects loading err0r - " - error);
+ func.log("backend templates loading err0r - " - error);
+ }
+}
+
+
+module.exports.load_groups = (inp,cook,res)=>{
+ try {
+ db.gav("template_groups","0",(pdata)=>{
+ res.send({out:"good",body:pdata});
+ })
+ } catch (error) {
+ func.log("backend templates loading err0r - " - error);
}
}
module.exports.rename = (inp,cook,res)=>{
try {
- db.gv("projects","`id`",`'${inp["id"]}'`,(proj_name)=>{ proj_name = proj_name[0];
+ db.gv("templates","`id`",`'${inp["id"]}'`,(proj_name)=>{ proj_name = proj_name[0];
// console.log(proj_name);
if(proj_name == null){
- db.sv("projects","name",`${inp["name"]}`,"id",`${inp["id"]}`, (db)=>{
+ db.sv("templates","name",`${inp["name"]}`,"id",`${inp["id"]}`, (db)=>{
res.send({out:"good"});
})
}
})
} catch (error) {
- func.log("backend projects loading err0r - " - error);
+ func.log("backend templates loading err0r - " - error);
}
}
module.exports.del = (inp,cook,res)=>{
try {
- db.gv("projects","id",`'${inp["id"]}'`,(pdata)=>{pdata=pdata[0]
+ db.gv("templates","name",`'${inp["name"]}'`,(pdata)=>{pdata=pdata[0]
// res.send({out:"good",body:pdata});
if(pdata != null){
- db.dl("projects","id",pdata["id"],()=>{
+ db.dl("templates","id",pdata["id"],()=>{
res.send({out:"good"});
func.log(`good boy ${cook["uuid"]} deleted project ${inp["name"]}`);
- })
+ },true)
}
else{
res.send({out:"bad"});
}
})
} catch (error) {
- func.log("backend projects delete err0r - " - error);
+ func.log("backend templates delete err0r - " - error);
}
}
module.exports.save = (inp,cook,res)=>{
try {
- db.gv("projects","id",`'${inp["id"]}'`,(pdata)=>{pdata = pdata[0]
+ db.gv("templates","name",`'${inp["name"]}'`,(pdata)=>{pdata = pdata[0]
var date = moment().format('YYYY-MM-DD');
var time = moment().format('hh:mm:ss');
if(pdata == null){
// func.log("proj not in");
// func.log(pname,udata["id"],proj);
- func.log(`good boy ${cook["uuid"]} created project ${inp["name"]}`);
- db.nr("projects","`name`,`body`,`img`,creation_date",`'${inp["name"]}','${inp["proj"]}','${inp["img"]}','${date+"T"+time}'`,true);
+ func.log(`good boy ${cook["uuid"]} created template ${inp["name"]}`);
+ db.nr("templates","`name`,`body`,`img`,`creation_date`,`gid`",`'${inp["name"]}','${inp["proj"]}','${inp["img"]}','${date+"T"+time}','${inp["gid"]}'`,true);
res.send({out:"good"});
} else if (pdata != null){
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"],()=>{},true);
- db.sv("projects","last_change_date",`${date+"T"+time}`,"id",projin["id"],()=>{},true);
- if(inp["img"] != "") db.sv("projects","img",inp["img"],"id",projin["id"],()=>{});
- func.log(`good boy ${cook["uuid"]} saved project ${projin["name"]}`);
+ db.gv("templates","id",pdata["id"],(projin)=>{projin = projin[0]
+ db.sv("templates","body",inp["proj"],"id",projin["id"],()=>{},true);
+ db.sv("templates","last_change_date",`${date+"T"+time}`,"id",projin["id"],()=>{},true);
+ if(inp["img"] != "") db.sv("templates","img",inp["img"],"id",projin["id"],()=>{},true);
+ func.log(`good boy ${cook["uuid"]} saved template ${projin["name"]}`);
// func.log("proj in");
res.send({out:"good"});
})
@@ -91,6 +112,6 @@ module.exports.save = (inp,cook,res)=>{
}
})
} catch (error) {
- func.log("backend project saving err0r - "+error);
+ func.log("backend templates saving err0r - "+error);
}
}
\ No newline at end of file
diff --git a/views/template.ejs b/views/template.ejs
new file mode 100644
index 0000000..c144093
--- /dev/null
+++ b/views/template.ejs
@@ -0,0 +1,661 @@
+<%- include('./static/start.ejs',{name:proj_name,async:true}) %>
+<%- include('./header.ejs') %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<%- include('./static/end.ejs',{soc:true}) %>
\ No newline at end of file
diff --git a/views/templates.ejs b/views/templates.ejs
index 1353903..46b0317 100644
--- a/views/templates.ejs
+++ b/views/templates.ejs
@@ -4,7 +4,7 @@
@@ -55,11 +100,185 @@
<%- include('./static/end.ejs',{soc:true}) %>
\ No newline at end of file