Merge branch 'feature-68530/Dashboard_Cleanup_Admin' into cis40_2026-02_rc

This commit is contained in:
Harald Bamberger
2026-04-23 16:34:59 +02:00
6 changed files with 303 additions and 30 deletions
+2 -2
View File
@@ -27,7 +27,7 @@ export default {
template: /* html */`
<div class="dashboard-admin-edit px-3">
<div class="mb-3">
<label for="dashboard-admin-edit-kurzbz">Kurz Bezeichnung</label>
<label for="dashboard-admin-edit-kurzbz">{{ $p.t('dashboard/kurzbz') }}</label>
<input
id="dashboard-admin-edit-kurzbz"
v-model="kurzbz"
@@ -36,7 +36,7 @@ export default {
>
</div>
<div class="mb-3">
<label for="dashboard-admin-edit-beschreibung">Beschreibung</label>
<label for="dashboard-admin-edit-beschreibung">{{ $p.t('global/beschreibung') }}</label>
<textarea
id="dashboard-admin-edit-beschreibung"
v-model="desc"
+1 -1
View File
@@ -170,7 +170,7 @@ export default {
<button
class="btn ms-2"
aria-label="edit dashboard"
v-tooltip="{ showDelay: 1000, value: 'edit dashboard' }"
v-tooltip="{ showDelay: 1000, value: $p.t('dashboard/edit') }"
@click="editMode = !editMode"
><i class="fa-solid fa-gear" aria-hidden="true"></i></button>
</h3>
+20 -19
View File
@@ -226,8 +226,8 @@ export default {
class="col-auto mx-2 px-2 cursor-move"
draggable="true"
aria-hidden="true"
aria-label="move widget"
v-tooltip="{showDelay:1000, value:'move widget'}"
:aria-label="$p.t('dashboard/widget_move')"
v-tooltip="{ showDelay: 1000, value: $p.t('dashboard/widget_move') }"
>
<i class="fa-solid fa-grip-vertical" aria-hidden="true"></i>
</span>
@@ -239,8 +239,9 @@ export default {
<!-- source info -->
<div
v-if="source"
v-tooltip="{ class: 'w-100', value: sourceInfoTooltip }"
class="col-auto me-2"
:aria-label="sourceInfoTooltip"
v-tooltip="{ class: 'w-100', value: sourceInfoTooltip }"
>
<i class="fa-solid fa-circle-info" aria-hidden="true"></i>
</div>
@@ -251,9 +252,9 @@ export default {
type="button"
role="button"
class="pin cursor-pointer col-auto me-2"
title="unpin item"
:title="$p.t('dashboard/widget_unpin')"
aria-hidden="true"
aria-label="unpin item"
:aria-label="$p.t('dashboard/widget_unpin')"
pinned="true"
@click="unpin"
>
@@ -269,9 +270,9 @@ export default {
type="button"
role="button"
class="col-auto me-2 pin"
title="pin item"
:title="$p.t('dashboard/widget_pin')"
aria-hidden="true"
aria-label="pin item"
:aria-label="$p.t('dashboard/widget_pin')"
@click="pinItem"
>
<i class="fa-solid fa-thumbtack" aria-hidden="true" style="color:lightgray;"></i>
@@ -282,8 +283,8 @@ export default {
v-if="widgetTemplate.setup.cis4link"
:href="getWidgetC4Link(widgetTemplate)"
class="col-auto ms-auto"
aria-label="widget link"
v-tooltip="{ showDelay: 1000, value: 'widget link' }"
:aria-label="$p.t('dashboard/widget_link')"
v-tooltip="{ showDelay: 1000, value: $p.t('dashboard/widget_link') }"
>
<i class="fa fa-arrow-up-right-from-square me-1" aria-hidden="true"></i>
</a>
@@ -292,8 +293,8 @@ export default {
v-if="hasConfig"
href="#"
class="col-auto px-1"
aria-label="configure widget"
v-tooltip="{ showDelay: 1000, value: 'configure widget' }"
:aria-label="$p.t('dashboard/widget_configure')"
v-tooltip="{ showDelay: 1000, value: $p.t('dashboard/widget_configure') }"
@click.prevent="openConfig"
>
<i class="fa-solid fa-gear" aria-hidden="true"></i>
@@ -303,8 +304,8 @@ export default {
v-if="custom && editMode"
href="#"
class="col-auto px-1"
aria-label="delete widget"
v-tooltip="{ showDelay: 1000, value: 'delete widget' }"
:aria-label="$p.t('dashboard/widget_delete')"
v-tooltip="{ showDelay: 1000, value: $p.t('dashboard/widget_delete') }"
@click.prevent="$emit('remove')"
>
<i class="fa-solid fa-trash" aria-hidden="true"></i>
@@ -318,7 +319,7 @@ export default {
v-model="visible"
class="form-check-input ms-0"
:value="true"
aria-label="toggle widget"
:aria-label="$p.t('dashboard/widget_toggle_visibility')"
>
</div>
</Transition>
@@ -350,7 +351,7 @@ export default {
@showBsModal="handleShowBsModal"
>
<template v-slot:title>
{{ widgetTemplate ? 'Config for ' + widgetTemplate.setup.name : '' }}
{{ widgetTemplate ? $p.t('dashboard/widget_config_title', widgetTemplate.setup) : '' }}
</template>
<template v-slot:default>
<component
@@ -370,12 +371,12 @@ export default {
type="button"
class="btn btn-secondary"
data-bs-dismiss="modal"
>Close</button>
>{{ $p.t('ui/schliessen') }}</button>
<button
type="button"
class="btn btn-primary"
@click="changeConfig"
>Save changes</button>
>{{ $p.t('ui/speichern') }}</button>
</template>
</bs-modal>
<height-transition>
@@ -390,8 +391,8 @@ export default {
:class="resizeClasses.button"
draggable="true"
aria-hidden="true"
aria-label="resize widget"
v-tooltip="{ showDelay: 1000, value: 'resize widget' }"
:aria-label="$p.t('dashboard/widget_resize')"
v-tooltip="{ showDelay: 1000, value: $p.t('dashboard/widget_resize') }"
>
<i
class="fa-solid"
+1 -1
View File
@@ -221,7 +221,7 @@ export default {
{{ sectionNameTranslation }}:
</h3>
<button
v-tooltip="$p.t('dashboard','addLine')"
v-tooltip="$p.t('dashboard/addLine')"
v-if="!additionalRow && editModeIsActive"
class="btn btn-outline-secondary rounded-circle newGridRow d-flex justify-content-center align-items-center"
@click="additionalRow=true"
@@ -32,19 +32,31 @@ export default {
},
},
template: `<div class="dashboard-widget-picker">
<bs-modal ref="modal" class="fade" :dialog-class="{'modal-fullscreen-sm-down': 1, 'modal-xl': widgets && widgets.length > 0}" @hiddenBsModal="close">
<template v-slot:title>Create new widget</template>
template: /* html */`
<div class="dashboard-widget-picker">
<bs-modal
ref="modal"
class="fade"
:dialog-class="{ 'modal-fullscreen-sm-down': 1, 'modal-xl': widgets && widgets.length > 0 }"
@hiddenBsModal="close"
>
<template v-slot:title>{{ $p.t('dashboard/createWidget') }}</template>
<template v-slot:default>
<div v-if="widgets" class="row g-2">
<div v-if="!widgets.length">
No Widgets available
{{ $p.t('dashboard/noWidgetsAvailable') }}
</div>
<div v-for="widget in widgets" :key="widget.widget_id" class="widget-icon-container col-sm-6 col-md-4 col-lg-3 col-xl-2">
<widget-icon @select="pick" :widget="widget" ></widget-icon>
<div
v-for="widget in widgets"
:key="widget.widget_id"
class="widget-icon-container col-sm-6 col-md-4 col-lg-3 col-xl-2"
>
<widget-icon @select="pick" :widget="widget"></widget-icon>
</div>
</div>
<div v-else class="text-center"><i class="fa-solid fa-spinner fa-pulse fa-3x"></i></div>
<div v-else class="text-center">
<i class="fa-solid fa-spinner fa-pulse fa-3x"></i>
</div>
</template>
</bs-modal>
</div>`
+260
View File
@@ -47549,6 +47549,26 @@ array(
)
)
),
array(
'app' => 'core',
'category' => 'dashboard',
'phrase' => 'edit',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Dashboard bearbeiten',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Edit dashboard',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'dashboard',
@@ -47569,6 +47589,46 @@ array(
)
)
),
array(
'app' => 'core',
'category' => 'dashboard',
'phrase' => 'createWidget',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Neues Widget hinzufügen',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Create new widget',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'dashboard',
'phrase' => 'noWidgetsAvailable',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Keine Widgets verfügbar',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'No Widgets available',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'dashboard',
@@ -47709,6 +47769,206 @@ array(
)
)
),
array(
'app' => 'core',
'category' => 'dashboard',
'phrase' => 'widget_pin',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Pin Widget',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Pin widget',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'dashboard',
'phrase' => 'widget_unpin',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Unpin Widget',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Unpin widget',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'dashboard',
'phrase' => 'widget_toggle_visiblity',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Sichtbarkeit des Widgets umschalten',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Toggle widget visibility',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'dashboard',
'phrase' => 'widget_move',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Widget verschieben',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Move widget',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'dashboard',
'phrase' => 'widget_resize',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Widgetgröße anpassen',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Resize widget',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'dashboard',
'phrase' => 'widget_delete',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Widget löschen',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Delete widget',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'dashboard',
'phrase' => 'widget_configure',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Widget konfigurieren',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Configure widget',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'dashboard',
'phrase' => 'widget_config_title',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => '"{name}" konfigurieren',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Configure "{name}"',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'dashboard',
'phrase' => 'widget_link',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Widget link',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Widget link',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'dashboard',
'phrase' => 'kurzbz',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Name',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Identifier',
'description' => '',
'insertvon' => 'system'
)
)
),
// CIS4 phrases from legacy code end
// FHC4 Phrases Abschlusspruefung
array(