Minor: format code according to prettier

* Add prettier github action to check vue files
* Add prettier tailwind plugin
* Remove semicolons with prettier rule
pull/4789/head
Daniel Gayoso González 2 years ago
parent fc90edfae8
commit c3bf43f996
  1. 21
      .github/workflows/format_vue_code.yml
  2. 3
      .prettierrc.json
  3. 38
      assets/vue/components/glossary/GlossaryExportForm.vue
  4. 80
      assets/vue/components/glossary/GlossaryForm.vue
  5. 64
      assets/vue/components/glossary/GlossaryImportForm.vue
  6. 3
      assets/vue/components/glossary/GlossaryLayout.vue
  7. 6
      assets/vue/views/glossary/GlossaryExport.vue
  8. 7
      assets/vue/views/glossary/GlossaryImport.vue
  9. 231
      assets/vue/views/glossary/GlossaryList.vue
  10. 7
      assets/vue/views/glossary/GlossaryTermCreate.vue
  11. 9
      assets/vue/views/glossary/GlossaryTermUpdate.vue
  12. 1
      package.json
  13. 56
      yarn.lock

@ -0,0 +1,21 @@
name: Vue format code 🔎
on: [push, pull_request]
jobs:
prettier:
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v3
with:
# Make sure the actual branch is checked out when running on pull requests
ref: ${{ github.head_ref }}
- name: Prettify code
uses: creyD/prettier_action@v4.3
with:
# This part is also where you can pass other options, for example:
prettier_options: assets/vue/**/*.{vue,js} -c
only_changed: True

@ -1,3 +1,4 @@
{ {
"printWidth": 120 "printWidth": 120,
"semi": false
} }

@ -12,20 +12,19 @@
</form> </form>
</template> </template>
<script setup> <script setup>
import axios from "axios" import axios from "axios"
import {ENTRYPOINT} from "../../config/entrypoint" import { ENTRYPOINT } from "../../config/entrypoint"
import {RESOURCE_LINK_PUBLISHED} from "../resource_links/visibility" import { RESOURCE_LINK_PUBLISHED } from "../resource_links/visibility"
import {useRoute, useRouter} from 'vue-router' import { useRoute, useRouter } from "vue-router"
import {useI18n} from "vue-i18n" import { useI18n } from "vue-i18n"
import {ref, onMounted} from "vue" import { ref } from "vue"
const route = useRoute() const route = useRoute()
const router = useRouter() const router = useRouter()
const {t} = useI18n() const { t } = useI18n()
const selectedFormat = ref('csv') const selectedFormat = ref("csv")
const parentResourceNodeId = ref(Number(route.params.node)) const parentResourceNodeId = ref(Number(route.params.node))
const resourceLinkList = ref( const resourceLinkList = ref(
JSON.stringify([ JSON.stringify([
@ -35,31 +34,32 @@ const resourceLinkList = ref(
visibility: RESOURCE_LINK_PUBLISHED, // visible by default visibility: RESOURCE_LINK_PUBLISHED, // visible by default
}, },
]) ])
); )
const submitForm = () => { const submitForm = () => {
const format = selectedFormat.value const format = selectedFormat.value
const formData = new FormData() const formData = new FormData()
formData.append('format', format) formData.append("format", format)
formData.append("sid", route.query.sid) formData.append("sid", route.query.sid)
formData.append("cid", route.query.cid) formData.append("cid", route.query.cid)
const endpoint = `${ENTRYPOINT}glossaries/export` const endpoint = `${ENTRYPOINT}glossaries/export`
axios.post(endpoint, formData, {responseType: 'blob'}) axios
.then(response => { .post(endpoint, formData, { responseType: "blob" })
.then((response) => {
const fileUrl = window.URL.createObjectURL(new Blob([response.data])) const fileUrl = window.URL.createObjectURL(new Blob([response.data]))
const link = document.createElement('a') const link = document.createElement("a")
link.href = fileUrl; link.href = fileUrl
link.setAttribute('download', `glossary.${format}`) link.setAttribute("download", `glossary.${format}`)
document.body.appendChild(link) document.body.appendChild(link)
link.click(); link.click()
document.body.removeChild(link) document.body.removeChild(link)
}) })
.catch(error => { .catch((error) => {
console.error('Error exporting glossary:', error) console.error("Error exporting glossary:", error)
}) })
}; }
</script> </script>
<style scoped> <style scoped>

@ -3,8 +3,13 @@
<form @submit.prevent="submitGlossaryForm" name="glossary" id="glossary"> <form @submit.prevent="submitGlossaryForm" name="glossary" id="glossary">
<div class="field"> <div class="field">
<div class="p-float-label"> <div class="p-float-label">
<input v-model="formData.name" id="glossary_title" name="name" type="text" <input
class="p-inputtext p-component p-filled"/> v-model="formData.name"
id="glossary_title"
name="name"
type="text"
class="p-inputtext p-component p-filled"
/>
<label for="glossary_title"> <label for="glossary_title">
<span class="form_required">*</span> <span class="form_required">*</span>
@ -24,10 +29,7 @@
</div> </div>
<div class="field 2"> <div class="field 2">
<div class="8"> <div class="8">
<label for="glossary_SubmitGlossary" class="h-4"> </label>
<label for="glossary_SubmitGlossary" class="h-4 ">
</label>
<button class="btn btn--primary" name="SubmitGlossary" type="submit" id="glossary_SubmitGlossary"> <button class="btn btn--primary" name="SubmitGlossary" type="submit" id="glossary_SubmitGlossary">
<em class="mdi mdi-plus"></em> Save term <em class="mdi mdi-plus"></em> Save term
@ -40,33 +42,32 @@
<small>Required field</small> <small>Required field</small>
</div> </div>
</div> </div>
<input name="_qf__glossary" type="hidden" value="" id="glossary__qf__glossary"/> <input name="_qf__glossary" type="hidden" value="" id="glossary__qf__glossary" />
<input name="sec_token" type="hidden" value="1e7d47c276bfdfe308a79e1b71d58089" id="glossary_sec_token"/> <input name="sec_token" type="hidden" value="1e7d47c276bfdfe308a79e1b71d58089" id="glossary_sec_token" />
</form> </form>
</div> </div>
</template> </template>
<script setup> <script setup>
import axios from "axios"; import axios from "axios"
import {ENTRYPOINT} from "../../config/entrypoint"; import { ENTRYPOINT } from "../../config/entrypoint"
import {useRoute, useRouter} from 'vue-router'; import { useRoute, useRouter } from "vue-router"
import {useI18n} from "vue-i18n"; import { useI18n } from "vue-i18n"
import {ref, onMounted} from "vue"; import { ref, onMounted } from "vue"
import {RESOURCE_LINK_PUBLISHED} from "../resource_links/visibility"; import { RESOURCE_LINK_PUBLISHED } from "../resource_links/visibility"
const route = useRoute() const route = useRoute()
const router = useRouter() const router = useRouter()
const {t} = useI18n() const { t } = useI18n()
const props = defineProps({ const props = defineProps({
termId: { termId: {
type: Number, type: Number,
default: null default: null,
} },
}) })
const parentResourceNodeId = ref(Number(route.params.node)); const parentResourceNodeId = ref(Number(route.params.node))
const resourceLinkList = ref( const resourceLinkList = ref(
JSON.stringify([ JSON.stringify([
@ -79,30 +80,30 @@ const resourceLinkList = ref(
) )
const formData = ref({ const formData = ref({
name: '', name: "",
description: '', description: "",
}) })
onMounted(() => { onMounted(() => {
fetchTerm(); fetchTerm()
}) })
const fetchTerm = () => { const fetchTerm = () => {
if (props.termId) { if (props.termId) {
axios.get(ENTRYPOINT + 'glossaries/' + props.termId) axios
.then(response => { .get(ENTRYPOINT + "glossaries/" + props.termId)
.then((response) => {
const glossary = response.data const glossary = response.data
formData.value.name = glossary.name formData.value.name = glossary.name
formData.value.description = glossary.description formData.value.description = glossary.description
}) })
.catch(error => { .catch((error) => {
console.error('Error fetching link:', error) console.error("Error fetching link:", error)
}) })
} }
} }
const submitGlossaryForm = () => { const submitGlossaryForm = () => {
const postData = { const postData = {
name: formData.value.name, name: formData.value.name,
description: formData.value.description, description: formData.value.description,
@ -114,32 +115,33 @@ const submitGlossaryForm = () => {
if (props.termId) { if (props.termId) {
const endpoint = `${ENTRYPOINT}glossaries/${props.termId}` const endpoint = `${ENTRYPOINT}glossaries/${props.termId}`
axios.put(endpoint, postData) axios
.then(response => { .put(endpoint, postData)
console.log('Glossary updated:', response.data) .then((response) => {
console.log("Glossary updated:", response.data)
router.push({ router.push({
name: "GlossaryList", name: "GlossaryList",
query: route.query, query: route.query,
}) })
}) })
.catch(error => { .catch((error) => {
console.error('Error updating Glossary:', error); console.error("Error updating Glossary:", error)
}) })
} else { } else {
const endpoint = `${ENTRYPOINT}glossaries` const endpoint = `${ENTRYPOINT}glossaries`
axios.post(endpoint, postData) axios
.then(response => { .post(endpoint, postData)
console.log('Glossary created:', response.data) .then((response) => {
console.log("Glossary created:", response.data)
router.push({ router.push({
name: "GlossaryList", name: "GlossaryList",
query: route.query, query: route.query,
}); })
}) })
.catch(error => { .catch((error) => {
console.error('Error creating Glossary:', error) console.error("Error creating Glossary:", error)
}) })
} }
} }

@ -2,42 +2,48 @@
<form @submit.prevent="submitForm"> <form @submit.prevent="submitForm">
<div class="field 2"> <div class="field 2">
<div class="8"> <div class="8">
<label for="glossary_file" class="h-4"> <label for="glossary_file" class="h-4"> File </label>
File <input class="mt-1" :ref="fileInputRef" name="file" type="file" id="glossary_file" />
</label>
<input class="mt-1" :ref="fileInputRef" name="file" type="file" id="glossary_file"/>
</div> </div>
</div> </div>
<div class="field"> <div class="field">
<label>File type</label> <label>File type</label>
<div class="field-radiobutton"> <div class="field-radiobutton">
<input name="file_type" value="csv" type="radio" id="qf_85f94d" v-model="fileType" checked="checked"/> <input name="file_type" value="csv" type="radio" id="qf_85f94d" v-model="fileType" checked="checked" />
<label for="qf_85f94d" class="">CSV</label> <label for="qf_85f94d" class="">CSV</label>
</div> </div>
<div class="field-radiobutton"> <div class="field-radiobutton">
<input name="file_type" value="xls" type="radio" id="qf_bff468" v-model="fileType"/> <input name="file_type" value="xls" type="radio" id="qf_bff468" v-model="fileType" />
<label for="qf_bff468" class="">XLS</label> <label for="qf_bff468" class="">XLS</label>
</div> </div>
</div> </div>
<div class="field 2"> <div class="field 2">
<div class="8"> <div class="8">
<div id="replace" class="field-checkbox"> <div id="replace" class="field-checkbox">
<input class="appearance-none checked:bg-support-4 outline-none" name="replace" type="checkbox" value="1" <input
id="qf_5b8df0" v-model="replace"/> class="appearance-none outline-none checked:bg-support-4"
<label for="qf_5b8df0" class=""> name="replace"
Delete all terms before import. type="checkbox"
</label> value="1"
id="qf_5b8df0"
v-model="replace"
/>
<label for="qf_5b8df0" class=""> Delete all terms before import. </label>
</div> </div>
</div> </div>
</div> </div>
<div class="field 2"> <div class="field 2">
<div class="8"> <div class="8">
<div id="update" class="field-checkbox"> <div id="update" class="field-checkbox">
<input class="appearance-none checked:bg-support-4 outline-none" name="update" type="checkbox" value="1" <input
id="qf_594e6e" v-model="update"/> class="appearance-none outline-none checked:bg-support-4"
<label for="qf_594e6e" class=""> name="update"
Update existing terms. type="checkbox"
</label> value="1"
id="qf_594e6e"
v-model="update"
/>
<label for="qf_594e6e" class=""> Update existing terms. </label>
</div> </div>
</div> </div>
</div> </div>
@ -52,16 +58,16 @@
</template> </template>
<script setup> <script setup>
import axios from 'axios'; import axios from "axios"
import {ENTRYPOINT} from "../../config/entrypoint"; import { ENTRYPOINT } from "../../config/entrypoint"
import {useRoute, useRouter} from "vue-router"; import { useRoute, useRouter } from "vue-router"
import {useI18n} from "vue-i18n"; import { useI18n } from "vue-i18n"
import {ref} from "vue"; import { ref } from "vue"
import {RESOURCE_LINK_PUBLISHED} from "../resource_links/visibility"; import { RESOURCE_LINK_PUBLISHED } from "../resource_links/visibility"
const route = useRoute() const route = useRoute()
const router = useRouter() const router = useRouter()
const {t} = useI18n() const { t } = useI18n()
const fileInputRef = ref(null) const fileInputRef = ref(null)
const fileType = ref("csv") const fileType = ref("csv")
@ -80,7 +86,7 @@ const resourceLinkList = ref(
) )
const submitForm = async () => { const submitForm = async () => {
const fileInput = document.getElementById('glossary_file') const fileInput = document.getElementById("glossary_file")
const file = fileInput.files[0] const file = fileInput.files[0]
const formData = new FormData() const formData = new FormData()
formData.append("file", file) formData.append("file", file)
@ -92,15 +98,15 @@ const submitForm = async () => {
formData.append("parentResourceNodeId", parentResourceNodeId.value) formData.append("parentResourceNodeId", parentResourceNodeId.value)
formData.append("resourceLinkList", resourceLinkList.value) formData.append("resourceLinkList", resourceLinkList.value)
console.log('formData', formData) console.log("formData", formData)
console.log(ENTRYPOINT + 'glossaries/import') console.log(ENTRYPOINT + "glossaries/import")
try { try {
// eslint-disable-next-line no-unused-vars // eslint-disable-next-line no-unused-vars
const response = await axios.post(ENTRYPOINT + 'glossaries/import', formData, { const response = await axios.post(ENTRYPOINT + "glossaries/import", formData, {
headers: { headers: {
'Content-Type': 'multipart/form-data' "Content-Type": "multipart/form-data",
} },
}) })
router.push({ router.push({

@ -2,5 +2,4 @@
<router-view></router-view> <router-view></router-view>
</template> </template>
<script setup> <script setup></script>
</script>

@ -4,13 +4,13 @@
<button class="btn btn--secondary" @click="goBack">Back</button> <button class="btn btn--secondary" @click="goBack">Back</button>
</div> </div>
<h2>Export Glossary</h2> <h2>Export Glossary</h2>
<GlossaryExportForm/> <GlossaryExportForm />
</div> </div>
</template> </template>
<script setup> <script setup>
import GlossaryExportForm from '../../components/glossary/GlossaryExportForm.vue' import GlossaryExportForm from "../../components/glossary/GlossaryExportForm.vue"
import {useRoute, useRouter} from "vue-router" import { useRoute, useRouter } from "vue-router"
const router = useRouter() const router = useRouter()
const route = useRoute() const route = useRoute()

@ -3,14 +3,17 @@
<div class="mb-4"> <div class="mb-4">
<button class="btn btn--secondary" @click="goBack">Back</button> <button class="btn btn--secondary" @click="goBack">Back</button>
</div> </div>
<h1 class="text-h3 font-small text-gray-800 mb-4">Import glossary<hr /></h1> <h1 class="text-h3 font-small text-gray-800 mb-4">
Import glossary
<hr />
</h1>
<GlossaryImportForm /> <GlossaryImportForm />
</div> </div>
</template> </template>
<script setup> <script setup>
import GlossaryImportForm from "../../components/glossary/GlossaryImportForm.vue" import GlossaryImportForm from "../../components/glossary/GlossaryImportForm.vue"
import {useRoute, useRouter} from "vue-router" import { useRoute, useRouter } from "vue-router"
const router = useRouter() const router = useRouter()
const route = useRoute() const route = useRoute()

@ -1,43 +1,27 @@
<template> <template>
<div> <div>
<input <input type="text" v-model="searchTerm" placeholder="Search term..." />
type="text"
v-model="searchTerm"
placeholder="Search term..."
/>
<ButtonToolbar v-if="isAuthenticated && isCurrentTeacher"> <ButtonToolbar v-if="isAuthenticated && isCurrentTeacher">
<BaseButton <BaseButton
label="Add new glossary term" label="Add new glossary term"
icon="new_glossary_term" icon="new_glossary_term"
class="mr-2 mb-2" class="mb-2 mr-2"
type="black" type="black"
@click="addNewTerm" @click="addNewTerm"
/> />
<BaseButton <BaseButton label="Import glossary" icon="import" class="mb-2 mr-2" type="black" @click="importGlossary" />
label="Import glossary" <BaseButton label="Export" icon="save" class="mb-2 mr-2" type="black" @click="exportGlossary" />
icon="import"
class="mr-2 mb-2"
type="black"
@click="importGlossary"
/>
<BaseButton
label="Export"
icon="save"
class="mr-2 mb-2"
type="black"
@click="exportGlossary"
/>
<BaseButton <BaseButton
:label="view === 'table' ? 'List view' : 'Table view'" :label="view === 'table' ? 'List view' : 'Table view'"
icon="view_text" icon="view_text"
class="mr-2 mb-2" class="mb-2 mr-2"
type="black" type="black"
@click="changeView(view)" @click="changeView(view)"
/> />
<BaseButton <BaseButton
label="Export to Documents" label="Export to Documents"
icon="export_to_documents" icon="export_to_documents"
class="mr-2 mb-2" class="mb-2 mr-2"
type="black" type="black"
@click="exportToDocuments" @click="exportToDocuments"
/> />
@ -45,17 +29,8 @@
<div v-if="glossaries.length === 0"> <div v-if="glossaries.length === 0">
<!-- Render the image and create button --> <!-- Render the image and create button -->
<EmptyState <EmptyState icon="mdi mdi-alphabetical" summary="Add your first term glossary to this course">
icon="mdi mdi-alphabetical" <BaseButton label="Add Glossary" class="mt-4" icon="plus" type="primary" @click="addNewTerm" />
summary="Add your first term glossary to this course"
>
<BaseButton
label="Add Glossary"
class="mt-4"
icon="plus"
type="primary"
@click="addNewTerm"
/>
</EmptyState> </EmptyState>
</div> </div>
@ -64,52 +39,28 @@
<ul> <ul>
<li v-for="glossary in glossaries" :key="glossary.id"> <li v-for="glossary in glossaries" :key="glossary.id">
<span>{{ glossary.name }} - {{ glossary.description }}</span> <span>{{ glossary.name }} - {{ glossary.description }}</span>
<BaseButton <BaseButton label="Edit" class="mr-2" icon="edit" type="black" @click="editTerm(glossary.iid)" />
label="Edit" <BaseButton label="Delete" class="mr-2" icon="delete" type="black" @click="deleteTerm(glossary.iid)" />
class="mr-2"
icon="edit"
type="black"
@click="editTerm(glossary.iid)"
/>
<BaseButton
label="Delete"
class="mr-2"
icon="delete"
type="black"
@click="deleteTerm(glossary.iid)"
/>
</li> </li>
</ul> </ul>
</div> </div>
<table v-else> <table v-else>
<thead> <thead>
<tr> <tr>
<th>Title</th> <th>Title</th>
<th>Description</th> <th>Description</th>
<th>Actions</th> <th>Actions</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr v-for="glossary in glossaries" :key="glossary.id"> <tr v-for="glossary in glossaries" :key="glossary.id">
<td>{{ glossary.name }}</td> <td>{{ glossary.name }}</td>
<td>{{ glossary.description }}</td> <td>{{ glossary.description }}</td>
<td> <td>
<BaseButton <BaseButton label="Edit" class="mr-2" icon="edit" type="black" @click="editTerm(glossary.iid)" />
label="Edit" <BaseButton label="Delete" class="mr-2" icon="delete" type="black" @click="deleteTerm(glossary.iid)" />
class="mr-2" </td>
icon="edit" </tr>
type="black"
@click="editTerm(glossary.iid)"
/>
<BaseButton
label="Delete"
class="mr-2"
icon="delete"
type="black"
@click="deleteTerm(glossary.iid)"
/>
</td>
</tr>
</tbody> </tbody>
</table> </table>
</div> </div>
@ -117,25 +68,25 @@
</template> </template>
<script setup> <script setup>
import EmptyState from "../../components/EmptyState.vue"; import EmptyState from "../../components/EmptyState.vue"
import BaseButton from "../../components/basecomponents/BaseButton.vue"; import BaseButton from "../../components/basecomponents/BaseButton.vue"
import ButtonToolbar from "../../components/basecomponents/ButtonToolbar.vue"; import ButtonToolbar from "../../components/basecomponents/ButtonToolbar.vue"
import {computed, onMounted, ref, watch} from "vue"; import { computed, onMounted, ref, watch } from "vue"
import { useStore } from "vuex"; import { useStore } from "vuex"
import { useRoute, useRouter } from "vue-router"; import { useRoute, useRouter } from "vue-router"
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n"
import axios from "axios"; import axios from "axios"
import { ENTRYPOINT } from "../../config/entrypoint"; import { ENTRYPOINT } from "../../config/entrypoint"
import {RESOURCE_LINK_PUBLISHED} from "../../components/resource_links/visibility"; import { RESOURCE_LINK_PUBLISHED } from "../../components/resource_links/visibility"
const store = useStore(); const store = useStore()
const route = useRoute(); const route = useRoute()
const router = useRouter(); const router = useRouter()
const { t } = useI18n(); const { t } = useI18n()
const searchTerm = ref(''); const searchTerm = ref("")
const parentResourceNodeId = ref(Number(route.params.node)); const parentResourceNodeId = ref(Number(route.params.node))
const resourceLinkList = ref( const resourceLinkList = ref(
JSON.stringify([ JSON.stringify([
@ -145,43 +96,42 @@ const resourceLinkList = ref(
visibility: RESOURCE_LINK_PUBLISHED, // visible by default visibility: RESOURCE_LINK_PUBLISHED, // visible by default
}, },
]) ])
); )
const isAuthenticated = computed(() => store.getters["security/isAuthenticated"]); const isAuthenticated = computed(() => store.getters["security/isAuthenticated"])
const isCurrentTeacher = computed(() => store.getters["security/isCurrentTeacher"]); const isCurrentTeacher = computed(() => store.getters["security/isCurrentTeacher"])
const glossaries = ref([]); const glossaries = ref([])
const view = ref('list'); const view = ref("list")
function addNewTerm() { function addNewTerm() {
router.push({ router.push({
name: "CreateTerm", name: "CreateTerm",
query: route.query, query: route.query,
}); })
} }
function editTerm(termId) { function editTerm(termId) {
console.log("termId ", termId)
console.log('termId ', termId);
router.push({ router.push({
name: 'UpdateTerm', name: "UpdateTerm",
params: { id: termId}, params: { id: termId },
query: route.query, query: route.query,
}); })
} }
function deleteTerm(termId) { function deleteTerm(termId) {
if (confirm('¿Delete?')) { if (confirm("¿Delete?")) {
axios axios
.delete(`${ENTRYPOINT}glossaries/${termId}`) .delete(`${ENTRYPOINT}glossaries/${termId}`)
.then(response => { .then((response) => {
console.log('Term deleted:', response.data); console.log("Term deleted:", response.data)
fetchGlossaries(); fetchGlossaries()
})
.catch((error) => {
console.error("Error deleting term:", error)
}) })
.catch(error => {
console.error('Error deleting term:', error);
});
} }
} }
@ -189,70 +139,65 @@ function importGlossary() {
router.push({ router.push({
name: "ImportGlossary", name: "ImportGlossary",
query: route.query, query: route.query,
}); })
} }
function exportGlossary() { function exportGlossary() {
router.push({ router.push({
name: "ExportGlossary", name: "ExportGlossary",
query: route.query, query: route.query,
}); })
} }
function changeView(newView) { function changeView(newView) {
// Handle changing the view (e.g., table view) // Handle changing the view (e.g., table view)
view.value = newView === 'table' ? 'list' : 'table'; view.value = newView === "table" ? "list" : "table"
} }
function exportToDocuments() { function exportToDocuments() {
const postData = { const postData = {
parentResourceNodeId: parentResourceNodeId.value, parentResourceNodeId: parentResourceNodeId.value,
resourceLinkList: resourceLinkList.value, resourceLinkList: resourceLinkList.value,
}; }
const endpoint = `${ENTRYPOINT}glossaries/export_to_documents`; const endpoint = `${ENTRYPOINT}glossaries/export_to_documents`
axios.post(endpoint, postData) axios
.then(response => { .post(endpoint, postData)
console.log(response.data); .then((response) => {
console.log(response.data)
})
.catch((error) => {
console.error(error)
}) })
.catch(error => {
console.error(error);
});
} }
function fetchGlossaries() { function fetchGlossaries() {
const params = { const params = {
'resourceNode.parent': route.query.parent || null, "resourceNode.parent": route.query.parent || null,
'cid': route.query.cid || null, cid: route.query.cid || null,
'sid': route.query.sid || null, sid: route.query.sid || null,
'q': searchTerm.value q: searchTerm.value,
}; }
axios axios
.get(ENTRYPOINT + 'glossaries', { params }) .get(ENTRYPOINT + "glossaries", { params })
.then(response => { .then((response) => {
console.log("responsedata:", response.data)
console.log('responsedata:', response.data); glossaries.value = response.data
glossaries.value = response.data;
console.log('en fetch glossaries.value', glossaries.value);
console.log("en fetch glossaries.value", glossaries.value)
})
.catch((error) => {
console.error("Error fetching links:", error)
}) })
.catch(error => {
console.error('Error fetching links:', error);
});
} }
watch(searchTerm, () => { watch(searchTerm, () => {
fetchGlossaries(); fetchGlossaries()
}); })
onMounted(() => { onMounted(() => {
fetchGlossaries(); fetchGlossaries()
}); })
</script> </script>

@ -3,14 +3,17 @@
<div class="mb-4"> <div class="mb-4">
<button class="btn btn--secondary" @click="goBack">Back</button> <button class="btn btn--secondary" @click="goBack">Back</button>
</div> </div>
<h1 class="text-h3 font-small text-gray-800 mb-4">Add new glossary term<hr /></h1> <h1 class="text-h3 font-small text-gray-800 mb-4">
Add new glossary term
<hr />
</h1>
<GlossaryForm /> <GlossaryForm />
</div> </div>
</template> </template>
<script setup> <script setup>
import GlossaryForm from "../../components/glossary/GlossaryForm.vue" import GlossaryForm from "../../components/glossary/GlossaryForm.vue"
import { useRouter, useRoute } from 'vue-router' import { useRouter, useRoute } from "vue-router"
const router = useRouter() const router = useRouter()
const route = useRoute() const route = useRoute()

@ -3,15 +3,18 @@
<div class="mb-4"> <div class="mb-4">
<button class="btn btn--secondary" @click="goBack">Back</button> <button class="btn btn--secondary" @click="goBack">Back</button>
</div> </div>
<h1>Edit term <hr /></h1> <h1>
Edit term
<hr />
</h1>
<GlossaryForm :termId="termId" /> <GlossaryForm :termId="termId" />
</div> </div>
</template> </template>
<script setup> <script setup>
import GlossaryForm from "../../components/glossary/GlossaryForm.vue" import GlossaryForm from "../../components/glossary/GlossaryForm.vue"
import {useRoute, useRouter} from "vue-router" import { useRoute, useRouter } from "vue-router"
import {computed} from "vue" import { computed } from "vue"
const router = useRouter() const router = useRouter()
const route = useRoute() const route = useRoute()

@ -125,6 +125,7 @@
"postcss-loader": "^7.0.2", "postcss-loader": "^7.0.2",
"postcss-prefix-selector": "^1.16.0", "postcss-prefix-selector": "^1.16.0",
"prettier": "2.8.8", "prettier": "2.8.8",
"prettier-plugin-tailwindcss": "^0.3.0",
"purgecss-webpack-plugin": "^4.1.3", "purgecss-webpack-plugin": "^4.1.3",
"sass": "^1.59.3", "sass": "^1.59.3",
"sass-loader": "^13.2.0", "sass-loader": "^13.2.0",

@ -3661,6 +3661,7 @@ __metadata:
postcss-loader: ^7.0.2 postcss-loader: ^7.0.2
postcss-prefix-selector: ^1.16.0 postcss-prefix-selector: ^1.16.0
prettier: 2.8.8 prettier: 2.8.8
prettier-plugin-tailwindcss: ^0.3.0
pretty-bytes: ^5.6.0 pretty-bytes: ^5.6.0
primeflex: ^3.3.0 primeflex: ^3.3.0
primeicons: ^6.0.1 primeicons: ^6.0.1
@ -7919,6 +7920,61 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"prettier-plugin-tailwindcss@npm:^0.3.0":
version: 0.3.0
resolution: "prettier-plugin-tailwindcss@npm:0.3.0"
peerDependencies:
"@ianvs/prettier-plugin-sort-imports": "*"
"@prettier/plugin-pug": "*"
"@shopify/prettier-plugin-liquid": "*"
"@shufo/prettier-plugin-blade": "*"
"@trivago/prettier-plugin-sort-imports": "*"
prettier: ">=2.2.0"
prettier-plugin-astro: "*"
prettier-plugin-css-order: "*"
prettier-plugin-import-sort: "*"
prettier-plugin-jsdoc: "*"
prettier-plugin-marko: "*"
prettier-plugin-organize-attributes: "*"
prettier-plugin-organize-imports: "*"
prettier-plugin-style-order: "*"
prettier-plugin-svelte: "*"
prettier-plugin-twig-melody: "*"
peerDependenciesMeta:
"@ianvs/prettier-plugin-sort-imports":
optional: true
"@prettier/plugin-pug":
optional: true
"@shopify/prettier-plugin-liquid":
optional: true
"@shufo/prettier-plugin-blade":
optional: true
"@trivago/prettier-plugin-sort-imports":
optional: true
prettier-plugin-astro:
optional: true
prettier-plugin-css-order:
optional: true
prettier-plugin-import-sort:
optional: true
prettier-plugin-jsdoc:
optional: true
prettier-plugin-marko:
optional: true
prettier-plugin-organize-attributes:
optional: true
prettier-plugin-organize-imports:
optional: true
prettier-plugin-style-order:
optional: true
prettier-plugin-svelte:
optional: true
prettier-plugin-twig-melody:
optional: true
checksum: 007c09558433dac0c81d42fd9695f8ed17be56be2e446a03e2557f01ae8e26bb11945780f9afa4e6e90b861aad3fbfac6a65d381804273d5539e7d26b0a270c9
languageName: node
linkType: hard
"prettier@npm:2.8.8": "prettier@npm:2.8.8":
version: 2.8.8 version: 2.8.8
resolution: "prettier@npm:2.8.8" resolution: "prettier@npm:2.8.8"

Loading…
Cancel
Save