TSK-1452: Revert sprint statistics display (#3142)

Signed-off-by: Andrey Sobolev <haiodo@gmail.com>
This commit is contained in:
Andrey Sobolev 2023-05-11 00:16:26 +07:00 committed by GitHub
parent 84b7df4923
commit 739fca0132
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 51 additions and 25 deletions

View File

@ -18,7 +18,7 @@
import { getClient } from '@hcengineering/presentation'
import { Issue, IssueDraft } from '@hcengineering/tracker'
import { Button, ButtonKind, ButtonSize, eventToHTMLElement, showPopup } from '@hcengineering/ui'
import { EditBoxPopup } from '@hcengineering/view-resources'
import { EditBoxPopup, FixedColumn } from '@hcengineering/view-resources'
import { createEventDispatcher } from 'svelte'
import tracker from '../../../plugin'
import EstimationPopup from './EstimationPopup.svelte'
@ -74,7 +74,9 @@
{#if value}
{#if kind === 'list' && '_class' in value}
<EstimationStatsPresenter {value} {kind} on:click={handleestimationEditorOpened} />
<FixedColumn key="estimation-editor-total">
<EstimationStatsPresenter {value} {kind} on:click={handleestimationEditorOpened} />
</FixedColumn>
{:else}
<Button
{focusIndex}

View File

@ -29,13 +29,15 @@
on:click
use:tooltip={{
component: Label,
props: { label: tracker.string.TimeSpendHours, params: { value: floorFractionDigits(value * 8, 2) } }
props: { label: tracker.string.TimeSpendHours, params: { value: floorFractionDigits(value * 8, 3) } }
}}
>
{#if noSymbol}
{floorFractionDigits(value, 3)}
{floorFractionDigits(value, 1)}
{:else if value > 0 && value < 1}
<Label label={tracker.string.TimeSpendHours} params={{ value: floorFractionDigits(value * 8, 1) }} />
{:else}
<Label label={tracker.string.TimeSpendValue} params={{ value: floorFractionDigits(value, 3) }} />
<Label label={tracker.string.TimeSpendValue} params={{ value: floorFractionDigits(value, 1) }} />
{/if}
</span>

View File

@ -20,8 +20,10 @@
import { statusStore } from '@hcengineering/presentation'
import EstimationProgressCircle from '../issues/timereport/EstimationProgressCircle.svelte'
import TimePresenter from '../issues/timereport/TimePresenter.svelte'
import { FixedColumn } from '@hcengineering/view-resources'
export let docs: Issue[] | undefined = undefined
export let capacity: number | undefined = undefined
export let category: string | undefined = undefined
$: ids = new Set(docs?.map((it) => it._id) ?? [])
@ -60,7 +62,7 @@
.reduce((it, cur) => {
return it + cur
}, 0),
3
1
)
$: totalReported = floorFractionDigits(
(noParents ?? [{ reportedTime: 0, childInfo: [] } as unknown as Issue])
@ -76,22 +78,24 @@
.reduce((it, cur) => {
return it + cur
}, 0),
3
1
)
</script>
{#if docs}
<!-- <Label label={tracker.string.SprintDay} value={}/> -->
<div class="flex-row-center flex-no-shrink h-6" class:showWarning={totalEstimation > (capacity ?? 0)}>
<EstimationProgressCircle value={totalReported} max={totalEstimation} />
<div class="w-2 min-w-2" />
{#if totalReported > 0}
<TimePresenter value={totalReported} />
/
{/if}
<TimePresenter value={totalEstimation} />
{#if capacity}
<Label label={tracker.string.CapacityValue} params={{ value: capacity }} />
{/if}
</div>
{#if docs && (category === 'sprint' || category === 'assignee')}
<FixedColumn key="estimation-editor">
<!-- <Label label={tracker.string.SprintDay} value={}/> -->
<div class="flex-row-center flex-no-shrink h-6" class:showWarning={totalEstimation > (capacity ?? 0)}>
<EstimationProgressCircle value={totalReported} max={totalEstimation} />
<div class="w-2 min-w-2" />
{#if totalReported > 0}
<TimePresenter value={totalReported} />
/
{/if}
<TimePresenter value={totalEstimation} />
{#if capacity}
<Label label={tracker.string.CapacityValue} params={{ value: capacity }} />
{/if}
</div>
</FixedColumn>
{/if}

View File

@ -19,6 +19,7 @@
ActionIcon,
AnyComponent,
Button,
Component,
IconAdd,
IconBack,
IconCheck,
@ -98,7 +99,7 @@
}}
on:click={() => dispatch('collapse')}
>
<div class="flex-row-center clear-mins">
<div class="flex-row-center clear-mins flex-grow">
{#if level === 0}
<div class="chevron"><IconCollapseArrow size={'small'} /></div>
{/if}
@ -152,6 +153,11 @@
{:else}
<span class="antiSection-header__counter ml-2">{items.length}</span>
{/if}
<div class="flex-row-center flex-reverse flex-grow">
{#each extraHeaders ?? [] as extra}
<Component is={extra} props={{ ...props, value: category, category: groupByKey, docs: items }} />
{/each}
</div>
</div>
{#if createItemDialog !== undefined && createItemLabel !== undefined}
<div class:on-hover={!mouseOver} class="flex-row-center">
@ -190,7 +196,7 @@
position: relative;
position: sticky;
top: 0;
padding: 0 0.75rem 0 0.75rem;
padding: 0 2.5rem 0 0.75rem;
height: 2.75rem;
min-height: 2.75rem;
min-width: 0;

View File

@ -118,6 +118,18 @@ test('my-issues', async ({ page }) => {
await expect(page.locator('.antiPanel-component')).not.toContainText(name)
})
function floorFractionDigits (n: number | string, amount: number): number {
return Number(Number(n).toFixed(amount))
}
function toTime (value: number): string {
if (value > 0 && value < 1) {
return `${floorFractionDigits(value * 8, 1)}h`
} else {
return `${floorFractionDigits(value, 1)}d`
}
}
test('report-time-from-issue-card', async ({ page }) => {
await navigate(page)
const assignee = 'Chen Rosamund'
@ -142,7 +154,7 @@ test('report-time-from-issue-card', async ({ page }) => {
await page.click('button:has-text("Create")')
await page.click('#card-close')
await expect(page.locator('#ReportedTimeEditor')).toContainText(`${time}d`)
await expect(page.locator('#ReportedTimeEditor')).toContainText(toTime(time))
}
})
@ -186,7 +198,7 @@ test('report-time-from-main-view', async ({ page }) => {
await page.click('button:has-text("Create")')
await page.click('#card-close')
await expect(page.locator('.estimation-container >> span').first()).toContainText(`${Number(count.toFixed(2))}d`)
await expect(page.locator('.estimation-container >> span').first()).toContainText(toTime(count))
}
})