DRY viewV2
This commit is contained in:
parent
ece99aa751
commit
aa9603a1f2
|
@ -19,7 +19,6 @@
|
||||||
import { createEventDispatcher } from "svelte"
|
import { createEventDispatcher } from "svelte"
|
||||||
import {
|
import {
|
||||||
queries as queriesStore,
|
queries as queriesStore,
|
||||||
viewsV2 as viewsV2Store,
|
|
||||||
views as viewsStore,
|
views as viewsStore,
|
||||||
selectedScreen,
|
selectedScreen,
|
||||||
componentStore,
|
componentStore,
|
||||||
|
@ -34,7 +33,6 @@
|
||||||
import ClientBindingPanel from "@/components/common/bindings/ClientBindingPanel.svelte"
|
import ClientBindingPanel from "@/components/common/bindings/ClientBindingPanel.svelte"
|
||||||
import DataSourceCategory from "@/components/design/settings/controls/DataSourceSelect/DataSourceCategory.svelte"
|
import DataSourceCategory from "@/components/design/settings/controls/DataSourceSelect/DataSourceCategory.svelte"
|
||||||
import { API } from "@/api"
|
import { API } from "@/api"
|
||||||
import { datasourceSelect as format } from "@/helpers/data/format"
|
|
||||||
|
|
||||||
export let value = {}
|
export let value = {}
|
||||||
export let otherSources
|
export let otherSources
|
||||||
|
@ -51,13 +49,13 @@
|
||||||
let modal
|
let modal
|
||||||
|
|
||||||
$: text = value?.label ?? "Choose an option"
|
$: text = value?.label ?? "Choose an option"
|
||||||
$: tables = $builderStore.formatedTableNames
|
$: tables = $builderStore.formatedDatasourceNames.tables
|
||||||
$: viewsV1 = $viewsStore.list.map(view => ({
|
$: viewsV1 = $viewsStore.list.map(view => ({
|
||||||
...view,
|
...view,
|
||||||
label: view.name,
|
label: view.name,
|
||||||
type: "view",
|
type: "view",
|
||||||
}))
|
}))
|
||||||
$: viewsV2 = $viewsV2Store.list.map(format.viewV2)
|
$: viewsV2 = $builderStore.formatedDatasourceNames.viewsV2
|
||||||
$: views = [...(viewsV1 || []), ...(viewsV2 || [])]
|
$: views = [...(viewsV1 || []), ...(viewsV2 || [])]
|
||||||
$: queries = $queriesStore.list
|
$: queries = $queriesStore.list
|
||||||
.filter(q => showAllQueries || q.queryVerb === "read" || q.readable)
|
.filter(q => showAllQueries || q.queryVerb === "read" || q.readable)
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
<script>
|
<script>
|
||||||
import { Popover, Select } from "@budibase/bbui"
|
import { Popover, Select } from "@budibase/bbui"
|
||||||
import { createEventDispatcher, onMount } from "svelte"
|
import { createEventDispatcher, onMount } from "svelte"
|
||||||
import { builderStore, viewsV2 } from "@/stores/builder"
|
import { builderStore } from "@/stores/builder"
|
||||||
import { datasourceSelect as format } from "@/helpers/data/format"
|
|
||||||
import DataSourceCategory from "./DataSourceSelect/DataSourceCategory.svelte"
|
import DataSourceCategory from "./DataSourceSelect/DataSourceCategory.svelte"
|
||||||
|
|
||||||
export let value
|
export let value
|
||||||
|
@ -11,8 +10,8 @@
|
||||||
|
|
||||||
const dispatch = createEventDispatcher()
|
const dispatch = createEventDispatcher()
|
||||||
|
|
||||||
$: tables = $builderStore.formatedTableNames
|
$: tables = $builderStore.formatedDatasourceNames.tables
|
||||||
$: views = $viewsV2.list.map(format.viewV2)
|
$: views = $builderStore.formatedDatasourceNames.viewsV2
|
||||||
$: options = [...(tables || []), ...(views || [])]
|
$: options = [...(tables || []), ...(views || [])]
|
||||||
|
|
||||||
$: text = value?.label ?? "Choose an option"
|
$: text = value?.label ?? "Choose an option"
|
||||||
|
|
|
@ -8,6 +8,7 @@ import { App } from "@budibase/types"
|
||||||
import { datasourceSelect as format } from "@/helpers/data/format"
|
import { datasourceSelect as format } from "@/helpers/data/format"
|
||||||
import { tables } from "./tables.js"
|
import { tables } from "./tables.js"
|
||||||
import { datasources } from "./datasources.js"
|
import { datasources } from "./datasources.js"
|
||||||
|
import { viewsV2 } from "./viewsV2.js"
|
||||||
|
|
||||||
interface BuilderState {
|
interface BuilderState {
|
||||||
previousTopNavPath: Record<string, string>
|
previousTopNavPath: Record<string, string>
|
||||||
|
@ -38,10 +39,16 @@ export const INITIAL_BUILDER_STATE: BuilderState = {
|
||||||
}
|
}
|
||||||
|
|
||||||
interface DerivedBuilderState {
|
interface DerivedBuilderState {
|
||||||
formatedTableNames: {
|
formatedDatasourceNames: {
|
||||||
label: string
|
tables: {
|
||||||
tableId: string
|
label: string
|
||||||
}[]
|
resourceId: string
|
||||||
|
}[]
|
||||||
|
viewsV2: {
|
||||||
|
label: string
|
||||||
|
resourceId: string
|
||||||
|
}[]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class BuilderStore extends DerivedBudiStore<
|
export class BuilderStore extends DerivedBudiStore<
|
||||||
|
@ -52,21 +59,33 @@ export class BuilderStore extends DerivedBudiStore<
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
const makeDerivedStore = () => {
|
const makeDerivedStore = () => {
|
||||||
return derived([tables, datasources], ([$tables, $datasources]) => ({
|
return derived(
|
||||||
formatedTableNames: $tables.list
|
[tables, datasources, viewsV2],
|
||||||
.map(table => format.table(table, $datasources.list))
|
([$tables, $datasources, $viewsV2]) => ({
|
||||||
.sort((a, b) => {
|
formatedDatasourceNames: {
|
||||||
// sort tables alphabetically, grouped by datasource
|
tables: $tables.list
|
||||||
const dsA = a.datasourceName ?? ""
|
.map(table => ({
|
||||||
const dsB = b.datasourceName ?? ""
|
...format.table(table, $datasources.list),
|
||||||
|
resourceId: table._id!,
|
||||||
|
}))
|
||||||
|
.sort((a, b) => {
|
||||||
|
// sort tables alphabetically, grouped by datasource
|
||||||
|
const dsA = a.datasourceName ?? ""
|
||||||
|
const dsB = b.datasourceName ?? ""
|
||||||
|
|
||||||
const dsComparison = dsA.localeCompare(dsB)
|
const dsComparison = dsA.localeCompare(dsB)
|
||||||
if (dsComparison !== 0) {
|
if (dsComparison !== 0) {
|
||||||
return dsComparison
|
return dsComparison
|
||||||
}
|
}
|
||||||
return a.label.localeCompare(b.label)
|
return a.label.localeCompare(b.label)
|
||||||
}),
|
}),
|
||||||
}))
|
viewsV2: $viewsV2.list.map(view => ({
|
||||||
|
...format.viewV2(view),
|
||||||
|
resourceId: view.id,
|
||||||
|
})),
|
||||||
|
},
|
||||||
|
})
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
super({ ...INITIAL_BUILDER_STATE }, makeDerivedStore)
|
super({ ...INITIAL_BUILDER_STATE }, makeDerivedStore)
|
||||||
|
|
Loading…
Reference in New Issue