From b007ab3df179811486270161b725ea8f8e072743 Mon Sep 17 00:00:00 2001
From: Michael Wedl <michael@syslifters.com>
Date: Fri, 22 Dec 2023 06:39:41 +0100
Subject: [PATCH 1/2] Rework add finding button

---
 frontend/src/components/CreateFindingDialog.vue |  4 ++++
 .../pages/projects/[projectId]/reporting.vue    | 17 ++++++++++++++---
 2 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/frontend/src/components/CreateFindingDialog.vue b/frontend/src/components/CreateFindingDialog.vue
index 1f1b156c7..5a26ef552 100644
--- a/frontend/src/components/CreateFindingDialog.vue
+++ b/frontend/src/components/CreateFindingDialog.vue
@@ -163,6 +163,10 @@ function onKeydown(event: KeyboardEvent) {
     searchInput.value = null;
   }
 }
+
+defineExpose({
+  open: () => { dialogVisible.value = true },
+});
 </script>
 
 <style lang="scss" scoped>
diff --git a/frontend/src/pages/projects/[projectId]/reporting.vue b/frontend/src/pages/projects/[projectId]/reporting.vue
index 3b595deb9..d69c31204 100644
--- a/frontend/src/pages/projects/[projectId]/reporting.vue
+++ b/frontend/src/pages/projects/[projectId]/reporting.vue
@@ -29,15 +29,26 @@
 
           <v-list-subheader>
             <span>Findings</span>
+            <s-btn-icon
+              @click="($refs.createFindingDialogRef as any)!.open()"
+              :disabled="project.readonly"
+              size="small"
+              density="compact"
+              class="ml-2"
+            >
+              <v-icon icon="mdi-plus" />
+              <s-tooltip activator="parent" location="top">Add Finding (Ctrl+J)</s-tooltip>
+            </s-btn-icon>
             <v-spacer />
             <s-btn-icon
               v-if="projectType.finding_ordering.length > 0"
               @click="toggleOverrideFindingOrder"
               :disabled="project.readonly"
-              size="x-small"
+              size="small"
+              density="compact"
             >
               <v-icon :icon="project.override_finding_order ? 'mdi-sort-variant-off' : 'mdi-sort-variant'" />
-              <s-tooltip activator="parent">
+              <s-tooltip activator="parent" location="top">
                 <span v-if="project.override_finding_order">Custom order</span>
                 <span v-else>Default order</span>
               </s-tooltip>
@@ -83,7 +94,7 @@
         <div>
           <v-divider class="mb-1" />
           <v-list-item>
-            <create-finding-dialog :project="project" />
+            <create-finding-dialog ref="createFindingDialogRef" :project="project" />
           </v-list-item>
         </div>
       </v-list>

From 5e26478f2c1936864690e8d144b0ee12a1f68320 Mon Sep 17 00:00:00 2001
From: Michael Wedl <michael@syslifters.com>
Date: Fri, 22 Dec 2023 09:01:39 +0100
Subject: [PATCH 2/2] Move add note button to top

---
 frontend/src/components/Btn/Confirm.vue       |  1 -
 frontend/src/layouts/default.vue              |  2 +-
 frontend/src/pages/notes/personal.vue         | 26 ++++++++-----------
 .../src/pages/projects/[projectId]/notes.vue  | 22 ++++++++--------
 .../pages/projects/[projectId]/reporting.vue  |  2 ++
 5 files changed, 25 insertions(+), 28 deletions(-)

diff --git a/frontend/src/components/Btn/Confirm.vue b/frontend/src/components/Btn/Confirm.vue
index c4c24ea80..55e993ed1 100644
--- a/frontend/src/components/Btn/Confirm.vue
+++ b/frontend/src/components/Btn/Confirm.vue
@@ -32,7 +32,6 @@
             :loading="actionInProgress"
             :disabled="disabled"
             :color="($attrs.color as string|undefined) || buttonColor || 'secondary'"
-            class="ml-1 mr-1"
             @click="!props.confirm ? performAction() : null"
             v-bind="{...$attrs, ...tooltipProps, ...dialogProps}"
           />
diff --git a/frontend/src/layouts/default.vue b/frontend/src/layouts/default.vue
index ccedd3e25..c7dcc4545 100644
--- a/frontend/src/layouts/default.vue
+++ b/frontend/src/layouts/default.vue
@@ -27,7 +27,7 @@
         :active="false"
       >
         <v-icon icon="mdi-notebook" />
-        <s-tooltip activator="parent" location="bottom" text="Notes" />
+        <s-tooltip activator="parent" location="bottom" text="Personal Notes" />
       </s-btn-icon>
       <notification-menu-item v-if="auth.loggedIn.value" />
       <s-btn-icon href="https://docs.sysreptor.com/" target="_blank">
diff --git a/frontend/src/pages/notes/personal.vue b/frontend/src/pages/notes/personal.vue
index e033dbacb..0f39e4637 100644
--- a/frontend/src/pages/notes/personal.vue
+++ b/frontend/src/pages/notes/personal.vue
@@ -1,21 +1,8 @@
 <template>
   <split-menu v-model="localSettings.notebookInputMenuSize" :content-props="{ class: 'pa-0 h-100' }">
     <template #menu>
-      <v-list density="compact" class="pb-0 h-100 d-flex flex-column">
+      <v-list density="compact" class="pt-0 pb-0 h-100 d-flex flex-column">
         <div>
-          <v-list-item-title class="text-h6 pl-2">Personal Notes</v-list-item-title>
-        </div>
-
-        <notes-sortable-list
-          :model-value="noteGroups"
-          @update:model-value="updateNoteOrder"
-          @update:note="updateNote"
-          to-prefix="/notes/personal/"
-          class="flex-grow-1 overflow-y-auto"
-        />
-
-        <div>
-          <v-divider />
           <v-list-item>
             <btn-confirm
               :action="createNote"
@@ -28,7 +15,16 @@
               block
             />
           </v-list-item>
+          <v-divider />
         </div>
+
+        <notes-sortable-list
+          :model-value="noteGroups"
+          @update:model-value="updateNoteOrder"
+          @update:note="updateNote"
+          to-prefix="/notes/personal/"
+          class="flex-grow-1 overflow-y-auto"
+        />
       </v-list>
     </template>
 
@@ -47,7 +43,7 @@ const userNotesStore = useUserNotesStore();
 
 useHeadExtended({
   titleTemplate: (title?: string|null) => userNotesTitleTemplate(title, route),
-  breadcrumbs: () => [{ title: 'Notes', to: '/notes/personal/' }],
+  breadcrumbs: () => [{ title: 'Personal Notes', to: '/notes/personal/' }],
 });
 
 await useAsyncDataE(async () => await userNotesStore.fetchNotes());
diff --git a/frontend/src/pages/projects/[projectId]/notes.vue b/frontend/src/pages/projects/[projectId]/notes.vue
index f64186f01..48c2fa682 100644
--- a/frontend/src/pages/projects/[projectId]/notes.vue
+++ b/frontend/src/pages/projects/[projectId]/notes.vue
@@ -1,18 +1,8 @@
 <template>
   <split-menu v-model="localSettings.notebookInputMenuSize" :content-props="{ class: 'pa-0 h-100' }">
     <template #menu>
-      <v-list density="compact" class="pb-0 h-100 d-flex flex-column">
-        <notes-sortable-list
-          :model-value="noteGroups"
-          @update:model-value="updateNoteOrder"
-          @update:note="updateNote"
-          :disabled="project.readonly"
-          :to-prefix="`/projects/${$route.params.projectId}/notes/`"
-          class="flex-grow-1 overflow-y-auto"
-        />
-
+      <v-list density="compact" class="pt-0 pb-0 h-100 d-flex flex-column">
         <div>
-          <v-divider />
           <v-list-item>
             <btn-confirm
               :action="createNote"
@@ -24,9 +14,19 @@
               keyboard-shortcut="ctrl+j"
               size="small"
               block
+              class="ma-0"
             />
           </v-list-item>
+          <v-divider />
         </div>
+        <notes-sortable-list
+          :model-value="noteGroups"
+          @update:model-value="updateNoteOrder"
+          @update:note="updateNote"
+          :disabled="project.readonly"
+          :to-prefix="`/projects/${$route.params.projectId}/notes/`"
+          class="flex-grow-1 overflow-y-auto"
+        />
       </v-list>
     </template>
 
diff --git a/frontend/src/pages/projects/[projectId]/reporting.vue b/frontend/src/pages/projects/[projectId]/reporting.vue
index d69c31204..329a171b8 100644
--- a/frontend/src/pages/projects/[projectId]/reporting.vue
+++ b/frontend/src/pages/projects/[projectId]/reporting.vue
@@ -33,6 +33,8 @@
               @click="($refs.createFindingDialogRef as any)!.open()"
               :disabled="project.readonly"
               size="small"
+              variant="flat"
+              color="secondary"
               density="compact"
               class="ml-2"
             >