close
This commit is contained in:
parent
8a275cc968
commit
2aa937bb49
1 changed files with 114 additions and 36 deletions
106
index.html
106
index.html
|
@ -47,7 +47,16 @@
|
|||
</body>
|
||||
<script>
|
||||
// (function () {
|
||||
var people = ["Ag",
|
||||
|
||||
function enabledrag(event) { event.preventDefault(); }
|
||||
|
||||
var state = null;
|
||||
function retrieveState(){
|
||||
var savestr = localStorage.getItem('plannerstate');
|
||||
if (savestr) {
|
||||
state = JSON.parse(savestr);
|
||||
} else {
|
||||
state = {people: ["Ag",
|
||||
"Ambrose",
|
||||
"Irina",
|
||||
"Kiril",
|
||||
|
@ -55,25 +64,42 @@
|
|||
"Olivier",
|
||||
"Rob",
|
||||
"Wanderson",
|
||||
];
|
||||
var fts = [ "SX Session",
|
||||
],
|
||||
fts: [ "SX Session",
|
||||
"Bug Squashing",
|
||||
"Secure Client" ];
|
||||
"Secure Client" ],
|
||||
assignments: {}
|
||||
};
|
||||
}
|
||||
console.log(state);
|
||||
}
|
||||
|
||||
function saveState() {
|
||||
localStorage.setItem('plannerstate',JSON.stringify(state));
|
||||
}
|
||||
|
||||
function enabledrag(event) { event.preventDefault(); }
|
||||
function init(){
|
||||
retrieveState();
|
||||
console.log(state);
|
||||
var devcards=document.getElementById("devs");
|
||||
people.forEach(function(p) {
|
||||
state.people.forEach(function(p) {
|
||||
devcards.appendChild( createDev(p) );
|
||||
})
|
||||
renderState();
|
||||
}
|
||||
|
||||
function renderState () {
|
||||
if (state) {
|
||||
// build main table
|
||||
var main = document.getElementById("main");
|
||||
main.innerHTML='';
|
||||
main.appendChild(genTable());
|
||||
var cells = document.querySelectorAll("td");
|
||||
cells.forEach(function(cell) {
|
||||
cell.ondragover = enabledrag;
|
||||
cell.ondrop = function(ev){drop(ev,this);};
|
||||
});
|
||||
// build trash
|
||||
var trashel = document.getElementById("trash");
|
||||
trashel.ondragover = enabledrag;
|
||||
trashel.ondrop = trash;
|
||||
|
@ -81,6 +107,14 @@
|
|||
trashel.ondragleave = unhltrash;
|
||||
var cards = document.querySelectorAll(".card");
|
||||
cards.forEach(function(card){ card.draggable = true; card.ondragstart = drag; });
|
||||
// build assignments
|
||||
for ( cellid in state.assignments ) {
|
||||
for ( member in state.assignments[cellid] ) {
|
||||
var el = document.getElementById( cellid );
|
||||
el.appendChild(devcard(member, cellid));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -93,8 +127,8 @@
|
|||
var rels = releases( previous, nexts );
|
||||
rels[0]="FT";
|
||||
t.appendChild(mkTitleRow(rels));
|
||||
fts.forEach( function(ft) {
|
||||
t.appendChild(mkRow(ft,nbcolumns));
|
||||
state.fts.forEach( function(ft) {
|
||||
t.appendChild(mkRow(ft,nbcolumns,rels));
|
||||
});
|
||||
return t;
|
||||
}
|
||||
|
@ -107,7 +141,17 @@
|
|||
});
|
||||
return rows;
|
||||
}
|
||||
function mkRow( ft, n ) {
|
||||
|
||||
function safe (str) {
|
||||
var safestr = str.replace(/\W/g,'_');
|
||||
return safestr;
|
||||
}
|
||||
|
||||
function mkid(ft,rel) {
|
||||
return "cell-" + safe(ft) + "-" + rel;
|
||||
}
|
||||
|
||||
function mkRow( ft, n, rels ) {
|
||||
var rows = document.createElement("tr");
|
||||
|
||||
var ttitle = document.createElement("th");
|
||||
|
@ -116,21 +160,24 @@
|
|||
|
||||
var arr = new Array(n);
|
||||
arr.fill("");
|
||||
i=1;
|
||||
arr.forEach (function(v) {
|
||||
var c = document.createElement("td");
|
||||
c.textContent = v;
|
||||
c.id = mkid(ft, rels[i]);
|
||||
rows.appendChild(c);
|
||||
i++;
|
||||
});
|
||||
return rows;
|
||||
}
|
||||
|
||||
function devcard(devname){
|
||||
function devcard(devname,cellid){
|
||||
var devdiv = document.createElement('div');
|
||||
devdiv.classList.add(devname);
|
||||
devdiv.classList.add('card');
|
||||
devdiv.textContent = devname;
|
||||
devdiv.draggable = true;
|
||||
devdiv.id = "inner-" + devname + Math.random().toString().substr(2, 8);
|
||||
devdiv.id = "inner-" + devname + "-"+ cellid;
|
||||
devdiv.style.backgroundColor = genColor(devname);
|
||||
devdiv.ondragstart = drag;
|
||||
return devdiv;
|
||||
|
@ -151,7 +198,7 @@
|
|||
}
|
||||
|
||||
function createDev(devname){
|
||||
var res = devcard(devname);
|
||||
var res = devcard(devname,'');
|
||||
res.id = devname;
|
||||
return res;
|
||||
};
|
||||
|
@ -200,16 +247,45 @@
|
|||
ev.dataTransfer.setData("text", ev.target.id);
|
||||
}
|
||||
|
||||
function createAssignment(id, name) {
|
||||
if (! state.assignments[id]) {
|
||||
state.assignments[id]=[];
|
||||
}
|
||||
state.assignments[id].push(name);
|
||||
console.log(state.assignments);
|
||||
}
|
||||
|
||||
function moveAssignment(id, name) {
|
||||
var memberName = name.replace(/^[^-]*-/,'').replace(/-cell-.*$/,'');
|
||||
var oldid = name.replace(/^.*-cell-/,'cell-');
|
||||
if (! state.assignments[id]) {
|
||||
state.assignments[id]=[];
|
||||
}
|
||||
console.log("memberName: " + memberName);
|
||||
console.log("OLDID: " + oldid);
|
||||
var idx = state.assignments[oldid].indexOf(memberName);
|
||||
if (idx !== -1) {
|
||||
state.assignments[oldid].splice(idx,1);
|
||||
}
|
||||
state.assignments[id].push(memberName);
|
||||
console.log(state.assignments);
|
||||
}
|
||||
|
||||
function drop(ev,el) {
|
||||
ev.preventDefault();
|
||||
var name = ev.dataTransfer.getData("text");
|
||||
if ( name.startsWith("inner-") ) {
|
||||
console.log("move: " + name);
|
||||
el.appendChild(document.getElementById(name));
|
||||
document.getElementById(name).remove();
|
||||
var memberName = name.replace(/^[^-]*-/,'').replace(/-cell-.*$/,'');
|
||||
el.appendChild(devcard(memberName,el.id));
|
||||
moveAssignment(el.id, name);
|
||||
} else {
|
||||
console.log("create: " + name);
|
||||
el.appendChild(devcard(name));
|
||||
el.appendChild(devcard(name,el.id));
|
||||
createAssignment(el.id, name);
|
||||
}
|
||||
saveState();
|
||||
}
|
||||
|
||||
function trash(ev) {
|
||||
|
@ -220,6 +296,7 @@
|
|||
unhltrash(null);
|
||||
document.getElementById(name).remove();
|
||||
}
|
||||
saveState();
|
||||
}
|
||||
|
||||
function hltrash(ev) {
|
||||
|
@ -232,6 +309,7 @@
|
|||
trashel.classList.remove("hl");
|
||||
}
|
||||
window.addEventListener("load", init);
|
||||
|
||||
// })();
|
||||
</script>
|
||||
</html>
|
||||
|
|
Loading…
Reference in a new issue