Files
stf/res/app/settings/groups/groups.pug
Denis Barbaron cf56911e9f Allow group name change (#795)
* 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>
2024-07-15 17:03:33 +02:00

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'")