table.table.table-striped.table-condensed( ng-table="tableParams") tr.ng-table-group(ng-repeat-start="group in $groups") td(colspan=9) a(ng-click="group.$hideRows = !group.$hideRows") span.glyphicon(ng-class="{ 'glyphicon-chevron-right': group.$hideRows, 'glyphicon-chevron-down': !group.$hideRows }") strong {{ group.value }} div Anzahl: {{ group.data.length }} tr(ng-hide='group.$hideRows',ng-repeat='row in group.data',ng-repeat-end,ng-form="rowForm",ng-class="{'danger':!row.flags.online}") td(data-title="'Last'",sortable="'lastseen'", am-time-ago="row.lastseen") td(data-title="'ID'", filter="{nodeid: 'text'}", sortable="'nodeid'") {{row.nodeid}} td(data-title="'Group'",groupable="'nodeinfo.owner.contact'",sortable="'nodeinfo.owner.contact'",ng-switch="row.isEditing") span(ng-switch-default) {{row.nodeinfo.owner.contact}} div.controls(ng-switch-when="true",ng-class="rowForm.group.$invalid ? 'has-error' : ''") input.editable-input.form-control.input-sm(type="text" name="group",pattern="[a-zA-Z0-9-]*",ng-model='row.nodeinfo.owner.contact',required) td(data-title="'Hostname'", filter="{'nodeinfo.hostname': 'text'}", sortable="'nodeinfo.hostname'",ng-switch="row.isEditing") span(ng-switch-default) {{row.nodeinfo.hostname}} div.controls(ng-switch-when="true",ng-class="rowForm.hostname.$invalid ? 'has-error' : ''") input.editable-input.form-control.input-sm(type="text" name="hostname",pattern="[a-zA-Z0-9-]*",ng-model='row.nodeinfo.hostname',required) td(data-title="'First'",sortable="'firstseen'", am-time-ago="row.firstseen") td.split.text-right(data-title="'Freq'") span 2.4 Ghz span 5 Ghz td.split.text-right(data-title="'Clients'", sortable="'statistics.clients.wifi24'") span {{row.statistics.clients.wifi24}} span {{row.statistics.clients.wifi5}} td.text-right.split(data-title="'Channel'",filter="{'nodeinfo.wireless.channel5': 'number'}", groupable="'nodeinfo.wireless.channel24'", sortable="'nodeinfo.wireless.channel5'",ng-switch="row.isEditing") span(ng-switch-default) {{row.nodeinfo.wireless.channel24}} div.controls(ng-switch-when="true",ng-class="rowForm.channel24.$invalid ? 'has-error' : ''") input.editable-input.form-control.input-sm(type="text" name="channel24",ng-model='row.nodeinfo.wireless.channel24',required) span(ng-switch-default) {{row.nodeinfo.wireless.channel5}} div.controls(ng-switch-when="true",ng-class="rowForm.channel5.$invalid ? 'has-error' : ''") input.editable-input.form-control.input-sm(type="text" name="channel5",ng-model='row.nodeinfo.wireless.channel5',required) td.text-right.split(data-title="'Power'",filter="{'txpower24': 'number'}",ng-switch="row.isEditing") span(ng-switch-default) {{row.nodeinfo.wireless.txpower24}} div.controls(ng-switch-when="true",ng-class="rowForm.txpower24.$invalid ? 'has-error' : ''") input.editable-input.form-control.input-sm(type="text" name="txpower24",ng-model='row.nodeinfo.wireless.txpower24',required) span(ng-switch-default) {{row.nodeinfo.wireless.txpower5}} div.controls(ng-switch-when="true",ng-class="rowForm.txpower5.$invalid ? 'has-error' : ''") input.editable-input.form-control.input-sm(type="text" name="txpower5",ng-model='row.nodeinfo.wireless.txpower5',required) td(data-title="'Options'") .btn.btn-success.btn-sm(ng-click="save(row, rowForm)",ng-if="row.isEditing",ng-disabled="rowForm.$pristine || rowForm.$invalid") span.glyphicon.glyphicon-ok .btn.btn-warning.btn-sm(ng-click="cancel(row, rowForm)",ng-if="row.isEditing") span.glyphicon.glyphicon-remove .btn.btn-primary.btn-sm(ng-click="row.isEditing = true",ng-if="!row.isEditing") span.glyphicon.glyphicon-pencil a.btn.btn-default(ui-sref="app.node({nodeid: row.nodeid})") span.glyphicon.glyphicon-qrcode