From dc33520cbbd20c18d92ffc9e953b69012d8074bc Mon Sep 17 00:00:00 2001 From: Sergei Ogorelkov Date: Thu, 12 May 2022 19:03:14 +0700 Subject: [PATCH 01/12] Tracker: split "edit issue" dialog to preview / edit (#1272) Signed-off-by: Sergei Ogorelkov --- packages/panel/src/components/Panel.svelte | 7 +- packages/ui/src/components/Panel.svelte | 53 ++-- plugins/tracker-assets/lang/en.json | 5 +- plugins/tracker-assets/lang/ru.json | 4 +- plugins/tracker-resources/package.json | 3 +- .../src/components/issues/EditIssue.svelte | 275 ------------------ .../components/issues/IssuePresenter.svelte | 6 +- .../components/issues/PriorityEditor.svelte | 9 +- .../src/components/issues/StatusEditor.svelte | 9 +- .../issues/edit/ControlPanel.svelte | 153 ++++++++++ .../issues/edit/CopyToClipboard.svelte | 61 ++++ .../components/issues/edit/EditIssue.svelte | 163 +++++++++++ .../issues/edit/PreviewIssue.svelte | 162 +++++++++++ plugins/tracker-resources/src/index.ts | 4 +- plugins/tracker-resources/src/plugin.ts | 6 +- 15 files changed, 608 insertions(+), 312 deletions(-) delete mode 100644 plugins/tracker-resources/src/components/issues/EditIssue.svelte create mode 100644 plugins/tracker-resources/src/components/issues/edit/ControlPanel.svelte create mode 100644 plugins/tracker-resources/src/components/issues/edit/CopyToClipboard.svelte create mode 100644 plugins/tracker-resources/src/components/issues/edit/EditIssue.svelte create mode 100644 plugins/tracker-resources/src/components/issues/edit/PreviewIssue.svelte diff --git a/packages/panel/src/components/Panel.svelte b/packages/panel/src/components/Panel.svelte index 9b85807ef68..a46b10068fc 100644 --- a/packages/panel/src/components/Panel.svelte +++ b/packages/panel/src/components/Panel.svelte @@ -28,13 +28,14 @@ export let object: Doc export let panelWidth: number = 0 export let innerWidth: number = 0 + export let isTitle: boolean = true export let isHeader: boolean = true export let isSub: boolean = true export let isAside: boolean = true export let isCustomAttr: boolean = true - +
{#if $$slots.navigator} @@ -97,7 +98,9 @@ {#if withoutActivity} - +
+ +
{:else}
diff --git a/packages/ui/src/components/Panel.svelte b/packages/ui/src/components/Panel.svelte index 3388034c32b..41cab5cfcbf 100644 --- a/packages/ui/src/components/Panel.svelte +++ b/packages/ui/src/components/Panel.svelte @@ -18,6 +18,7 @@ export let innerWidth: number = 0 export let panelWidth: number = 0 + export let isTitle: boolean = true export let isHeader: boolean = true export let isAside: boolean = true @@ -33,32 +34,34 @@
-
-
-
+ {/if}
{#if $$slots.header && isHeader} diff --git a/plugins/tracker-assets/lang/en.json b/plugins/tracker-assets/lang/en.json index 972eb0e4dce..5885a674389 100644 --- a/plugins/tracker-assets/lang/en.json +++ b/plugins/tracker-assets/lang/en.json @@ -96,6 +96,7 @@ "PastMonth": "Past month", "CopyIssueUrl": "Copy Issue URL to clipboard", "CopyIssueId": "Copy Issue ID to clipboard", + "CopyIssueBranch": "Copy Git branch name to clipboard", "GotoIssues": "Go to issues", "GotoActive": "Go to active issues", @@ -109,7 +110,9 @@ "FilterIs": "is", "FilterIsNot": "is not", "FilterIsEither": "is either of", - "FilterStatesCount": "{value, plural, =1 {1 state} other {# states}}" + "FilterStatesCount": "{value, plural, =1 {1 state} other {# states}}", + + "EditIssue": "Edit {title}" }, "status": {} } \ No newline at end of file diff --git a/plugins/tracker-assets/lang/ru.json b/plugins/tracker-assets/lang/ru.json index a8d9273d25a..72f507d607a 100644 --- a/plugins/tracker-assets/lang/ru.json +++ b/plugins/tracker-assets/lang/ru.json @@ -73,7 +73,9 @@ "GotoBacklog": "Перейти к пулу задач", "GotoBoard": "Перейти к канбану", "GotoProjects": "Перейти к проекту", - "GotoTrackerApplication": "Перейти к приложению Трекер" + "GotoTrackerApplication": "Перейти к приложению Трекер", + + "EditIssue": "Редактирование {title}" }, "status": {} } diff --git a/plugins/tracker-resources/package.json b/plugins/tracker-resources/package.json index 02281014ed9..7d5e64a932d 100644 --- a/plugins/tracker-resources/package.json +++ b/plugins/tracker-resources/package.json @@ -49,6 +49,7 @@ "@anticrm/view-resources": "~0.6.0", "@anticrm/text-editor": "~0.6.0", "@anticrm/panel": "~0.6.0", - "@anticrm/kanban": "~0.6.0" + "@anticrm/kanban": "~0.6.0", + "@anticrm/attachment-resources": "~0.6.0" } } diff --git a/plugins/tracker-resources/src/components/issues/EditIssue.svelte b/plugins/tracker-resources/src/components/issues/EditIssue.svelte deleted file mode 100644 index b7920de460f..00000000000 --- a/plugins/tracker-resources/src/components/issues/EditIssue.svelte +++ /dev/null @@ -1,275 +0,0 @@ - - - -{#if issue !== undefined} - { - dispatch('close') - }} - > - Custom Title - -
- {#if currentTeam} - - {/if} -
-
-
-
- -
- {/if} - - -{/if} - - diff --git a/plugins/tracker-resources/src/components/issues/IssuePresenter.svelte b/plugins/tracker-resources/src/components/issues/IssuePresenter.svelte index 1d1f8da544c..b4418519249 100644 --- a/plugins/tracker-resources/src/components/issues/IssuePresenter.svelte +++ b/plugins/tracker-resources/src/components/issues/IssuePresenter.svelte @@ -27,13 +27,13 @@ $: issueName = `${currentTeam.identifier}-${value.number}` - const handleIssueEditorOpened = () => { - showPanel(tracker.component.EditIssue, value._id, value._class, 'content') + const handleIssuePreviewOpened = () => { + showPanel(tracker.component.PreviewIssue, value._id, value._class, 'content') } {#if value && shortLabel} -
+
diff --git a/plugins/tracker-resources/src/components/issues/PriorityEditor.svelte b/plugins/tracker-resources/src/components/issues/PriorityEditor.svelte index 19adf94ae33..6a1c3e979ac 100644 --- a/plugins/tracker-resources/src/components/issues/PriorityEditor.svelte +++ b/plugins/tracker-resources/src/components/issues/PriorityEditor.svelte @@ -20,11 +20,13 @@ import type { ButtonKind, ButtonSize } from '@anticrm/ui' import tracker from '../../plugin' import PrioritySelector from '../PrioritySelector.svelte' + import { createEventDispatcher } from 'svelte' export let value: Issue export let currentSpace: Ref | undefined = undefined export let isEditable: boolean = true export let shouldShowLabel: boolean = false + export let shouldSaveOnChange = true export let kind: ButtonKind = 'link' export let size: ButtonSize = 'large' @@ -32,9 +34,14 @@ export let width: string | undefined = '100%' const client = getClient() + const dispatch = createEventDispatcher() const handlePriorityChanged = async (newPriority: IssuePriority | undefined) => { - if (!isEditable || newPriority === undefined) { + if (isEditable) { + dispatch('change', newPriority) + } + + if (!shouldSaveOnChange || !isEditable || newPriority === undefined) { return } diff --git a/plugins/tracker-resources/src/components/issues/StatusEditor.svelte b/plugins/tracker-resources/src/components/issues/StatusEditor.svelte index bff4410fc39..d0e4b2fce93 100644 --- a/plugins/tracker-resources/src/components/issues/StatusEditor.svelte +++ b/plugins/tracker-resources/src/components/issues/StatusEditor.svelte @@ -20,12 +20,14 @@ import type { ButtonKind, ButtonSize } from '@anticrm/ui' import tracker from '../../plugin' import StatusSelector from '../StatusSelector.svelte' + import { createEventDispatcher } from 'svelte' export let value: Issue export let statuses: WithLookup[] export let currentSpace: Ref | undefined = undefined export let isEditable: boolean = true export let shouldShowLabel: boolean = false + export let shouldSaveOnChange = true export let kind: ButtonKind = 'link' export let size: ButtonSize = 'large' @@ -33,9 +35,14 @@ export let width: string | undefined = '100%' const client = getClient() + const dispatch = createEventDispatcher() const handleStatusChanged = async (newStatus: Ref | undefined) => { - if (!isEditable || newStatus === undefined) { + if (isEditable) { + dispatch('change', newStatus) + } + + if (!isEditable || !shouldSaveOnChange || newStatus === undefined) { return } diff --git a/plugins/tracker-resources/src/components/issues/edit/ControlPanel.svelte b/plugins/tracker-resources/src/components/issues/edit/ControlPanel.svelte new file mode 100644 index 00000000000..569e78c96cf --- /dev/null +++ b/plugins/tracker-resources/src/components/issues/edit/ControlPanel.svelte @@ -0,0 +1,153 @@ + + + +{#if direction === 'column'} +
+ + + detail && change('status', detail)} + /> + + + + detail !== undefined && change('priority', detail)} + /> + + + + change('assignee', detail)} + /> + + + +
+{/if} + + diff --git a/plugins/tracker-resources/src/components/issues/edit/CopyToClipboard.svelte b/plugins/tracker-resources/src/components/issues/edit/CopyToClipboard.svelte new file mode 100644 index 00000000000..924771de662 --- /dev/null +++ b/plugins/tracker-resources/src/components/issues/edit/CopyToClipboard.svelte @@ -0,0 +1,61 @@ + + + +{#if issueUrl} +
+
+ + +
+
+
- {/if} +
{#if $$slots.header && isHeader} diff --git a/plugins/tracker-resources/src/components/issues/edit/EditIssue.svelte b/plugins/tracker-resources/src/components/issues/edit/EditIssue.svelte index f2f28bcbf87..5505244a88b 100644 --- a/plugins/tracker-resources/src/components/issues/edit/EditIssue.svelte +++ b/plugins/tracker-resources/src/components/issues/edit/EditIssue.svelte @@ -109,7 +109,6 @@ object={updatedIssue} isHeader withoutActivity - isTitle={false} isAside={true} isSub={false} bind:innerWidth From 960ea59ed1436754d184960317ed2c6d92a23479 Mon Sep 17 00:00:00 2001 From: Sergei Ogorelkov Date: Fri, 13 May 2022 12:13:03 +0700 Subject: [PATCH 05/12] Remove "row" mode from the "EditIssue" control panel Signed-off-by: Sergei Ogorelkov --- .../issues/edit/ControlPanel.svelte | 155 ++++++++---------- 1 file changed, 68 insertions(+), 87 deletions(-) diff --git a/plugins/tracker-resources/src/components/issues/edit/ControlPanel.svelte b/plugins/tracker-resources/src/components/issues/edit/ControlPanel.svelte index 569e78c96cf..5ae046d61c3 100644 --- a/plugins/tracker-resources/src/components/issues/edit/ControlPanel.svelte +++ b/plugins/tracker-resources/src/components/issues/edit/ControlPanel.svelte @@ -36,101 +36,82 @@ } -{#if direction === 'column'} -
- - - detail && change('status', detail)} - /> +
+ + + detail && change('status', detail)} + /> - - - detail !== undefined && change('priority', detail)} - /> + + + detail !== undefined && change('priority', detail)} + /> - - - change('assignee', detail)} - /> + + + change('assignee', detail)} + /> - - -
-{/if} + change('dueDate', detail)} /> + {/if} +
\ No newline at end of file diff --git a/plugins/tracker-resources/src/components/issues/edit/ControlPanel.svelte b/plugins/tracker-resources/src/components/issues/edit/ControlPanel.svelte index 5ae046d61c3..dd19975fd0e 100644 --- a/plugins/tracker-resources/src/components/issues/edit/ControlPanel.svelte +++ b/plugins/tracker-resources/src/components/issues/edit/ControlPanel.svelte @@ -27,7 +27,6 @@ export let teamId: Ref export let issue: Issue export let issueStatuses: WithLookup[] - export let direction: string const dispatch = createEventDispatcher() diff --git a/plugins/tracker-resources/src/components/issues/edit/EditIssue.svelte b/plugins/tracker-resources/src/components/issues/edit/EditIssue.svelte index 5505244a88b..821b8a05d50 100644 --- a/plugins/tracker-resources/src/components/issues/edit/EditIssue.svelte +++ b/plugins/tracker-resources/src/components/issues/edit/EditIssue.svelte @@ -14,15 +14,17 @@ --> -{#if updatedIssue} +{#if issue !== undefined} { - dispatch('close') - }} + on:close={() => dispatch('close')} > + +
+
+
+
+
+ +
-
-
- -