From fd3cedbccf951441d658244b7236369710443302 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Thu, 26 Sep 2024 15:06:14 +0100 Subject: [PATCH 1/4] move premium badge to top of AI config, add AzureOpenAI logo --- .../builder/portal/settings/ai/index.svelte | 27 ++++++++++--------- .../settings/ai/logos/AzureOpenAI.svelte | 1 + .../builder/portal/settings/index.svelte | 7 ++++- 3 files changed, 22 insertions(+), 13 deletions(-) create mode 100644 packages/builder/src/pages/builder/portal/settings/ai/logos/AzureOpenAI.svelte diff --git a/packages/builder/src/pages/builder/portal/settings/ai/index.svelte b/packages/builder/src/pages/builder/portal/settings/ai/index.svelte index b60ea24dbc..f5fe106daa 100644 --- a/packages/builder/src/pages/builder/portal/settings/ai/index.svelte +++ b/packages/builder/src/pages/builder/portal/settings/ai/index.svelte @@ -127,18 +127,8 @@ - AI - {#if isCloud && !budibaseAIEnabled} - - Premium - - {/if} - Configure your AI settings within this section: - - - -
- AI Configurations +
+ AI {#if !isCloud && !customAIConfigsEnabled} Premium @@ -151,6 +141,13 @@ {/if}
+ Configure your AI settings within this section: + + + +
+ AI Configurations +
Use the following interface to select your preferred AI configuration. @@ -173,4 +170,10 @@ justify-content: space-between; align-items: center; } + + .header { + display: flex; + align-items: center; + gap: 12px; + } diff --git a/packages/builder/src/pages/builder/portal/settings/ai/logos/AzureOpenAI.svelte b/packages/builder/src/pages/builder/portal/settings/ai/logos/AzureOpenAI.svelte new file mode 100644 index 0000000000..ca727c2ed1 --- /dev/null +++ b/packages/builder/src/pages/builder/portal/settings/ai/logos/AzureOpenAI.svelte @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/builder/src/pages/builder/portal/settings/index.svelte b/packages/builder/src/pages/builder/portal/settings/index.svelte index 09ead3e410..1448b43ec4 100644 --- a/packages/builder/src/pages/builder/portal/settings/index.svelte +++ b/packages/builder/src/pages/builder/portal/settings/index.svelte @@ -1,5 +1,10 @@ From e65a9157ccfe2abf51c4d1609a2c4b3be0b9f1a5 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Thu, 26 Sep 2024 17:14:20 +0100 Subject: [PATCH 2/4] opacity/custom config updates, fix tests --- .../portal/settings/ai/AIConfigTile.svelte | 6 +- .../portal/settings/ai/AISettings.spec.js | 38 ++++++----- .../portal/settings/ai/ConfigModal.svelte | 6 +- .../builder/portal/settings/ai/constants.js | 2 +- .../builder/portal/settings/ai/index.svelte | 53 +++++++++------ .../settings/ai/logos/AzureOpenAI.svelte | 65 ++++++++++++++++++- 6 files changed, 127 insertions(+), 43 deletions(-) diff --git a/packages/builder/src/pages/builder/portal/settings/ai/AIConfigTile.svelte b/packages/builder/src/pages/builder/portal/settings/ai/AIConfigTile.svelte index 2907919ce7..a95d14b273 100644 --- a/packages/builder/src/pages/builder/portal/settings/ai/AIConfigTile.svelte +++ b/packages/builder/src/pages/builder/portal/settings/ai/AIConfigTile.svelte @@ -4,6 +4,7 @@ import OpenAILogo from "./logos/OpenAI.svelte" import AnthropicLogo from "./logos/Anthropic.svelte" import TogetherAILogo from "./logos/TogetherAI.svelte" + import AzureOpenAILogo from "./logos/AzureOpenAI.svelte" import { Providers } from "./constants" const logos = { @@ -11,6 +12,7 @@ [Providers.OpenAI.name]: OpenAILogo, [Providers.Anthropic.name]: AnthropicLogo, [Providers.TogetherAI.name]: TogetherAILogo, + [Providers.AzureOpenAI.name]: AzureOpenAILogo, } export let config @@ -26,8 +28,8 @@
diff --git a/packages/builder/src/pages/builder/portal/settings/ai/AISettings.spec.js b/packages/builder/src/pages/builder/portal/settings/ai/AISettings.spec.js index fafead1ebf..300d5d5369 100644 --- a/packages/builder/src/pages/builder/portal/settings/ai/AISettings.spec.js +++ b/packages/builder/src/pages/builder/portal/settings/ai/AISettings.spec.js @@ -1,6 +1,6 @@ import { it, expect, describe, vi } from "vitest" import AISettings from "./index.svelte" -import { render } from "@testing-library/svelte" +import { render, fireEvent } from "@testing-library/svelte" import { admin, licensing } from "stores/portal" import { notifications } from "@budibase/bbui" @@ -55,39 +55,43 @@ describe("AISettings", () => { expect(enterpriseTag).toBeInTheDocument() }) - it("should show the premium label on cloud when Budibase AI isn't enabled", async () => { - setupEnv(Hosting.Cloud) - instance = render(AISettings, {}) - const premiumTag = instance.queryByText("Premium") - expect(premiumTag).toBeInTheDocument() - }) - - it("should not show the add configuration button if the user doesn't have the correct license on cloud", async () => { + it("the add configuration button should not do anything the user doesn't have the correct license on cloud", async () => { let addConfigurationButton + let configModal setupEnv(Hosting.Cloud) instance = render(AISettings) addConfigurationButton = instance.queryByText("Add configuration") - expect(addConfigurationButton).not.toBeInTheDocument() + expect(addConfigurationButton).toBeInTheDocument() + await fireEvent.click(addConfigurationButton) + configModal = instance.queryByText("Custom AI Configuration") + expect(configModal).not.toBeInTheDocument() + }) + + it("the add configuration button should open the config modal if the user has the correct license on cloud", async () => { + let addConfigurationButton + let configModal setupEnv(Hosting.Cloud, { customAIConfigsEnabled: true }) instance = render(AISettings) addConfigurationButton = instance.queryByText("Add configuration") expect(addConfigurationButton).toBeInTheDocument() + await fireEvent.click(addConfigurationButton) + configModal = instance.queryByText("Custom AI Configuration") + expect(configModal).toBeInTheDocument() }) - it("should not show the add configuration button if the user doesn't have the correct license on self host", async () => { + it("the add configuration button should open the config modal if the user has the correct license on self host", async () => { let addConfigurationButton - - setupEnv(Hosting.Self) - instance = render(AISettings) - addConfigurationButton = instance.queryByText("Add configuration") - expect(addConfigurationButton).not.toBeInTheDocument() + let configModal setupEnv(Hosting.Self, { customAIConfigsEnabled: true }) - instance = render(AISettings, {}) + instance = render(AISettings) addConfigurationButton = instance.queryByText("Add configuration") expect(addConfigurationButton).toBeInTheDocument() + await fireEvent.click(addConfigurationButton) + configModal = instance.queryByText("Custom AI Configuration") + expect(configModal).toBeInTheDocument() }) }) }) diff --git a/packages/builder/src/pages/builder/portal/settings/ai/ConfigModal.svelte b/packages/builder/src/pages/builder/portal/settings/ai/ConfigModal.svelte index d480689028..26e7a1606c 100644 --- a/packages/builder/src/pages/builder/portal/settings/ai/ConfigModal.svelte +++ b/packages/builder/src/pages/builder/portal/settings/ai/ConfigModal.svelte @@ -84,8 +84,10 @@
- - +
+ + +