mirror of https://github.com/nocodb/nocodb
bcakmakoglu
2 years ago
committed by
Pranav C
28 changed files with 6872 additions and 2487 deletions
@ -0,0 +1,10 @@ |
|||||||
|
const baseRules = { |
||||||
|
'vue/no-setup-props-destructure': 0, |
||||||
|
'no-console': 0, |
||||||
|
'antfu/if-newline': 0, |
||||||
|
} |
||||||
|
|
||||||
|
module.exports = { |
||||||
|
extends: ['@antfu'], |
||||||
|
rules: baseRules, |
||||||
|
} |
@ -1,6 +1,6 @@ |
|||||||
<template> |
<template> |
||||||
<!-- <NuxtLayout>--> |
<!-- <NuxtLayout> --> |
||||||
<!-- <NuxtPage />--> |
<!-- <NuxtPage /> --> |
||||||
<!-- </NuxtLayout>--> |
<!-- </NuxtLayout> --> |
||||||
<NuxtPage/> |
<NuxtPage /> |
||||||
</template> |
</template> |
||||||
|
@ -1,44 +1,29 @@ |
|||||||
<template> |
<script setup lang="ts"> |
||||||
<div> |
import { useTabs } from '~/composables/tabs' |
||||||
|
|
||||||
|
|
||||||
<v-tabs density="compact" v-model="activeTab"> |
|
||||||
|
|
||||||
<v-tab v-for="(tab,i) in tabs" :key="i" :value="i" >{{tab.title}} </v-tab> |
const { tabs, activeTab } = useTabs() |
||||||
|
</script> |
||||||
|
|
||||||
|
<template> |
||||||
|
<div> |
||||||
|
<v-tabs v-model="activeTab" density="compact"> |
||||||
|
<v-tab v-for="(tab, i) of tabs" :key="i" :value="i"> |
||||||
|
{{ tab.title }} |
||||||
|
</v-tab> |
||||||
</v-tabs> |
</v-tabs> |
||||||
|
|
||||||
<v-window v-model="activeTab"> |
<v-window v-model="activeTab"> |
||||||
<v-window-item |
<v-window-item |
||||||
v-for="(tab,i) in tabs" |
v-for="(tab, i) of tabs" |
||||||
:key="i" |
:key="i" |
||||||
:value="i" |
:value="i" |
||||||
> |
> |
||||||
<TabsSmartsheet :tab-meta="tab" /> |
<TabsSmartsheet :tab-meta="tab" /> |
||||||
</v-window-item> |
</v-window-item> |
||||||
</v-window> |
</v-window> |
||||||
|
|
||||||
</div> |
</div> |
||||||
</template> |
</template> |
||||||
|
|
||||||
<script setup lang="ts"> |
|
||||||
|
|
||||||
import { useTabs } from "~/composables/tabs"; |
|
||||||
|
|
||||||
const { tabs, activeTab } = useTabs(); |
|
||||||
|
|
||||||
// const tabItems = computed(() => { |
|
||||||
// return tabs.value.map(tab => { |
|
||||||
// return { |
|
||||||
// label: tab.title, |
|
||||||
// // icon: tab.icon, |
|
||||||
// closable: true |
|
||||||
// } |
|
||||||
// }) |
|
||||||
// }) |
|
||||||
|
|
||||||
</script> |
|
||||||
|
|
||||||
<style scoped> |
<style scoped> |
||||||
|
|
||||||
</style> |
</style> |
||||||
|
@ -1,71 +1,64 @@ |
|||||||
|
<script lang="ts" setup> |
||||||
|
import { Api } from 'nocodb-sdk' |
||||||
|
import { useNuxtApp } from '#app' |
||||||
|
import { useUser } from '~/composables/user' |
||||||
|
|
||||||
|
const { tabMeta, meta } = defineProps({ |
||||||
|
tabMeta: Object, |
||||||
|
meta: Object, |
||||||
|
}) |
||||||
|
|
||||||
|
const { project } = useProject() |
||||||
|
const { user } = useUser() |
||||||
|
const rows = ref() |
||||||
|
|
||||||
|
const { $api } = useNuxtApp() |
||||||
|
|
||||||
|
const loadData = async () => { |
||||||
|
const response = await $api.dbTableRow.list('noco', |
||||||
|
project.value.id, |
||||||
|
meta.id, {}, { |
||||||
|
headers: { |
||||||
|
'xc-auth': user.token, |
||||||
|
}, |
||||||
|
}) |
||||||
|
|
||||||
|
rows.value = response.list |
||||||
|
} |
||||||
|
|
||||||
|
onMounted(async () => { |
||||||
|
await loadData() |
||||||
|
}) |
||||||
|
</script> |
||||||
|
|
||||||
<template> |
<template> |
||||||
<div> |
<div> |
||||||
|
|
||||||
<div class="card"> |
<div class="card"> |
||||||
<v-table> |
<v-table> |
||||||
<thead> |
<thead> |
||||||
<tr> |
<tr> |
||||||
<th v-for="col in meta.columns"> |
<th v-for="col in meta.columns"> |
||||||
{{ col.title }} |
{{ col.title }} |
||||||
</th> |
</th> |
||||||
</tr> |
</tr> |
||||||
</thead> |
</thead> |
||||||
<tbody> |
<tbody> |
||||||
|
<tr v-for="(row, i) in rows" :key="i"> |
||||||
<tr v-for="(row,i) in rows" :key="i"> |
<th v-for="col in meta.columns" :key="col.title"> |
||||||
<th v-for="col in meta.columns" :key="col.title"> |
{{ row[col.title] }} |
||||||
{{ row[col.title] }} |
</th> |
||||||
</th> |
</tr> |
||||||
</tr> |
|
||||||
|
|
||||||
</tbody> |
</tbody> |
||||||
<!-- <Column v-for="col in meta.columns" :key="col.id" :field="col.title" :header="col.title"> |
<!-- <Column v-for="col in meta.columns" :key="col.id" :field="col.title" :header="col.title"> |
||||||
<template v-if="col.uidt === 'LinkToAnotherRecord'" #body="{data:{[col.title]:d}}"> |
<template v-if="col.uidt === 'LinkToAnotherRecord'" #body="{data:{[col.title]:d}}"> |
||||||
{{ d && (Array.isArray(d) ? d : [d]).map(c1 => c1[Object.keys(c1)[1]]).join(', ') }} |
{{ d && (Array.isArray(d) ? d : [d]).map(c1 => c1[Object.keys(c1)[1]]).join(', ') }} |
||||||
</template> |
</template> |
||||||
</Column>--> |
</Column> --> |
||||||
</v-table> |
</v-table> |
||||||
</div> |
</div> |
||||||
|
|
||||||
</div> |
</div> |
||||||
</template> |
</template> |
||||||
|
|
||||||
<script lang="ts" setup> |
|
||||||
import { useNuxtApp } from "#app"; |
|
||||||
import { Api } from "nocodb-sdk"; |
|
||||||
import { useUser } from "~/composables/user"; |
|
||||||
|
|
||||||
const { tabMeta, meta } = defineProps({ |
|
||||||
tabMeta: Object, |
|
||||||
meta: Object |
|
||||||
}); |
|
||||||
|
|
||||||
const { project } = useProject(); |
|
||||||
const { user } = useUser(); |
|
||||||
const rows = ref(); |
|
||||||
|
|
||||||
const { $api } = useNuxtApp(); |
|
||||||
|
|
||||||
|
|
||||||
const loadData = async () => { |
|
||||||
const response = await $api.dbTableRow.list("noco", |
|
||||||
project.value.id, |
|
||||||
meta.id, {}, { |
|
||||||
headers: { |
|
||||||
"xc-auth": user.token |
|
||||||
} |
|
||||||
}); |
|
||||||
|
|
||||||
rows.value = response.list; |
|
||||||
}; |
|
||||||
|
|
||||||
onMounted(async () => { |
|
||||||
await loadData(); |
|
||||||
}); |
|
||||||
|
|
||||||
|
|
||||||
</script> |
|
||||||
|
|
||||||
<style scoped> |
<style scoped> |
||||||
|
|
||||||
</style> |
</style> |
||||||
|
@ -1,36 +1,35 @@ |
|||||||
<template> |
|
||||||
<div> |
|
||||||
<template v-if="meta && tabMeta"> |
|
||||||
<SmartsheetGrid :meta="meta" :tabMeta="tabMeta"></SmartsheetGrid> |
|
||||||
</template> |
|
||||||
</div> |
|
||||||
</template> |
|
||||||
|
|
||||||
<script setup lang="ts"> |
<script setup lang="ts"> |
||||||
import {useMetas} from "~/composables/metas"; |
import { computed, onMounted, watch } from 'vue' |
||||||
import {computed, onMounted, watch} from 'vue' |
import { useMetas } from '~/composables/metas' |
||||||
|
|
||||||
const {tabMeta} = defineProps({ |
const { tabMeta } = defineProps({ |
||||||
tabMeta: Object |
tabMeta: Object, |
||||||
}) |
}) |
||||||
|
|
||||||
const {getMeta, metas} = useMetas() |
const { getMeta, metas } = useMetas() |
||||||
|
|
||||||
const meta = computed(() => { |
const meta = computed(() => { |
||||||
return metas.value?.[tabMeta?.id] |
return metas.value?.[tabMeta?.id] |
||||||
}) |
}) |
||||||
|
|
||||||
onMounted(async () => { |
onMounted(async () => { |
||||||
await getMeta(tabMeta?.id) |
await getMeta(tabMeta?.id) |
||||||
}) |
}) |
||||||
|
|
||||||
watch(() => tabMeta && tabMeta?.id, async (newVal, oldVal) => { |
watch(() => tabMeta && tabMeta?.id, async (newVal, oldVal) => { |
||||||
if (newVal !== oldVal) { |
if (newVal !== oldVal) |
||||||
await getMeta(newVal) |
await getMeta(newVal) |
||||||
} |
|
||||||
}) |
}) |
||||||
</script> |
</script> |
||||||
|
|
||||||
|
<template> |
||||||
|
<div> |
||||||
|
<template v-if="meta && tabMeta"> |
||||||
|
<SmartsheetGrid :meta="meta" :tab-meta="tabMeta" /> |
||||||
|
</template> |
||||||
|
</div> |
||||||
|
</template> |
||||||
|
|
||||||
<style scoped> |
<style scoped> |
||||||
|
|
||||||
</style> |
</style> |
||||||
|
@ -1,27 +1,26 @@ |
|||||||
|
<script> |
||||||
|
export default { |
||||||
|
name: 'Default', |
||||||
|
} |
||||||
|
</script> |
||||||
|
|
||||||
<template> |
<template> |
||||||
<div class=""> |
<div class=""> |
||||||
<!-- <div class="topbar">--> |
<!-- <div class="topbar"> --> |
||||||
<!-- </div>--> |
<!-- </div> --> |
||||||
<!-- <div class="sidebar">--> |
<!-- <div class="sidebar"> --> |
||||||
<!-- </div>--> |
<!-- </div> --> |
||||||
<!-- <div class="content">--> |
<!-- <div class="content"> --> |
||||||
|
|
||||||
|
|
||||||
<v-layout> |
<v-layout> |
||||||
<v-app-bar color=""></v-app-bar> |
<v-app-bar color="" /> |
||||||
<slot></slot> |
<slot /> |
||||||
</v-layout> |
</v-layout> |
||||||
|
|
||||||
<!-- </div>--> |
<!-- </div> --> |
||||||
</div> |
</div> |
||||||
</template> |
</template> |
||||||
|
|
||||||
<script> |
|
||||||
export default { |
|
||||||
name: "default" |
|
||||||
} |
|
||||||
</script> |
|
||||||
|
|
||||||
<style scoped> |
<style scoped> |
||||||
|
|
||||||
</style> |
</style> |
||||||
|
@ -1,35 +1,17 @@ |
|||||||
import {defineNuxtConfig} from 'nuxt' |
import { defineNuxtConfig } from 'nuxt' |
||||||
|
|
||||||
// https://v3.nuxtjs.org/api/configuration/nuxt.config
|
// https://v3.nuxtjs.org/api/configuration/nuxt.config
|
||||||
export default defineNuxtConfig({ |
export default defineNuxtConfig({ |
||||||
// modules: ['@nuxtjs/tailwindcss'],
|
|
||||||
// buildModules: [
|
|
||||||
// 'nuxt-vite'
|
|
||||||
// ],
|
|
||||||
modules: ['nuxt3-store'], |
modules: ['nuxt3-store'], |
||||||
ssr:false, |
ssr: false, |
||||||
plugins: [ |
|
||||||
// '~/plugins/vuetify.ts',
|
|
||||||
// '~/plugins/api.ts',
|
|
||||||
], |
|
||||||
css: ['vuetify/lib/styles/main.sass'], |
css: ['vuetify/lib/styles/main.sass'], |
||||||
build: { |
build: { |
||||||
transpile: ['vuetify'] |
transpile: ['vuetify'], |
||||||
}, |
}, |
||||||
|
|
||||||
// css: [
|
|
||||||
// 'primevue/resources/themes/saga-blue/theme.css',
|
|
||||||
// 'primevue/resources/primevue.css',
|
|
||||||
// 'primeicons/primeicons.css',
|
|
||||||
// 'primeflex/primeflex.css',
|
|
||||||
// ],
|
|
||||||
// build: {
|
|
||||||
// transpile: ['primevue']
|
|
||||||
// },
|
|
||||||
|
|
||||||
vite: { |
vite: { |
||||||
define: { |
define: { |
||||||
'process.env.DEBUG': 'false', |
'process.env.DEBUG': 'false', |
||||||
} |
}, |
||||||
} |
}, |
||||||
}) |
}) |
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,17 +1,15 @@ |
|||||||
<template> |
|
||||||
<div class="container"> |
|
||||||
|
|
||||||
</div> |
|
||||||
</template> |
|
||||||
|
|
||||||
<script setup lang="ts"> |
<script setup lang="ts"> |
||||||
import {useRouter} from "#app"; |
import { useRouter } from '#app' |
||||||
|
|
||||||
const $router = useRouter() |
const router = useRouter() |
||||||
|
|
||||||
$router.replace('/projects') |
router.replace('/projects') |
||||||
</script> |
</script> |
||||||
|
|
||||||
|
<template> |
||||||
|
<div class="container" /> |
||||||
|
</template> |
||||||
|
|
||||||
<style lang="scss"> |
<style lang="scss"> |
||||||
|
|
||||||
</style> |
</style> |
||||||
|
@ -1,18 +1,17 @@ |
|||||||
<template> |
|
||||||
<div> |
|
||||||
<Sidebar :visible="true" position="left" :dismissable="false"> |
|
||||||
Content |
|
||||||
|
|
||||||
</Sidebar> |
|
||||||
</div> |
|
||||||
</template> |
|
||||||
|
|
||||||
<script> |
<script> |
||||||
export default { |
export default { |
||||||
name: "dashboard" |
name: 'Dashboard', |
||||||
} |
} |
||||||
</script> |
</script> |
||||||
|
|
||||||
|
<template> |
||||||
|
<div> |
||||||
|
<Sidebar :visible="true" position="left" :dismissable="false"> |
||||||
|
Content |
||||||
|
</Sidebar> |
||||||
|
</div> |
||||||
|
</template> |
||||||
|
|
||||||
<style scoped> |
<style scoped> |
||||||
|
|
||||||
</style> |
</style> |
||||||
|
@ -1,35 +1,23 @@ |
|||||||
import { useNuxtApp } from "#app"; |
import { Api } from 'nocodb-sdk' |
||||||
import { Api } from "nocodb-sdk"; |
import { defineNuxtPlugin } from 'nuxt3/app' |
||||||
import { defineNuxtPlugin } from "nuxt3/app"; |
|
||||||
|
|
||||||
export default defineNuxtPlugin((nuxtApp) => { |
export default defineNuxtPlugin((nuxtApp) => { |
||||||
|
const api = getApi(null, null) |
||||||
|
|
||||||
|
nuxtApp.provide('api', api) |
||||||
// Doing something with nuxtApp
|
}) |
||||||
|
|
||||||
const api = getApi(null, null); |
|
||||||
|
|
||||||
// nuxtApp.provide("api", api);
|
|
||||||
|
|
||||||
return { |
|
||||||
provide: { |
|
||||||
api |
|
||||||
} |
|
||||||
}; |
|
||||||
}); |
|
||||||
|
|
||||||
|
|
||||||
export function getApi($store, $axios) { |
export function getApi($store, $axios) { |
||||||
const api = new Api({ |
const api = new Api({ |
||||||
baseURL: "http://localhost:8080", |
baseURL: 'http://localhost:8080', |
||||||
headers: { |
headers: { |
||||||
"xc-auth": $store?.state?.users?.token |
'xc-auth': $store?.state?.users?.token, |
||||||
} |
}, |
||||||
}); |
}) |
||||||
|
|
||||||
if ($axios) { |
if ($axios) { |
||||||
// overwrite with nuxt axios instance
|
// overwrite with nuxt axios instance
|
||||||
api.instance = $axios; |
api.instance = $axios |
||||||
} |
} |
||||||
return api; |
return api |
||||||
} |
} |
||||||
|
@ -1,21 +1,12 @@ |
|||||||
import { createVuetify } from 'vuetify' |
import { createVuetify } from 'vuetify' |
||||||
// import {
|
import { defineNuxtPlugin } from 'nuxt/app' |
||||||
// VApp,
|
|
||||||
// VAppBar,
|
|
||||||
// VBtn
|
|
||||||
// } from 'vuetify/components'
|
|
||||||
import {defineNuxtPlugin} from "nuxt/app"; |
|
||||||
|
|
||||||
// Import everything
|
// Import everything
|
||||||
import * as components from 'vuetify/components' |
import * as components from 'vuetify/components' |
||||||
|
|
||||||
export default defineNuxtPlugin((nuxtApp) => { |
export default defineNuxtPlugin((nuxtApp) => { |
||||||
const vuetify = createVuetify({ |
const vuetify = createVuetify({ |
||||||
components/*: { |
components, |
||||||
VApp, |
|
||||||
VAppBar, |
|
||||||
VBtn*/ |
|
||||||
// }
|
|
||||||
}) |
}) |
||||||
nuxtApp.vueApp.use(vuetify) |
nuxtApp.vueApp.use(vuetify) |
||||||
}) |
}) |
||||||
|
Loading…
Reference in new issue