flattenMouseOverHandler = (d) => {
    let index = d.index;
    // Screenshot
    // console.log(index);

    // Update the hover info UI
    if (d.weight === undefined) {
      hoverInfo = {
        show: true,
        text: `Pixel value: ${formater(flattenFactoredFDict[index])}`
      };
    } else {
      hoverInfo = {
        show: true,
        text: `Weight: ${formater(d.weight)}`
      };
    }
    hoverInfoStore.set(hoverInfo);

    flattenLayerLeftPart.select(`#edge-flatten-${index}`)
      .raise()
      .style('stroke', intermediateColor)
      .style('stroke-width', 1);

    flattenLayerLeftPart.select(`#edge-flatten-${index}-output`)
      .raise()
      .style('stroke-width', 1)
      .style('stroke', da => gappedColorScale(layerColorScales.weight,
        flattenRange, da.weight, 0.1));

    flattenLayerLeftPart.select(`#bounding-${index}`)
      .raise()
      .style('opacity', 1);
  }
Draw the flatten layer before output layer
@param {number} curLayerIndex Index of the selected layer
@param {object} d Bounded d3 data
@param {number} i Index of the selected node
@param {number} width CNN group width
@param {number} height CNN group height