Added basic grouping to automations side panel

This commit is contained in:
Dean 2024-07-02 11:05:35 +01:00
parent 7bd6615144
commit 199d597786
1 changed files with 44 additions and 12 deletions

View File

@ -1,6 +1,6 @@
<script> <script>
import CreateAutomationModal from "./CreateAutomationModal.svelte" import CreateAutomationModal from "./CreateAutomationModal.svelte"
import { Modal, notifications, Layout } from "@budibase/bbui" import { Modal, notifications, Layout, Icon } from "@budibase/bbui"
import NavHeader from "components/common/NavHeader.svelte" import NavHeader from "components/common/NavHeader.svelte"
import { onMount } from "svelte" import { onMount } from "svelte"
import { import {
@ -30,6 +30,18 @@
return lowerA > lowerB ? 1 : -1 return lowerA > lowerB ? 1 : -1
}) })
$: groupedAutomations = filteredAutomations.reduce((acc, auto) => {
acc[auto.definition.trigger.event] = acc[auto.definition.trigger.event] || {
icon: auto.definition.trigger.icon,
name: auto.definition.trigger.name,
entries: [],
}
acc[auto.definition.trigger.event].entries.push(auto)
return acc
}, {})
$: console.log("grouped ", Object.entries(groupedAutomations))
$: showNoResults = searchString && !filteredAutomations.length $: showNoResults = searchString && !filteredAutomations.length
onMount(async () => { onMount(async () => {
@ -55,8 +67,15 @@
/> />
</div> </div>
<div class="side-bar-nav"> <div class="side-bar-nav">
{#each filteredAutomations as automation} {#each Object.values(groupedAutomations || {}) as triggerGroup}
<div class="nav-group">
<div class="nav-group-header" title={triggerGroup?.name.toUpperCase()}>
{triggerGroup?.name.toUpperCase()}
</div>
{#each triggerGroup.entries as automation}
<NavItem <NavItem
icon={triggerGroup.icon}
iconColor={"var(--spectrum-global-color-gray-900)"}
text={automation.name} text={automation.name}
selected={automation._id === selectedAutomationId} selected={automation._id === selectedAutomationId}
on:click={() => selectAutomation(automation._id)} on:click={() => selectAutomation(automation._id)}
@ -66,6 +85,8 @@
<EditAutomationPopover {automation} /> <EditAutomationPopover {automation} />
</NavItem> </NavItem>
{/each} {/each}
</div>
{/each}
{#if showNoResults} {#if showNoResults}
<Layout paddingY="none" paddingX="L"> <Layout paddingY="none" paddingX="L">
@ -82,6 +103,17 @@
</Modal> </Modal>
<style> <style>
.nav-group {
padding-top: var(--spacing-l);
}
.nav-group-header {
color: var(--spectrum-global-color-gray-600);
padding: 0px calc(var(--spacing-l) + 4px);
padding-bottom: var(--spacing-l);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.side-bar { .side-bar {
flex: 0 0 260px; flex: 0 0 260px;
display: flex; display: flex;
@ -104,7 +136,7 @@
justify-content: flex-start; justify-content: flex-start;
align-items: center; align-items: center;
gap: var(--spacing-l); gap: var(--spacing-l);
padding: 0 var(--spacing-l); padding: 0 calc(var(--spacing-l) + 4px);
} }
.side-bar-nav { .side-bar-nav {
flex: 1 1 auto; flex: 1 1 auto;