Added handling for OUTBOUND and fractional links.
Also removed filtering (too complex for now)
This commit is contained in:
parent
3f788733c8
commit
6c1b3f8b20
@ -14,11 +14,19 @@ router.get("/", (req, res) => {
|
||||
|
||||
const filter = req.query.filter;
|
||||
|
||||
var chain = {};
|
||||
var filterNames = filter.split(",");
|
||||
for (let index = 0; index < filterNames.length - 1; index++) {
|
||||
chain[filterNames[index] + "-" + filterNames[index + 1]] = true;
|
||||
}
|
||||
var chain = {
|
||||
"Direction-Channel": true,
|
||||
"Channel-SubChannel": true,
|
||||
"Channel-Queue": true,
|
||||
"SubChannel-Queue": true,
|
||||
"Queue-Outcome": true,
|
||||
"Channel-Outcome": true, // special case for outbound that does not go throught queue
|
||||
};
|
||||
// TODO: Chain will be hardcoded until I can work out filter logic
|
||||
// var filterNames = filter.split(",");
|
||||
// for (let index = 0; index < filterNames.length - 1; index++) {
|
||||
// chain[filterNames[index] + "-" + filterNames[index + 1]] = true;
|
||||
// }
|
||||
|
||||
const startTime = new Date(
|
||||
new Date().setFullYear(new Date().getFullYear() - 2)
|
||||
@ -61,7 +69,15 @@ router.get("/", (req, res) => {
|
||||
|
||||
result.data.data.findContactsCompletedBetween.edges.forEach((value) => {
|
||||
// TODO: Should add INBOUND and OUTBOUND Nodes before Channel
|
||||
addNode(filter, "Direction", value.node.direction, data);
|
||||
addNode(filter, "Channel", value.node.interaction.__typename, data);
|
||||
if (chain["Direction-Channel"]) {
|
||||
addLink(
|
||||
data,
|
||||
value.node.direction,
|
||||
value.node.interaction.__typename
|
||||
);
|
||||
}
|
||||
|
||||
if (value.node.interaction.subChannel) {
|
||||
addNode(
|
||||
@ -82,47 +98,40 @@ router.get("/", (req, res) => {
|
||||
if (value.node.queue) {
|
||||
const queueName = `${value.node.queue.name}(${value.node.queue.orgScope})`;
|
||||
addNode(filter, "Queue", queueName, data);
|
||||
if (chain["Channel-Queue"]) {
|
||||
if (
|
||||
chain["SubChannel-Queue"] &&
|
||||
!!value.node.interaction.subChannel
|
||||
) {
|
||||
addLink(data, value.node.interaction.subChannel, queueName);
|
||||
} else if (chain["Channel-Queue"]) {
|
||||
addLink(data, value.node.interaction.__typename, queueName);
|
||||
}
|
||||
if (chain["SubChannel-Queue"]) {
|
||||
addSubChannelLink(queueName);
|
||||
}
|
||||
}
|
||||
|
||||
if (value.node.outcome) {
|
||||
value.node.outcome.edges.forEach((element) => {
|
||||
addNode(filter, "Outcome", element.node.text, data);
|
||||
|
||||
if (chain["Channel-Outcome"]) {
|
||||
if (chain["Queue-Outcome"] && !!value.node.queue) {
|
||||
const queueName = `${value.node.queue.name}(${value.node.queue.orgScope})`;
|
||||
addLink(
|
||||
data,
|
||||
value.node.interaction.__typename,
|
||||
element.node.text
|
||||
queueName,
|
||||
element.node.text,
|
||||
1 / value.node.outcome.edges.length
|
||||
);
|
||||
}
|
||||
|
||||
if (chain["SubChannel-Outcome"]) {
|
||||
addSubChannelLink(element.node.text);
|
||||
}
|
||||
|
||||
if (chain["Queue-Outcome"] && !!value.node.queue) {
|
||||
const queueName = `${value.node.queue.name}(${value.node.queue.orgScope})`;
|
||||
addLink(data, queueName, element.node.text);
|
||||
if (chain["Channel-Outcome"] && !value.node.queue) {
|
||||
addLink(
|
||||
data,
|
||||
value.node.interaction.__typename,
|
||||
element.node.text,
|
||||
1 / value.node.outcome.edges.length
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function addSubChannelLink(target) {
|
||||
if (value.node.interaction.subChannel) {
|
||||
addLink(data, value.node.interaction.subChannel, target);
|
||||
} else {
|
||||
// SubChannel does not exist, revert to Channel if in chain
|
||||
if (chain["Channel-SubChannel"]) {
|
||||
addLink(data, value.node.interaction.__typename, target);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
logger.debug(`Sending data: ${JSON.stringify(data, null, 2)}`);
|
||||
@ -136,7 +145,8 @@ router.get("/", (req, res) => {
|
||||
}
|
||||
});
|
||||
|
||||
function addLink(data, source, target) {
|
||||
function addLink(data, source, target, _fraction) {
|
||||
var fraction = _fraction ? _fraction : 1;
|
||||
var index = data.links.findIndex((i) => {
|
||||
return i.source == source && i.target == target;
|
||||
});
|
||||
@ -146,7 +156,7 @@ function addLink(data, source, target) {
|
||||
data.links.push({
|
||||
source: source,
|
||||
target: target,
|
||||
value: 1,
|
||||
value: fraction,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user