All files / src/components/TreeChart TreeChart.types.ts

100% Statements 6/6
100% Branches 4/4
100% Functions 2/2
100% Lines 6/6

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226                                                                          23x       23x       23x           23x       23x       23x                                                                                                                                                                                                                                                                                                                                            
import { IStyle, ITheme } from '@fluentui/react/lib/Styling';
import { IStyleFunctionOrObject } from '@fluentui/react/lib/Utilities';
import { IMargins } from '../../types/index';
 
/**
 * {@docCategory TreeChart}
 */
export interface ITreeChartDataPoint {
  /**
   * Node main text
   */
  name: string;
  /**
   * Subtext value (optional)
   */
  subname?: string;
  /**
   * Bodytext value (optional)
   */
  bodytext?: string;
  /**
   * Metric text value (optional)
   */
  metric?: string;
  /**
   * Color of the rectangular box
   */
  fill: string;
  /**
   * Recursive datastructure for child node object
   */
  children?: Array<ITreeChartDataPoint>;
}
 
/**
 * {@docCategory TreeChart}
 */
export enum NodesComposition {
  /**
   * NodeComposition enum val for long: number = 1
   */
  long = 1,
  /**
   * NodeComposition enum val for compact: number = 0
   */
  compact = 0,
}
 
/**
 * {@docCategory TreeChart}
 */
export enum TreeTraverse {
  /**
   * TreeTraverse enum val for preOrder: number = 1
   */
  preOrder = 1,
  /**
   * TreeTraverse enum val for levelOrder: number = 0
   */
  levelOrder = 0,
}
 
/**
 * Tree Chart properties
 * {@docCategory TreeChart}
 */
export interface ITreeProps {
  /**
   * An object of chart data points for the Tree chart
   */
  treeData: ITreeChartDataPoint;
  /**
   * compostion for three layer chart, long: composition = 1; compact: composition = 0
   */
  composition?: NodesComposition.long | NodesComposition.compact;
  /**
   * Node Width Size for the Tree Layout
   * * @default 75
   */
  layoutWidth?: number;
  /**
   * traversal order for tree chart, preOrder = 1, levelOrder = 0
   */
  treeTraversal?: TreeTraverse.preOrder | TreeTraverse.levelOrder;
  /**
   * Width of SVG tree chart
   * * @default 1500
   */
  width?: number;
  /**
   * Height of SVG tree chart
   * * @default 700
   */
  height?: number;
 
  /**
   * Margins for the chart
   * @default `{ top: 30, bottom: 30, left: 50, right: 20 }`
   * To avoid edge cuttings to the chart, we recommend you use default values or greater then default values
   */
  margins?: IMargins;
  /**
   * Call to provide customized styling that will layer on top of the variant rules.
   */
  styles?: IStyleFunctionOrObject<ITreeStyleProps, ITreeStyles>;
  /**
   * Additional CSS class(es) to apply to the TreeChart.
   */
  className?: string;
  /**
   * Theme (provided through customization.)
   */
  theme?: ITheme;
}
 
export interface ITreeState {
  /**
   * Width of SVG tree chart
   * * @default 1500
   */
  _width: number;
  /**
   * Height of SVG tree chart
   * * @default 700
   */
  _height: number;
  /**
   * Layout Width of SVG tree chart
   * * @default 75
   */
  _layoutWidth?: number;
}
 
export interface ITreeDataStructure {
  /**
   * Node id of each node
   */
  id: number;
  /**
   * Children node object
   */
  children: Array<ITreeDataStructure>;
  /**
   * Node main text
   */
  dataName: string;
  /**
   * Subtext value (optional)
   */
  subName?: string;
  /**
   * Bodytext value (optional)
   */
  bodyText?: string;
  /**
   * Metric text value (optional)
   */
  metricName?: string;
  /**
   * Color of the rectangular box
   */
  fill: string;
  /**
   * X-coordindate of node
   */
  x: number;
  /**
   * Y-coordindate of node
   */
  y: number;
  /**
   * Node id of each node's parent
   */
  parentID: number;
}
 
/**
 * Tree Chart style properties
 * {@docCategory TreeChart}
 */
export interface ITreeStyleProps {
  /**
   * Theme (provided through customization.)
   */
  theme: ITheme;
  /**
   * Additional CSS class(es) to apply to the TreeChart.
   */
  className?: string;
}
 
/**
 * Tree Chart styles
 * {@docCategory TreeChart}
 */
export interface ITreeStyles {
  /**
   *  Style for the root element.
   */
  root: IStyle;
  /**
   *  Style for the Link/Path element.
   */
  link: IStyle;
  /**
   *  Style for rectangular Node
   */
  rectNode: IStyle;
  /**
   *  Style for the node main Text
   */
  rectText: IStyle;
  /**
   *  Style for the node sub Text
   */
  rectSubText: IStyle;
  /**
   *  Style for the node body Text
   */
  rectBodyText: IStyle;
  /**
   *  Style for the node metric value Text
   */
  rectMetricText: IStyle;
}