diff --git a/dashboard/src/components/DomainDialog.vue b/dashboard/src/components/DomainDialog.vue new file mode 100644 index 000000000..2f01ef903 --- /dev/null +++ b/dashboard/src/components/DomainDialog.vue @@ -0,0 +1,32 @@ + + + \ No newline at end of file diff --git a/dashboard/src/views/DomainsView.vue b/dashboard/src/views/DomainsView.vue index 6c85d044f..bcc14b216 100644 --- a/dashboard/src/views/DomainsView.vue +++ b/dashboard/src/views/DomainsView.vue @@ -2,10 +2,15 @@ const API_ORIGIN = import.meta.env.VITE_API_ORIGIN ? import.meta.env.VITE_API_ORIGIN : window.location.origin; -import { ref, onMounted } from 'vue'; -import { Button, ButtonGroup } from 'pankow'; +import { useI18n } from 'vue-i18n'; +const i18n = useI18n(); +const t = i18n.t; + +import { ref, onMounted, useTemplateRef, computed } from 'vue'; +import { Button, ButtonGroup, TableView, TextInput } from 'pankow'; import Certificates from '../components/Certificates.vue'; import SyncDns from '../components/SyncDns.vue'; +import DomainDialog from '../components/DomainDialog.vue'; import DashboardDomain from '../components/DashboardDomain.vue'; import Section from '../components/Section.vue'; import DashboardModel from '../models/DashboardModel.js'; @@ -15,8 +20,9 @@ const dashboardModel = DashboardModel.create(API_ORIGIN, localStorage.token); const domainsModel = DomainsModel.create(API_ORIGIN, localStorage.token); const domains = ref([]); -const pageSize = 20; +const search = ref(''); const dashboardDomain = ref(''); +const domainDialog = useTemplateRef('domainDialog'); function prettyProviderName(domain) { switch (domain.provider) { @@ -46,11 +52,11 @@ function prettyProviderName(domain) { }; function onAdd () { - + domainDialog.value.open(null); } function onEdit(domain) { - + domainDialog.value.open(domain); } function onRemove(domain) { @@ -61,14 +67,35 @@ function onEditWellKnown(domain) { } +const columns = ref({ + domain: { + label: t('domains.domain'), + sort: true + }, + provider: { + label: t('domains.provider'), + sort: true + }, + actions: { + label: '', + sort: false + } +}); + +const filteredDomains = computed(() => { + if (!search.value) return domains.value; + + return domains.value.filter(d => { + return d.domain.indexOf(search.value) !== -1 || d.provider.indexOf(search.value) !== -1; + }); +}); + onMounted(async () => { let [error, result] = await domainsModel.list(); if (error) return console.error(error); domains.value = result; - console.log(result); - [error, result] = await dashboardModel.getConfig(); if (error) return console.error(error); @@ -79,45 +106,28 @@ onMounted(async () => {