gosora/public/widgets.js

66 lines
2.2 KiB
JavaScript

"use strict";
$(document).ready(() => {
let clickHandle = function(event){
console.log("in clickHandle")
event.preventDefault();
let eparent = $(this).closest(".editable_parent");
eparent.find(".hide_on_block_edit").addClass("edit_opened");
eparent.find(".show_on_block_edit").addClass("edit_opened");
eparent.addClass("in_edit");
eparent.find(".widget_save").click(() => {
eparent.find(".hide_on_block_edit").removeClass("edit_opened");
eparent.find(".show_on_block_edit").removeClass("edit_opened");
eparent.removeClass("in_edit");
});
eparent.find(".widget_delete").click(function(event) {
event.preventDefault();
eparent.remove();
let formData = new URLSearchParams();
formData.append("session",me.User.Session);
let req = new XMLHttpRequest();
let target = this.closest("a").getAttribute("href");
req.open("POST",target,true);
req.send(formData);
});
};
$(".widget_item a").click(clickHandle);
let changeHandle = function(event){
let wtype = this.options[this.selectedIndex].value;
let typeBlock = this.closest(".widget_edit").querySelector(".wtypes");
typeBlock.className = "wtypes wtype_"+wtype;
};
$(".wtype_sel").change(changeHandle);
$(".widget_new a").click(function(event){
console.log("clicked widget_new a")
let widgetList = this.closest(".panel_widgets");
let widgetNew = this.closest(".widget_new");
let widgetTmpl = document.getElementById("widgetTmpl").querySelector(".widget_item");
let node = widgetTmpl.cloneNode(true);
node.querySelector(".wside").value = this.getAttribute("data-dock");
widgetList.insertBefore(node,widgetNew);
$(".widget_item a").unbind("click");
$(".widget_item a").click(clickHandle);
$(".wtype_sel").unbind("change");
$(".wtype_sel").change(changeHandle);
});
$(".widget_save").click(function(event){
console.log("in .widget_save")
event.preventDefault();
event.stopPropagation();
let pform = this.closest("form");
let data = new URLSearchParams();
for (const pair of new FormData(pform)) data.append(pair[0], pair[1]);
data.append("session",me.User.Session);
var req = new XMLHttpRequest();
req.open("POST", pform.getAttribute("action"));
req.send(data);
});
});