- Document defaults-only configuration, kernel topology override, and deprecated CLI flags in README - Mark schema doc as deprecated per ADR-0002 - Warn that --topology/--config are ignored; adjust loader/main/context flow - Refactor orchestrator run() to auto-select mount/apply, reuse state when already provisioned, and serialize topology via Display - Add Callgraph/FUNCTION_LIST/ADR docs tracking the new behavior - Derive Eq for Topology to satisfy updated CLI handling
2932 lines
175 KiB
HTML
2932 lines
175 KiB
HTML
|
|
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<style>
|
|
html, body {
|
|
width: 100%;
|
|
height: 100%;
|
|
margin: 0;
|
|
padding: 0;
|
|
|
|
background: var(--background-color);
|
|
}
|
|
:root{--background-color: #f5fffa;--selected-color: #4fe1f4;--edge-color: #548f9e;--edge-incoming-color: #698b69;--edge-outgoing-color: #008acd;--edge-incoming-outgoing-color: black;--cluster-label-bg-color: #e8eaed;--node-bg-color: #f4f5f1;--symbol-default-bg-color: var(--node-bg-color);--symbol-default-border-color: #889f4e;--symbol-default-text-color: #363636;--interface-bg-color: #fff8dc;--interface-border-color: #a69348;--module-bg-color: #ffebcd;--module-border-color: #a67e43;--constructor-bg-color: #ffdab9;--constructor-border-color: #a66e3c;--method-bg-color: #fff8c5;--method-border-color: #d4a72c;--function-bg-color: #bafbd0;--function-border-color: #4ac26b;--struct-bg-color: #ddf4ff;--struct-border-color: #54aeff;--type-icon-color: #8969da;--property-icon-color: #5f9348}.callgraph{--bold-border: 3.2;width:100%;height:100%;outline:none;cursor:default;-webkit-user-select:none;user-select:none}.callgraph>#graph0>polygon:first-of-type{fill:var(--background-color)}.callgraph>#graph0>#faded-group>:where(.node,.cluster){opacity:.2}.callgraph>#graph0>#faded-group>.edge{opacity:.05}.callgraph .edge>path:not(.hover-path){stroke:var(--edge-color);stroke-width:3}.callgraph .edge>polygon{stroke:var(--edge-color);fill:var(--edge-color)}.callgraph .edge>path.hover-path{stroke:transparent;stroke-width:15}.callgraph .edge.impl>path{stroke-dasharray:8,3}.callgraph .edge.impl>polygon{stroke-width:2;fill:none!important}.callgraph .edge:hover{--edge-color: var(--selected-color)}.callgraph .edge.incoming{--edge-color: var(--edge-incoming-color)}.callgraph .edge.outgoing{--edge-color: var(--edge-outgoing-color)}.callgraph .edge.incoming.outgoing{--edge-color: var(--edge-incoming-outgoing-color)}.callgraph .cluster polygon{stroke-width:1.6}.callgraph .cluster .cluster-label{cursor:pointer;fill:var(--cluster-label-bg-color);rx:18px}.callgraph .cluster text{pointer-events:none}.callgraph .cluster.selected{--cluster-label-bg-color: color-mix(in srgb, var(--selected-color) 30%, transparent)}.callgraph .cluster.selected polygon{stroke-width:var(--bold-border);stroke:var(--selected-color)}.callgraph .node>rect{rx:20px;fill:var(--node-bg-color);filter:url(#shadow)}.callgraph .node.selected>rect{stroke:var(--selected-color);stroke-width:var(--bold-border)}.callgraph .node>.title{cursor:pointer}.callgraph .node>.title>text{font-weight:700}.callgraph .cell{--bg-color: var(--symbol-default-bg-color);--border-color: var(--symbol-default-border-color);--border-width: 1.6}.callgraph .cell>rect{rx:10px;fill:var(--bg-color);stroke:var(--border-color);stroke-width:var(--border-width)}.callgraph .cell>text{fill:var(--symbold-default-text-color)}.callgraph .cell:where(.highlight,.selected,:not(:has(>.cell:hover)):hover){--border-width: var(--bold-border)}.callgraph .cell.highlight>rect{stroke:url(#highlightGradient)}.callgraph .cell.selected>rect{filter:drop-shadow(3px 3px 6px var(--border-color))}.callgraph .cell.interface{--bg-color: var(--interface-bg-color);--border-color: var(--interface-border-color)}.callgraph .cell.interface>rect{stroke-dasharray:7,5}.callgraph .cell.module{--bg-color: var(--module-bg-color);--border-color: var(--module-border-color)}.callgraph .cell.constructor{--bg-color: var(--constructor-bg-color);--border-color: var(--constructor-border-color)}.callgraph .cell.function{--bg-color: var(--function-bg-color);--border-color: var(--function-border-color)}.callgraph .cell.method{--bg-color: var(--method-bg-color);--border-color: var(--method-border-color)}.callgraph .cell:where(.class,.struct,.enum){--bg-color: var(--struct-bg-color);--border-color: var(--struct-border-color)}.callgraph .cell:where(.class,.struct,.enum)>rect{rx:unset}.callgraph .cell:where(.class,.struct,.enum)>text{transform:translateY(1.5px)}.callgraph .cell:where(.class,.struct,.enum)>text:first-of-type{fill:var(--type-icon-color)}.callgraph .cell:where(.field,.property)>rect{rx:unset}.callgraph .cell:where(.field,.property)>text:first-of-type{font-style:italic;fill:var(--property-icon-color)}
|
|
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<svg class="callgraph" viewBox="0 0 1763.6700439453125 3411">
|
|
|
|
<g id="graph0" class="graph" transform="matrix(0.8202313048149722 0 0 0.8202313048149722 243.19598151156106 2292.621904462777)">
|
|
<polygon fill="white" stroke="none" points="-4,4 -4,-3407 1759.67,-3407 1759.67,4 -4,4"></polygon>
|
|
<g id="clust1" class="cluster">
|
|
|
|
<polygon fill="none" stroke="black" points="89.13,-8 89.13,-3395 1747.67,-3395 1747.67,-8 89.13,-8"></polygon>
|
|
<rect x="858.3800048828125" y="-3391" width="120.03997802734375" height="35.199951171875" class="cluster-label"></rect>
|
|
<text text-anchor="start" x="866.38" y="-3368.6" font-family="Arial" font-size="16.00">zosstorage/src</text>
|
|
</g>
|
|
<g id="clust2" class="cluster">
|
|
|
|
<polygon fill="none" stroke="black" points="533.6,-2911 533.6,-3344 870.59,-3344 870.59,-2911 533.6,-2911"></polygon>
|
|
<rect x="686.5399780273438" y="-3340" width="31.11004638671875" height="35.199951171875" class="cluster-label"></rect>
|
|
<text text-anchor="start" x="694.54" y="-3317.6" font-family="Arial" font-size="16.00">cli</text>
|
|
</g>
|
|
<g id="clust3" class="cluster">
|
|
|
|
<polygon fill="none" stroke="black" points="563.1,-2380 563.1,-2903 841.1,-2903 841.1,-2380 563.1,-2380"></polygon>
|
|
<rect x="672.75" y="-2899" width="58.70001220703125" height="35.199951171875" class="cluster-label"></rect>
|
|
<text text-anchor="start" x="680.75" y="-2876.6" font-family="Arial" font-size="16.00">config</text>
|
|
</g>
|
|
<g id="clust4" class="cluster">
|
|
|
|
<polygon fill="none" stroke="black" points="1002.09,-359 1002.09,-1509 1330.17,-1509 1330.17,-359 1002.09,-359"></polygon>
|
|
<rect x="1135.010009765625" y="-1505" width="62.25" height="35.199951171875" class="cluster-label"></rect>
|
|
<text text-anchor="start" x="1143.01" y="-1482.6" font-family="Arial" font-size="16.00">device</text>
|
|
</g>
|
|
<g id="clust5" class="cluster">
|
|
|
|
<polygon fill="none" stroke="black" points="1027.13,-1517 1027.13,-2161 1305.13,-2161 1305.13,-1517 1027.13,-1517"></polygon>
|
|
<rect x="1151.9100341796875" y="-2157" width="28.449951171875" height="35.199951171875" class="cluster-label"></rect>
|
|
<text text-anchor="start" x="1159.91" y="-2134.6" font-family="Arial" font-size="16.00">fs</text>
|
|
</g>
|
|
<g id="clust6" class="cluster">
|
|
|
|
<polygon fill="none" stroke="black" points="1027.13,-16 1027.13,-351 1305.13,-351 1305.13,-16 1027.13,-16"></polygon>
|
|
<rect x="1112.77001953125" y="-347" width="106.719970703125" height="35.20001220703125" class="cluster-label"></rect>
|
|
<text text-anchor="start" x="1120.77" y="-324.6" font-family="Arial" font-size="16.00">idempotency</text>
|
|
</g>
|
|
<g id="clust7" class="cluster">
|
|
|
|
<polygon fill="none" stroke="black" points="563.1,-2057 563.1,-2372 841.1,-2372 841.1,-2057 563.1,-2057"></polygon>
|
|
<rect x="668.2999877929688" y="-2368" width="67.60003662109375" height="35.199951171875" class="cluster-label"></rect>
|
|
<text text-anchor="start" x="676.3" y="-2345.6" font-family="Arial" font-size="16.00">logging</text>
|
|
</g>
|
|
<g id="clust8" class="cluster">
|
|
|
|
<polygon fill="none" stroke="black" points="1027.13,-2821 1027.13,-3344 1305.13,-3344 1305.13,-2821 1027.13,-2821"></polygon>
|
|
<rect x="1135.9000244140625" y="-3340" width="60.469970703125" height="35.199951171875" class="cluster-label"></rect>
|
|
<text text-anchor="start" x="1143.9" y="-3317.6" font-family="Arial" font-size="16.00">mount</text>
|
|
</g>
|
|
<g id="clust9" class="cluster">
|
|
|
|
<polygon fill="none" stroke="black" points="563.1,-1264 563.1,-2049 841.1,-2049 841.1,-1264 563.1,-1264"></polygon>
|
|
<rect x="651.4099731445312" y="-2045" width="101.37005615234375" height="35.199951171875" class="cluster-label"></rect>
|
|
<text text-anchor="start" x="659.41" y="-2022.6" font-family="Arial" font-size="16.00">orchestrator</text>
|
|
</g>
|
|
<g id="clust10" class="cluster">
|
|
|
|
<polygon fill="none" stroke="black" points="1027.13,-2169 1027.13,-2813 1305.13,-2813 1305.13,-2169 1027.13,-2169"></polygon>
|
|
<rect x="1129.6700439453125" y="-2809" width="72.919921875" height="35.199951171875" class="cluster-label"></rect>
|
|
<text text-anchor="start" x="1137.67" y="-2786.6" font-family="Arial" font-size="16.00">partition</text>
|
|
</g>
|
|
<g id="clust11" class="cluster">
|
|
|
|
<polygon fill="none" stroke="black" points="106.62,-677 106.62,-1024 384.62,-1024 384.62,-677 106.62,-677"></polygon>
|
|
<rect x="216.72000122070312" y="-1020" width="57.79998779296875" height="35.20001220703125" class="cluster-label"></rect>
|
|
<text text-anchor="start" x="224.72" y="-997.6" font-family="Arial" font-size="16.00">report</text>
|
|
</g>
|
|
<g id="clust12" class="cluster">
|
|
|
|
<polygon fill="none" stroke="black" points="1461.67,-1833 1461.67,-2168 1739.67,-2168 1739.67,-1833 1461.67,-1833"></polygon>
|
|
<rect x="1582.449951171875" y="-2164" width="36.4500732421875" height="35.199951171875" class="cluster-label"></rect>
|
|
<text text-anchor="start" x="1590.45" y="-2141.6" font-family="Arial" font-size="16.00">util</text>
|
|
</g>
|
|
<!-- 11 -->
|
|
<g id="11" class="node" data-path="/home/delandtj/Threefold/zosstorage/src/idempotency/mod.rs">
|
|
|
|
<rect x="1035.1300048828125" y="-299.70001220703125" width="262" height="275.4000129699707"></rect>
|
|
<g id="11_0" class="title">
|
|
<text text-anchor="start" x="1088.34" y="-267.3" font-family="Arial" font-size="16.00">            mod.rs            </text>
|
|
|
|
</g>
|
|
<g id="11:49_7" data-kind="12" class="cell function">
|
|
<rect x="1051.1300048828125" y="-248.5" width="230" height="27.199996948242188"></rect>
|
|
<text text-anchor="start" x="1090.97" y="-230.1" font-family="Arial" font-size="16.00">detect_existing_state</text>
|
|
|
|
</g>
|
|
<g id="11:144_7" data-kind="12" class="cell function">
|
|
<rect x="1051.1300048828125" y="-213.3000030517578" width="230" height="27.199996948242188"></rect>
|
|
<text text-anchor="start" x="1115.45" y="-194.9" font-family="Arial" font-size="16.00">is_empty_disk</text>
|
|
|
|
</g>
|
|
<g id="11:191_3" data-kind="12" class="cell function">
|
|
<rect x="1051.1300048828125" y="-178.10000610351562" width="230" height="27.20001220703125"></rect>
|
|
<text text-anchor="start" x="1098.54" y="-159.7" font-family="Arial" font-size="16.00">parse_blkid_export</text>
|
|
|
|
</g>
|
|
<g id="11:201_3" data-kind="12" class="cell function">
|
|
<rect x="1051.1300048828125" y="-142.89999389648438" width="230" height="27.199996948242188"></rect>
|
|
<text text-anchor="start" x="1064.74" y="-124.5" font-family="Arial" font-size="16.00">read_proc_partitions_names</text>
|
|
|
|
</g>
|
|
<g id="11:229_3" data-kind="12" class="cell function">
|
|
<rect x="1051.1300048828125" y="-107.69999694824219" width="230" height="27.199996948242188"></rect>
|
|
<text text-anchor="start" x="1124.32" y="-89.3" font-family="Arial" font-size="16.00">base_name</text>
|
|
|
|
</g>
|
|
<g id="11:235_3" data-kind="12" class="cell function">
|
|
<rect x="1051.1300048828125" y="-72.5" width="230" height="27.200000762939453"></rect>
|
|
<text text-anchor="start" x="1116.32" y="-54.1" font-family="Arial" font-size="16.00">is_partition_of</text>
|
|
|
|
</g>
|
|
</g>
|
|
<!-- 11->11 -->
|
|
<g id="11:49_7-11:201_3" class="edge" data-from="11:49_7" data-to="11:201_3">
|
|
|
|
<path fill="none" stroke="black" d="M1051.35,-238.4C983.67,-235.07 920.24,-220.54 920.24,-182.1 920.24,-146.73 973.92,-131.61 1035.21,-126.82"></path>
|
|
<polygon fill="black" stroke="black" points="1035.2,-132.08 1049.84,-125.9 1034.54,-121.6 1035.2,-132.08"></polygon>
|
|
<text text-anchor="middle" x="918.49" y="-157.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1051.35,-238.4C983.67,-235.07 920.24,-220.54 920.24,-182.1 920.24,-146.73 973.92,-131.61 1035.21,-126.82" class="hover-path"></path></g>
|
|
<!-- 11->11 -->
|
|
<g id="11:144_7-11:201_3" class="edge" data-from="11:144_7" data-to="11:201_3">
|
|
|
|
<path fill="none" stroke="black" d="M1051.35,-204.15C983.67,-202.39 920.24,-192 920.24,-164.5 920.24,-139.21 973.92,-128.39 1035.21,-125.45"></path>
|
|
<polygon fill="black" stroke="black" points="1035.04,-130.71 1049.84,-124.91 1034.66,-120.21 1035.04,-130.71"></polygon>
|
|
<text text-anchor="middle" x="918.49" y="-157.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1051.35,-204.15C983.67,-202.39 920.24,-192 920.24,-164.5 920.24,-139.21 973.92,-128.39 1035.21,-125.45" class="hover-path"></path></g>
|
|
<!-- 11->11 -->
|
|
<g id="11:49_7-11:191_3" class="edge" data-from="11:49_7" data-to="11:191_3">
|
|
|
|
<path fill="none" stroke="black" d="M1051.35,-239.35C983.67,-237.59 920.24,-227.2 920.24,-199.7 920.24,-174.41 973.92,-163.59 1035.21,-160.65"></path>
|
|
<polygon fill="black" stroke="black" points="1035.04,-165.91 1049.84,-160.11 1034.66,-155.41 1035.04,-165.91"></polygon>
|
|
<text text-anchor="middle" x="918.49" y="-157.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1051.35,-239.35C983.67,-237.59 920.24,-227.2 920.24,-199.7 920.24,-174.41 973.92,-163.59 1035.21,-160.65" class="hover-path"></path></g>
|
|
<!-- 11->11 -->
|
|
<g id="11:144_7-11:229_3" class="edge" data-from="11:144_7" data-to="11:229_3">
|
|
|
|
<path fill="none" stroke="black" d="M1051.35,-203.2C983.67,-199.87 920.24,-185.34 920.24,-146.9 920.24,-111.53 973.92,-96.41 1035.21,-91.62"></path>
|
|
<polygon fill="black" stroke="black" points="1035.2,-96.88 1049.84,-90.7 1034.54,-86.4 1035.2,-96.88"></polygon>
|
|
<text text-anchor="middle" x="918.49" y="-157.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1051.35,-203.2C983.67,-199.87 920.24,-185.34 920.24,-146.9 920.24,-111.53 973.92,-96.41 1035.21,-91.62" class="hover-path"></path></g>
|
|
<!-- 11->11 -->
|
|
<g id="11:144_7-11:235_3" class="edge" data-from="11:144_7" data-to="11:235_3">
|
|
|
|
<path fill="none" stroke="black" d="M1051.35,-202.25C983.67,-197.36 920.24,-178.69 920.24,-129.3 920.24,-83.86 973.92,-64.43 1035.21,-57.8"></path>
|
|
<polygon fill="black" stroke="black" points="1035.38,-63.06 1049.85,-56.49 1034.44,-52.6 1035.38,-63.06"></polygon>
|
|
<text text-anchor="middle" x="918.49" y="-157.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1051.35,-202.25C983.67,-197.36 920.24,-178.69 920.24,-129.3 920.24,-83.86 973.92,-64.43 1035.21,-57.8" class="hover-path"></path></g>
|
|
<!-- 20 -->
|
|
<g id="20" class="node" data-path="/home/delandtj/Threefold/zosstorage/src/util/mod.rs">
|
|
|
|
<rect x="1469.6700439453125" y="-2116.699951171875" width="262" height="275.39990234375"></rect>
|
|
<g id="20_1" class="title">
|
|
<text text-anchor="start" x="1522.88" y="-2084.3" font-family="Arial" font-size="16.00">            mod.rs            </text>
|
|
|
|
</g>
|
|
<g id="20:48_11" data-kind="23" class="cell struct">
|
|
<rect x="1485.6700439453125" y="-2065.5" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="1549.98" y="-2048.1" font-family="Arial" font-weight="bold" font-size="16.00">S</text>
|
|
<text text-anchor="start" x="1560.66" y="-2048.1" font-family="Arial" font-size="16.00">  CmdOutput</text>
|
|
|
|
</g>
|
|
<g id="20:60_7" data-kind="12" class="cell function">
|
|
<rect x="1485.6700439453125" y="-2030.300048828125" width="230" height="27.2000732421875"></rect>
|
|
<text text-anchor="start" x="1562.87" y="-2011.9" font-family="Arial" font-size="16.00">which_tool</text>
|
|
|
|
</g>
|
|
<g id="20:72_7" data-kind="12" class="cell function">
|
|
<rect x="1485.6700439453125" y="-1995.0999755859375" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="1569.55" y="-1976.7" font-family="Arial" font-size="16.00">run_cmd</text>
|
|
|
|
</g>
|
|
<g id="20:98_7" data-kind="12" class="cell function">
|
|
<rect x="1485.6700439453125" y="-1959.9000244140625" width="230" height="27.2000732421875"></rect>
|
|
<text text-anchor="start" x="1538.41" y="-1941.5" font-family="Arial" font-size="16.00">run_cmd_capture</text>
|
|
|
|
</g>
|
|
<g id="20:130_7" data-kind="12" class="cell function">
|
|
<rect x="1485.6700439453125" y="-1924.699951171875" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="1559.75" y="-1906.3" font-family="Arial" font-size="16.00">udev_settle</text>
|
|
|
|
</g>
|
|
<g id="20:156_7" data-kind="12" class="cell function">
|
|
<rect x="1485.6700439453125" y="-1889.5" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="1561.98" y="-1871.1" font-family="Arial" font-size="16.00">is_efi_boot</text>
|
|
|
|
</g>
|
|
</g>
|
|
<!-- 11->20 -->
|
|
<g id="11:144_7-20:98_7" class="edge" data-from="11:144_7" data-to="20:98_7">
|
|
|
|
<path fill="none" stroke="black" d="M1282.13,-199.7C1354.38,-199.7 1315.93,-284.17 1330.17,-355 1338.43,-396.07 1429.08,-1775.79 1476.6,-1931.96"></path>
|
|
<polygon fill="black" stroke="black" points="1472,-1934.48 1483.93,-1944.98 1481.15,-1929.33 1472,-1934.48"></polygon>
|
|
<text text-anchor="middle" x="1395.92" y="-1194.71" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1282.13,-199.7C1354.38,-199.7 1315.93,-284.17 1330.17,-355 1338.43,-396.07 1429.08,-1775.79 1476.6,-1931.96" class="hover-path"></path></g>
|
|
<!-- 11->20 -->
|
|
<g id="11:49_7-20:98_7" class="edge" data-from="11:49_7" data-to="20:98_7">
|
|
|
|
<path fill="none" stroke="black" d="M1282.13,-234.9C1468.01,-234.9 1303.44,-1847.49 1468.78,-1941.98"></path>
|
|
<polygon fill="black" stroke="black" points="1467.36,-1947.03 1483.21,-1945.9 1470.11,-1936.9 1467.36,-1947.03"></polygon>
|
|
<text text-anchor="middle" x="1395.92" y="-1663.59" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1282.13,-234.9C1468.01,-234.9 1303.44,-1847.49 1468.78,-1941.98" class="hover-path"></path></g>
|
|
<!-- 11->20 -->
|
|
<g id="11:49_7-20:60_7" class="edge" data-from="11:49_7" data-to="20:60_7">
|
|
|
|
<path fill="none" stroke="black" d="M1282.13,-234.9C1339.62,-234.9 1318.23,-298.77 1330.17,-355 1349.57,-446.31 1326.92,-1969.26 1394.17,-2034 1419.53,-2058.41 1437.9,-2028.09 1468.55,-2019.08"></path>
|
|
<polygon fill="black" stroke="black" points="1469.1,-2024.3 1483.17,-2016.92 1467.57,-2013.92 1469.1,-2024.3"></polygon>
|
|
<text text-anchor="middle" x="1395.92" y="-2041.26" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1282.13,-234.9C1339.62,-234.9 1318.23,-298.77 1330.17,-355 1349.57,-446.31 1326.92,-1969.26 1394.17,-2034 1419.53,-2058.41 1437.9,-2028.09 1468.55,-2019.08" class="hover-path"></path></g>
|
|
<!-- 11->20 -->
|
|
<g id="11:144_7-20:60_7" class="edge" data-from="11:144_7" data-to="20:60_7">
|
|
|
|
<path fill="none" stroke="black" d="M1282.13,-199.7C1354.38,-199.7 1317.97,-283.79 1330.17,-355 1360.62,-532.66 1293.32,-1826.61 1394.17,-1976 1415.57,-2007.7 1434.75,-2015.03 1468.22,-2016.41"></path>
|
|
<polygon fill="black" stroke="black" points="1468.07,-2021.66 1483.16,-2016.67 1468.25,-2011.16 1468.07,-2021.66"></polygon>
|
|
<text text-anchor="middle" x="1395.92" y="-1984.43" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1282.13,-199.7C1354.38,-199.7 1317.97,-283.79 1330.17,-355 1360.62,-532.66 1293.32,-1826.61 1394.17,-1976 1415.57,-2007.7 1434.75,-2015.03 1468.22,-2016.41" class="hover-path"></path></g>
|
|
<!-- 6 -->
|
|
<g id="6" class="node" data-path="/home/delandtj/Threefold/zosstorage/src/device/discovery.rs">
|
|
|
|
<rect x="1010.0900268554688" y="-1340.5" width="312.08001708984375" height="973"></rect>
|
|
<g id="6_2" class="title">
|
|
<text text-anchor="start" x="1070.11" y="-1308.1" font-family="Arial" font-size="16.00">            discovery.rs            </text>
|
|
|
|
</g>
|
|
<g id="6:45_11" data-kind="23" class="cell struct">
|
|
<rect x="1026.0899658203125" y="-1289.300048828125" width="280.080078125" height="27.2000732421875"></rect>
|
|
<text text-anchor="start" x="1140.8" y="-1271.9" font-family="Arial" font-weight="bold" font-size="16.00">S</text>
|
|
<text text-anchor="start" x="1151.47" y="-1271.9" font-family="Arial" font-size="16.00">  Disk</text>
|
|
|
|
</g>
|
|
<g id="6:60_11" data-kind="23" class="cell struct">
|
|
<rect x="1026.0899658203125" y="-1254.0999755859375" width="280.080078125" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="1114.12" y="-1236.7" font-family="Arial" font-weight="bold" font-size="16.00">S</text>
|
|
<text text-anchor="start" x="1124.79" y="-1236.7" font-family="Arial" font-size="16.00">  DeviceFilter</text>
|
|
|
|
</g>
|
|
<g id="6:71_5" data-kind="19" class="cell">
|
|
<rect x="1026.0899658203125" y="-1218.9000244140625" width="280.080078125" height="78.4000244140625"></rect>
|
|
<text text-anchor="start" x="1107.01" y="-1192.5" font-family="Arial" font-size="16.00">impl DeviceFilter</text>
|
|
<g id="6:72_7" data-kind="6" class="cell method">
|
|
<rect x="1034.0899658203125" y="-1175.699951171875" width="264.080078125" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="1135.9" y="-1157.3" font-family="Arial" font-size="16.00">matches</text>
|
|
|
|
</g>
|
|
|
|
</g>
|
|
<g id="6:93_10" data-kind="11" class="cell interface">
|
|
<rect x="1026.0899658203125" y="-1132.5" width="280.080078125" height="113.5999755859375"></rect>
|
|
<text text-anchor="start" x="1111.89" y="-1106.1" font-family="Arial" font-size="16.00">DeviceProvider</text>
|
|
<g id="6:95_7" data-kind="6" class="cell method">
|
|
<rect x="1034.0899658203125" y="-1089.300048828125" width="264.080078125" height="27.2000732421875"></rect>
|
|
<text text-anchor="start" x="1101.66" y="-1070.9" font-family="Arial" font-size="16.00">list_block_devices</text>
|
|
|
|
</g>
|
|
<g id="6:97_7" data-kind="6" class="cell method">
|
|
<rect x="1034.0899658203125" y="-1054.0999755859375" width="264.080078125" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="1105.65" y="-1035.7" font-family="Arial" font-size="16.00">probe_properties</text>
|
|
|
|
</g>
|
|
|
|
</g>
|
|
<g id="6:103_7" data-kind="23" class="cell struct">
|
|
<rect x="1026.0899658203125" y="-1010.9000244140625" width="280.080078125" height="27.20001220703125"></rect>
|
|
<text text-anchor="start" x="1113.23" y="-993.5" font-family="Arial" font-weight="bold" font-size="16.00">S</text>
|
|
<text text-anchor="start" x="1123.9" y="-993.5" font-family="Arial" font-size="16.00">  SysProvider</text>
|
|
|
|
</g>
|
|
<g id="6:105_5" data-kind="19" class="cell">
|
|
<rect x="1026.0899658203125" y="-975.7000122070312" width="280.080078125" height="78.4000244140625"></rect>
|
|
<text text-anchor="start" x="1106.12" y="-949.3" font-family="Arial" font-size="16.00">impl SysProvider</text>
|
|
<g id="6:106_7" data-kind="12" class="cell function">
|
|
<rect x="1034.0899658203125" y="-932.5" width="264.080078125" height="27.20001220703125"></rect>
|
|
<text text-anchor="start" x="1151.46" y="-914.1" font-family="Arial" font-size="16.00">new</text>
|
|
|
|
</g>
|
|
|
|
</g>
|
|
<g id="6:111_24" data-kind="19" class="cell">
|
|
<rect x="1026.0899658203125" y="-889.2999877929688" width="280.080078125" height="113.5999755859375"></rect>
|
|
<text text-anchor="start" x="1038.09" y="-862.9" font-family="Arial" font-size="16.00">impl DeviceProvider for SysProvider</text>
|
|
<g id="6:112_7" data-kind="6" class="cell method">
|
|
<rect x="1034.0899658203125" y="-846.0999755859375" width="264.080078125" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="1101.66" y="-827.7" font-family="Arial" font-size="16.00">list_block_devices</text>
|
|
|
|
</g>
|
|
<g id="6:174_7" data-kind="6" class="cell method">
|
|
<rect x="1034.0899658203125" y="-810.9000244140625" width="264.080078125" height="27.20001220703125"></rect>
|
|
<text text-anchor="start" x="1105.65" y="-792.5" font-family="Arial" font-size="16.00">probe_properties</text>
|
|
|
|
</g>
|
|
|
|
</g>
|
|
<g id="6:183_7" data-kind="12" class="cell function">
|
|
<rect x="1026.0899658203125" y="-767.7000122070312" width="280.080078125" height="27.20001220703125"></rect>
|
|
<text text-anchor="start" x="1136.34" y="-749.3" font-family="Arial" font-size="16.00">discover</text>
|
|
|
|
</g>
|
|
<g id="6:188_3" data-kind="12" class="cell function">
|
|
<rect x="1026.0899658203125" y="-732.5" width="280.080078125" height="27.20001220703125"></rect>
|
|
<text text-anchor="start" x="1084.32" y="-714.1" font-family="Arial" font-size="16.00">discover_with_provider</text>
|
|
|
|
</g>
|
|
<g id="6:223_3" data-kind="12" class="cell function">
|
|
<rect x="1026.0899658203125" y="-697.2999877929688" width="280.080078125" height="27.20001220703125"></rect>
|
|
<text text-anchor="start" x="1104.76" y="-678.9" font-family="Arial" font-size="16.00">is_ignored_name</text>
|
|
|
|
</g>
|
|
<g id="6:234_3" data-kind="12" class="cell function">
|
|
<rect x="1026.0899658203125" y="-662.0999755859375" width="280.080078125" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="1110.99" y="-643.7" font-family="Arial" font-size="16.00">sys_block_path</text>
|
|
|
|
</g>
|
|
<g id="6:238_3" data-kind="12" class="cell function">
|
|
<rect x="1026.0899658203125" y="-626.9000244140625" width="280.080078125" height="27.20001220703125"></rect>
|
|
<text text-anchor="start" x="1124.32" y="-608.5" font-family="Arial" font-size="16.00">base_name</text>
|
|
|
|
</g>
|
|
<g id="6:245_3" data-kind="12" class="cell function">
|
|
<rect x="1026.0899658203125" y="-591.7000122070312" width="280.080078125" height="27.20001220703125"></rect>
|
|
<text text-anchor="start" x="1095.88" y="-573.3" font-family="Arial" font-size="16.00">is_removable_sysfs</text>
|
|
|
|
</g>
|
|
<g id="6:252_3" data-kind="12" class="cell function">
|
|
<rect x="1026.0899658203125" y="-556.5" width="280.080078125" height="27.20001220703125"></rect>
|
|
<text text-anchor="start" x="1104.77" y="-538.1" font-family="Arial" font-size="16.00">is_partition_sysfs</text>
|
|
|
|
</g>
|
|
<g id="6:257_3" data-kind="12" class="cell function">
|
|
<rect x="1026.0899658203125" y="-521.2999877929688" width="280.080078125" height="27.199981689453125"></rect>
|
|
<text text-anchor="start" x="1089.2" y="-502.9" font-family="Arial" font-size="16.00">read_disk_size_bytes</text>
|
|
|
|
</g>
|
|
<g id="6:267_3" data-kind="12" class="cell function">
|
|
<rect x="1026.0899658203125" y="-486.1000061035156" width="280.080078125" height="27.20001220703125"></rect>
|
|
<text text-anchor="start" x="1112.76" y="-467.7" font-family="Arial" font-size="16.00">read_rotational</text>
|
|
|
|
</g>
|
|
<g id="6:274_3" data-kind="12" class="cell function">
|
|
<rect x="1026.0899658203125" y="-450.8999938964844" width="280.080078125" height="27.199981689453125"></rect>
|
|
<text text-anchor="start" x="1100.32" y="-432.5" font-family="Arial" font-size="16.00">read_model_serial</text>
|
|
|
|
</g>
|
|
<g id="6:282_3" data-kind="12" class="cell function">
|
|
<rect x="1026.0899658203125" y="-415.70001220703125" width="280.080078125" height="27.20001220703125"></rect>
|
|
<text text-anchor="start" x="1093.64" y="-397.3" font-family="Arial" font-size="16.00">read_optional_string</text>
|
|
|
|
</g>
|
|
</g>
|
|
<!-- 6->6 -->
|
|
<g id="6:112_7-6:274_3" class="edge" data-from="6:112_7" data-to="6:274_3">
|
|
|
|
<path fill="none" stroke="black" d="M1034.41,-826.98C961.84,-809.66 895.2,-760.39 895.2,-634.9 895.2,-523.25 947.95,-471.94 1010.69,-449.78"></path>
|
|
<polygon fill="black" stroke="black" points="1012.19,-454.81 1024.94,-445.32 1009.06,-444.79 1012.19,-454.81"></polygon>
|
|
<text text-anchor="middle" x="893.45" y="-849.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1034.41,-826.98C961.84,-809.66 895.2,-760.39 895.2,-634.9 895.2,-523.25 947.95,-471.94 1010.69,-449.78" class="hover-path"></path></g>
|
|
<!-- 6->6 -->
|
|
<g id="6:111_24-6:93_10" class="edge impl" data-from="6:111_24" data-to="6:93_10">
|
|
|
|
<path fill="none" stroke="black" d="M1034.41,-868.62C961.84,-878.83 895.2,-909.97 895.2,-989.3 895.2,-1062.74 952.32,-1094.88 1018.37,-1107.35"></path>
|
|
<polygon fill="black" stroke="black" points="1017.26,-1112.49 1032.91,-1109.74 1018.96,-1102.13 1017.26,-1112.49"></polygon>
|
|
<text text-anchor="middle" x="893.45" y="-849.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1034.41,-868.62C961.84,-878.83 895.2,-909.97 895.2,-989.3 895.2,-1062.74 952.32,-1094.88 1018.37,-1107.35" class="hover-path"></path></g>
|
|
<!-- 6->6 -->
|
|
<g id="6:252_3-6:234_3" class="edge" data-from="6:252_3" data-to="6:234_3">
|
|
|
|
<path fill="none" stroke="black" d="M1026.38,-540.12C957,-544.55 895.2,-559.55 895.2,-595.7 895.2,-629.03 947.72,-644.38 1010.29,-650.04"></path>
|
|
<polygon fill="black" stroke="black" points="1009.52,-655.25 1024.88,-651.16 1010.32,-644.78 1009.52,-655.25"></polygon>
|
|
<text text-anchor="middle" x="893.45" y="-849.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1026.38,-540.12C957,-544.55 895.2,-559.55 895.2,-595.7 895.2,-629.03 947.72,-644.38 1010.29,-650.04" class="hover-path"></path></g>
|
|
<!-- 6->6 -->
|
|
<g id="6:267_3-6:234_3" class="edge" data-from="6:267_3" data-to="6:234_3">
|
|
|
|
<path fill="none" stroke="black" d="M1026.38,-472.24C957,-480.21 895.2,-503.76 895.2,-560.5 895.2,-612.81 947.72,-636.91 1010.29,-646.6"></path>
|
|
<polygon fill="black" stroke="black" points="1009.32,-651.77 1024.88,-648.56 1010.72,-641.36 1009.32,-651.77"></polygon>
|
|
<text text-anchor="middle" x="893.45" y="-849.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1026.38,-472.24C957,-480.21 895.2,-503.76 895.2,-560.5 895.2,-612.81 947.72,-636.91 1010.29,-646.6" class="hover-path"></path></g>
|
|
<!-- 6->6 -->
|
|
<g id="6:188_3-6:245_3" class="edge" data-from="6:188_3" data-to="6:245_3">
|
|
|
|
<path fill="none" stroke="black" d="M1026.38,-720.42C957,-714.22 895.2,-694.95 895.2,-648.5 895.2,-605.68 947.72,-585.96 1010.29,-578.28"></path>
|
|
<polygon fill="black" stroke="black" points="1010.51,-583.53 1024.88,-576.74 1009.41,-573.09 1010.51,-583.53"></polygon>
|
|
<text text-anchor="middle" x="893.45" y="-849.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1026.38,-720.42C957,-714.22 895.2,-694.95 895.2,-648.5 895.2,-605.68 947.72,-585.96 1010.29,-578.28" class="hover-path"></path></g>
|
|
<!-- 6->6 -->
|
|
<g id="6:274_3-6:234_3" class="edge" data-from="6:274_3" data-to="6:234_3">
|
|
|
|
<path fill="none" stroke="black" d="M1026.38,-438.29C957,-448.04 895.2,-475.86 895.2,-542.9 895.2,-604.7 947.72,-633.17 1010.29,-644.88"></path>
|
|
<polygon fill="black" stroke="black" points="1009.24,-650.03 1024.89,-647.26 1010.93,-639.67 1009.24,-650.03"></polygon>
|
|
<text text-anchor="middle" x="893.45" y="-849.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1026.38,-438.29C957,-448.04 895.2,-475.86 895.2,-542.9 895.2,-604.7 947.72,-633.17 1010.29,-644.88" class="hover-path"></path></g>
|
|
<!-- 6->6 -->
|
|
<g id="6:188_3-6:95_7" class="edge" data-from="6:188_3" data-to="6:95_7">
|
|
|
|
<path fill="none" stroke="black" d="M1026.38,-725.1C957,-742.18 895.2,-787.68 895.2,-897.3 895.2,-1002.9 952.56,-1049 1018.79,-1067.51"></path>
|
|
<polygon fill="black" stroke="black" points="1017.12,-1072.5 1032.94,-1070.98 1019.62,-1062.31 1017.12,-1072.5"></polygon>
|
|
<text text-anchor="middle" x="893.45" y="-849.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1026.38,-725.1C957,-742.18 895.2,-787.68 895.2,-897.3 895.2,-1002.9 952.56,-1049 1018.79,-1067.51" class="hover-path"></path></g>
|
|
<!-- 6->6 -->
|
|
<g id="6:188_3-6:238_3" class="edge" data-from="6:188_3" data-to="6:238_3">
|
|
|
|
<path fill="none" stroke="black" d="M1026.38,-721.68C957,-717.25 895.2,-702.25 895.2,-666.1 895.2,-632.77 947.72,-617.42 1010.29,-611.76"></path>
|
|
<polygon fill="black" stroke="black" points="1010.32,-617.02 1024.88,-610.64 1009.52,-606.55 1010.32,-617.02"></polygon>
|
|
<text text-anchor="middle" x="893.45" y="-849.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1026.38,-721.68C957,-717.25 895.2,-702.25 895.2,-666.1 895.2,-632.77 947.72,-617.42 1010.29,-611.76" class="hover-path"></path></g>
|
|
<!-- 6->6 -->
|
|
<g id="6:274_3-6:282_3" class="edge" data-from="6:274_3" data-to="6:282_3">
|
|
|
|
<path fill="none" stroke="black" d="M1026.38,-442.6C957,-441.72 895.2,-435.26 895.2,-419.7 895.2,-405.39 947.5,-398.77 1009.89,-397.12"></path>
|
|
<polygon fill="black" stroke="black" points="1009.98,-402.37 1024.87,-396.83 1009.77,-391.87 1009.98,-402.37"></polygon>
|
|
<text text-anchor="middle" x="893.45" y="-849.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1026.38,-442.6C957,-441.72 895.2,-435.26 895.2,-419.7 895.2,-405.39 947.5,-398.77 1009.89,-397.12" class="hover-path"></path></g>
|
|
<!-- 6->6 -->
|
|
<g id="6:257_3-6:234_3" class="edge" data-from="6:257_3" data-to="6:234_3">
|
|
|
|
<path fill="none" stroke="black" d="M1026.38,-506.18C957,-512.38 895.2,-531.65 895.2,-578.1 895.2,-620.92 947.72,-640.64 1010.29,-648.32"></path>
|
|
<polygon fill="black" stroke="black" points="1009.41,-653.51 1024.88,-649.86 1010.51,-643.07 1009.41,-653.51"></polygon>
|
|
<text text-anchor="middle" x="893.45" y="-849.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1026.38,-506.18C957,-512.38 895.2,-531.65 895.2,-578.1 895.2,-620.92 947.72,-640.64 1010.29,-648.32" class="hover-path"></path></g>
|
|
<!-- 6->6 -->
|
|
<g id="6:183_7-6:106_7" class="edge" data-from="6:183_7" data-to="6:106_7">
|
|
|
|
<path fill="none" stroke="black" d="M1026.38,-753.44C957,-760.84 895.2,-783.03 895.2,-836.5 895.2,-887.9 952.32,-910.39 1018.37,-918.64"></path>
|
|
<polygon fill="black" stroke="black" points="1017.43,-923.82 1032.9,-920.19 1018.55,-913.38 1017.43,-923.82"></polygon>
|
|
<text text-anchor="middle" x="893.45" y="-849.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1026.38,-753.44C957,-760.84 895.2,-783.03 895.2,-836.5 895.2,-887.9 952.32,-910.39 1018.37,-918.64" class="hover-path"></path></g>
|
|
<!-- 6->6 -->
|
|
<g id="6:188_3-6:97_7" class="edge" data-from="6:188_3" data-to="6:97_7">
|
|
|
|
<path fill="none" stroke="black" d="M1026.38,-723.84C957,-739.15 895.2,-780.37 895.2,-879.7 895.2,-975.19 952.32,-1016.98 1018.37,-1033.66"></path>
|
|
<polygon fill="black" stroke="black" points="1017.15,-1038.77 1032.93,-1036.88 1019.42,-1028.52 1017.15,-1038.77"></polygon>
|
|
<text text-anchor="middle" x="893.45" y="-849.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1026.38,-723.84C957,-739.15 895.2,-780.37 895.2,-879.7 895.2,-975.19 952.32,-1016.98 1018.37,-1033.66" class="hover-path"></path></g>
|
|
<!-- 6->6 -->
|
|
<g id="6:183_7-6:188_3" class="edge" data-from="6:183_7" data-to="6:188_3">
|
|
|
|
<path fill="none" stroke="black" d="M1026.38,-759.4C957,-758.52 895.2,-752.06 895.2,-736.5 895.2,-722.19 947.5,-715.57 1009.89,-713.92"></path>
|
|
<polygon fill="black" stroke="black" points="1009.98,-719.17 1024.87,-713.63 1009.77,-708.67 1009.98,-719.17"></polygon>
|
|
<text text-anchor="middle" x="893.45" y="-849.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1026.38,-759.4C957,-758.52 895.2,-752.06 895.2,-736.5 895.2,-722.19 947.5,-715.57 1009.89,-713.92" class="hover-path"></path></g>
|
|
<!-- 6->6 -->
|
|
<g id="6:112_7-6:223_3" class="edge" data-from="6:112_7" data-to="6:223_3">
|
|
|
|
<path fill="none" stroke="black" d="M1034.41,-834.44C961.84,-828.65 895.2,-808.76 895.2,-758.1 895.2,-713.13 947.72,-692.4 1010.29,-684.27"></path>
|
|
<polygon fill="black" stroke="black" points="1010.56,-689.52 1024.88,-682.63 1009.39,-679.09 1010.56,-689.52"></polygon>
|
|
<text text-anchor="middle" x="893.45" y="-849.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1034.41,-834.44C961.84,-828.65 895.2,-808.76 895.2,-758.1 895.2,-713.13 947.72,-692.4 1010.29,-684.27" class="hover-path"></path></g>
|
|
<!-- 6->6 -->
|
|
<g id="6:112_7-6:252_3" class="edge" data-from="6:112_7" data-to="6:252_3">
|
|
|
|
<path fill="none" stroke="black" d="M1034.41,-830.18C961.84,-817.8 895.2,-781.12 895.2,-687.7 895.2,-604.76 947.72,-566.55 1010.29,-550.35"></path>
|
|
<polygon fill="black" stroke="black" points="1011.44,-555.48 1024.91,-547.03 1009.12,-545.24 1011.44,-555.48"></polygon>
|
|
<text text-anchor="middle" x="893.45" y="-849.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1034.41,-830.18C961.84,-817.8 895.2,-781.12 895.2,-687.7 895.2,-604.76 947.72,-566.55 1010.29,-550.35" class="hover-path"></path></g>
|
|
<!-- 6->6 -->
|
|
<g id="6:245_3-6:234_3" class="edge" data-from="6:245_3" data-to="6:234_3">
|
|
|
|
<path fill="none" stroke="black" d="M1026.38,-574.06C957,-576.71 895.2,-587.44 895.2,-613.3 895.2,-637.08 947.5,-648.07 1009.89,-651.74"></path>
|
|
<polygon fill="black" stroke="black" points="1009.64,-656.99 1024.87,-652.47 1010.14,-646.5 1009.64,-656.99"></polygon>
|
|
<text text-anchor="middle" x="893.45" y="-849.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1026.38,-574.06C957,-576.71 895.2,-587.44 895.2,-613.3 895.2,-637.08 947.5,-648.07 1009.89,-651.74" class="hover-path"></path></g>
|
|
<!-- 6->6 -->
|
|
<g id="6:112_7-6:257_3" class="edge" data-from="6:112_7" data-to="6:257_3">
|
|
|
|
<path fill="none" stroke="black" d="M1034.41,-829.11C961.84,-815.08 895.2,-774.21 895.2,-670.1 895.2,-577.47 947.95,-534.9 1010.69,-516.76"></path>
|
|
<polygon fill="black" stroke="black" points="1011.68,-521.92 1024.92,-513.13 1009.09,-511.75 1011.68,-521.92"></polygon>
|
|
<text text-anchor="middle" x="893.45" y="-849.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1034.41,-829.11C961.84,-815.08 895.2,-774.21 895.2,-670.1 895.2,-577.47 947.95,-534.9 1010.69,-516.76" class="hover-path"></path></g>
|
|
<!-- 6->6 -->
|
|
<g id="6:112_7-6:267_3" class="edge" data-from="6:112_7" data-to="6:267_3">
|
|
|
|
<path fill="none" stroke="black" d="M1034.41,-828.05C961.84,-812.37 895.2,-767.3 895.2,-652.5 895.2,-550.36 947.95,-503.42 1010.69,-483.27"></path>
|
|
<polygon fill="black" stroke="black" points="1011.93,-488.37 1024.93,-479.23 1009.06,-478.27 1011.93,-488.37"></polygon>
|
|
<text text-anchor="middle" x="893.45" y="-849.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1034.41,-828.05C961.84,-812.37 895.2,-767.3 895.2,-652.5 895.2,-550.36 947.95,-503.42 1010.69,-483.27" class="hover-path"></path></g>
|
|
<!-- 6->6 -->
|
|
<g id="6:188_3-6:72_7" class="edge" data-from="6:188_3" data-to="6:72_7">
|
|
|
|
<path fill="none" stroke="black" d="M1026.38,-728.19C957,-749.62 895.2,-805.61 895.2,-940.5 895.2,-1070.45 952.56,-1127.17 1018.79,-1150.31"></path>
|
|
<polygon fill="black" stroke="black" points="1017.08,-1155.28 1032.96,-1154.68 1020.17,-1145.25 1017.08,-1155.28"></polygon>
|
|
<text text-anchor="middle" x="893.45" y="-849.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1026.38,-728.19C957,-749.62 895.2,-805.61 895.2,-940.5 895.2,-1070.45 952.56,-1127.17 1018.79,-1150.31" class="hover-path"></path></g>
|
|
<!-- 7 -->
|
|
<g id="7" class="node" data-path="/home/delandtj/Threefold/zosstorage/src/orchestrator/run.rs">
|
|
|
|
<rect x="571.0999755859375" y="-1880.0999755859375" width="262" height="608.199951171875"></rect>
|
|
<g id="7_3" class="title">
|
|
<text text-anchor="start" x="628.3" y="-1847.7" font-family="Arial" font-size="16.00">            run.rs            </text>
|
|
|
|
</g>
|
|
<g id="7:62_11" data-kind="23" class="cell struct">
|
|
<rect x="587.0999755859375" y="-1828.9000244140625" width="230" height="27.2000732421875"></rect>
|
|
<text text-anchor="start" x="664.75" y="-1811.5" font-family="Arial" font-weight="bold" font-size="16.00">S</text>
|
|
<text text-anchor="start" x="675.42" y="-1811.5" font-family="Arial" font-size="16.00">  Context</text>
|
|
|
|
</g>
|
|
<g id="7:83_5" data-kind="19" class="cell">
|
|
<rect x="587.0999755859375" y="-1793.699951171875" width="230" height="324.7999267578125"></rect>
|
|
<text text-anchor="start" x="657.64" y="-1767.3" font-family="Arial" font-size="16.00">impl Context</text>
|
|
<g id="7:85_11" data-kind="12" class="cell function">
|
|
<rect x="595.0999755859375" y="-1750.5" width="214" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="687.42" y="-1732.1" font-family="Arial" font-size="16.00">new</text>
|
|
|
|
</g>
|
|
<g id="7:106_11" data-kind="6" class="cell method">
|
|
<rect x="595.0999755859375" y="-1715.300048828125" width="214" height="27.2000732421875"></rect>
|
|
<text text-anchor="start" x="664.75" y="-1696.9" font-family="Arial" font-size="16.00">with_show</text>
|
|
|
|
</g>
|
|
<g id="7:116_11" data-kind="6" class="cell method">
|
|
<rect x="595.0999755859375" y="-1680.0999755859375" width="214" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="664.3" y="-1661.7" font-family="Arial" font-size="16.00">with_apply</text>
|
|
|
|
</g>
|
|
<g id="7:128_11" data-kind="6" class="cell method">
|
|
<rect x="595.0999755859375" y="-1644.9000244140625" width="214" height="27.2000732421875"></rect>
|
|
<text text-anchor="start" x="642.5" y="-1626.5" font-family="Arial" font-size="16.00">with_report_path</text>
|
|
|
|
</g>
|
|
<g id="7:134_11" data-kind="6" class="cell method">
|
|
<rect x="595.0999755859375" y="-1609.699951171875" width="214" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="629.61" y="-1591.3" font-family="Arial" font-size="16.00">with_mount_existing</text>
|
|
|
|
</g>
|
|
<g id="7:140_11" data-kind="6" class="cell method">
|
|
<rect x="595.0999755859375" y="-1574.5" width="214" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="633.18" y="-1556.1" font-family="Arial" font-size="16.00">with_report_current</text>
|
|
|
|
</g>
|
|
<g id="7:146_11" data-kind="6" class="cell method">
|
|
<rect x="595.0999755859375" y="-1539.300048828125" width="214" height="27.2000732421875"></rect>
|
|
<text text-anchor="start" x="620.72" y="-1520.9" font-family="Arial" font-size="16.00">with_topology_from_cli</text>
|
|
|
|
</g>
|
|
<g id="7:152_11" data-kind="6" class="cell method">
|
|
<rect x="595.0999755859375" y="-1504.0999755859375" width="214" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="600.71" y="-1485.7" font-family="Arial" font-size="16.00">with_topology_from_cmdline</text>
|
|
|
|
</g>
|
|
|
|
</g>
|
|
<g id="7:162_7" data-kind="12" class="cell function">
|
|
<rect x="587.0999755859375" y="-1460.9000244140625" width="230" height="27.2000732421875"></rect>
|
|
<text text-anchor="start" x="690.54" y="-1442.5" font-family="Arial" font-size="16.00">run</text>
|
|
|
|
</g>
|
|
<g id="7:451_3" data-kind="12" class="cell function">
|
|
<rect x="587.0999755859375" y="-1425.699951171875" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="638.06" y="-1407.3" font-family="Arial" font-size="16.00">build_device_filter</text>
|
|
|
|
</g>
|
|
<g id="7:484_3" data-kind="12" class="cell function">
|
|
<rect x="587.0999755859375" y="-1390.5" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="626.5" y="-1372.1" font-family="Arial" font-size="16.00">enforce_empty_disks</text>
|
|
|
|
</g>
|
|
<g id="7:498_3" data-kind="12" class="cell function">
|
|
<rect x="587.0999755859375" y="-1355.300048828125" width="230" height="27.2000732421875"></rect>
|
|
<text text-anchor="start" x="675.42" y="-1336.9" font-family="Arial" font-size="16.00">role_str</text>
|
|
|
|
</g>
|
|
<g id="7:518_3" data-kind="12" class="cell function">
|
|
<rect x="587.0999755859375" y="-1320.0999755859375" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="628.73" y="-1301.7" font-family="Arial" font-size="16.00">build_summary_json</text>
|
|
|
|
</g>
|
|
</g>
|
|
<!-- 7->11 -->
|
|
<g id="7:162_7-11:49_7" class="edge" data-from="7:162_7" data-to="11:49_7">
|
|
|
|
<path fill="none" stroke="black" d="M818.1,-1447.3C949.9,-1447.3 916.01,-327.77 1034.86,-240.31"></path>
|
|
<polygon fill="black" stroke="black" points="1036.32,-245.36 1048.71,-235.4 1032.81,-235.46 1036.32,-245.36"></polygon>
|
|
<text text-anchor="middle" x="936.34" y="-808.95" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M818.1,-1447.3C949.9,-1447.3 916.01,-327.77 1034.86,-240.31" class="hover-path"></path></g>
|
|
<!-- 7->11 -->
|
|
<g id="7:484_3-11:144_7" class="edge" data-from="7:484_3" data-to="11:144_7">
|
|
|
|
<path fill="none" stroke="black" d="M818.1,-1376.9C946.08,-1376.9 919.32,-292.08 1034.91,-205.21"></path>
|
|
<polygon fill="black" stroke="black" points="1036.39,-210.26 1048.71,-200.22 1032.82,-200.38 1036.39,-210.26"></polygon>
|
|
<text text-anchor="middle" x="936.34" y="-757.2" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M818.1,-1376.9C946.08,-1376.9 919.32,-292.08 1034.91,-205.21" class="hover-path"></path></g>
|
|
<!-- 7->6 -->
|
|
<g id="7:162_7-6:183_7" class="edge" data-from="7:162_7" data-to="6:183_7">
|
|
|
|
<path fill="none" stroke="black" d="M818.1,-1447.3C893.61,-1447.3 938.99,-835.5 1010.85,-761.42"></path>
|
|
<polygon fill="black" stroke="black" points="1012.8,-766.32 1023.75,-754.79 1008.01,-756.98 1012.8,-766.32"></polygon>
|
|
<text text-anchor="middle" x="936.34" y="-1022.43" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M818.1,-1447.3C893.61,-1447.3 938.99,-835.5 1010.85,-761.42" class="hover-path"></path></g>
|
|
<!-- 7->7 -->
|
|
<g id="7:162_7-7:484_3" class="edge" data-from="7:162_7" data-to="7:484_3">
|
|
|
|
<path fill="none" stroke="black" d="M587.24,-1451.77C518.59,-1450.08 453.97,-1439.73 453.97,-1412.1 453.97,-1386.69 508.66,-1375.89 570.86,-1373"></path>
|
|
<polygon fill="black" stroke="black" points="570.93,-1378.26 585.73,-1372.48 570.56,-1367.76 570.93,-1378.26"></polygon>
|
|
<text text-anchor="middle" x="452.22" y="-1571.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M587.24,-1451.77C518.59,-1450.08 453.97,-1439.73 453.97,-1412.1 453.97,-1386.69 508.66,-1375.89 570.86,-1373" class="hover-path"></path></g>
|
|
<!-- 7->7 -->
|
|
<g id="7:162_7-7:451_3" class="edge" data-from="7:162_7" data-to="7:451_3">
|
|
|
|
<path fill="none" stroke="black" d="M587.24,-1452.7C518.59,-1452.56 453.97,-1446.33 453.97,-1429.7 453.97,-1414.41 508.66,-1407.91 570.86,-1406.85"></path>
|
|
<polygon fill="black" stroke="black" points="570.78,-1412.1 585.73,-1406.71 570.68,-1401.6 570.78,-1412.1"></polygon>
|
|
<text text-anchor="middle" x="452.22" y="-1571.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M587.24,-1452.7C518.59,-1452.56 453.97,-1446.33 453.97,-1429.7 453.97,-1414.41 508.66,-1407.91 570.86,-1406.85" class="hover-path"></path></g>
|
|
<!-- 7->7 -->
|
|
<g id="7:518_3-7:498_3" class="edge" data-from="7:518_3" data-to="7:498_3">
|
|
|
|
<path fill="none" stroke="black" d="M587.24,-1301.1C518.59,-1301.24 453.97,-1307.47 453.97,-1324.1 453.97,-1339.39 508.66,-1345.89 570.86,-1346.95"></path>
|
|
<polygon fill="black" stroke="black" points="570.68,-1352.2 585.73,-1347.09 570.78,-1341.7 570.68,-1352.2"></polygon>
|
|
<text text-anchor="middle" x="452.22" y="-1571.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M587.24,-1301.1C518.59,-1301.24 453.97,-1307.47 453.97,-1324.1 453.97,-1339.39 508.66,-1345.89 570.86,-1346.95" class="hover-path"></path></g>
|
|
<!-- 7->7 -->
|
|
<g id="7:162_7-7:518_3" class="edge" data-from="7:162_7" data-to="7:518_3">
|
|
|
|
<path fill="none" stroke="black" d="M587.24,-1449.92C518.59,-1445.13 453.97,-1426.53 453.97,-1376.9 453.97,-1331.25 508.66,-1311.84 570.86,-1305.31"></path>
|
|
<polygon fill="black" stroke="black" points="571.25,-1310.54 585.74,-1304.02 570.34,-1300.08 571.25,-1310.54"></polygon>
|
|
<text text-anchor="middle" x="452.22" y="-1571.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M587.24,-1449.92C518.59,-1445.13 453.97,-1426.53 453.97,-1376.9 453.97,-1331.25 508.66,-1311.84 570.86,-1305.31" class="hover-path"></path></g>
|
|
<!-- 10 -->
|
|
<g id="10" class="node" data-path="/home/delandtj/Threefold/zosstorage/src/fs/plan.rs">
|
|
|
|
<rect x="1035.1300048828125" y="-1992.699951171875" width="262" height="467.39990234375"></rect>
|
|
<g id="10_4" class="title">
|
|
<text text-anchor="start" x="1088.78" y="-1960.3" font-family="Arial" font-size="16.00">            plan.rs            </text>
|
|
|
|
</g>
|
|
<g id="10:55_9" data-kind="10" class="cell enum">
|
|
<rect x="1051.1300048828125" y="-1941.5" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="1131.45" y="-1924.1" font-family="Arial" font-weight="bold" font-size="16.00">E</text>
|
|
<text text-anchor="start" x="1142.12" y="-1924.1" font-family="Arial" font-size="16.00">  FsKind</text>
|
|
|
|
</g>
|
|
<g id="10:66_11" data-kind="23" class="cell struct">
|
|
<rect x="1051.1300048828125" y="-1906.300048828125" width="230" height="27.2000732421875"></rect>
|
|
<text text-anchor="start" x="1129.23" y="-1888.9" font-family="Arial" font-weight="bold" font-size="16.00">S</text>
|
|
<text text-anchor="start" x="1139.9" y="-1888.9" font-family="Arial" font-size="16.00">  FsSpec</text>
|
|
|
|
</g>
|
|
<g id="10:81_11" data-kind="23" class="cell struct">
|
|
<rect x="1051.1300048828125" y="-1871.0999755859375" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="1131.45" y="-1853.7" font-family="Arial" font-weight="bold" font-size="16.00">S</text>
|
|
<text text-anchor="start" x="1142.12" y="-1853.7" font-family="Arial" font-size="16.00">  FsPlan</text>
|
|
|
|
</g>
|
|
<g id="10:88_11" data-kind="23" class="cell struct">
|
|
<rect x="1051.1300048828125" y="-1835.9000244140625" width="230" height="27.2000732421875"></rect>
|
|
<text text-anchor="start" x="1124.79" y="-1818.5" font-family="Arial" font-weight="bold" font-size="16.00">S</text>
|
|
<text text-anchor="start" x="1135.46" y="-1818.5" font-family="Arial" font-size="16.00">  FsResult</text>
|
|
|
|
</g>
|
|
<g id="10:106_7" data-kind="12" class="cell function">
|
|
<rect x="1051.1300048828125" y="-1800.699951171875" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="1107" y="-1782.3" font-family="Arial" font-size="16.00">plan_filesystems</text>
|
|
|
|
</g>
|
|
<g id="10:209_7" data-kind="12" class="cell function">
|
|
<rect x="1051.1300048828125" y="-1765.5" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="1102.56" y="-1747.1" font-family="Arial" font-size="16.00">make_filesystems</text>
|
|
|
|
</g>
|
|
<g id="10:319_3" data-kind="12" class="cell function">
|
|
<rect x="1051.1300048828125" y="-1730.300048828125" width="230" height="27.2000732421875"></rect>
|
|
<text text-anchor="start" x="1119.88" y="-1711.9" font-family="Arial" font-size="16.00">capture_uuid</text>
|
|
|
|
</g>
|
|
<g id="10:335_3" data-kind="12" class="cell function">
|
|
<rect x="1051.1300048828125" y="-1695.0999755859375" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="1098.54" y="-1676.7" font-family="Arial" font-size="16.00">parse_blkid_export</text>
|
|
|
|
</g>
|
|
<g id="10:354_7" data-kind="12" class="cell function">
|
|
<rect x="1051.1300048828125" y="-1659.9000244140625" width="230" height="27.2000732421875"></rect>
|
|
<text text-anchor="start" x="1070.09" y="-1641.5" font-family="Arial" font-size="16.00">probe_existing_filesystems</text>
|
|
|
|
</g>
|
|
<g id="10:435_4" data-kind="2" class="cell module">
|
|
<rect x="1051.1300048828125" y="-1624.699951171875" width="230" height="78.39990234375"></rect>
|
|
<text text-anchor="start" x="1124.78" y="-1598.3" font-family="Arial" font-size="16.00">tests_parse</text>
|
|
<g id="10:439_6" data-kind="12" class="cell function">
|
|
<rect x="1059.1300048828125" y="-1581.5" width="214" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="1106.54" y="-1563.1" font-family="Arial" font-size="16.00">parse_export_ok</text>
|
|
|
|
</g>
|
|
|
|
</g>
|
|
</g>
|
|
<!-- 7->10 -->
|
|
<g id="7:162_7-10:106_7" class="edge" data-from="7:162_7" data-to="10:106_7">
|
|
|
|
<path fill="none" stroke="black" d="M818.1,-1447.3C951.12,-1447.3 845.68,-1624.06 934.59,-1723 969.93,-1762.33 987.69,-1782.8 1033.75,-1786.49"></path>
|
|
<polygon fill="black" stroke="black" points="1033.44,-1791.73 1048.62,-1787.04 1033.83,-1781.24 1033.44,-1791.73"></polygon>
|
|
<text text-anchor="middle" x="936.34" y="-1729.79" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M818.1,-1447.3C951.12,-1447.3 845.68,-1624.06 934.59,-1723 969.93,-1762.33 987.69,-1782.8 1033.75,-1786.49" class="hover-path"></path></g>
|
|
<!-- 7->10 -->
|
|
<g id="7:162_7-10:354_7" class="edge" data-from="7:162_7" data-to="10:354_7">
|
|
|
|
<path fill="none" stroke="black" d="M818.1,-1447.3C948.25,-1447.3 917.3,-1629.94 1033.92,-1645.28"></path>
|
|
<polygon fill="black" stroke="black" points="1033.32,-1650.5 1048.62,-1646.2 1033.98,-1640.02 1033.32,-1650.5"></polygon>
|
|
<text text-anchor="middle" x="936.34" y="-1556.97" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M818.1,-1447.3C948.25,-1447.3 917.3,-1629.94 1033.92,-1645.28" class="hover-path"></path></g>
|
|
<!-- 7->10 -->
|
|
<g id="7:162_7-10:209_7" class="edge" data-from="7:162_7" data-to="10:209_7">
|
|
|
|
<path fill="none" stroke="black" d="M818.1,-1447.3C912.16,-1447.3 877.01,-1549.62 934.59,-1624 977.91,-1679.96 974.42,-1741.68 1034.04,-1750.76"></path>
|
|
<polygon fill="black" stroke="black" points="1033.29,-1755.97 1048.62,-1751.79 1034.03,-1745.5 1033.29,-1755.97"></polygon>
|
|
<text text-anchor="middle" x="936.34" y="-1631.84" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M818.1,-1447.3C912.16,-1447.3 877.01,-1549.62 934.59,-1624 977.91,-1679.96 974.42,-1741.68 1034.04,-1750.76" class="hover-path"></path></g>
|
|
<!-- 12 -->
|
|
<g id="12" class="node" data-path="/home/delandtj/Threefold/zosstorage/src/partition/plan.rs">
|
|
|
|
<rect x="1035.1300048828125" y="-2644.699951171875" width="262" height="467.39990234375"></rect>
|
|
<g id="12_5" class="title">
|
|
<text text-anchor="start" x="1088.78" y="-2612.3" font-family="Arial" font-size="16.00">            plan.rs            </text>
|
|
|
|
</g>
|
|
<g id="12:56_9" data-kind="10" class="cell enum">
|
|
<rect x="1051.1300048828125" y="-2593.5" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="1125.23" y="-2576.1" font-family="Arial" font-weight="bold" font-size="16.00">E</text>
|
|
<text text-anchor="start" x="1135.9" y="-2576.1" font-family="Arial" font-size="16.00">  PartRole</text>
|
|
|
|
</g>
|
|
<g id="12:69_11" data-kind="23" class="cell struct">
|
|
<rect x="1051.1300048828125" y="-2558.300048828125" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="1108.77" y="-2540.9" font-family="Arial" font-weight="bold" font-size="16.00">S</text>
|
|
<text text-anchor="start" x="1119.44" y="-2540.9" font-family="Arial" font-size="16.00">  PartitionSpec</text>
|
|
|
|
</g>
|
|
<g id="12:80_11" data-kind="23" class="cell struct">
|
|
<rect x="1051.1300048828125" y="-2523.10009765625" width="230" height="27.2001953125"></rect>
|
|
<text text-anchor="start" x="1124.79" y="-2505.7" font-family="Arial" font-weight="bold" font-size="16.00">S</text>
|
|
<text text-anchor="start" x="1135.46" y="-2505.7" font-family="Arial" font-size="16.00">  DiskPlan</text>
|
|
|
|
</g>
|
|
<g id="12:89_11" data-kind="23" class="cell struct">
|
|
<rect x="1051.1300048828125" y="-2487.89990234375" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="1110.99" y="-2470.5" font-family="Arial" font-weight="bold" font-size="16.00">S</text>
|
|
<text text-anchor="start" x="1121.66" y="-2470.5" font-family="Arial" font-size="16.00">  PartitionPlan</text>
|
|
|
|
</g>
|
|
<g id="12:100_11" data-kind="23" class="cell struct">
|
|
<rect x="1051.1300048828125" y="-2452.699951171875" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="1104.33" y="-2435.3" font-family="Arial" font-weight="bold" font-size="16.00">S</text>
|
|
<text text-anchor="start" x="1115" y="-2435.3" font-family="Arial" font-size="16.00">  PartitionResult</text>
|
|
|
|
</g>
|
|
<g id="12:133_7" data-kind="12" class="cell function">
|
|
<rect x="1051.1300048828125" y="-2417.5" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="1114.1" y="-2399.1" font-family="Arial" font-size="16.00">plan_partitions</text>
|
|
|
|
</g>
|
|
<g id="12:361_7" data-kind="12" class="cell function">
|
|
<rect x="1051.1300048828125" y="-2382.300048828125" width="230" height="184"></rect>
|
|
<text text-anchor="start" x="1110.1" y="-2355.9" font-family="Arial" font-size="16.00">apply_partitions</text>
|
|
<g id="12:368_7" data-kind="12" class="cell function">
|
|
<rect x="1059.1300048828125" y="-2339.10009765625" width="214" height="27.2001953125"></rect>
|
|
<text text-anchor="start" x="1129.21" y="-2320.7" font-family="Arial" font-size="16.00">type_code</text>
|
|
|
|
</g>
|
|
<g id="12:378_7" data-kind="12" class="cell function">
|
|
<rect x="1059.1300048828125" y="-2303.89990234375" width="214" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="1114.98" y="-2285.5" font-family="Arial" font-size="16.00">part_dev_path</text>
|
|
|
|
</g>
|
|
<g id="12:387_7" data-kind="12" class="cell function">
|
|
<rect x="1059.1300048828125" y="-2268.699951171875" width="214" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="1102.1" y="-2250.3" font-family="Arial" font-size="16.00">sector_size_bytes</text>
|
|
|
|
</g>
|
|
<g id="12:399_7" data-kind="12" class="cell function">
|
|
<rect x="1059.1300048828125" y="-2233.5" width="214" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="1101.65" y="-2215.1" font-family="Arial" font-size="16.00">parse_sgdisk_info</text>
|
|
|
|
</g>
|
|
|
|
</g>
|
|
</g>
|
|
<!-- 7->12 -->
|
|
<g id="7:162_7-12:133_7" class="edge" data-from="7:162_7" data-to="12:133_7">
|
|
|
|
<path fill="none" stroke="black" d="M818.1,-1447.3C968.72,-1447.3 893.46,-1970.11 934.59,-2115 970.77,-2242.45 916.75,-2390.85 1033.74,-2403.09"></path>
|
|
<polygon fill="black" stroke="black" points="1033.38,-2408.33 1048.62,-2403.83 1033.9,-2397.84 1033.38,-2408.33"></polygon>
|
|
<text text-anchor="middle" x="936.34" y="-2127.21" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M818.1,-1447.3C968.72,-1447.3 893.46,-1970.11 934.59,-2115 970.77,-2242.45 916.75,-2390.85 1033.74,-2403.09" class="hover-path"></path></g>
|
|
<!-- 7->12 -->
|
|
<g id="7:162_7-12:361_7" class="edge" data-from="7:162_7" data-to="12:361_7">
|
|
|
|
<path fill="none" stroke="black" d="M818.1,-1447.3C1022.23,-1447.3 857.8,-2311.43 1041.77,-2358.69"></path>
|
|
<polygon fill="black" stroke="black" points="1041.1,-2363.9 1056.63,-2360.52 1042.38,-2353.47 1041.1,-2363.9"></polygon>
|
|
<text text-anchor="middle" x="936.34" y="-1880.81" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M818.1,-1447.3C1022.23,-1447.3 857.8,-2311.43 1041.77,-2358.69" class="hover-path"></path></g>
|
|
<!-- 15 -->
|
|
<g id="15" class="node" data-path="/home/delandtj/Threefold/zosstorage/src/mount/ops.rs">
|
|
|
|
<rect x="1035.1300048828125" y="-3174.89990234375" width="262" height="345.7998046875"></rect>
|
|
<g id="15_6" class="title">
|
|
<text text-anchor="start" x="1091" y="-3142.5" font-family="Arial" font-size="16.00">            ops.rs            </text>
|
|
|
|
</g>
|
|
<g id="15:55_11" data-kind="23" class="cell struct">
|
|
<rect x="1051.1300048828125" y="-3123.699951171875" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="1104.76" y="-3106.3" font-family="Arial" font-weight="bold" font-size="16.00">S</text>
|
|
<text text-anchor="start" x="1115.43" y="-3106.3" font-family="Arial" font-size="16.00">  PlannedMount</text>
|
|
|
|
</g>
|
|
<g id="15:63_11" data-kind="23" class="cell struct">
|
|
<rect x="1051.1300048828125" y="-3088.5" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="1080.3" y="-3071.1" font-family="Arial" font-weight="bold" font-size="16.00">S</text>
|
|
<text text-anchor="start" x="1090.97" y="-3071.1" font-family="Arial" font-size="16.00">  PlannedSubvolMount</text>
|
|
|
|
</g>
|
|
<g id="15:73_11" data-kind="23" class="cell struct">
|
|
<rect x="1051.1300048828125" y="-3053.300048828125" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="1118.11" y="-3035.9" font-family="Arial" font-weight="bold" font-size="16.00">S</text>
|
|
<text text-anchor="start" x="1128.78" y="-3035.9" font-family="Arial" font-size="16.00">  MountPlan</text>
|
|
|
|
</g>
|
|
<g id="15:84_11" data-kind="23" class="cell struct">
|
|
<rect x="1051.1300048828125" y="-3018.10009765625" width="230" height="27.2001953125"></rect>
|
|
<text text-anchor="start" x="1111.44" y="-3000.7" font-family="Arial" font-weight="bold" font-size="16.00">S</text>
|
|
<text text-anchor="start" x="1122.11" y="-3000.7" font-family="Arial" font-size="16.00">  MountResult</text>
|
|
|
|
</g>
|
|
<g id="15:95_3" data-kind="12" class="cell function">
|
|
<rect x="1051.1300048828125" y="-2982.89990234375" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="1131.45" y="-2964.5" font-family="Arial" font-size="16.00">fstype_str</text>
|
|
|
|
</g>
|
|
<g id="15:104_7" data-kind="12" class="cell function">
|
|
<rect x="1051.1300048828125" y="-2947.699951171875" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="1120.32" y="-2929.3" font-family="Arial" font-size="16.00">plan_mounts</text>
|
|
|
|
</g>
|
|
<g id="15:175_7" data-kind="12" class="cell function">
|
|
<rect x="1051.1300048828125" y="-2912.5" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="1116.32" y="-2894.1" font-family="Arial" font-size="16.00">apply_mounts</text>
|
|
|
|
</g>
|
|
<g id="15:303_7" data-kind="12" class="cell function">
|
|
<rect x="1051.1300048828125" y="-2877.300048828125" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="1098.99" y="-2858.9" font-family="Arial" font-size="16.00">maybe_write_fstab</text>
|
|
|
|
</g>
|
|
</g>
|
|
<!-- 7->15 -->
|
|
<g id="7:162_7-15:303_7" class="edge" data-from="7:162_7" data-to="15:303_7">
|
|
|
|
<path fill="none" stroke="black" d="M818.1,-1447.3C894.88,-1447.3 967.56,-2748.43 1002.09,-2817 1012.66,-2837.98 1017.92,-2854.93 1034.3,-2861.14"></path>
|
|
<polygon fill="black" stroke="black" points="1032.99,-2866.25 1048.64,-2863.46 1034.67,-2855.89 1032.99,-2866.25"></polygon>
|
|
<text text-anchor="middle" x="936.34" y="-2230.65" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M818.1,-1447.3C894.88,-1447.3 967.56,-2748.43 1002.09,-2817 1012.66,-2837.98 1017.92,-2854.93 1034.3,-2861.14" class="hover-path"></path></g>
|
|
<!-- 7->15 -->
|
|
<g id="7:162_7-15:175_7" class="edge" data-from="7:162_7" data-to="15:175_7">
|
|
|
|
<path fill="none" stroke="black" d="M818.1,-1447.3C837.29,-1447.3 995.84,-2798.85 1002.09,-2817 1013.75,-2850.82 1009.84,-2886.15 1034.08,-2896.13"></path>
|
|
<polygon fill="black" stroke="black" points="1032.97,-2901.27 1048.64,-2898.64 1034.75,-2890.92 1032.97,-2901.27"></polygon>
|
|
<text text-anchor="middle" x="936.34" y="-2291.62" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M818.1,-1447.3C837.29,-1447.3 995.84,-2798.85 1002.09,-2817 1013.75,-2850.82 1009.84,-2886.15 1034.08,-2896.13" class="hover-path"></path></g>
|
|
<!-- 7->15 -->
|
|
<g id="7:162_7-15:104_7" class="edge" data-from="7:162_7" data-to="15:104_7">
|
|
|
|
<path fill="none" stroke="black" d="M818.1,-1447.3C820.5,-1447.3 1001.47,-2814.68 1002.09,-2817 1014.99,-2865.19 998.56,-2919.99 1033.89,-2931.79"></path>
|
|
<polygon fill="black" stroke="black" points="1033.04,-2936.97 1048.63,-2933.89 1034.52,-2926.57 1033.04,-2936.97"></polygon>
|
|
<text text-anchor="middle" x="936.34" y="-2338.06" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M818.1,-1447.3C820.5,-1447.3 1001.47,-2814.68 1002.09,-2817 1014.99,-2865.19 998.56,-2919.99 1033.89,-2931.79" class="hover-path"></path></g>
|
|
<!-- 10->10 -->
|
|
<g id="10:354_7-10:335_3" class="edge" data-from="10:354_7" data-to="10:335_3">
|
|
|
|
<path fill="none" stroke="black" d="M1051.35,-1640.9C983.67,-1641.1 920.24,-1647.35 920.24,-1663.9 920.24,-1679.12 973.92,-1685.63 1035.21,-1686.73"></path>
|
|
<polygon fill="black" stroke="black" points="1034.79,-1691.98 1049.84,-1686.88 1034.9,-1681.48 1034.79,-1691.98"></polygon>
|
|
<text text-anchor="middle" x="918.49" y="-1754.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1051.35,-1640.9C983.67,-1641.1 920.24,-1647.35 920.24,-1663.9 920.24,-1679.12 973.92,-1685.63 1035.21,-1686.73" class="hover-path"></path></g>
|
|
<!-- 10->10 -->
|
|
<g id="10:319_3-10:335_3" class="edge" data-from="10:319_3" data-to="10:335_3">
|
|
|
|
<path fill="none" stroke="black" d="M1051.35,-1722.1C983.67,-1721.9 920.24,-1715.65 920.24,-1699.1 920.24,-1683.88 973.92,-1677.37 1035.21,-1676.27"></path>
|
|
<polygon fill="black" stroke="black" points="1034.9,-1681.52 1049.84,-1676.12 1034.79,-1671.02 1034.9,-1681.52"></polygon>
|
|
<text text-anchor="middle" x="918.49" y="-1754.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1051.35,-1722.1C983.67,-1721.9 920.24,-1715.65 920.24,-1699.1 920.24,-1683.88 973.92,-1677.37 1035.21,-1676.27" class="hover-path"></path></g>
|
|
<!-- 10->10 -->
|
|
<g id="10:439_6-10:335_3" class="edge" data-from="10:439_6" data-to="10:335_3">
|
|
|
|
<path fill="none" stroke="black" d="M1059.34,-1564.24C988.75,-1567.12 920.24,-1582.16 920.24,-1624.7 920.24,-1662.35 973.92,-1678.46 1035.21,-1683.66"></path>
|
|
<polygon fill="black" stroke="black" points="1034.52,-1688.88 1049.84,-1684.68 1035.24,-1678.4 1034.52,-1688.88"></polygon>
|
|
<text text-anchor="middle" x="918.49" y="-1754.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1059.34,-1564.24C988.75,-1567.12 920.24,-1582.16 920.24,-1624.7 920.24,-1662.35 973.92,-1678.46 1035.21,-1683.66" class="hover-path"></path></g>
|
|
<!-- 10->10 -->
|
|
<g id="10:209_7-10:319_3" class="edge" data-from="10:209_7" data-to="10:319_3">
|
|
|
|
<path fill="none" stroke="black" d="M1051.35,-1757.3C983.67,-1757.1 920.24,-1750.85 920.24,-1734.3 920.24,-1719.08 973.92,-1712.57 1035.21,-1711.47"></path>
|
|
<polygon fill="black" stroke="black" points="1034.9,-1716.72 1049.84,-1711.32 1034.79,-1706.22 1034.9,-1716.72"></polygon>
|
|
<text text-anchor="middle" x="918.49" y="-1754.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1051.35,-1757.3C983.67,-1757.1 920.24,-1750.85 920.24,-1734.3 920.24,-1719.08 973.92,-1712.57 1035.21,-1711.47" class="hover-path"></path></g>
|
|
<!-- 10->20 -->
|
|
<g id="10:354_7-20:60_7" class="edge" data-from="10:354_7" data-to="20:60_7">
|
|
|
|
<path fill="none" stroke="black" d="M1282.13,-1646.3C1495.88,-1646.3 1226.35,-1981.63 1394.17,-2114 1435.83,-2146.86 1428.01,-2042.14 1468.83,-2020.52"></path>
|
|
<polygon fill="black" stroke="black" points="1469.85,-2025.68 1483.2,-2017.06 1467.39,-2015.47 1469.85,-2025.68"></polygon>
|
|
<text text-anchor="middle" x="1395.92" y="-2120.19" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1282.13,-1646.3C1495.88,-1646.3 1226.35,-1981.63 1394.17,-2114 1435.83,-2146.86 1428.01,-2042.14 1468.83,-2020.52" class="hover-path"></path></g>
|
|
<!-- 10->20 -->
|
|
<g id="10:209_7-20:72_7" class="edge" data-from="10:209_7" data-to="20:72_7">
|
|
|
|
<path fill="none" stroke="black" d="M1282.13,-1751.9C1384.83,-1751.9 1314.3,-1889.44 1394.17,-1954 1422.27,-1976.71 1437.86,-1980.7 1468.38,-1981.37"></path>
|
|
<polygon fill="black" stroke="black" points="1468.12,-1986.62 1483.16,-1981.49 1468.2,-1976.12 1468.12,-1986.62"></polygon>
|
|
<text text-anchor="middle" x="1395.92" y="-1959.76" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1282.13,-1751.9C1384.83,-1751.9 1314.3,-1889.44 1394.17,-1954 1422.27,-1976.71 1437.86,-1980.7 1468.38,-1981.37" class="hover-path"></path></g>
|
|
<!-- 10->20 -->
|
|
<g id="10:354_7-20:98_7" class="edge" data-from="10:354_7" data-to="20:98_7">
|
|
|
|
<path fill="none" stroke="black" d="M1282.13,-1646.3C1347.47,-1646.3 1358.17,-1685.16 1397.67,-1737.2 1454.84,-1812.52 1392.54,-1930.87 1468.25,-1944.92"></path>
|
|
<polygon fill="black" stroke="black" points="1467.78,-1950.15 1483.16,-1946.17 1468.66,-1939.69 1467.78,-1950.15"></polygon>
|
|
<text text-anchor="middle" x="1395.92" y="-1741.4" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1282.13,-1646.3C1347.47,-1646.3 1358.17,-1685.16 1397.67,-1737.2 1454.84,-1812.52 1392.54,-1930.87 1468.25,-1944.92" class="hover-path"></path></g>
|
|
<!-- 10->20 -->
|
|
<g id="10:209_7-20:60_7" class="edge" data-from="10:209_7" data-to="20:60_7">
|
|
|
|
<path fill="none" stroke="black" d="M1282.13,-1751.9C1460.38,-1751.9 1251.61,-2030 1394.17,-2137 1442.88,-2173.55 1422.47,-2043.91 1468.85,-2020.32"></path>
|
|
<polygon fill="black" stroke="black" points="1469.75,-2025.5 1483.2,-2017.04 1467.4,-2015.27 1469.75,-2025.5"></polygon>
|
|
<text text-anchor="middle" x="1395.92" y="-2143.37" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1282.13,-1751.9C1460.38,-1751.9 1251.61,-2030 1394.17,-2137 1442.88,-2173.55 1422.47,-2043.91 1468.85,-2020.32" class="hover-path"></path></g>
|
|
<!-- 10->20 -->
|
|
<g id="10:319_3-20:98_7" class="edge" data-from="10:319_3" data-to="20:98_7">
|
|
|
|
<path fill="none" stroke="black" d="M1282.13,-1716.7C1350.19,-1716.7 1352.59,-1766.21 1397.67,-1817.2 1439.47,-1864.48 1419.84,-1932.92 1468.56,-1944.58"></path>
|
|
<polygon fill="black" stroke="black" points="1467.69,-1949.77 1483.17,-1946.14 1468.81,-1939.33 1467.69,-1949.77"></polygon>
|
|
<text text-anchor="middle" x="1395.92" y="-1821.4" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1282.13,-1716.7C1350.19,-1716.7 1352.59,-1766.21 1397.67,-1817.2 1439.47,-1864.48 1419.84,-1932.92 1468.56,-1944.58" class="hover-path"></path></g>
|
|
<!-- 2 -->
|
|
<g id="2" class="node" data-path="/home/delandtj/Threefold/zosstorage/src/main.rs">
|
|
|
|
<rect x="114.62000274658203" y="-1827.300048828125" width="261.99999237060547" height="134.60009765625"></rect>
|
|
<g id="2_7" class="title">
|
|
<text text-anchor="start" x="166.05" y="-1794.9" font-family="Arial" font-size="16.00">            main.rs            </text>
|
|
|
|
</g>
|
|
<g id="2:34_3" data-kind="12" class="cell function">
|
|
<rect x="130.6199951171875" y="-1776.0999755859375" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="228.28" y="-1757.7" font-family="Arial" font-size="16.00">main</text>
|
|
|
|
</g>
|
|
<g id="2:43_3" data-kind="12" class="cell function">
|
|
<rect x="130.6199951171875" y="-1740.9000244140625" width="230" height="27.2000732421875"></rect>
|
|
<text text-anchor="start" x="210.49" y="-1722.5" font-family="Arial" font-size="16.00">real_main</text>
|
|
|
|
</g>
|
|
</g>
|
|
<!-- 2->7 -->
|
|
<g id="2:43_3-7:85_11" class="edge" data-from="2:43_3" data-to="7:85_11">
|
|
|
|
<path fill="none" stroke="black" d="M361.62,-1727.3C408.79,-1727.3 419.11,-1741.83 466.1,-1746 517.03,-1750.52 533.68,-1739.62 577.67,-1737.32"></path>
|
|
<polygon fill="black" stroke="black" points="577.72,-1742.57 592.58,-1736.94 577.46,-1732.07 577.72,-1742.57"></polygon>
|
|
<text text-anchor="middle" x="467.85" y="-1750.48" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M361.62,-1727.3C408.79,-1727.3 419.11,-1741.83 466.1,-1746 517.03,-1750.52 533.68,-1739.62 577.67,-1737.32" class="hover-path"></path></g>
|
|
<!-- 2->7 -->
|
|
<g id="2:43_3-7:128_11" class="edge" data-from="2:43_3" data-to="7:128_11">
|
|
|
|
<path fill="none" stroke="black" d="M361.62,-1727.3C419.59,-1727.3 412.49,-1671.26 466.1,-1649.2 513.83,-1629.56 532.75,-1630.76 577.75,-1631.21"></path>
|
|
<polygon fill="black" stroke="black" points="577.55,-1636.46 592.58,-1631.29 577.61,-1625.96 577.55,-1636.46"></polygon>
|
|
<text text-anchor="middle" x="467.85" y="-1653.4" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M361.62,-1727.3C419.59,-1727.3 412.49,-1671.26 466.1,-1649.2 513.83,-1629.56 532.75,-1630.76 577.75,-1631.21" class="hover-path"></path></g>
|
|
<!-- 2->7 -->
|
|
<g id="2:43_3-7:116_11" class="edge" data-from="2:43_3" data-to="7:116_11">
|
|
|
|
<path fill="none" stroke="black" d="M361.62,-1727.3C411.05,-1727.3 418.37,-1702.03 466.1,-1689.2 516.23,-1675.73 532.97,-1668.14 577.75,-1666.74"></path>
|
|
<polygon fill="black" stroke="black" points="577.66,-1671.99 592.58,-1666.52 577.51,-1661.49 577.66,-1671.99"></polygon>
|
|
<text text-anchor="middle" x="467.85" y="-1693.4" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M361.62,-1727.3C411.05,-1727.3 418.37,-1702.03 466.1,-1689.2 516.23,-1675.73 532.97,-1668.14 577.75,-1666.74" class="hover-path"></path></g>
|
|
<!-- 2->7 -->
|
|
<g id="2:43_3-7:106_11" class="edge" data-from="2:43_3" data-to="7:106_11">
|
|
|
|
<path fill="none" stroke="black" d="M361.62,-1727.3C459.88,-1727.3 487.22,-1704.42 577.73,-1701.92"></path>
|
|
<polygon fill="black" stroke="black" points="577.66,-1707.17 592.58,-1701.72 577.51,-1696.67 577.66,-1707.17"></polygon>
|
|
<text text-anchor="middle" x="467.85" y="-1720.99" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M361.62,-1727.3C459.88,-1727.3 487.22,-1704.42 577.73,-1701.92" class="hover-path"></path></g>
|
|
<!-- 2->7 -->
|
|
<g id="2:43_3-7:134_11" class="edge" data-from="2:43_3" data-to="7:134_11">
|
|
|
|
<path fill="none" stroke="black" d="M361.62,-1727.3C425.93,-1727.3 409.7,-1658.1 466.1,-1627.2 512.33,-1601.88 531.62,-1596.94 577.73,-1596.21"></path>
|
|
<polygon fill="black" stroke="black" points="577.62,-1601.46 592.58,-1596.11 577.55,-1590.96 577.62,-1601.46"></polygon>
|
|
<text text-anchor="middle" x="467.85" y="-1631.4" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M361.62,-1727.3C425.93,-1727.3 409.7,-1658.1 466.1,-1627.2 512.33,-1601.88 531.62,-1596.94 577.73,-1596.21" class="hover-path"></path></g>
|
|
<!-- 2->7 -->
|
|
<g id="2:43_3-7:146_11" class="edge" data-from="2:43_3" data-to="7:146_11">
|
|
|
|
<path fill="none" stroke="black" d="M361.62,-1727.3C461.16,-1727.3 381.58,-1581.77 466.1,-1529.2 509.52,-1502.2 532.3,-1520.89 577.75,-1524.97"></path>
|
|
<polygon fill="black" stroke="black" points="577.37,-1530.2 592.59,-1525.63 577.84,-1519.71 577.37,-1530.2"></polygon>
|
|
<text text-anchor="middle" x="467.85" y="-1533.4" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M361.62,-1727.3C461.16,-1727.3 381.58,-1581.77 466.1,-1529.2 509.52,-1502.2 532.3,-1520.89 577.75,-1524.97" class="hover-path"></path></g>
|
|
<!-- 2->7 -->
|
|
<g id="2:43_3-7:162_7" class="edge" data-from="2:43_3" data-to="7:162_7">
|
|
|
|
<path fill="none" stroke="black" d="M361.62,-1727.3C493.65,-1727.3 358.15,-1525.23 466.1,-1449.2 504.94,-1421.85 527.47,-1441.71 569.62,-1446.38"></path>
|
|
<polygon fill="black" stroke="black" points="569.32,-1451.62 584.59,-1447.22 569.9,-1441.14 569.32,-1451.62"></polygon>
|
|
<text text-anchor="middle" x="467.85" y="-1453.4" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M361.62,-1727.3C493.65,-1727.3 358.15,-1525.23 466.1,-1449.2 504.94,-1421.85 527.47,-1441.71 569.62,-1446.38" class="hover-path"></path></g>
|
|
<!-- 2->7 -->
|
|
<g id="2:43_3-7:140_11" class="edge" data-from="2:43_3" data-to="7:140_11">
|
|
|
|
<path fill="none" stroke="black" d="M361.62,-1727.3C433.04,-1727.3 407.08,-1645.42 466.1,-1605.2 510.99,-1574.61 530.07,-1563.16 577.6,-1561.21"></path>
|
|
<polygon fill="black" stroke="black" points="577.69,-1566.46 592.58,-1560.93 577.49,-1555.96 577.69,-1566.46"></polygon>
|
|
<text text-anchor="middle" x="467.85" y="-1609.4" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M361.62,-1727.3C433.04,-1727.3 407.08,-1645.42 466.1,-1605.2 510.99,-1574.61 530.07,-1563.16 577.6,-1561.21" class="hover-path"></path></g>
|
|
<!-- 2->7 -->
|
|
<g id="2:43_3-7:152_11" class="edge" data-from="2:43_3" data-to="7:152_11">
|
|
|
|
<path fill="none" stroke="black" d="M361.62,-1727.3C470.3,-1727.3 378,-1569.85 466.1,-1506.2 507.84,-1476.04 531.63,-1487.4 577.6,-1490.02"></path>
|
|
<polygon fill="black" stroke="black" points="577.44,-1495.27 592.58,-1490.46 577.74,-1484.77 577.44,-1495.27"></polygon>
|
|
<text text-anchor="middle" x="467.85" y="-1510.4" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M361.62,-1727.3C470.3,-1727.3 378,-1569.85 466.1,-1506.2 507.84,-1476.04 531.63,-1487.4 577.6,-1490.02" class="hover-path"></path></g>
|
|
<!-- 2->2 -->
|
|
<g id="2:34_3-2:43_3" class="edge" data-from="2:34_3" data-to="2:43_3">
|
|
|
|
<path fill="none" stroke="black" d="M130.72,-1767.89C64.79,-1767.58 3.5,-1761.29 3.5,-1744.9 3.5,-1729.89 54.93,-1723.35 114.24,-1722.12"></path>
|
|
<polygon fill="black" stroke="black" points="114.27,-1727.37 129.21,-1721.93 114.14,-1716.87 114.27,-1727.37"></polygon>
|
|
<text text-anchor="middle" x="1.75" y="-1755.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M130.72,-1767.89C64.79,-1767.58 3.5,-1761.29 3.5,-1744.9 3.5,-1729.89 54.93,-1723.35 114.24,-1722.12" class="hover-path"></path></g>
|
|
<!-- 13 -->
|
|
<g id="13" class="node" data-path="/home/delandtj/Threefold/zosstorage/src/logging/mod.rs">
|
|
|
|
<rect x="571.0999755859375" y="-2321.10009765625" width="262" height="256.2001953125"></rect>
|
|
<g id="13_8" class="title">
|
|
<text text-anchor="start" x="624.3" y="-2288.7" font-family="Arial" font-size="16.00">            mod.rs            </text>
|
|
|
|
</g>
|
|
<g id="13:46_11" data-kind="23" class="cell struct">
|
|
<rect x="587.0999755859375" y="-2269.89990234375" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="651.4" y="-2252.5" font-family="Arial" font-weight="bold" font-size="16.00">S</text>
|
|
<text text-anchor="start" x="662.07" y="-2252.5" font-family="Arial" font-size="16.00">  LogOptions</text>
|
|
|
|
</g>
|
|
<g id="13:53_5" data-kind="19" class="cell">
|
|
<rect x="587.0999755859375" y="-2234.699951171875" width="230" height="78.39990234375"></rect>
|
|
<text text-anchor="start" x="644.29" y="-2208.3" font-family="Arial" font-size="16.00">impl LogOptions</text>
|
|
<g id="13:55_11" data-kind="12" class="cell function">
|
|
<rect x="595.0999755859375" y="-2191.5" width="214" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="674.09" y="-2173.1" font-family="Arial" font-size="16.00">from_cli</text>
|
|
|
|
</g>
|
|
|
|
</g>
|
|
<g id="13:63_3" data-kind="12" class="cell function">
|
|
<rect x="587.0999755859375" y="-2148.300048828125" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="651.86" y="-2129.9" font-family="Arial" font-size="16.00">level_from_str</text>
|
|
|
|
</g>
|
|
<g id="13:77_7" data-kind="12" class="cell function">
|
|
<rect x="587.0999755859375" y="-2113.10009765625" width="230" height="27.2001953125"></rect>
|
|
<text text-anchor="start" x="661.62" y="-2094.7" font-family="Arial" font-size="16.00">init_logging</text>
|
|
|
|
</g>
|
|
</g>
|
|
<!-- 2->13 -->
|
|
<g id="2:43_3-13:55_11" class="edge" data-from="2:43_3" data-to="13:55_11">
|
|
|
|
<path fill="none" stroke="black" d="M361.62,-1727.3C481.1,-1727.3 410.82,-1869.07 466.1,-1975 512.73,-2064.36 490.3,-2166.09 577.78,-2176.95"></path>
|
|
<polygon fill="black" stroke="black" points="577.31,-2182.18 592.59,-2177.81 577.92,-2171.7 577.31,-2182.18"></polygon>
|
|
<text text-anchor="middle" x="467.85" y="-1984.89" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M361.62,-1727.3C481.1,-1727.3 410.82,-1869.07 466.1,-1975 512.73,-2064.36 490.3,-2166.09 577.78,-2176.95" class="hover-path"></path></g>
|
|
<!-- 2->13 -->
|
|
<g id="2:43_3-13:77_7" class="edge" data-from="2:43_3" data-to="13:77_7">
|
|
|
|
<path fill="none" stroke="black" d="M361.62,-1727.3C549.04,-1727.3 402.25,-2077.66 569.76,-2098.53"></path>
|
|
<polygon fill="black" stroke="black" points="569.3,-2103.76 584.59,-2099.41 569.92,-2093.28 569.3,-2103.76"></polygon>
|
|
<text text-anchor="middle" x="467.85" y="-1862.51" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M361.62,-1727.3C549.04,-1727.3 402.25,-2077.66 569.76,-2098.53" class="hover-path"></path></g>
|
|
<!-- 4 -->
|
|
<g id="4" class="node" data-path="/home/delandtj/Threefold/zosstorage/src/config/loader.rs">
|
|
|
|
<rect x="571.0999755859375" y="-2733.89990234375" width="262" height="345.7998046875"></rect>
|
|
<g id="4_9" class="title">
|
|
<text text-anchor="start" x="617.63" y="-2701.5" font-family="Arial" font-size="16.00">            loader.rs            </text>
|
|
|
|
</g>
|
|
<g id="4:58_7" data-kind="12" class="cell function">
|
|
<rect x="587.0999755859375" y="-2682.699951171875" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="642.05" y="-2664.3" font-family="Arial" font-size="16.00">load_and_merge</text>
|
|
|
|
</g>
|
|
<g id="4:93_7" data-kind="12" class="cell function">
|
|
<rect x="587.0999755859375" y="-2647.5" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="674.52" y="-2629.1" font-family="Arial" font-size="16.00">validate</text>
|
|
|
|
</g>
|
|
<g id="4:201_3" data-kind="12" class="cell function">
|
|
<rect x="587.0999755859375" y="-2612.300048828125" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="671.85" y="-2593.9" font-family="Arial" font-size="16.00">to_value</text>
|
|
|
|
</g>
|
|
<g id="4:209_3" data-kind="12" class="cell function">
|
|
<rect x="587.0999755859375" y="-2577.10009765625" width="230" height="27.2001953125"></rect>
|
|
<text text-anchor="start" x="655.85" y="-2558.7" font-family="Arial" font-size="16.00">merge_value</text>
|
|
|
|
</g>
|
|
<g id="4:229_3" data-kind="12" class="cell function">
|
|
<rect x="587.0999755859375" y="-2541.89990234375" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="640.73" y="-2523.5" font-family="Arial" font-size="16.00">cli_overlay_value</text>
|
|
|
|
</g>
|
|
<g id="4:262_7" data-kind="12" class="cell function">
|
|
<rect x="587.0999755859375" y="-2506.699951171875" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="613.6" y="-2488.3" font-family="Arial" font-size="16.00">kernel_cmdline_topology</text>
|
|
|
|
</g>
|
|
<g id="4:285_3" data-kind="12" class="cell function">
|
|
<rect x="587.0999755859375" y="-2471.5" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="623.37" y="-2453.1" font-family="Arial" font-size="16.00">parse_topology_token</text>
|
|
|
|
</g>
|
|
<g id="4:299_3" data-kind="12" class="cell function">
|
|
<rect x="587.0999755859375" y="-2436.300048828125" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="652.28" y="-2417.9" font-family="Arial" font-size="16.00">default_config</text>
|
|
|
|
</g>
|
|
</g>
|
|
<!-- 2->4 -->
|
|
<g id="2:43_3-4:93_7" class="edge" data-from="2:43_3" data-to="4:93_7">
|
|
|
|
<path fill="none" stroke="black" d="M361.62,-1727.3C432.31,-1727.3 381.27,-1813.48 394.1,-1883 424.36,-2046.92 414.56,-2596.85 570.01,-2632.12"></path>
|
|
<polygon fill="black" stroke="black" points="569.11,-2637.3 584.59,-2633.73 570.26,-2626.87 569.11,-2637.3"></polygon>
|
|
<text text-anchor="middle" x="467.85" y="-2483.83" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M361.62,-1727.3C432.31,-1727.3 381.27,-1813.48 394.1,-1883 424.36,-2046.92 414.56,-2596.85 570.01,-2632.12" class="hover-path"></path></g>
|
|
<!-- 2->4 -->
|
|
<g id="2:43_3-4:58_7" class="edge" data-from="2:43_3" data-to="4:58_7">
|
|
|
|
<path fill="none" stroke="black" d="M361.62,-1727.3C432.31,-1727.3 382.77,-1813.22 394.1,-1883 422.01,-2054.95 407.27,-2631.48 569.81,-2667.35"></path>
|
|
<polygon fill="black" stroke="black" points="569.12,-2672.55 584.59,-2668.94 570.24,-2662.11 569.12,-2672.55"></polygon>
|
|
<text text-anchor="middle" x="467.85" y="-2528.81" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M361.62,-1727.3C432.31,-1727.3 382.77,-1813.22 394.1,-1883 422.01,-2054.95 407.27,-2631.48 569.81,-2667.35" class="hover-path"></path></g>
|
|
<!-- 2->4 -->
|
|
<g id="2:43_3-4:262_7" class="edge" data-from="2:43_3" data-to="4:262_7">
|
|
|
|
<path fill="none" stroke="black" d="M361.62,-1727.3C445.26,-1727.3 491.95,-2408.81 571.42,-2486.01"></path>
|
|
<polygon fill="black" stroke="black" points="568.94,-2490.64 584.73,-2492.44 573.51,-2481.19 568.94,-2490.64"></polygon>
|
|
<text text-anchor="middle" x="467.85" y="-2079.98" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M361.62,-1727.3C445.26,-1727.3 491.95,-2408.81 571.42,-2486.01" class="hover-path"></path></g>
|
|
<!-- 1 -->
|
|
<g id="1" class="node" data-path="/home/delandtj/Threefold/zosstorage/src/cli/args.rs">
|
|
|
|
<rect x="541.5999755859375" y="-3175.10009765625" width="320.99005126953125" height="256.2001953125"></rect>
|
|
<g id="1_10" class="title">
|
|
<text text-anchor="start" x="624.3" y="-3142.7" font-family="Arial" font-size="16.00">            args.rs            </text>
|
|
|
|
</g>
|
|
<g id="1:34_9" data-kind="10" class="cell enum">
|
|
<rect x="557.5999755859375" y="-3123.89990234375" width="288.99005126953125" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="647.39" y="-3106.5" font-family="Arial" font-weight="bold" font-size="16.00">E</text>
|
|
<text text-anchor="start" x="658.07" y="-3106.5" font-family="Arial" font-size="16.00">  LogLevelArg</text>
|
|
|
|
</g>
|
|
<g id="1:41_27" data-kind="19" class="cell">
|
|
<rect x="557.5999755859375" y="-3088.699951171875" width="288.99005126953125" height="78.39990234375"></rect>
|
|
<text text-anchor="start" x="569.6" y="-3062.3" font-family="Arial" font-size="16.00">impl std::fmt::Display for LogLevelArg</text>
|
|
<g id="1:42_7" data-kind="6" class="cell method">
|
|
<rect x="565.5999755859375" y="-3045.5" width="272.99005126953125" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="690.99" y="-3027.1" font-family="Arial" font-size="16.00">fmt</text>
|
|
|
|
</g>
|
|
|
|
</g>
|
|
<g id="1:59_11" data-kind="23" class="cell struct">
|
|
<rect x="557.5999755859375" y="-3002.300048828125" width="288.99005126953125" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="682.98" y="-2984.9" font-family="Arial" font-weight="bold" font-size="16.00">S</text>
|
|
<text text-anchor="start" x="693.66" y="-2984.9" font-family="Arial" font-size="16.00">  Cli</text>
|
|
|
|
</g>
|
|
<g id="1:111_7" data-kind="12" class="cell function">
|
|
<rect x="557.5999755859375" y="-2967.10009765625" width="288.99005126953125" height="27.2001953125"></rect>
|
|
<text text-anchor="start" x="666.09" y="-2948.7" font-family="Arial" font-size="16.00">from_args</text>
|
|
|
|
</g>
|
|
</g>
|
|
<!-- 2->1 -->
|
|
<g id="2:43_3-1:111_7" class="edge" data-from="2:43_3" data-to="1:111_7">
|
|
|
|
<path fill="none" stroke="black" d="M361.62,-1727.3C432.31,-1727.3 383.05,-1813.18 394.1,-1883 430.84,-2115.08 321.33,-2914.79 540.26,-2952.15"></path>
|
|
<polygon fill="black" stroke="black" points="539.71,-2957.37 555.09,-2953.37 540.58,-2946.9 539.71,-2957.37"></polygon>
|
|
<text text-anchor="middle" x="467.85" y="-2899.59" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M361.62,-1727.3C432.31,-1727.3 383.05,-1813.18 394.1,-1883 430.84,-2115.08 321.33,-2914.79 540.26,-2952.15" class="hover-path"></path></g>
|
|
<!-- 12->11 -->
|
|
<g id="12:361_7-11:144_7" class="edge" data-from="12:361_7" data-to="11:144_7">
|
|
|
|
<path fill="none" stroke="black" d="M1297.13,-2360.7C1297.13,-2360.7 1297.13,-415.61 1297.13,-216.16"></path>
|
|
<polygon fill="black" stroke="black" points="1302.38,-216.21 1297.13,-201.21 1291.88,-216.21 1302.38,-216.21"></polygon>
|
|
<text text-anchor="middle" x="936.34" y="-1607.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1297.13,-2360.7C1297.13,-2360.7 1297.13,-415.61 1297.13,-216.16" class="hover-path"></path></g>
|
|
<!-- 12->12 -->
|
|
<g id="12:361_7-12:368_7" class="edge" data-from="12:361_7" data-to="12:368_7">
|
|
|
|
<path fill="none" stroke="black" d="M1059.34,-2366.09C988.75,-2366.38 920.24,-2360.3 920.24,-2343.1 920.24,-2327.25 978.46,-2320.84 1042.86,-2320.16"></path>
|
|
<polygon fill="black" stroke="black" points="1042.84,-2325.41 1057.83,-2320.11 1042.81,-2314.91 1042.84,-2325.41"></polygon>
|
|
<text text-anchor="middle" x="918.49" y="-2406.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1059.34,-2366.09C988.75,-2366.38 920.24,-2360.3 920.24,-2343.1 920.24,-2327.25 978.46,-2320.84 1042.86,-2320.16" class="hover-path"></path></g>
|
|
<!-- 12->12 -->
|
|
<g id="12:361_7-12:387_7" class="edge" data-from="12:361_7" data-to="12:387_7">
|
|
|
|
<path fill="none" stroke="black" d="M1059.34,-2364.54C988.75,-2361.98 920.24,-2347.85 920.24,-2307.9 920.24,-2271.07 978.46,-2256.19 1042.86,-2252.08"></path>
|
|
<polygon fill="black" stroke="black" points="1043.11,-2257.33 1057.83,-2251.34 1042.58,-2246.84 1043.11,-2257.33"></polygon>
|
|
<text text-anchor="middle" x="918.49" y="-2406.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1059.34,-2364.54C988.75,-2361.98 920.24,-2347.85 920.24,-2307.9 920.24,-2271.07 978.46,-2256.19 1042.86,-2252.08" class="hover-path"></path></g>
|
|
<!-- 12->12 -->
|
|
<g id="12:361_7-12:378_7" class="edge" data-from="12:361_7" data-to="12:378_7">
|
|
|
|
<path fill="none" stroke="black" d="M1059.34,-2365.32C988.75,-2364.18 920.24,-2354.07 920.24,-2325.5 920.24,-2299.16 978.46,-2288.51 1042.86,-2286.12"></path>
|
|
<polygon fill="black" stroke="black" points="1042.97,-2291.37 1057.83,-2285.72 1042.69,-2280.87 1042.97,-2291.37"></polygon>
|
|
<text text-anchor="middle" x="918.49" y="-2406.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1059.34,-2365.32C988.75,-2364.18 920.24,-2354.07 920.24,-2325.5 920.24,-2299.16 978.46,-2288.51 1042.86,-2286.12" class="hover-path"></path></g>
|
|
<!-- 12->12 -->
|
|
<g id="12:361_7-12:399_7" class="edge" data-from="12:361_7" data-to="12:399_7">
|
|
|
|
<path fill="none" stroke="black" d="M1059.34,-2363.76C988.75,-2359.78 920.24,-2341.63 920.24,-2290.3 920.24,-2242.88 978.71,-2223.78 1043.27,-2218"></path>
|
|
<polygon fill="black" stroke="black" points="1043.25,-2223.27 1057.83,-2216.95 1042.49,-2212.8 1043.25,-2223.27"></polygon>
|
|
<text text-anchor="middle" x="918.49" y="-2406.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1059.34,-2363.76C988.75,-2359.78 920.24,-2341.63 920.24,-2290.3 920.24,-2242.88 978.71,-2223.78 1043.27,-2218" class="hover-path"></path></g>
|
|
<!-- 12->20 -->
|
|
<g id="12:387_7-20:98_7" class="edge" data-from="12:387_7" data-to="20:98_7">
|
|
|
|
<path fill="none" stroke="black" d="M1274.13,-2255.1C1321.29,-2255.1 1312,-2208.52 1330.17,-2165 1377.32,-2052.07 1298.11,-1973.01 1394.17,-1897.2 1425.46,-1872.51 1436.19,-1928.09 1468.68,-1942.83"></path>
|
|
<polygon fill="black" stroke="black" points="1467.42,-1947.93 1483.19,-1945.98 1469.65,-1937.67 1467.42,-1947.93"></polygon>
|
|
<text text-anchor="middle" x="1395.92" y="-1901.4" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1274.13,-2255.1C1321.29,-2255.1 1312,-2208.52 1330.17,-2165 1377.32,-2052.07 1298.11,-1973.01 1394.17,-1897.2 1425.46,-1872.51 1436.19,-1928.09 1468.68,-1942.83" class="hover-path"></path></g>
|
|
<!-- 12->20 -->
|
|
<g id="12:361_7-20:72_7" class="edge" data-from="12:361_7" data-to="20:72_7">
|
|
|
|
<path fill="none" stroke="black" d="M1274.13,-2360.7C1404.44,-2360.7 1325.91,-2204.2 1394.17,-2093.2 1424.51,-2043.88 1421.71,-1992.21 1468.48,-1982.96"></path>
|
|
<polygon fill="black" stroke="black" points="1468.7,-1988.21 1483.16,-1981.64 1467.75,-1977.75 1468.7,-1988.21"></polygon>
|
|
<text text-anchor="middle" x="1395.92" y="-2097.4" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1274.13,-2360.7C1404.44,-2360.7 1325.91,-2204.2 1394.17,-2093.2 1424.51,-2043.88 1421.71,-1992.21 1468.48,-1982.96" class="hover-path"></path></g>
|
|
<!-- 12->20 -->
|
|
<g id="12:361_7-20:60_7" class="edge" data-from="12:361_7" data-to="20:60_7">
|
|
|
|
<path fill="none" stroke="black" d="M1274.13,-2360.7C1340.45,-2360.7 1357.59,-2329.84 1397.67,-2277 1467.79,-2184.56 1372.87,-2032.47 1468.41,-2017.84"></path>
|
|
<polygon fill="black" stroke="black" points="1468.57,-2023.09 1483.16,-2016.81 1467.83,-2012.62 1468.57,-2023.09"></polygon>
|
|
<text text-anchor="middle" x="1395.92" y="-2284.34" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1274.13,-2360.7C1340.45,-2360.7 1357.59,-2329.84 1397.67,-2277 1467.79,-2184.56 1372.87,-2032.47 1468.41,-2017.84" class="hover-path"></path></g>
|
|
<!-- 12->20 -->
|
|
<g id="12:361_7-20:130_7" class="edge" data-from="12:361_7" data-to="20:130_7">
|
|
|
|
<path fill="none" stroke="black" d="M1274.13,-2360.7C1496.41,-2360.7 1220.88,-2014.4 1394.17,-1875.2 1423.3,-1851.81 1437.33,-1895.56 1468.47,-1907.96"></path>
|
|
<polygon fill="black" stroke="black" points="1467.46,-1913.11 1483.19,-1910.81 1469.46,-1902.8 1467.46,-1913.11"></polygon>
|
|
<text text-anchor="middle" x="1395.92" y="-1879.4" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1274.13,-2360.7C1496.41,-2360.7 1220.88,-2014.4 1394.17,-1875.2 1423.3,-1851.81 1437.33,-1895.56 1468.47,-1907.96" class="hover-path"></path></g>
|
|
<!-- 12->20 -->
|
|
<g id="12:133_7-20:156_7" class="edge" data-from="12:133_7" data-to="20:156_7">
|
|
|
|
<path fill="none" stroke="black" d="M1282.13,-2403.9C1420.11,-2403.9 1288.66,-1882.1 1394.17,-1793.2 1431.28,-1761.93 1430.86,-1851.96 1468.81,-1872.03"></path>
|
|
<polygon fill="black" stroke="black" points="1467.38,-1877.08 1483.2,-1875.54 1469.88,-1866.88 1467.38,-1877.08"></polygon>
|
|
<text text-anchor="middle" x="1395.92" y="-1797.4" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1282.13,-2403.9C1420.11,-2403.9 1288.66,-1882.1 1394.17,-1793.2 1431.28,-1761.93 1430.86,-1851.96 1468.81,-1872.03" class="hover-path"></path></g>
|
|
<!-- 12->20 -->
|
|
<g id="12:387_7-20:60_7" class="edge" data-from="12:387_7" data-to="20:60_7">
|
|
|
|
<path fill="none" stroke="black" d="M1274.13,-2255.1C1329.83,-2255.1 1354.34,-2269.01 1397.67,-2234 1473.85,-2172.45 1391.51,-2034.21 1468.39,-2018.22"></path>
|
|
<polygon fill="black" stroke="black" points="1468.72,-2023.46 1483.16,-2016.84 1467.74,-2013 1468.72,-2023.46"></polygon>
|
|
<text text-anchor="middle" x="1395.92" y="-2240.24" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1274.13,-2255.1C1329.83,-2255.1 1354.34,-2269.01 1397.67,-2234 1473.85,-2172.45 1391.51,-2034.21 1468.39,-2018.22" class="hover-path"></path></g>
|
|
<!-- 12->20 -->
|
|
<g id="12:361_7-20:98_7" class="edge" data-from="12:361_7" data-to="20:98_7">
|
|
|
|
<path fill="none" stroke="black" d="M1274.13,-2360.7C1471.48,-2360.7 1237.15,-2052.74 1394.17,-1933.2 1421.83,-1912.14 1438.66,-1936.7 1468.38,-1944.24"></path>
|
|
<polygon fill="black" stroke="black" points="1467.63,-1949.43 1483.17,-1946.11 1468.95,-1939.02 1467.63,-1949.43"></polygon>
|
|
<text text-anchor="middle" x="1395.92" y="-1937.4" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1274.13,-2360.7C1471.48,-2360.7 1237.15,-2052.74 1394.17,-1933.2 1421.83,-1912.14 1438.66,-1936.7 1468.38,-1944.24" class="hover-path"></path></g>
|
|
<!-- 13->13 -->
|
|
<g id="13:77_7-13:63_3" class="edge" data-from="13:77_7" data-to="13:63_3">
|
|
|
|
<path fill="none" stroke="black" d="M587.24,-2094.1C518.59,-2094.24 453.97,-2100.47 453.97,-2117.1 453.97,-2132.39 508.66,-2138.89 570.86,-2139.95"></path>
|
|
<polygon fill="black" stroke="black" points="570.68,-2145.2 585.73,-2140.09 570.78,-2134.7 570.68,-2145.2"></polygon>
|
|
<text text-anchor="middle" x="452.22" y="-2188.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M587.24,-2094.1C518.59,-2094.24 453.97,-2100.47 453.97,-2117.1 453.97,-2132.39 508.66,-2138.89 570.86,-2139.95" class="hover-path"></path></g>
|
|
<!-- 4->4 -->
|
|
<g id="4:58_7-4:262_7" class="edge" data-from="4:58_7" data-to="4:262_7">
|
|
|
|
<path fill="none" stroke="black" d="M587.24,-2670.79C518.59,-2664.46 453.97,-2641.72 453.97,-2581.1 453.97,-2525.33 508.66,-2501.62 570.86,-2493.26"></path>
|
|
<polygon fill="black" stroke="black" points="571.42,-2498.48 585.74,-2491.58 570.25,-2488.05 571.42,-2498.48"></polygon>
|
|
<text text-anchor="middle" x="452.22" y="-2556.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M587.24,-2670.79C518.59,-2664.46 453.97,-2641.72 453.97,-2581.1 453.97,-2525.33 508.66,-2501.62 570.86,-2493.26" class="hover-path"></path></g>
|
|
<!-- 4->4 -->
|
|
<g id="4:58_7-4:201_3" class="edge" data-from="4:58_7" data-to="4:201_3">
|
|
|
|
<path fill="none" stroke="black" d="M587.24,-2673.57C518.59,-2671.88 453.97,-2661.52 453.97,-2633.9 453.97,-2608.49 508.66,-2597.69 570.86,-2594.8"></path>
|
|
<polygon fill="black" stroke="black" points="570.93,-2600.06 585.73,-2594.28 570.56,-2589.56 570.93,-2600.06"></polygon>
|
|
<text text-anchor="middle" x="452.22" y="-2556.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M587.24,-2673.57C518.59,-2671.88 453.97,-2661.52 453.97,-2633.9 453.97,-2608.49 508.66,-2597.69 570.86,-2594.8" class="hover-path"></path></g>
|
|
<!-- 4->4 -->
|
|
<g id="4:58_7-4:299_3" class="edge" data-from="4:58_7" data-to="4:299_3">
|
|
|
|
<path fill="none" stroke="black" d="M587.24,-2668.93C518.59,-2659.51 453.97,-2628.52 453.97,-2545.9 453.97,-2469.73 508.89,-2437.45 571.26,-2425.49"></path>
|
|
<polygon fill="black" stroke="black" points="571.8,-2430.72 585.75,-2423.11 570.1,-2420.36 571.8,-2430.72"></polygon>
|
|
<text text-anchor="middle" x="452.22" y="-2556.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M587.24,-2668.93C518.59,-2659.51 453.97,-2628.52 453.97,-2545.9 453.97,-2469.73 508.89,-2437.45 571.26,-2425.49" class="hover-path"></path></g>
|
|
<!-- 4->4 -->
|
|
<g id="4:58_7-4:209_3" class="edge" data-from="4:58_7" data-to="4:209_3">
|
|
|
|
<path fill="none" stroke="black" d="M587.24,-2672.64C518.59,-2669.41 453.97,-2654.93 453.97,-2616.3 453.97,-2580.77 508.66,-2565.67 570.86,-2560.96"></path>
|
|
<polygon fill="black" stroke="black" points="571.08,-2566.2 585.73,-2560.05 570.44,-2555.72 571.08,-2566.2"></polygon>
|
|
<text text-anchor="middle" x="452.22" y="-2556.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M587.24,-2672.64C518.59,-2669.41 453.97,-2654.93 453.97,-2616.3 453.97,-2580.77 508.66,-2565.67 570.86,-2560.96" class="hover-path"></path></g>
|
|
<!-- 4->4 -->
|
|
<g id="4:58_7-4:229_3" class="edge" data-from="4:58_7" data-to="4:229_3">
|
|
|
|
<path fill="none" stroke="black" d="M587.24,-2671.72C518.59,-2666.93 453.97,-2648.32 453.97,-2598.7 453.97,-2553.05 508.66,-2533.64 570.86,-2527.11"></path>
|
|
<polygon fill="black" stroke="black" points="571.25,-2532.34 585.74,-2525.82 570.34,-2521.88 571.25,-2532.34"></polygon>
|
|
<text text-anchor="middle" x="452.22" y="-2556.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M587.24,-2671.72C518.59,-2666.93 453.97,-2648.32 453.97,-2598.7 453.97,-2553.05 508.66,-2533.64 570.86,-2527.11" class="hover-path"></path></g>
|
|
<!-- 4->4 -->
|
|
<g id="4:262_7-4:285_3" class="edge" data-from="4:262_7" data-to="4:285_3">
|
|
|
|
<path fill="none" stroke="black" d="M587.24,-2498.5C518.59,-2498.36 453.97,-2492.12 453.97,-2475.5 453.97,-2460.21 508.66,-2453.71 570.86,-2452.65"></path>
|
|
<polygon fill="black" stroke="black" points="570.78,-2457.9 585.73,-2452.51 570.68,-2447.4 570.78,-2457.9"></polygon>
|
|
<text text-anchor="middle" x="452.22" y="-2556.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M587.24,-2498.5C518.59,-2498.36 453.97,-2492.12 453.97,-2475.5 453.97,-2460.21 508.66,-2453.71 570.86,-2452.65" class="hover-path"></path></g>
|
|
<!-- 4->4 -->
|
|
<g id="4:58_7-4:93_7" class="edge" data-from="4:58_7" data-to="4:93_7">
|
|
|
|
<path fill="none" stroke="black" d="M587.24,-2674.5C518.59,-2674.36 453.97,-2668.12 453.97,-2651.5 453.97,-2636.21 508.66,-2629.71 570.86,-2628.65"></path>
|
|
<polygon fill="black" stroke="black" points="570.78,-2633.9 585.73,-2628.51 570.68,-2623.4 570.78,-2633.9"></polygon>
|
|
<text text-anchor="middle" x="452.22" y="-2556.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M587.24,-2674.5C518.59,-2674.36 453.97,-2668.12 453.97,-2651.5 453.97,-2636.21 508.66,-2629.71 570.86,-2628.65" class="hover-path"></path></g>
|
|
<!-- 4->4 -->
|
|
<g id="4:209_3-4:209_3" class="edge" data-from="4:209_3" data-to="4:209_3">
|
|
|
|
<path fill="none" stroke="black" d="M587.24,-2569.83C518.59,-2571.23 453.97,-2569.12 453.97,-2563.5 453.97,-2558.33 508.66,-2556.13 570.86,-2556.9"></path>
|
|
<polygon fill="black" stroke="black" points="570.65,-2562.15 585.73,-2557.15 570.82,-2551.65 570.65,-2562.15"></polygon>
|
|
<text text-anchor="middle" x="452.22" y="-2556.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M587.24,-2569.83C518.59,-2571.23 453.97,-2569.12 453.97,-2563.5 453.97,-2558.33 508.66,-2556.13 570.86,-2556.9" class="hover-path"></path></g>
|
|
<!-- 15->15 -->
|
|
<g id="15:104_7-15:95_3" class="edge" data-from="15:104_7" data-to="15:95_3">
|
|
|
|
<path fill="none" stroke="black" d="M1051.35,-2928.7C983.67,-2928.9 920.24,-2935.15 920.24,-2951.7 920.24,-2966.92 973.92,-2973.43 1035.21,-2974.53"></path>
|
|
<polygon fill="black" stroke="black" points="1034.79,-2979.78 1049.84,-2974.68 1034.9,-2969.28 1034.79,-2979.78"></polygon>
|
|
<text text-anchor="middle" x="918.49" y="-2997.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1051.35,-2928.7C983.67,-2928.9 920.24,-2935.15 920.24,-2951.7 920.24,-2966.92 973.92,-2973.43 1035.21,-2974.53" class="hover-path"></path></g>
|
|
<!-- 15->20 -->
|
|
<g id="15:175_7-20:98_7" class="edge" data-from="15:175_7" data-to="20:98_7">
|
|
|
|
<path fill="none" stroke="black" d="M1282.13,-2898.9C1324.33,-2898.9 1316.98,-2857.08 1330.17,-2817 1414.56,-2560.67 1336.27,-2476.77 1394.17,-2213.2 1419.79,-2096.6 1365,-1959.8 1468.26,-1947.24"></path>
|
|
<polygon fill="black" stroke="black" points="1468.48,-1952.48 1483.16,-1946.39 1467.89,-1942 1468.48,-1952.48"></polygon>
|
|
<text text-anchor="middle" x="1395.92" y="-2217.4" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1282.13,-2898.9C1324.33,-2898.9 1316.98,-2857.08 1330.17,-2817 1414.56,-2560.67 1336.27,-2476.77 1394.17,-2213.2 1419.79,-2096.6 1365,-1959.8 1468.26,-1947.24" class="hover-path"></path></g>
|
|
<!-- 15->20 -->
|
|
<g id="15:175_7-20:60_7" class="edge" data-from="15:175_7" data-to="20:60_7">
|
|
|
|
<path fill="none" stroke="black" d="M1282.13,-2898.9C1327.56,-2898.9 1373.91,-2728.34 1397.67,-2634 1430.08,-2505.3 1353.1,-2056.65 1468.38,-2019.19"></path>
|
|
<polygon fill="black" stroke="black" points="1469.14,-2024.39 1483.18,-2016.93 1467.55,-2014.01 1469.14,-2024.39"></polygon>
|
|
<text text-anchor="middle" x="1395.92" y="-2649.87" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1282.13,-2898.9C1327.56,-2898.9 1373.91,-2728.34 1397.67,-2634 1430.08,-2505.3 1353.1,-2056.65 1468.38,-2019.19" class="hover-path"></path></g>
|
|
<!-- 15->20 -->
|
|
<g id="15:175_7-20:72_7" class="edge" data-from="15:175_7" data-to="20:72_7">
|
|
|
|
<path fill="none" stroke="black" d="M1282.13,-2898.9C1324.33,-2898.9 1315.44,-2856.54 1330.17,-2817 1345.45,-2776.01 1424.56,-2093.4 1473.64,-1993.63"></path>
|
|
<polygon fill="black" stroke="black" points="1477.45,-1997.25 1483.65,-1982.62 1469.68,-1990.19 1477.45,-1997.25"></polygon>
|
|
<text text-anchor="middle" x="1395.92" y="-2386.86" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1282.13,-2898.9C1324.33,-2898.9 1315.44,-2856.54 1330.17,-2817 1345.45,-2776.01 1424.56,-2093.4 1473.64,-1993.63" class="hover-path"></path></g>
|
|
<!-- 20->20 -->
|
|
<g id="20:130_7-20:60_7" class="edge" data-from="20:130_7" data-to="20:60_7">
|
|
|
|
<path fill="none" stroke="black" d="M1485.7,-1907.95C1423.78,-1911.86 1367.3,-1926.66 1367.3,-1963.9 1367.3,-1997.86 1414.29,-2013.16 1469.53,-2018.56"></path>
|
|
<polygon fill="black" stroke="black" points="1468.82,-2023.77 1484.19,-2019.73 1469.66,-2013.3 1468.82,-2023.77"></polygon>
|
|
<text text-anchor="middle" x="1365.55" y="-1974.8" font-family="Times,serif" font-size="14.00"> </text>
|
|
<path fill="none" stroke="black" d="M1485.7,-1907.95C1423.78,-1911.86 1367.3,-1926.66 1367.3,-1963.9 1367.3,-1997.86 1414.29,-2013.16 1469.53,-2018.56" class="hover-path"></path></g>
|
|
<!-- 21 -->
|
|
<g id="21" class="node" data-path="/home/delandtj/Threefold/zosstorage/src/errors.rs">
|
|
|
|
<rect x="114.62000274658203" y="-2026.300048828125" width="261.99999237060547" height="134.60009765625"></rect>
|
|
<g id="21_11" class="title">
|
|
<text text-anchor="start" x="162.5" y="-1993.9" font-family="Arial" font-size="16.00">            errors.rs            </text>
|
|
|
|
</g>
|
|
<g id="21:8_9" data-kind="10" class="cell enum">
|
|
<rect x="130.6199951171875" y="-1975.0999755859375" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="218.06" y="-1957.7" font-family="Arial" font-weight="bold" font-size="16.00">E</text>
|
|
<text text-anchor="start" x="228.73" y="-1957.7" font-family="Arial" font-size="16.00">  Error</text>
|
|
|
|
</g>
|
|
<g id="21:55_9" data-kind="26" class="cell">
|
|
<rect x="130.6199951171875" y="-1939.9000244140625" width="230" height="27.2000732421875"></rect>
|
|
<text text-anchor="start" x="213.61" y="-1922.5" font-family="Arial" font-weight="bold" font-size="16.00">T</text>
|
|
<text text-anchor="start" x="223.38" y="-1922.5" font-family="Arial" font-size="16.00">  Result</text>
|
|
|
|
</g>
|
|
</g>
|
|
<!-- 22 -->
|
|
<g id="22" class="node" data-path="/home/delandtj/Threefold/zosstorage/src/lib.rs">
|
|
|
|
<rect x="114.62000274658203" y="-2588.89990234375" width="261.99999237060547" height="521.7998046875"></rect>
|
|
<g id="22_12" class="title">
|
|
<text text-anchor="start" x="175.38" y="-2556.5" font-family="Arial" font-size="16.00">            lib.rs            </text>
|
|
|
|
</g>
|
|
<g id="22:2_8" data-kind="2" class="cell module">
|
|
<rect x="130.6199951171875" y="-2537.699951171875" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="238.06" y="-2519.3" font-family="Arial" font-size="16.00">cli</text>
|
|
|
|
</g>
|
|
<g id="22:3_8" data-kind="2" class="cell module">
|
|
<rect x="130.6199951171875" y="-2502.5" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="219.82" y="-2484.1" font-family="Arial" font-size="16.00">logging</text>
|
|
|
|
</g>
|
|
<g id="22:4_8" data-kind="2" class="cell module">
|
|
<rect x="130.6199951171875" y="-2467.300048828125" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="224.27" y="-2448.9" font-family="Arial" font-size="16.00">config</text>
|
|
|
|
</g>
|
|
<g id="22:5_8" data-kind="2" class="cell module">
|
|
<rect x="130.6199951171875" y="-2432.10009765625" width="230" height="27.2001953125"></rect>
|
|
<text text-anchor="start" x="222.49" y="-2413.7" font-family="Arial" font-size="16.00">device</text>
|
|
|
|
</g>
|
|
<g id="22:6_8" data-kind="2" class="cell module">
|
|
<rect x="130.6199951171875" y="-2396.89990234375" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="217.16" y="-2378.5" font-family="Arial" font-size="16.00">partition</text>
|
|
|
|
</g>
|
|
<g id="22:7_8" data-kind="2" class="cell module">
|
|
<rect x="130.6199951171875" y="-2361.699951171875" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="239.39" y="-2343.3" font-family="Arial" font-size="16.00">fs</text>
|
|
|
|
</g>
|
|
<g id="22:8_8" data-kind="2" class="cell module">
|
|
<rect x="130.6199951171875" y="-2326.5" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="223.38" y="-2308.1" font-family="Arial" font-size="16.00">mount</text>
|
|
|
|
</g>
|
|
<g id="22:9_8" data-kind="2" class="cell module">
|
|
<rect x="130.6199951171875" y="-2291.300048828125" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="224.72" y="-2272.9" font-family="Arial" font-size="16.00">report</text>
|
|
|
|
</g>
|
|
<g id="22:10_8" data-kind="2" class="cell module">
|
|
<rect x="130.6199951171875" y="-2256.10009765625" width="230" height="27.2001953125"></rect>
|
|
<text text-anchor="start" x="202.93" y="-2237.7" font-family="Arial" font-size="16.00">orchestrator</text>
|
|
|
|
</g>
|
|
<g id="22:11_8" data-kind="2" class="cell module">
|
|
<rect x="130.6199951171875" y="-2220.89990234375" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="200.26" y="-2202.5" font-family="Arial" font-size="16.00">idempotency</text>
|
|
|
|
</g>
|
|
<g id="22:12_8" data-kind="2" class="cell module">
|
|
<rect x="130.6199951171875" y="-2185.699951171875" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="235.39" y="-2167.3" font-family="Arial" font-size="16.00">util</text>
|
|
|
|
</g>
|
|
<g id="22:13_8" data-kind="2" class="cell module">
|
|
<rect x="130.6199951171875" y="-2150.5" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="224.73" y="-2132.1" font-family="Arial" font-size="16.00">errors</text>
|
|
|
|
</g>
|
|
<g id="22:14_8" data-kind="2" class="cell module">
|
|
<rect x="130.6199951171875" y="-2115.300048828125" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="226.5" y="-2096.9" font-family="Arial" font-size="16.00">types</text>
|
|
|
|
</g>
|
|
</g>
|
|
<!-- 23 -->
|
|
<g id="23" class="node" data-path="/home/delandtj/Threefold/zosstorage/src/types.rs">
|
|
|
|
<rect x="97.12999725341797" y="-3331.89990234375" width="296.97000885009766" height="713.7998046875"></rect>
|
|
<g id="23_13" class="title">
|
|
<text text-anchor="start" x="164.27" y="-3299.5" font-family="Arial" font-size="16.00">            types.rs            </text>
|
|
|
|
</g>
|
|
<g id="23:21_11" data-kind="23" class="cell struct">
|
|
<rect x="113.12999725341797" y="-3280.699951171875" width="264.97000885009766" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="184.24" y="-3263.3" font-family="Arial" font-weight="bold" font-size="16.00">S</text>
|
|
<text text-anchor="start" x="194.91" y="-3263.3" font-family="Arial" font-size="16.00">  LoggingConfig</text>
|
|
|
|
</g>
|
|
<g id="23:29_11" data-kind="23" class="cell struct">
|
|
<rect x="113.12999725341797" y="-3245.5" width="264.97000885009766" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="178.47" y="-3228.1" font-family="Arial" font-weight="bold" font-size="16.00">S</text>
|
|
<text text-anchor="start" x="189.14" y="-3228.1" font-family="Arial" font-size="16.00">  DeviceSelection</text>
|
|
|
|
</g>
|
|
<g id="23:43_9" data-kind="10" class="cell enum">
|
|
<rect x="113.12999725341797" y="-3210.300048828125" width="264.97000885009766" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="202.93" y="-3192.9" font-family="Arial" font-weight="bold" font-size="16.00">E</text>
|
|
<text text-anchor="start" x="213.6" y="-3192.9" font-family="Arial" font-size="16.00">  Topology</text>
|
|
|
|
</g>
|
|
<g id="23:64_27" data-kind="19" class="cell">
|
|
<rect x="113.12999725341797" y="-3175.10009765625" width="264.97000885009766" height="78.400146484375"></rect>
|
|
<text text-anchor="start" x="125.13" y="-3148.7" font-family="Arial" font-size="16.00">impl std::fmt::Display for Topology</text>
|
|
<g id="23:65_7" data-kind="6" class="cell method">
|
|
<rect x="121.12999725341797" y="-3131.89990234375" width="248.97000885009766" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="234.51" y="-3113.5" font-family="Arial" font-size="16.00">fmt</text>
|
|
|
|
</g>
|
|
|
|
</g>
|
|
<g id="23:79_11" data-kind="23" class="cell struct">
|
|
<rect x="113.12999725341797" y="-3088.699951171875" width="264.97000885009766" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="185.58" y="-3071.3" font-family="Arial" font-weight="bold" font-size="16.00">S</text>
|
|
<text text-anchor="start" x="196.25" y="-3071.3" font-family="Arial" font-size="16.00">  BiosBootSpec</text>
|
|
|
|
</g>
|
|
<g id="23:89_11" data-kind="23" class="cell struct">
|
|
<rect x="113.12999725341797" y="-3053.5" width="264.97000885009766" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="203.82" y="-3036.1" font-family="Arial" font-weight="bold" font-size="16.00">S</text>
|
|
<text text-anchor="start" x="214.49" y="-3036.1" font-family="Arial" font-size="16.00">  EspSpec</text>
|
|
|
|
</g>
|
|
<g id="23:99_11" data-kind="23" class="cell struct">
|
|
<rect x="113.12999725341797" y="-3018.300048828125" width="264.97000885009766" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="200.7" y="-3000.9" font-family="Arial" font-weight="bold" font-size="16.00">S</text>
|
|
<text text-anchor="start" x="211.38" y="-3000.9" font-family="Arial" font-size="16.00">  DataSpec</text>
|
|
|
|
</g>
|
|
<g id="23:105_11" data-kind="23" class="cell struct">
|
|
<rect x="113.12999725341797" y="-2983.10009765625" width="264.97000885009766" height="27.2001953125"></rect>
|
|
<text text-anchor="start" x="194.48" y="-2965.7" font-family="Arial" font-weight="bold" font-size="16.00">S</text>
|
|
<text text-anchor="start" x="205.15" y="-2965.7" font-family="Arial" font-size="16.00">  CacheSpec</text>
|
|
|
|
</g>
|
|
<g id="23:111_11" data-kind="23" class="cell struct">
|
|
<rect x="113.12999725341797" y="-2947.89990234375" width="264.97000885009766" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="195.81" y="-2930.5" font-family="Arial" font-weight="bold" font-size="16.00">S</text>
|
|
<text text-anchor="start" x="206.48" y="-2930.5" font-family="Arial" font-size="16.00">  Partitioning</text>
|
|
|
|
</g>
|
|
<g id="23:127_11" data-kind="23" class="cell struct">
|
|
<rect x="113.12999725341797" y="-2912.699951171875" width="264.97000885009766" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="191.82" y="-2895.3" font-family="Arial" font-weight="bold" font-size="16.00">S</text>
|
|
<text text-anchor="start" x="202.49" y="-2895.3" font-family="Arial" font-size="16.00">  BtrfsOptions</text>
|
|
|
|
</g>
|
|
<g id="23:137_11" data-kind="23" class="cell struct">
|
|
<rect x="113.12999725341797" y="-2877.5" width="264.97000885009766" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="175.36" y="-2860.1" font-family="Arial" font-weight="bold" font-size="16.00">S</text>
|
|
<text text-anchor="start" x="186.03" y="-2860.1" font-family="Arial" font-size="16.00">  BcachefsOptions</text>
|
|
|
|
</g>
|
|
<g id="23:149_11" data-kind="23" class="cell struct">
|
|
<rect x="113.12999725341797" y="-2842.300048828125" width="264.97000885009766" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="194.04" y="-2824.9" font-family="Arial" font-weight="bold" font-size="16.00">S</text>
|
|
<text text-anchor="start" x="204.71" y="-2824.9" font-family="Arial" font-size="16.00">  VfatOptions</text>
|
|
|
|
</g>
|
|
<g id="23:155_11" data-kind="23" class="cell struct">
|
|
<rect x="113.12999725341797" y="-2807.10009765625" width="264.97000885009766" height="27.2001953125"></rect>
|
|
<text text-anchor="start" x="199.38" y="-2789.7" font-family="Arial" font-weight="bold" font-size="16.00">S</text>
|
|
<text text-anchor="start" x="210.05" y="-2789.7" font-family="Arial" font-size="16.00">  FsOptions</text>
|
|
|
|
</g>
|
|
<g id="23:166_9" data-kind="10" class="cell enum">
|
|
<rect x="113.12999725341797" y="-2771.89990234375" width="264.97000885009766" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="168.24" y="-2754.5" font-family="Arial" font-weight="bold" font-size="16.00">E</text>
|
|
<text text-anchor="start" x="178.91" y="-2754.5" font-family="Arial" font-size="16.00">  MountSchemeKind</text>
|
|
|
|
</g>
|
|
<g id="23:174_11" data-kind="23" class="cell struct">
|
|
<rect x="113.12999725341797" y="-2736.699951171875" width="264.97000885009766" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="184.25" y="-2719.3" font-family="Arial" font-weight="bold" font-size="16.00">S</text>
|
|
<text text-anchor="start" x="194.93" y="-2719.3" font-family="Arial" font-size="16.00">  MountScheme</text>
|
|
|
|
</g>
|
|
<g id="23:184_11" data-kind="23" class="cell struct">
|
|
<rect x="113.12999725341797" y="-2701.5" width="264.97000885009766" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="184.25" y="-2684.1" font-family="Arial" font-weight="bold" font-size="16.00">S</text>
|
|
<text text-anchor="start" x="194.93" y="-2684.1" font-family="Arial" font-size="16.00">  ReportOptions</text>
|
|
|
|
</g>
|
|
<g id="23:190_11" data-kind="23" class="cell struct">
|
|
<rect x="113.12999725341797" y="-2666.300048828125" width="264.97000885009766" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="212.71" y="-2648.9" font-family="Arial" font-weight="bold" font-size="16.00">S</text>
|
|
<text text-anchor="start" x="223.38" y="-2648.9" font-family="Arial" font-size="16.00">  Config</text>
|
|
|
|
</g>
|
|
</g>
|
|
<!-- 3 -->
|
|
<g id="3" class="node" data-path="/home/delandtj/Threefold/zosstorage/src/cli/mod.rs">
|
|
|
|
<rect x="571.0999755859375" y="-3292.699951171875" width="262" height="99.39990234375"></rect>
|
|
<g id="3_14" class="title">
|
|
<text text-anchor="start" x="624.3" y="-3260.3" font-family="Arial" font-size="16.00">            mod.rs            </text>
|
|
|
|
</g>
|
|
<g id="3:10_8" data-kind="2" class="cell module">
|
|
<rect x="587.0999755859375" y="-3241.5" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="686.54" y="-3223.1" font-family="Arial" font-size="16.00">args</text>
|
|
|
|
</g>
|
|
</g>
|
|
<!-- 5 -->
|
|
<g id="5" class="node" data-path="/home/delandtj/Threefold/zosstorage/src/config/mod.rs">
|
|
|
|
<rect x="571.0999755859375" y="-2851.699951171875" width="262" height="99.39990234375"></rect>
|
|
<g id="5_15" class="title">
|
|
<text text-anchor="start" x="624.3" y="-2819.3" font-family="Arial" font-size="16.00">            mod.rs            </text>
|
|
|
|
</g>
|
|
<g id="5:11_8" data-kind="2" class="cell module">
|
|
<rect x="587.0999755859375" y="-2800.5" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="679.86" y="-2782.1" font-family="Arial" font-size="16.00">loader</text>
|
|
|
|
</g>
|
|
</g>
|
|
<!-- 8 -->
|
|
<g id="8" class="node" data-path="/home/delandtj/Threefold/zosstorage/src/device/mod.rs">
|
|
|
|
<rect x="1035.1300048828125" y="-1457.699951171875" width="262" height="99.39990234375"></rect>
|
|
<g id="8_16" class="title">
|
|
<text text-anchor="start" x="1088.34" y="-1425.3" font-family="Arial" font-size="16.00">            mod.rs            </text>
|
|
|
|
</g>
|
|
<g id="8:9_8" data-kind="2" class="cell module">
|
|
<rect x="1051.1300048828125" y="-1406.5" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="1132.34" y="-1388.1" font-family="Arial" font-size="16.00">discovery</text>
|
|
|
|
</g>
|
|
</g>
|
|
<!-- 9 -->
|
|
<g id="9" class="node" data-path="/home/delandtj/Threefold/zosstorage/src/fs/mod.rs">
|
|
|
|
<rect x="1035.1300048828125" y="-2109.699951171875" width="262" height="99.39990234375"></rect>
|
|
<g id="9_17" class="title">
|
|
<text text-anchor="start" x="1088.34" y="-2077.3" font-family="Arial" font-size="16.00">            mod.rs            </text>
|
|
|
|
</g>
|
|
<g id="9:9_8" data-kind="2" class="cell module">
|
|
<rect x="1051.1300048828125" y="-2058.5" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="1151.01" y="-2040.1" font-family="Arial" font-size="16.00">plan</text>
|
|
|
|
</g>
|
|
</g>
|
|
<!-- 14 -->
|
|
<g id="14" class="node" data-path="/home/delandtj/Threefold/zosstorage/src/mount/mod.rs">
|
|
|
|
<rect x="1035.1300048828125" y="-3292.699951171875" width="262" height="99.39990234375"></rect>
|
|
<g id="14_18" class="title">
|
|
<text text-anchor="start" x="1088.34" y="-3260.3" font-family="Arial" font-size="16.00">            mod.rs            </text>
|
|
|
|
</g>
|
|
<g id="14:9_8" data-kind="2" class="cell module">
|
|
<rect x="1051.1300048828125" y="-3241.5" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="1153.23" y="-3223.1" font-family="Arial" font-size="16.00">ops</text>
|
|
|
|
</g>
|
|
</g>
|
|
<!-- 16 -->
|
|
<g id="16" class="node" data-path="/home/delandtj/Threefold/zosstorage/src/orchestrator/mod.rs">
|
|
|
|
<rect x="571.0999755859375" y="-1997.699951171875" width="262" height="99.39990234375"></rect>
|
|
<g id="16_19" class="title">
|
|
<text text-anchor="start" x="624.3" y="-1965.3" font-family="Arial" font-size="16.00">            mod.rs            </text>
|
|
|
|
</g>
|
|
<g id="16:4_8" data-kind="2" class="cell module">
|
|
<rect x="587.0999755859375" y="-1946.5" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="690.54" y="-1928.1" font-family="Arial" font-size="16.00">run</text>
|
|
|
|
</g>
|
|
</g>
|
|
<!-- 17 -->
|
|
<g id="17" class="node" data-path="/home/delandtj/Threefold/zosstorage/src/partition/mod.rs">
|
|
|
|
<rect x="1035.1300048828125" y="-2761.699951171875" width="262" height="99.39990234375"></rect>
|
|
<g id="17_20" class="title">
|
|
<text text-anchor="start" x="1088.34" y="-2729.3" font-family="Arial" font-size="16.00">            mod.rs            </text>
|
|
|
|
</g>
|
|
<g id="17:9_8" data-kind="2" class="cell module">
|
|
<rect x="1051.1300048828125" y="-2710.5" width="230" height="27.199951171875"></rect>
|
|
<text text-anchor="start" x="1151.01" y="-2692.1" font-family="Arial" font-size="16.00">plan</text>
|
|
|
|
</g>
|
|
</g>
|
|
<!-- 18 -->
|
|
<g id="18" class="node" data-path="/home/delandtj/Threefold/zosstorage/src/report/mod.rs">
|
|
|
|
<rect x="114.62000274658203" y="-784.7000122070312" width="261.99999237060547" height="99.4000244140625"></rect>
|
|
<g id="18_21" class="title">
|
|
<text text-anchor="start" x="167.82" y="-752.3" font-family="Arial" font-size="16.00">            mod.rs            </text>
|
|
|
|
</g>
|
|
<g id="18:9_8" data-kind="2" class="cell module">
|
|
<rect x="130.6199951171875" y="-733.5" width="230" height="27.20001220703125"></rect>
|
|
<text text-anchor="start" x="228.27" y="-715.1" font-family="Arial" font-size="16.00">state</text>
|
|
|
|
</g>
|
|
</g>
|
|
<!-- 19 -->
|
|
<g id="19" class="node" data-path="/home/delandtj/Threefold/zosstorage/src/report/state.rs">
|
|
|
|
<rect x="114.62000274658203" y="-972.9000244140625" width="261.99999237060547" height="169.800048828125"></rect>
|
|
<g id="19_22" class="title">
|
|
<text text-anchor="start" x="166.04" y="-940.5" font-family="Arial" font-size="16.00">            state.rs            </text>
|
|
|
|
</g>
|
|
<g id="19:43_11" data-kind="23" class="cell struct">
|
|
<rect x="130.6199951171875" y="-921.7000122070312" width="230" height="27.20001220703125"></rect>
|
|
<text text-anchor="start" x="193.14" y="-904.3" font-family="Arial" font-weight="bold" font-size="16.00">S</text>
|
|
<text text-anchor="start" x="203.82" y="-904.3" font-family="Arial" font-size="16.00">  StateReport</text>
|
|
|
|
</g>
|
|
<g id="19:66_7" data-kind="12" class="cell function">
|
|
<rect x="130.6199951171875" y="-886.5" width="230" height="27.20001220703125"></rect>
|
|
<text text-anchor="start" x="203.37" y="-868.1" font-family="Arial" font-size="16.00">build_report</text>
|
|
|
|
</g>
|
|
<g id="19:77_7" data-kind="12" class="cell function">
|
|
<rect x="130.6199951171875" y="-851.2999877929688" width="230" height="27.20001220703125"></rect>
|
|
<text text-anchor="start" x="203.38" y="-832.9" font-family="Arial" font-size="16.00">write_report</text>
|
|
|
|
</g>
|
|
</g>
|
|
<g id="faded-group"></g></g>
|
|
<defs><filter id="shadow"><feDropShadow dx="0" dy="0" stdDeviation="4" flood-opacity="0.5"></feDropShadow></filter>
|
|
<linearGradient id="highlightGradient">
|
|
<stop offset="0%" stop-color="var(--edge-incoming-color)"></stop>
|
|
<stop offset="100%" stop-color="var(--edge-outgoing-color)"></stop>
|
|
</linearGradient></defs>
|
|
</svg>
|
|
|
|
<script type="module">
|
|
var __defProp = Object.defineProperty;
|
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: !0 });
|
|
function getDefaultExportFromCjs(x) {
|
|
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x.default : x;
|
|
}
|
|
__name(getDefaultExportFromCjs, "getDefaultExportFromCjs");
|
|
var wheel = { exports: {} }, hasRequiredWheel;
|
|
function requireWheel() {
|
|
if (hasRequiredWheel) return wheel.exports;
|
|
hasRequiredWheel = 1, wheel.exports = addWheelListener, wheel.exports.addWheelListener = addWheelListener, wheel.exports.removeWheelListener = removeWheelListener;
|
|
function addWheelListener(element, listener, useCapture) {
|
|
element.addEventListener("wheel", listener, useCapture);
|
|
}
|
|
__name(addWheelListener, "addWheelListener");
|
|
function removeWheelListener(element, listener, useCapture) {
|
|
element.removeEventListener("wheel", listener, useCapture);
|
|
}
|
|
return __name(removeWheelListener, "removeWheelListener"), wheel.exports;
|
|
}
|
|
__name(requireWheel, "requireWheel");
|
|
var amator = { exports: {} }, src, hasRequiredSrc;
|
|
function requireSrc() {
|
|
if (hasRequiredSrc) return src;
|
|
hasRequiredSrc = 1;
|
|
var NEWTON_ITERATIONS = 4, NEWTON_MIN_SLOPE = 1e-3, SUBDIVISION_PRECISION = 1e-7, SUBDIVISION_MAX_ITERATIONS = 10, kSplineTableSize = 11, kSampleStepSize = 1 / (kSplineTableSize - 1), float32ArraySupported = typeof Float32Array == "function";
|
|
function A(aA1, aA2) {
|
|
return 1 - 3 * aA2 + 3 * aA1;
|
|
}
|
|
__name(A, "A");
|
|
function B(aA1, aA2) {
|
|
return 3 * aA2 - 6 * aA1;
|
|
}
|
|
__name(B, "B");
|
|
function C(aA1) {
|
|
return 3 * aA1;
|
|
}
|
|
__name(C, "C");
|
|
function calcBezier(aT, aA1, aA2) {
|
|
return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;
|
|
}
|
|
__name(calcBezier, "calcBezier");
|
|
function getSlope(aT, aA1, aA2) {
|
|
return 3 * A(aA1, aA2) * aT * aT + 2 * B(aA1, aA2) * aT + C(aA1);
|
|
}
|
|
__name(getSlope, "getSlope");
|
|
function binarySubdivide(aX, aA, aB, mX1, mX2) {
|
|
var currentX, currentT, i = 0;
|
|
do
|
|
currentT = aA + (aB - aA) / 2, currentX = calcBezier(currentT, mX1, mX2) - aX, currentX > 0 ? aB = currentT : aA = currentT;
|
|
while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);
|
|
return currentT;
|
|
}
|
|
__name(binarySubdivide, "binarySubdivide");
|
|
function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {
|
|
for (var i = 0; i < NEWTON_ITERATIONS; ++i) {
|
|
var currentSlope = getSlope(aGuessT, mX1, mX2);
|
|
if (currentSlope === 0)
|
|
return aGuessT;
|
|
var currentX = calcBezier(aGuessT, mX1, mX2) - aX;
|
|
aGuessT -= currentX / currentSlope;
|
|
}
|
|
return aGuessT;
|
|
}
|
|
__name(newtonRaphsonIterate, "newtonRaphsonIterate");
|
|
function LinearEasing(x) {
|
|
return x;
|
|
}
|
|
return __name(LinearEasing, "LinearEasing"), src = /* @__PURE__ */ __name(function(mX1, mY1, mX2, mY2) {
|
|
if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1))
|
|
throw new Error("bezier x values must be in [0, 1] range");
|
|
if (mX1 === mY1 && mX2 === mY2)
|
|
return LinearEasing;
|
|
for (var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize), i = 0; i < kSplineTableSize; ++i)
|
|
sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);
|
|
function getTForX(aX) {
|
|
for (var intervalStart = 0, currentSample = 1, lastSample = kSplineTableSize - 1; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample)
|
|
intervalStart += kSampleStepSize;
|
|
--currentSample;
|
|
var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]), guessForT = intervalStart + dist * kSampleStepSize, initialSlope = getSlope(guessForT, mX1, mX2);
|
|
return initialSlope >= NEWTON_MIN_SLOPE ? newtonRaphsonIterate(aX, guessForT, mX1, mX2) : initialSlope === 0 ? guessForT : binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);
|
|
}
|
|
return __name(getTForX, "getTForX"), /* @__PURE__ */ __name(function(x) {
|
|
return x === 0 ? 0 : x === 1 ? 1 : calcBezier(getTForX(x), mY1, mY2);
|
|
}, "BezierEasing");
|
|
}, "bezier"), src;
|
|
}
|
|
__name(requireSrc, "requireSrc");
|
|
var hasRequiredAmator;
|
|
function requireAmator() {
|
|
if (hasRequiredAmator) return amator.exports;
|
|
hasRequiredAmator = 1;
|
|
var BezierEasing = requireSrc(), animations = {
|
|
ease: BezierEasing(0.25, 0.1, 0.25, 1),
|
|
easeIn: BezierEasing(0.42, 0, 1, 1),
|
|
easeOut: BezierEasing(0, 0, 0.58, 1),
|
|
easeInOut: BezierEasing(0.42, 0, 0.58, 1),
|
|
linear: BezierEasing(0, 0, 1, 1)
|
|
};
|
|
amator.exports = animate, amator.exports.makeAggregateRaf = makeAggregateRaf, amator.exports.sharedScheduler = makeAggregateRaf();
|
|
function animate(source, target, options) {
|
|
var start = /* @__PURE__ */ Object.create(null), diff = /* @__PURE__ */ Object.create(null);
|
|
options = options || {};
|
|
var easing = typeof options.easing == "function" ? options.easing : animations[options.easing];
|
|
easing || (options.easing && console.warn("Unknown easing function in amator: " + options.easing), easing = animations.ease);
|
|
var step = typeof options.step == "function" ? options.step : noop, done = typeof options.done == "function" ? options.done : noop, scheduler = getScheduler(options.scheduler), keys = Object.keys(target);
|
|
keys.forEach(function(key) {
|
|
start[key] = source[key], diff[key] = target[key] - source[key];
|
|
});
|
|
var durationInMs = typeof options.duration == "number" ? options.duration : 400, durationInFrames = Math.max(1, durationInMs * 0.06), previousAnimationId, frame = 0;
|
|
return previousAnimationId = scheduler.next(loop), {
|
|
cancel
|
|
};
|
|
function cancel() {
|
|
scheduler.cancel(previousAnimationId), previousAnimationId = 0;
|
|
}
|
|
__name(cancel, "cancel");
|
|
function loop() {
|
|
var t = easing(frame / durationInFrames);
|
|
frame += 1, setValues(t), frame <= durationInFrames ? (previousAnimationId = scheduler.next(loop), step(source)) : (previousAnimationId = 0, setTimeout(function() {
|
|
done(source);
|
|
}, 0));
|
|
}
|
|
__name(loop, "loop");
|
|
function setValues(t) {
|
|
keys.forEach(function(key) {
|
|
source[key] = diff[key] * t + start[key];
|
|
});
|
|
}
|
|
__name(setValues, "setValues");
|
|
}
|
|
__name(animate, "animate");
|
|
function noop() {
|
|
}
|
|
__name(noop, "noop");
|
|
function getScheduler(scheduler) {
|
|
if (!scheduler) {
|
|
var canRaf = typeof window < "u" && window.requestAnimationFrame;
|
|
return canRaf ? rafScheduler() : timeoutScheduler();
|
|
}
|
|
if (typeof scheduler.next != "function") throw new Error("Scheduler is supposed to have next(cb) function");
|
|
if (typeof scheduler.cancel != "function") throw new Error("Scheduler is supposed to have cancel(handle) function");
|
|
return scheduler;
|
|
}
|
|
__name(getScheduler, "getScheduler");
|
|
function rafScheduler() {
|
|
return {
|
|
next: window.requestAnimationFrame.bind(window),
|
|
cancel: window.cancelAnimationFrame.bind(window)
|
|
};
|
|
}
|
|
__name(rafScheduler, "rafScheduler");
|
|
function timeoutScheduler() {
|
|
return {
|
|
next: /* @__PURE__ */ __name(function(cb) {
|
|
return setTimeout(cb, 1e3 / 60);
|
|
}, "next"),
|
|
cancel: /* @__PURE__ */ __name(function(id) {
|
|
return clearTimeout(id);
|
|
}, "cancel")
|
|
};
|
|
}
|
|
__name(timeoutScheduler, "timeoutScheduler");
|
|
function makeAggregateRaf() {
|
|
var frontBuffer = /* @__PURE__ */ new Set(), backBuffer = /* @__PURE__ */ new Set(), frameToken = 0;
|
|
return {
|
|
next,
|
|
cancel: next,
|
|
clearAll
|
|
};
|
|
function clearAll() {
|
|
frontBuffer.clear(), backBuffer.clear(), cancelAnimationFrame(frameToken), frameToken = 0;
|
|
}
|
|
function next(callback) {
|
|
backBuffer.add(callback), renderNextFrame();
|
|
}
|
|
function renderNextFrame() {
|
|
frameToken || (frameToken = requestAnimationFrame(renderFrame));
|
|
}
|
|
function renderFrame() {
|
|
frameToken = 0;
|
|
var t = backBuffer;
|
|
backBuffer = frontBuffer, frontBuffer = t, frontBuffer.forEach(function(callback) {
|
|
callback();
|
|
}), frontBuffer.clear();
|
|
}
|
|
}
|
|
return __name(makeAggregateRaf, "makeAggregateRaf"), amator.exports;
|
|
}
|
|
__name(requireAmator, "requireAmator");
|
|
var ngraph_events, hasRequiredNgraph_events;
|
|
function requireNgraph_events() {
|
|
if (hasRequiredNgraph_events) return ngraph_events;
|
|
hasRequiredNgraph_events = 1, ngraph_events = /* @__PURE__ */ __name(function(subject) {
|
|
validateSubject(subject);
|
|
var eventsStorage = createEventsStorage(subject);
|
|
return subject.on = eventsStorage.on, subject.off = eventsStorage.off, subject.fire = eventsStorage.fire, subject;
|
|
}, "eventify");
|
|
function createEventsStorage(subject) {
|
|
var registeredEvents = /* @__PURE__ */ Object.create(null);
|
|
return {
|
|
on: /* @__PURE__ */ __name(function(eventName, callback, ctx) {
|
|
if (typeof callback != "function")
|
|
throw new Error("callback is expected to be a function");
|
|
var handlers = registeredEvents[eventName];
|
|
return handlers || (handlers = registeredEvents[eventName] = []), handlers.push({ callback, ctx }), subject;
|
|
}, "on"),
|
|
off: /* @__PURE__ */ __name(function(eventName, callback) {
|
|
var wantToRemoveAll = typeof eventName > "u";
|
|
if (wantToRemoveAll)
|
|
return registeredEvents = /* @__PURE__ */ Object.create(null), subject;
|
|
if (registeredEvents[eventName]) {
|
|
var deleteAllCallbacksForEvent = typeof callback != "function";
|
|
if (deleteAllCallbacksForEvent)
|
|
delete registeredEvents[eventName];
|
|
else
|
|
for (var callbacks = registeredEvents[eventName], i = 0; i < callbacks.length; ++i)
|
|
callbacks[i].callback === callback && callbacks.splice(i, 1);
|
|
}
|
|
return subject;
|
|
}, "off"),
|
|
fire: /* @__PURE__ */ __name(function(eventName) {
|
|
var callbacks = registeredEvents[eventName];
|
|
if (!callbacks)
|
|
return subject;
|
|
var fireArguments;
|
|
arguments.length > 1 && (fireArguments = Array.prototype.splice.call(arguments, 1));
|
|
for (var i = 0; i < callbacks.length; ++i) {
|
|
var callbackInfo = callbacks[i];
|
|
callbackInfo.callback.apply(callbackInfo.ctx, fireArguments);
|
|
}
|
|
return subject;
|
|
}, "fire")
|
|
};
|
|
}
|
|
__name(createEventsStorage, "createEventsStorage");
|
|
function validateSubject(subject) {
|
|
if (!subject)
|
|
throw new Error("Eventify cannot use falsy object as events subject");
|
|
for (var reservedWords = ["on", "fire", "off"], i = 0; i < reservedWords.length; ++i)
|
|
if (subject.hasOwnProperty(reservedWords[i]))
|
|
throw new Error("Subject cannot be eventified, since it already has property '" + reservedWords[i] + "'");
|
|
}
|
|
return __name(validateSubject, "validateSubject"), ngraph_events;
|
|
}
|
|
__name(requireNgraph_events, "requireNgraph_events");
|
|
var kinetic_1, hasRequiredKinetic;
|
|
function requireKinetic() {
|
|
if (hasRequiredKinetic) return kinetic_1;
|
|
hasRequiredKinetic = 1, kinetic_1 = kinetic;
|
|
function kinetic(getPoint, scroll, settings) {
|
|
typeof settings != "object" && (settings = {});
|
|
var minVelocity = typeof settings.minVelocity == "number" ? settings.minVelocity : 5, amplitude = typeof settings.amplitude == "number" ? settings.amplitude : 0.25, cancelAnimationFrame2 = typeof settings.cancelAnimationFrame == "function" ? settings.cancelAnimationFrame : getCancelAnimationFrame(), requestAnimationFrame2 = typeof settings.requestAnimationFrame == "function" ? settings.requestAnimationFrame : getRequestAnimationFrame(), lastPoint, timestamp, timeConstant = 342, ticker, vx, targetX, ax, vy, targetY, ay, raf;
|
|
return {
|
|
start,
|
|
stop,
|
|
cancel: dispose
|
|
};
|
|
function dispose() {
|
|
cancelAnimationFrame2(ticker), cancelAnimationFrame2(raf);
|
|
}
|
|
function start() {
|
|
lastPoint = getPoint(), ax = ay = vx = vy = 0, timestamp = /* @__PURE__ */ new Date(), cancelAnimationFrame2(ticker), cancelAnimationFrame2(raf), ticker = requestAnimationFrame2(track);
|
|
}
|
|
function track() {
|
|
var now = Date.now(), elapsed = now - timestamp;
|
|
timestamp = now;
|
|
var currentPoint = getPoint(), dx = currentPoint.x - lastPoint.x, dy = currentPoint.y - lastPoint.y;
|
|
lastPoint = currentPoint;
|
|
var dt = 1e3 / (1 + elapsed);
|
|
vx = 0.8 * dx * dt + 0.2 * vx, vy = 0.8 * dy * dt + 0.2 * vy, ticker = requestAnimationFrame2(track);
|
|
}
|
|
function stop() {
|
|
cancelAnimationFrame2(ticker), cancelAnimationFrame2(raf);
|
|
var currentPoint = getPoint();
|
|
targetX = currentPoint.x, targetY = currentPoint.y, timestamp = Date.now(), (vx < -minVelocity || vx > minVelocity) && (ax = amplitude * vx, targetX += ax), (vy < -minVelocity || vy > minVelocity) && (ay = amplitude * vy, targetY += ay), raf = requestAnimationFrame2(autoScroll);
|
|
}
|
|
function autoScroll() {
|
|
var elapsed = Date.now() - timestamp, moving = !1, dx = 0, dy = 0;
|
|
ax && (dx = -ax * Math.exp(-elapsed / timeConstant), dx > 0.5 || dx < -0.5 ? moving = !0 : dx = ax = 0), ay && (dy = -ay * Math.exp(-elapsed / timeConstant), dy > 0.5 || dy < -0.5 ? moving = !0 : dy = ay = 0), moving && (scroll(targetX + dx, targetY + dy), raf = requestAnimationFrame2(autoScroll));
|
|
}
|
|
}
|
|
__name(kinetic, "kinetic");
|
|
function getCancelAnimationFrame() {
|
|
return typeof cancelAnimationFrame == "function" ? cancelAnimationFrame : clearTimeout;
|
|
}
|
|
__name(getCancelAnimationFrame, "getCancelAnimationFrame");
|
|
function getRequestAnimationFrame() {
|
|
return typeof requestAnimationFrame == "function" ? requestAnimationFrame : function(handler) {
|
|
return setTimeout(handler, 16);
|
|
};
|
|
}
|
|
return __name(getRequestAnimationFrame, "getRequestAnimationFrame"), kinetic_1;
|
|
}
|
|
__name(requireKinetic, "requireKinetic");
|
|
var createTextSelectionInterceptor_1, hasRequiredCreateTextSelectionInterceptor;
|
|
function requireCreateTextSelectionInterceptor() {
|
|
if (hasRequiredCreateTextSelectionInterceptor) return createTextSelectionInterceptor_1;
|
|
hasRequiredCreateTextSelectionInterceptor = 1, createTextSelectionInterceptor_1 = createTextSelectionInterceptor;
|
|
function createTextSelectionInterceptor(useFake) {
|
|
if (useFake)
|
|
return {
|
|
capture: noop,
|
|
release: noop
|
|
};
|
|
var dragObject, prevSelectStart, prevDragStart, wasCaptured = !1;
|
|
return {
|
|
capture,
|
|
release
|
|
};
|
|
function capture(domObject) {
|
|
wasCaptured = !0, prevSelectStart = window.document.onselectstart, prevDragStart = window.document.ondragstart, window.document.onselectstart = disabled, dragObject = domObject, dragObject.ondragstart = disabled;
|
|
}
|
|
function release() {
|
|
wasCaptured && (wasCaptured = !1, window.document.onselectstart = prevSelectStart, dragObject && (dragObject.ondragstart = prevDragStart));
|
|
}
|
|
}
|
|
__name(createTextSelectionInterceptor, "createTextSelectionInterceptor");
|
|
function disabled(e) {
|
|
return e.stopPropagation(), !1;
|
|
}
|
|
__name(disabled, "disabled");
|
|
function noop() {
|
|
}
|
|
return __name(noop, "noop"), createTextSelectionInterceptor_1;
|
|
}
|
|
__name(requireCreateTextSelectionInterceptor, "requireCreateTextSelectionInterceptor");
|
|
var transform, hasRequiredTransform;
|
|
function requireTransform() {
|
|
if (hasRequiredTransform) return transform;
|
|
hasRequiredTransform = 1, transform = Transform;
|
|
function Transform() {
|
|
this.x = 0, this.y = 0, this.scale = 1;
|
|
}
|
|
return __name(Transform, "Transform"), transform;
|
|
}
|
|
__name(requireTransform, "requireTransform");
|
|
var svgController = { exports: {} }, hasRequiredSvgController;
|
|
function requireSvgController() {
|
|
if (hasRequiredSvgController) return svgController.exports;
|
|
hasRequiredSvgController = 1, svgController.exports = makeSvgController, svgController.exports.canAttach = isSVGElement;
|
|
function makeSvgController(svgElement, options) {
|
|
if (!isSVGElement(svgElement))
|
|
throw new Error("svg element is required for svg.panzoom to work");
|
|
var owner = svgElement.ownerSVGElement;
|
|
if (!owner)
|
|
throw new Error(
|
|
"Do not apply panzoom to the root <svg> element. Use its child instead (e.g. <g></g>). As of March 2016 only FireFox supported transform on the root element"
|
|
);
|
|
options.disableKeyboardInteraction || owner.setAttribute("tabindex", 0);
|
|
var api = {
|
|
getBBox,
|
|
getScreenCTM,
|
|
getOwner,
|
|
applyTransform,
|
|
initTransform
|
|
};
|
|
return api;
|
|
function getOwner() {
|
|
return owner;
|
|
}
|
|
function getBBox() {
|
|
var bbox = svgElement.getBBox();
|
|
return {
|
|
left: bbox.x,
|
|
top: bbox.y,
|
|
width: bbox.width,
|
|
height: bbox.height
|
|
};
|
|
}
|
|
function getScreenCTM() {
|
|
var ctm = owner.getCTM();
|
|
return ctm || owner.getScreenCTM();
|
|
}
|
|
function initTransform(transform2) {
|
|
var screenCTM = svgElement.getCTM();
|
|
screenCTM === null && (screenCTM = document.createElementNS("http://www.w3.org/2000/svg", "svg").createSVGMatrix()), transform2.x = screenCTM.e, transform2.y = screenCTM.f, transform2.scale = screenCTM.a, owner.removeAttributeNS(null, "viewBox");
|
|
}
|
|
function applyTransform(transform2) {
|
|
svgElement.setAttribute("transform", "matrix(" + transform2.scale + " 0 0 " + transform2.scale + " " + transform2.x + " " + transform2.y + ")");
|
|
}
|
|
}
|
|
__name(makeSvgController, "makeSvgController");
|
|
function isSVGElement(element) {
|
|
return element && element.ownerSVGElement && element.getCTM;
|
|
}
|
|
return __name(isSVGElement, "isSVGElement"), svgController.exports;
|
|
}
|
|
__name(requireSvgController, "requireSvgController");
|
|
var domController = { exports: {} }, hasRequiredDomController;
|
|
function requireDomController() {
|
|
if (hasRequiredDomController) return domController.exports;
|
|
hasRequiredDomController = 1, domController.exports = makeDomController, domController.exports.canAttach = isDomElement;
|
|
function makeDomController(domElement, options) {
|
|
var elementValid = isDomElement(domElement);
|
|
if (!elementValid)
|
|
throw new Error("panzoom requires DOM element to be attached to the DOM tree");
|
|
var owner = domElement.parentElement;
|
|
domElement.scrollTop = 0, options.disableKeyboardInteraction || owner.setAttribute("tabindex", 0);
|
|
var api = {
|
|
getBBox,
|
|
getOwner,
|
|
applyTransform
|
|
};
|
|
return api;
|
|
function getOwner() {
|
|
return owner;
|
|
}
|
|
function getBBox() {
|
|
return {
|
|
left: 0,
|
|
top: 0,
|
|
width: domElement.clientWidth,
|
|
height: domElement.clientHeight
|
|
};
|
|
}
|
|
function applyTransform(transform2) {
|
|
domElement.style.transformOrigin = "0 0 0", domElement.style.transform = "matrix(" + transform2.scale + ", 0, 0, " + transform2.scale + ", " + transform2.x + ", " + transform2.y + ")";
|
|
}
|
|
}
|
|
__name(makeDomController, "makeDomController");
|
|
function isDomElement(element) {
|
|
return element && element.parentElement && element.style;
|
|
}
|
|
return __name(isDomElement, "isDomElement"), domController.exports;
|
|
}
|
|
__name(requireDomController, "requireDomController");
|
|
var panzoom, hasRequiredPanzoom;
|
|
function requirePanzoom() {
|
|
if (hasRequiredPanzoom) return panzoom;
|
|
hasRequiredPanzoom = 1;
|
|
var wheel2 = requireWheel(), animate = requireAmator(), eventify = requireNgraph_events(), kinetic = requireKinetic(), createTextSelectionInterceptor = requireCreateTextSelectionInterceptor(), domTextSelectionInterceptor = createTextSelectionInterceptor(), fakeTextSelectorInterceptor = createTextSelectionInterceptor(!0), Transform = requireTransform(), makeSvgController = requireSvgController(), makeDomController = requireDomController(), defaultZoomSpeed = 1, defaultDoubleTapZoomSpeed = 1.75, doubleTapSpeedInMS = 300, clickEventTimeInMS = 200;
|
|
panzoom = createPanZoom2;
|
|
function createPanZoom2(domElement, options) {
|
|
options = options || {};
|
|
var panController = options.controller;
|
|
if (panController || (makeSvgController.canAttach(domElement) ? panController = makeSvgController(domElement, options) : makeDomController.canAttach(domElement) && (panController = makeDomController(domElement, options))), !panController)
|
|
throw new Error(
|
|
"Cannot create panzoom for the current type of dom element"
|
|
);
|
|
var owner = panController.getOwner(), storedCTMResult = { x: 0, y: 0 }, isDirty = !1, transform2 = new Transform();
|
|
panController.initTransform && panController.initTransform(transform2);
|
|
var filterKey = typeof options.filterKey == "function" ? options.filterKey : noop, pinchSpeed = typeof options.pinchSpeed == "number" ? options.pinchSpeed : 1, bounds = options.bounds, maxZoom = typeof options.maxZoom == "number" ? options.maxZoom : Number.POSITIVE_INFINITY, minZoom = typeof options.minZoom == "number" ? options.minZoom : 0, boundsPadding = typeof options.boundsPadding == "number" ? options.boundsPadding : 0.05, zoomDoubleClickSpeed = typeof options.zoomDoubleClickSpeed == "number" ? options.zoomDoubleClickSpeed : defaultDoubleTapZoomSpeed, beforeWheel = options.beforeWheel || noop, beforeMouseDown = options.beforeMouseDown || noop, speed = typeof options.zoomSpeed == "number" ? options.zoomSpeed : defaultZoomSpeed, transformOrigin = parseTransformOrigin(options.transformOrigin), textSelection = options.enableTextSelection ? fakeTextSelectorInterceptor : domTextSelectionInterceptor;
|
|
validateBounds(bounds), options.autocenter && autocenter();
|
|
var frameAnimation, lastTouchEndTime = 0, lastTouchStartTime = 0, pendingClickEventTimeout = 0, lastMouseDownedEvent = null, lastMouseDownTime = /* @__PURE__ */ new Date(), lastSingleFingerOffset, touchInProgress = !1, panstartFired = !1, mouseX, mouseY, clickX, clickY, pinchZoomLength, smoothScroll;
|
|
"smoothScroll" in options && !options.smoothScroll ? smoothScroll = rigidScroll() : smoothScroll = kinetic(getPoint, scroll, options.smoothScroll);
|
|
var moveByAnimation, zoomToAnimation, multiTouch, paused = !1;
|
|
listenForEvents();
|
|
var api = {
|
|
dispose,
|
|
moveBy: internalMoveBy,
|
|
moveTo,
|
|
smoothMoveTo,
|
|
centerOn,
|
|
zoomTo: publicZoomTo,
|
|
zoomAbs,
|
|
smoothZoom,
|
|
smoothZoomAbs,
|
|
showRectangle,
|
|
pause,
|
|
resume,
|
|
isPaused,
|
|
getTransform: getTransformModel,
|
|
getMinZoom,
|
|
setMinZoom,
|
|
getMaxZoom,
|
|
setMaxZoom,
|
|
getTransformOrigin,
|
|
setTransformOrigin,
|
|
getZoomSpeed,
|
|
setZoomSpeed
|
|
};
|
|
eventify(api);
|
|
var initialX = typeof options.initialX == "number" ? options.initialX : transform2.x, initialY = typeof options.initialY == "number" ? options.initialY : transform2.y, initialZoom = typeof options.initialZoom == "number" ? options.initialZoom : transform2.scale;
|
|
return (initialX != transform2.x || initialY != transform2.y || initialZoom != transform2.scale) && zoomAbs(initialX, initialY, initialZoom), api;
|
|
function pause() {
|
|
releaseEvents(), paused = !0;
|
|
}
|
|
__name(pause, "pause");
|
|
function resume() {
|
|
paused && (listenForEvents(), paused = !1);
|
|
}
|
|
__name(resume, "resume");
|
|
function isPaused() {
|
|
return paused;
|
|
}
|
|
__name(isPaused, "isPaused");
|
|
function showRectangle(rect) {
|
|
var clientRect = owner.getBoundingClientRect(), size = transformToScreen(clientRect.width, clientRect.height), rectWidth = rect.right - rect.left, rectHeight = rect.bottom - rect.top;
|
|
if (!Number.isFinite(rectWidth) || !Number.isFinite(rectHeight))
|
|
throw new Error("Invalid rectangle");
|
|
var dw = size.x / rectWidth, dh = size.y / rectHeight, scale = Math.min(dw, dh);
|
|
transform2.x = -(rect.left + rectWidth / 2) * scale + size.x / 2, transform2.y = -(rect.top + rectHeight / 2) * scale + size.y / 2, transform2.scale = scale;
|
|
}
|
|
__name(showRectangle, "showRectangle");
|
|
function transformToScreen(x, y) {
|
|
if (panController.getScreenCTM) {
|
|
var parentCTM = panController.getScreenCTM(), parentScaleX = parentCTM.a, parentScaleY = parentCTM.d, parentOffsetX = parentCTM.e, parentOffsetY = parentCTM.f;
|
|
storedCTMResult.x = x * parentScaleX - parentOffsetX, storedCTMResult.y = y * parentScaleY - parentOffsetY;
|
|
} else
|
|
storedCTMResult.x = x, storedCTMResult.y = y;
|
|
return storedCTMResult;
|
|
}
|
|
__name(transformToScreen, "transformToScreen");
|
|
function autocenter() {
|
|
var w, h, left = 0, top = 0, sceneBoundingBox = getBoundingBox();
|
|
if (sceneBoundingBox)
|
|
left = sceneBoundingBox.left, top = sceneBoundingBox.top, w = sceneBoundingBox.right - sceneBoundingBox.left, h = sceneBoundingBox.bottom - sceneBoundingBox.top;
|
|
else {
|
|
var ownerRect = owner.getBoundingClientRect();
|
|
w = ownerRect.width, h = ownerRect.height;
|
|
}
|
|
var bbox = panController.getBBox();
|
|
if (!(bbox.width === 0 || bbox.height === 0)) {
|
|
var dh = h / bbox.height, dw = w / bbox.width, scale = Math.min(dw, dh);
|
|
transform2.x = -(bbox.left + bbox.width / 2) * scale + w / 2 + left, transform2.y = -(bbox.top + bbox.height / 2) * scale + h / 2 + top, transform2.scale = scale;
|
|
}
|
|
}
|
|
__name(autocenter, "autocenter");
|
|
function getTransformModel() {
|
|
return transform2;
|
|
}
|
|
__name(getTransformModel, "getTransformModel");
|
|
function getMinZoom() {
|
|
return minZoom;
|
|
}
|
|
__name(getMinZoom, "getMinZoom");
|
|
function setMinZoom(newMinZoom) {
|
|
minZoom = newMinZoom;
|
|
}
|
|
__name(setMinZoom, "setMinZoom");
|
|
function getMaxZoom() {
|
|
return maxZoom;
|
|
}
|
|
__name(getMaxZoom, "getMaxZoom");
|
|
function setMaxZoom(newMaxZoom) {
|
|
maxZoom = newMaxZoom;
|
|
}
|
|
__name(setMaxZoom, "setMaxZoom");
|
|
function getTransformOrigin() {
|
|
return transformOrigin;
|
|
}
|
|
__name(getTransformOrigin, "getTransformOrigin");
|
|
function setTransformOrigin(newTransformOrigin) {
|
|
transformOrigin = parseTransformOrigin(newTransformOrigin);
|
|
}
|
|
__name(setTransformOrigin, "setTransformOrigin");
|
|
function getZoomSpeed() {
|
|
return speed;
|
|
}
|
|
__name(getZoomSpeed, "getZoomSpeed");
|
|
function setZoomSpeed(newSpeed) {
|
|
if (!Number.isFinite(newSpeed))
|
|
throw new Error("Zoom speed should be a number");
|
|
speed = newSpeed;
|
|
}
|
|
__name(setZoomSpeed, "setZoomSpeed");
|
|
function getPoint() {
|
|
return {
|
|
x: transform2.x,
|
|
y: transform2.y
|
|
};
|
|
}
|
|
__name(getPoint, "getPoint");
|
|
function moveTo(x, y) {
|
|
transform2.x = x, transform2.y = y, keepTransformInsideBounds(), triggerEvent("pan"), makeDirty();
|
|
}
|
|
__name(moveTo, "moveTo");
|
|
function moveBy(dx, dy) {
|
|
moveTo(transform2.x + dx, transform2.y + dy);
|
|
}
|
|
__name(moveBy, "moveBy");
|
|
function keepTransformInsideBounds() {
|
|
var boundingBox = getBoundingBox();
|
|
if (boundingBox) {
|
|
var adjusted = !1, clientRect = getClientRect(), diff = boundingBox.left - clientRect.right;
|
|
return diff > 0 && (transform2.x += diff, adjusted = !0), diff = boundingBox.right - clientRect.left, diff < 0 && (transform2.x += diff, adjusted = !0), diff = boundingBox.top - clientRect.bottom, diff > 0 && (transform2.y += diff, adjusted = !0), diff = boundingBox.bottom - clientRect.top, diff < 0 && (transform2.y += diff, adjusted = !0), adjusted;
|
|
}
|
|
}
|
|
__name(keepTransformInsideBounds, "keepTransformInsideBounds");
|
|
function getBoundingBox() {
|
|
if (bounds) {
|
|
if (typeof bounds == "boolean") {
|
|
var ownerRect = owner.getBoundingClientRect(), sceneWidth = ownerRect.width, sceneHeight = ownerRect.height;
|
|
return {
|
|
left: sceneWidth * boundsPadding,
|
|
top: sceneHeight * boundsPadding,
|
|
right: sceneWidth * (1 - boundsPadding),
|
|
bottom: sceneHeight * (1 - boundsPadding)
|
|
};
|
|
}
|
|
return bounds;
|
|
}
|
|
}
|
|
__name(getBoundingBox, "getBoundingBox");
|
|
function getClientRect() {
|
|
var bbox = panController.getBBox(), leftTop = client(bbox.left, bbox.top);
|
|
return {
|
|
left: leftTop.x,
|
|
top: leftTop.y,
|
|
right: bbox.width * transform2.scale + leftTop.x,
|
|
bottom: bbox.height * transform2.scale + leftTop.y
|
|
};
|
|
}
|
|
__name(getClientRect, "getClientRect");
|
|
function client(x, y) {
|
|
return {
|
|
x: x * transform2.scale + transform2.x,
|
|
y: y * transform2.scale + transform2.y
|
|
};
|
|
}
|
|
__name(client, "client");
|
|
function makeDirty() {
|
|
isDirty = !0, frameAnimation = window.requestAnimationFrame(frame);
|
|
}
|
|
__name(makeDirty, "makeDirty");
|
|
function zoomByRatio(clientX, clientY, ratio) {
|
|
if (isNaN(clientX) || isNaN(clientY) || isNaN(ratio))
|
|
throw new Error("zoom requires valid numbers");
|
|
var newScale = transform2.scale * ratio;
|
|
if (newScale < minZoom) {
|
|
if (transform2.scale === minZoom) return;
|
|
ratio = minZoom / transform2.scale;
|
|
}
|
|
if (newScale > maxZoom) {
|
|
if (transform2.scale === maxZoom) return;
|
|
ratio = maxZoom / transform2.scale;
|
|
}
|
|
var size = transformToScreen(clientX, clientY);
|
|
if (transform2.x = size.x - ratio * (size.x - transform2.x), transform2.y = size.y - ratio * (size.y - transform2.y), bounds && boundsPadding === 1 && minZoom === 1)
|
|
transform2.scale *= ratio, keepTransformInsideBounds();
|
|
else {
|
|
var transformAdjusted = keepTransformInsideBounds();
|
|
transformAdjusted || (transform2.scale *= ratio);
|
|
}
|
|
triggerEvent("zoom"), makeDirty();
|
|
}
|
|
__name(zoomByRatio, "zoomByRatio");
|
|
function zoomAbs(clientX, clientY, zoomLevel) {
|
|
var ratio = zoomLevel / transform2.scale;
|
|
zoomByRatio(clientX, clientY, ratio);
|
|
}
|
|
__name(zoomAbs, "zoomAbs");
|
|
function centerOn(ui) {
|
|
var parent = ui.ownerSVGElement;
|
|
if (!parent)
|
|
throw new Error("ui element is required to be within the scene");
|
|
var clientRect = ui.getBoundingClientRect(), cx = clientRect.left + clientRect.width / 2, cy = clientRect.top + clientRect.height / 2, container = parent.getBoundingClientRect(), dx = container.width / 2 - cx, dy = container.height / 2 - cy;
|
|
internalMoveBy(dx, dy, !0);
|
|
}
|
|
__name(centerOn, "centerOn");
|
|
function smoothMoveTo(x, y) {
|
|
internalMoveBy(x - transform2.x, y - transform2.y, !0);
|
|
}
|
|
__name(smoothMoveTo, "smoothMoveTo");
|
|
function internalMoveBy(dx, dy, smooth) {
|
|
if (!smooth)
|
|
return moveBy(dx, dy);
|
|
moveByAnimation && moveByAnimation.cancel();
|
|
var from = { x: 0, y: 0 }, to = { x: dx, y: dy }, lastX = 0, lastY = 0;
|
|
moveByAnimation = animate(from, to, {
|
|
step: /* @__PURE__ */ __name(function(v) {
|
|
moveBy(v.x - lastX, v.y - lastY), lastX = v.x, lastY = v.y;
|
|
}, "step")
|
|
});
|
|
}
|
|
__name(internalMoveBy, "internalMoveBy");
|
|
function scroll(x, y) {
|
|
cancelZoomAnimation(), moveTo(x, y);
|
|
}
|
|
__name(scroll, "scroll");
|
|
function dispose() {
|
|
releaseEvents();
|
|
}
|
|
__name(dispose, "dispose");
|
|
function listenForEvents() {
|
|
owner.addEventListener("mousedown", onMouseDown, { passive: !1 }), owner.addEventListener("dblclick", onDoubleClick, { passive: !1 }), owner.addEventListener("touchstart", onTouch, { passive: !1 }), owner.addEventListener("keydown", onKeyDown, { passive: !1 }), wheel2.addWheelListener(owner, onMouseWheel, { passive: !1 }), makeDirty();
|
|
}
|
|
__name(listenForEvents, "listenForEvents");
|
|
function releaseEvents() {
|
|
wheel2.removeWheelListener(owner, onMouseWheel), owner.removeEventListener("mousedown", onMouseDown), owner.removeEventListener("keydown", onKeyDown), owner.removeEventListener("dblclick", onDoubleClick), owner.removeEventListener("touchstart", onTouch), frameAnimation && (window.cancelAnimationFrame(frameAnimation), frameAnimation = 0), smoothScroll.cancel(), releaseDocumentMouse(), releaseTouches(), textSelection.release(), triggerPanEnd();
|
|
}
|
|
__name(releaseEvents, "releaseEvents");
|
|
function frame() {
|
|
isDirty && applyTransform();
|
|
}
|
|
__name(frame, "frame");
|
|
function applyTransform() {
|
|
isDirty = !1, panController.applyTransform(transform2), triggerEvent("transform"), frameAnimation = 0;
|
|
}
|
|
__name(applyTransform, "applyTransform");
|
|
function onKeyDown(e) {
|
|
var x = 0, y = 0, z = 0;
|
|
if (e.keyCode === 38 ? y = 1 : e.keyCode === 40 ? y = -1 : e.keyCode === 37 ? x = 1 : e.keyCode === 39 ? x = -1 : e.keyCode === 189 || e.keyCode === 109 ? z = 1 : (e.keyCode === 187 || e.keyCode === 107) && (z = -1), !filterKey(e, x, y, z)) {
|
|
if (x || y) {
|
|
e.preventDefault(), e.stopPropagation();
|
|
var clientRect = owner.getBoundingClientRect(), offset = Math.min(clientRect.width, clientRect.height), moveSpeedRatio = 0.05, dx = offset * moveSpeedRatio * x, dy = offset * moveSpeedRatio * y;
|
|
internalMoveBy(dx, dy);
|
|
}
|
|
if (z) {
|
|
var scaleMultiplier = getScaleMultiplier(z * 100), offset = transformOrigin ? getTransformOriginOffset() : midPoint();
|
|
publicZoomTo(offset.x, offset.y, scaleMultiplier);
|
|
}
|
|
}
|
|
}
|
|
__name(onKeyDown, "onKeyDown");
|
|
function midPoint() {
|
|
var ownerRect = owner.getBoundingClientRect();
|
|
return {
|
|
x: ownerRect.width / 2,
|
|
y: ownerRect.height / 2
|
|
};
|
|
}
|
|
__name(midPoint, "midPoint");
|
|
function onTouch(e) {
|
|
if (beforeTouch(e), clearPendingClickEventTimeout(), e.touches.length === 1)
|
|
return handleSingleFingerTouch(e, e.touches[0]);
|
|
e.touches.length === 2 && (pinchZoomLength = getPinchZoomLength(e.touches[0], e.touches[1]), multiTouch = !0, startTouchListenerIfNeeded());
|
|
}
|
|
__name(onTouch, "onTouch");
|
|
function beforeTouch(e) {
|
|
options.onTouch && !options.onTouch(e) || (e.stopPropagation(), e.preventDefault());
|
|
}
|
|
__name(beforeTouch, "beforeTouch");
|
|
function beforeDoubleClick(e) {
|
|
clearPendingClickEventTimeout(), !(options.onDoubleClick && !options.onDoubleClick(e)) && (e.preventDefault(), e.stopPropagation());
|
|
}
|
|
__name(beforeDoubleClick, "beforeDoubleClick");
|
|
function handleSingleFingerTouch(e) {
|
|
lastTouchStartTime = /* @__PURE__ */ new Date();
|
|
var touch = e.touches[0], offset = getOffsetXY(touch);
|
|
lastSingleFingerOffset = offset;
|
|
var point = transformToScreen(offset.x, offset.y);
|
|
mouseX = point.x, mouseY = point.y, clickX = mouseX, clickY = mouseY, smoothScroll.cancel(), startTouchListenerIfNeeded();
|
|
}
|
|
__name(handleSingleFingerTouch, "handleSingleFingerTouch");
|
|
function startTouchListenerIfNeeded() {
|
|
touchInProgress || (touchInProgress = !0, document.addEventListener("touchmove", handleTouchMove), document.addEventListener("touchend", handleTouchEnd), document.addEventListener("touchcancel", handleTouchEnd));
|
|
}
|
|
__name(startTouchListenerIfNeeded, "startTouchListenerIfNeeded");
|
|
function handleTouchMove(e) {
|
|
if (e.touches.length === 1) {
|
|
e.stopPropagation();
|
|
var touch = e.touches[0], offset = getOffsetXY(touch), point = transformToScreen(offset.x, offset.y), dx = point.x - mouseX, dy = point.y - mouseY;
|
|
dx !== 0 && dy !== 0 && triggerPanStart(), mouseX = point.x, mouseY = point.y, internalMoveBy(dx, dy);
|
|
} else if (e.touches.length === 2) {
|
|
multiTouch = !0;
|
|
var t1 = e.touches[0], t2 = e.touches[1], currentPinchLength = getPinchZoomLength(t1, t2), scaleMultiplier = 1 + (currentPinchLength / pinchZoomLength - 1) * pinchSpeed, firstTouchPoint = getOffsetXY(t1), secondTouchPoint = getOffsetXY(t2);
|
|
if (mouseX = (firstTouchPoint.x + secondTouchPoint.x) / 2, mouseY = (firstTouchPoint.y + secondTouchPoint.y) / 2, transformOrigin) {
|
|
var offset = getTransformOriginOffset();
|
|
mouseX = offset.x, mouseY = offset.y;
|
|
}
|
|
publicZoomTo(mouseX, mouseY, scaleMultiplier), pinchZoomLength = currentPinchLength, e.stopPropagation(), e.preventDefault();
|
|
}
|
|
}
|
|
__name(handleTouchMove, "handleTouchMove");
|
|
function clearPendingClickEventTimeout() {
|
|
pendingClickEventTimeout && (clearTimeout(pendingClickEventTimeout), pendingClickEventTimeout = 0);
|
|
}
|
|
__name(clearPendingClickEventTimeout, "clearPendingClickEventTimeout");
|
|
function handlePotentialClickEvent(e) {
|
|
if (options.onClick) {
|
|
clearPendingClickEventTimeout();
|
|
var dx = mouseX - clickX, dy = mouseY - clickY, l = Math.sqrt(dx * dx + dy * dy);
|
|
l > 5 || (pendingClickEventTimeout = setTimeout(function() {
|
|
pendingClickEventTimeout = 0, options.onClick(e);
|
|
}, doubleTapSpeedInMS));
|
|
}
|
|
}
|
|
__name(handlePotentialClickEvent, "handlePotentialClickEvent");
|
|
function handleTouchEnd(e) {
|
|
if (clearPendingClickEventTimeout(), e.touches.length > 0) {
|
|
var offset = getOffsetXY(e.touches[0]), point = transformToScreen(offset.x, offset.y);
|
|
mouseX = point.x, mouseY = point.y;
|
|
} else {
|
|
var now = /* @__PURE__ */ new Date();
|
|
if (now - lastTouchEndTime < doubleTapSpeedInMS)
|
|
if (transformOrigin) {
|
|
var offset = getTransformOriginOffset();
|
|
smoothZoom(offset.x, offset.y, zoomDoubleClickSpeed);
|
|
} else
|
|
smoothZoom(lastSingleFingerOffset.x, lastSingleFingerOffset.y, zoomDoubleClickSpeed);
|
|
else now - lastTouchStartTime < clickEventTimeInMS && handlePotentialClickEvent(e);
|
|
lastTouchEndTime = now, triggerPanEnd(), releaseTouches();
|
|
}
|
|
}
|
|
__name(handleTouchEnd, "handleTouchEnd");
|
|
function getPinchZoomLength(finger1, finger2) {
|
|
var dx = finger1.clientX - finger2.clientX, dy = finger1.clientY - finger2.clientY;
|
|
return Math.sqrt(dx * dx + dy * dy);
|
|
}
|
|
__name(getPinchZoomLength, "getPinchZoomLength");
|
|
function onDoubleClick(e) {
|
|
beforeDoubleClick(e);
|
|
var offset = getOffsetXY(e);
|
|
transformOrigin && (offset = getTransformOriginOffset()), smoothZoom(offset.x, offset.y, zoomDoubleClickSpeed);
|
|
}
|
|
__name(onDoubleClick, "onDoubleClick");
|
|
function onMouseDown(e) {
|
|
if (clearPendingClickEventTimeout(), !beforeMouseDown(e)) {
|
|
if (lastMouseDownedEvent = e, lastMouseDownTime = /* @__PURE__ */ new Date(), touchInProgress)
|
|
return e.stopPropagation(), !1;
|
|
var isLeftButton = e.button === 1 && window.event !== null || e.button === 0;
|
|
if (isLeftButton) {
|
|
smoothScroll.cancel();
|
|
var offset = getOffsetXY(e), point = transformToScreen(offset.x, offset.y);
|
|
return clickX = mouseX = point.x, clickY = mouseY = point.y, document.addEventListener("mousemove", onMouseMove), document.addEventListener("mouseup", onMouseUp), textSelection.capture(e.target || e.srcElement), !1;
|
|
}
|
|
}
|
|
}
|
|
__name(onMouseDown, "onMouseDown");
|
|
function onMouseMove(e) {
|
|
if (!touchInProgress) {
|
|
triggerPanStart();
|
|
var offset = getOffsetXY(e), point = transformToScreen(offset.x, offset.y), dx = point.x - mouseX, dy = point.y - mouseY;
|
|
mouseX = point.x, mouseY = point.y, internalMoveBy(dx, dy);
|
|
}
|
|
}
|
|
__name(onMouseMove, "onMouseMove");
|
|
function onMouseUp() {
|
|
var now = /* @__PURE__ */ new Date();
|
|
now - lastMouseDownTime < clickEventTimeInMS && handlePotentialClickEvent(lastMouseDownedEvent), textSelection.release(), triggerPanEnd(), releaseDocumentMouse();
|
|
}
|
|
__name(onMouseUp, "onMouseUp");
|
|
function releaseDocumentMouse() {
|
|
document.removeEventListener("mousemove", onMouseMove), document.removeEventListener("mouseup", onMouseUp), panstartFired = !1;
|
|
}
|
|
__name(releaseDocumentMouse, "releaseDocumentMouse");
|
|
function releaseTouches() {
|
|
document.removeEventListener("touchmove", handleTouchMove), document.removeEventListener("touchend", handleTouchEnd), document.removeEventListener("touchcancel", handleTouchEnd), panstartFired = !1, multiTouch = !1, touchInProgress = !1;
|
|
}
|
|
__name(releaseTouches, "releaseTouches");
|
|
function onMouseWheel(e) {
|
|
if (!beforeWheel(e)) {
|
|
smoothScroll.cancel();
|
|
var delta = e.deltaY;
|
|
e.deltaMode > 0 && (delta *= 100);
|
|
var scaleMultiplier = getScaleMultiplier(delta);
|
|
if (scaleMultiplier !== 1) {
|
|
var offset = transformOrigin ? getTransformOriginOffset() : getOffsetXY(e);
|
|
publicZoomTo(offset.x, offset.y, scaleMultiplier), e.preventDefault();
|
|
}
|
|
}
|
|
}
|
|
__name(onMouseWheel, "onMouseWheel");
|
|
function getOffsetXY(e) {
|
|
var offsetX, offsetY, ownerRect = owner.getBoundingClientRect();
|
|
return offsetX = e.clientX - ownerRect.left, offsetY = e.clientY - ownerRect.top, { x: offsetX, y: offsetY };
|
|
}
|
|
__name(getOffsetXY, "getOffsetXY");
|
|
function smoothZoom(clientX, clientY, scaleMultiplier) {
|
|
var fromValue = transform2.scale, from = { scale: fromValue }, to = { scale: scaleMultiplier * fromValue };
|
|
smoothScroll.cancel(), cancelZoomAnimation(), zoomToAnimation = animate(from, to, {
|
|
step: /* @__PURE__ */ __name(function(v) {
|
|
zoomAbs(clientX, clientY, v.scale);
|
|
}, "step"),
|
|
done: triggerZoomEnd
|
|
});
|
|
}
|
|
__name(smoothZoom, "smoothZoom");
|
|
function smoothZoomAbs(clientX, clientY, toScaleValue) {
|
|
var fromValue = transform2.scale, from = { scale: fromValue }, to = { scale: toScaleValue };
|
|
smoothScroll.cancel(), cancelZoomAnimation(), zoomToAnimation = animate(from, to, {
|
|
step: /* @__PURE__ */ __name(function(v) {
|
|
zoomAbs(clientX, clientY, v.scale);
|
|
}, "step")
|
|
});
|
|
}
|
|
__name(smoothZoomAbs, "smoothZoomAbs");
|
|
function getTransformOriginOffset() {
|
|
var ownerRect = owner.getBoundingClientRect();
|
|
return {
|
|
x: ownerRect.width * transformOrigin.x,
|
|
y: ownerRect.height * transformOrigin.y
|
|
};
|
|
}
|
|
__name(getTransformOriginOffset, "getTransformOriginOffset");
|
|
function publicZoomTo(clientX, clientY, scaleMultiplier) {
|
|
return smoothScroll.cancel(), cancelZoomAnimation(), zoomByRatio(clientX, clientY, scaleMultiplier);
|
|
}
|
|
__name(publicZoomTo, "publicZoomTo");
|
|
function cancelZoomAnimation() {
|
|
zoomToAnimation && (zoomToAnimation.cancel(), zoomToAnimation = null);
|
|
}
|
|
__name(cancelZoomAnimation, "cancelZoomAnimation");
|
|
function getScaleMultiplier(delta) {
|
|
var sign = Math.sign(delta), deltaAdjustedSpeed = Math.min(0.25, Math.abs(speed * delta / 128));
|
|
return 1 - sign * deltaAdjustedSpeed;
|
|
}
|
|
__name(getScaleMultiplier, "getScaleMultiplier");
|
|
function triggerPanStart() {
|
|
panstartFired || (triggerEvent("panstart"), panstartFired = !0, smoothScroll.start());
|
|
}
|
|
__name(triggerPanStart, "triggerPanStart");
|
|
function triggerPanEnd() {
|
|
panstartFired && (multiTouch || smoothScroll.stop(), triggerEvent("panend"));
|
|
}
|
|
__name(triggerPanEnd, "triggerPanEnd");
|
|
function triggerZoomEnd() {
|
|
triggerEvent("zoomend");
|
|
}
|
|
__name(triggerZoomEnd, "triggerZoomEnd");
|
|
function triggerEvent(name) {
|
|
api.fire(name, api);
|
|
}
|
|
__name(triggerEvent, "triggerEvent");
|
|
}
|
|
__name(createPanZoom2, "createPanZoom");
|
|
function parseTransformOrigin(options) {
|
|
if (options) {
|
|
if (typeof options == "object")
|
|
return (!isNumber(options.x) || !isNumber(options.y)) && failTransformOrigin(options), options;
|
|
failTransformOrigin();
|
|
}
|
|
}
|
|
__name(parseTransformOrigin, "parseTransformOrigin");
|
|
function failTransformOrigin(options) {
|
|
throw console.error(options), new Error(
|
|
[
|
|
"Cannot parse transform origin.",
|
|
"Some good examples:",
|
|
' "center center" can be achieved with {x: 0.5, y: 0.5}',
|
|
' "top center" can be achieved with {x: 0.5, y: 0}',
|
|
' "bottom right" can be achieved with {x: 1, y: 1}'
|
|
].join(`
|
|
`)
|
|
);
|
|
}
|
|
__name(failTransformOrigin, "failTransformOrigin");
|
|
function noop() {
|
|
}
|
|
__name(noop, "noop");
|
|
function validateBounds(bounds) {
|
|
var boundsType = typeof bounds;
|
|
if (!(boundsType === "undefined" || boundsType === "boolean")) {
|
|
var validBounds = isNumber(bounds.left) && isNumber(bounds.top) && isNumber(bounds.bottom) && isNumber(bounds.right);
|
|
if (!validBounds)
|
|
throw new Error(
|
|
"Bounds object is not valid. It can be: undefined, boolean (true|false) or an object {left, top, right, bottom}"
|
|
);
|
|
}
|
|
}
|
|
__name(validateBounds, "validateBounds");
|
|
function isNumber(x) {
|
|
return Number.isFinite(x);
|
|
}
|
|
__name(isNumber, "isNumber");
|
|
function isNaN(value) {
|
|
return Number.isNaN ? Number.isNaN(value) : value !== value;
|
|
}
|
|
__name(isNaN, "isNaN");
|
|
function rigidScroll() {
|
|
return {
|
|
start: noop,
|
|
stop: noop,
|
|
cancel: noop
|
|
};
|
|
}
|
|
__name(rigidScroll, "rigidScroll");
|
|
function autoRun() {
|
|
if (typeof document > "u") return;
|
|
var scripts = document.getElementsByTagName("script");
|
|
if (!scripts) return;
|
|
for (var panzoomScript, i = 0; i < scripts.length; ++i) {
|
|
var x = scripts[i];
|
|
if (x.src && x.src.match(/\bpanzoom(\.min)?\.js/)) {
|
|
panzoomScript = x;
|
|
break;
|
|
}
|
|
}
|
|
if (!panzoomScript) return;
|
|
var query = panzoomScript.getAttribute("query");
|
|
if (!query) return;
|
|
var globalName = panzoomScript.getAttribute("name") || "pz", started = Date.now();
|
|
tryAttach();
|
|
function tryAttach() {
|
|
var el = document.querySelector(query);
|
|
if (!el) {
|
|
var now = Date.now(), elapsed = now - started;
|
|
if (elapsed < 2e3) {
|
|
setTimeout(tryAttach, 100);
|
|
return;
|
|
}
|
|
console.error("Cannot find the panzoom element", globalName);
|
|
return;
|
|
}
|
|
var options = collectOptions(panzoomScript);
|
|
console.log(options), window[globalName] = createPanZoom2(el, options);
|
|
}
|
|
__name(tryAttach, "tryAttach");
|
|
function collectOptions(script) {
|
|
for (var attrs = script.attributes, options = {}, j = 0; j < attrs.length; ++j) {
|
|
var attr = attrs[j], nameValue = getPanzoomAttributeNameValue(attr);
|
|
nameValue && (options[nameValue.name] = nameValue.value);
|
|
}
|
|
return options;
|
|
}
|
|
__name(collectOptions, "collectOptions");
|
|
function getPanzoomAttributeNameValue(attr) {
|
|
if (attr.name) {
|
|
var isPanZoomAttribute = attr.name[0] === "p" && attr.name[1] === "z" && attr.name[2] === "-";
|
|
if (isPanZoomAttribute) {
|
|
var name = attr.name.substr(3), value = JSON.parse(attr.value);
|
|
return { name, value };
|
|
}
|
|
}
|
|
}
|
|
__name(getPanzoomAttributeNameValue, "getPanzoomAttributeNameValue");
|
|
}
|
|
return __name(autoRun, "autoRun"), autoRun(), panzoom;
|
|
}
|
|
__name(requirePanzoom, "requirePanzoom");
|
|
var panzoomExports = requirePanzoom();
|
|
const createPanZoom = /* @__PURE__ */ getDefaultExportFromCjs(panzoomExports), _CallGraph = class _CallGraph {
|
|
svg;
|
|
nodes;
|
|
edges;
|
|
clusters;
|
|
width;
|
|
height;
|
|
selectedElem = null;
|
|
panZoomState;
|
|
focus;
|
|
incomings;
|
|
outgoings;
|
|
constructor(svg, focus, onSelectElem) {
|
|
if (this.svg = svg, this.nodes = svg.querySelectorAll("g.node"), this.edges = svg.querySelectorAll("g.edge"), this.clusters = svg.querySelectorAll("g.cluster"), this.width = this.svg.viewBox.baseVal.width, this.height = this.svg.viewBox.baseVal.height, this.setUpInteraction(onSelectElem ?? this.onSelectElem), this.focus = focus, focus) {
|
|
const incomings = /* @__PURE__ */ new Map(), outgoings = /* @__PURE__ */ new Map();
|
|
this.edges.forEach((edge) => {
|
|
const fromCell = edge.dataset.from, toCell = edge.dataset.to;
|
|
incomings.get(toCell)?.push(edge) ?? incomings.set(toCell, [edge]), outgoings.get(fromCell)?.push(edge) ?? outgoings.set(fromCell, [edge]);
|
|
}), this.incomings = incomings, this.outgoings = outgoings;
|
|
}
|
|
}
|
|
setUpInteraction(onSelectElem) {
|
|
const svg = this.svg;
|
|
let clickPoint = [0, 0];
|
|
svg.onmousedown = function(e) {
|
|
clickPoint = [e.pageX, e.pageY];
|
|
}, svg.onmouseup = function(e) {
|
|
const [x, y] = clickPoint, diffX = Math.abs(e.pageX - x), diffY = Math.abs(e.pageY - y);
|
|
if (!(diffX > 6 || diffY > 6)) {
|
|
for (let elem = e.target; elem && elem instanceof SVGElement && elem !== svg; elem = elem.parentNode) {
|
|
const classes = elem.classList;
|
|
if (classes.contains("node") || classes.contains("cell") || classes.contains("edge") || classes.contains("cluster-label")) {
|
|
onSelectElem(elem);
|
|
return;
|
|
}
|
|
}
|
|
onSelectElem(null);
|
|
}
|
|
};
|
|
}
|
|
setUpPanZoom() {
|
|
this.panZoomState = this.createPanZoomState();
|
|
}
|
|
createPanZoomState() {
|
|
const g0 = this.svg.querySelector("#graph0"), pz = createPanZoom(g0, {
|
|
smoothScroll: !1,
|
|
autocenter: !0
|
|
}), { x, y, scale } = structuredClone(pz.getTransform()), cRect = g0.getBoundingClientRect(), cx = cRect.x + cRect.width / 2, cy = cRect.y + cRect.height / 2, sRect = this.svg.getBoundingClientRect();
|
|
return {
|
|
pz,
|
|
scale,
|
|
x,
|
|
y,
|
|
cx,
|
|
cy,
|
|
sRect
|
|
};
|
|
}
|
|
resetStyles() {
|
|
const g0 = this.svg.getElementById("graph0"), fadedGroup = this.svg.getElementById("faded-group");
|
|
this.selectedElem?.closest(".selected")?.classList.remove("selected"), g0.querySelectorAll(":scope > .edge").forEach(
|
|
(edge) => edge.classList.remove("incoming", "outgoing")
|
|
);
|
|
const firstNode = g0.querySelector(".node");
|
|
for (const cluster of fadedGroup.querySelectorAll(".cluster"))
|
|
g0.insertBefore(cluster, firstNode);
|
|
for (const node of fadedGroup.querySelectorAll(".node"))
|
|
g0.insertBefore(node, firstNode);
|
|
g0.append(...fadedGroup.childNodes);
|
|
}
|
|
smoothZoom(scale) {
|
|
if (!this.panZoomState)
|
|
return;
|
|
const { pz, cx, cy } = this.panZoomState;
|
|
pz.smoothZoom(cx, cy, scale);
|
|
}
|
|
resetPanZoom() {
|
|
if (!this.panZoomState)
|
|
return;
|
|
const { pz, x, y, scale } = this.panZoomState;
|
|
pz.moveTo(x, y), pz.zoomAbs(x, y, scale);
|
|
}
|
|
onSelectElem = /* @__PURE__ */ __name((elem) => {
|
|
if (this.resetStyles(), this.selectedElem = elem, !elem)
|
|
return;
|
|
const { pz, scale, cx, cy, sRect } = this.panZoomState, eRect = elem.getBoundingClientRect();
|
|
eRect.width > sRect.width || eRect.height > sRect.height ? (pz.smoothZoomAbs(cx, cy, scale), setTimeout(() => pz.centerOn(elem), 1e3)) : (eRect.left < sRect.left || eRect.top < sRect.top || eRect.right > sRect.right || eRect.bottom > sRect.bottom) && pz.centerOn(elem);
|
|
const classes = elem.classList;
|
|
classes.contains("node") ? this.onSelectNode(elem) : classes.contains("cell") ? this.onSelectCell(elem) : classes.contains("edge") ? this.onSelectEdge(elem) : classes.contains("cluster-label") && this.onSelctCluster(elem);
|
|
}, "onSelectElem");
|
|
onSelectNode(node) {
|
|
const id = node.id;
|
|
this.highlightEdges((edge) => [
|
|
edge.dataset.to.startsWith(`${id}:`),
|
|
edge.dataset.from.startsWith(`${id}:`)
|
|
]), node.classList.add("selected"), this.fadeOutNodes(/* @__PURE__ */ new Set([id]));
|
|
}
|
|
onSelectCell(cell) {
|
|
const id = cell.id;
|
|
if (this.focus)
|
|
this.onSelectCellInFocusMode(id);
|
|
else {
|
|
const cellIds = /* @__PURE__ */ new Set([cell.id]);
|
|
cell.querySelectorAll(".cell").forEach((c) => {
|
|
cellIds.add(c.id);
|
|
}), this.highlightEdges((edge) => [
|
|
cellIds.has(edge.dataset.to),
|
|
cellIds.has(edge.dataset.from)
|
|
]);
|
|
}
|
|
cell.classList.add("selected"), this.fadeOutNodes(/* @__PURE__ */ new Set([this.getNodeId(cell.id)]));
|
|
}
|
|
onSelectCellInFocusMode(cellId) {
|
|
const highlights = [/* @__PURE__ */ new Set(), /* @__PURE__ */ new Set()], inout = [this.incomings, this.outgoings];
|
|
for (let i = 0; i < inout.length; ++i) {
|
|
const visited = /* @__PURE__ */ new Set([cellId, this.focus]), map = inout[i], highlightEdges = highlights[i];
|
|
for (let newEdges = map.get(cellId) ?? []; newEdges.length > 0; )
|
|
newEdges = newEdges.flatMap((edge) => {
|
|
highlightEdges.add(edge);
|
|
const id = i == 0 ? edge.dataset.from : edge.dataset.to;
|
|
return visited.has(id) ? [] : (visited.add(id), map.get(id) ?? []);
|
|
});
|
|
}
|
|
this.highlightEdges((edge) => [
|
|
highlights[0].has(edge),
|
|
highlights[1].has(edge)
|
|
]), this.fadeOutNodes(/* @__PURE__ */ new Set([this.getNodeId(cellId)]));
|
|
}
|
|
onSelectEdge(edge) {
|
|
const g0 = this.svg.getElementById("graph0");
|
|
this.svg.getElementById("faded-group").append(...this.edges), g0.appendChild(edge), this.fadeOutNodes();
|
|
}
|
|
onSelctCluster(clusterLabel) {
|
|
const cluster = clusterLabel.parentNode, rect = cluster.getBoundingClientRect();
|
|
cluster.classList.add("selected");
|
|
const selected = /* @__PURE__ */ new Set();
|
|
this.nodes.forEach((node) => {
|
|
this.rectContains(rect, node.getBoundingClientRect()) && selected.add(node.id);
|
|
}), this.highlightEdges((edge) => [
|
|
selected.has(this.getNodeId(edge.dataset.to)),
|
|
selected.has(this.getNodeId(edge.dataset.from))
|
|
]), this.fadeOutNodes(selected);
|
|
}
|
|
highlightEdges(judge) {
|
|
const fadedGroup = this.svg.getElementById("faded-group");
|
|
for (const edge of this.edges) {
|
|
const [incoming, outgoing] = judge(edge);
|
|
incoming && edge.classList.add("incoming"), outgoing && edge.classList.add("outgoing"), incoming || outgoing || fadedGroup.appendChild(edge);
|
|
}
|
|
}
|
|
fadeOutNodes(kept) {
|
|
kept || (kept = /* @__PURE__ */ new Set());
|
|
const fadedGroup = this.svg.getElementById("faded-group");
|
|
for (const edge of this.edges)
|
|
edge.parentElement !== fadedGroup && kept.add(this.getNodeId(edge.dataset.from)).add(this.getNodeId(edge.dataset.to));
|
|
const clusters = new Set(this.clusters);
|
|
for (const node of this.nodes) {
|
|
if (!kept.has(node.id)) {
|
|
fadedGroup.appendChild(node);
|
|
continue;
|
|
}
|
|
const rect = node.getBoundingClientRect();
|
|
for (const cluster of clusters)
|
|
this.rectContains(cluster.getBoundingClientRect(), rect) && clusters.delete(cluster);
|
|
}
|
|
fadedGroup.append(...clusters);
|
|
}
|
|
getNodeId(id) {
|
|
return id.substring(0, id.indexOf(":"));
|
|
}
|
|
rectContains(rect1, rect2) {
|
|
return rect1.left < rect2.left && rect1.right > rect2.right && rect1.bottom > rect2.bottom && rect1.top < rect2.top;
|
|
}
|
|
};
|
|
__name(_CallGraph, "CallGraph");
|
|
let CallGraph = _CallGraph;
|
|
export {
|
|
CallGraph
|
|
};
|
|
|
|
|
|
const graph = new CallGraph(document.querySelector(".callgraph"), null);
|
|
graph.setUpPanZoom();
|
|
</script>
|
|
</body>
|
|
</html> |