Skip to content
Snippets Groups Projects
Commit e728a80c authored by Jonathan Weth's avatar Jonathan Weth :keyboard:
Browse files

Merge branch 'fix/crud-edit' into 'master'

Some fixes in CRUD components

See merge request !1429
parents eab0cf38 9ee9b7b1
No related branches found
No related tags found
1 merge request!1429Some fixes in CRUD components
Pipeline #177606 failed
......@@ -96,6 +96,7 @@
v-model="createMode"
:affected-query="lastQuery"
:get-create-data="$attrs['get-create-data']"
:get-patch-data="$attrs['get-patch-data']"
:default-item="defaultItem"
:gql-create-mutation="$attrs['gql-create-mutation']"
:edit-item="editItem"
......@@ -105,6 +106,7 @@
:create-item-i18n-key="$attrs['create-item-i18n-key']"
:edited-item-i18n-key="$attrs['edit-item-i18n-key']"
:item-id="$attrs['item-id']"
:force-model-item-update="!isCreate"
@loading="handleLoading($event)"
>
<template #activator="{ props }">
......
......@@ -73,7 +73,7 @@
<!-- @slot Add additional action to action column -->
<slot name="actions" :item="item" />
<edit-button
v-if="$attrs['enable-edit']"
v-if="$attrs['enable-edit'] && 'canEdit' in item && item.canEdit"
icon
color="secondary"
@click="$refs.bar.handleEdit(item)"
......
......@@ -15,7 +15,7 @@
/>
<filter-dialog
v-model="filterDialog"
:filters="filters"
:filters="value"
@filters="updateFilters"
>
<template #filters="{ attrs, on }">
......@@ -46,7 +46,7 @@ export default {
* (via v-model)
* @model
*/
filters: {
value: {
type: Object,
required: false,
default: () => ({}),
......@@ -54,7 +54,7 @@ export default {
},
data() {
return {
numFilters: Object.keys(this.filters).length,
numFilters: Object.keys(this.value).length,
filterDialog: false,
};
},
......
......@@ -4,7 +4,7 @@
v-on="$listeners"
:i18n-key="i18nKey"
>
<v-icon v-if="icon" left>{{ icon }}</v-icon>
<v-icon v-if="filterIcon" left>{{ filterIcon }}</v-icon>
<v-badge color="secondary" :value="numFilters" :content="numFilters" inline>
<span v-t="i18nKey" />
</v-badge>
......@@ -28,7 +28,7 @@ export default {
components: { SecondaryActionButton },
extends: SecondaryActionButton,
computed: {
icon() {
filterIcon() {
return this.hasFilters || this.numFilters > 0
? "$filterSet"
: "$filterEmpty";
......
......@@ -12,7 +12,7 @@
{{ item.item[itemName] }}
</slot>
</template>
<template #append-outer>
<template #append-outer v-if="enableCreate">
<v-btn icon @click="createMode = true">
<v-icon>$plus</v-icon>
</v-btn>
......@@ -107,6 +107,11 @@ export default {
required: false,
default: "name",
},
enableCreate: {
type: Boolean,
required: false,
default: true,
},
},
};
</script>
......
......@@ -66,6 +66,7 @@ import { createSchoolTerms, schoolTerms } from "./schoolTerm.graphql";
export default {
name: "SchoolTermField",
components: { ForeignKeyField },
extends: [ForeignKeyField],
data() {
return {
gqlQuery: schoolTerms,
......
......@@ -51,14 +51,40 @@ export default {
emits: ["items", "lastQuery"],
data() {
return {
additionalFilters: {},
internalAdditionalFilters: {},
filterString: "{}",
lastQuery: {},
};
},
computed: {
additionalFilters: {
get() {
return this.internalAdditionalFilters;
},
set(filters) {
this.internalAdditionalFilters = filters;
this.updateFilterString();
},
},
},
watch: {
gqlFilters: {
handler() {
this.updateFilterString();
},
deep: true,
},
},
methods: {
handleItems(items) {
return items;
},
updateFilterString() {
this.filterString = JSON.stringify({
...this.gqlFilters,
...this.internalAdditionalFilters,
});
},
},
apollo: {
items() {
......@@ -68,16 +94,9 @@ export default {
const orderBy = this.gqlOrderBy.length
? { orderBy: this.gqlOrderBy }
: {};
const filters =
Object.keys(this.gqlFilters).length ||
Object.keys(this.additionalFilters).length
? {
filters: JSON.stringify({
...this.gqlFilters,
...this.additionalFilters,
}),
}
: {};
const filters = {
filters: this.filterString,
};
return {
...this.gqlAdditionalQueryArgs,
...orderBy,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment