-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathturnorder_old.js
89 lines (72 loc) · 2.04 KB
/
turnorder_old.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
'use strict';
function Card(name, file) {
this.name = name;
this.file = file;
this.open = false;
}
Card.prototype.flip = function(open) {
this.open = open;
};
function dragstartHandler(ev) {
console.log('dragstart');
ev.dataTransfer.setData('text/plain', ev.target.id);
}
function dragoverHandler(ev) {
ev.preventDefault();
ev.dataTransfer.dropEffect = 'move';
}
function dropHandler(ev) {
const allowedPlaces = ['card-place', 'card'];
let target = ev.target;
if (!allowedPlaces.some(cls => target.classList.contains(cls))) {
return;
}
const data = ev.dataTransfer.getData('text');
const element = document.getElementById(data);
if (target.classList.contains('card')) {
target.parentNode.appendChild(element);
} else {
target.appendChild(element);
}
calculateOffset(element.parentNode);
}
function createClickHandler(targetMap) {
return ev => {
console.log('click');
const el = ev.srcElement;
const targetEl = document.getElementById(targetMap[el.parentNode.id]);
targetEl.appendChild(el);
calculateOffset(targetEl);
};
}
function calculateOffset(stack) {
const siblings = stack.children;
const inc = -3;
let margin = 0;
for (let el of siblings) {
let marginTop = 'margin-top: ' + margin + 'px;';
el.style = marginTop;
margin += inc;
}
}
function addCard(card, target) {
const cardEl = document.createElement('img');
const targetMap = {
draw: 'discard',
discard: 'draw'
};
cardEl.setAttribute('id', card.name);
cardEl.setAttribute('src', 'data/img/' + card.file);
cardEl.setAttribute('class', 'card');
cardEl.setAttribute('alt', card.name);
cardEl.setAttribute('draggable', 'true');
// cardEl.addEventListener('dragstart', dragstartHandler);
// cardEl.addEventListener('click', createClickHandler(targetMap));
target.appendChild(cardEl);
}
function bindDropHandlers(list, dropHandler, dragoverHandler) {
for (let item of list) {
item.addEventListener('drop', dropHandler);
item.addEventListener('dragover', dragoverHandler);
}
}