mirror of
https://github.com/DeviceFarmer/stf.git
synced 2026-04-18 08:03:30 +02:00
217 lines
10 KiB
Plaintext
217 lines
10 KiB
Plaintext
//
|
|
Copyright © 2019 code initially contributed by Orange SA, authors: Denis Barbaron - Licensed under the Apache license 2.0
|
|
//
|
|
|
|
.widget-container.fluid-height.stf-users(ng-controller='UsersCtrl')
|
|
.heading
|
|
i.fa.fa-user
|
|
span(translate) User list
|
|
|
|
button.btn.btn-primary-outline.pull-right.btn-sm(
|
|
ng-click='showCreateUser = !showCreateUser; initTemporaryUser()'
|
|
ng-class='{ "btn-primary-outline": !showCreateUser, "btn-primary": showCreateUser }')
|
|
i.fa.fa-plus.fa-fw
|
|
|
|
a.pull-right.btn.btn-sm(ng-href='')
|
|
i.fa.fa-question-circle.fa-fw(uib-tooltip='{{"More about Users" | translate}}' tooltip-placement='left')
|
|
|
|
.widget-content.padded
|
|
|
|
nothing-to-show(icon='fa-user' message='{{"No Users" | translate}}' ng-if='!users.length')
|
|
|
|
div(ng-if='users.length')
|
|
ul.list-group.user-list
|
|
li.list-group-item(ng-if='showCreateUser')
|
|
.user-line
|
|
.heading
|
|
i.fa.fa-user
|
|
span(translate) Create new user
|
|
|
|
form.form-inline(name='userForm')
|
|
.form-group.user-creation
|
|
label.user-list-label(translate) Name
|
|
input.form-control.input-sm(
|
|
name='nameForm'
|
|
uib-tooltip="{{'Regex syntax' | translate}}: {{::nameRegexStr}}"
|
|
tooltip-placement='top'
|
|
tooltip-popup-delay='500'
|
|
tooltip-enable='userForm.nameForm.$invalid'
|
|
type='text' ng-model='tmpEnv.userName' ng-pattern="nameRegex" required)
|
|
|
|
.form-group.user-creation
|
|
label.user-list-label(translate) Email
|
|
input.form-control.input-sm(size='35' type='email' ng-model='tmpEnv.userEmail' required)
|
|
|
|
.form-group.user-save
|
|
button.btn.btn-sm.btn-primary(
|
|
type='button'
|
|
ng-click='createUser()'
|
|
ng-disabled='userForm.$invalid')
|
|
span(translate) Save
|
|
|
|
li.list-group-item
|
|
.user-line.user-actions
|
|
form.form-inline.user-header
|
|
.form-group
|
|
stf-pager(
|
|
tooltip-label="{{'User selection' | translate}}"
|
|
total-items='filteredUsers.length'
|
|
total-items-style='stf-pager-users-total-items'
|
|
items-per-page='scopeUsersCtrl.userItemsPerPage'
|
|
items-per-page-options='itemsPerPageOptions'
|
|
current-page='scopeUsersCtrl.userCurrentPage'
|
|
items-search='search')
|
|
|
|
button.btn.btn-xs.btn-danger.pull-right(
|
|
type='button'
|
|
uib-tooltip="{{'Remove the user selection' | translate}}"
|
|
tooltip-placement='bottom'
|
|
tooltip-popup-delay='500'
|
|
ng-disabled="!filteredUsers.length || filteredUsers.length === 1 && filteredUsers[0].privilege === 'admin'"
|
|
ng-click='removeUsers(search, filteredUsers, 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 user 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-danger-outline.pull-right(
|
|
type='button'
|
|
uib-tooltip="{{'Set filters for user removing' | translate}}"
|
|
tooltip-placement='top'
|
|
tooltip-popup-delay='500'
|
|
ng-click='showFilters = !showFilters'
|
|
ng-class='{"btn-danger-outline": !showFilters, "btn-danger": showFilters}')
|
|
i.fa.fa-trash-o
|
|
span(translate) Filters
|
|
|
|
button.btn.btn-xs.btn-primary-outline.pull-right(
|
|
type='button'
|
|
uib-tooltip="{{'Set groups quotas for new users' | translate}}"
|
|
tooltip-placement='top'
|
|
tooltip-popup-delay='500'
|
|
ng-click='showDefaultGroupsQuotas = !showDefaultGroupsQuotas; initTemporaryDefaultQuotas()'
|
|
ng-class='{"btn-primary-outline": !showDefaultGroupsQuotas, "btn-primary": showDefaultGroupsQuotas}')
|
|
i.fa.fa-object-group
|
|
span(translate) Default Groups Quotas
|
|
|
|
button.btn.btn-xs.btn-primary-outline.pull-right(
|
|
type='button'
|
|
uib-tooltip="{{'Write an email to the user selection' | translate}}"
|
|
ng-disabled='!filteredUsers.length'
|
|
ng-click='mailTo(filteredUsers)'
|
|
tooltip-placement='top'
|
|
tooltip-popup-delay='500')
|
|
i.fa.fa-envelope-o
|
|
span(translate) Contact Users
|
|
|
|
li.list-group-item(ng-if='showFilters')
|
|
.user-line
|
|
.heading
|
|
i.fa.fa-trash-o
|
|
span(translate) Removing filters
|
|
|
|
form.form-inline.user-filters-items
|
|
.form-group.user-filters-item
|
|
label.user-list-label(
|
|
translate
|
|
uib-tooltip="{{'Filter on user group ownership' | translate}}"
|
|
tooltip-placement='top'
|
|
tooltip-popup-delay='500') Group Owner
|
|
select(ng-model='removingFilters.groupOwner' ng-options='option for option in removingFilterOptions')
|
|
|
|
li.list-group-item(ng-if='showDefaultGroupsQuotas')
|
|
.user-line
|
|
.heading
|
|
i.fa.fa-object-group
|
|
span(translate) Default groups quotas
|
|
|
|
form.form-inline.user-default-quotas-items(name='dafaultQuotasForm')
|
|
.form-group.user-default-quotas-item
|
|
label.user-list-label(translate) Number of groups
|
|
input.form-control.input-sm(type='number' min='0' ng-model='tmpEnv.defaultGroupsNumber' required)
|
|
|
|
.form-group.user-default-quotas-item
|
|
label.user-list-label Total duration of groups (ms)
|
|
input.form-control.input-sm(type='number' min='0' ng-model='tmpEnv.defaultGroupsDuration' required)
|
|
|
|
.form-group.user-default-quotas-item
|
|
label.user-list-label(translate) Number of repetitions per group
|
|
input.form-control.input-sm(type='number' min='0' ng-model='tmpEnv.defaultGroupsRepetitions' required)
|
|
|
|
.form-group.user-default-quotas-save
|
|
button.btn.btn-sm.btn-primary(
|
|
uib-tooltip='{{tmpEnv.defaultQuotasTooltip | translate}}'
|
|
tooltip-enable='tmpEnv.defaultQuotasTooltip'
|
|
tooltip-placement='top'
|
|
tooltip-popup-delay='500'
|
|
ng-click='updateDefaultUserGroupsQuotas()'
|
|
ng-disabled='!conditionForDefaultQuotasSaving(defaultQuotasForm.$invalid)')
|
|
span(translate) Save
|
|
|
|
li.list-group-item(ng-repeat="user in users \
|
|
| filter:search \
|
|
| orderBy: 'name' \
|
|
| pagedObjectsFilter:scopeUsersCtrl:'userCurrentPage':'userItemsPerPage':'filteredUsers' \
|
|
track by user.email")
|
|
.user-line.user-actions
|
|
i.fa.fa-user.fa-2x.fa-fw.user-list-icon
|
|
.user-list-details.selectable
|
|
a.user-list-name(ng-href="{{::'mailto:' + user.email}}") {{::user.name}}
|
|
.user-list-id
|
|
span(translate) Email
|
|
span(ng-bind-template="{{::': ' + user.email + ' - '}}")
|
|
span(translate) Privilege
|
|
span(ng-bind-template="{{::': ' + user.privilege}}")
|
|
|
|
button.btn.btn-xs.btn-danger-outline.pull-right(
|
|
type='button'
|
|
ng-click='removeUser(user.email, confirmRemove.value)'
|
|
ng-disabled='user.privilege === "admin"')
|
|
i.fa.fa-trash-o
|
|
span(translate) Remove
|
|
|
|
button.btn.btn-xs.btn-primary-outline.pull-right(
|
|
type='button'
|
|
ng-click='showGroupsQuotas = !showGroupsQuotas; initTemporaryQuotas(user)'
|
|
ng-class='{"btn-primary-outline": !showGroupsQuotas, "btn-primary": showGroupsQuotas}')
|
|
i.fa.fa-object-group
|
|
span(translate) Groups Quotas
|
|
|
|
ul.list-group.user-list.user-list-items(ng-if='showGroupsQuotas')
|
|
li.list-group-item
|
|
.heading.user-action-body
|
|
i.fa.fa-object-group
|
|
span(translate) Groups Quotas
|
|
|
|
form.form-inline(name='quotasForm')
|
|
.form-group.user-quotas-item
|
|
label.user-list-label(translate) Number of groups
|
|
input.form-control.input-sm(type='number' min='0' ng-max-length='5' ng-model='user.groupsNumber' required)
|
|
|
|
.form-group.user-quotas-item
|
|
label.user-list-label(translate) Total duration of groups (ms)
|
|
input.form-control.input-sm(type='number' min='0' ng-model='user.groupsDuration' required)
|
|
|
|
.form-group.user-quotas-item
|
|
label.user-list-label(translate) Number of repetitions per group
|
|
input.form-control.input-sm(type='number' min='0' ng-model='user.groupsRepetitions' required)
|
|
|
|
.form-group.user-quotas-save
|
|
button.btn.btn-sm.btn-primary(
|
|
uib-tooltip='{{user.quotasTooltip | translate}}'
|
|
tooltip-enable='user.quotasTooltip'
|
|
tooltip-placement='top'
|
|
tooltip-popup-delay='500'
|
|
ng-click='updateUserGroupsQuotas(user)'
|
|
ng-disabled='!conditionForQuotasSaving(user, quotasForm.$invalid)')
|
|
span(translate) Save
|