blob: 94fd46fcf1206e96bef0b337dac021944eab0916 [file] [log] [blame]
<!doctype html>
<html class="no-js" lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title>helix-front documentation</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="../images/favicon.ico">
<link rel="stylesheet" href="../styles/style.css">
<link rel="stylesheet" href="../styles/dark.css">
</head>
<body>
<div class="navbar navbar-default navbar-fixed-top visible-xs">
<a href="../" class="navbar-brand">helix-front documentation</a>
<button type="button" class="btn btn-default btn-menu ion-ios-menu" id="btn-menu"></button>
</div>
<div class="xs-menu menu" id="mobile-menu">
<div id="book-search-input" role="search"><input type="text" placeholder="Type to search"></div> <compodoc-menu></compodoc-menu>
</div>
<div class="container-fluid main">
<div class="row main">
<div class="hidden-xs menu">
<compodoc-menu mode="normal"></compodoc-menu>
</div>
<!-- START CONTENT -->
<div class="content component">
<div class="content-data">
<ol class="breadcrumb">
<li>Components</li>
<li
>
NodeViewerComponent</li>
</ol>
<ul class="nav nav-tabs" role="tablist">
<li class="active">
<a href="#info" role="tab" id="info-tab" data-toggle="tab" data-link="info">Info</a>
</li>
<li >
<a href="#source" role="tab" id="source-tab" data-toggle="tab" data-link="source">Source</a>
</li>
<li >
<a href="#templateData" role="tab" id="templateData-tab" data-toggle="tab" data-link="template">Template</a>
</li>
<li >
<a href="#styleData" role="tab" id="styleData-tab" data-toggle="tab" data-link="style">Styles</a>
</li>
<li >
<a href="#tree" role="tab" id="tree-tab" data-toggle="tab" data-link="dom-tree">DOM Tree</a>
</li>
</ul>
<div class="tab-content">
<div class="tab-pane fade active in" id="c-info"><p class="comment">
<h3>File</h3>
</p>
<p class="comment">
<code>src/app/shared/node-viewer/node-viewer.component.ts</code>
</p>
<p class="comment">
<h3>Implements</h3>
</p>
<p class="comment">
<code><a href="https://angular.io/api/core/OnInit" target="_blank" >OnInit</a></code>
</p>
<section>
<h3>Metadata</h3>
<table class="table table-sm table-hover metadata">
<tbody>
<tr>
<td class="col-md-3">encapsulation</td>
<td class="col-md-9"><code>ViewEncapsulation.None</code></td>
</tr>
<tr>
<td class="col-md-3">providers</td>
<td class="col-md-9">
<code><a href="../injectables/ResourceService.html" target="_self" >ResourceService</a></code>
</td>
</tr>
<tr>
<td class="col-md-3">selector</td>
<td class="col-md-9"><code>hi-node-viewer</code></td>
</tr>
<tr>
<td class="col-md-3">styleUrls</td>
<td class="col-md-9"><code>./node-viewer.component.scss</code></td>
</tr>
<tr>
<td class="col-md-3">templateUrl</td>
<td class="col-md-9"><code>./node-viewer.component.html</code></td>
</tr>
</tbody>
</table>
</section>
<section>
<h3 id="index">Index</h3>
<table class="table table-sm table-bordered index-table">
<tbody>
<tr>
<td class="col-md-4">
<h6><b>Properties</b></h6>
</td>
</tr>
<tr>
<td class="col-md-4">
<ul class="index-list">
<li>
<span class="modifier">Private</span>
<a href="#_editable" >_editable</a>
</li>
<li>
<a href="#_listConfigs" >_listConfigs</a>
</li>
<li>
<a href="#_mapConfigs" >_mapConfigs</a>
</li>
<li>
<span class="modifier">Protected</span>
<a href="#_obj" >_obj</a>
</li>
<li>
<a href="#_simpleConfigs" >_simpleConfigs</a>
</li>
<li>
<a href="#clusterName" >clusterName</a>
</li>
<li>
<a href="#columns" >columns</a>
</li>
<li>
<a href="#headerHeight" >headerHeight</a>
</li>
<li>
<a href="#isLoading" >isLoading</a>
</li>
<li>
<a href="#keyword" >keyword</a>
</li>
<li>
<a href="#listTable" >listTable</a>
</li>
<li>
<a href="#mapTable" >mapTable</a>
</li>
<li>
<span class="modifier">Protected</span>
<a href="#node" >node</a>
</li>
<li>
<a href="#resourceName" >resourceName</a>
</li>
<li>
<a href="#rowHeight" >rowHeight</a>
</li>
<li>
<a href="#simpleTable" >simpleTable</a>
</li>
<li>
<a href="#sorts" >sorts</a>
</li>
</ul>
</td>
</tr>
<tr>
<td class="col-md-4">
<h6><b>Methods</b></h6>
</td>
</tr>
<tr>
<td class="col-md-4">
<ul class="index-list">
<li>
<a href="#beforeDelete" >beforeDelete</a>
</li>
<li>
<a href="#created" >created</a>
</li>
<li>
<a href="#edited" >edited</a>
</li>
<li>
<a href="#getNameCellClass" >getNameCellClass</a>
</li>
<li>
<a href="#ngOnInit" >ngOnInit</a>
</li>
<li>
<a href="#onCreate" >onCreate</a>
</li>
<li>
<a href="#onDelete" >onDelete</a>
</li>
<li>
<a href="#updateFilter" >updateFilter</a>
</li>
</ul>
</td>
</tr>
<tr>
<td class="col-md-4">
<h6><b>Inputs</b></h6>
</td>
</tr>
<tr>
<td class="col-md-4">
<ul class="index-list">
<li>
<a href="#loadingIndicator" >loadingIndicator</a>
</li>
<li>
<a href="#obj" >obj</a>
</li>
<li>
<a href="#unlockable" >unlockable</a>
</li>
</ul>
</td>
</tr>
<tr>
<td class="col-md-4">
<h6><b>Outputs</b></h6>
</td>
</tr>
<tr>
<td class="col-md-4">
<ul class="index-list">
<li>
<a href="#create" >create</a>
</li>
<li>
<a href="#delete" >delete</a>
</li>
<li>
<a href="#update" >update</a>
</li>
</ul>
</td>
</tr>
<tr>
<td class="col-md-4">
<h6><b>Accessors</b></h6>
</td>
</tr>
<tr>
<td class="col-md-4">
<ul class="index-list">
<li>
<a href="#obj" >obj</a>
</li>
<li>
<a href="#objString" >objString</a>
</li>
<li>
<a href="#editable" >editable</a>
</li>
<li>
<a href="#simpleConfigs" >simpleConfigs</a>
</li>
<li>
<a href="#listConfigs" >listConfigs</a>
</li>
<li>
<a href="#mapConfigs" >mapConfigs</a>
</li>
</ul>
</td>
</tr>
</tbody>
</table>
</section>
<section>
<h3 id="constructor">Constructor</h3>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<span class="modifier">Public</span>
<code>constructor(dialog: MatDialog, route: <a href="https://angular.io/api/router/ActivatedRoute" target="_blank">ActivatedRoute</a>, resourceService: <a href="../injectables/ResourceService.html" target="_self">ResourceService</a>, helper: <a href="../injectables/HelperService.html" target="_self">HelperService</a>)</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="178" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:178</a></div>
</td>
</tr>
<tr>
<td class="col-md-4">
<div>
<b>Parameters :</b>
<table class="params">
<thead>
<tr>
<td>Name</td>
<td>Type</td>
<td>Optional</td>
</tr>
</thead>
<tbody>
<tr>
<td>dialog</td>
<td>
<code>MatDialog</code>
</td>
<td>
No
</td>
</tr>
<tr>
<td>route</td>
<td>
<code><a href="https://angular.io/api/router/ActivatedRoute" target="_blank" >ActivatedRoute</a></code>
</td>
<td>
No
</td>
</tr>
<tr>
<td>resourceService</td>
<td>
<code><a href="../injectables/ResourceService.html" target="_self" >ResourceService</a></code>
</td>
<td>
No
</td>
</tr>
<tr>
<td>helper</td>
<td>
<code><a href="../injectables/HelperService.html" target="_self" >HelperService</a></code>
</td>
<td>
No
</td>
</tr>
</tbody>
</table>
</div>
</td>
</tr>
</tbody>
</table>
</section>
<section>
<h3 id="inputs">Inputs</h3>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="loadingIndicator"></a>
<b>loadingIndicator</b>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/boolean" target="_blank" >boolean</a></code>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Default value : </i><code>false</code>
</td>
</tr>
<tr>
<td class="col-md-2" colspan="2">
<div class="io-line">Defined in <a href="" data-line="73" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:73</a></div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="obj"></a>
<b>obj</b>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Type : </i> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>
</td>
</tr>
<tr>
<td class="col-md-2" colspan="2">
<div class="io-line">Defined in <a href="" data-line="111" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:111</a></div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="unlockable"></a>
<b>unlockable</b>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/boolean" target="_blank" >boolean</a></code>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Default value : </i><code>false</code>
</td>
</tr>
<tr>
<td class="col-md-2" colspan="2">
<div class="io-line">Defined in <a href="" data-line="70" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:70</a></div>
</td>
</tr>
</tbody>
</table>
</section>
<section>
<h3 id="outputs">Outputs</h3>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="create"></a>
<b>create</b>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Type : </i> <code><a href="../classes/Node.html" target="_self" >EventEmitter&lt;Node&gt;</a></code>
</td>
</tr>
<tr>
<td class="col-md-2" colspan="2">
<div class="io-line">Defined in <a href="" data-line="64" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:64</a></div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="delete"></a>
<b>delete</b>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Type : </i> <code><a href="../classes/Node.html" target="_self" >EventEmitter&lt;Node&gt;</a></code>
</td>
</tr>
<tr>
<td class="col-md-2" colspan="2">
<div class="io-line">Defined in <a href="" data-line="67" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:67</a></div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="update"></a>
<b>update</b>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Type : </i> <code><a href="../classes/Node.html" target="_self" >EventEmitter&lt;Node&gt;</a></code>
</td>
</tr>
<tr>
<td class="col-md-2" colspan="2">
<div class="io-line">Defined in <a href="" data-line="61" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:61</a></div>
</td>
</tr>
</tbody>
</table>
</section>
<section>
<h3 id="methods">
Methods
</h3>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="beforeDelete"></a>
<span class="name">
<span ><b>beforeDelete</b></span>
<a href="#beforeDelete"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<code>beforeDelete(type, row)</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="269"
class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:269</a></div>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-description">
<b>Parameters :</b>
<table class="params">
<thead>
<tr>
<td>Name</td>
<td>Optional</td>
</tr>
</thead>
<tbody>
<tr>
<td>type</td>
<td>
No
</td>
</tr>
<tr>
<td>row</td>
<td>
No
</td>
</tr>
</tbody>
</table>
</div>
<div>
</div>
<div class="io-description">
<b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>
</div>
<div class="io-description">
</div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="created"></a>
<span class="name">
<span ><b>created</b></span>
<a href="#created"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<code>created(type, data, key)</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="299"
class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:299</a></div>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-description">
<b>Parameters :</b>
<table class="params">
<thead>
<tr>
<td>Name</td>
<td>Optional</td>
</tr>
</thead>
<tbody>
<tr>
<td>type</td>
<td>
No
</td>
</tr>
<tr>
<td>data</td>
<td>
No
</td>
</tr>
<tr>
<td>key</td>
<td>
No
</td>
</tr>
</tbody>
</table>
</div>
<div>
</div>
<div class="io-description">
<b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>
</div>
<div class="io-description">
</div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="edited"></a>
<span class="name">
<span ><b>edited</b></span>
<a href="#edited"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<code>edited(type, undefined, key, isDeleting)</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="336"
class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:336</a></div>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-description">
<b>Parameters :</b>
<table class="params">
<thead>
<tr>
<td>Name</td>
<td>Optional</td>
</tr>
</thead>
<tbody>
<tr>
<td>type</td>
<td>
No
</td>
</tr>
<tr>
<td>
No
</td>
</tr>
<tr>
<td>key</td>
<td>
No
</td>
</tr>
<tr>
<td>isDeleting</td>
<td>
No
</td>
</tr>
</tbody>
</table>
</div>
<div>
</div>
<div class="io-description">
<b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>
</div>
<div class="io-description">
</div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="getNameCellClass"></a>
<span class="name">
<span ><b>getNameCellClass</b></span>
<a href="#getNameCellClass"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<code>getNameCellClass(undefined)</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="226"
class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:226</a></div>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-description">
<b>Parameters :</b>
<table class="params">
<thead>
<tr>
<td>Name</td>
<td>Optional</td>
</tr>
</thead>
<tbody>
<tr>
<td>
No
</td>
</tr>
</tbody>
</table>
</div>
<div>
</div>
<div class="io-description">
<b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>
</div>
<div class="io-description">
</div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="ngOnInit"></a>
<span class="name">
<span ><b>ngOnInit</b></span>
<a href="#ngOnInit"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<code>ngOnInit()</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="187"
class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:187</a></div>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-description">
<b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>
</div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="onCreate"></a>
<span class="name">
<span ><b>onCreate</b></span>
<a href="#onCreate"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<code>onCreate(type)</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="233"
class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:233</a></div>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-description">
<b>Parameters :</b>
<table class="params">
<thead>
<tr>
<td>Name</td>
<td>Optional</td>
</tr>
</thead>
<tbody>
<tr>
<td>type</td>
<td>
No
</td>
</tr>
</tbody>
</table>
</div>
<div>
</div>
<div class="io-description">
<b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>
</div>
<div class="io-description">
</div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="onDelete"></a>
<span class="name">
<span ><b>onDelete</b></span>
<a href="#onDelete"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<code>onDelete(type, row)</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="285"
class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:285</a></div>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-description">
<b>Parameters :</b>
<table class="params">
<thead>
<tr>
<td>Name</td>
<td>Optional</td>
</tr>
</thead>
<tbody>
<tr>
<td>type</td>
<td>
No
</td>
</tr>
<tr>
<td>row</td>
<td>
No
</td>
</tr>
</tbody>
</table>
</div>
<div>
</div>
<div class="io-description">
<b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>
</div>
<div class="io-description">
</div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="updateFilter"></a>
<span class="name">
<span ><b>updateFilter</b></span>
<a href="#updateFilter"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<code>updateFilter(event)</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="211"
class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:211</a></div>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-description">
<b>Parameters :</b>
<table class="params">
<thead>
<tr>
<td>Name</td>
<td>Optional</td>
</tr>
</thead>
<tbody>
<tr>
<td>event</td>
<td>
No
</td>
</tr>
</tbody>
</table>
</div>
<div>
</div>
<div class="io-description">
<b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>
</div>
<div class="io-description">
</div>
</td>
</tr>
</tbody>
</table>
</section>
<section>
<h3 id="inputs">
Properties
</h3>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="_editable"></a>
<span class="name">
<span class="modifier">Private</span>
<span ><b>_editable</b></span>
<a href="#_editable"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Default value : </i><code>false</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="75" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:75</a></div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="_listConfigs"></a>
<span class="name">
<span ><b>_listConfigs</b></span>
<a href="#_listConfigs"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Type : </i> <code>any[]</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="105" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:105</a></div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="_mapConfigs"></a>
<span class="name">
<span ><b>_mapConfigs</b></span>
<a href="#_mapConfigs"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Type : </i> <code>any[]</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="107" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:107</a></div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="_obj"></a>
<span class="name">
<span class="modifier">Protected</span>
<span ><b>_obj</b></span>
<a href="#_obj"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Type : </i> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="77" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:77</a></div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="_simpleConfigs"></a>
<span class="name">
<span ><b>_simpleConfigs</b></span>
<a href="#_simpleConfigs"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Type : </i> <code>any[]</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="103" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:103</a></div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="clusterName"></a>
<span class="name">
<span ><b>clusterName</b></span>
<a href="#clusterName"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="54" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:54</a></div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="columns"></a>
<span class="name">
<span ><b>columns</b></span>
<a href="#columns"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/object" target="_blank" >object</a></code>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Default value : </i><code>{
simpleConfigs: [
{
name: &#x27;Name&#x27;,
editable: false,
},
{
name: &#x27;Value&#x27;,
editable: false,
},
],
listConfigs: [
{
name: &#x27;Value&#x27;,
editable: false,
},
],
}</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="84" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:84</a></div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="headerHeight"></a>
<span class="name">
<span ><b>headerHeight</b></span>
<a href="#headerHeight"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Default value : </i><code>Settings.tableHeaderHeight</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="80" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:80</a></div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="isLoading"></a>
<span class="name">
<span ><b>isLoading</b></span>
<a href="#isLoading"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Default value : </i><code>true</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="53" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:53</a></div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="keyword"></a>
<span class="name">
<span ><b>keyword</b></span>
<a href="#keyword"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Default value : </i><code>&#x27;&#x27;</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="83" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:83</a></div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="listTable"></a>
<span class="name">
<span ><b>listTable</b></span>
<a href="#listTable"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<b>Decorators : </b>
<br />
<code>
@ViewChild(&#x27;listTable&#x27;, {static: true})<br />
</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="57" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:57</a></div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="mapTable"></a>
<span class="name">
<span ><b>mapTable</b></span>
<a href="#mapTable"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<b>Decorators : </b>
<br />
<code>
@ViewChild(&#x27;mapTable&#x27;, {static: true})<br />
</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="58" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:58</a></div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="node"></a>
<span class="name">
<span class="modifier">Protected</span>
<span ><b>node</b></span>
<a href="#node"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Type : </i> <code><a href="../classes/Node.html" target="_self" >Node</a></code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="78" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:78</a></div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="resourceName"></a>
<span class="name">
<span ><b>resourceName</b></span>
<a href="#resourceName"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="55" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:55</a></div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="rowHeight"></a>
<span class="name">
<span ><b>rowHeight</b></span>
<a href="#rowHeight"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Default value : </i><code>Settings.tableRowHeight</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="81" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:81</a></div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="simpleTable"></a>
<span class="name">
<span ><b>simpleTable</b></span>
<a href="#simpleTable"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<b>Decorators : </b>
<br />
<code>
@ViewChild(&#x27;simpleTable&#x27;, {static: true})<br />
</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="56" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:56</a></div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="sorts"></a>
<span class="name">
<span ><b>sorts</b></span>
<a href="#sorts"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Type : </i> <code>[]</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Default value : </i><code>[{ prop: &#x27;name&#x27;, dir: &#x27;asc&#x27; }]</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="82" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:82</a></div>
</td>
</tr>
</tbody>
</table>
</section>
<section>
<h3 id="accessors">
Accessors
</h3>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="obj"></a>
<span class="name"><b>obj</b><a href="#obj"><span class="icon ion-ios-link"></span></a></span>
</td>
</tr>
<tr>
<td class="col-md-4">
<span class="accessor"><b>get</b><code>obj()</code></span>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="117" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:117</a></div>
</td>
</tr>
<tr>
<td class="col-md-4">
<span class="accessor"><b>set</b><code>obj(value: <a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank">any</a>)</code></span>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="111" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:111</a></div>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-description">
<b>Parameters :</b>
<table class="params">
<thead>
<tr>
<td>Name</td>
<td>Type</td>
<td>Optional</td>
</tr>
</thead>
<tbody>
<tr>
<td>value</td>
<td>
<code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>
</td>
<td>
No
</td>
</tr>
</tbody>
</table>
</div>
<div>
</div>
<div class="io-description">
<b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>
</div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="objString"></a>
<span class="name"><b>objString</b><a href="#objString"><span class="icon ion-ios-link"></span></a></span>
</td>
</tr>
<tr>
<td class="col-md-4">
<span class="accessor"><b>get</b><code>objString()</code></span>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="129" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:129</a></div>
</td>
</tr>
<tr>
<td class="col-md-4">
<span class="accessor"><b>set</b><code>objString(value: string | null)</code></span>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="120" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:120</a></div>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-description">
<b>Parameters :</b>
<table class="params">
<thead>
<tr>
<td>Name</td>
<td>Type</td>
<td>Optional</td>
</tr>
</thead>
<tbody>
<tr>
<td>value</td>
<td>
<code>string | null</code>
</td>
<td>
No
</td>
</tr>
</tbody>
</table>
</div>
<div>
</div>
<div class="io-description">
<b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>
</div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="editable"></a>
<span class="name"><b>editable</b><a href="#editable"><span class="icon ion-ios-link"></span></a></span>
</td>
</tr>
<tr>
<td class="col-md-4">
<span class="accessor"><b>get</b><code>editable()</code></span>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="137" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:137</a></div>
</td>
</tr>
<tr>
<td class="col-md-4">
<span class="accessor"><b>set</b><code>editable(value: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/boolean" target="_blank">boolean</a>)</code></span>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="132" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:132</a></div>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-description">
<b>Parameters :</b>
<table class="params">
<thead>
<tr>
<td>Name</td>
<td>Type</td>
<td>Optional</td>
</tr>
</thead>
<tbody>
<tr>
<td>value</td>
<td>
<code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/boolean" target="_blank" >boolean</a></code>
</td>
<td>
No
</td>
</tr>
</tbody>
</table>
</div>
<div>
</div>
<div class="io-description">
<b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>
</div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="simpleConfigs"></a>
<span class="name"><b>simpleConfigs</b><a href="#simpleConfigs"><span class="icon ion-ios-link"></span></a></span>
</td>
</tr>
<tr>
<td class="col-md-4">
<span class="accessor"><b>get</b><code>simpleConfigs()</code></span>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="140" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:140</a></div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="listConfigs"></a>
<span class="name"><b>listConfigs</b><a href="#listConfigs"><span class="icon ion-ios-link"></span></a></span>
</td>
</tr>
<tr>
<td class="col-md-4">
<span class="accessor"><b>get</b><code>listConfigs()</code></span>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="150" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:150</a></div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="mapConfigs"></a>
<span class="name"><b>mapConfigs</b><a href="#mapConfigs"><span class="icon ion-ios-link"></span></a></span>
</td>
</tr>
<tr>
<td class="col-md-4">
<span class="accessor"><b>get</b><code>mapConfigs()</code></span>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="164" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:164</a></div>
</td>
</tr>
</tbody>
</table>
</section>
</div>
<div class="tab-pane fade tab-source-code" id="c-source">
<pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import {
Component,
OnInit,
Input,
Output,
ViewChild,
ViewEncapsulation,
EventEmitter,
} from &#x27;@angular/core&#x27;;
import { ActivatedRoute } from &#x27;@angular/router&#x27;;
import { MatDialog } from &#x27;@angular/material/dialog&#x27;;
import * as _ from &#x27;lodash&#x27;;
// import * as ace from &#x27;ace-builds/src-noconflict/ace&#x27;;
import &#x27;ace-builds&#x27;;
import &#x27;ace-builds/webpack-resolver&#x27;;
import &#x27;ace-builds/src-noconflict/mode-json&#x27;;
import &#x27;ace-builds/src-noconflict/theme-chrome&#x27;;
import { config } from &#x27;ace-builds&#x27;;
import { ResourceService } from &#x27;../../resource/shared/resource.service&#x27;;
import { HelperService } from &#x27;../../shared/helper.service&#x27;;
import { Node } from &#x27;../models/node.model&#x27;;
import { Settings } from &#x27;../../core/settings&#x27;;
import { InputDialogComponent } from &#x27;../dialog/input-dialog/input-dialog.component&#x27;;
import { ConfirmDialogComponent } from &#x27;../dialog/confirm-dialog/confirm-dialog.component&#x27;;
export type IdealState &#x3D; {
id: string;
simpleFields?: { [key: string]: any };
listFields?: { [key: string]: any };
mapFields?: { [key: string]: any };
};
config.set(
&#x27;basePath&#x27;,
&#x27;https://cdn.jsdelivr.net/npm/ace-builds@1.6.0/src-noconflict/&#x27;
);
config.setModuleUrl(
&#x27;ace/mode/javascript_worker&#x27;,
&#x27;https://cdn.jsdelivr.net/npm/ace-builds@1.6.0/src-noconflict/worker-json.js&#x27;
);
@Component({
selector: &#x27;hi-node-viewer&#x27;,
templateUrl: &#x27;./node-viewer.component.html&#x27;,
styleUrls: [&#x27;./node-viewer.component.scss&#x27;],
providers: [ResourceService],
// Since we are importing external styles in this component
// we will not use Shadow DOM at all to make sure the styles apply
encapsulation: ViewEncapsulation.None,
})
export class NodeViewerComponent implements OnInit {
isLoading &#x3D; true;
clusterName: string;
resourceName: string;
@ViewChild(&#x27;simpleTable&#x27;, { static: true }) simpleTable;
@ViewChild(&#x27;listTable&#x27;, { static: true }) listTable;
@ViewChild(&#x27;mapTable&#x27;, { static: true }) mapTable;
@Output(&#x27;update&#x27;)
change: EventEmitter&lt;Node&gt; &#x3D; new EventEmitter&lt;Node&gt;();
@Output(&#x27;create&#x27;)
create: EventEmitter&lt;Node&gt; &#x3D; new EventEmitter&lt;Node&gt;();
@Output(&#x27;delete&#x27;)
delete: EventEmitter&lt;Node&gt; &#x3D; new EventEmitter&lt;Node&gt;();
@Input()
unlockable &#x3D; false;
@Input()
loadingIndicator &#x3D; false;
private _editable &#x3D; false;
protected _obj: any;
protected node: Node;
headerHeight &#x3D; Settings.tableHeaderHeight;
rowHeight &#x3D; Settings.tableRowHeight;
sorts &#x3D; [{ prop: &#x27;name&#x27;, dir: &#x27;asc&#x27; }];
keyword &#x3D; &#x27;&#x27;;
columns &#x3D; {
simpleConfigs: [
{
name: &#x27;Name&#x27;,
editable: false,
},
{
name: &#x27;Value&#x27;,
editable: false,
},
],
listConfigs: [
{
name: &#x27;Value&#x27;,
editable: false,
},
],
};
_simpleConfigs: any[];
_listConfigs: any[];
_mapConfigs: any[];
// MODE 1: use directly in components
@Input()
set obj(value: any) {
if (value !&#x3D;&#x3D; null) {
this._obj &#x3D; value;
this.node &#x3D; new Node(value);
}
}
get obj(): any {
return this._obj;
}
set objString(value: string | null) {
let parsedValue &#x3D; null;
if (value &amp;&amp; value !&#x3D;&#x3D; null) {
parsedValue &#x3D; JSON.parse(value);
}
this.obj &#x3D; parsedValue;
this.node &#x3D; new Node(parsedValue);
}
get objString(): string {
return JSON.stringify(this.obj, null, 2);
}
set editable(value: boolean) {
this._editable &#x3D; value;
this.columns.simpleConfigs[1].editable &#x3D; this._editable;
this.columns.listConfigs[0].editable &#x3D; this._editable;
}
get editable() {
return this._editable;
}
get simpleConfigs(): any[] {
return this.node
? _.filter(
this.node.simpleFields,
(config) &#x3D;&gt;
config.name.toLowerCase().indexOf(this.keyword) &gt;&#x3D; 0 ||
config.value.toLowerCase().indexOf(this.keyword) &gt;&#x3D; 0
)
: [];
}
get listConfigs(): any[] {
return this.node
? _.filter(
this.node.listFields,
(config) &#x3D;&gt;
config.name.toLowerCase().indexOf(this.keyword) &gt;&#x3D; 0 ||
_.some(
config.value as any[],
(subconfig) &#x3D;&gt;
subconfig.value.toLowerCase().indexOf(this.keyword) &gt;&#x3D; 0
)
)
: [];
}
get mapConfigs(): any[] {
return this.node
? _.filter(
this.node.mapFields,
(config) &#x3D;&gt;
config.name.toLowerCase().trim().indexOf(this.keyword) &gt;&#x3D; 0 ||
_.some(
config.value as any[],
(subconfig) &#x3D;&gt;
subconfig.name.toLowerCase().trim().indexOf(this.keyword) &gt;&#x3D;
0 || subconfig.value.toLowerCase().indexOf(this.keyword) &gt;&#x3D; 0
)
)
: [];
}
public constructor(
protected dialog: MatDialog,
protected route: ActivatedRoute,
protected resourceService: ResourceService,
protected helper: HelperService
) {}
ngOnInit() {
// MODE 2: use in router
if (this.route.snapshot.data.path) {
const path &#x3D; this.route.snapshot.data.path;
// try parent data first
this.obj &#x3D; _.get(this.route.parent, &#x60;snapshot.data.${path}&#x60;);
if (this.obj &#x3D;&#x3D; null) {
// try self data then
this.obj &#x3D; _.get(this.route.snapshot.data, path);
}
this.objString &#x3D; JSON.stringify(this.obj, null, 2);
}
if (this.route.parent) {
this.clusterName &#x3D;
this.route.parent.snapshot.params.name ||
this.route.parent.snapshot.params.cluster_name;
this.resourceName &#x3D; this.route.parent.snapshot.params.resource_name;
}
}
updateFilter(event) {
this.keyword &#x3D; event.target.value.toLowerCase().trim();
// Whenever the filter changes, always go back to the first page
if (this.simpleTable) {
this.simpleTable.offset &#x3D; 0;
}
if (this.listTable) {
this.listTable.offset &#x3D; 0;
}
if (this.mapTable) {
this.mapTable.offset &#x3D; 0;
}
}
getNameCellClass({ value }): any {
return {
// highlight HELIX own configs
primary: _.snakeCase(value).toUpperCase() &#x3D;&#x3D;&#x3D; value,
};
}
onCreate(type) {
this.dialog
.open(InputDialogComponent, {
data: {
title: &#x60;Create a new ${type} configuration&#x60;,
message:
&quot;Please enter the name of the new configuration. You&#x27;ll be able to add values later:&quot;,
values: {
name: {
label: &#x27;the name of the new configuration&#x27;,
},
},
},
})
.afterClosed()
.subscribe((result) &#x3D;&gt; {
if (result) {
const entry &#x3D; [
{
name: result.name.value,
value: [],
},
];
const newNode: Node &#x3D; new Node(null);
if (type &#x3D;&#x3D;&#x3D; &#x27;list&#x27;) {
newNode.listFields &#x3D; entry;
} else if (type &#x3D;&#x3D;&#x3D; &#x27;map&#x27;) {
newNode.mapFields &#x3D; entry;
}
this.create.emit(newNode);
}
});
}
beforeDelete(type, row) {
this.dialog
.open(ConfirmDialogComponent, {
data: {
title: &#x27;Confirmation&#x27;,
message: &#x27;Are you sure you want to delete this configuration?&#x27;,
},
})
.afterClosed()
.subscribe((result) &#x3D;&gt; {
if (result) {
this.onDelete(type, row);
}
});
}
onDelete(type, row) {
const newNode: Node &#x3D; new Node(null);
if (type &#x3D;&#x3D;&#x3D; &#x27;simple&#x27;) {
newNode.appendSimpleField(row.name, &#x27;&#x27;);
} else if (type &#x3D;&#x3D;&#x3D; &#x27;list&#x27;) {
newNode.listFields &#x3D; [{ name: row.name.trim(), value: [] }];
} else if (type &#x3D;&#x3D;&#x3D; &#x27;map&#x27;) {
newNode.mapFields &#x3D; [{ name: row.name.trim(), value: null }];
}
this.delete.emit(newNode);
}
created(type, data, key) {
const newNode: Node &#x3D; new Node(null);
switch (type) {
case &#x27;simple&#x27;:
newNode.appendSimpleField(data.name.value, data.value.value);
break;
case &#x27;list&#x27;:
if (key) {
const entry &#x3D; _.find(this.node.listFields, { name: key });
entry.value.push({
name: &#x27;&#x27;,
value: data.value.value,
});
newNode.listFields.push(entry);
}
break;
case &#x27;map&#x27;:
if (key) {
const entry &#x3D; _.find(this.node.mapFields, { name: key.trim() });
_.forEach(entry.value, (item: any) &#x3D;&gt; {
newNode.appendMapField(key, item.name, item.value);
});
newNode.appendMapField(key, data.name.value, data.value.value);
}
break;
}
this.create.emit(newNode);
}
edited(type, { row, column, value }, key, isDeleting) {
if (!isDeleting &amp;&amp; column.name !&#x3D;&#x3D; &#x27;Value&#x27;) {
return;
}
const newNode: Node &#x3D; new Node(null);
switch (type) {
case &#x27;simple&#x27;:
newNode.appendSimpleField(row.name, value);
break;
case &#x27;list&#x27;:
if (key) {
const entry &#x3D; _.find(this.node.listFields, { name: key });
const index &#x3D; _.findIndex(entry.value, { value: row.value });
if (isDeleting) {
entry.value.splice(index, 1);
} else {
entry.value[index].value &#x3D; value;
}
newNode.listFields.push(entry);
}
break;
case &#x27;map&#x27;:
if (key) {
// have to fetch all other configs under this key
const entry &#x3D; _.find(this.node.mapFields, { name: key.trim() });
newNode.mapFields &#x3D; [{ name: key.trim(), value: [] }];
_.forEach(entry.value, (item: any) &#x3D;&gt; {
if (item.name &#x3D;&#x3D;&#x3D; row.name) {
if (!isDeleting) {
newNode.appendMapField(key.trim(), item.name.trim(), value);
}
} else {
newNode.appendMapField(key.trim(), item.name.trim(), item.value);
}
});
}
break;
}
const path &#x3D; this?.route?.snapshot?.data?.path;
if (path &amp;&amp; path &#x3D;&#x3D;&#x3D; &#x27;idealState&#x27;) {
const idealState: IdealState &#x3D; {
id: this.resourceName,
};
// format the payload the way that helix-rest expects
// before: { simpleFields: [{ name: &#x27;NUM_PARTITIONS&#x27;, value: 2 }] };
// after: { simpleFields: { NUM_PARTITIONS: 2 } };
function appendIdealStateProperty(property: keyof Node) {
if (Array.isArray(newNode[property]) &amp;&amp; newNode[property].length &gt; 0) {
idealState[property] &#x3D; {} as any;
(newNode[property] as any[]).forEach((field) &#x3D;&gt; {
idealState[property][field.name] &#x3D; field.value;
});
}
}
Object.keys(newNode).forEach((key) &#x3D;&gt;
appendIdealStateProperty(key as keyof Node)
);
const observer &#x3D; this.resourceService.setIdealState(
this.clusterName,
this.resourceName,
idealState
);
if (observer) {
this.isLoading &#x3D; true;
observer.subscribe(
() &#x3D;&gt; {
this.helper.showSnackBar(&#x27;Ideal State updated!&#x27;);
},
(error) &#x3D;&gt; {
this.helper.showError(error);
this.isLoading &#x3D; false;
},
() &#x3D;&gt; (this.isLoading &#x3D; false)
);
}
}
this.change.emit(newNode);
}
}
</code></pre>
</div>
<div class="tab-pane fade " id="c-templateData">
<pre class="line-numbers"><code class="language-html">&lt;!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you under the Apache License, Version 2.0 (the
~ &quot;License&quot;); you may not use this file except in compliance
~ with the License. You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
--&gt;
&lt;section
class&#x3D;&quot;node-viewer&quot;
fxLayout&#x3D;&quot;column&quot;
fxLayoutAlign&#x3D;&quot;center center&quot;
fxLayoutGap&#x3D;&quot;10px&quot;
&gt;
&lt;mat-progress-bar
*ngIf&#x3D;&quot;loadingIndicator&quot;
mode&#x3D;&quot;indeterminate&quot;
&gt;&lt;/mat-progress-bar&gt;
&lt;mat-button-toggle-group #group&#x3D;&quot;matButtonToggleGroup&quot; value&#x3D;&quot;table&quot;&gt;
&lt;mat-button-toggle value&#x3D;&quot;table&quot;&gt; Table View &lt;/mat-button-toggle&gt;
&lt;mat-button-toggle value&#x3D;&quot;tree&quot;&gt; Tree View &lt;/mat-button-toggle&gt;
&lt;mat-button-toggle value&#x3D;&quot;json&quot;&gt; JSON View &lt;/mat-button-toggle&gt;
&lt;/mat-button-toggle-group&gt;
&lt;section class&#x3D;&quot;viewer&quot; [ngSwitch]&#x3D;&quot;group.value&quot; fxFlexFill&gt;
&lt;ngx-json-viewer *ngSwitchCase&#x3D;&quot;&#x27;tree&#x27;&quot; [json]&#x3D;&quot;obj&quot;&gt;&lt;/ngx-json-viewer&gt;
&lt;ace-editor
*ngSwitchCase&#x3D;&quot;&#x27;json&#x27;&quot;
[(text)]&#x3D;&quot;objString&quot;
mode&#x3D;&quot;json&quot;
theme&#x3D;&quot;chrome&quot;
[options]&#x3D;&quot;{ useWorker: false }&quot;
style&#x3D;&quot;min-height: 300px&quot;
#editor
&gt;
&lt;/ace-editor&gt;
&lt;section *ngSwitchCase&#x3D;&quot;&#x27;table&#x27;&quot;&gt;
&lt;!-- TODO vxu: use mat-simple-table when it&#x27;s available --&gt;
&lt;section fxLayout&#x3D;&quot;row&quot; fxLayoutAlign&#x3D;&quot;center center&quot;&gt;
&lt;span fxFlex&#x3D;&quot;1 1 auto&quot;&gt;&lt;/span&gt;
&lt;mat-icon&gt;search&lt;/mat-icon&gt;
&lt;mat-form-field class&#x3D;&quot;search-form-field&quot;&gt;
&lt;input
matInput
placeholder&#x3D;&quot;Type to filter the fields...&quot;
(keyup)&#x3D;&quot;updateFilter($event)&quot;
/&gt;
&lt;/mat-form-field&gt;
&lt;span fxFlex&#x3D;&quot;1 1 auto&quot;&gt;&lt;/span&gt;
&lt;!-- *ngIf&#x3D;&quot;unlockable&quot; --&gt;
&lt;button
mat-button
(click)&#x3D;&quot;editable &#x3D; !editable&quot;
[matTooltip]&#x3D;&quot;
editable
? &#x27;Click to prevent further changes&#x27;
: &#x27;Click to make changes&#x27;
&quot;
&gt;
&lt;mat-icon&gt;{{ editable ? &#x27;lock_open&#x27; : &#x27;lock&#x27; }}&lt;/mat-icon&gt;
{{ editable ? &#x27;Unlocked&#x27; : &#x27;Locked&#x27; }}
&lt;/button&gt;
&lt;/section&gt;
&lt;mat-card&gt;
&lt;mat-card-header&gt;
&lt;mat-card-title&gt;
Simple Fields
&lt;span *ngIf&#x3D;&quot;simpleConfigs.length &#x3D;&#x3D; 0&quot;&gt;is empty.&lt;/span&gt;
&lt;span *ngIf&#x3D;&quot;keyword&quot; class&#x3D;&quot;primary&quot;&gt;(filtered)&lt;/span&gt;
&lt;/mat-card-title&gt;
&lt;/mat-card-header&gt;
&lt;mat-card-content&gt;
&lt;hi-data-table
*ngIf&#x3D;&quot;simpleConfigs.length || editable&quot;
[rows]&#x3D;&quot;simpleConfigs&quot;
[sorts]&#x3D;&quot;sorts&quot;
[columns]&#x3D;&quot;columns.simpleConfigs&quot;
[deletable]&#x3D;&quot;editable&quot;
[insertable]&#x3D;&quot;editable&quot;
(update)&#x3D;&quot;edited(&#x27;simple&#x27;, $event)&quot;
(create)&#x3D;&quot;created(&#x27;simple&#x27;, $event)&quot;
(delete)&#x3D;&quot;onDelete(&#x27;simple&#x27;, $event.row)&quot;
&gt;
&lt;/hi-data-table&gt;
&lt;/mat-card-content&gt;
&lt;/mat-card&gt;
&lt;mat-card&gt;
&lt;mat-card-header&gt;
&lt;mat-card-title&gt;
List Fields
&lt;span *ngIf&#x3D;&quot;listConfigs.length &#x3D;&#x3D; 0&quot;&gt;is empty.&lt;/span&gt;
&lt;span *ngIf&#x3D;&quot;keyword&quot; class&#x3D;&quot;primary&quot;&gt;(filtered)&lt;/span&gt;
&lt;/mat-card-title&gt;
&lt;/mat-card-header&gt;
&lt;mat-card-content&gt;
&lt;ngx-datatable
*ngIf&#x3D;&quot;listConfigs.length || editable&quot;
#listTable
class&#x3D;&quot;material&quot;
[headerHeight]&#x3D;&quot;headerHeight&quot;
rowHeight&#x3D;&quot;auto&quot;
[footerHeight]&#x3D;&quot;headerHeight&quot;
columnMode&#x3D;&quot;force&quot;
[rows]&#x3D;&quot;listConfigs&quot;
[sorts]&#x3D;&quot;sorts&quot;
[limit]&#x3D;&quot;10&quot;
&gt;
&lt;ngx-datatable-column
*ngIf&#x3D;&quot;editable&quot;
[width]&#x3D;&quot;40&quot;
[resizeable]&#x3D;&quot;false&quot;
[draggable]&#x3D;&quot;false&quot;
[canAutoResize]&#x3D;&quot;false&quot;
&gt;
&lt;ng-template let-row&#x3D;&quot;row&quot; ngx-datatable-cell-template&gt;
&lt;button
mat-icon-button
class&#x3D;&quot;delete-button&quot;
matTooltip&#x3D;&quot;Click to delete&quot;
(click)&#x3D;&quot;beforeDelete(&#x27;list&#x27;, row)&quot;
&gt;
&lt;mat-icon&gt;delete_forever&lt;/mat-icon&gt;
&lt;/button&gt;
&lt;/ng-template&gt;
&lt;/ngx-datatable-column&gt;
&lt;ngx-datatable-column
name&#x3D;&quot;Name&quot;
[width]&#x3D;&quot;80&quot;
[cellClass]&#x3D;&quot;getNameCellClass&quot;
&gt;&lt;/ngx-datatable-column&gt;
&lt;ngx-datatable-column name&#x3D;&quot;Value&quot; [width]&#x3D;&quot;400&quot;&gt;
&lt;ng-template
let-row&#x3D;&quot;row&quot;
let-value&#x3D;&quot;value&quot;
ngx-datatable-cell-template
&gt;
&lt;hi-data-table
[rows]&#x3D;&quot;value&quot;
[sorts]&#x3D;&quot;sorts&quot;
[columns]&#x3D;&quot;columns.listConfigs&quot;
[deletable]&#x3D;&quot;editable&quot;
[insertable]&#x3D;&quot;editable&quot;
(update)&#x3D;&quot;edited(&#x27;list&#x27;, $event, row.name)&quot;
(create)&#x3D;&quot;created(&#x27;list&#x27;, $event, row.name)&quot;
(delete)&#x3D;&quot;edited(&#x27;list&#x27;, $event, row.name, true)&quot;
&gt;
&lt;/hi-data-table&gt;
&lt;/ng-template&gt;
&lt;/ngx-datatable-column&gt;
&lt;ngx-datatable-footer&gt;
&lt;ng-template
ngx-datatable-footer-template
let-rowCount&#x3D;&quot;rowCount&quot;
let-pageSize&#x3D;&quot;pageSize&quot;
let-curPage&#x3D;&quot;curPage&quot;
&gt;
&lt;section
class&#x3D;&quot;footer&quot;
fxLayout&#x3D;&quot;row&quot;
fxLayoutAlign&#x3D;&quot;space-between center&quot;
&gt;
&lt;button
mat-button
*ngIf&#x3D;&quot;editable&quot;
(click)&#x3D;&quot;onCreate(&#x27;list&#x27;)&quot;
&gt;
&lt;mat-icon&gt;add&lt;/mat-icon&gt;
Add new entry
&lt;/button&gt;
&lt;section&gt;{{ rowCount }} total&lt;/section&gt;
&lt;section&gt;
&lt;datatable-pager
[pagerLeftArrowIcon]&#x3D;&quot;&#x27;datatable-icon-left&#x27;&quot;
[pagerRightArrowIcon]&#x3D;&quot;&#x27;datatable-icon-right&#x27;&quot;
[pagerPreviousIcon]&#x3D;&quot;&#x27;datatable-icon-prev&#x27;&quot;
[pagerNextIcon]&#x3D;&quot;&#x27;datatable-icon-skip&#x27;&quot;
[page]&#x3D;&quot;curPage&quot;
[size]&#x3D;&quot;pageSize&quot;
[count]&#x3D;&quot;rowCount&quot;
[hidden]&#x3D;&quot;!(rowCount / pageSize &gt; 1)&quot;
(change)&#x3D;&quot;listTable.onFooterPage($event)&quot;
&gt;
&lt;/datatable-pager&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;/ng-template&gt;
&lt;/ngx-datatable-footer&gt;
&lt;/ngx-datatable&gt;
&lt;/mat-card-content&gt;
&lt;/mat-card&gt;
&lt;mat-card&gt;
&lt;mat-card-header&gt;
&lt;mat-card-title&gt;
Map Fields
&lt;span *ngIf&#x3D;&quot;mapConfigs.length &#x3D;&#x3D; 0&quot;&gt;is empty.&lt;/span&gt;
&lt;span *ngIf&#x3D;&quot;keyword&quot; class&#x3D;&quot;primary&quot;&gt;(filtered)&lt;/span&gt;
&lt;/mat-card-title&gt;
&lt;/mat-card-header&gt;
&lt;mat-card-content&gt;
&lt;ngx-datatable
*ngIf&#x3D;&quot;mapConfigs.length || editable&quot;
#mapTable
class&#x3D;&quot;material&quot;
[headerHeight]&#x3D;&quot;headerHeight&quot;
rowHeight&#x3D;&quot;auto&quot;
[footerHeight]&#x3D;&quot;headerHeight&quot;
columnMode&#x3D;&quot;force&quot;
[rows]&#x3D;&quot;mapConfigs&quot;
[sorts]&#x3D;&quot;sorts&quot;
[limit]&#x3D;&quot;10&quot;
&gt;
&lt;ngx-datatable-column
*ngIf&#x3D;&quot;editable&quot;
[width]&#x3D;&quot;40&quot;
[resizeable]&#x3D;&quot;false&quot;
[draggable]&#x3D;&quot;false&quot;
[canAutoResize]&#x3D;&quot;false&quot;
&gt;
&lt;ng-template let-row&#x3D;&quot;row&quot; ngx-datatable-cell-template&gt;
&lt;button
mat-icon-button
class&#x3D;&quot;delete-button&quot;
matTooltip&#x3D;&quot;Click to delete&quot;
(click)&#x3D;&quot;beforeDelete(&#x27;map&#x27;, row)&quot;
&gt;
&lt;mat-icon&gt;delete_forever&lt;/mat-icon&gt;
&lt;/button&gt;
&lt;/ng-template&gt;
&lt;/ngx-datatable-column&gt;
&lt;ngx-datatable-column
name&#x3D;&quot;Name&quot;
[width]&#x3D;&quot;80&quot;
[cellClass]&#x3D;&quot;getNameCellClass&quot;
&gt;&lt;/ngx-datatable-column&gt;
&lt;ngx-datatable-column name&#x3D;&quot;Value&quot; [width]&#x3D;&quot;500&quot;&gt;
&lt;ng-template
let-row&#x3D;&quot;row&quot;
let-value&#x3D;&quot;value&quot;
ngx-datatable-cell-template
&gt;
&lt;hi-data-table
[rows]&#x3D;&quot;value&quot;
[sorts]&#x3D;&quot;sorts&quot;
[columns]&#x3D;&quot;columns.simpleConfigs&quot;
[deletable]&#x3D;&quot;editable&quot;
[insertable]&#x3D;&quot;editable&quot;
(update)&#x3D;&quot;edited(&#x27;map&#x27;, $event, row.name)&quot;
(create)&#x3D;&quot;created(&#x27;map&#x27;, $event, row.name)&quot;
(delete)&#x3D;&quot;edited(&#x27;map&#x27;, $event, row.name, true)&quot;
&gt;
&lt;/hi-data-table&gt;
&lt;/ng-template&gt;
&lt;/ngx-datatable-column&gt;
&lt;ngx-datatable-footer&gt;
&lt;ng-template
ngx-datatable-footer-template
let-rowCount&#x3D;&quot;rowCount&quot;
let-pageSize&#x3D;&quot;pageSize&quot;
let-curPage&#x3D;&quot;curPage&quot;
&gt;
&lt;section
class&#x3D;&quot;footer&quot;
fxLayout&#x3D;&quot;row&quot;
fxLayoutAlign&#x3D;&quot;space-between center&quot;
&gt;
&lt;button mat-button *ngIf&#x3D;&quot;editable&quot; (click)&#x3D;&quot;onCreate(&#x27;map&#x27;)&quot;&gt;
&lt;mat-icon&gt;add&lt;/mat-icon&gt;
Add new entry
&lt;/button&gt;
&lt;section&gt;{{ rowCount }} total&lt;/section&gt;
&lt;section&gt;
&lt;datatable-pager
[pagerLeftArrowIcon]&#x3D;&quot;&#x27;datatable-icon-left&#x27;&quot;
[pagerRightArrowIcon]&#x3D;&quot;&#x27;datatable-icon-right&#x27;&quot;
[pagerPreviousIcon]&#x3D;&quot;&#x27;datatable-icon-prev&#x27;&quot;
[pagerNextIcon]&#x3D;&quot;&#x27;datatable-icon-skip&#x27;&quot;
[page]&#x3D;&quot;curPage&quot;
[size]&#x3D;&quot;pageSize&quot;
[count]&#x3D;&quot;rowCount&quot;
[hidden]&#x3D;&quot;!(rowCount / pageSize &gt; 1)&quot;
(change)&#x3D;&quot;mapTable.onFooterPage($event)&quot;
&gt;
&lt;/datatable-pager&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;/ng-template&gt;
&lt;/ngx-datatable-footer&gt;
&lt;/ngx-datatable&gt;
&lt;/mat-card-content&gt;
&lt;/mat-card&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;/section&gt;
</code></pre>
</div>
<div class="tab-pane fade " id="c-styleData">
<p class="comment">
<code>./node-viewer.component.scss</code>
</p>
<pre class="line-numbers"><code class="language-scss">@use &#x27;@angular/material&#x27; as mat;
@import &#x27;src/theme.scss&#x27;;
.node-viewer {
padding: 10px;
}
.primary {
color: mat.get-color-from-palette($hi-primary);
}
.search-form-field {
width: 300px;
padding: 10px 0 0 5px;
}
mat-card {
margin-bottom: 10px;
}
ngx-datatable {
word-break: break-all;
}
.footer {
width: 100%;
padding: 0 20px;
}
.delete-button {
width: 24px;
height: 24px;
line-height: 24px;
.mat-icon {
@include md-icon-size(20px);
&amp;:hover {
color: mat.get-color-from-palette($hi-warn);
}
}
}
</code></pre>
</div>
<div class="tab-pane fade " id="c-tree">
<div id="tree-container"></div>
<div class="tree-legend">
<div class="title">
<b>Legend</b>
</div>
<div>
<div class="color htmlelement"></div><span>Html element</span>
</div>
<div>
<div class="color component"></div><span>Component</span>
</div>
<div>
<div class="color directive"></div><span>Html element with directive</span>
</div>
</div>
</div>
</div>
<script src="../js/libs/vis.min.js"></script>
<script src="../js/libs/htmlparser.js"></script>
<script src="../js/libs/deep-iterator.js"></script>
<script>
var COMPONENT_TEMPLATE = '<div><!-- ~ Licensed to the Apache Software Foundation (ASF) under one ~ or more contributor license agreements. See the NOTICE file ~ distributed with this work for additional information ~ regarding copyright ownership. The ASF licenses this file ~ to you under the Apache License, Version 2.0 (the ~ "License"); you may not use this file except in compliance ~ with the License. You may obtain a copy of the License at ~ ~ http://www.apache.org/licenses/LICENSE-2.0 ~ ~ Unless required by applicable law or agreed to in writing, ~ software distributed under the License is distributed on an ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY ~ KIND, either express or implied. See the License for the ~ specific language governing permissions and limitations ~ under the License. --><section class="node-viewer" fxLayout="column" fxLayoutAlign="center center" fxLayoutGap="10px"> <mat-progress-bar *ngIf="loadingIndicator" mode="indeterminate" ></mat-progress-bar> <mat-button-toggle-group #group="matButtonToggleGroup" value="table"> <mat-button-toggle value="table"> Table View </mat-button-toggle> <mat-button-toggle value="tree"> Tree View </mat-button-toggle> <mat-button-toggle value="json"> JSON View </mat-button-toggle> </mat-button-toggle-group> <section class="viewer" [ngSwitch]="group.value" fxFlexFill> <ngx-json-viewer *ngSwitchCase="\'tree\'" [json]="obj"></ngx-json-viewer> <ace-editor *ngSwitchCase="\'json\'" [(text)]="objString" mode="json" theme="chrome" [options]="{ useWorker: false }" style="min-height: 300px" #editor > </ace-editor> <section *ngSwitchCase="\'table\'"> <!-- TODO vxu: use mat-simple-table when it\'s available --> <section fxLayout="row" fxLayoutAlign="center center"> <span fxFlex="1 1 auto"></span> <mat-icon>search</mat-icon> <mat-form-field class="search-form-field"> <input matInput placeholder="Type to filter the fields..." (keyup)="updateFilter($event)" /> </mat-form-field> <span fxFlex="1 1 auto"></span> <!-- *ngIf="unlockable" --> <button mat-button (click)="editable = !editable" [matTooltip]=" editable ? \'Click to prevent further changes\' : \'Click to make changes\' " > <mat-icon>{{ editable ? \'lock_open\' : \'lock\' }}</mat-icon> {{ editable ? \'Unlocked\' : \'Locked\' }} </button> </section> <mat-card> <mat-card-header> <mat-card-title> Simple Fields <span *ngIf="simpleConfigs.length == 0">is empty.</span> <span *ngIf="keyword" class="primary">(filtered)</span> </mat-card-title> </mat-card-header> <mat-card-content> <hi-data-table *ngIf="simpleConfigs.length || editable" [rows]="simpleConfigs" [sorts]="sorts" [columns]="columns.simpleConfigs" [deletable]="editable" [insertable]="editable" (update)="edited(\'simple\', $event)" (create)="created(\'simple\', $event)" (delete)="onDelete(\'simple\', $event.row)" > </hi-data-table> </mat-card-content> </mat-card> <mat-card> <mat-card-header> <mat-card-title> List Fields <span *ngIf="listConfigs.length == 0">is empty.</span> <span *ngIf="keyword" class="primary">(filtered)</span> </mat-card-title> </mat-card-header> <mat-card-content> <ngx-datatable *ngIf="listConfigs.length || editable" #listTable class="material" [headerHeight]="headerHeight" rowHeight="auto" [footerHeight]="headerHeight" columnMode="force" [rows]="listConfigs" [sorts]="sorts" [limit]="10" > <ngx-datatable-column *ngIf="editable" [width]="40" [resizeable]="false" [draggable]="false" [canAutoResize]="false" > <ng-template let-row="row" ngx-datatable-cell-template> <button mat-icon-button class="delete-button" matTooltip="Click to delete" (click)="beforeDelete(\'list\', row)" > <mat-icon>delete_forever</mat-icon> </button> </ng-template> </ngx-datatable-column> <ngx-datatable-column name="Name" [width]="80" [cellClass]="getNameCellClass" ></ngx-datatable-column> <ngx-datatable-column name="Value" [width]="400"> <ng-template let-row="row" let-value="value" ngx-datatable-cell-template > <hi-data-table [rows]="value" [sorts]="sorts" [columns]="columns.listConfigs" [deletable]="editable" [insertable]="editable" (update)="edited(\'list\', $event, row.name)" (create)="created(\'list\', $event, row.name)" (delete)="edited(\'list\', $event, row.name, true)" > </hi-data-table> </ng-template> </ngx-datatable-column> <ngx-datatable-footer> <ng-template ngx-datatable-footer-template let-rowCount="rowCount" let-pageSize="pageSize" let-curPage="curPage" > <section class="footer" fxLayout="row" fxLayoutAlign="space-between center" > <button mat-button *ngIf="editable" (click)="onCreate(\'list\')" > <mat-icon>add</mat-icon> Add new entry </button> <section>{{ rowCount }} total</section> <section> <datatable-pager [pagerLeftArrowIcon]="\'datatable-icon-left\'" [pagerRightArrowIcon]="\'datatable-icon-right\'" [pagerPreviousIcon]="\'datatable-icon-prev\'" [pagerNextIcon]="\'datatable-icon-skip\'" [page]="curPage" [size]="pageSize" [count]="rowCount" [hidden]="!(rowCount / pageSize > 1)" (change)="listTable.onFooterPage($event)" > </datatable-pager> </section> </section> </ng-template> </ngx-datatable-footer> </ngx-datatable> </mat-card-content> </mat-card> <mat-card> <mat-card-header> <mat-card-title> Map Fields <span *ngIf="mapConfigs.length == 0">is empty.</span> <span *ngIf="keyword" class="primary">(filtered)</span> </mat-card-title> </mat-card-header> <mat-card-content> <ngx-datatable *ngIf="mapConfigs.length || editable" #mapTable class="material" [headerHeight]="headerHeight" rowHeight="auto" [footerHeight]="headerHeight" columnMode="force" [rows]="mapConfigs" [sorts]="sorts" [limit]="10" > <ngx-datatable-column *ngIf="editable" [width]="40" [resizeable]="false" [draggable]="false" [canAutoResize]="false" > <ng-template let-row="row" ngx-datatable-cell-template> <button mat-icon-button class="delete-button" matTooltip="Click to delete" (click)="beforeDelete(\'map\', row)" > <mat-icon>delete_forever</mat-icon> </button> </ng-template> </ngx-datatable-column> <ngx-datatable-column name="Name" [width]="80" [cellClass]="getNameCellClass" ></ngx-datatable-column> <ngx-datatable-column name="Value" [width]="500"> <ng-template let-row="row" let-value="value" ngx-datatable-cell-template > <hi-data-table [rows]="value" [sorts]="sorts" [columns]="columns.simpleConfigs" [deletable]="editable" [insertable]="editable" (update)="edited(\'map\', $event, row.name)" (create)="created(\'map\', $event, row.name)" (delete)="edited(\'map\', $event, row.name, true)" > </hi-data-table> </ng-template> </ngx-datatable-column> <ngx-datatable-footer> <ng-template ngx-datatable-footer-template let-rowCount="rowCount" let-pageSize="pageSize" let-curPage="curPage" > <section class="footer" fxLayout="row" fxLayoutAlign="space-between center" > <button mat-button *ngIf="editable" (click)="onCreate(\'map\')"> <mat-icon>add</mat-icon> Add new entry </button> <section>{{ rowCount }} total</section> <section> <datatable-pager [pagerLeftArrowIcon]="\'datatable-icon-left\'" [pagerRightArrowIcon]="\'datatable-icon-right\'" [pagerPreviousIcon]="\'datatable-icon-prev\'" [pagerNextIcon]="\'datatable-icon-skip\'" [page]="curPage" [size]="pageSize" [count]="rowCount" [hidden]="!(rowCount / pageSize > 1)" (change)="mapTable.onFooterPage($event)" > </datatable-pager> </section> </section> </ng-template> </ngx-datatable-footer> </ngx-datatable> </mat-card-content> </mat-card> </section> </section></section></div>'
var COMPONENTS = [{'name': 'AlertDialogComponent', 'selector': 'hi-alert-dialog'},{'name': 'AppComponent', 'selector': 'hi-root'},{'name': 'ClusterComponent', 'selector': 'hi-cluster'},{'name': 'ClusterDetailComponent', 'selector': 'hi-cluster-detail'},{'name': 'ClusterListComponent', 'selector': 'hi-cluster-list'},{'name': 'ConfigDetailComponent', 'selector': 'hi-config-detail'},{'name': 'ConfirmDialogComponent', 'selector': 'hi-confirm-dialog'},{'name': 'ConfirmDialogTestComponent', 'selector': 'hi-confirm-dialog-test'},{'name': 'ControllerDetailComponent', 'selector': 'hi-controller-detail'},{'name': 'DashboardComponent', 'selector': 'hi-dashboard'},{'name': 'DataTableComponent', 'selector': 'hi-data-table'},{'name': 'DetailHeaderComponent', 'selector': 'hi-detail-header'},{'name': 'DisabledLabelComponent', 'selector': 'hi-disabled-label'},{'name': 'HelixListComponent', 'selector': 'hi-helix-list'},{'name': 'HistoryListComponent', 'selector': 'hi-history-list'},{'name': 'InputDialogComponent', 'selector': 'hi-input-dialog'},{'name': 'InputInlineComponent', 'selector': 'hi-input-inline'},{'name': 'InstanceDetailComponent', 'selector': 'hi-instance-detail'},{'name': 'InstanceListComponent', 'selector': 'hi-instance-list'},{'name': 'JobDetailComponent', 'selector': 'hi-job-detail'},{'name': 'JobListComponent', 'selector': 'hi-job-list'},{'name': 'JsonViewerComponent', 'selector': 'hi-json-viewer'},{'name': 'KeyValuePairsComponent', 'selector': 'hi-key-value-pairs'},{'name': 'NodeViewerComponent', 'selector': 'hi-node-viewer'},{'name': 'PartitionDetailComponent', 'selector': 'hi-partition-detail'},{'name': 'PartitionListComponent', 'selector': 'hi-partition-list'},{'name': 'ResourceDetailComponent', 'selector': 'hi-resource-detail'},{'name': 'ResourceDetailForInstanceComponent', 'selector': 'hi-resource-detail-for-instance'},{'name': 'ResourceListComponent', 'selector': 'hi-resource-list'},{'name': 'ResourceNodeViewerComponent', 'selector': 'hi-resource-node-viewer'},{'name': 'StateLabelComponent', 'selector': 'hi-state-label'},{'name': 'WorkflowDagComponent', 'selector': 'hi-workflow-dag'},{'name': 'WorkflowDetailComponent', 'selector': 'hi-workflow-detail'},{'name': 'WorkflowListComponent', 'selector': 'hi-workflow-list'}];
var DIRECTIVES = [{'name': 'KeyValuePairDirective', 'selector': 'hi-key-value-pair'}];
var ACTUAL_COMPONENT = {'name': 'NodeViewerComponent'};
</script>
<script src="../js/tree.js"></script>
</div><div class="search-results">
<div class="has-results">
<h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
<ul class="search-results-list"></ul>
</div>
<div class="no-results">
<h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
</div>
</div>
</div>
<!-- END CONTENT -->
</div>
</div>
<label class="dark-mode-switch">
<input type="checkbox">
<span class="slider">
<svg class="slider-icon" viewBox="0 0 24 24" fill="none" height="20" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="20" xmlns="http://www.w3.org/2000/svg">
<path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"></path>
</svg>
</span>
</label>
<script>
var COMPODOC_CURRENT_PAGE_DEPTH = 1;
var COMPODOC_CURRENT_PAGE_CONTEXT = 'component';
var COMPODOC_CURRENT_PAGE_URL = 'NodeViewerComponent.html';
var MAX_SEARCH_RESULTS = 15;
</script>
<script src="../js/libs/custom-elements.min.js"></script>
<script src="../js/libs/lit-html.js"></script>
<script src="../js/menu-wc.js" defer></script>
<script nomodule src="../js/menu-wc_es5.js" defer></script>
<script src="../js/libs/bootstrap-native.js"></script>
<script src="../js/libs/es6-shim.min.js"></script>
<script src="../js/libs/EventDispatcher.js"></script>
<script src="../js/libs/promise.min.js"></script>
<script src="../js/libs/zepto.min.js"></script>
<script src="../js/compodoc.js"></script>
<script src="../js/tabs.js"></script>
<script src="../js/menu.js"></script>
<script src="../js/libs/clipboard.min.js"></script>
<script src="../js/libs/prism.js"></script>
<script src="../js/sourceCode.js"></script>
<script src="../js/search/search.js"></script>
<script src="../js/search/lunr.min.js"></script>
<script src="../js/search/search-lunr.js"></script>
<script src="../js/search/search_index.js"></script>
<script src="../js/lazy-load-graphs.js"></script>
</body>
</html>