puzzle/views/main.ejs

164 lines
5.8 KiB
Plaintext

<%- include('./static/start.ejs',{name:'main',async: true}) %>
<%- include('./header.ejs') %>
<style>
.p_img{
/* pointer-events: none; */
height: 200px;
border-radius: 10px;
width: 290px;
box-shadow: 0px 4px 4px 0px #00000040;
cursor: pointer;
}
.proj, .new_proj{
border: 0px;
background-color: transparent;
}
.p_left{
display: block;
}
.p_left div{
font-size: calc(var(--main-font-size)/2);
}
.p_right{
display: flex;
margin-top:15px;
justify-content: space-between;
width: 130px;
}
.p_props{
display: flex;
justify-content: space-between;
}
.p_props img{
cursor: pointer;
}
.main h1{
/* font-size: --main-font-size; */
font-weight: 100;
margin: 0px;
padding: 0px;
margin-top: 10px;
}
</style>
<!-- <script src="/lib/interact.min.js"></script> -->
<section class="main">
<div id="projs_div">
<button onclick="new_proj()" class="new_proj"><img class="p_img" src="/img/new_proj.png" alt=""><h1>Новый проект</h1></button>
</div>
</section>
<!-- <script src="/lib/inter.js"></script> -->
<script>
function load_projs(callback){
$.post( "/get_projs")
.done(function( res ) {
if(res["out"] == "good"){
// console.log(res["body"]);
callback(res["body"]);
}
});
}
function new_proj(objs = null){
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()},500);
}
else{
projs.forEach(proj => {
// console.log(proj);
let div = document.getElementById("projs_div");
div.innerHTML += `<button id='proj_${proj["name"]}' proj_id='${proj["id"]}' class='proj'>
<img src='${proj["img"]}' alt='${proj["name"]}' class="p_img" onclick="goto('/proj/load/${proj["name"]}')">
<div class="p_props">
<div class="p_left" style="text-align:left">
<h1>${proj["name"]}</h1>
<div>${proj["creation_date"].split("T")[0]}</div>
</div>
<div class="p_right">
<img src="/img/icon/edit.svg" style="width:24px;height:24px" onclick="rename_proj('${proj["name"]}')">
<img src="/img/icon/copy.svg" style="width:24px;height:24px" onclick="copy_proj('${proj["name"]}')">
<img src="/img/icon/download.svg" style="width:24px;height:24px" onclick="downloadImg('${proj["img"]}','${proj["name"]}');msg('скачивание');">
<img src="/img/icon/trash.svg" style="width:24px;height:24px" onclick="del_proj('${proj["name"]}')">
</div>
</div>
</button>`;
setTimeout(()=>{loaded()},500);
});
}
});
function download_proj(id,name){
$.post( "/proj/download",{id:id})
.done(function( res ) {
downloadTextFile(res,`${name}.json`)
})
}
function del_proj(proj_name){
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"){
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}`);
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");
}
})
}
}});
}
</script>
<%- include('./static/end.ejs',{soc:true}) %>