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;
|
const filter = req.query.filter;
|
||||||
|
|
||||||
var chain = {};
|
var chain = {
|
||||||
var filterNames = filter.split(",");
|
"Direction-Channel": true,
|
||||||
for (let index = 0; index < filterNames.length - 1; index++) {
|
"Channel-SubChannel": true,
|
||||||
chain[filterNames[index] + "-" + filterNames[index + 1]] = 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(
|
const startTime = new Date(
|
||||||
new Date().setFullYear(new Date().getFullYear() - 2)
|
new Date().setFullYear(new Date().getFullYear() - 2)
|
||||||
@ -61,7 +69,15 @@ router.get("/", (req, res) => {
|
|||||||
|
|
||||||
result.data.data.findContactsCompletedBetween.edges.forEach((value) => {
|
result.data.data.findContactsCompletedBetween.edges.forEach((value) => {
|
||||||
// TODO: Should add INBOUND and OUTBOUND Nodes before Channel
|
// TODO: Should add INBOUND and OUTBOUND Nodes before Channel
|
||||||
|
addNode(filter, "Direction", value.node.direction, data);
|
||||||
addNode(filter, "Channel", value.node.interaction.__typename, 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) {
|
if (value.node.interaction.subChannel) {
|
||||||
addNode(
|
addNode(
|
||||||
@ -82,47 +98,40 @@ router.get("/", (req, res) => {
|
|||||||
if (value.node.queue) {
|
if (value.node.queue) {
|
||||||
const queueName = `${value.node.queue.name}(${value.node.queue.orgScope})`;
|
const queueName = `${value.node.queue.name}(${value.node.queue.orgScope})`;
|
||||||
addNode(filter, "Queue", queueName, data);
|
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);
|
addLink(data, value.node.interaction.__typename, queueName);
|
||||||
}
|
}
|
||||||
if (chain["SubChannel-Queue"]) {
|
|
||||||
addSubChannelLink(queueName);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (value.node.outcome) {
|
if (value.node.outcome) {
|
||||||
value.node.outcome.edges.forEach((element) => {
|
value.node.outcome.edges.forEach((element) => {
|
||||||
addNode(filter, "Outcome", element.node.text, data);
|
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(
|
addLink(
|
||||||
data,
|
data,
|
||||||
value.node.interaction.__typename,
|
queueName,
|
||||||
element.node.text
|
element.node.text,
|
||||||
|
1 / value.node.outcome.edges.length
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chain["SubChannel-Outcome"]) {
|
if (chain["Channel-Outcome"] && !value.node.queue) {
|
||||||
addSubChannelLink(element.node.text);
|
addLink(
|
||||||
}
|
data,
|
||||||
|
value.node.interaction.__typename,
|
||||||
if (chain["Queue-Outcome"] && !!value.node.queue) {
|
element.node.text,
|
||||||
const queueName = `${value.node.queue.name}(${value.node.queue.orgScope})`;
|
1 / value.node.outcome.edges.length
|
||||||
addLink(data, queueName, element.node.text);
|
);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
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)}`);
|
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) => {
|
var index = data.links.findIndex((i) => {
|
||||||
return i.source == source && i.target == target;
|
return i.source == source && i.target == target;
|
||||||
});
|
});
|
||||||
@ -146,7 +156,7 @@ function addLink(data, source, target) {
|
|||||||
data.links.push({
|
data.links.push({
|
||||||
source: source,
|
source: source,
|
||||||
target: target,
|
target: target,
|
||||||
value: 1,
|
value: fraction,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user