feat: Enhance plan item display with visual representation and interaction options
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 45s

This commit is contained in:
Torsten Schulz (local)
2026-05-28 13:08:41 +02:00
parent 4cf0ee2be8
commit 211420444e

View File

@@ -435,7 +435,12 @@
<div class="plan-cell-stack">
<div v-for="item in row.sharedItems" :key="`shared-${item.id}`" class="plan-cell-item">
<div class="plan-activity-main">
<span @click="startActivityEdit(item)" class="clickable activity-label">{{ getPlanItemDisplayLabel(item) }}</span>
<span @click="startActivityEdit(item)" class="clickable activity-label">
<span v-if="hasItemDrawingData(item)"
@click.stop="openPlanItemVisual(item)"
class="image-icon" :title="$t('diary.showImage')">🖼</span>
{{ getPlanItemDisplayLabel(item) }}
</span>
<span v-if="!isStructuralPlanItem(item) && getPlanItemStatus(item).label" class="plan-status-badge" :class="`plan-status-badge-${getPlanItemStatus(item).tone}`">
{{ getPlanItemStatus(item).label }}
</span>
@@ -468,7 +473,12 @@
<div v-if="(row.groupItems[group.id] || []).length" class="plan-cell-stack">
<div v-for="item in (row.groupItems[group.id] || [])" :key="`group-item-${item.id}`" class="plan-cell-item">
<div class="plan-activity-main">
<span @click="startActivityEdit(item)" class="clickable activity-label">{{ getPlanItemDisplayLabel(item) }}</span>
<span @click="startActivityEdit(item)" class="clickable activity-label">
<span v-if="hasItemDrawingData(item)"
@click.stop="openPlanItemVisual(item)"
class="image-icon" :title="$t('diary.showImage')">🖼</span>
{{ getPlanItemDisplayLabel(item) }}
</span>
<span v-if="!isStructuralPlanItem(item) && getPlanItemStatus(item).label" class="plan-status-badge" :class="`plan-status-badge-${getPlanItemStatus(item).tone}`">
{{ getPlanItemStatus(item).label }}
</span>
@@ -1473,9 +1483,31 @@ export default {
}
// Prüfe auch über predefinedActivity
if (item.predefinedActivity && this.hasActivityVisual(item.predefinedActivity)) return true;
if (item.groupPredefinedActivity && this.hasActivityVisual(item.groupPredefinedActivity)) return true;
} catch (e) { }
return false;
},
getPlanItemVisualSource(item) {
if (!item) return null;
if (item.predefinedActivity) return item.predefinedActivity;
if (item.groupPredefinedActivity) return item.groupPredefinedActivity;
if (!this.hasItemDrawingData(item)) return null;
return {
name: item.activity || '',
code: item.activity || '',
drawingData: item.drawingData || null,
renderCode: item.renderCode || '',
renderSpec: item.renderSpec || null,
imageLink: item.imageLink || '',
images: Array.isArray(item.images) ? item.images : []
};
},
async openPlanItemVisual(item) {
const source = this.getPlanItemVisualSource(item);
if (source) {
await this.openActivityVisual(source);
}
},
hasActivityVisual(pa) {
if (!pa) return false;