no-svelte port
This commit is contained in:
parent
ef483e62c3
commit
096dacd6fe
5 changed files with 538 additions and 0 deletions
144
js/app.js
Normal file
144
js/app.js
Normal file
|
@ -0,0 +1,144 @@
|
|||
|
||||
function genPos(id, fetchData) {
|
||||
let queue = [id];
|
||||
|
||||
let queueHead;
|
||||
|
||||
let status = fetchData[id].visibility == 'visible'
|
||||
&& (fetchData[id].moderation_status == 'safe'
|
||||
|| fetchData[id].moderation_status == 'notreviewed'
|
||||
|| fetchData[id].moderation_status == 'notsafe');
|
||||
|
||||
let pos = [{
|
||||
"id": id,
|
||||
"name": fetchData[id].title,
|
||||
"date": fetchData[id].datetime_shared,
|
||||
"user": fetchData[id].username,
|
||||
"visible": status,
|
||||
"x": '0',
|
||||
"y": 0,
|
||||
"offbranch": 0,
|
||||
"end": fetchData[id].children.length
|
||||
}];
|
||||
|
||||
while (queue.length > 0) {
|
||||
queueHead = queue[0];
|
||||
|
||||
let lastPosI = pos.findIndex(function (posEntry) {
|
||||
return posEntry.id == queueHead;
|
||||
});
|
||||
|
||||
let children = fetchData[queueHead].children;
|
||||
queue.shift();
|
||||
if (!children || children.length == 0) continue;
|
||||
|
||||
let lastPos;
|
||||
if (lastPosI > -1) {
|
||||
lastPos = pos[lastPosI];
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
|
||||
children.forEach(function (child, i) {
|
||||
queue.push(child);
|
||||
|
||||
let status = fetchData[child].visibility == 'visible'
|
||||
&& (fetchData[child].moderation_status == 'safe'
|
||||
|| fetchData[child].moderation_status == 'notreviewed'
|
||||
|| fetchData[child].moderation_status == 'notsafe');
|
||||
|
||||
console.log(fetchData[child].moderation_status);
|
||||
|
||||
pos.push({
|
||||
"id": child,
|
||||
"name": fetchData[child].title,
|
||||
"date": fetchData[child].datetime_shared,
|
||||
"user": fetchData[child].username,
|
||||
"visible": status,
|
||||
"x": lastPos.x + '|' + i,
|
||||
"y": lastPos.y + 1,
|
||||
"offbranch": 0,
|
||||
"end": (fetchData[child].children) ? fetchData[child].children.length : 0
|
||||
})
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
return pos;
|
||||
}
|
||||
|
||||
function sortPos(a, b) {
|
||||
let aSplit = [];
|
||||
let bSplit = [];
|
||||
|
||||
a[0].split('|').forEach(function (x) {
|
||||
aSplit.push(Number(x))
|
||||
});
|
||||
b[0].split('|').forEach(function (x) {
|
||||
bSplit.push(Number(x))
|
||||
});
|
||||
|
||||
let h = 0;
|
||||
aSplit.forEach(function (x, i) {
|
||||
if (h == 0 && x - bSplit[i] != 0) {
|
||||
h = x - bSplit[i];
|
||||
}
|
||||
})
|
||||
|
||||
if (h == 0) {
|
||||
return (aSplit.length > bSplit.length) ? 1 : -1;
|
||||
}
|
||||
|
||||
return h;
|
||||
}
|
||||
|
||||
|
||||
async function main(fetchData) {
|
||||
let rootId = fetchData['root_id'];
|
||||
|
||||
let pos = genPos(rootId, fetchData);
|
||||
|
||||
let posX = [];
|
||||
|
||||
pos.forEach(function (posEntry) {
|
||||
posX.push([posEntry.x, posEntry.end]);
|
||||
})
|
||||
|
||||
let posReduc = posX.reduce(function (a, b) {
|
||||
if (a.indexOf(b[0]) < 0) a.push(b);
|
||||
return a;
|
||||
}, []);
|
||||
|
||||
|
||||
posReduc.sort(sortPos);
|
||||
|
||||
let i = 0;
|
||||
posReduc.forEach(function (posEntry, j) {
|
||||
posReduc[j] = [posEntry[0], i, posEntry[1]];
|
||||
let splitty = posEntry[0].split('|');
|
||||
let lastSplitty = splitty.pop();
|
||||
|
||||
if (lastSplitty != '0') {
|
||||
i++;
|
||||
posReduc[j][1] = i;
|
||||
}
|
||||
});
|
||||
|
||||
pos.forEach(function (posEntry, j) {
|
||||
let i = posReduc.findIndex(function (x) {
|
||||
return x[0] == posEntry.x
|
||||
});
|
||||
if (i != -1) {
|
||||
pos[j].x = posReduc[i][1];
|
||||
let extended = posReduc[i][0] + '|' + (posReduc[i][2] - 1);
|
||||
let indexB = posReduc.findIndex(function (x) {
|
||||
return x[0] == extended
|
||||
});
|
||||
if (indexB > -1) {
|
||||
pos[j].offbranch = (posReduc[indexB][1] - posReduc[i][1]);
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
return pos;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue