graph2plan / static /js /btnEvent.js
Zai
tada
c2ea21f
raw
history blame
16 kB
window.onload = function () {
let cookies = document.cookie.split(";");
for (let i = 0; i < cookies.length; i++) {
let cookie = cookies[i];
let eqPos = cookie.indexOf("=");
let name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/";
}
var IMAGE_PATH = "../static/images/";
document.cookie = "RoomIndex=0";
//初始化数
var BedNum = 0, MasterNum = 0, SecondNum = 0, GuestNum = 0, StudyNum = 0, ChildNum = 0, LivingNum = 0;
var KitchenNum = 0, BalconyNum = 0, BathNum = 0, DiningNum = 0, StorageNum = 0, EntranceNum = 0, Wall_inNum = 0;
// document.getElementById("BedRoom").onclick = function () {
// var curInd = changeRoomIndexCookie();
// ++BedNum;
// document.getElementById("BedRoom_val").innerHTML = BedNum;
// newElement("BedRoom", BedNum, curInd);
// }
// document.getElementById("MasterRoom").onclick = function () {
// var curInd = changeRoomIndexCookie();
// ++MasterNum;
// ++BedNum;
// newElement("MasterRoom", MasterNum, curInd);
// document.getElementById("MasterRoom_val").innerHTML = MasterNum;
// document.getElementById("BedRoom_val").innerHTML = BedNum;
// }
// document.getElementById("SecondRoom").onclick = function () {
// var curInd = changeRoomIndexCookie();
// ++SecondNum;
// ++BedNum;
// newElement("SecondRoom", SecondNum, curInd);
// document.getElementById("SecondRoom_val").innerHTML = SecondNum;
// document.getElementById("BedRoom_val").innerHTML = BedNum;
// }
// document.getElementById("GuestRoom").onclick = function () {
// var curInd = changeRoomIndexCookie();
// ++GuestNum;
// ++BedNum;
// newElement("GuestRoom", GuestNum, curInd);
// document.getElementById("GuestRoom_val").innerHTML = GuestNum;
// document.getElementById("BedRoom_val").innerHTML = BedNum;
// }
// document.getElementById("StudyRoom").onclick = function () {
// var curInd = changeRoomIndexCookie();
// ++StudyNum;
// ++BedNum;
// newElement("StudyRoom", StudyNum, curInd);
// document.getElementById("StudyRoom_val").innerHTML = StudyNum;
// document.getElementById("BedRoom_val").innerHTML = BedNum;
// }
// document.getElementById("ChildRoom").onclick = function () {
// var curInd = changeRoomIndexCookie();
// ++ChildNum;
// ++BedNum;
// newElement("ChildRoom", ChildNum, curInd);
// document.getElementById("ChildRoom_val").innerHTML = ChildNum;
// document.getElementById("BedRoom_val").innerHTML = BedNum;
// }
// document.getElementById("LivingRoom").onclick = function () {
// var curInd = changeRoomIndexCookie();
// ++LivingNum;
// newElement("LivingRoom", LivingNum, curInd);
// document.getElementById("LivingRoom_val").innerHTML = LivingNum;
// }
// document.getElementById("Kitchen").onclick = function () {
// var curInd = changeRoomIndexCookie();
// ++KitchenNum;
// newElement("Kitchen", KitchenNum, curInd);
// document.getElementById("Kitchen_val").innerHTML = KitchenNum;
// }
// document.getElementById("Balcony").onclick = function () {
// var curInd = changeRoomIndexCookie();
// ++BalconyNum;
// newElement("Balcony", BalconyNum, curInd);
// document.getElementById("Balcony_val").innerHTML = BalconyNum;
// }
// document.getElementById("BathRoom").onclick = function () {
// var curInd = changeRoomIndexCookie();
// ++BathNum;
// newElement("BathRoom", BathNum, curInd);
// document.getElementById("BathRoom_val").innerHTML = BathNum;
// }
// document.getElementById("DiningRoom").onclick = function () {
// var curInd = changeRoomIndexCookie();
// ++DiningNum;
// newElement("DiningRoom", DiningNum, curInd);
// document.getElementById("DiningRoom_val").innerHTML = DiningNum;
// }
// document.getElementById("Storage").onclick = function () {
// var curInd = changeRoomIndexCookie();
// ++StorageNum;
// newElement("Storage", StorageNum, curInd);
// document.getElementById("Storage_val").innerHTML = StorageNum;
// }
// document.getElementById("Entrance").onclick = function () {
// var curInd = changeRoomIndexCookie();
// ++EntranceNum;
// newElement("Entrance", EntranceNum, curInd);
// document.getElementById("Entrance_val").innerHTML = EntranceNum;
// }
// document.getElementById("Wallin").onclick = function () {
// var curInd = changeRoomIndexCookie();
// ++Wall_inNum;
// newElement("Wallin", Wall_inNum, curInd);
// document.getElementById("Wallin_val").innerHTML = Wall_inNum;
// }
var animationDiv = document.getElementById('animationDiv');
var addButton = document.getElementById('add');
var removeSVG = '<?xml version="1.0" encoding="utf-8"?><svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 22 22" style="enable-background:new 0 0 22 22;" xml:space="preserve"><g><g><path class="fill" d="M16.1,3.6h-1.9V3.3c0-1.3-1-2.3-2.3-2.3h-1.7C8.9,1,7.8,2,7.8,3.3v0.2H5.9c-1.3,0-2.3,1-2.3,2.3v1.3c0,0.5,0.4,0.9,0.9,1v10.5c0,1.3,1,2.3,2.3,2.3h8.5c1.3,0,2.3-1,2.3-2.3V8.2c0.5-0.1,0.9-0.5,0.9-1V5.9C18.4,4.6,17.4,3.6,16.1,3.6z M9.1,3.3c0-0.6,0.5-1.1,1.1-1.1h1.7c0.6,0,1.1,0.5,1.1,1.1v0.2H9.1V3.3z M16.3,18.7c0,0.6-0.5,1.1-1.1,1.1H6.7c-0.6,0-1.1-0.5-1.1-1.1V8.2h10.6L16.3,18.7L16.3,18.7z M17.2,7H4.8V5.9c0-0.6,0.5-1.1,1.1-1.1h10.2c0.6,0,1.1,0.5,1.1,1.1V7z"/></g><g><g><path class="fill" d="M11,18c-0.4,0-0.6-0.3-0.6-0.6v-6.8c0-0.4,0.3-0.6,0.6-0.6s0.6,0.3,0.6,0.6v6.8C11.6,17.7,11.4,18,11,18z"/></g><g><path class="fill" d="M8,18c-0.4,0-0.6-0.3-0.6-0.6v-6.8C7.4,10.2,7.7,10,8,10c0.4,0,0.6,0.3,0.6,0.6v6.8C8.7,17.7,8.4,18,8,18z"/></g><g><path class="fill" d="M14,18c-0.4,0-0.6-0.3-0.6-0.6v-6.8c0-0.4,0.3-0.6,0.6-0.6c0.4,0,0.6,0.3,0.6,0.6v6.8C14.6,17.7,14.3,18,14,18z"/></g></g></g></svg>';
var checkSVG = ' <?xml version="1.0" encoding="utf-8"?><svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 22 22" style="enable-background:new 0 0 22 22;" xml:space="preserve"><circle cx=11 cy=11 class="noFill" stroke="rgb(47, 167, 77)" r="10" width="23" height="23"/><g><path class="fill" d="M9.7,14.4L9.7,14.4c-0.2,0-0.4-0.1-0.5-0.2l-2.7-2.7c-0.3-0.3-0.3-0.8,0-1.1s0.8-0.3,1.1,0l2.1,2.1l4.8-4.8c0.3-0.3,0.8-0.3,1.1,0s0.3,0.8,0,1.1l-5.3,5.3C10.1,14.3,9.9,14.4,9.7,14.4z"/></g></svg>';
completedList = document.getElementById('completed');
todoList = document.getElementById('todo');
// Core Functions
function addItem(roomname) {
if (itemTextBox.value) {
newElement(itemTextBox.value);
itemTextBox.value = "";
}
document.getElementById('add').classList.toggle("rotate");
addAnimation();
}
function fade(element) {
element.classList.remove('invisible');
}
function checkItem() {
checkButton = this;
checkAnimateDiv = this.children[1];
console.log(checkAnimateDiv);
checkElement = this.parentElement.parentElement;
if (!(checkElement.classList.contains('checked'))) {
selectRoomType(checkElement.innerText, this.id);
checkElement.classList.add('checked');
checkAnimation(checkAnimateDiv);
//checkElement.classList.add('invisible');
setTimeout(function () {
completedList.appendChild(checkElement);
}, 100);
setTimeout(function () {
DOMCleaner(checkAnimateDiv);
}, 500);
} else {
checkElement.classList.remove('checked');
deleteAnimation(checkElement);
todoList.insertBefore(checkElement, todoList.firstChild);
var points = d3.select("body").selectAll("circle");
var curInd = this.id.split("_")[1];
points.each(function (d, i) {
var tmpInd = this.id.split("_")[1];
if (tmpInd == curInd) {
d3.select(this).remove();
}
});
}
}
function DOMCleaner(item) {
while (item.firstChild) {
//item.removeChild(item.firstChild);
item.firstChild.remove();
}
}
function removeItem(name, deleteButton) {
deleteElement = deleteButton.parentElement.parentElement;
deleteElement.classList.add('deleted');
deleteAnimation(deleteElement);
switch (name) {
case "BedRoom":
var a = --BedNum;
break;
case "MasterRoom":
var a = --MasterNum;
--BedNum;
break;
case "SecondRoom":
var a = --SecondNum;
--BedNum;
break;
case "GuestRoom":
var a = --GuestNum;
--BedNum;
break;
case "StudyRoom":
var a = --StudyNum;
--BedNum;
break;
case "ChildRoom":
var a = --ChildNum;
--BedNum;
break;
case "Kitchen":
var a = --KitchenNum;
break;
case "DiningRoom":
var a = --DiningNum;
break;
case "BathRoom":
var a = --BathNum;
break;
case "Balcony":
var a = --BalconyNum;
break;
case "Entrance":
var a = --EntranceNum;
break;
case "Wallin":
var a = --Wall_inNum;
break;
case "Storage":
var a = --StorageNum;
break;
case "LivingRoom":
var a = --LivingNum;
break;
default:
break
}
var id = name + "_val";
document.getElementById(id).innerHTML = a;
document.getElementById("BedRoom_val").innerHTML = BedNum;
setTimeout(function () {
deleteElement.remove();
}, 500);
}
function newElement(name, value, curInd) {
var item_image = document.createElement('img');
item_image.src = IMAGE_PATH + name + ".png";
item_image.classList.add('showrmitem');
var item = document.createElement('li');
item.innerHTML = name;
item.appendChild(item_image);
item.classList.add('invisible');
var buttonsDiv = document.createElement('div');
buttonsDiv.classList.add('buttons');
var deleteButton = document.createElement('button');
deleteButton.classList.add('deleteButton');
deleteButton.id = "Delete_" + curInd;
deleteButton.innerHTML = removeSVG;
deleteButton.onclick = function () {
if (d3.select("body").selectAll("circle").length > 0) {
var points = d3.select("body").selectAll("circle");
var curInd = this.id.split("_")[1];
points.each(function (d, i) {
var tmpInd = this.id.split("_")[1];
if (tmpInd == curInd) {
d3.select(this).remove();
}
});
}
removeItem(name, deleteButton);
}
var checkButton = document.createElement('button');
checkButton.classList.add('checkButton');
checkButton.innerHTML = checkSVG;
checkButton.id = "Check_" + curInd;
var checkAnimateDiv = document.createElement('div');
checkAnimateDiv.id = "checkAnimateDiv";
checkButton.appendChild(checkAnimateDiv);
checkButton.addEventListener('click', checkItem);
buttonsDiv.appendChild(deleteButton);
buttonsDiv.appendChild(checkButton);
item.appendChild(buttonsDiv);
//todoList.prepend(item);
todoList.insertBefore(item, todoList.firstChild);
setTimeout(function () {
fade(item);
}, 100);
}
// Visual
/* Add Button Animation */
function addAnimation() {
const Burst1 = new mojs.Burst({
parent: animationDiv,
top: '50%',
left: '50%',
radius: {0: 80},
count: 8,
children: {
shape: 'circle',
fill: {'red': 'blue'},
strokeWidth: 1,
duration: 600,
stroke: {'red': 'blue'}
}
});
const Burst2 = new mojs.Burst({
parent: animationDiv,
top: '50%',
left: '50%',
radius: {0: 100},
count: 4,
children: {
shape: 'rect',
fill: 'white',
strokeWidth: 1,
duration: 300,
stroke: 'white'
}
});
const circle1 = new mojs.Shape({
radius: {0: 40},
parent: animationDiv,
fill: 'none',
stroke: 'white',
strokeWidth: 15,
duration: 300,
opacity: {1: 0}
});
const circle2 = new mojs.Shape({
radius: {0: 50},
parent: animationDiv,
fill: 'none',
stroke: 'red',
strokeWidth: 5,
duration: 400,
opacity: {1: 0}
});
const circle3 = new mojs.Shape({
radius: {0: 60},
parent: animationDiv,
fill: 'none',
stroke: 'blue',
strokeWidth: 5,
duration: 500,
opacity: {1: 0}
});
const circle4 = new mojs.Shape({
radius: {0: 70},
parent: animationDiv,
fill: 'white',
stroke: 'white',
strokeWidth: 5,
duration: 600,
opacity: {1: 0}
});
const timeline = new mojs.Timeline({
repeat: 0
}).add(circle4, circle1, circle2, circle3, Burst1, Burst2);
timeline.play();
}
/* Delete item animation */
function checkAnimation(checkItem) {
const circle1 = new mojs.Shape({
radius: {0: 1000},
parent: checkItem,
fill: '#7bef28',
stroke: 'white',
strokeWidth: 10,
duration: 500,
opacity: {1: 0}
});
const circle2 = new mojs.Shape({
radius: {0: 200},
parent: checkItem,
fill: 'none',
stroke: 'white',
strokeWidth: 30,
duration: 300,
opacity: {1.7: 0}
});
const circle3 = new mojs.Shape({
radius: {0: 400},
parent: checkItem,
fill: 'none',
stroke: '#230e5780',
strokeWidth: 10,
duration: 400,
opacity: {1: 0}
});
const timelineX = new mojs.Timeline({
repeat: 0,
}).add(circle1, circle2, circle3);
timelineX.play();
}
function changeRoomIndexCookie() {
var arr, reg = new RegExp("(^| )RoomIndex=([^;]*)(;|$)");
var curIndex = -1;
if (arr = document.cookie.match(reg))
curIndex = arr[2];
document.cookie = "RoomIndex=" + (parseInt(curIndex) + 1);
return curIndex;
}
}