Files
stf-DeviceFarmer/res/app/settings/users/users.pug
2019-06-12 10:29:07 +02:00

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