Skip to content
Snippets Groups Projects
Commit 19be0a4b authored by Julian's avatar Julian
Browse files

Begin crudlist for efforts

parent 940b6c2c
No related branches found
No related tags found
2 merge requests!3Draft: Resolve "Implement shared secret mechanism",!2Frontend
<script setup>
import GroupChip from "aleksis.core/components/group/GroupChip.vue";
import InlineCRUDList from "aleksis.core/components/generic/InlineCRUDList.vue";
import EffortTypeChip from "../effort_types/EffortTypeChip.vue";
</script>
<template>
<v-container>
<inline-c-r-u-d-list
:headers="headers"
:i18n-key="i18nKey"
create-item-i18n-key="maka.efforts.create"
:gql-query="gqlQuery"
:gql-create-mutation="gqlCreateMutation"
:gql-patch-mutation="gqlPatchMutation"
:gql-delete-mutation="gqlDeleteMutation"
:default-item="defaultItem"
>
<!-- eslint-disable-next-line vue/valid-v-slot -->
<template #name.field="{ attrs, on }">
<div aria-required="true">
<v-text-field
v-bind="attrs"
v-on="on"
:rules="$rules().required.build()"
/>
</div>
</template>
<template #effortType="{ item }">
<effort-type-chip :effort-type="item.effortType" v-if="item.effortType" />
<span v-else></span>
</template>
<!-- eslint-disable-next-line vue/valid-v-slot -->
<template #effortType.field="{ attrs, on }">
<v-autocomplete v-bind="attrs" v-on="on" :items="effortTypes" item-text="name" item-value="id" />
</template>
<template #group="{ item }">
<group-chip :group="item.group"/>
</template>
<!-- eslint-disable-next-line vue/valid-v-slot -->
<template #group.field="{ attrs, on }">
<v-autocomplete v-bind="attrs" v-on="on" :items="groups" item-text="name" item-value="id" />
</template>
<template #gradeSet="{ item }">
{{ item.gradeSet.name }}
</template>
<!-- eslint-disable-next-line vue/valid-v-slot -->
<template #gradeSet.field="{ attrs, on }">
<v-autocomplete v-bind="attrs" v-on="on" :items="gradeSets" item-text="name" item-value="id" />
</template>
</inline-c-r-u-d-list>
</v-container>
</template>
<script>
import formRulesMixin from "aleksis.core/mixins/formRulesMixin.js";
import {
helperGroups,
helperGradeSets,
helperEffortTypes,
} from "./helper.graphql";
import {
efforts,
createEfforts,
deleteEfforts,
updateEfforts,
} from "./efforts.graphql";
export default {
name: "Efforts",
mixins: [formRulesMixin],
apollo: {
groups: {
query: helperGroups,
},
gradeSets: {
query: helperGradeSets,
},
effortTypes: {
query: helperEffortTypes,
},
},
data() {
return {
headers: [
{
text: this.$t("maka.efforts.name"),
value: "name",
},
{
text: this.$t("maka.efforts.effort_type"),
value: "effortType",
},
{
text: this.$t("maka.efforts.group"),
value: "group",
},
{
text: this.$t("maka.efforts.grade_set"),
value: "gradeSet",
},
],
i18nKey: "maka.efforts",
gqlQuery: efforts,
gqlCreateMutation: createEfforts,
gqlPatchMutation: updateEfforts,
gqlDeleteMutation: deleteEfforts,
defaultItem: {
name: "",
effortType: null,
group: null,
gradeSet: null,
},
effortTypes: [],
groups: [],
gradeSets: [],
};
},
};
</script>
\ No newline at end of file
query efforts($orderBy: [String], $filters: JSONString) {
items: efforts(orderBy: $orderBy, filters: $filters) {
id
name
effortType {
id
name
color
}
group {
id
name
}
gradeSet {
id
name
}
canEdit
canDelete
}
}
mutation createEfforts($input: [BatchCreateEffortInput]!) {
createEfforts(input: $input) {
items: efforts {
id
name
effortType {
id
name
color
}
group {
id
name
}
gradeSet {
id
name
}
canEdit
canDelete
}
}
}
mutation deleteEfforts($ids: [ID]!) {
deleteEfforts(ids: $ids) {
deletionCount
}
}
mutation updateEfforts($input: [BatchPatchEffortInput]!) {
updateEfforts(input: $input) {
items: efforts {
id
name
effortType {
id
name
color
}
group {
id
name
}
gradeSet {
id
name
}
canEdit
canDelete
}
}
}
\ No newline at end of file
query helperGroups {
groups {
id
name
}
}
query helperEffortTypes {
effortTypes {
id
name
color
}
}
query helperGradeSets {
gradeSets {
id
name
}
}
\ No newline at end of file
......@@ -35,5 +35,17 @@ export default {
permission: "",
},
},
{
path: "efforts",
component: () => import("./components/efforts/Efforts.vue"),
name: "maka.efforts",
meta: {
inMenu: true,
titleKey: "maka.efforts.menu_title",
icon: "mdi-playlist-star",
iconActive: "mdi-playlist-remove",
permission: "",
},
},
],
}
......@@ -9,6 +9,15 @@
"title_plural": "Grade Sets",
"create": "Create Grade Set"
},
"efforts": {
"create": "Create Effort",
"name": "Name",
"effort_type": "Effort Type",
"group": "Related group",
"grade_set": "Grade Set",
"menu_title": "Efforts",
"title_plural": "Efforts"
},
"effort_types": {
"menu_title": "Effort Types",
"title_plural": "Effort Types",
......
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