mirror of
https://github.com/hcengineering/platform.git
synced 2026-09-08 02:37:44 +02:00
Tracker: Add project issue list view (#2012)
Signed-off-by: Dvinyanin Alexandr <dvinyanin.alexandr@gmail.com>
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
<script lang="ts">
|
||||
import { Ref } from '@anticrm/core'
|
||||
import { createQuery, getClient } from '@anticrm/presentation'
|
||||
import { StyledTextBox } from '@anticrm/text-editor'
|
||||
import { Project } from '@anticrm/tracker'
|
||||
import { EditBox, getCurrentLocation } from '@anticrm/ui'
|
||||
import { DocAttributeBar } from '@anticrm/view-resources'
|
||||
import Issues from '../issues/Issues.svelte'
|
||||
|
||||
import tracker from '../../plugin'
|
||||
|
||||
let object: Project | undefined
|
||||
$: project = getCurrentLocation().path[3] as Ref<Project>
|
||||
|
||||
const client = getClient()
|
||||
const projectQuery = createQuery()
|
||||
$: projectQuery.query(tracker.class.Project, { _id: project }, (result) => {
|
||||
;[object] = result
|
||||
})
|
||||
|
||||
async function change (field: string, value: any) {
|
||||
if (object) {
|
||||
await client.update(object, { [field]: value })
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
{#if object}
|
||||
<Issues currentSpace={object.space} query={{ project }} label={object.label}>
|
||||
<svelte:fragment slot="aside">
|
||||
<div class="flex-row p-4">
|
||||
<div class="fs-title text-xl">
|
||||
<EditBox bind:value={object.label} maxWidth="39rem" on:change={() => change('label', object?.label)} />
|
||||
</div>
|
||||
<div class="mt-2">
|
||||
<StyledTextBox
|
||||
alwaysEdit={true}
|
||||
showButtons={false}
|
||||
placeholder={tracker.string.Description}
|
||||
content={object.description ?? ''}
|
||||
on:value={(evt) => change('description', evt.detail)}
|
||||
/>
|
||||
</div>
|
||||
<DocAttributeBar {object} mixins={[]} ignoreKeys={['icon', 'label', 'description']} />
|
||||
</div>
|
||||
</svelte:fragment>
|
||||
</Issues>
|
||||
{/if}
|
||||
@@ -15,12 +15,20 @@
|
||||
<script lang="ts">
|
||||
import { WithLookup } from '@anticrm/core'
|
||||
import { Project } from '@anticrm/tracker'
|
||||
import { getCurrentLocation, navigate } from '@anticrm/ui'
|
||||
|
||||
export let value: WithLookup<Project>
|
||||
function navigateToProject () {
|
||||
const loc = getCurrentLocation()
|
||||
loc.path[2] = 'project'
|
||||
loc.path[3] = value._id
|
||||
loc.path.length = 4
|
||||
navigate(loc)
|
||||
}
|
||||
</script>
|
||||
|
||||
{#if value}
|
||||
<div class="flex-presenter projectPresenterRoot">
|
||||
<div class="flex-presenter projectPresenterRoot" on:click={navigateToProject}>
|
||||
<span title={value.label} class="projectLabel">{value.label}</span>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
Reference in New Issue
Block a user