Skip to content

Commit 3449862

Browse files
- ADD: Added the option to hide all trait circles regardless of which traits are active or not. This may be useful in cases where there is a huge number of traits.
1 parent f5112f1 commit 3449862

File tree

11 files changed

+52
-29
lines changed

11 files changed

+52
-29
lines changed

components.d.ts

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,7 @@ declare module 'vue' {
5555
BNavItem: typeof import('bootstrap-vue-next/components/BNav')['BNavItem']
5656
BNavItemDropdown: typeof import('bootstrap-vue-next/components/BNav')['BNavItemDropdown']
5757
BOffcanvas: typeof import('bootstrap-vue-next/components/BOffcanvas')['BOffcanvas']
58-
BOverlay: typeof import('bootstrap-vue-next/components/BOverlay')['BOverlay']
5958
BPagination: typeof import('bootstrap-vue-next/components/BPagination')['BPagination']
60-
BPlaceholderCard: typeof import('bootstrap-vue-next/components/BPlaceholder')['BPlaceholderCard']
6159
BPopover: typeof import('bootstrap-vue-next/components/BPopover')['BPopover']
6260
BProgress: typeof import('bootstrap-vue-next/components/BProgress')['BProgress']
6361
BProgressBar: typeof import('bootstrap-vue-next/components/BProgress')['BProgressBar']
@@ -131,7 +129,6 @@ declare module 'vue' {
131129
IBiCardChecklist: typeof import('~icons/bi/card-checklist')['default']
132130
IBiCardList: typeof import('~icons/bi/card-list')['default']
133131
IBiCardText: typeof import('~icons/bi/card-text')['default']
134-
IBiCaretDown: typeof import('~icons/bi/caret-down')['default']
135132
IBiCaretLeftFill: typeof import('~icons/bi/caret-left-fill')['default']
136133
IBiCaretRight: typeof import('~icons/bi/caret-right')['default']
137134
IBiCaretRightFill: typeof import('~icons/bi/caret-right-fill')['default']
@@ -142,6 +139,7 @@ declare module 'vue' {
142139
IBiChatRightText: typeof import('~icons/bi/chat-right-text')['default']
143140
IBiChatRightTextFill: typeof import('~icons/bi/chat-right-text-fill')['default']
144141
IBiCheck: typeof import('~icons/bi/check')['default']
142+
IBiCheck2: typeof import('~icons/bi/check2')['default']
145143
IBiCheck2Square: typeof import('~icons/bi/check2-square')['default']
146144
IBiCheckSquare: typeof import('~icons/bi/check-square')['default']
147145
IBiCheckSquareFill: typeof import('~icons/bi/check-square-fill')['default']
@@ -152,13 +150,9 @@ declare module 'vue' {
152150
IBiChevronDown: typeof import('~icons/bi/chevron-down')['default']
153151
IBiChevronLeft: typeof import('~icons/bi/chevron-left')['default']
154152
IBiChevronRight: typeof import('~icons/bi/chevron-right')['default']
155-
IBiChevronUp: typeof import('~icons/bi/chevron-up')['default']
156153
IBiCircle: typeof import('~icons/bi/circle')['default']
157154
IBiCircleFill: typeof import('~icons/bi/circle-fill')['default']
158155
IBiCircleHalf: typeof import('~icons/bi/circle-half')['default']
159-
IBiCircleInfo: typeof import('~icons/bi/circle-info')['default']
160-
IBiCircleInformation: typeof import('~icons/bi/circle-information')['default']
161-
IBiClear: typeof import('~icons/bi/clear')['default']
162156
IBiClipboardData: typeof import('~icons/bi/clipboard-data')['default']
163157
IBiClockHistory: typeof import('~icons/bi/clock-history')['default']
164158
IBiCloudDownload: typeof import('~icons/bi/cloud-download')['default']
@@ -169,10 +163,8 @@ declare module 'vue' {
169163
IBiCloudUpload: typeof import('~icons/bi/cloud-upload')['default']
170164
IBiCloudUploadFill: typeof import('~icons/bi/cloud-upload-fill')['default']
171165
IBiCollection: typeof import('~icons/bi/collection')['default']
172-
IBiconArrowLeftRight: typeof import('~icons/bi/con-arrow-left-right')['default']
173166
IBiCursorFill: typeof import('~icons/bi/cursor-fill')['default']
174167
IBiDatabaseFill: typeof import('~icons/bi/database-fill')['default']
175-
IBiDelete: typeof import('~icons/bi/delete')['default']
176168
IBiDiagram2: typeof import('~icons/bi/diagram2')['default']
177169
IBiDiamondHalf: typeof import('~icons/bi/diamond-half')['default']
178170
IBiDot: typeof import('~icons/bi/dot')['default']
@@ -277,7 +269,6 @@ declare module 'vue' {
277269
IBiTrashFill: typeof import('~icons/bi/trash-fill')['default']
278270
IBiTwitter: typeof import('~icons/bi/twitter')['default']
279271
IBiUiChecksGrid: typeof import('~icons/bi/ui-checks-grid')['default']
280-
IBiUpb: typeof import('~icons/bi/upb')['default']
281272
IBiUpc: typeof import('~icons/bi/upc')['default']
282273
IBiViewStacked: typeof import('~icons/bi/view-stacked')['default']
283274
IBiX: typeof import('~icons/bi/x')['default']
@@ -300,7 +291,6 @@ declare module 'vue' {
300291
PlotCommentListModal: typeof import('./src/components/modals/PlotCommentListModal.vue')['default']
301292
PlotCommentModal: typeof import('./src/components/modals/PlotCommentModal.vue')['default']
302293
PlotDataSection: typeof import('./src/components/PlotDataSection.vue')['default']
303-
PlotMetadataDataUpdateModal: typeof import('./src/components/modals/PlotMetadataDataUpdateModal.vue')['default']
304294
PlotMetadataUpdateModal: typeof import('./src/components/modals/PlotMetadataUpdateModal.vue')['default']
305295
RouterLink: typeof import('vue-router')['RouterLink']
306296
RouterView: typeof import('vue-router')['RouterView']
@@ -347,7 +337,6 @@ declare module 'vue' {
347337
TrialSynchronizationModal: typeof import('./src/components/modals/TrialSynchronizationModal.vue')['default']
348338
TrialTraitTimeframeModal: typeof import('./src/components/modals/TrialTraitTimeframeModal.vue')['default']
349339
UploadTraitImageModal: typeof import('./src/components/modals/UploadTraitImageModal.vue')['default']
350-
VideoModal: typeof import('./src/components/modals/VideoModal.vue')['default']
351340
VScroll: typeof import('./src/components/canvas/VScroll.vue')['default']
352341
}
353342
export interface ComponentCustomProperties {

package-lock.json

Lines changed: 13 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@
6868
"unplugin-icons": "^0.19.0",
6969
"unplugin-vue-components": "^0.27.0",
7070
"vite": "^5.2.8",
71+
"vite-bundle-analyzer": "^1.2.3",
7172
"vite-plugin-pwa": "^0.20.0",
7273
"vite-plugin-vue-layouts": "^0.11.0",
7374
"vue-tsc": "^2.2.0"

src/components/BrapiTrialImportSection.vue

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,19 +33,19 @@
3333

3434
<b-button type="submit" variant="primary" :disabled="!canProceed"><IBiCloudDownload /> {{ $t('buttonReceiveData') }}</b-button>
3535

36+
<div v-if="errors && errors.length > 0" class="my-3">
37+
<h3>{{ $t('widgetBrapiTrialImportErrorsTitle') }}</h3>
38+
39+
<b-list-group class="import-errors">
40+
<b-list-group-item variant="danger" v-for="(error, index) in errors" :key="`import-error-${index}`">{{ error }}</b-list-group-item>
41+
</b-list-group>
42+
</div>
43+
3644
<template v-if="layoutValid">
3745
<hr />
3846

3947
<TrialLayoutDimensionComponent class="mt-3" :editLabelsAllowed="false" :editValuesAllowed="false" :layout="layout" @layout-changed="updateLayout" ref="trialDimensionComponent" />
4048

41-
<div v-if="errors && errors.length > 0" class="my-3">
42-
<h3>{{ $t('widgetBrapiTrialImportErrorsTitle') }}</h3>
43-
44-
<b-list-group class="import-errors">
45-
<b-list-group-item variant="danger" v-for="(error, index) in errors" :key="`import-error-${index}`">{{ error }}</b-list-group-item>
46-
</b-list-group>
47-
</div>
48-
4949
<b-button @click="importData" variant="primary" :disabled="!canImport"><IBiCloudDownload /> {{ $t('buttonImportData') }}</b-button>
5050
</template>
5151
</b-form>

src/components/canvas/DataCanvas.vue

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,8 @@ export default {
9797
'storeDisplayMinCellWidth',
9898
'storeCanvasDensity',
9999
'storeCanvasSize',
100-
'storePlotDisplayField'
100+
'storePlotDisplayField',
101+
'storeHideTraitCircles'
101102
])
102103
},
103104
watch: {
@@ -109,6 +110,9 @@ export default {
109110
this.scrollToPosition = this.$refs.plotCanvas.getCenterPosition()
110111
}
111112
this.reset()
113+
},
114+
storeHideTraitCircles: function () {
115+
this.reset()
112116
}
113117
},
114118
methods: {
@@ -187,10 +191,14 @@ export default {
187191
this.isResetting = true
188192
189193
this.$nextTick(() => {
190-
if (this.storeHiddenTraits) {
191-
this.dimensions.visibleTraitCount = this.trial.traits.filter(t => !this.storeHiddenTraits.includes(t.id)).length
194+
if (this.storeHideTraitCircles) {
195+
this.dimensions.visibleTraitCount = 0
192196
} else {
193-
this.dimensions.visibleTraitCount = this.trial.traits.length
197+
if (this.storeHiddenTraits) {
198+
this.dimensions.visibleTraitCount = this.trial.traits.filter(t => !this.storeHiddenTraits.includes(t.id)).length
199+
} else {
200+
this.dimensions.visibleTraitCount = this.trial.traits.length
201+
}
194202
}
195203
196204
this.dimensions.rowHeaderWidth = this.dimensions.padding + (this.dimensions.fontSize * `${this.trial.layout.rows}`.length)

src/components/canvas/DataGridComponent.vue

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,8 @@ export default {
145145
'storeCanvasSize',
146146
'storeCanvasShape',
147147
'storeCanvasDensity',
148-
'storePlotDisplayField'
148+
'storePlotDisplayField',
149+
'storeHideTraitCircles'
149150
]),
150151
cellClass: function () {
151152
return {
@@ -247,7 +248,7 @@ export default {
247248
},
248249
visibleTraits: function () {
249250
if (this.trial) {
250-
return this.trial.traits.filter(t => !this.storeHiddenTraits.includes(t.id))
251+
return this.storeHideTraitCircles ? [] : this.trial.traits.filter(t => !this.storeHiddenTraits.includes(t.id))
251252
} else {
252253
return []
253254
}

src/components/dropdowns/TraitDropdown.vue

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
<template #button-content>
44
<IBiDiamondHalf :style="{ transform: 'rotate(45deg)' }" width="1.3em" height="1.3em" v-if="store.canvasShape === CANVAS_SHAPE_SQUARE" /><IBiCircleHalf v-else /> <span class="d-none d-lg-inline-block">{{ $t('toolbarTraitVisibility') }}</span>
55
</template>
6+
<b-dropdown-item-button @click="store.setHideTraitCircles(!store.storeHideTraitCircles)">{{ $t(store.storeCanvasShape === CANVAS_SHAPE_CIRCLE ? 'buttonHideTraitCircles' : 'buttonHideTraitSquares') }} <IBiCheck2 v-if="store.storeHideTraitCircles" /></b-dropdown-item-button>
67
<b-dropdown-form>
78
<b-form-group class="mb-0" :label="$t('formLabelTraitDropdownCutoffDate')" label-for="cutoff" :title="$t('formDescriptionTraitDropdownCutoffDate')" v-if="atLeastOneMultiTrait">
89
<b-input-group>
@@ -37,7 +38,7 @@
3738

3839
<script setup lang="ts">
3940
import { coreStore } from '@/store'
40-
import { CANVAS_SHAPE_SQUARE } from '@/plugins/constants'
41+
import { CANVAS_SHAPE_CIRCLE, CANVAS_SHAPE_SQUARE } from '@/plugins/constants'
4142
import TraitIcon from '@/components/icons/TraitIcon.vue'
4243
import { TraitPlus } from '@/plugins/types/client'
4344
import { useI18n } from 'vue-i18n'

src/plugins/i18n/de_DE.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,8 @@
100100
"buttonDownloadSvg": "Als SVG herunterladen",
101101
"buttonSwapGuidedWalkCells": "Wechseln",
102102
"buttonDeleteLocalChanges": "Lokale Veränderungen löschen",
103+
"buttonHideTraitCircles": "Merkmalskreise ausblenden",
104+
"buttonHideTraitSquares": "Merkmalsrechtecke ausblenden",
103105
"cellCategoryControl": "Kontrolle",
104106
"changelogBadgeNew": "NEU",
105107
"changelogBadgeUpdate": "AKT",

src/plugins/i18n/en_GB.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,8 @@
101101
"buttonDownloadSvg": "Download SVG",
102102
"buttonSwapGuidedWalkCells": "Swap",
103103
"buttonDeleteLocalChanges": "Delete local changes",
104+
"buttonHideTraitCircles": "Hide trait circles",
105+
"buttonHideTraitSquares": "Hide trait squares",
104106
"appTitle": "GridScore NEXT",
105107
"appTitleLegacy": "GridScore legacy",
106108
"cellCategoryControl": "Control/Check",

src/store/index.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ export const coreStore = defineStore('core', {
4747
mapLayer: 'theme',
4848
trialListMode: TRIAL_LIST_ALL,
4949
trialListArrangement: TRIAL_LIST_GRID,
50+
hideTraitCircles: false,
5051
hiddenTraits: [] as string[],
5152
showFullTraitDescription: true,
5253
escapeBarcode: null as (string | null),
@@ -100,6 +101,7 @@ export const coreStore = defineStore('core', {
100101
storeTrialListArrangement: (state): string => state.trialListArrangement,
101102
storeMapLayer: (state): string => state.mapLayer,
102103
storeSelectedTrial: (state): string | null => state.selectedTrial,
104+
storeHideTraitCircles: (state): boolean => state.hideTraitCircles || false,
103105
storeHiddenTraits: (state): string[] => state.hiddenTraits,
104106
storePlausible: (state): PlausibleConfig => state.plausible,
105107
storeServerUrl: (state): string | null => state.serverUrl,
@@ -120,6 +122,9 @@ export const coreStore = defineStore('core', {
120122
setHiddenTraits: function (newHiddenTraits: string[]) {
121123
this.hiddenTraits = newHiddenTraits
122124
},
125+
setHideTraitCircles: function (newHideTraitCircles: boolean) {
126+
this.hideTraitCircles = newHideTraitCircles
127+
},
123128
setSelectedTrialPerson: function (newSelectedTrialPerson: string | null) {
124129
this.selectedTrialPerson = newSelectedTrialPerson
125130
},
@@ -140,6 +145,7 @@ export const coreStore = defineStore('core', {
140145
const currentId = this.selectedTrial
141146
this.selectedTrial = newSelectedTrial
142147
this.hiddenTraits = []
148+
this.hideTraitCircles = false
143149
if (currentId !== newSelectedTrial) {
144150
this.selectedTrialPerson = null
145151
}

0 commit comments

Comments
 (0)