549
549
<aside class="three-col">
550
550
<div class="accordion maas-accordion" data-ng-show="currentpage === 'nodes'"
551
551
data-ng-class="{ 'is-disabled': tabs.nodes.actionOption }">
552
<h3 class="accordion__title">Filter by</h3>
553
<!-- XXX ricgard 2016-06-16 - Need to add e2e test. -->
554
<div class="ng-hide accordion__tab" data-ng-show="tabs.nodes.metadata.status.length">
555
<h4 class="accordion__tab-title maas-accordion-tab is-active">Status</h4>
556
<div class="accordion__tab-content">
557
<ul class="accordion__tab-list">
558
<!-- XXX ricgard 2016-06-16 - Need to add e2e test. -->
559
<li class="accordion__tab-item" data-ng-repeat="status in tabs.nodes.metadata.status | orderBy:['name', '-count']" data-ng-class="{ 'is-active': isFilterActive('status', status.name, 'nodes') }">
560
<a class="accordion__tab-link" href="" data-ng-click="toggleFilter('status', status.name, 'nodes')">{$ status.name $} ({$ status.count $})</a>
565
<div class="ng-hide accordion__tab" data-ng-show="tabs.nodes.metadata.owner.length">
566
<h4 class="accordion__tab-title maas-accordion-tab">Owner</h4>
567
<div class="accordion__tab-content">
568
<ul class="accordion__tab-list">
569
<li class="accordion__tab-item" data-ng-repeat="owner in tabs.nodes.metadata.owner | orderBy:['name', '-count']" data-ng-class="{ 'is-active': isFilterActive('owner', owner.name, 'nodes') }">
570
<a class="accordion__tab-link" href="" data-ng-click="toggleFilter('owner', owner.name, 'nodes')">{$ owner.name $} ({$ owner.count $})</a>
575
<div class="ng-hide accordion__tab" data-ng-show="tabs.nodes.metadata.release.length">
576
<h4 class="accordion__tab-title maas-accordion-tab">OS/Release</h4>
577
<div class="accordion__tab-content">
578
<ul class="accordion__tab-list">
579
<li class="accordion__tab-item" data-ng-repeat="release in tabs.nodes.metadata.release | orderBy:['name', '-count']" data-ng-class="{ 'is-active': isFilterActive('release', release.name, 'nodes') }">
580
<a class="accordion__tab-link" href="" data-ng-click="toggleFilter('release', release.name, 'nodes')">{$ getReleaseTitle(release.name) $} ({$ release.count $})</a>
585
<div class="ng-hide accordion__tab" data-ng-show="tabs.nodes.metadata.tags.length">
586
<h4 class="accordion__tab-title maas-accordion-tab">Tags</h4>
587
<div class="accordion__tab-content">
588
<ul class="accordion__tab-list">
589
<li class="accordion__tab-item" data-ng-repeat="tag in tabs.nodes.metadata.tags | orderBy:['name', '-count']" data-ng-class="{ 'is-active': isFilterActive('tags', tag.name, 'nodes') }">
590
<a class="accordion__tab-link" href="" data-ng-click="toggleFilter('tags', tag.name, 'nodes')">{$ tag.name $} ({$ tag.count $})</a>
595
<div class="ng-hide accordion__tab" data-ng-show="tabs.nodes.metadata.storage_tags.length">
596
<h4 class="accordion__tab-title maas-accordion-tab">Storage Tags</h4>
597
<div class="accordion__tab-content">
598
<ul class="accordion__tab-list">
599
<li class="accordion__tab-item" data-ng-repeat="tag in tabs.nodes.metadata.storage_tags | orderBy:['name', '-count']" data-ng-class="{ 'is-active': isFilterActive('storage_tags', tag.name, 'nodes') }">
600
<a class="accordion__tab-link" href="" data-ng-click="toggleFilter('storage_tags', tag.name, 'nodes')">{$ tag.name $} ({$ tag.count $})</a>
605
<div class="ng-hide accordion__tab" data-ng-show="tabs.nodes.metadata.subnets.length">
606
<h4 class="accordion__tab-title maas-accordion-tab">Subnets</h4>
607
<div class="accordion__tab-content">
608
<ul class="accordion__tab-list">
609
<li class="accordion__tab-item" data-ng-repeat="subnet in tabs.nodes.metadata.subnets | orderBy:['name', '-count']" data-ng-class="{ 'is-active': isFilterActive('subnets', subnet.name, 'nodes') }">
610
<a class="accordion__tab-link" href="" data-ng-click="toggleFilter('subnets', subnet.name, 'nodes')">{$ subnet.name $} ({$ subnet.count $})</a>
615
<div class="ng-hide accordion__tab" data-ng-show="tabs.nodes.metadata.fabrics.length">
616
<h4 class="accordion__tab-title maas-accordion-tab">Fabrics</h4>
617
<div class="accordion__tab-content">
618
<ul class="accordion__tab-list">
619
<li class="accordion__tab-item" data-ng-repeat="fabric in tabs.nodes.metadata.fabrics | orderBy:['name', '-count']" data-ng-class="{ 'is-active': isFilterActive('fabrics', fabric.name, 'nodes') }">
620
<a class="accordion__tab-link" href="" data-ng-click="toggleFilter('fabrics', fabric.name, 'nodes')">{$ fabric.name $} ({$ fabric.count $})</a>
625
<div class="ng-hide accordion__tab" data-ng-show="tabs.nodes.metadata.spaces.length">
626
<h4 class="accordion__tab-title maas-accordion-tab">Spaces</h4>
627
<div class="accordion__tab-content">
628
<ul class="accordion__tab-list">
629
<li class="accordion__tab-item" data-ng-repeat="space in tabs.nodes.metadata.spaces | orderBy:['name', '-count']" data-ng-class="{ 'is-active': isFilterActive('spaces', space.name, 'nodes') }">
630
<a class="accordion__tab-link" href="" data-ng-click="toggleFilter('spaces', space.name, 'nodes')">{$ space.name $} ({$ space.count $})</a>
635
<div class="ng-hide accordion__tab" data-ng-show="tabs.nodes.metadata.zone.length">
636
<h4 class="accordion__tab-title maas-accordion-tab">Zones</h4>
637
<div class="accordion__tab-content">
638
<ul class="accordion__tab-list">
639
<li class="accordion__tab-item" data-ng-repeat="zone in tabs.nodes.metadata.zone | orderBy:['name', '-count']" data-ng-class="{ 'is-active': isFilterActive('zone', zone.name, 'nodes') }">
640
<a class="accordion__tab-link" href="" data-ng-click="toggleFilter('zone', zone.name, 'nodes')">{$ zone.name $} ({$ zone.count $})</a>
552
<h3 class="accordion__title"
553
ng-class="{'is-active': isActive}"
554
ng-init="isActive = false"
555
ng-click="isActive = !isActive">Filter by</h3>
556
<div class="accordion__content">
557
<!-- XXX ricgard 2016-06-16 - Need to add e2e test. -->
558
<div class="ng-hide accordion__tab" data-ng-show="tabs.nodes.metadata.status.length">
559
<h4 class="accordion__tab-title maas-accordion-tab is-active">Status</h4>
560
<div class="accordion__tab-content">
561
<ul class="accordion__tab-list">
562
<!-- XXX ricgard 2016-06-16 - Need to add e2e test. -->
563
<li class="accordion__tab-item" data-ng-repeat="status in tabs.nodes.metadata.status | orderBy:['name', '-count']" data-ng-class="{ 'is-active': isFilterActive('status', status.name, 'nodes') }">
564
<a class="accordion__tab-link" href="" data-ng-click="toggleFilter('status', status.name, 'nodes')">{$ status.name $} ({$ status.count $})</a>
569
<div class="ng-hide accordion__tab" data-ng-show="tabs.nodes.metadata.owner.length">
570
<h4 class="accordion__tab-title maas-accordion-tab">Owner</h4>
571
<div class="accordion__tab-content">
572
<ul class="accordion__tab-list">
573
<li class="accordion__tab-item" data-ng-repeat="owner in tabs.nodes.metadata.owner | orderBy:['name', '-count']" data-ng-class="{ 'is-active': isFilterActive('owner', owner.name, 'nodes') }">
574
<a class="accordion__tab-link" href="" data-ng-click="toggleFilter('owner', owner.name, 'nodes')">{$ owner.name $} ({$ owner.count $})</a>
579
<div class="ng-hide accordion__tab" data-ng-show="tabs.nodes.metadata.release.length">
580
<h4 class="accordion__tab-title maas-accordion-tab">OS/Release</h4>
581
<div class="accordion__tab-content">
582
<ul class="accordion__tab-list">
583
<li class="accordion__tab-item" data-ng-repeat="release in tabs.nodes.metadata.release | orderBy:['name', '-count']" data-ng-class="{ 'is-active': isFilterActive('release', release.name, 'nodes') }">
584
<a class="accordion__tab-link" href="" data-ng-click="toggleFilter('release', release.name, 'nodes')">{$ getReleaseTitle(release.name) $} ({$ release.count $})</a>
589
<div class="ng-hide accordion__tab" data-ng-show="tabs.nodes.metadata.tags.length">
590
<h4 class="accordion__tab-title maas-accordion-tab">Tags</h4>
591
<div class="accordion__tab-content">
592
<ul class="accordion__tab-list">
593
<li class="accordion__tab-item" data-ng-repeat="tag in tabs.nodes.metadata.tags | orderBy:['name', '-count']" data-ng-class="{ 'is-active': isFilterActive('tags', tag.name, 'nodes') }">
594
<a class="accordion__tab-link" href="" data-ng-click="toggleFilter('tags', tag.name, 'nodes')">{$ tag.name $} ({$ tag.count $})</a>
599
<div class="ng-hide accordion__tab" data-ng-show="tabs.nodes.metadata.storage_tags.length">
600
<h4 class="accordion__tab-title maas-accordion-tab">Storage Tags</h4>
601
<div class="accordion__tab-content">
602
<ul class="accordion__tab-list">
603
<li class="accordion__tab-item" data-ng-repeat="tag in tabs.nodes.metadata.storage_tags | orderBy:['name', '-count']" data-ng-class="{ 'is-active': isFilterActive('storage_tags', tag.name, 'nodes') }">
604
<a class="accordion__tab-link" href="" data-ng-click="toggleFilter('storage_tags', tag.name, 'nodes')">{$ tag.name $} ({$ tag.count $})</a>
609
<div class="ng-hide accordion__tab" data-ng-show="tabs.nodes.metadata.subnets.length">
610
<h4 class="accordion__tab-title maas-accordion-tab">Subnets</h4>
611
<div class="accordion__tab-content">
612
<ul class="accordion__tab-list">
613
<li class="accordion__tab-item" data-ng-repeat="subnet in tabs.nodes.metadata.subnets | orderBy:['name', '-count']" data-ng-class="{ 'is-active': isFilterActive('subnets', subnet.name, 'nodes') }">
614
<a class="accordion__tab-link" href="" data-ng-click="toggleFilter('subnets', subnet.name, 'nodes')">{$ subnet.name $} ({$ subnet.count $})</a>
619
<div class="ng-hide accordion__tab" data-ng-show="tabs.nodes.metadata.fabrics.length">
620
<h4 class="accordion__tab-title maas-accordion-tab">Fabrics</h4>
621
<div class="accordion__tab-content">
622
<ul class="accordion__tab-list">
623
<li class="accordion__tab-item" data-ng-repeat="fabric in tabs.nodes.metadata.fabrics | orderBy:['name', '-count']" data-ng-class="{ 'is-active': isFilterActive('fabrics', fabric.name, 'nodes') }">
624
<a class="accordion__tab-link" href="" data-ng-click="toggleFilter('fabrics', fabric.name, 'nodes')">{$ fabric.name $} ({$ fabric.count $})</a>
629
<div class="ng-hide accordion__tab" data-ng-show="tabs.nodes.metadata.spaces.length">
630
<h4 class="accordion__tab-title maas-accordion-tab">Spaces</h4>
631
<div class="accordion__tab-content">
632
<ul class="accordion__tab-list">
633
<li class="accordion__tab-item" data-ng-repeat="space in tabs.nodes.metadata.spaces | orderBy:['name', '-count']" data-ng-class="{ 'is-active': isFilterActive('spaces', space.name, 'nodes') }">
634
<a class="accordion__tab-link" href="" data-ng-click="toggleFilter('spaces', space.name, 'nodes')">{$ space.name $} ({$ space.count $})</a>
639
<div class="ng-hide accordion__tab" data-ng-show="tabs.nodes.metadata.zone.length">
640
<h4 class="accordion__tab-title maas-accordion-tab">Zones</h4>
641
<div class="accordion__tab-content">
642
<ul class="accordion__tab-list">
643
<li class="accordion__tab-item" data-ng-repeat="zone in tabs.nodes.metadata.zone | orderBy:['name', '-count']" data-ng-class="{ 'is-active': isFilterActive('zone', zone.name, 'nodes') }">
644
<a class="accordion__tab-link" href="" data-ng-click="toggleFilter('zone', zone.name, 'nodes')">{$ zone.name $} ({$ zone.count $})</a>
748
752
data-ng-repeat="node in tabs.nodes.filtered_items = (nodes | nodesFilter:tabs.nodes.search | orderBy:tabs.nodes.predicate:tabs.nodes.reverse) track by node.system_id"
749
753
data-ng-class="{ 'table--error': !supportsAction(node, 'nodes'), selected: node.$selected }">
750
<td class="table-col--3">
754
<td class="table-col--3" aria-label="Select node">
751
755
<!-- XXX ricgard 2016-06-16 - Need to add e2e test. -->
752
756
<input class="checkbox" type="checkbox" data-ng-click="toggleChecked(node, 'nodes')" data-ng-checked="node.$selected" id="{$ node.fqdn $}" data-ng-disabled="hasActionsInProgress('nodes')" />
753
757
<label class="checkbox-label" for="{$ node.fqdn $}"></label>
755
759
<!-- XXX ricgard 2016-06-16 - Need to add e2e test. -->
756
<td class="u-align--left" data-ng-show="tabs.nodes.column === 'fqdn'" colspan="2">
757
<a href="#/node/machine/{$ node.system_id $}">{$ node.fqdn $}</a>
760
<td class="u-align--left" aria-label="FQDN" data-ng-show="tabs.nodes.column === 'fqdn'" colspan="2">
761
<a href="#/node/{$ node.system_id $}">{$ node.fqdn $}</a>
759
763
<!-- XXX ricgard 2016-06-16 - Need to add e2e test. -->
760
<td class="ng-hide u-align--left" data-ng-show="tabs.nodes.column === 'pxe_mac'" colspan="2">
761
<a href="#/node/machine/{$ node.system_id $}" title="{$ node.pxe_mac_vendor $}">{$ node.pxe_mac $}</a>
762
<a href="#/node/machine/{$ node.system_id $}" class="extra-macs" data-ng-show="node.extra_macs.length">(+{$ node.extra_macs.length $})</a>
764
<td class="powerstate u-align--center">
765
<span title="{$ node.power_state $}" class="icon icon--power-{$ node.power_state $}"></span>
767
<td class="table-col--3"><i data-ng-if="showSpinner(node)" class="icon icon--loading u-animation--spin"></i></td>
768
<td class="status u-text--truncate">{$ getStatusText(node) $}</td>
769
<td class="table-col--10">{$ node.owner $}</td>
770
<td class="u-align--right">{$ node.cpu_count $}</td>
771
<td class="u-align--right">{$ node.memory $}</td>
772
<td class="u-align--right">{$ node.physical_disk_count $}</td>
773
<td class="u-align--right">{$ node.storage $}</td>
764
<td class="ng-hide u-align--left" aria-label="MAC" data-ng-show="tabs.nodes.column === 'pxe_mac'" colspan="2">
765
<a href="#/node/{$ node.system_id $}" title="{$ node.pxe_mac_vendor $}">{$ node.pxe_mac $}</a>
766
<a href="#/node/{$ node.system_id $}" class="extra-macs" data-ng-show="node.extra_macs.length">(+{$ node.extra_macs.length $})</a>
768
<td class="powerstate u-align--center" aria-label="Power state">
769
<span title="{$ node.power_state $}" class="icon icon--power-{$ node.power_state $} u-display--desktop"></span>
770
<span class="u-display--mobile u-text--{$ node.power_state $}"><span title="{$ node.power_state $}" class="icon icon--power-{$ node.power_state $}"></span> {$ node.power_state $}</span>
772
<td class="status u-text--truncate" aria-label="Status">{$ getStatusText(node) $} <i data-ng-if="showSpinner(node)" class="icon icon--loading u-animation--spin u-margin--left-tiny"></i></td>
773
<td class="table-col--10" aria-label="Owner">{$ node.owner $}</td>
774
<td class="u-align--right u-display--desktop" aria-label="CPU">{$ node.cpu_count $}</td>
775
<td class="u-align--right u-display--desktop" aria-label="Memory">{$ node.memory $}</td>
776
<td class="u-align--right u-display--desktop" aria-label="Disks">{$ node.physical_disk_count $}</td>
777
<td class="u-align--right u-display--desktop" aria-label="Storage">{$ node.storage $}</td>