mirror of
https://github.com/hcengineering/platform.git
synced 2025-04-13 19:58:09 +00:00
[TSK-1304] Fix active viewlet if viewlet list is empty (#3043)
Signed-off-by: Sergei Ogorelkov <sergei.ogorelkov@icloud.com>
This commit is contained in:
parent
904a0614ed
commit
c1fac81f50
@ -11,7 +11,7 @@
|
||||
activeViewlet,
|
||||
getViewOptions,
|
||||
makeViewletKey,
|
||||
setActiveViewletId,
|
||||
updateActiveViewlet,
|
||||
viewOptionStore
|
||||
} from '@hcengineering/view-resources'
|
||||
import { onDestroy } from 'svelte'
|
||||
@ -35,9 +35,9 @@
|
||||
$: if (query) updateSearchQuery(search)
|
||||
let resultQuery: DocumentQuery<Issue> = { ...searchQuery }
|
||||
|
||||
let viewlets: WithLookup<Viewlet>[] = []
|
||||
let viewlets: WithLookup<Viewlet>[] | undefined
|
||||
|
||||
$: update(viewlets, active)
|
||||
$: viewlet = viewlets && updateActiveViewlet(viewlets, active)
|
||||
const viewletQuery = createQuery()
|
||||
viewletQuery.query(
|
||||
view.class.Viewlet,
|
||||
@ -60,13 +60,6 @@
|
||||
|
||||
$: active = $activeViewlet[key]
|
||||
|
||||
async function update (viewlets: WithLookup<Viewlet>[], active: Ref<Viewlet> | null): Promise<void> {
|
||||
viewlet = viewlets.find((viewlet) => viewlet._id === active) ?? viewlets[0]
|
||||
if (viewlet !== undefined) {
|
||||
setActiveViewletId(viewlet._id)
|
||||
}
|
||||
}
|
||||
|
||||
$: if (!label && title) {
|
||||
translate(title, {}).then((res) => {
|
||||
label = res
|
||||
|
@ -13,7 +13,7 @@
|
||||
// limitations under the License.
|
||||
-->
|
||||
<script lang="ts">
|
||||
import { DocumentQuery, Ref, WithLookup } from '@hcengineering/core'
|
||||
import { DocumentQuery, WithLookup } from '@hcengineering/core'
|
||||
import { IntlString } from '@hcengineering/platform'
|
||||
import { createQuery } from '@hcengineering/presentation'
|
||||
import { Sprint } from '@hcengineering/tracker'
|
||||
@ -37,7 +37,7 @@
|
||||
activeViewlet,
|
||||
getViewOptions,
|
||||
makeViewletKey,
|
||||
setActiveViewletId,
|
||||
updateActiveViewlet,
|
||||
viewOptionStore
|
||||
} from '@hcengineering/view-resources'
|
||||
import { onDestroy } from 'svelte'
|
||||
@ -72,9 +72,9 @@
|
||||
|
||||
let resultQuery: DocumentQuery<Sprint> = { ...searchQuery }
|
||||
|
||||
let viewlets: WithLookup<Viewlet>[] = []
|
||||
let viewlets: WithLookup<Viewlet>[] | undefined
|
||||
|
||||
$: update(viewlets, active)
|
||||
$: viewlet = viewlets && updateActiveViewlet(viewlets, active)
|
||||
|
||||
const viewletQuery = createQuery()
|
||||
viewletQuery.query(view.class.Viewlet, { attachTo: tracker.class.Sprint }, (res) => (viewlets = res), {
|
||||
@ -93,11 +93,6 @@
|
||||
|
||||
$: active = $activeViewlet[key]
|
||||
|
||||
async function update (viewlets: WithLookup<Viewlet>[], active: Ref<Viewlet> | null): Promise<void> {
|
||||
viewlet = viewlets.find((viewlet) => viewlet._id === active) ?? viewlets[0]
|
||||
setActiveViewletId(viewlet._id)
|
||||
}
|
||||
|
||||
let asideFloat: boolean = false
|
||||
let asideShown: boolean = true
|
||||
$: if (panelWidth < 900 && !asideFloat) asideFloat = true
|
||||
|
@ -11,7 +11,7 @@
|
||||
activeViewlet,
|
||||
getViewOptions,
|
||||
makeViewletKey,
|
||||
setActiveViewletId,
|
||||
updateActiveViewlet,
|
||||
viewOptionStore
|
||||
} from '@hcengineering/view-resources'
|
||||
import { onDestroy } from 'svelte'
|
||||
@ -37,9 +37,9 @@
|
||||
$: if (query) updateSearchQuery(search)
|
||||
let resultQuery: DocumentQuery<IssueTemplate> = { ...searchQuery }
|
||||
|
||||
let viewlets: WithLookup<Viewlet>[] = []
|
||||
let viewlets: WithLookup<Viewlet>[] | undefined
|
||||
|
||||
$: update(viewlets, active)
|
||||
$: viewlet = viewlets && updateActiveViewlet(viewlets, active)
|
||||
|
||||
const viewletQuery = createQuery()
|
||||
viewletQuery.query(view.class.Viewlet, { attachTo: tracker.class.IssueTemplate }, (res) => (viewlets = res), {
|
||||
@ -58,11 +58,6 @@
|
||||
|
||||
$: active = $activeViewlet[key]
|
||||
|
||||
async function update (viewlets: WithLookup<Viewlet>[], active: Ref<Viewlet> | null): Promise<void> {
|
||||
viewlet = viewlets.find((viewlet) => viewlet._id === active) ?? viewlets[0]
|
||||
if (viewlet !== undefined) setActiveViewletId(viewlet._id)
|
||||
}
|
||||
|
||||
$: if (!label && title) {
|
||||
translate(title, {}).then((res) => {
|
||||
label = res
|
||||
|
@ -520,6 +520,35 @@ export function getActiveViewletId (): Ref<Viewlet> | null {
|
||||
return localStorage.getItem(key) as Ref<Viewlet> | null
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the active viewlet, if one was found.
|
||||
* Otherwise sets the default viewlet.
|
||||
*
|
||||
* @export
|
||||
* @param {readonly Viewlet[]} viewlets
|
||||
* @param {(Ref<Viewlet> | null | undefined)} activeViewletId
|
||||
* @returns {(Viewlet | undefined)}
|
||||
*/
|
||||
export function updateActiveViewlet (
|
||||
viewlets: readonly Viewlet[],
|
||||
activeViewletId: Ref<Viewlet> | null | undefined
|
||||
): Viewlet | undefined {
|
||||
if (viewlets.length === 0) {
|
||||
return
|
||||
}
|
||||
|
||||
let viewlet: Viewlet | undefined
|
||||
|
||||
if (activeViewletId !== null && activeViewletId !== undefined) {
|
||||
viewlet = viewlets.find((viewlet) => viewlet._id === activeViewletId)
|
||||
}
|
||||
viewlet ??= viewlets[0]
|
||||
|
||||
setActiveViewletId(viewlet._id)
|
||||
|
||||
return viewlet
|
||||
}
|
||||
|
||||
export type FixedWidthStore = Record<string, number>
|
||||
|
||||
export const fixedWidthStore = writable<FixedWidthStore>({})
|
||||
|
@ -34,7 +34,8 @@
|
||||
ViewletSettingButton,
|
||||
activeViewlet,
|
||||
makeViewletKey,
|
||||
setActiveViewletId
|
||||
setActiveViewletId,
|
||||
updateActiveViewlet
|
||||
} from '@hcengineering/view-resources'
|
||||
import { createEventDispatcher, onDestroy } from 'svelte'
|
||||
import Header from './Header.svelte'
|
||||
@ -62,7 +63,7 @@
|
||||
showPopup(createItemDialog as AnyComponent, { space: spaceId }, 'top')
|
||||
}
|
||||
|
||||
$: update(viewlets, active)
|
||||
$: viewlet = updateActiveViewlet(viewlets, active)
|
||||
|
||||
$: if (prevSpaceId !== spaceId) {
|
||||
search = ''
|
||||
@ -79,11 +80,6 @@
|
||||
|
||||
$: active = $activeViewlet[key]
|
||||
|
||||
async function update (viewlets: WithLookup<Viewlet>[], active: Ref<Viewlet> | null): Promise<void> {
|
||||
viewlet = viewlets.find((viewlet) => viewlet._id === active) ?? viewlets[0]
|
||||
setActiveViewletId(viewlet._id)
|
||||
}
|
||||
|
||||
$: viewslist = viewlets.map((views) => {
|
||||
return {
|
||||
id: views._id,
|
||||
|
@ -22,7 +22,7 @@
|
||||
activeViewlet,
|
||||
getViewOptions,
|
||||
makeViewletKey,
|
||||
setActiveViewletId,
|
||||
updateActiveViewlet,
|
||||
viewOptionStore
|
||||
} from '@hcengineering/view-resources'
|
||||
import type { ViewConfiguration } from '@hcengineering/workbench'
|
||||
@ -82,8 +82,7 @@
|
||||
}
|
||||
)
|
||||
if (header !== undefined) {
|
||||
viewlet = viewlets.find((viewlet) => viewlet._id === active) ?? viewlets[0]
|
||||
setActiveViewletId(viewlet._id)
|
||||
viewlet = updateActiveViewlet(viewlets, active)
|
||||
}
|
||||
_class = attachTo
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user