Skip to content

Commit ee7367e

Browse files
committed
Snygga till redigering av noter lite
1 parent c4c37fe commit ee7367e

File tree

9 files changed

+153
-97
lines changed

9 files changed

+153
-97
lines changed

src/components/edit/blocks/EditBelopprad.vue

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ const props = defineProps<{
2727
/** Huruvida borttag ska tillåtas. */
2828
allowDelete?: boolean;
2929
30+
/** Huruvida beloppraden ska vara mindre än en typisk belopprad. */
31+
small?: boolean;
32+
3033
/** Antal tidigare räkenskapsår som ska visas för belopprader där man kan jämföra mellan år. */
3134
comparableNumPreviousYears?: number;
3235
@@ -78,6 +81,7 @@ const taxonomyItem = computed(() => {
7881
:belopprad="belopprad"
7982
:comparable-num-previous-years="comparableNumPreviousYears || 0"
8083
:multiline="stringMultiline || false"
84+
:small="small || false"
8185
:taxonomy-manager="taxonomyManager"
8286
@delete="emit('delete')"
8387
/>

src/components/edit/blocks/belopprad/BaseEditBeloppradComparable.vue

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ export interface EditBeloppradComparablePropsBase {
1919
/** Huruvida borttag ska tillåtas. */
2020
allowDelete: boolean;
2121
22+
/** Huruvida beloppraden ska vara mindre än en typisk belopprad. */
23+
small: boolean;
24+
2225
/** Antal tidigare räkenskapsår som ska visas för jämförelse. */
2326
numPreviousYears: number;
2427
@@ -90,6 +93,7 @@ function onBeforeValueInput(event: InputEvent) {
9093
<input
9194
v-if="taxonomyItem.properties.abstract !== 'true'"
9295
v-model.trim="belopprad.not"
96+
:class="{ 'form-control-sm': small }"
9397
class="form-control"
9498
maxlength="2"
9599
type="text"
@@ -106,6 +110,7 @@ function onBeforeValueInput(event: InputEvent) {
106110
<input
107111
v-if="taxonomyItem.properties.abstract !== 'true'"
108112
v-model.trim="belopprad.beloppNuvarandeAr"
113+
:class="{ 'form-control-sm': small }"
109114
:disabled="isSummarad"
110115
class="form-control"
111116
type="text"
@@ -124,6 +129,7 @@ function onBeforeValueInput(event: InputEvent) {
124129
<input
125130
v-if="taxonomyItem.properties.abstract !== 'true'"
126131
v-model.trim="belopprad.beloppTidigareAr[i - 1]"
132+
:class="{ 'form-control-sm': small }"
127133
:disabled="isSummarad"
128134
class="form-control"
129135
type="text"

src/components/edit/blocks/belopprad/EditBeloppradMonetary.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ watch(
8585
:is-summarad="taxonomyItem.additionalData.isCalculatedItem"
8686
:num-previous-years="numPreviousYears"
8787
:show-balance-sign="showBalanceSign"
88+
:small="small"
8889
:taxonomy-manager="taxonomyManager"
8990
@delete="emit('delete')"
9091
/>

src/components/edit/blocks/belopprad/EditBeloppradNonmonetaryComparable.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ const belopprad = defineModel<BaseBeloppradComparable>("belopprad", {
2626
:allow-not="allowNot"
2727
:belopprad="belopprad"
2828
:num-previous-years="numPreviousYears"
29+
:small="small"
2930
:taxonomy-manager="taxonomyManager"
3031
@delete="emit('delete')"
3132
/>

src/components/edit/blocks/belopprad/EditBeloppradString.vue

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ const props = defineProps<{
2323
/** Huruvida borttag ska tillåtas. */
2424
allowDelete: boolean;
2525
26+
/** Huruvida beloppraden ska vara mindre än en typisk belopprad. */
27+
small: boolean;
28+
2629
/** Huruvida radbrytningar ska vara tillåtna. */
2730
multiline: boolean;
2831
@@ -104,7 +107,12 @@ const trClasses = computed(() => [
104107
:colspan="comparableNumPreviousYears + 1"
105108
class="value-container text-left"
106109
>
107-
<input v-model="belopprad.text" class="form-control" type="text" />
110+
<input
111+
v-model="belopprad.text"
112+
:class="{ 'form-control-sm': small }"
113+
class="form-control"
114+
type="text"
115+
/>
108116
</td>
109117
<td v-if="allowDelete">
110118
<BaseEditBeloppradDeleteButton

src/components/edit/blocks/belopprad/EditBeloppradTuple.vue

Lines changed: 41 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -54,34 +54,54 @@ function deleteInstance(index: number) {
5454
:key="instans.uuid"
5555
>
5656
<td colspan="3">
57-
<table class="edit-tuple-instance">
58-
<tbody>
59-
<EditBelopprad
60-
v-for="(
61-
instansBelopprad, instansBeloppradIndex
62-
) in instans.belopprader"
63-
:key="instansBelopprad.taxonomyItemName"
64-
v-model:belopprad="instans.belopprader[instansBeloppradIndex]"
65-
v-model:belopprader="instans.belopprader"
66-
:comparable-num-previous-years="0"
67-
:taxonomy-manager="taxonomyManager"
68-
/>
69-
</tbody>
70-
</table>
71-
</td>
72-
<td>
73-
<BaseEditBeloppradDeleteButton @delete="deleteInstance(instansIndex)" />
57+
<div
58+
:class="{ last: instansIndex === belopprad.instanser.length - 1 }"
59+
class="edit-tuple-instance-container"
60+
>
61+
<table class="edit-tuple-instance">
62+
<tbody>
63+
<EditBelopprad
64+
v-for="(
65+
instansBelopprad, instansBeloppradIndex
66+
) in instans.belopprader"
67+
:key="instansBelopprad.taxonomyItemName"
68+
v-model:belopprad="instans.belopprader[instansBeloppradIndex]"
69+
v-model:belopprader="instans.belopprader"
70+
:comparable-num-previous-years="0"
71+
:taxonomy-manager="taxonomyManager"
72+
small
73+
/>
74+
</tbody>
75+
</table>
76+
<BaseEditBeloppradDeleteButton
77+
class="edit-tuple-instance-delete"
78+
@delete="deleteInstance(instansIndex)"
79+
/>
80+
</div>
7481
</td>
7582
</tr>
7683
</template>
7784

7885
<style lang="scss" scoped>
79-
table.edit-tuple-instance {
80-
margin-top: 0 !important;
86+
.edit-tuple-instance-container {
87+
display: flex;
8188
margin-left: 2rem;
89+
margin-bottom: 0.5rem;
90+
91+
&.last {
92+
margin-bottom: 1.5rem;
93+
}
94+
95+
table.edit-tuple-instance {
96+
margin: 0;
97+
98+
:deep(td.value-container input) {
99+
min-width: 200px !important;
100+
}
101+
}
82102
83-
:deep(td.value-container input) {
84-
min-width: 200px !important;
103+
.edit-tuple-instance-delete {
104+
margin: 0.25rem 0;
85105
}
86106
}
87107
</style>

src/components/edit/sections/EditBalansrakning.vue

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,13 +53,13 @@ const groupedBelopprader = groupPrepopulatedSection(belopprader, groups);
5353
<div class="accordion">
5454
<div
5555
v-for="(group, groupIndex) in groups"
56-
:key="groupIndex"
56+
:key="group[0].xmlName"
5757
class="accordion-item"
5858
>
5959
<div class="accordion-header">
6060
<button
61-
:aria-controls="`balansrakning-accordion${groupIndex}`"
62-
:data-bs-target="`#balansrakning-accordion${groupIndex}`"
61+
:aria-controls="`balansrakning-accordion-${group[0].xmlName}`"
62+
:data-bs-target="`#balansrakning-accordion-${group[0].xmlName}`"
6363
aria-expanded="true"
6464
class="accordion-button collapsed"
6565
data-bs-toggle="collapse"
@@ -69,7 +69,7 @@ const groupedBelopprader = groupPrepopulatedSection(belopprader, groups);
6969
</button>
7070
</div>
7171
<div
72-
:id="`balansrakning-accordion${groupIndex}`"
72+
:id="`balansrakning-accordion-${group[0].xmlName}`"
7373
class="accordion-collapse collapse"
7474
>
7575
<div class="accordion-body">

src/components/edit/sections/EditForvaltningsberattelse.vue

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,13 @@ const groupedBelopprader = groupPrepopulatedSection(belopprader, groups);
5252
<div class="accordion">
5353
<div
5454
v-for="(group, groupIndex) in groups"
55-
:key="groupIndex"
55+
:key="group.xmlName"
5656
class="accordion-item"
5757
>
5858
<div class="accordion-header">
5959
<button
60-
:aria-controls="`forvaltningsberattelse-accordion${groupIndex}`"
61-
:data-bs-target="`#forvaltningsberattelse-accordion${groupIndex}`"
60+
:aria-controls="`forvaltningsberattelse-accordion-${group.xmlName}`"
61+
:data-bs-target="`#forvaltningsberattelse-accordion-${group.xmlName}`"
6262
aria-expanded="true"
6363
class="accordion-button collapsed"
6464
data-bs-toggle="collapse"
@@ -68,7 +68,7 @@ const groupedBelopprader = groupPrepopulatedSection(belopprader, groups);
6868
</button>
6969
</div>
7070
<div
71-
:id="`forvaltningsberattelse-accordion${groupIndex}`"
71+
:id="`forvaltningsberattelse-accordion-${group.xmlName}`"
7272
class="accordion-collapse collapse"
7373
>
7474
<div class="accordion-body">

src/components/edit/sections/EditNoter.vue

Lines changed: 83 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,18 @@
66
77
import { type Arsredovisning } from "@/model/arsredovisning/Arsredovisning.ts";
88
import EditBelopprad from "@/components/edit/blocks/EditBelopprad.vue";
9-
import { createBeloppradInList } from "@/model/arsredovisning/Belopprad.ts";
9+
import {
10+
createBelopprad,
11+
createBeloppradInList,
12+
} from "@/model/arsredovisning/Belopprad.ts";
1013
import { getTaxonomyManager } from "@/util/TaxonomyManager.ts";
1114
import { getValueColumnHeaderCell } from "@/util/noterUtils.ts";
1215
import { usePrepopulateSection } from "@/components/edit/composables/usePrepopulateSection.ts";
1316
import {
1417
type TaxonomyItem,
1518
TaxonomyRootName,
1619
} from "@/model/taxonomy/TaxonomyItem.ts";
20+
import BaseEditBeloppradTitle from "@/components/edit/blocks/belopprad/BaseEditBeloppradTitle.vue";
1721
1822
// TaxonomyManager och rader
1923
const taxonomyManager = await getTaxonomyManager(TaxonomyRootName.NOTER);
@@ -42,78 +46,90 @@ const { prepopulateSection, groupPrepopulatedSection } = usePrepopulateSection({
4246
maxNumPreviousYears: 1,
4347
});
4448
49+
const groupsOfGroups = availableTaxonomyItems.children[0].children;
50+
4551
const belopprader = prepopulateSection();
46-
const groups = [
47-
availableTaxonomyItems.children[0].children[0],
48-
...availableTaxonomyItems.children[0].children
49-
.slice(1)
50-
.flatMap((c) => c.children),
51-
];
52+
const groups = availableTaxonomyItems.children[0].children.flatMap(
53+
(c) => c.children,
54+
);
5255
const groupedBelopprader = groupPrepopulatedSection(belopprader, groups);
5356
</script>
5457

5558
<template>
56-
<div class="accordion">
57-
<div
58-
v-for="(group, groupIndex) in groups"
59-
:key="groupIndex"
60-
class="accordion-item"
61-
>
62-
<div class="accordion-header">
63-
<button
64-
:aria-controls="`noter-accordion${groupIndex}`"
65-
:data-bs-target="`#noter-accordion${groupIndex}`"
66-
aria-expanded="true"
67-
class="accordion-button collapsed"
68-
data-bs-toggle="collapse"
69-
type="button"
70-
>
71-
{{ group.additionalData.displayLabel }}
72-
</button>
59+
<div class="d-flex flex-col gap-4">
60+
<div v-for="groupOfGroups in groupsOfGroups" :key="groupOfGroups.xmlName">
61+
<div class="mb-2">
62+
<BaseEditBeloppradTitle
63+
:belopprad="createBelopprad(groupOfGroups)"
64+
:taxonomy-manager="taxonomyManager"
65+
/>
7366
</div>
74-
<div
75-
:id="`noter-accordion${groupIndex}`"
76-
class="accordion-collapse collapse"
77-
>
78-
<div class="accordion-body">
79-
<table>
80-
<thead>
81-
<tr>
82-
<th scope="col">{{ group.additionalData.displayLabel }}</th>
83-
<component
84-
:is="
85-
getValueColumnHeaderCell(
86-
group,
87-
arsredovisning.verksamhetsarNuvarande,
88-
)
89-
"
90-
/>
91-
<component
92-
:is="
93-
getValueColumnHeaderCell(
94-
group,
95-
arsredovisning.verksamhetsarTidigare[0],
96-
)
97-
"
98-
v-if="arsredovisning.verksamhetsarTidigare.length > 0"
99-
/>
100-
</tr>
101-
</thead>
102-
<tbody>
103-
<EditBelopprad
104-
v-for="(belopprad, index) in groupedBelopprader[groupIndex]"
105-
:key="belopprad.taxonomyItemName"
106-
v-model:belopprad="groupedBelopprader[groupIndex][index]"
107-
v-model:belopprader="groupedBelopprader[groupIndex]"
108-
:comparable-num-previous-years="
109-
Math.min(arsredovisning.verksamhetsarTidigare.length, 1)
110-
"
111-
:string-minimum-level="1"
112-
:taxonomy-manager="taxonomyManager"
113-
string-multiline
114-
/>
115-
</tbody>
116-
</table>
67+
68+
<div class="accordion">
69+
<div
70+
v-for="[groupIndex, group] in [...groups.entries()].filter(([, g]) =>
71+
groupOfGroups.children.includes(g),
72+
)"
73+
:key="group.xmlName"
74+
class="accordion-item"
75+
>
76+
<div class="accordion-header">
77+
<button
78+
:aria-controls="`noter-accordion-${group.xmlName}`"
79+
:data-bs-target="`#noter-accordion-${group.xmlName}`"
80+
aria-expanded="true"
81+
class="accordion-button collapsed"
82+
data-bs-toggle="collapse"
83+
type="button"
84+
>
85+
{{ group.additionalData.displayLabel }}
86+
</button>
87+
</div>
88+
<div
89+
:id="`noter-accordion-${group.xmlName}`"
90+
class="accordion-collapse collapse"
91+
>
92+
<div class="accordion-body">
93+
<table>
94+
<thead v-if="groupedBelopprader[groupIndex].length > 1">
95+
<tr>
96+
<th scope="col">{{ group.additionalData.displayLabel }}</th>
97+
<component
98+
:is="
99+
getValueColumnHeaderCell(
100+
group,
101+
arsredovisning.verksamhetsarNuvarande,
102+
)
103+
"
104+
/>
105+
<component
106+
:is="
107+
getValueColumnHeaderCell(
108+
group,
109+
arsredovisning.verksamhetsarTidigare[0],
110+
)
111+
"
112+
v-if="arsredovisning.verksamhetsarTidigare.length > 0"
113+
/>
114+
</tr>
115+
</thead>
116+
<tbody>
117+
<EditBelopprad
118+
v-for="(belopprad, index) in groupedBelopprader[groupIndex]"
119+
:key="belopprad.taxonomyItemName"
120+
v-model:belopprad="groupedBelopprader[groupIndex][index]"
121+
v-model:belopprader="groupedBelopprader[groupIndex]"
122+
:comparable-num-previous-years="
123+
Math.min(arsredovisning.verksamhetsarTidigare.length, 1)
124+
"
125+
:string-minimum-level="1"
126+
:taxonomy-manager="taxonomyManager"
127+
string-multiline
128+
/>
129+
</tbody>
130+
</table>
131+
</div>
132+
</div>
117133
</div>
118134
</div>
119135
</div>

0 commit comments

Comments
 (0)