mirror of
https://github.com/DeviceFarmer/stf.git
synced 2026-04-19 02:53:27 +02:00
* fix bug on email separator Signed-off-by: Denis barbaron <denis.barbaron@orange.com> * allow group name change Signed-off-by: Denis barbaron <denis.barbaron@orange.com> --------- Signed-off-by: Denis barbaron <denis.barbaron@orange.com>
193 lines
8.6 KiB
Plaintext
193 lines
8.6 KiB
Plaintext
//
|
|
Copyright © 2019-2024 code initially contributed by Orange SA, authors: Denis Barbaron - Licensed under the Apache license 2.0
|
|
//
|
|
|
|
.widget-container.fluid-height.stf-groups(ng-controller='GroupsCtrl')
|
|
.heading
|
|
i.fa.fa-object-group
|
|
span(translate) Group list
|
|
|
|
button.btn.btn-xs.btn-primary-outline.pull-right(
|
|
type='button'
|
|
ng-disabled='!conditionForGroupCreation() || hideGroupCreation'
|
|
uib-tooltip="{{'Groups number quota is reached' | translate}}"
|
|
tooltip-placement='bottom'
|
|
tooltip-enable="!conditionForGroupCreation()"
|
|
tooltip-popup-delay='500'
|
|
ng-click='createGroup()')
|
|
i.fa.fa-plus.fa-fw
|
|
|
|
a.pull-right.btn.btn-xs(ng-href='')
|
|
i.fa.fa-question-circle.fa-fw(
|
|
uib-tooltip='{{"More about Groups" | translate}}'
|
|
tooltip-placement='left'
|
|
tooltip-popup-delay='500')
|
|
|
|
.widget-content.padded
|
|
|
|
nothing-to-show(
|
|
icon='fa-object-group'
|
|
message='{{"No Groups" | translate}}' ng-if='!groups.length')
|
|
|
|
div(ng-if='groups.length')
|
|
ul.list-group.groups-list
|
|
li.list-group-item
|
|
.group-line.group-actions
|
|
form.form-inline.groups-header
|
|
.form-group
|
|
stf-pager(
|
|
tooltip-label="{{'Group selection' | translate}}"
|
|
total-items='filteredGroups.length'
|
|
total-items-style='stf-pager-groups-total-items'
|
|
items-per-page='scopeGroupsCtrl.groupItemsPerPage'
|
|
items-per-page-options='itemsPerPageOptions'
|
|
current-page='scopeGroupsCtrl.groupCurrentPage'
|
|
items-search='search')
|
|
|
|
button.btn.btn-xs.btn-danger.pull-right(
|
|
type='button'
|
|
ng-disabled="!filteredGroups.length || filteredGroups.length === 1 && filteredGroups[0].privilege === 'root'"
|
|
uib-tooltip="{{'Remove the group selection' | translate}}"
|
|
tooltip-placement='bottom'
|
|
tooltip-popup-delay='500'
|
|
ng-click='removeGroups(search, filteredGroups, confirmRemove.value)')
|
|
i.fa.fa-trash-o
|
|
span(translate) Remove
|
|
|
|
button.btn.btn-xs.btn-success.pull-right(
|
|
type='button'
|
|
uib-tooltip="{{'Enable/Disable confirmation for group removing' | translate}}"
|
|
tooltip-placement='top'
|
|
tooltip-popup-delay='500'
|
|
ng-click='confirmRemove.value = !confirmRemove.value'
|
|
ng-class='{"btn-warning-outline": !confirmRemove.value, "btn-success": confirmRemove.value}')
|
|
i.fa.fa-lock(ng-if='confirmRemove.value')
|
|
i.fa.fa-unlock(ng-if='!confirmRemove.value')
|
|
span(translate) Confirm Remove
|
|
|
|
button.btn.btn-xs.btn-primary-outline.pull-right(
|
|
ng-if='isAdmin()'
|
|
type='button'
|
|
uib-tooltip="{{'Write an email to the group owner selection' | translate}}"
|
|
ng-disabled='!filteredGroups.length'
|
|
ng-click='mailToGroupOwners(filteredGroups)'
|
|
tooltip-placement='top'
|
|
tooltip-popup-delay='500')
|
|
i.fa.fa-envelope-o
|
|
span(translate) Contact Owners
|
|
|
|
li.list-group-item(ng-repeat="group in groups \
|
|
| filter:search \
|
|
| orderBy: 'name' \
|
|
| pagedObjectsFilter:scopeGroupsCtrl:'groupCurrentPage':'groupItemsPerPage':'filteredGroups' \
|
|
track by group.id")
|
|
.group-line.group-actions
|
|
i.fa.fa-object-group.fa-2x.fa-fw.group-list-icon
|
|
.group-list-details.selectable
|
|
form.form-inline(name='nameForm' ng-if="showName")
|
|
input.form-control.input-sm(
|
|
size='35' type='text' placeholder="Name"
|
|
ng-model='groupsEnv[group.id].tmpName'
|
|
ng-pattern="nameRegex"
|
|
uib-tooltip="{{'Regex syntax' | translate}}: {{::nameRegexStr}}"
|
|
tooltip-placement='top'
|
|
tooltip-popup-delay='500'
|
|
tooltip-enable="nameForm.$invalid"
|
|
required)
|
|
|
|
button.btn.btn-sm.btn-primary.btn-check-name(
|
|
type='button'
|
|
ng-click='updateGroupName(group)'
|
|
ng-disabled='!conditionForNameSaving(group, nameForm.$invalid)')
|
|
i.fa.fa-check
|
|
|
|
.group-list-name(
|
|
ng-bind-template='{{group.name}}'
|
|
ng-if="!showName")
|
|
|
|
.group-list-id
|
|
span(translate) Identifier
|
|
span(ng-bind-template="{{::': ' + group.id + ' - '}}")
|
|
span(translate) Class
|
|
span(ng-bind-template="{{': ' + getClassName(group.class) + ' - '}}")
|
|
span(translate) Devices
|
|
span(ng-bind-template="{{': ' + group.devices.length + ' - '}}")
|
|
span(translate) Users
|
|
span(ng-bind-template="{{': ' + group.users.length}}")
|
|
span(ng-if='isAdmin()' ng-bind-template="{{::' - '}}")
|
|
span(ng-if='isAdmin()' translate) Owner
|
|
span(ng-if='isAdmin()' ng-bind-template="{{::': ' + group.owner.name}}")
|
|
|
|
button.btn.btn-xs.btn-danger-outline.pull-right(
|
|
type='button'
|
|
ng-click='removeGroup(group, confirmRemove.value)'
|
|
ng-disabled='group.privilege === "root"')
|
|
i.fa.fa-trash-o
|
|
span(translate) Remove
|
|
|
|
button.btn.btn-xs.btn-danger-outline.pull-right(
|
|
type='button'
|
|
ng-if="group.state === 'pending'"
|
|
ng-click='updateGroupState(group)')
|
|
i.fa.fa-unlock
|
|
span(translate) Get ready
|
|
|
|
button.btn.btn-xs.pull-right(
|
|
type='button'
|
|
ng-click='initTemporaryName(group); showName = !showName'
|
|
ng-class='{"btn-primary-outline": !showName,\
|
|
"btn-primary": showName}')
|
|
i.fa.fa-tag
|
|
span(translate) Name
|
|
|
|
button.btn.btn-xs.pull-right(
|
|
type='button'
|
|
ng-click='initTemporarySchedule(group); showSchedule = !showSchedule'
|
|
ng-class='{"btn-primary-outline": !showSchedule && group.state === "pending",\
|
|
"btn-primary": showSchedule && group.state === "pending",\
|
|
"btn-warning-outline": !showSchedule && !group.isActive && group.state !== "pending",\
|
|
"btn-warning": showSchedule && !group.isActive && group.state !== "pending",\
|
|
"btn-success-outline": !showSchedule && group.isActive && group.state !== "pending",\
|
|
"btn-success": showSchedule && group.isActive && group.state !== "pending"}')
|
|
i.fa.fa-clock-o
|
|
span(translate) Schedule
|
|
|
|
button.btn.btn-xs.btn-primary-outline.pull-right(
|
|
type='button'
|
|
ng-click='initShowDevices(group, !showDevices); showDevices = !showDevices'
|
|
ng-class='{"btn-primary-outline": !showDevices, "btn-primary": showDevices}')
|
|
i.fa.fa-mobile
|
|
span(translate) Devices
|
|
|
|
button.btn.btn-xs.btn-primary-outline.pull-right(
|
|
type='button'
|
|
ng-click='initShowUsers(group); showUsers = !showUsers'
|
|
ng-class='{"btn-primary-outline": !showUsers, "btn-primary": showUsers}')
|
|
i.fa.fa-user
|
|
span(translate) Users
|
|
|
|
button.btn.btn-xs.btn-danger.pull-right(
|
|
type='button'
|
|
ng-if='groupsEnv[group.id].showConflicts'
|
|
ng-click='groupsEnv[group.id].showConflicts = !groupsEnv[group.id].showConflicts'
|
|
ng-class='{"btn-danger-outline": !groupsEnv[group.id].showConflicts, \
|
|
"btn-danger": groupsEnv[group.id].showConflicts}')
|
|
i.fa.fa-ban
|
|
span(translate) Conflicts
|
|
|
|
ul.list-group.groups-action(
|
|
ng-if='groupsEnv[group.id].showConflicts')
|
|
div(ng-include="'settings/groups/conflicts/conflicts.pug'")
|
|
|
|
ul.list-group.groups-action(
|
|
ng-if='showSchedule')
|
|
div(ng-include="'settings/groups/schedule/schedule.pug'")
|
|
|
|
ul.list-group.groups-action(
|
|
ng-if='showDevices')
|
|
div(ng-include="'settings/groups/devices/devices.pug'")
|
|
|
|
ul.list-group.groups-action(
|
|
ng-if='showUsers')
|
|
div(ng-include="'settings/groups/users/users.pug'")
|