Minor: Format code

pull/4833/head
Angel Fernando Quiroz Campos 2 years ago
parent 55bfef0923
commit ee57da4ac8
  1. 89
      assets/vue/components/message/Form.vue
  2. 143
      assets/vue/views/message/MessageCreate.vue

@ -3,9 +3,9 @@
<div class="col-span-2"> <div class="col-span-2">
<BaseInputText <BaseInputText
id="item_title" id="item_title"
v-model="v$.item.title.$model"
v-model:error-text="v$.item.title.required.$message" v-model:error-text="v$.item.title.required.$message"
v-model:is-invalid="v$.item.title.$invalid" v-model:is-invalid="v$.item.title.$invalid"
v-model="v$.item.title.$model"
:label="t('Title')" :label="t('Title')"
/> />
@ -14,11 +14,22 @@
<div> <div>
<div v-if="attachments && attachments.length > 0"> <div v-if="attachments && attachments.length > 0">
<div v-t="'Attachments'" class="text-h6" /> <div
v-t="'Attachments'"
class="text-h6"
/>
<ul> <ul>
<li v-for="(attachment, index) in attachments" :key="index" class="my-2"> <li
<audio v-if="attachment.type.indexOf('audio') === 0" class="max-w-full" controls> v-for="(attachment, index) in attachments"
:key="index"
class="my-2"
>
<audio
v-if="attachment.type.indexOf('audio') === 0"
class="max-w-full"
controls
>
<source :src="URL.createObjectURL(attachment)" /> <source :src="URL.createObjectURL(attachment)" />
</audio> </audio>
</li> </li>
@ -33,42 +44,40 @@
</template> </template>
<script> <script>
import has from "lodash/has"; import has from "lodash/has"
import useVuelidate from "@vuelidate/core"; import useVuelidate from "@vuelidate/core"
import { required } from "@vuelidate/validators"; import { required } from "@vuelidate/validators"
import AudioRecorder from "../AudioRecorder"; import AudioRecorder from "../AudioRecorder"
import BaseInputText from "../basecomponents/BaseInputText.vue"; import BaseInputText from "../basecomponents/BaseInputText.vue"
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n"
export default { export default {
name: 'MessageForm', name: "MessageForm",
components: { AudioRecorder, BaseInputText }, components: { AudioRecorder, BaseInputText },
emits: ['update:attachments'], emits: ["update:attachments"],
setup() { setup() {
const { t } = useI18n(); const { t } = useI18n()
return { v$: useVuelidate(), URL, t }; return { v$: useVuelidate(), URL, t }
}, },
props: { props: {
values: { values: {
type: Object, type: Object,
required: true required: true,
}, },
errors: { errors: {
type: Object, type: Object,
default: () => { default: () => {},
}
}, },
initialValues: { initialValues: {
type: Object, type: Object,
default: () => { default: () => {},
}
}, },
attachments: { attachments: {
type: Array, type: Array,
required: false, required: false,
default: () => [], default: () => [],
} },
}, },
data() { data() {
return { return {
@ -76,43 +85,43 @@ export default {
parentResourceNodeId: null, parentResourceNodeId: null,
receiversTo: [], receiversTo: [],
receiversCc: [], receiversCc: [],
}; }
}, },
computed: { computed: {
item() { item() {
return this.initialValues || this.values; return this.initialValues || this.values
}, },
receiversErrors() { receiversErrors() {
const errors = []; const errors = []
if (!this.v$.item.receiversTo.$dirty) return errors; if (!this.v$.item.receiversTo.$dirty) return errors
has(this.violations, 'receiversTo') && errors.push(this.violations.receiversTo); has(this.violations, "receiversTo") && errors.push(this.violations.receiversTo)
if (this.v$.item.receiversTo.required) { if (this.v$.item.receiversTo.required) {
return this.$t('Field is required') return this.$t("Field is required")
} }
return errors; return errors
}, },
titleErrors() { titleErrors() {
const errors = []; const errors = []
if (!this.v$.item.title.$dirty) return errors; if (!this.v$.item.title.$dirty) return errors
has(this.violations, 'title') && errors.push(this.violations.title); has(this.violations, "title") && errors.push(this.violations.title)
if (this.v$.item.title.required) { if (this.v$.item.title.required) {
return this.$t('Field is required') return this.$t("Field is required")
} }
return errors; return errors
}, },
violations() { violations() {
return this.errors || {}; return this.errors || {}
} },
}, },
methods: { methods: {
attachAudios(audio) { attachAudios(audio) {
this.$emit('update:attachments', [...this.attachments, audio]); this.$emit("update:attachments", [...this.attachments, audio])
} },
}, },
validations: { validations: {
item: { item: {
@ -128,7 +137,7 @@ export default {
content: { content: {
required, required,
}, },
} },
} },
}; }
</script> </script>

@ -1,11 +1,26 @@
<template> <template>
<!-- :handle-submit="onSendMessageForm"--> <!-- :handle-submit="onSendMessageForm"-->
<MessageForm v-model:attachments="attachments" :values="item"> <MessageForm
v-model:attachments="attachments"
:values="item"
>
<!-- @input="v$.item.receiversTo.$touch()"--> <!-- @input="v$.item.receiversTo.$touch()"-->
<BaseAutocomplete id="to" v-model="usersTo" :label="t('To')" :search="asyncFind" is-multiple /> <BaseAutocomplete
id="to"
<BaseAutocomplete id="cc" v-model="usersCc" :label="t('Cc')" :search="asyncFind" is-multiple /> v-model="usersTo"
:label="t('To')"
:search="asyncFind"
is-multiple
/>
<BaseAutocomplete
id="cc"
v-model="usersCc"
:label="t('Cc')"
:search="asyncFind"
is-multiple
/>
<div class="field"> <div class="field">
<TinyEditor <TinyEditor
@ -31,28 +46,33 @@
/> />
</div> </div>
<BaseButton :label="t('Send')" icon="plus" type="primary" @click="onSubmit" /> <BaseButton
:label="t('Send')"
icon="plus"
type="primary"
@click="onSubmit"
/>
</MessageForm> </MessageForm>
<Loading :visible="isLoading" /> <Loading :visible="isLoading" />
</template> </template>
<script setup> <script setup>
import { useStore } from "vuex"; import { useStore } from "vuex"
import MessageForm from "../../components/message/Form.vue"; import MessageForm from "../../components/message/Form.vue"
import Loading from "../../components/Loading.vue"; import Loading from "../../components/Loading.vue"
import { computed, ref } from "vue"; import { computed, ref } from "vue"
import axios from "axios"; import axios from "axios"
import { ENTRYPOINT } from "../../config/entrypoint"; import { ENTRYPOINT } from "../../config/entrypoint"
import BaseAutocomplete from "../../components/basecomponents/BaseAutocomplete.vue"; import BaseAutocomplete from "../../components/basecomponents/BaseAutocomplete.vue"
import BaseButton from "../../components/basecomponents/BaseButton.vue"; import BaseButton from "../../components/basecomponents/BaseButton.vue"
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n"
import { useRoute, useRouter } from "vue-router"; import { useRoute, useRouter } from "vue-router"
import { MESSAGE_TYPE_INBOX } from "../../components/message/constants"; import { MESSAGE_TYPE_INBOX } from "../../components/message/constants"
const store = useStore(); const store = useStore()
const router = useRouter(); const router = useRouter()
const route = useRoute(); const route = useRoute()
const { t } = useI18n(); const { t } = useI18n()
const asyncFind = (query) => { const asyncFind = (query) => {
return axios return axios
@ -62,21 +82,21 @@ const asyncFind = (query) => {
}, },
}) })
.then((response) => { .then((response) => {
let data = response.data; let data = response.data
return ( return (
data["hydra:member"]?.map((member) => ({ data["hydra:member"]?.map((member) => ({
name: member.fullName, name: member.fullName,
value: member["@id"], value: member["@id"],
})) ?? [] })) ?? []
); )
}) })
.catch(function (error) { .catch(function (error) {
console.log(error); console.log(error)
}); })
}; }
const currentUser = computed(() => store.getters["security/getUser"]); const currentUser = computed(() => store.getters["security/getUser"])
const item = ref({ const item = ref({
sender: currentUser.value["@id"], sender: currentUser.value["@id"],
@ -84,33 +104,33 @@ const item = ref({
msgType: MESSAGE_TYPE_INBOX, msgType: MESSAGE_TYPE_INBOX,
title: "", title: "",
content: "", content: "",
}); })
const attachments = ref([]); const attachments = ref([])
const usersTo = ref([]); const usersTo = ref([])
const usersCc = ref([]); const usersCc = ref([])
const receiversTo = computed(() => const receiversTo = computed(() =>
usersTo.value.map((userTo) => ({ usersTo.value.map((userTo) => ({
receiver: userTo.value, receiver: userTo.value,
receiverType: 1, receiverType: 1,
})) })),
); )
const receiversCc = computed(() => const receiversCc = computed(() =>
usersCc.value.map((userCc) => ({ usersCc.value.map((userCc) => ({
receiver: userCc.value, receiver: userCc.value,
receiverType: 2, receiverType: 2,
})) })),
); )
const isLoading = computed(() => store.getters["message/isLoading"]); const isLoading = computed(() => store.getters["message/isLoading"])
const messageCreated = computed(() => store.state.message.created); const messageCreated = computed(() => store.state.message.created)
const onSubmit = () => { const onSubmit = () => {
item.value.receivers = [...receiversTo.value, ...receiversCc.value]; item.value.receivers = [...receiversTo.value, ...receiversCc.value]
store.dispatch("message/create", item.value).then(() => { store.dispatch("message/create", item.value).then(() => {
if (attachments.value.length > 0) { if (attachments.value.length > 0) {
@ -118,35 +138,34 @@ const onSubmit = () => {
store.dispatch("messageattachment/createWithFormData", { store.dispatch("messageattachment/createWithFormData", {
messageId: messageCreated.value.id, messageId: messageCreated.value.id,
file: attachment, file: attachment,
}) }),
); )
} }
router.push({ router.push({
name: "MessageList", name: "MessageList",
query: route.query, query: route.query,
}); })
}); })
}; }
const browser = (callback, value, meta) => { const browser = (callback, value, meta) => {
let url = "/resources/personal_files/"
let url = '/resources/personal_files/';
if (meta.filetype === "image") { if (meta.filetype === "image") {
url = url + "&type=images"; url = url + "&type=images"
} else { } else {
url = url + "&type=files"; url = url + "&type=files"
} }
window.addEventListener("message", function (event) { window.addEventListener("message", function (event) {
var data = event.data; var data = event.data
if (data.url) { if (data.url) {
url = data.url; url = data.url
console.log(meta); // {filetype: "image", fieldname: "src"} console.log(meta) // {filetype: "image", fieldname: "src"}
callback(url); callback(url)
} }
}); })
tinymce.activeEditor.windowManager.openUrl( tinymce.activeEditor.windowManager.openUrl(
{ {
@ -155,25 +174,25 @@ const browser = (callback, value, meta) => {
}, },
{ {
oninsert: function (file, fm) { oninsert: function (file, fm) {
var url, reg, info; var url, reg, info
url = fm.convAbsUrl(file.url); url = fm.convAbsUrl(file.url)
info = file.name + " (" + fm.formatSize(file.size) + ")"; info = file.name + " (" + fm.formatSize(file.size) + ")"
if (meta.filetype === "file") { if (meta.filetype === "file") {
callback(url, { text: info, title: info }); callback(url, { text: info, title: info })
} }
if (meta.filetype === "image") { if (meta.filetype === "image") {
callback(url, { alt: info }); callback(url, { alt: info })
} }
if (meta.filetype === "media") { if (meta.filetype === "media") {
callback(url); callback(url)
} }
}, },
} },
); )
}; }
</script> </script>
Loading…
Cancel
Save