Minor: Social: Format code

pull/4826/head
Angel Fernando Quiroz Campos 2 years ago
parent 5359c017aa
commit 9b2684080c
  1. 132
      assets/vue/views/userreluser/Add.vue
  2. 445
      assets/vue/views/userreluser/List.vue

@ -1,32 +1,33 @@
<template> <template>
<ButtonToolbar> <ButtonToolbar>
<BaseButton <BaseButton
type="black"
icon="back" icon="back"
type="black"
@click="goToBack" @click="goToBack"
/> />
</ButtonToolbar> </ButtonToolbar>
<div class="flex flex-row pt-2"> <div class="flex flex-row pt-2">
<div class="w-full"> <div class="w-full">
<div class="text-h4 q-mb-md" v-t="'Search'" /> <div
v-t="'Search'"
class="text-h4 q-mb-md"
/>
<VueMultiselect <VueMultiselect
:placeholder="t('Add')" :internal-search="false"
:loading="isLoadingSelect" :loading="isLoadingSelect"
:options="users" :multiple="true"
:multiple="true" :options="users"
:searchable="true" :placeholder="t('Add')"
:internal-search="false" :searchable="true"
@search-change="asyncFind" label="username"
@select="addFriend" limit="3"
limit-text="3" limit-text="3"
limit="3" track-by="id"
label="username" @select="addFriend"
track-by="id" @search-change="asyncFind"
/> />
</div> </div>
</div> </div>
</template> </template>
@ -34,73 +35,76 @@
<style src="vue-multiselect/dist/vue-multiselect.css"></style> <style src="vue-multiselect/dist/vue-multiselect.css"></style>
<script> <script>
import { mapActions, mapGetters } from 'vuex'; import { useStore } from "vuex"
import { mapFields } from 'vuex-map-fields';
import Toolbar from '../../components/Toolbar.vue';
import VueMultiselect from 'vue-multiselect' import VueMultiselect from "vue-multiselect"
import { ref, reactive, onMounted, computed } from 'vue'; import { computed, ref } from "vue"
import { useStore } from 'vuex'; import axios from "axios"
import axios from "axios"; import { ENTRYPOINT } from "../../config/entrypoint"
import {ENTRYPOINT} from "../../config/entrypoint"; import useVuelidate from "@vuelidate/core"
import useVuelidate from "@vuelidate/core";
import ButtonToolbar from "../../components/basecomponents/ButtonToolbar.vue" import ButtonToolbar from "../../components/basecomponents/ButtonToolbar.vue"
import BaseButton from "../../components/basecomponents/BaseButton.vue" import BaseButton from "../../components/basecomponents/BaseButton.vue"
import { useRouter } from "vue-router" import { useRouter } from "vue-router"
import { useI18n } from "vue-i18n" import { useI18n } from "vue-i18n"
export default { export default {
name: 'UserRelUserAdd', name: "UserRelUserAdd",
servicePrefix: 'userreluser', servicePrefix: "userreluser",
components: { components: {
BaseButton, BaseButton,
ButtonToolbar, ButtonToolbar,
VueMultiselect VueMultiselect,
}, },
setup() { setup() {
const users = ref([]); const users = ref([])
const isLoadingSelect = ref(false); const isLoadingSelect = ref(false)
const store = useStore(); const store = useStore()
const router = useRouter() const router = useRouter()
const { t } = useI18n() const { t } = useI18n()
const user = store.getters["security/getUser"]; const user = store.getters["security/getUser"]
function asyncFind (query) { function asyncFind(query) {
if (query.toString().length < 3) { if (query.toString().length < 3) {
return; return
} }
isLoadingSelect.value = true; isLoadingSelect.value = true
axios.get(ENTRYPOINT + 'users', { axios
params: { .get(ENTRYPOINT + "users", {
username: query params: {
} username: query,
}).then(response => { },
isLoadingSelect.value = false; })
let data = response.data; .then((response) => {
users.value = data['hydra:member']; isLoadingSelect.value = false
}).catch(function (error) { let data = response.data
isLoadingSelect.value = false; users.value = data["hydra:member"]
console.log(error); })
}); .catch(function (error) {
isLoadingSelect.value = false
console.log(error)
})
} }
function addFriend(friend) { function addFriend(friend) {
axios.post(ENTRYPOINT + 'user_rel_users', { axios
user: user['@id'], .post(ENTRYPOINT + "user_rel_users", {
friend: friend['@id'], user: user["@id"],
relationType: 10, friend: friend["@id"],
}).then(response => { relationType: 10,
console.log(response); })
isLoadingSelect.value = false; .then((response) => {
}).catch(function (error) { console.log(response)
isLoadingSelect.value = false; isLoadingSelect.value = false
console.log(error); })
}); .catch(function (error) {
isLoadingSelect.value = false
console.log(error)
})
} }
const goToBack = () => { const goToBack = () => {
router.push({ name: 'UserRelUserList' }) router.push({ name: "UserRelUserList" })
} }
const selectedItems = ref([]) const selectedItems = ref([])
@ -110,9 +114,9 @@ export default {
const item = ref({}) const item = ref({})
const submitted = ref(false) const submitted = ref(false)
const isAuthenticated = computed(() => store.getters['security/isAuthenticated']) const isAuthenticated = computed(() => store.getters["security/isAuthenticated"])
const isAdmin = computed(() => store.getters['security/isAdmin']) const isAdmin = computed(() => store.getters["security/isAdmin"])
const currentUser = computed(() => store.getters['security/getUser']) const currentUser = computed(() => store.getters["security/getUser"])
return { return {
v$: useVuelidate(), v$: useVuelidate(),
@ -131,7 +135,7 @@ export default {
isAuthenticated, isAuthenticated,
isAdmin, isAdmin,
currentUser, currentUser,
}; }
}, },
}; }
</script> </script>

@ -1,128 +1,144 @@
<template> <template>
<ButtonToolbar> <ButtonToolbar>
<BaseButton <BaseButton
type="black"
icon="user-add"
:disabled="isLoading" :disabled="isLoading"
:label="t('Add friend')" :label="t('Add friend')"
icon="user-add"
type="black"
@click="goToAdd" @click="goToAdd"
/> />
<BaseButton <BaseButton
type="black"
icon="refresh"
:label="t('Refresh')"
:disabled="isLoading" :disabled="isLoading"
:label="t('Refresh')"
icon="refresh"
type="black"
@click="reloadHandler" @click="reloadHandler"
/> />
<BaseButton <BaseButton
type="black"
icon="delete-multiple-user"
:label="t('Delete friends')"
:disabled="isLoading || !selectedItems.length" :disabled="isLoading || !selectedItems.length"
:label="t('Delete friends')"
icon="delete-multiple-user"
type="black"
@click="confirmDeleteMultiple" @click="confirmDeleteMultiple"
/> />
</ButtonToolbar> </ButtonToolbar>
<div v-if="friendRequests.length"> <div v-if="friendRequests.length">
<div <div
class="text-h4 mb-2"
v-t="'Requests'" v-t="'Requests'"
class="text-h4 mb-2"
/> />
<div <div
v-for="(request, i) in friendRequests" v-for="(request, i) in friendRequests"
:key="i" :key="i"
class="flex flex-row gap-2 items-center" class="flex flex-row gap-2 items-center"
> >
<BaseUserAvatar <BaseUserAvatar :image-url="request.user.illustrationUrl + '?w=80&h=80&fit=crop'" />
:image-url="request.user.illustrationUrl + '?w=80&h=80&fit=crop'"
/>
{{ request.user.username }} {{ request.user.username }}
<BaseButton <BaseButton
type="black"
icon="user-add" icon="user-add"
only-icon only-icon
type="black"
@click="addFriend(request)" @click="addFriend(request)"
/> />
</div> </div>
</div> </div>
<div <div
v-for="(request, i) in waitingRequests" v-for="(request, i) in waitingRequests"
:key="i" :key="i"
> >
<BaseUserAvatar <BaseUserAvatar :image-url="request.friend.illustrationUrl + '?w=80&h=80&fit=crop'" />
:image-url="request.friend.illustrationUrl + '?w=80&h=80&fit=crop'"
/>
{{ request.friend.username }} {{ request.friend.username }}
<BaseTag :label="t('Waiting')" type="info"/> <BaseTag
:label="t('Waiting')"
type="info"
/>
</div> </div>
<div class="flex flex-row pt-2"> <div class="flex flex-row pt-2">
<div class="w-full"> <div class="w-full">
<div class="text-h4 q-mb-md">Friends</div> <div class="text-h4 q-mb-md">Friends</div>
<!-- :loading="isLoading"--> <!-- :loading="isLoading"-->
<DataTable <DataTable
class="p-datatable-sm"
:value="items"
v-model:selection="selectedItems"
dataKey="id"
v-model:filters="friendFilter" v-model:filters="friendFilter"
sortBy="sendDate" v-model:selection="selectedItems"
sortOrder="asc"
:lazy="true" :lazy="true"
:paginator="false" :paginator="false"
:rowsPerPageOptions="[5, 10, 20, 50]"
:totalRecords="totalItems" :totalRecords="totalItems"
@page="onPage($event)" :value="items"
@sort="sortingChanged($event)" class="p-datatable-sm"
currentPageReportTemplate="Showing {first} to {last} of {totalRecords}"
dataKey="id"
paginatorTemplate="CurrentPageReport FirstPageLink PrevPageLink PageLinks NextPageLink LastPageLink RowsPerPageDropdown" paginatorTemplate="CurrentPageReport FirstPageLink PrevPageLink PageLinks NextPageLink LastPageLink RowsPerPageDropdown"
:rowsPerPageOptions="[5, 10, 20, 50]"
responsiveLayout="scroll" responsiveLayout="scroll"
currentPageReportTemplate="Showing {first} to {last} of {totalRecords}" sortBy="sendDate"
sortOrder="asc"
@page="onPage($event)"
@sort="sortingChanged($event)"
> >
<Column
<Column selectionMode="multiple" style="width: 3rem" :exportable="false"></Column> :exportable="false"
selectionMode="multiple"
<Column field="sender" :header="$t('User')" :sortable="false"> style="width: 3rem"
<template #body="slotProps"> ></Column>
<q-avatar size="40px">
<img :src="slotProps.data.friend.illustrationUrl + '?w=80&h=80&fit=crop'" /> <Column
</q-avatar> :header="$t('User')"
:sortable="false"
field="sender"
>
<template #body="slotProps">
<q-avatar size="40px">
<img :src="slotProps.data.friend.illustrationUrl + '?w=80&h=80&fit=crop'" />
</q-avatar>
{{ slotProps.data.friend.username }} {{ slotProps.data.friend.username }}
</template> </template>
</Column> </Column>
<Column field="createdAt" :header="$t('Sent date')" :sortable="true"> <Column
<template #body="slotProps"> :header="$t('Sent date')"
{{ $filters.relativeDatetime(slotProps.data.createdAt) }} :sortable="true"
</template> field="createdAt"
</Column> >
<template #body="slotProps">
<Column :exportable="false"> {{ $filters.relativeDatetime(slotProps.data.createdAt) }}
<template #body="slotProps"> </template>
<!-- class="flex flex-row gap-2"--> </Column>
<!-- <v-icon v-if="slotProps.data.relationType == 3" icon="mdi-check" />-->
<v-btn <Column :exportable="false">
tile <template #body="slotProps">
<!-- class="flex flex-row gap-2"-->
<!-- <v-icon v-if="slotProps.data.relationType == 3" icon="mdi-check" />-->
<v-btn
icon icon
@click="confirmDeleteItem(slotProps.data)" > tile
<v-icon icon="mdi-delete" /> @click="confirmDeleteItem(slotProps.data)"
</v-btn> >
</template> <v-icon icon="mdi-delete" />
</v-btn>
</Column> </template>
</DataTable> </Column>
</DataTable>
</div> </div>
</div> </div>
<Dialog v-model:visible="itemDialog" :style="{width: '450px'}" :header="$t('New folder')" :modal="true" class="p-fluid"> <Dialog
v-model:visible="itemDialog"
:header="$t('New folder')"
:modal="true"
:style="{ width: '450px' }"
class="p-fluid"
>
<BaseInputText <BaseInputText
id="title" id="title"
v-model.trim="item.title" v-model.trim="item.title"
@ -130,48 +146,90 @@
/> />
<template #footer> <template #footer>
<Button label="Cancel" icon="pi pi-times" class="p-button-text" @click="hideDialog"/> <Button
<Button label="Save" icon="pi pi-check" class="p-button-text" @click="saveItem" /> class="p-button-text"
icon="pi pi-times"
label="Cancel"
@click="hideDialog"
/>
<Button
class="p-button-text"
icon="pi pi-check"
label="Save"
@click="saveItem"
/>
</template> </template>
</Dialog> </Dialog>
<Dialog v-model:visible="deleteItemDialog" :style="{width: '450px'}" header="Confirm" :modal="true"> <Dialog
v-model:visible="deleteItemDialog"
:modal="true"
:style="{ width: '450px' }"
header="Confirm"
>
<div class="confirmation-content"> <div class="confirmation-content">
<i class="pi pi-exclamation-triangle p-mr-3" style="font-size: 2rem" /> <i
<span v-if="item">Are you sure you want to delete <b>{{item.title}}</b>?</span> class="pi pi-exclamation-triangle p-mr-3"
style="font-size: 2rem"
/>
<span v-if="item"
>Are you sure you want to delete <b>{{ item.title }}</b
>?</span
>
</div> </div>
<template #footer> <template #footer>
<Button label="No" icon="pi pi-times" class="p-button-text" @click="deleteItemDialog = false"/> <Button
<Button label="Yes" icon="pi pi-check" class="p-button-text" @click="deleteItemButton(item)" /> class="p-button-text"
icon="pi pi-times"
label="No"
@click="deleteItemDialog = false"
/>
<Button
class="p-button-text"
icon="pi pi-check"
label="Yes"
@click="deleteItemButton(item)"
/>
</template> </template>
</Dialog> </Dialog>
<Dialog v-model:visible="deleteMultipleDialog" :style="{width: '450px'}" header="Confirm" :modal="true"> <Dialog
v-model:visible="deleteMultipleDialog"
:modal="true"
:style="{ width: '450px' }"
header="Confirm"
>
<div class="confirmation-content"> <div class="confirmation-content">
<i class="pi pi-exclamation-triangle p-mr-3" style="font-size: 2rem" /> <i
class="pi pi-exclamation-triangle p-mr-3"
style="font-size: 2rem"
/>
<span v-if="item">Are you sure you want to delete the selected items?</span> <span v-if="item">Are you sure you want to delete the selected items?</span>
</div> </div>
<template #footer> <template #footer>
<Button label="No" icon="pi pi-times" class="p-button-text" @click="deleteMultipleDialog = false"/> <Button
<Button label="Yes" icon="pi pi-check" class="p-button-text" @click="deleteMultipleItems" /> class="p-button-text"
icon="pi pi-times"
label="No"
@click="deleteMultipleDialog = false"
/>
<Button
class="p-button-text"
icon="pi pi-check"
label="Yes"
@click="deleteMultipleItems"
/>
</template> </template>
</Dialog> </Dialog>
</template> </template>
<script> <script>
import { mapActions, mapGetters } from 'vuex'; import { mapActions, mapGetters, useStore } from "vuex"
import { mapFields } from 'vuex-map-fields'; import { mapFields } from "vuex-map-fields"
import ListMixin from '../../mixins/ListMixin'; import ListMixin from "../../mixins/ListMixin"
import ActionCell from '../../components/ActionCell.vue'; import { ref } from "vue"
import ResourceFileLink from '../../components/documents/ResourceFileLink.vue'; import axios from "axios"
import { RESOURCE_LINK_PUBLISHED } from "../../components/resource_links/visibility"
import DataFilter from '../../components/DataFilter';
import DocumentsFilterForm from '../../components/documents/Filter';
import { ref, reactive, onMounted, computed } from 'vue';
import { useStore } from 'vuex';
import axios from "axios";
import {ENTRYPOINT} from "../../config/entrypoint";
import {RESOURCE_LINK_PUBLISHED} from "../../components/resource_links/visibility";
import ButtonToolbar from "../../components/basecomponents/ButtonToolbar.vue" import ButtonToolbar from "../../components/basecomponents/ButtonToolbar.vue"
import BaseButton from "../../components/basecomponents/BaseButton.vue" import BaseButton from "../../components/basecomponents/BaseButton.vue"
import BaseUserAvatar from "../../components/basecomponents/BaseUserAvatar.vue" import BaseUserAvatar from "../../components/basecomponents/BaseUserAvatar.vue"
@ -181,8 +239,8 @@ import { useI18n } from "vue-i18n"
import { useRouter } from "vue-router" import { useRouter } from "vue-router"
export default { export default {
name: 'UserRelUserList', name: "UserRelUserList",
servicePrefix: 'userreluser', servicePrefix: "userreluser",
components: { components: {
BaseInputText, BaseInputText,
BaseTag, BaseTag,
@ -192,68 +250,71 @@ export default {
}, },
mixins: [ListMixin], mixins: [ListMixin],
setup() { setup() {
const store = useStore(); const store = useStore()
const router = useRouter() const router = useRouter()
const { t } = useI18n() const { t } = useI18n()
const user = store.getters["security/getUser"]; const user = store.getters["security/getUser"]
const isLoadingSelect = ref(false); const isLoadingSelect = ref(false)
const deleteItemDialog = ref(false); const deleteItemDialog = ref(false)
const item = ref({}); const item = ref({})
const friendRequests = ref([]); const friendRequests = ref([])
const waitingRequests = ref([]); const waitingRequests = ref([])
const friendRequestFilter = { const friendRequestFilter = {
friend: user.id, friend: user.id,
relationType: 10 // friend request relationType: 10, // friend request
}; }
const waitingFilter = { const waitingFilter = {
user: user.id, user: user.id,
relationType: 10 relationType: 10,
}; }
const friendFilter = { const friendFilter = {
user: user.id, user: user.id,
relationType: 3, // friend status relationType: 3, // friend status
}; }
function addFriend(friend) { function addFriend(friend) {
// Change from request to friend // Change from request to friend
axios.put(friend['@id'], { axios
relationType: 3, .put(friend["@id"], {
}).then(response => { relationType: 3,
console.log(response); })
reloadHandler(); .then((response) => {
}).catch(function (error) { console.log(response)
console.log(error); reloadHandler()
}); })
.catch(function (error) {
console.log(error)
})
} }
function reloadHandler() { function reloadHandler() {
store.dispatch('userreluser/resetList'); store.dispatch("userreluser/resetList")
store.dispatch('userreluser/fetchAll', friendFilter); store.dispatch("userreluser/fetchAll", friendFilter)
store.dispatch('userreluser/findAll', friendRequestFilter).then(response => { store.dispatch("userreluser/findAll", friendRequestFilter).then((response) => {
friendRequests.value = response; friendRequests.value = response
}); })
store.dispatch('userreluser/findAll', waitingFilter).then(response => { store.dispatch("userreluser/findAll", waitingFilter).then((response) => {
waitingRequests.value = response; waitingRequests.value = response
}); })
} }
function deleteItemButton(item) { function deleteItemButton(item) {
store.dispatch('userreluser/del', item); store.dispatch("userreluser/del", item)
deleteItemDialog.value = false; deleteItemDialog.value = false
reloadHandler(); reloadHandler()
} }
reloadHandler(); reloadHandler()
const columns = ref([ const columns = ref([
{ label: t('User'), field: 'friend.username', name: 'friend', sortable: true}, { label: t("User"), field: "friend.username", name: "friend", sortable: true },
{ label: t('Sent'), field: 'createdAt', name: 'createdAt', sortable: true}, { label: t("Sent"), field: "createdAt", name: "createdAt", sortable: true },
{ label: t('Actions'), name: 'action', sortable: false} { label: t("Actions"), name: "action", sortable: false },
]) ])
const pageOptions = ref([10, 20, 50, t('All')]) const pageOptions = ref([10, 20, 50, t("All")])
const selected = ref([]) const selected = ref([])
const selectedItems = ref([]) const selectedItems = ref([])
const itemDialog = ref(false) const itemDialog = ref(false)
@ -261,7 +322,7 @@ export default {
const submitted = ref(false) const submitted = ref(false)
const goToAdd = () => { const goToAdd = () => {
router.push({ name: 'UserRelUserAdd' }) router.push({ name: "UserRelUserAdd" })
} }
return { return {
@ -281,105 +342,107 @@ export default {
friendRequests, friendRequests,
waitingRequests, waitingRequests,
friendFilter, friendFilter,
deleteItemDialog deleteItemDialog,
} }
}, },
computed: { computed: {
// From crud.js list function // From crud.js list function
...mapGetters('resourcenode', { ...mapGetters("resourcenode", {
resourceNode: 'getResourceNode' resourceNode: "getResourceNode",
}), }),
...mapGetters({ ...mapGetters({
'isAuthenticated': 'security/isAuthenticated', isAuthenticated: "security/isAuthenticated",
'isAdmin': 'security/isAdmin', isAdmin: "security/isAdmin",
'currentUser': 'security/getUser', currentUser: "security/getUser",
}), }),
...mapGetters('userreluser', { ...mapGetters("userreluser", {
items: 'list', items: "list",
}), }),
//...getters //...getters
// From ListMixin // From ListMixin
...mapFields('userreluser', { ...mapFields("userreluser", {
deletedItem: 'deleted', deletedItem: "deleted",
error: 'error', error: "error",
isLoading: 'isLoading', isLoading: "isLoading",
resetList: 'resetList', resetList: "resetList",
totalItems: 'totalItems', totalItems: "totalItems",
view: 'view' view: "view",
}), }),
}, },
methods: { methods: {
// prime // prime
onPage(event) { onPage(event) {
this.options.itemsPerPage = event.rows; this.options.itemsPerPage = event.rows
this.options.page = event.page + 1; this.options.page = event.page + 1
this.options.sortBy = event.sortField; this.options.sortBy = event.sortField
this.options.sortDesc = event.sortOrder === -1; this.options.sortDesc = event.sortOrder === -1
this.filters = { this.filters = {
user: this.currentUser.id, user: this.currentUser.id,
relationType: 3 relationType: 3,
}; }
this.onUpdateOptions(this.options); this.onUpdateOptions(this.options)
}, },
sortingChanged(event) { sortingChanged(event) {
console.log('sortingChanged'); console.log("sortingChanged")
console.log(event); console.log(event)
this.options.sortBy = event.sortField; this.options.sortBy = event.sortField
this.options.sortDesc = event.sortOrder === -1; this.options.sortDesc = event.sortOrder === -1
this.onUpdateOptions(this.options); this.onUpdateOptions(this.options)
// ctx.sortBy ==> Field key for sorting by (or null for no sorting) // ctx.sortBy ==> Field key for sorting by (or null for no sorting)
// ctx.sortDesc ==> true if sorting descending, false otherwise // ctx.sortDesc ==> true if sorting descending, false otherwise
}, },
hideDialog() { hideDialog() {
this.itemDialog = false; this.itemDialog = false
this.submitted = false; this.submitted = false
}, },
saveItem() { saveItem() {
this.submitted = true; this.submitted = true
if (this.item.title.trim()) { if (this.item.title.trim()) {
if (this.item.id) { if (this.item.id) {
} else { } else {
//this.products.push(this.product); //this.products.push(this.product);
this.item.filetype = 'folder'; this.item.filetype = "folder"
this.item.parentResourceNodeId = this.$route.params.node; this.item.parentResourceNodeId = this.$route.params.node
this.item.resourceLinkList = JSON.stringify([{ this.item.resourceLinkList = JSON.stringify([
gid: this.$route.query.gid, {
sid: this.$route.query.sid, gid: this.$route.query.gid,
cid: this.$route.query.cid, sid: this.$route.query.sid,
visibility: RESOURCE_LINK_PUBLISHED, // visible by default cid: this.$route.query.cid,
}]); visibility: RESOURCE_LINK_PUBLISHED, // visible by default
},
this.create(this.item); ])
this.showMessage('Saved');
this.create(this.item)
this.showMessage("Saved")
} }
this.itemDialog = false; this.itemDialog = false
this.item = {}; this.item = {}
} }
}, },
editItem(item) { editItem(item) {
this.item = {...item}; this.item = { ...item }
this.itemDialog = true; this.itemDialog = true
}, },
confirmDeleteItem(item) { confirmDeleteItem(item) {
this.item = item; this.item = item
this.deleteItemDialog = true; this.deleteItemDialog = true
}, },
confirmDeleteMultiple() { confirmDeleteMultiple() {
this.deleteMultipleDialog = true; this.deleteMultipleDialog = true
}, },
deleteMultipleItems() { deleteMultipleItems() {
this.deleteMultipleAction(this.selectedItems); this.deleteMultipleAction(this.selectedItems)
this.onRequest({ this.onRequest({
pagination: this.pagination, pagination: this.pagination,
}); })
this.deleteMultipleDialog = false; this.deleteMultipleDialog = false
this.selectedItems = null; this.selectedItems = null
//this.onUpdateOptions(this.options); //this.onUpdateOptions(this.options);
}, },
onRowSelected(items) { onRowSelected(items) {
@ -392,23 +455,23 @@ export default {
this.$refs.selectableTable.clearSelected() this.$refs.selectableTable.clearSelected()
}, },
async deleteSelected() { async deleteSelected() {
this.deleteMultipleAction(this.selected); this.deleteMultipleAction(this.selected)
this.onRequest({ this.onRequest({
pagination: this.pagination, pagination: this.pagination,
}); })
}, },
//...actions, //...actions,
// From ListMixin // From ListMixin
...mapActions('userreluser', { ...mapActions("userreluser", {
getPage: 'fetchAll', getPage: "fetchAll",
create: 'create', create: "create",
update: 'update', update: "update",
deleteItem: 'del', deleteItem: "del",
deleteMultipleAction: 'delMultiple' deleteMultipleAction: "delMultiple",
}), }),
...mapActions('resourcenode', { ...mapActions("resourcenode", {
findResourceNode: 'findResourceNode', findResourceNode: "findResourceNode",
}), }),
} },
}; }
</script> </script>

Loading…
Cancel
Save