further syntax highlighting updates
This commit is contained in:
parent
23d83739b0
commit
d05f1666fc
|
@ -8,6 +8,7 @@
|
||||||
import EditQueryPopover from "./popovers/EditQueryPopover.svelte"
|
import EditQueryPopover from "./popovers/EditQueryPopover.svelte"
|
||||||
import { Modal, Switcher } from "@budibase/bbui"
|
import { Modal, Switcher } from "@budibase/bbui"
|
||||||
import NavItem from "components/common/NavItem.svelte"
|
import NavItem from "components/common/NavItem.svelte"
|
||||||
|
import ICONS from "./icons"
|
||||||
|
|
||||||
$: selectedView =
|
$: selectedView =
|
||||||
$backendUiStore.selectedView && $backendUiStore.selectedView.name
|
$backendUiStore.selectedView && $backendUiStore.selectedView.name
|
||||||
|
@ -37,10 +38,15 @@
|
||||||
{#each $backendUiStore.datasources as datasource, idx}
|
{#each $backendUiStore.datasources as datasource, idx}
|
||||||
<NavItem
|
<NavItem
|
||||||
border={idx > 0}
|
border={idx > 0}
|
||||||
icon={'ri-database-2-line'}
|
|
||||||
text={datasource.name}
|
text={datasource.name}
|
||||||
selected={$backendUiStore.selectedDatasourceId === datasource._id}
|
selected={$backendUiStore.selectedDatasourceId === datasource._id}
|
||||||
on:click={() => selectDatasource(datasource)}>
|
on:click={() => selectDatasource(datasource)}>
|
||||||
|
<div class="datasource-icon" slot="icon">
|
||||||
|
<svelte:component
|
||||||
|
this={ICONS[datasource.source]}
|
||||||
|
height="15"
|
||||||
|
width="15" />
|
||||||
|
</div>
|
||||||
<EditDatasourcePopover {datasource} />
|
<EditDatasourcePopover {datasource} />
|
||||||
</NavItem>
|
</NavItem>
|
||||||
{#each $backendUiStore.queries.filter(query => query.datasourceId === datasource._id) as query}
|
{#each $backendUiStore.queries.filter(query => query.datasourceId === datasource._id) as query}
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
import { onMount } from "svelte"
|
import { onMount } from "svelte"
|
||||||
import { Input, TextArea, Spacer } from "@budibase/bbui"
|
import { Input, TextArea, Spacer } from "@budibase/bbui"
|
||||||
import api from "builderStore/api"
|
import api from "builderStore/api"
|
||||||
|
import ICONS from "../icons"
|
||||||
|
|
||||||
const INTEGRATION_ICON_MAP = {
|
const INTEGRATION_ICON_MAP = {
|
||||||
POSTGRES: "ri-database-2-line",
|
POSTGRES: "ri-database-2-line",
|
||||||
|
@ -10,7 +11,7 @@
|
||||||
export let integration = {}
|
export let integration = {}
|
||||||
|
|
||||||
let integrationsPromise = fetchIntegrations()
|
let integrationsPromise = fetchIntegrations()
|
||||||
let selectedIntegration
|
let selectedIntegrationConfig
|
||||||
let integrations = []
|
let integrations = []
|
||||||
|
|
||||||
async function fetchIntegrations() {
|
async function fetchIntegrations() {
|
||||||
|
@ -32,28 +33,31 @@
|
||||||
class="integration hoverable"
|
class="integration hoverable"
|
||||||
class:selected={integration.type === integrationType}
|
class:selected={integration.type === integrationType}
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
selectedIntegration = integrations[integrationType].datasource
|
selectedIntegrationConfig = integrations[integrationType].datasource
|
||||||
integration = { type: integrationType, ...Object.keys(selectedIntegration).reduce(
|
integration = { type: integrationType, ...Object.keys(selectedIntegrationConfig).reduce(
|
||||||
(acc, next) => {
|
(acc, next) => {
|
||||||
return {
|
return {
|
||||||
...acc,
|
...acc,
|
||||||
[next]: selectedIntegration[next].default,
|
[next]: selectedIntegrationConfig[next].default,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{}
|
{}
|
||||||
) }
|
) }
|
||||||
}}>
|
}}>
|
||||||
<i class="ri-database-2-line" />
|
<svelte:component
|
||||||
|
this={ICONS[integrationType]}
|
||||||
|
height="100"
|
||||||
|
width="100" />
|
||||||
<span>{integrationType}</span>
|
<span>{integrationType}</span>
|
||||||
</div>
|
</div>
|
||||||
{/each}
|
{/each}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{#if selectedIntegration}
|
{#if selectedIntegrationConfig}
|
||||||
{#each Object.keys(selectedIntegration) as configKey}
|
{#each Object.keys(selectedIntegrationConfig) as configKey}
|
||||||
<Input
|
<Input
|
||||||
thin
|
thin
|
||||||
type={selectedIntegration[configKey].type}
|
type={selectedIntegrationConfig[configKey].type}
|
||||||
label={configKey}
|
label={configKey}
|
||||||
bind:value={integration[configKey]} />
|
bind:value={integration[configKey]} />
|
||||||
<Spacer medium />
|
<Spacer medium />
|
||||||
|
@ -79,10 +83,13 @@
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
transition: 0.3s all;
|
transition: 0.3s all;
|
||||||
border-radius: var(--border-radius-s);
|
border-radius: var(--border-radius-s);
|
||||||
|
height: 75px;
|
||||||
|
width: 200px;
|
||||||
}
|
}
|
||||||
|
|
||||||
span {
|
span {
|
||||||
font-size: var(--font-size-xs);
|
font-size: var(--font-size-xs);
|
||||||
|
margin-top: var(--spacing-m);
|
||||||
margin-bottom: var(--spacing-xs);
|
margin-bottom: var(--spacing-xs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
<script>
|
||||||
|
export let width = "100"
|
||||||
|
export let height = "100"
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<svg
|
||||||
|
{width}
|
||||||
|
{height}
|
||||||
|
viewBox="0 0 256 215"
|
||||||
|
fill="none"
|
||||||
|
xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g clip-path="url(#clip0)">
|
||||||
|
<path
|
||||||
|
d="M114.259 2.701L18.86 42.176C13.555 44.371 13.61 51.906 18.949
|
||||||
|
54.023L114.746 92.012C123.163 95.3503 132.537 95.3503 140.954
|
||||||
|
92.012L236.753 54.022C242.09 51.907 242.146 44.372 236.839 42.176L141.442
|
||||||
|
2.7C132.739 -0.901099 122.962 -0.901099 114.259 2.7"
|
||||||
|
fill="#FFBF00" />
|
||||||
|
<path
|
||||||
|
d="M136.35 112.757V207.659C136.35 212.173 140.9 215.264 145.096
|
||||||
|
213.601L251.844 172.166C253.034 171.694 254.056 170.875 254.775
|
||||||
|
169.816C255.495 168.757 255.879 167.506 255.879 166.225V71.322C255.879
|
||||||
|
66.808 251.328 63.718 247.132 65.381L140.384 106.815C139.194 107.287
|
||||||
|
138.172 108.106 137.453 109.166C136.734 110.225 136.349 111.476 136.349
|
||||||
|
112.757"
|
||||||
|
fill="#26B5F8" />
|
||||||
|
<path
|
||||||
|
d="M111.423 117.654L79.743 132.95L76.526 134.505L9.65 166.548C5.411
|
||||||
|
168.593 0 165.504 0 160.795V71.72C0 70.016 0.874 68.545 2.046
|
||||||
|
67.437C2.52616 66.9592 3.07076 66.5509 3.664 66.224C5.262 65.265 7.542
|
||||||
|
65.009 9.48 65.776L110.89 105.956C116.045 108.001 116.45 115.224 111.423
|
||||||
|
117.653"
|
||||||
|
fill="#ED3049" />
|
||||||
|
<path
|
||||||
|
d="M111.423 117.654L79.743 132.95L2.045 67.438C2.52516 66.9602 3.06976
|
||||||
|
66.5519 3.663 66.225C5.261 65.266 7.541 65.01 9.479 65.777L110.889
|
||||||
|
105.957C116.044 108.002 116.449 115.225 111.422 117.654"
|
||||||
|
fill="black"
|
||||||
|
fill-opacity="0.25" />
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<clipPath id="clip0">
|
||||||
|
<rect width="256" height="215" fill="white" />
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
|
@ -0,0 +1,35 @@
|
||||||
|
<script>
|
||||||
|
export let width = "100"
|
||||||
|
export let height = "100"
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<svg
|
||||||
|
{width}
|
||||||
|
{height}
|
||||||
|
viewBox="0 0 175 115"
|
||||||
|
fill="none"
|
||||||
|
xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path
|
||||||
|
d="M142.187 76.6667C142.187 83.9288 138.367 87.4876 131.249
|
||||||
|
87.6136V87.6184H43.7507V87.6136C36.6331 87.4876 32.8132 83.9288 32.8132
|
||||||
|
76.666C32.8132 69.4052 36.6331 65.845 43.7507
|
||||||
|
65.7204V65.7136H131.249V65.7204C138.367 65.845 142.187 69.4052 142.187
|
||||||
|
76.666V76.6667ZM131.249 93.1014V93.0952H43.7507V93.1021C36.6331 93.2267
|
||||||
|
32.8132 96.7869 32.8132 104.05C32.8132 111.312 36.6331 114.869 43.7507
|
||||||
|
114.995V115H131.249V114.993C138.367 114.869 142.187 111.31 142.187
|
||||||
|
104.048C142.187 96.7848 138.367 93.2267 131.249 93.1021V93.1014ZM158.593
|
||||||
|
32.8695V32.8633C151.477 32.9893 147.656 36.5481 147.656
|
||||||
|
43.8109V104.048C147.656 111.31 151.477 114.867 158.593
|
||||||
|
114.993V114.982C169.269 114.606 175 103.929 175 82.1429V54.7619C175 40.2384
|
||||||
|
169.269 33.1214 158.594 32.8688L158.593 32.8695ZM16.4062
|
||||||
|
32.8626V32.8695C5.73193 33.1207 0 40.2377 0 54.7619V82.1429C0 103.929
|
||||||
|
5.73125 114.605 16.4062 114.982V114.993C23.5238 114.869 27.3438 111.31
|
||||||
|
27.3438 104.048V43.8095C27.3438 36.5474 23.5238 32.9886 16.4062
|
||||||
|
32.8626ZM158.594 27.381C158.594 9.22533 149.042 0.328571 131.25
|
||||||
|
0.014375V0H43.75V0.014375C25.9595 0.329256 16.4062 9.22533 16.4062
|
||||||
|
27.3816V27.3905C27.0819 27.5788 32.8132 32.9167 32.8132 43.8102C32.8132
|
||||||
|
54.703 38.5444 60.0403 49.2194 60.2292V60.2381H125.782V60.2299C136.456
|
||||||
|
60.0416 142.187 54.7037 142.187 43.8109C142.187 32.9174 147.918 27.5795
|
||||||
|
158.593 27.3912V27.381H158.594Z"
|
||||||
|
fill="#E42528" />
|
||||||
|
</svg>
|
|
@ -0,0 +1,58 @@
|
||||||
|
<script>
|
||||||
|
export let width = "100"
|
||||||
|
export let height = "100"
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<svg
|
||||||
|
{width}
|
||||||
|
{height}
|
||||||
|
viewBox="0 0 256 289"
|
||||||
|
fill="none"
|
||||||
|
xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g clip-path="url(#clip0)">
|
||||||
|
<path
|
||||||
|
d="M165.258 288.501H168.766L226.027 259.867L226.98 258.52V29.964L226.027
|
||||||
|
28.61L168.766 0H165.215L165.258 288.501Z"
|
||||||
|
fill="#5294CF" />
|
||||||
|
<path
|
||||||
|
d="M90.741 288.501H87.184L29.972 259.867L28.811 257.87L28.222
|
||||||
|
31.128L29.972 28.61L87.184 0H90.785L90.741 288.501Z"
|
||||||
|
fill="#1F5B98" />
|
||||||
|
<path d="M87.285 0H168.711V288.501H87.285V0Z" fill="#2D72B8" />
|
||||||
|
<path
|
||||||
|
d="M256 137.769L254.065 137.34L226.437 134.764L226.027 134.968L168.715
|
||||||
|
132.676H87.285L29.972 134.968V91.264L29.912 91.296L29.972 91.168L87.285
|
||||||
|
77.888H168.715L226.027 91.168L247.096 102.367V95.167L256 94.193L255.078
|
||||||
|
92.395L226.886 72.236L226.027 72.515L168.715 54.756H87.285L29.972
|
||||||
|
72.515V28.61L0 63.723V94.389L0.232 94.221L8.904 95.167V102.515L0
|
||||||
|
107.28V137.793L0.232 137.769L8.904 137.897V150.704L1.422 150.816L0
|
||||||
|
150.68V181.205L8.904 185.993V193.426L0.373 194.368L0
|
||||||
|
194.088V224.749L29.972 259.867V215.966L87.285 233.725H168.715L226.196
|
||||||
|
215.914L226.96 216.249L254.781 196.387L256 194.408L247.096
|
||||||
|
193.426V186.142L245.929 185.676L226.886 195.941L226.196 197.381L168.715
|
||||||
|
210.584V210.6H87.285V210.584L29.972 197.325V153.461L87.285
|
||||||
|
155.745V155.801H168.715L226.027 153.461L227.332 154.061L254.111
|
||||||
|
151.755L256 150.832L247.096 150.704V137.897L256 137.769"
|
||||||
|
fill="#1A476F" />
|
||||||
|
<path
|
||||||
|
d="M226.027 215.966V259.867L256 224.749V194.288L226.2 215.914L226.027
|
||||||
|
215.966Z"
|
||||||
|
fill="#2D72B8" />
|
||||||
|
<path
|
||||||
|
d="M226.027 197.421L226.2 197.381L256 181.353V150.704L226.027
|
||||||
|
153.461V197.421"
|
||||||
|
fill="#2D72B8" />
|
||||||
|
<path
|
||||||
|
d="M226.2 91.208L226.027 91.168V134.968L256 137.769V107.135L226.2 91.208Z"
|
||||||
|
fill="#2D72B8" />
|
||||||
|
<path
|
||||||
|
d="M226.2 72.687L256 94.193V63.731L226.027 28.61V72.515L226.2
|
||||||
|
72.575V72.687Z"
|
||||||
|
fill="#2D72B8" />
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<clipPath id="clip0">
|
||||||
|
<rect width="256" height="289" fill="white" />
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
|
@ -0,0 +1,47 @@
|
||||||
|
<script>
|
||||||
|
export let width = "100"
|
||||||
|
export let height = "100"
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<svg
|
||||||
|
{width}
|
||||||
|
{height}
|
||||||
|
viewBox="0 0 128 143"
|
||||||
|
fill="none"
|
||||||
|
xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g clip-path="url(#clip0)">
|
||||||
|
<path
|
||||||
|
d="M7.172 40.0865H101.775C112.201 40.0865 121.51 35.3065 127.757
|
||||||
|
27.843C114.727 10.918 94.2765 0 71.265 0C43.089 0 18.738 16.3555 7.172
|
||||||
|
40.0865Z"
|
||||||
|
fill="#F0BF1A" />
|
||||||
|
<path
|
||||||
|
d="M93.7575 51.222H2.8775C0.969102 57.732 0.000154178 64.4811 0 71.265C0
|
||||||
|
78.227 1.0165 84.9485 2.8775 91.3085H93.7575C104.67 91.3085 113.801
|
||||||
|
82.4005 113.801 71.265C113.801 60.13 104.893 51.222 93.7575 51.222"
|
||||||
|
fill="#07A5DE" />
|
||||||
|
<path
|
||||||
|
d="M128 114.378C121.793 107.082 112.559 102.443 102.22
|
||||||
|
102.443H7.173C18.7385 126.175 43.0895 142.53 71.265 142.53C94.418 142.53
|
||||||
|
114.983 131.482 128 114.378Z"
|
||||||
|
fill="#3EBEB0" />
|
||||||
|
<path
|
||||||
|
d="M2.87749 51.222C-0.959651 64.3087 -0.959651 78.2218 2.87749
|
||||||
|
91.3085H62.357C63.916 85.2955 64.8065 78.6145 64.8065 71.265C64.8065
|
||||||
|
63.916 63.916 57.235 62.3565 51.222H2.87849H2.87749Z"
|
||||||
|
fill="#231F20" />
|
||||||
|
<path
|
||||||
|
d="M35.41 9.5765C23.3835 16.703 13.362 27.3925 7.1265
|
||||||
|
40.0865H59.6845C54.3395 27.838 45.877 17.594 35.4095 9.5765"
|
||||||
|
fill="#D7A229" />
|
||||||
|
<path
|
||||||
|
d="M37.637 134.068C47.881 125.828 56.121 114.915 61.2435
|
||||||
|
102.443H7.1265C13.8075 115.806 24.4975 126.941 37.637 134.068Z"
|
||||||
|
fill="#019B8F" />
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<clipPath id="clip0">
|
||||||
|
<rect width="128" height="143" fill="white" />
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
|
@ -0,0 +1,77 @@
|
||||||
|
<script>
|
||||||
|
export let width = "100"
|
||||||
|
export let height = "100"
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<svg
|
||||||
|
{width}
|
||||||
|
{height}
|
||||||
|
viewBox="0 0 179 179"
|
||||||
|
fill="none"
|
||||||
|
xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path
|
||||||
|
d="M153.828 30.7656H101.806L90.0594
|
||||||
|
54.2594H24.6125V148.234H165.575V30.7656H153.828ZM153.828
|
||||||
|
54.2594H107.959L114.112 42.5125H153.828V54.2594Z"
|
||||||
|
fill="#458248" />
|
||||||
|
<path
|
||||||
|
d="M149.773 173.406L146.623 172.36C146.623 172.36 147.026 156.412 141.276
|
||||||
|
155.299C137.483 150.903 141.835 -32.4046 155.635 154.673C153.015 156 151.011
|
||||||
|
158.289 150.041 161.061C149.521 165.155 149.431 169.293 149.773
|
||||||
|
173.406V173.406Z"
|
||||||
|
fill="url(#paint0_linear)" />
|
||||||
|
<path
|
||||||
|
d="M151.473 158.007C159.86 151.69 166.283 143.124 169.994 133.302C173.705
|
||||||
|
123.48 174.553 112.807 172.439 102.522C166.285 75.3142 151.68 66.3698
|
||||||
|
150.108 62.9577C148.75 60.8316 147.591 58.5845 146.646 56.2452L147.809
|
||||||
|
132.052C147.809 132.052 145.398 155.215 151.473 158.007Z"
|
||||||
|
fill="url(#paint1_linear)" />
|
||||||
|
<path
|
||||||
|
d="M145.018 159.014C145.018 159.014 119.337 141.522 120.825 110.583C120.964
|
||||||
|
101.255 123.102 92.0662 127.096 83.636C131.091 75.2058 136.847 67.7308
|
||||||
|
143.978 61.7158C144.809 61.0059 145.469 60.1177 145.91 59.1173C146.351
|
||||||
|
58.1169 146.56 57.03 146.523 55.9375C148.123 59.3777 147.86 107.299 148.027
|
||||||
|
112.904C148.682 134.709 146.819 154.897 145.018 159.014V159.014Z"
|
||||||
|
fill="url(#paint2_linear)" />
|
||||||
|
<defs>
|
||||||
|
<linearGradient
|
||||||
|
id="paint0_linear"
|
||||||
|
x1="128.589"
|
||||||
|
y1="115.729"
|
||||||
|
x2="164.805"
|
||||||
|
y2="128.016"
|
||||||
|
gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0.231" stop-color="#999875" />
|
||||||
|
<stop offset="0.563" stop-color="#9B9977" />
|
||||||
|
<stop offset="0.683" stop-color="#A09F7E" />
|
||||||
|
<stop offset="0.768" stop-color="#A9A889" />
|
||||||
|
<stop offset="0.837" stop-color="#B7B69A" />
|
||||||
|
<stop offset="0.896" stop-color="#C9C7B0" />
|
||||||
|
<stop offset="0.948" stop-color="#DEDDCB" />
|
||||||
|
<stop offset="0.994" stop-color="#F8F6EB" />
|
||||||
|
<stop offset="1" stop-color="#FBF9EF" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="paint1_linear"
|
||||||
|
x1="141.872"
|
||||||
|
y1="55.7038"
|
||||||
|
x2="157.883"
|
||||||
|
y2="155.673"
|
||||||
|
gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#48A547" />
|
||||||
|
<stop offset="1" stop-color="#3F9143" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="paint2_linear"
|
||||||
|
x1="118.614"
|
||||||
|
y1="113.645"
|
||||||
|
x2="161.577"
|
||||||
|
y2="99.2572"
|
||||||
|
gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#41A247" />
|
||||||
|
<stop offset="0.352" stop-color="#4BA74B" />
|
||||||
|
<stop offset="0.956" stop-color="#67B554" />
|
||||||
|
<stop offset="1" stop-color="#69B655" />
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
|
@ -0,0 +1,149 @@
|
||||||
|
<script>
|
||||||
|
export let width = "100"
|
||||||
|
export let height = "100"
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<svg
|
||||||
|
{width}
|
||||||
|
{height}
|
||||||
|
viewBox="0 0 170 175"
|
||||||
|
fill="none"
|
||||||
|
xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path
|
||||||
|
d="M169.341 104.792C168.322 101.71 165.652 99.5637 162.199 99.0487C160.57
|
||||||
|
98.8061 158.706 98.9095 156.499 99.3635C152.653 100.156 149.799 100.457
|
||||||
|
147.717 100.516C155.577 87.268 161.969 72.161 165.648 57.9402C171.598
|
||||||
|
34.9456 168.419 24.4702 164.704 19.7319C154.871 7.19025 140.525 0.452754
|
||||||
|
123.218 0.246599C113.986 0.13391 105.881 1.95351 101.653 3.26203C97.7162
|
||||||
|
2.56866 93.4835 2.18154 89.0422 2.10995C80.7169 1.97738 73.361 3.78902
|
||||||
|
67.0757 7.51241C63.596 6.33779 58.0112 4.68192 51.5619 3.62529C36.3933
|
||||||
|
1.1395 24.1679 3.07643 15.2257 9.38239C4.39748 17.0174 -0.622171 30.283
|
||||||
|
0.306188 48.8104C0.601032 54.6928 3.89744 72.5905 9.08775 89.5642C12.0707
|
||||||
|
99.3205 15.2516 107.422 18.542 113.647C23.2084 122.473 28.2015 127.67
|
||||||
|
33.8068 129.537C36.9485 130.582 42.6568 131.314 48.6606 126.322C49.4216
|
||||||
|
127.242 50.4369 128.156 51.7843 129.005C53.4956 130.083 55.5881 130.963
|
||||||
|
57.6779 131.485C65.209 133.364 72.2633 132.894 78.2817 130.26C78.3189
|
||||||
|
131.328 78.3475 132.349 78.3714 133.231C78.4112 134.661 78.4511 136.063
|
||||||
|
78.5035 137.374C78.8601 146.239 79.4644 153.132 81.2548 157.955C81.353
|
||||||
|
158.221 81.4852 158.625 81.6246 159.054C82.5178 161.784 84.0113 166.353
|
||||||
|
87.811 169.932C91.7456 173.64 96.5049 174.777 100.864 174.777C103.05 174.777
|
||||||
|
105.136 174.49 106.965 174.099C113.486 172.704 120.893 170.579 126.25
|
||||||
|
162.963C131.316 155.765 133.778 144.922 134.224 127.838C134.281 127.354
|
||||||
|
134.335 126.893 134.386 126.453L134.492 125.551L135.685 125.655L135.993
|
||||||
|
125.676C142.635 125.978 150.756 124.572 155.744 122.259C159.685 120.434
|
||||||
|
172.315 113.778 169.341 104.792"
|
||||||
|
fill="black" />
|
||||||
|
<path
|
||||||
|
d="M157.984 106.539C138.235 110.606 136.877 103.931 136.877 103.931C157.729
|
||||||
|
73.046 166.446 33.8413 158.924 24.2462C138.402 -1.92761 102.878 10.451
|
||||||
|
102.285 10.7718L102.094 10.8063C98.1923 9.99759 93.8261 9.51633 88.918
|
||||||
|
9.43613C79.9824 9.29029 73.2036 11.7748 68.0598 15.6685C68.0598 15.6685
|
||||||
|
4.68831 -10.3919 7.63609 48.4439C8.26296 60.9604 25.6083 143.151 46.2965
|
||||||
|
118.326C53.8582 109.248 61.1648 101.572 61.1648 101.572C64.7933 103.979
|
||||||
|
69.1376 105.206 73.6917 104.765L74.0457 104.466C73.9354 105.593 73.9859
|
||||||
|
106.695 74.1871 108C68.8573 113.944 70.4239 114.988 59.7696 117.177C48.9886
|
||||||
|
119.395 55.3218 123.343 59.4569 124.376C64.4699 125.627 76.0671 127.399
|
||||||
|
83.903 116.449L83.5909 117.699C85.6787 119.369 87.1449 128.559 86.8992
|
||||||
|
136.89C86.6535 145.222 86.4895 150.942 88.1344 155.409C89.7806 159.877
|
||||||
|
91.4202 169.93 105.427 166.934C117.129 164.43 123.194 157.943 124.038
|
||||||
|
147.121C124.637 139.427 125.992 140.565 126.077 133.686L127.164
|
||||||
|
130.43C128.417 120.001 127.363 116.636 134.573 118.201L136.326
|
||||||
|
118.355C141.632 118.596 148.578 117.503 152.655 115.611C161.432 111.545
|
||||||
|
166.639 104.755 157.983 106.539H157.984"
|
||||||
|
fill="#336791" />
|
||||||
|
<path
|
||||||
|
d="M71.7692 54.0412C69.9895 53.7939 68.3778 54.0226 67.5623 54.6391C67.1041
|
||||||
|
54.9858 66.962 55.3875 66.9235 55.6639C66.8212 56.3964 67.3352 57.2064
|
||||||
|
67.6513 57.624C68.5452 58.8066 69.8507 59.6193 71.143 59.7983C71.3302
|
||||||
|
59.8248 71.5168 59.8367 71.7021 59.8367C73.857 59.8367 75.8167 58.1616
|
||||||
|
75.9893 56.9254C76.2051 55.3769 73.9533 54.3448 71.7692 54.0418"
|
||||||
|
fill="white" />
|
||||||
|
<path
|
||||||
|
d="M130.727 54.0902C130.557 52.8765 128.394 52.5305 126.341 52.8155C124.29
|
||||||
|
53.1006 122.302 54.0246 122.468 55.241C122.601 56.1869 124.312 57.8017
|
||||||
|
126.337 57.8017C126.509 57.8017 126.681 57.7904 126.855 57.7659C128.207
|
||||||
|
57.579 129.199 56.7219 129.671 56.228C130.388 55.475 130.804 54.6358 130.727
|
||||||
|
54.0902"
|
||||||
|
fill="white" />
|
||||||
|
<path
|
||||||
|
d="M164.556 106.077C163.803 103.804 161.379 103.073 157.352 103.903C145.396
|
||||||
|
106.366 141.114 104.66 139.708 103.627C149.002 89.494 156.647 72.4103
|
||||||
|
160.771 56.4713C162.725 48.9212 163.804 41.9092 163.893 36.1939C163.99
|
||||||
|
29.9211 162.92 25.3114 160.712 22.4955C151.813 11.1437 138.751 5.05449
|
||||||
|
122.939 4.88744C112.069 4.76547 102.885 7.54227 101.105 8.32314C97.3555
|
||||||
|
7.39246 93.2682 6.82106 88.8183 6.74814C80.6583 6.61623 73.6046 8.56642
|
||||||
|
67.7649 12.5417C65.2282 11.5991 58.6725 9.35259 50.6553 8.06329C36.795
|
||||||
|
5.83602 25.7809 7.52371 17.921 13.0819C8.54246 19.7147 4.21277 31.571
|
||||||
|
5.05148 48.3206C5.33371 53.9557 8.55043 71.2913 13.6265 87.8931C20.3083
|
||||||
|
109.744 27.5718 122.114 35.2139 124.659C36.1084 124.957 37.1396 125.165
|
||||||
|
38.2772 125.165C41.0649 125.165 44.4829 123.911 48.0389 119.643C52.3763
|
||||||
|
114.449 56.863 109.381 61.4935 104.446C64.4977 106.055 67.7981 106.954
|
||||||
|
71.1735 107.044C71.1802 107.133 71.1888 107.221 71.1968 107.308C70.6157 108
|
||||||
|
70.0468 108.701 69.4901 109.413C67.1513 112.377 66.6645 112.994 59.1361
|
||||||
|
114.541C56.9945 114.982 51.3068 116.152 51.2231 120.132C51.1328 124.481
|
||||||
|
57.9467 126.307 58.723 126.501C61.4284 127.177 64.0348 127.51 66.5204
|
||||||
|
127.51C72.5654 127.51 77.8852 125.527 82.1365 121.689C82.0057 137.191
|
||||||
|
82.6532 152.467 84.5179 157.121C86.0452 160.931 89.7759 170.243 101.56
|
||||||
|
170.242C103.29 170.242 105.193 170.041 107.287 169.593C119.586 166.961
|
||||||
|
124.927 161.535 126.993 149.572C128.098 143.179 129.996 127.912 130.888
|
||||||
|
119.723C132.771 120.309 135.196 120.578 137.817 120.577C143.283 120.577
|
||||||
|
149.591 119.418 153.547 117.585C157.991 115.525 166.01 110.469 164.556
|
||||||
|
106.077V106.077ZM135.267 50.7401C135.226 53.1576 134.893 55.3524 134.54
|
||||||
|
57.6433C134.159 60.1072 133.766 62.6547 133.667 65.747C133.569 68.7565
|
||||||
|
133.946 71.8853 134.31 74.9113C135.046 81.023 135.801 87.3151 132.878
|
||||||
|
93.5236C132.393 92.665 131.96 91.7775 131.583 90.8661C131.22 89.9872 130.431
|
||||||
|
88.5752 129.339 86.6211C125.089 79.0139 115.138 61.1997 120.232
|
||||||
|
53.9305C121.75 51.7669 125.601 49.5423 135.267 50.7401V50.7401ZM123.55
|
||||||
|
9.7828C137.717 10.095 148.924 15.3855 156.858 25.5063C162.944 33.2693
|
||||||
|
156.243 68.5921 136.843 99.0653C136.648 98.8177 136.452 98.5708 136.255
|
||||||
|
98.3248L136.009 98.0186C141.022 89.7545 140.042 81.5779 139.17
|
||||||
|
74.3286C138.811 71.3536 138.472 68.5437 138.559 65.9041C138.648 63.1068
|
||||||
|
139.018 60.7071 139.377 58.3871C139.817 55.5281 140.265 52.5696 140.142
|
||||||
|
49.0822C140.234 48.7163 140.271 48.2841 140.223 47.7711C139.907 44.4268
|
||||||
|
136.082 34.418 128.286 25.3591C124.022 20.4041 117.803 14.8591 109.311
|
||||||
|
11.1192C112.964 10.3635 117.958 9.65884 123.55 9.7828V9.7828ZM44.2757
|
||||||
|
116.52C40.3577 121.222 37.6523 120.32 36.7625 120.025C30.9652 118.095
|
||||||
|
24.2382 105.863 18.3075 86.4673C13.1756 69.6845 10.1767 52.8083 9.93898
|
||||||
|
48.076C9.18992 33.1095 12.8243 22.6791 20.742 17.0738C33.6274 7.95259
|
||||||
|
54.8123 13.4121 63.325 16.1809C63.2028 16.3016 63.0753 16.4142 62.9544
|
||||||
|
16.5369C48.9852 30.6191 49.3166 54.6789 49.3511 56.1498C49.3498 56.7173
|
||||||
|
49.3976 57.5207 49.4627 58.6257C49.703 62.6726 50.1506 70.2042 48.9553
|
||||||
|
78.7335C47.845 86.6595 50.2927 94.4172 55.6696 100.018C56.2215 100.592
|
||||||
|
56.8015 101.138 57.4075 101.654C55.0142 104.213 49.8126 109.871 44.2757
|
||||||
|
116.52V116.52ZM59.2031 96.6378C54.8695 92.1236 52.9012 85.8448 53.8023
|
||||||
|
79.4096C55.064 70.3998 54.5985 62.5526 54.3482 58.3367C54.313 57.7467
|
||||||
|
54.2818 57.2297 54.2638 56.822C56.3045 55.0157 65.7614 49.9579 72.5056
|
||||||
|
51.5004C75.5829 52.2037 77.4582 54.2958 78.2378 57.8939C82.2727 76.5228
|
||||||
|
78.7717 84.2871 75.9587 90.5267C75.379 91.8121 74.8312 93.0271 74.3637
|
||||||
|
94.2839L74.0011 95.2557C73.0834 97.7123 72.2294 99.9966 71.7001
|
||||||
|
102.166C67.0929 102.152 62.6111 100.188 59.2031 96.6372V96.6378ZM59.9104
|
||||||
|
121.761C58.565 121.426 57.355 120.843 56.6452 120.36C57.2382 120.081 58.2934
|
||||||
|
119.702 60.1235 119.326C68.9801 117.506 70.3481 116.221 73.335
|
||||||
|
112.436C74.0197 111.567 74.796 110.583 75.8711 109.385L75.8724
|
||||||
|
109.384C77.4735 107.594 78.2059 107.897 79.5341 108.448C80.6105 108.892
|
||||||
|
81.6591 110.239 82.0841 111.721C82.2853 112.421 82.5111 113.749 81.772
|
||||||
|
114.783C75.5324 123.504 66.4401 123.392 59.9104 121.761V121.761ZM106.261
|
||||||
|
164.816C95.4264 167.134 91.5901 161.615 89.062 155.307C87.4304 151.234
|
||||||
|
86.6282 132.868 87.1973 112.586C87.2047 112.316 87.1661 112.056 87.0918
|
||||||
|
111.81C87.0252 111.326 86.924 110.847 86.7889 110.377C85.9429 107.426 83.881
|
||||||
|
104.958 81.4074 103.934C80.4246 103.528 78.621 102.782 76.4535
|
||||||
|
103.336C76.9157 101.434 77.7172 99.2873 78.5864 96.9626L78.951
|
||||||
|
95.9849C79.3614 94.8825 79.8767 93.7404 80.4213 92.5313C83.365 86.0033
|
||||||
|
87.3966 77.0617 83.0211 56.8618C81.3821 49.2957 75.9089 45.6008 67.6121
|
||||||
|
46.4592C62.6383 46.973 58.0875 48.9762 55.8177 50.1249C55.3296 50.3715
|
||||||
|
54.8834 50.6102 54.4664 50.8422C55.0999 43.2191 57.4932 28.9725 66.4461
|
||||||
|
19.9587C72.0833 14.2844 79.5905 11.4818 88.7373 11.6329C106.76 11.9272
|
||||||
|
118.317 21.1598 124.84 28.8538C130.46 35.4833 133.504 42.1618 134.718
|
||||||
|
45.7639C125.584 44.8365 119.372 46.6362 116.223 51.1305C109.372 60.9067
|
||||||
|
119.971 79.8809 125.065 89.0001C125.999 90.6712 126.805 92.1157 127.059
|
||||||
|
92.7295C128.718 96.7426 130.865 99.4219 132.433 101.377C132.914 101.977
|
||||||
|
133.38 102.558 133.735 103.066C130.968 103.862 125.999 105.701 126.452
|
||||||
|
114.896C126.087 119.51 123.49 141.11 122.17 148.742C120.428 158.824 116.712
|
||||||
|
162.58 106.261 164.817V164.816ZM151.487 113.154C148.658 114.465 143.924
|
||||||
|
115.448 139.427 115.659C134.459 115.891 131.931 115.104 131.336
|
||||||
|
114.619C131.057 108.889 133.193 108.291 135.454 107.657C135.809 107.557
|
||||||
|
136.156 107.46 136.491 107.343C136.699 107.512 136.926 107.68 137.176
|
||||||
|
107.844C141.168 110.475 148.289 110.758 158.342 108.687L158.453
|
||||||
|
108.665C157.097 109.931 154.776 111.629 151.487 113.154Z"
|
||||||
|
fill="white" />
|
||||||
|
</svg>
|
|
@ -0,0 +1,55 @@
|
||||||
|
<script>
|
||||||
|
export let width = "100"
|
||||||
|
export let height = "100"
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<svg
|
||||||
|
{width}
|
||||||
|
{height}
|
||||||
|
viewBox="0 0 128 155"
|
||||||
|
fill="none"
|
||||||
|
xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path
|
||||||
|
d="M10.312 26.843L0 32V122.51L10.312 127.637L10.374 127.562V26.914L10.312
|
||||||
|
26.843Z"
|
||||||
|
fill="#8C3123" />
|
||||||
|
<path
|
||||||
|
d="M65.5 114.5L10.312 127.637V26.843L65.5 39.6935V114.5Z"
|
||||||
|
fill="#E05243" />
|
||||||
|
<path
|
||||||
|
d="M40.589 93.933L63.998 96.913L64.145 96.574L64.2765 58.189L63.998
|
||||||
|
57.889L40.589 60.826V93.933"
|
||||||
|
fill="#8C3123" />
|
||||||
|
<path
|
||||||
|
d="M63.998 114.647L117.683 127.665L117.768 127.53L117.766 26.933L117.681
|
||||||
|
26.843L63.998 39.841V114.647"
|
||||||
|
fill="#8C3123" />
|
||||||
|
<path
|
||||||
|
d="M87.4135 93.933L63.998 96.913V57.889L87.4135 60.826V93.933Z"
|
||||||
|
fill="#E05243" />
|
||||||
|
<path
|
||||||
|
d="M87.4135 44.8155L63.998 49.083L40.589 44.8155L63.9685 38.6875L87.4135
|
||||||
|
44.8155Z"
|
||||||
|
fill="#5E1F18" />
|
||||||
|
<path
|
||||||
|
d="M87.4135 109.901L63.998 105.605L40.589 109.901L63.9695 116.427L87.4135
|
||||||
|
109.901Z"
|
||||||
|
fill="#F2B0A9" />
|
||||||
|
<path
|
||||||
|
d="M40.589 44.8155L63.998 39.0225L64.1875 38.964V0.1565L63.998 0L40.589
|
||||||
|
11.7065V44.8155Z"
|
||||||
|
fill="#8C3123" />
|
||||||
|
<path
|
||||||
|
d="M87.4135 44.8155L63.998 39.0225V0L87.4135 11.7065V44.8155Z"
|
||||||
|
fill="#E05243" />
|
||||||
|
<path
|
||||||
|
d="M63.998 154.714L40.5865 143.012V109.903L63.998 115.694L64.3425
|
||||||
|
116.086L64.249 154.039L63.998 154.714Z"
|
||||||
|
fill="#8C3123" />
|
||||||
|
<path
|
||||||
|
d="M63.998 154.714L87.4115 143.012V109.903L63.998 115.694V154.714"
|
||||||
|
fill="#E05243" />
|
||||||
|
<path
|
||||||
|
d="M117.684 26.843L128 32V122.51L117.684 127.665V26.843Z"
|
||||||
|
fill="#E05243" />
|
||||||
|
</svg>
|
|
@ -0,0 +1,391 @@
|
||||||
|
<script>
|
||||||
|
export let width = "100"
|
||||||
|
export let height = "100"
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<svg
|
||||||
|
{width}
|
||||||
|
{height}
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 1478.201 1195.111">
|
||||||
|
<g transform="matrix(.569 0 0 .569 199.451 -82.735)">
|
||||||
|
<linearGradient
|
||||||
|
id="a"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="-2901.952"
|
||||||
|
y1="923.573"
|
||||||
|
x2="-2061.249"
|
||||||
|
y2="1420.331"
|
||||||
|
gradientTransform="matrix(.1234 0 0 -.1234 1158.33 1550.273)">
|
||||||
|
<stop offset="0" stop-color="#909ca9" />
|
||||||
|
<stop offset="1" stop-color="#ededee" />
|
||||||
|
</linearGradient>
|
||||||
|
<path
|
||||||
|
fill="url(#a)"
|
||||||
|
d="M1410.773 814.195l-286.9 93.683-249.599 110.161-69.829 18.435c-17.784
|
||||||
|
16.916-36.431 34.049-56.599 51.397-22.119 19.082-42.72 36.433-58.553
|
||||||
|
49.008-17.564 13.88-43.587 39.902-56.814 56.38-19.735 24.721-35.348
|
||||||
|
50.96-42.071 71.13-11.928 36.433-6.07 73.297 16.916 107.346 29.492 43.369
|
||||||
|
88.261 87.606 156.785 117.749 34.916 15.4 93.683 35.132 137.92 46.19
|
||||||
|
73.512 18.651 215.771 38.819 294.054 41.857 15.828.65 37.082.65 37.947 0
|
||||||
|
1.737-1.088 13.881-24.289 27.979-53.129 48.142-98.238 82.838-190.402
|
||||||
|
101.703-269.119 11.276-47.706 20.166-111.246 26.019-186.492 1.521-21.036
|
||||||
|
2.169-91.514.868-115.37-1.953-39.033-5.423-70.692-10.84-101.703-.868-4.555-1.088-8.676-.652-8.892.865-.65
|
||||||
|
3.467-1.517 38.815-11.712l-7.153-16.912v-.005h.004zm-65.49 38.386c2.602 0
|
||||||
|
9.539 66.573 11.273 108.646.436 8.89.216 14.745-.216 14.745-1.733
|
||||||
|
0-36.649-20.599-61.583-36.212-21.687-13.663-62.888-40.988-69.393-46.192-2.173-1.517-1.957-1.733
|
||||||
|
15.828-7.807 30.14-10.194 101.706-33.18 104.091-33.18zm-146.161
|
||||||
|
48.143c1.953 0 6.937 2.816 18.865 10.191 44.671 27.974 105.393 61.805
|
||||||
|
131.415 73.083 8.022 3.469 8.887 2.166-9.542 14.746-39.468 26.889-88.697
|
||||||
|
53.344-148.983 80.018-10.624 4.771-19.514 8.456-19.73 8.456-.432 0
|
||||||
|
.865-5.418 2.598-11.925 14.53-54.001 22.772-108.647
|
||||||
|
23.208-152.452.216-21.687.216-21.687 2.169-22.334-.436.217-.22.217 0
|
||||||
|
.217zm-30.142 11.492c1.297 1.299.432 49.877-1.304 63.104-3.903
|
||||||
|
31.662-9.975 61.153-19.947 94.335-2.386 8.018-4.558 14.745-4.987
|
||||||
|
15.177-.872
|
||||||
|
1.083-30.581-27.975-40.339-39.251-16.916-19.518-30.141-39.035-39.9-58.117-4.988-9.759-12.793-28.84-12.144-29.492
|
||||||
|
3.469-2.385 117.753-46.622 118.621-45.756zm-141.826 55.731c.216 0 .432 0
|
||||||
|
.652.216.432.434 1.953 3.905 3.254 7.807 6.937 18.867 22.548 46.624 35.997
|
||||||
|
64.407 14.746 19.518 34.048 40.334 50.091 53.996 5.207 4.337 9.975 8.456
|
||||||
|
10.624 9.108 1.304 1.302 1.737 1.083-33.612 14.53-40.981 15.613-85.656
|
||||||
|
31.226-136.835 47.706a6825.474 6825.474 0 0 0-36.643
|
||||||
|
11.928c-1.955.652-1.303-.434 4.335-9.323 25.371-39.686 63.97-117.536
|
||||||
|
85.657-172.618 3.687-9.542 7.373-19.082 8.025-21.251.868-3.038 1.95-4.121
|
||||||
|
4.768-5.64 1.518-.43 3.038-.866 3.687-.866zm-43.367 17.999c.649.436-10.411
|
||||||
|
23.637-21.254 44.889-21.036 40.985-44.022 81.323-74.815 130.331-5.204
|
||||||
|
8.456-10.19 16.265-10.842 17.132-1.083 1.519-1.519
|
||||||
|
1.083-4.988-5.638-7.373-14.53-13.447-33.181-16.699-50.313-3.254-16.916-2.602-46.406
|
||||||
|
1.086-64.621 2.816-13.444 2.602-13.227 9.107-16.481 27.757-14.095
|
||||||
|
117.537-56.166 118.405-55.299zm374.073 15.182v9.107c0 48.359-5.204
|
||||||
|
114.716-12.797 163.077-1.301 8.456-2.389 15.393-2.602 15.613 0
|
||||||
|
0-6.288-1.733-13.661-3.905-32.527-10.193-67.875-25.156-99.754-42.718-21.038-11.494-51.612-30.363-50.743-31.231.213-.215
|
||||||
|
9.323-4.986 19.947-10.625 42.509-22.118 83.274-45.972 118.622-69.609
|
||||||
|
13.229-8.892 33.176-23.202 37.518-27.107l3.47-2.602zm-537.802 64.185c.867
|
||||||
|
0 .65 1.735-.651 9.542-.868 5.64-1.951 16.049-2.382 23.202-1.739 31.662
|
||||||
|
3.469 55.084 19.082 87.177 4.337 8.892 7.809 16.265 7.589 16.48-1.519
|
||||||
|
1.303-145.074 43.375-190.183 55.734-13.444 3.685-25.152 6.939-26.024
|
||||||
|
7.153-1.515.436-1.733.22-1.083-3.47 4.987-31.875 29.276-73.512
|
||||||
|
63.104-108.644 22.554-23.419 40.554-37.08 71.347-54.648 22.119-12.575
|
||||||
|
56.165-31.439 58.767-32.309.002-.217.218-.217.434-.217zm338.295
|
||||||
|
60.503c.216-.216 5.42 2.605 11.708 6.29 46.408 26.891 111.03 51.83 166.108
|
||||||
|
64.623l4.991 1.086-6.941 3.899c-28.84 16.049-123.606 55.515-220.538
|
||||||
|
91.732-14.098 5.202-27.975 10.409-30.581 11.492-2.602 1.083-4.988
|
||||||
|
1.735-4.988 1.519 0-.22 3.906-7.809 8.89-17.132 27.107-50.744
|
||||||
|
54.433-112.547 68.311-155.485 1.739-4.12 2.82-7.805 3.04-8.024zm-34.48
|
||||||
|
11.278c.22.221-1.517 4.771-3.687 9.975-18.865 45.756-43.59 95.636-75.249
|
||||||
|
151.583-8.022 14.314-14.746 25.808-14.966 25.808-.213
|
||||||
|
0-6.721-3.906-14.527-8.676-45.976-28.192-86.743-62.888-113.414-96.501l-3.905-4.771
|
||||||
|
19.732-5.422c70.696-19.298 130.762-40.116 190.4-65.704 8.459-3.471
|
||||||
|
15.4-6.292 15.616-6.292zm214.253 74.815s.217.217 0 0c.216 4.988-10.844
|
||||||
|
49.661-19.953 81.969-7.589 27.107-14.098 48.361-26.022 85.874-5.204
|
||||||
|
16.485-9.755 30.143-9.975 30.143-.216
|
||||||
|
0-1.517-.216-2.818-.647-64.405-11.714-122.089-27.977-176.303-49.661-15.182-6.074-36.866-15.833-38.167-16.916-.432-.438
|
||||||
|
12.58-6.506 29.06-13.663 98.669-43.154 201.024-92.164 236.153-113.196
|
||||||
|
4.119-2.603 7.373-3.903 8.025-3.903zm-494.646 16.916c.434.432-27.107
|
||||||
|
40.118-65.709 94.114-13.444 18.867-29.057 40.985-34.911 49.225-5.856
|
||||||
|
8.241-14.746 21.253-19.734 29.06l-9.112
|
||||||
|
14.096-9.759-8.24c-11.494-9.544-31.442-29.927-40.333-41.204-18.651-23.201-31.226-47.706-36.214-70.04-2.386-10.411-2.386-15.618-.22-16.265
|
||||||
|
3.252-.867 61.153-14.53 115.37-27.11 30.143-6.937 65.054-15.177
|
||||||
|
77.632-18.213 12.579-3.041 22.774-5.423 22.99-5.423zm27.756 10.626l6.937
|
||||||
|
7.806c31.231 34.914 63.108 60.724 101.708 83.272 6.941 3.906 12.144 7.373
|
||||||
|
11.708 7.594-1.514 1.083-134.016 48.136-195.385 69.389-34.478
|
||||||
|
12.143-62.888 21.901-63.102 21.901-.216
|
||||||
|
0-2.169-1.299-4.341-2.818l-3.901-2.82 6.288-9.106c20.383-29.493
|
||||||
|
45.976-61.803 101.707-129.028l38.381-46.19zm173.053 123.822c.213-.215
|
||||||
|
9.755 3.252 21.464 7.594 28.195 10.624 50.527 17.345 80.456 24.936 36.866
|
||||||
|
9.326 90.211 18.434 121.657 21.035 4.771.432 7.373.868 6.505
|
||||||
|
1.519-1.521.868-33.395 11.494-56.816 18.867-37.302 11.708-151.149
|
||||||
|
45.32-243.962 71.995-17.132 4.987-31.879 9.108-32.746
|
||||||
|
9.323-2.166.436-9.325-1.519-9.325-2.386 0-.431 5.204-7.153 11.494-14.527
|
||||||
|
31.225-37.3 62.238-78.935 88.044-118.403 7.154-10.846 13.229-19.736
|
||||||
|
13.229-19.953zm-38.17 1.087c.216.216-15.179 24.936-42.066 67.439-11.496
|
||||||
|
17.999-24.291 38.383-28.846 45.54-4.337 6.939-10.842 17.784-14.527
|
||||||
|
23.854l-6.29
|
||||||
|
11.061-3.252-.868c-7.809-2.169-62.672-21.471-77.202-27.325-18-7.157-36.649-15.829-50.529-23.202-17.346-9.326-39.03-23.206-37.297-23.637.433-.216
|
||||||
|
30.143-8.243 65.922-17.999 94.984-25.809 147.678-40.77 182.161-51.612
|
||||||
|
6.29-1.952 11.71-3.471 11.926-3.251zm269.985 63.318h.216c.868 2.171-34.26
|
||||||
|
99.755-47.06 130.547-2.815 6.939-3.896 8.677-5.417
|
||||||
|
8.456-3.687-.213-54.646-7.37-85.66-11.925-53.994-8.24-144.641-24.073-167.409-29.275l-5.204-1.083
|
||||||
|
32.307-7.378c69.396-15.613 102.791-24.069 136.619-34.478 42.722-13.011
|
||||||
|
85.011-29.276 127.729-49.225 6.722-3.037 12.361-5.422 13.879-5.639z" />
|
||||||
|
<linearGradient
|
||||||
|
id="b"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="-2882.7"
|
||||||
|
y1="10288.81"
|
||||||
|
x2="-2206.249"
|
||||||
|
y2="10288.81"
|
||||||
|
gradientTransform="matrix(.1234 0 0 -.1234 1158.33 1550.273)">
|
||||||
|
<stop offset="0" stop-color="#939fab" />
|
||||||
|
<stop offset="1" stop-color="#dcdee1" />
|
||||||
|
</linearGradient>
|
||||||
|
<path
|
||||||
|
fill="url(#b)"
|
||||||
|
d="M1114.983 145.414c-4.771-.647-81.757 27.11-131.415 47.275-67.01
|
||||||
|
27.327-119.052 53.351-151.148 75.899-11.925 8.461-26.891 23.422-29.273
|
||||||
|
29.276-.867 2.169-1.303 4.771-1.303 7.373l29.06 27.541 69.175 22.119
|
||||||
|
164.594 29.493 188.228 32.312 1.953-16.264c-.649
|
||||||
|
0-1.085-.216-1.73-.216l-24.728-3.905-4.984-8.89c-25.59-45.107-53.781-101.056-70.261-138.789-12.793-29.276-24.938-63.102-31.662-87.391-3.687-14.746-4.119-15.613-6.501-15.829v-.005h-.005zm-3.474
|
||||||
|
11.063h.223c.213.214 1.081 6.29 1.95 13.442 3.683 30.364 10.411 59.635
|
||||||
|
21.035 91.297 8.022 23.855 8.022 22.555-1.301
|
||||||
|
19.734-22.119-6.07-121.221-23.202-193-33.177-11.494-1.519-21.253-3.036-21.253-3.252-.867-.867
|
||||||
|
51.827-28.41 75.031-39.25 29.709-13.665 111.246-47.711
|
||||||
|
117.315-48.794zm-209.047 97.15l8.461 2.816c45.97 15.616 161.551 37.736
|
||||||
|
225.31 42.94 7.154.651 13.229 1.303 13.442 1.303.216.216-5.852
|
||||||
|
3.469-13.661 7.154-30.79 15.397-64.621 34.264-88.042 48.794-6.937
|
||||||
|
4.335-13.229 7.807-14.094 7.807-.868
|
||||||
|
0-5.42-.868-10.191-1.519l-8.674-1.303-21.683-21.253c-38.167-37.08-68.094-65.704-79.588-76.549l-11.28-10.19zm-8.671
|
||||||
|
6.721l30.576 38.168c16.696 21.035 33.611 41.635 37.301 46.187 3.683 4.557
|
||||||
|
6.721 8.245 6.505
|
||||||
|
8.461-.868.65-44.236-7.809-67.226-13.011-23.637-5.423-33.395-8.025-47.924-12.577l-11.928-3.905v-3.038c.216-14.53
|
||||||
|
18.651-36.214 49.877-58.331l2.819-1.954zm259.791 52.046c.869 0 1.95 1.951
|
||||||
|
4.552 7.806 7.373 16.263 30.364 60.07 35.997 68.526 1.74 2.822 4.771
|
||||||
|
3.038-25.802-1.95-73.512-11.93-97.152-15.829-97.152-16.263 0-.216
|
||||||
|
2.169-1.735 4.988-3.254 22.771-12.575 45.756-28.624 66.142-45.756
|
||||||
|
4.988-4.121 9.542-8.024 10.407-8.676.216-.433.652-.649.868-.433z" />
|
||||||
|
<radialGradient
|
||||||
|
id="c"
|
||||||
|
cx="-14217.448"
|
||||||
|
cy="7277.705"
|
||||||
|
r="898.12"
|
||||||
|
gradientTransform="matrix(-.1185 -.0178 -.036 .237 -198.955 -1314.415)"
|
||||||
|
gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0" stop-color="#ee352c" />
|
||||||
|
<stop offset="1" stop-color="#a91d22" />
|
||||||
|
</radialGradient>
|
||||||
|
<path
|
||||||
|
fill="url(#c)"
|
||||||
|
d="M804.66 294.828s-4.768 7.593-.215 18.87c2.822 6.937 11.061 15.393
|
||||||
|
20.384 24.069 0 0 96.5 94.114 108.211 107.561 53.344 61.585 76.549 122.305
|
||||||
|
78.718 206.012 1.301 53.78-8.894 101.054-34.264 155.919-45.106
|
||||||
|
98.453-140.307 207.098-287.117 327.67l21.472-7.157c13.878-10.411
|
||||||
|
32.745-21.467 76.982-45.756 102.137-55.952 217.071-107.346 358.028-160.258
|
||||||
|
202.971-76.335 536.715-165.681
|
||||||
|
726.676-194.736l19.737-3.038-3.038-4.771c-17.345-26.891-29.276-43.587-43.59-61.369-41.633-51.612-92.157-93.463-153.964-128.161-85.007-47.489-194.956-84.571-334.173-112.112-26.239-5.207-83.923-15.181-130.763-22.337-99.321-15.393-163.51-26.021-234.203-38.165-25.37-4.339-63.323-10.843-88.478-16.263-13.011-2.822-37.947-8.676-57.464-15.398-15.613-6.075-38.168-12.147-42.939-30.58zm55.952
|
||||||
|
54.216c.214-.214 3.683 1.083 8.24 2.602 8.24 2.816 18.865 6.07 31.446
|
||||||
|
9.542a1599.47 1599.47 0 0 0 28.624 7.589c13.011 3.251 23.852 6.288 24.068
|
||||||
|
6.288 1.521 1.519 23.424 71.558 30.797 98.449 2.815 10.195 4.988 18.867
|
||||||
|
4.771
|
||||||
|
18.867-.223.22-2.605-3.469-5.423-8.456-25.373-44.673-65.491-89.995-111.899-126.428-6.069-4.333-10.624-8.237-10.624-8.453zm106.692
|
||||||
|
29.492c1.085 0 5.856.651 11.708 1.951 36.866 8.24 103.008 20.818 145.293
|
||||||
|
27.975 7.157 1.083 12.797 2.387 12.797 2.818 0 .436-2.605 1.951-5.859
|
||||||
|
3.688-7.153 3.685-35.997 20.815-45.536 27.322-24.073 16.047-45.756
|
||||||
|
33.395-61.371 49.008-6.288 6.29-11.712 11.494-11.712
|
||||||
|
11.494s-1.297-3.685-2.386-8.242c-7.802-30.143-24.069-74.816-38.815-106.258-2.386-4.986-4.339-9.541-4.339-9.973
|
||||||
|
0 .433 0 .217.22.217zm187.795 35.781c1.301.432 3.47 7.806 7.806 24.069
|
||||||
|
8.025 31.446 11.712 66.576 10.411 99.321-.436 9.108-.868 17.564-1.304
|
||||||
|
18.651l-.649
|
||||||
|
2.166-11.276-3.685c-23.204-7.373-60.935-18.435-93.245-27.541-18.436-4.988-33.395-9.542-33.395-9.975
|
||||||
|
0-1.303 26.891-28.192 38.383-38.383 21.898-19.303 81.316-65.275
|
||||||
|
83.269-64.623zm14.963 2.166c.652-.647 89.779 14.746 130.331 22.554 30.145
|
||||||
|
5.854 73.948 14.963 76.549 16.049 1.301.432-3.254 3.034-17.784
|
||||||
|
9.539-57.248 25.808-99.754 49.008-142.036 77.202-11.06 7.373-20.386
|
||||||
|
13.444-20.602 13.444-.216 0-.433-6.287-.433-13.878
|
||||||
|
0-41.201-8.241-82.838-23.424-117.968-1.517-3.47-2.818-6.722-2.601-6.942zm230.516
|
||||||
|
45.542c.652.65-2.169 18.217-4.771 28.624-7.806 32.312-28.84 80.24-54.643
|
||||||
|
125.343-4.558 8.024-8.677 14.53-9.114
|
||||||
|
14.746-.429.216-6.285-3.038-13.009-6.941-25.154-14.746-53.778-28.624-85.007-41.637-8.671-3.685-16.263-6.723-16.48-7.153-1.521-1.303
|
||||||
|
68.308-47.493 105.174-69.612 29.276-17.781 76.982-44.239
|
||||||
|
77.85-43.37zm16.48 2.601c1.953 0 41.421 10.844 62.019 16.916 50.963 15.181
|
||||||
|
109.512 36.648 147.679 53.996l15.828 7.159-11.056 2.6c-93.245
|
||||||
|
21.467-173.049 46.192-250.034 77.418-6.289 2.602-11.928 4.771-12.357
|
||||||
|
4.771-.436 0 1.733-4.987 4.552-11.061 23.204-49.225 38.167-100.62
|
||||||
|
41.85-144.427.221-4.121.867-7.372 1.519-7.372zm-392.938 90.213c.649-.652
|
||||||
|
30.793 6.506 47.057 11.056 24.721 6.942 77.198 24.505 77.198 25.808 0
|
||||||
|
.216-5.853 5.204-12.79 11.278-28.408 23.637-55.734 48.572-88.481
|
||||||
|
80.234-9.759 9.328-17.997 16.917-18.429 16.917-.436
|
||||||
|
0-.649-1.304-.436-3.038 4.987-36.433
|
||||||
|
3.906-83.272-3.034-130.763-.653-6.074-1.302-11.276-1.085-11.492zm633.433.652c.429.431-13.881
|
||||||
|
22.984-22.988 35.777-13.009 18.649-32.098 43.375-75.252 97.588-22.765
|
||||||
|
28.622-48.358 60.936-56.812 71.778-8.678 10.842-15.831 19.948-16.051
|
||||||
|
19.948-.216
|
||||||
|
0-3.031-3.901-6.069-8.671-24.289-36.433-53.349-68.311-87.829-96.935-6.505-5.423-13.658-11.278-16.044-13.013-2.386-1.734-4.339-3.469-4.339-3.685
|
||||||
|
0-.649 36.862-16.483 64.841-27.757 49.01-19.952 115.794-43.805
|
||||||
|
165.892-59.203 26.24-8.239 54.215-16.263 54.651-15.827zm16.696
|
||||||
|
4.334c.865-.215 6.072 2.387 12.361 6.07 52.697 30.143 104.305 68.962
|
||||||
|
145.077 108.864 11.492 11.278 39.9 40.77 39.464 40.986 0
|
||||||
|
0-9.975.867-21.683 1.733-91.296 6.942-208.178 26.239-320.511 53.345-7.589
|
||||||
|
1.733-14.31 3.252-14.746 3.252-.429 0 8.025-8.456 18.653-18.647
|
||||||
|
65.922-63.538 96.067-103.656 131.628-175.22 4.986-10.623 9.325-19.731
|
||||||
|
9.757-20.383-.216 0-.216 0 0 0zm-482.936 49.446c3.038.647 31.229 13.88
|
||||||
|
52.48 24.503 19.517 9.755 48.794 25.372 50.311 26.671.216.216-10.195
|
||||||
|
5.638-22.984 11.928-40.772 20.384-75.684 39.682-112.118 61.802-10.408
|
||||||
|
6.29-19.082 11.497-19.298 11.497-.868 0-.652-.872 5.204-11.497
|
||||||
|
19.518-35.561 35.129-78.065 44.023-119.486.864-3.252 1.733-5.418
|
||||||
|
2.382-5.418zm-28.192 5.202c.652.652-6.721 27.323-11.273 41.853-8.894
|
||||||
|
27.541-23.856 62.02-38.383 88.043-3.474 6.069-8.677 14.961-11.496
|
||||||
|
19.948l-5.42
|
||||||
|
8.674-12.144-11.707c-14.094-13.663-25.59-22.12-40.333-29.712-5.859-3.033-10.411-5.638-10.411-6.069
|
||||||
|
0-1.735 37.082-35.347 65.49-59.635 20.383-17.566 63.321-52.045
|
||||||
|
63.97-51.395zm172.404 70.913l10.627 6.937c24.282 15.833 52.906 36.866
|
||||||
|
74.813 55.298 12.357 10.19 36.21 31.662 40.985 36.866l2.598 2.822-17.561
|
||||||
|
4.986c-99.321 27.538-176.087 52.043-265.649 85.007-9.975 3.685-18.433
|
||||||
|
6.721-19.085 6.721-1.297 0-2.385 1.083 19.954-19.519 57.251-52.691
|
||||||
|
107.992-110.812 145.726-167.411l7.592-11.707zm-45.324
|
||||||
|
11.276c.432.432-29.276 42.284-47.06 65.922-21.251 28.192-58.985
|
||||||
|
75.465-85.007 106.256-10.84 12.797-20.163 23.422-20.599
|
||||||
|
23.64-.652.216-.868-3.036-.868-8.024
|
||||||
|
0-26.242-6.721-54.216-18.433-78.068-4.988-9.975-5.856-12.361-4.768-13.444
|
||||||
|
4.119-3.688 67.223-39.686 107.123-61.153 26.89-14.312 68.956-35.563
|
||||||
|
69.612-35.129zm-274.107 67.225c.652 0 5.64 2.6 11.279 5.638 13.878 7.589
|
||||||
|
26.239 16.046 37.298 25.156.432.432-5.204 4.988-12.577 10.406-20.602
|
||||||
|
14.746-51.828 38.385-70.041 52.915-19.088 15.18-19.734 15.613-17.568
|
||||||
|
12.361 14.314-21.903 21.467-34.264 29.06-50.093 6.721-14.094 13.442-30.793
|
||||||
|
18.213-45.323 1.734-6.289 3.904-11.06 4.336-11.06zm73.083
|
||||||
|
57.248c1.081-.214 2.386 1.735 8.238 10.411 12.361 18.429 21.903 43.154
|
||||||
|
24.292 63.104l.429 4.339-29.705 11.494c-53.133 20.599-102.139
|
||||||
|
40.985-135.322 56.162-9.322 4.339-25.587 12.144-36.211 17.352-10.627
|
||||||
|
5.418-19.301 9.539-19.301 9.323s6.721-5.204 14.961-11.278c64.844-47.055
|
||||||
|
121.007-98.669 163.076-150.279 4.555-5.423 8.677-10.411
|
||||||
|
9.107-10.627l.436-.001zm-33.612 8.242c.868.867-23.853 28.84-40.768
|
||||||
|
45.971-41.853 42.723-83.273 76.12-134.669 108.649-6.505 4.119-12.359
|
||||||
|
7.804-13.011 8.24-1.519.867.432-1.303 22.986-25.808 14.314-15.397
|
||||||
|
25.155-28.408 37.516-44.453 8.24-10.624 9.759-12.143 21.688-20.604
|
||||||
|
31.878-22.987 105.39-72.864 106.258-71.995z" />
|
||||||
|
</g>
|
||||||
|
<path
|
||||||
|
fill="#231F1F"
|
||||||
|
d="M265.747 900.102c-2.276 0-4.553.217-6.809.217-45.975 2.45-76.983
|
||||||
|
22.683-95.113 62.195-15.506 35.735-13.813 82.446.174 118.4 16.265 35.131
|
||||||
|
42.547 53.672 86.416 60.675 9.282 1.52 15.506 6.616 33.483 27.606l22.12
|
||||||
|
25.915h40.118l-26.676-26.892c-14.746-14.745-26.673-27.584-26.673-28.712
|
||||||
|
0-1.127 5.641-3.599 12.469-5.68 22.51-6.812 41.203-24.202 54.279-50.854
|
||||||
|
10.583-21.402 12.102-28.018 13.619-54.646
|
||||||
|
3.969-79.26-37.82-128.813-107.409-128.247l.002.023zm35.173 207.27c-19.517
|
||||||
|
9.453-47.857 11.34-66.356
|
||||||
|
4.553-19.127-7.025-37.646-26.889-45.975-49.377-9.259-24.591-7.937-69.956
|
||||||
|
2.646-90.386 17.023-32.528 39.534-47.49 72.43-47.49 48.792 0 76.549 29.884
|
||||||
|
80.171 86.048 2.863 46.885-12.838 82.058-42.895
|
||||||
|
96.632l-.021.02zm693.025-139.568c-16.828 0-29.709 6.811-38.385 20.231l-6.809
|
||||||
|
10.627v-27.628h-29.123v165.678h29.104v-52.956c0-48.424.604-54.084
|
||||||
|
7.371-67.335 9.326-18.172 25.371-27.234 40.879-22.897l10.408
|
||||||
|
3.036v-28.712h-13.445v-.044zm-171.098-1.519c-5.705 0-11.756.76-17.781
|
||||||
|
2.084-38.971 10.19-60.938 47.489-59.594 85.873 0 32.139 6.244 48.206 21.752
|
||||||
|
65.057 31.77 26.065 60.502 28.146 99.275 14.161 6.615-2.819 13.814-6.072
|
||||||
|
13.814-6.072v-26.065l-13.814 7.156c-31.379 13.661-55.016
|
||||||
|
13.661-73.949-2.43-12.076-12.296-17.391-27.042-19.84-43.868h117.426v-22.339c0-45.539-27.41-74.294-67.313-73.557h.024zm-47.492
|
||||||
|
72.647s4.338-28.407 20.428-39.554c7.744-5.466 16.633-8.11 25.328-8.11 8.719
|
||||||
|
0 17.414 2.818 24.592 8.306 14.748 11.341 17.219 39.143 17.219
|
||||||
|
39.143h-87.566v.215h-.001zm-702.111-29.881c-31.573-19.128-45.582-32.921-43.869-49.185
|
||||||
|
4.9-44.997 60.503-38.773
|
||||||
|
91.295-21.749l.219-30.272s-17.024-7.373-41.421-7.764c-37.429-.564-61.63
|
||||||
|
11.709-72.97 36.691-16.656 36.865-1.908 64.665 51.396 95.677 29.925 17.412
|
||||||
|
43.152 32.528 43.152 49.008 0 34.047-41.05 45.931-83.401
|
||||||
|
24.57-8.716-4.337-16.09-7.959-16.48-7.959-1.519 9.651-.736 32.745-.736
|
||||||
|
32.745s13.012 5.466 32.527 9.236c48.4 9.65 92.445-13.054 96.608-49.919
|
||||||
|
3.622-34.609-8.893-52.761-56.318-81.104l-.002.025zm1178.454-43.155c-5.682
|
||||||
|
0-11.711.78-18 2.103-38.924 10.192-60.85 47.492-59.354 85.876 0 32.095 6.225
|
||||||
|
48.011 21.729 64.838 31.771 26.089 60.504 28.191 99.473 14.184 6.592-2.818
|
||||||
|
13.77-6.026 13.77-6.026v-26.109l-13.791 7.197c-31.443 13.619-55.082
|
||||||
|
13.619-73.947-2.471-12.145-12.274-17.414-26.847-19.865-43.871h117.232v-22.336c0-45.321-27.412-74.099-67.313-73.339l.066-.046zm-47.492
|
||||||
|
72.646s4.381-28.365 20.449-39.729c7.721-5.485 16.611-8.132 25.307-8.132
|
||||||
|
8.674 0 17.414 2.819 24.594 8.327 14.746 11.342 17.219 39.338 17.219
|
||||||
|
39.338h-87.545l-.024.196zm-533.809-29.123c-31.573-19.083-45.54-32.92-43.848-49.185
|
||||||
|
4.9-45.02 60.504-38.773
|
||||||
|
91.296-21.749l.218-30.272s-17.024-7.374-41.421-7.722c-37.429-.563-61.63
|
||||||
|
11.711-72.991 36.692-16.633 36.864-1.692 64.666 51.437 95.677 29.884 17.393
|
||||||
|
43.111 32.312 43.111 48.792 0 34.047-41.029 46.126-83.381
|
||||||
|
24.569-8.674-4.337-16.046-7.916-16.48-7.916-1.519 9.649-.736 32.746-.736
|
||||||
|
32.746s12.858 5.27 32.31 9.237c48.445 9.672 92.51-13.012 96.653-49.877
|
||||||
|
3.6-34.437-8.891-52.587-56.167-80.952v-.04zm752.421-42.005c-16.828 0-29.859
|
||||||
|
6.829-38.383 20.254l-6.811
|
||||||
|
10.582v-27.583h-29.123V1136.3h29.102v-52.954c0-48.403.584-54.085
|
||||||
|
7.375-67.313 9.324-18.15 25.369-27.235 40.875-22.878l10.408
|
||||||
|
3.035v-28.775h-13.443zm-984.021
|
||||||
|
41.05V902.941h-29.361v233.728h123.478v-27.604h-94.116v-100.601zm679.015
|
||||||
|
32.896l-24.201 62.975-23.27-63.322-23.637-70.173h-30.055c19.475 55.212
|
||||||
|
40.658 111.376 62.02 165.829 9.26.216 18.541 0 27.799 0l32.682-82.058
|
||||||
|
33.287-83.75h-28.732s-12.688 33.266-25.914 70.521l.021-.022zM506.455
|
||||||
|
839.251c4.728 0 8.674-1.516 11.927-4.769 3.208-3.211 4.9-6.984 4.9-11.711
|
||||||
|
0-4.728-1.692-8.675-4.9-11.711-3.253-3.035-7.005-4.555-11.711-4.555-4.769
|
||||||
|
0-8.717 1.52-11.927 4.728-3.252 3.211-4.727 7.158-4.727 11.712 0 4.771 1.519
|
||||||
|
8.716 4.727 11.711 3.037 3.034 6.984 4.553 11.711
|
||||||
|
4.553v.042zm-10.408-26.889c2.818-2.818 6.245-4.121 10.625-4.121 4.121 0
|
||||||
|
7.548 1.303 10.411 4.121 2.819 2.819 4.337 6.245 4.337 10.409 0 4.163-1.518
|
||||||
|
7.764-4.337 10.582-2.862 2.817-6.29 4.163-10.411 4.163-4.185
|
||||||
|
0-7.59-1.301-10.408-4.163-2.819-2.818-4.337-6.419-4.337-10.582 0-4.164
|
||||||
|
1.301-7.589 4.12-10.409zm7.003 11.928h1.908c1.346 0 2.668 1.3 3.795
|
||||||
|
3.773l2.279 5.116h3.577l-2.818-5.683c-1.149-2.275-2.276-3.598-3.6-3.969
|
||||||
|
1.67-.39 2.992-.953 3.947-2.082.952-.974 1.3-2.298 1.3-3.795
|
||||||
|
0-1.734-.542-3.034-1.69-3.989-1.302-1.084-3.384-1.669-6.074-1.669h-6.026v21.187h3.035v-8.891l.367.002zm0-9.846h2.647c1.908
|
||||||
|
0 3.253.39 3.99.953.716.564.911 1.303.911 2.646 0 2.45-1.52 3.601-4.337
|
||||||
|
3.601h-3.252v-7.2h.041zm-485.018
|
||||||
|
7.958c0-7.373-.216-12.858-.39-16.09h.174c.758 3.814 1.691 6.657 2.45
|
||||||
|
8.543l28.19 62.975h4.728l28.19-63.538c.761-1.733 1.52-4.337
|
||||||
|
2.452-7.959h.216c-.563 6.29-.758 11.754-.758
|
||||||
|
16.112v55.581h9.648v-82.622h-12.1L54.919 852.87c-.955 2.276-2.278
|
||||||
|
5.683-3.969
|
||||||
|
10.193h-.392c-.563-2.234-1.886-5.639-3.772-9.803l-25.33-58.053H8.598v82.621h9.281v-55.385l.153-.041zm96.045.154h8.329v51.458h-8.329v-51.458zm4.164-18.868c1.736
|
||||||
|
0 3.21-.587 4.337-1.734 1.15-1.129 1.91-2.603 1.91-4.337
|
||||||
|
0-1.692-.565-3.211-1.887-4.337-1.171-1.15-2.668-1.737-4.381-1.737-1.69
|
||||||
|
0-3.208.587-4.338 1.737-1.146 1.126-1.907 2.645-1.907 4.337 0 1.887.586
|
||||||
|
3.208 1.907 4.337 1.304 1.147 2.647 1.734 4.338 1.734h.021zm63.54
|
||||||
|
71.455v-9.066c-4.555 3.405-9.456 5.098-14.53 5.098-6.07
|
||||||
|
0-10.995-2.081-14.595-6.07-3.577-3.947-5.485-9.436-5.485-16.266 0-7.156
|
||||||
|
1.908-12.84 5.854-17.177 3.795-4.163 8.719-6.245 14.748-6.245 4.922 0 9.647
|
||||||
|
1.52 14.009 4.557v-9.65c-3.968-2.082-8.5-3.037-13.619-3.037-9.456 0-16.827
|
||||||
|
3.037-22.335 8.894-5.466 5.854-8.285 13.813-8.285 23.42 0 8.543 2.45 15.722
|
||||||
|
7.548 21.209 5.312 5.637 12.102 8.5 20.428 8.5 6.438-.178 11.707-1.523
|
||||||
|
16.262-4.167zm23.831-27.433c0-6.788 1.518-12.273 4.337-16.049 2.647-3.403
|
||||||
|
5.855-5.116 9.65-5.116 3.21 0 5.486.585 7.155
|
||||||
|
1.908v-9.846c-1.3-.563-3.187-.758-5.637-.758-3.405 0-6.439 1.146-9.107
|
||||||
|
3.253-2.819 2.231-5.074 5.638-6.397
|
||||||
|
9.975h-.216v-12.08h-9.433v58.985h9.454V847.71h.194zm54.279 31.443c8.892 0
|
||||||
|
16.048-2.863 21.36-8.543 5.29-5.641 7.936-13.229 7.936-22.686
|
||||||
|
0-9.647-2.427-17.021-7.372-22.51-4.9-5.483-11.711-8.132-20.603-8.132s-16.048
|
||||||
|
2.647-21.36 7.764c-5.681 5.641-8.674 13.599-8.674 23.813 0 8.891 2.429
|
||||||
|
16.265 7.548 21.751 5.29 5.68 12.295 8.521 21.165
|
||||||
|
8.521v.022zm-13.445-48.055c3.6-3.795 8.329-5.683 14.182-5.683 6.074 0 10.627
|
||||||
|
1.888 14.01 5.683 3.404 3.969 5.097 9.63 5.097 17.197 0 7.198-1.519
|
||||||
|
12.859-4.729 16.654-3.208 3.969-7.936 6.071-14.183 6.071-6.071
|
||||||
|
0-10.777-2.104-14.377-6.071-3.577-3.99-5.291-9.456-5.291-16.654-.368-7.156
|
||||||
|
1.519-13.01 5.291-17.197zm84.141 42.916c3.599-3.208 5.509-7.155 5.509-12.102
|
||||||
|
0-4.337-1.52-7.936-4.338-10.777-2.3-2.275-5.854-4.337-10.994-6.419-4.556-1.906-7.374-3.6-8.893-4.923-1.517-1.517-2.45-3.402-2.45-6.071
|
||||||
|
0-2.45.955-4.337 2.821-5.855 1.908-1.516 4.337-2.253 7.59-2.253 5.096 0
|
||||||
|
9.454 1.343 13.443 4.185v-9.456c-3.816-1.906-7.958-2.817-12.686-2.817-6.071
|
||||||
|
0-11.189 1.671-14.964 4.899-3.969 3.212-5.854 7.375-5.854 12.274 0 4.337 1.3
|
||||||
|
7.938 3.771 10.582 2.082 2.256 5.641 4.556 10.583 6.614 4.729 2.083 7.938
|
||||||
|
3.968 9.65 5.485 1.691 1.52 2.45 3.405 2.45 5.641 0 5.506-3.772 8.349-11.146
|
||||||
|
8.349-5.682 0-10.776-1.866-15.333-5.638v10.189c4.121 2.475 9.066 3.601 14.53
|
||||||
|
3.601 7.005-.368 12.49-2.081 16.264-5.486l.047-.022zm45.019-56.73c-8.893
|
||||||
|
0-16.048 2.647-21.361 7.764-5.638 5.641-8.674 13.599-8.674 23.813 0 8.891
|
||||||
|
2.452 16.265 7.547 21.751 5.313 5.68 12.295 8.521 21.187 8.521 9.107 0
|
||||||
|
16.048-2.861 21.36-8.545 5.313-5.637 7.958-13.227 7.958-22.683
|
||||||
|
0-9.65-2.472-17.022-7.374-22.509-5.115-5.487-11.927-8.133-20.601-8.133l-.042.021zm18.345
|
||||||
|
31.012c0 7.198-1.518 12.859-4.727 16.654-3.21 3.969-7.938 6.071-14.184
|
||||||
|
6.071-6.074 0-10.778-2.104-14.379-6.071-3.577-3.99-5.29-9.456-5.29-16.654
|
||||||
|
0-7.59 1.888-13.444 5.683-17.393 3.576-3.773 8.306-5.682 14.182-5.682 5.854
|
||||||
|
0 10.561 1.907 13.964 5.682 3.037 4.163 4.729 9.824 4.729
|
||||||
|
17.393h.022zm25.547 29.513h9.433v-51.068h13.813v-7.938H428.93v-9.108c0-8.282
|
||||||
|
3.208-12.446 9.845-12.446 2.234 0 4.511.563 6.203
|
||||||
|
1.518v-8.521c-1.692-.759-3.969-.932-6.812-.932-5.095 0-9.258 1.519-12.664
|
||||||
|
4.727-3.969 3.773-6.071 8.674-6.071
|
||||||
|
15.312v9.672h-9.978v7.936h9.978v50.876l.067-.028zm38.75-16.091c0 11.538
|
||||||
|
5.098 17.414 15.506 17.414 3.774 0 6.614-.606 8.891-1.951v-8.11c-1.734
|
||||||
|
1.302-3.795 1.91-6.071 1.91-3.208
|
||||||
|
0-5.464-.762-6.788-2.475-1.345-1.689-2.103-4.554-2.103-8.501v-33.286h14.961v-7.938h-14.961v-17.39c-3.253
|
||||||
|
1.127-6.44 2.082-9.456
|
||||||
|
3.034v14.355h-10.192v7.938h10.192v34.979l.021.021zm1014.88
|
||||||
|
108.73c-3.209-3.034-7.004-4.553-11.709-4.553-4.77 0-8.719 1.519-11.928
|
||||||
|
4.771-3.209 3.188-4.729 7.155-4.729 11.711 0 4.728 1.52 8.675 4.705 11.709
|
||||||
|
3.211 3.036 7.156 4.556 11.928 4.556 4.705 0 8.674-1.52 11.928-4.729
|
||||||
|
3.188-3.253 4.879-7.004
|
||||||
|
4.879-11.709-.174-4.771-1.887-8.719-5.096-11.754l.022-.002zm-1.517
|
||||||
|
22.338c-2.82 2.818-6.246 4.119-10.41 4.119-4.119
|
||||||
|
0-7.545-1.301-10.408-4.119-2.818-2.863-4.338-6.441-4.338-10.627 0-4.121
|
||||||
|
1.301-7.545 4.164-10.408 2.818-2.817 6.225-4.121 10.582-4.121 4.121 0 7.549
|
||||||
|
1.304 10.41 4.121 2.818 2.863 4.336 6.287 4.336 10.408 0 4.382-1.301
|
||||||
|
7.764-4.336 10.627zm-8.502-9.651c1.691-.39 3.037-1.149 3.969-2.081.955-.977
|
||||||
|
1.303-2.301 1.303-3.815
|
||||||
|
0-1.692-.543-3.037-1.691-3.969-1.301-1.085-3.404-1.671-6.07-1.671h-6.029v21.164h3.037v-8.891h1.885c1.303
|
||||||
|
0 2.604 1.3 3.773 3.773l2.254
|
||||||
|
5.096h3.602l-2.818-5.683c-.977-2.472-2.105-3.601-3.252-3.97l.037.047zm-2.082-1.907h-3.252v-7.155h2.668c1.887
|
||||||
|
0 3.209.345 3.969.932.758.563.932 1.301.932 2.646 0 2.45-1.518 3.579-4.336
|
||||||
|
3.579l.019-.002zM933.443
|
||||||
|
816.353h2.646v-21.187h7.002v-2.646h-16.652v2.646h7.006v21.187h-.002zm16.047-15.917c0-2.062
|
||||||
|
0-3.753-.152-4.705.174 1.126.564 1.887.738 2.45l8.133
|
||||||
|
18.172h1.301l8.152-18.347c.219-.563.393-1.301.76-2.275-.174 1.887-.174
|
||||||
|
3.401-.174 4.553v16.048h2.82V792.52h-3.406l-7.371 16.438c-.174.587-.762
|
||||||
|
1.734-1.129
|
||||||
|
3.037h-.217c-.152-.761-.541-1.519-1.084-2.818l-7.373-16.655h-3.816v23.854h2.666v-15.917l.152-.023z" />
|
||||||
|
</svg>
|
|
@ -0,0 +1,19 @@
|
||||||
|
import Postgres from "./Postgres.svelte"
|
||||||
|
import DynamoDB from "./DynamoDB.svelte"
|
||||||
|
import Elasticsearch from "./Elasticsearch.svelte"
|
||||||
|
import MongoDB from "./MongoDB.svelte"
|
||||||
|
import CouchDB from "./CouchDB.svelte"
|
||||||
|
import S3 from "./S3.svelte"
|
||||||
|
import Airtable from "./Airtable.svelte"
|
||||||
|
import SqlServer from "./SqlServer.svelte"
|
||||||
|
|
||||||
|
export default {
|
||||||
|
POSTGRES: Postgres,
|
||||||
|
DYNAMODB: DynamoDB,
|
||||||
|
MONGODB: MongoDB,
|
||||||
|
ELASTICSEARCH: Elasticsearch,
|
||||||
|
COUCHDB: CouchDB,
|
||||||
|
SQL_SERVER: SqlServer,
|
||||||
|
S3: S3,
|
||||||
|
AIRTABLE: Airtable,
|
||||||
|
}
|
|
@ -54,6 +54,6 @@
|
||||||
on:input={checkValid}
|
on:input={checkValid}
|
||||||
bind:value={name}
|
bind:value={name}
|
||||||
{error} />
|
{error} />
|
||||||
<Label grey extraSmall>Create Integrated Table from External Source</Label>
|
<Label grey extraSmall>Source</Label>
|
||||||
<TableIntegrationMenu bind:integration />
|
<TableIntegrationMenu bind:integration />
|
||||||
</ModalContent>
|
</ModalContent>
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
border: var(--border-light);
|
border: var(--border-light);
|
||||||
padding: var(--spacing-s);
|
padding: var(--spacing-m);
|
||||||
}
|
}
|
||||||
|
|
||||||
.controls {
|
.controls {
|
||||||
|
|
|
@ -29,8 +29,12 @@
|
||||||
<i class="ri-arrow-right-s-line" />
|
<i class="ri-arrow-right-s-line" />
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
|
<slot name="icon" />
|
||||||
{#if icon}
|
{#if icon}
|
||||||
<div class="icon"><i class={icon} /></div>
|
<div class="icon">
|
||||||
|
<i class={icon} />
|
||||||
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
<div class="text">{text}</div>
|
<div class="text">{text}</div>
|
||||||
{#if withActions}
|
{#if withActions}
|
||||||
|
|
|
@ -1,14 +0,0 @@
|
||||||
const handlebars = require("handlebars")
|
|
||||||
|
|
||||||
class Query {
|
|
||||||
constructor(source, schema, type, queryString) {
|
|
||||||
this.source = source
|
|
||||||
this.schema = schema
|
|
||||||
this.type = type
|
|
||||||
this.queryString = queryString
|
|
||||||
}
|
|
||||||
|
|
||||||
build(parameters) {
|
|
||||||
this.queryStr
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -20,9 +20,11 @@
|
||||||
parameters = parameters
|
parameters = parameters
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This is necessary due to the way readable and writable bindings are stored.
|
||||||
|
// The readable binding in the UI gets converted to a UUID value that the client understands
|
||||||
|
// for parsing, then converted back so we can display it the readable form in the UI
|
||||||
function onBindingChange(param, valueToParse) {
|
function onBindingChange(param, valueToParse) {
|
||||||
const parsedBindingValue = readableToRuntimeBinding(bindings, valueToParse)
|
const parsedBindingValue = readableToRuntimeBinding(bindings, valueToParse)
|
||||||
console.log(parsedBindingValue)
|
|
||||||
customParams[param] = parsedBindingValue
|
customParams[param] = parsedBindingValue
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
@ -34,8 +36,9 @@
|
||||||
<Label extraSmall grey>Default</Label>
|
<Label extraSmall grey>Default</Label>
|
||||||
{#if bindable}
|
{#if bindable}
|
||||||
<Label extraSmall grey>Value</Label>
|
<Label extraSmall grey>Value</Label>
|
||||||
|
{:else}
|
||||||
|
<div />
|
||||||
{/if}
|
{/if}
|
||||||
<div />
|
|
||||||
{#each parameters as parameter, idx}
|
{#each parameters as parameter, idx}
|
||||||
<Input thin bind:value={parameter.name} />
|
<Input thin bind:value={parameter.name} />
|
||||||
<Input thin bind:value={parameter.default} />
|
<Input thin bind:value={parameter.default} />
|
||||||
|
@ -43,24 +46,27 @@
|
||||||
<BindableInput
|
<BindableInput
|
||||||
type="string"
|
type="string"
|
||||||
thin
|
thin
|
||||||
on:change={evt => {
|
on:change={evt => onBindingChange(parameter.name, evt.detail)}
|
||||||
console.log('changing', evt.detail)
|
|
||||||
onBindingChange(parameter.name, evt.detail)
|
|
||||||
}}
|
|
||||||
value={runtimeToReadableBinding(bindings, customParams[parameter.name])}
|
value={runtimeToReadableBinding(bindings, customParams[parameter.name])}
|
||||||
{bindings} />
|
{bindings} />
|
||||||
|
{:else}
|
||||||
|
<i
|
||||||
|
class="ri-close-circle-line delete"
|
||||||
|
on:click={() => deleteQueryParameter(idx)} />
|
||||||
{/if}
|
{/if}
|
||||||
<i
|
|
||||||
class="ri-close-circle-line delete"
|
|
||||||
on:click={() => deleteQueryParameter(idx)} />
|
|
||||||
{/each}
|
{/each}
|
||||||
</div>
|
</div>
|
||||||
<Button thin secondary on:click={newQueryParameter}>New Parameter</Button>
|
{#if !bindable}
|
||||||
|
<Button thin secondary small on:click={newQueryParameter}>
|
||||||
|
Add Parameter
|
||||||
|
</Button>
|
||||||
|
{/if}
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
.parameters.bindable {
|
.parameters.bindable {
|
||||||
grid-template-columns: 1fr 1fr 1fr 5%;
|
grid-template-columns: 1fr 1fr 1fr;
|
||||||
}
|
}
|
||||||
|
|
||||||
.parameters {
|
.parameters {
|
||||||
|
@ -70,4 +76,14 @@
|
||||||
align-items: center;
|
align-items: center;
|
||||||
margin-bottom: var(--spacing-xl);
|
margin-bottom: var(--spacing-xl);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.delete {
|
||||||
|
transition: all 0.2s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete:hover {
|
||||||
|
transform: scale(1.1);
|
||||||
|
font-weight: 500;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -26,16 +26,14 @@
|
||||||
title: "Schema",
|
title: "Schema",
|
||||||
key: "SCHEMA",
|
key: "SCHEMA",
|
||||||
},
|
},
|
||||||
{
|
|
||||||
title: "Results",
|
|
||||||
key: "RESULTS",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
title: "Preview",
|
title: "Preview",
|
||||||
key: "PREVIEW",
|
key: "PREVIEW",
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
const QueryVerb = ["create", "read", "update", "delete"]
|
||||||
|
|
||||||
export let query
|
export let query
|
||||||
export let fields = []
|
export let fields = []
|
||||||
|
|
||||||
|
@ -86,6 +84,7 @@
|
||||||
async function previewQuery() {
|
async function previewQuery() {
|
||||||
try {
|
try {
|
||||||
const response = await api.post(`/api/queries/preview`, {
|
const response = await api.post(`/api/queries/preview`, {
|
||||||
|
queryVerb: query.queryVerb,
|
||||||
parameters: query.parameters.reduce(
|
parameters: query.parameters.reduce(
|
||||||
(acc, next) => ({
|
(acc, next) => ({
|
||||||
...acc,
|
...acc,
|
||||||
|
@ -125,63 +124,80 @@
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<section>
|
<header>
|
||||||
<Heading>{query.name}</Heading>
|
<Heading small>{query.name}</Heading>
|
||||||
<div class="config">
|
<div class="queryVerbs">
|
||||||
<Label extraSmall grey>Query Name</Label>
|
{#each QueryVerb as queryVerb}
|
||||||
<Input thin bind:value={query.name} />
|
<div
|
||||||
|
class="queryVerb"
|
||||||
<Spacer medium />
|
class:selected={queryVerb === query.queryVerb}
|
||||||
|
on:click={() => {
|
||||||
<Label extraSmall grey>Query Type</Label>
|
query.queryVerb = queryVerb
|
||||||
<Select secondary bind:value={query.queryType}>
|
}}>
|
||||||
<option value={''}>Select an option</option>
|
{queryVerb}
|
||||||
{#each Object.keys(config) as queryType}
|
</div>
|
||||||
<option value={config[queryType].type}>{queryType}</option>
|
{/each}
|
||||||
{/each}
|
|
||||||
</Select>
|
|
||||||
|
|
||||||
<Spacer medium />
|
|
||||||
|
|
||||||
<IntegrationQueryEditor {query} bind:parameters />
|
|
||||||
|
|
||||||
<Spacer medium />
|
|
||||||
|
|
||||||
<div class="viewer-controls">
|
|
||||||
<Button wide thin blue disabled={!data} on:click={saveQuery}>Save</Button>
|
|
||||||
<Button wide thin primary on:click={previewQuery}>Run</Button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<section class="viewer">
|
|
||||||
{#if data}
|
|
||||||
<Switcher headings={PREVIEW_HEADINGS} bind:value={tab}>
|
|
||||||
{#if tab === 'JSON'}
|
|
||||||
<pre class="preview">{JSON.stringify(data[0], undefined, 2)}</pre>
|
|
||||||
{:else if tab === 'PREVIEW'}
|
|
||||||
<ExternalDataSourceTable {query} {data} />
|
|
||||||
{:else if tab === 'SCHEMA'}
|
|
||||||
{#each fields as field, idx}
|
|
||||||
<div class="field">
|
|
||||||
<Input thin type={'text'} bind:value={field.name} />
|
|
||||||
<Select secondary thin bind:value={field.type}>
|
|
||||||
<option value={''}>Select an option</option>
|
|
||||||
<option value={'STRING'}>Text</option>
|
|
||||||
<option value={'NUMBER'}>Number</option>
|
|
||||||
<option value={'BOOLEAN'}>Boolean</option>
|
|
||||||
<option value={'DATETIME'}>Datetime</option>
|
|
||||||
</Select>
|
|
||||||
<i
|
|
||||||
class="ri-close-circle-line delete"
|
|
||||||
on:click={() => deleteField(idx)} />
|
|
||||||
</div>
|
|
||||||
{/each}
|
|
||||||
<Button thin secondary on:click={newField}>Add Field</Button>
|
|
||||||
{/if}
|
|
||||||
</Switcher>
|
|
||||||
{/if}
|
|
||||||
</section>
|
|
||||||
</div>
|
</div>
|
||||||
</section>
|
<Select thin secondary bind:value={query.queryType}>
|
||||||
|
<option value={''}>Select an option</option>
|
||||||
|
{#each Object.keys(config) as queryType}
|
||||||
|
<option value={config[queryType].type}>{queryType}</option>
|
||||||
|
{/each}
|
||||||
|
</Select>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<Spacer large />
|
||||||
|
|
||||||
|
{#if query.queryVerb && query.queryType}
|
||||||
|
<section>
|
||||||
|
<div class="config">
|
||||||
|
<Label extraSmall grey>Query Name</Label>
|
||||||
|
<Input thin bind:value={query.name} />
|
||||||
|
|
||||||
|
<Spacer medium />
|
||||||
|
|
||||||
|
<IntegrationQueryEditor {query} bind:parameters />
|
||||||
|
|
||||||
|
<Spacer medium />
|
||||||
|
|
||||||
|
<div class="viewer-controls">
|
||||||
|
<Button wide thin blue disabled={!data} on:click={saveQuery}>
|
||||||
|
Save
|
||||||
|
</Button>
|
||||||
|
<Button wide thin primary on:click={previewQuery}>Run</Button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<section class="viewer">
|
||||||
|
{#if data}
|
||||||
|
<Switcher headings={PREVIEW_HEADINGS} bind:value={tab}>
|
||||||
|
{#if tab === 'JSON'}
|
||||||
|
<pre class="preview">{JSON.stringify(data[0], undefined, 2)}</pre>
|
||||||
|
{:else if tab === 'PREVIEW'}
|
||||||
|
<ExternalDataSourceTable {query} {data} />
|
||||||
|
{:else if tab === 'SCHEMA'}
|
||||||
|
{#each fields as field, idx}
|
||||||
|
<div class="field">
|
||||||
|
<Input thin type={'text'} bind:value={field.name} />
|
||||||
|
<Select secondary thin bind:value={field.type}>
|
||||||
|
<option value={''}>Select an option</option>
|
||||||
|
<option value={'STRING'}>Text</option>
|
||||||
|
<option value={'NUMBER'}>Number</option>
|
||||||
|
<option value={'BOOLEAN'}>Boolean</option>
|
||||||
|
<option value={'DATETIME'}>Datetime</option>
|
||||||
|
</Select>
|
||||||
|
<i
|
||||||
|
class="ri-close-circle-line delete"
|
||||||
|
on:click={() => deleteField(idx)} />
|
||||||
|
</div>
|
||||||
|
{/each}
|
||||||
|
<Button thin secondary on:click={newField}>Add Field</Button>
|
||||||
|
{/if}
|
||||||
|
</Switcher>
|
||||||
|
{/if}
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
{/if}
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
.field {
|
.field {
|
||||||
|
@ -208,7 +224,29 @@
|
||||||
white-space: pre-wrap;
|
white-space: pre-wrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
.viewer {
|
header {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.queryVerbs {
|
||||||
|
display: flex;
|
||||||
|
flex: 1;
|
||||||
|
font-size: var(--font-size-m);
|
||||||
|
align-items: center;
|
||||||
|
margin-left: var(--spacing-l);
|
||||||
|
}
|
||||||
|
|
||||||
|
.queryVerb {
|
||||||
|
text-transform: capitalize;
|
||||||
|
margin-right: var(--spacing-m);
|
||||||
|
color: var(--grey-5);
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.selected {
|
||||||
|
color: var(--white);
|
||||||
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
|
|
||||||
.viewer-controls {
|
.viewer-controls {
|
||||||
|
|
|
@ -0,0 +1,188 @@
|
||||||
|
<script>
|
||||||
|
import CodeMirror from "./codemirror"
|
||||||
|
import { onMount, createEventDispatcher } from "svelte"
|
||||||
|
|
||||||
|
const dispatch = createEventDispatcher()
|
||||||
|
|
||||||
|
export let value = ""
|
||||||
|
export let readonly = false
|
||||||
|
export let errorLoc = null
|
||||||
|
export let lineNumbers = true
|
||||||
|
export let tab = true
|
||||||
|
export let mode
|
||||||
|
|
||||||
|
let w
|
||||||
|
let h
|
||||||
|
|
||||||
|
// We have to expose set and update methods, rather
|
||||||
|
// than making this state-driven through props,
|
||||||
|
// because it's difficult to update an editor
|
||||||
|
// without resetting scroll otherwise
|
||||||
|
export async function set(new_value, new_mode) {
|
||||||
|
if (new_mode !== mode) {
|
||||||
|
await createEditor((mode = new_mode))
|
||||||
|
}
|
||||||
|
|
||||||
|
value = new_value
|
||||||
|
updating_externally = true
|
||||||
|
if (editor) editor.setValue(value)
|
||||||
|
updating_externally = false
|
||||||
|
}
|
||||||
|
|
||||||
|
export function update(new_value) {
|
||||||
|
value = new_value
|
||||||
|
|
||||||
|
if (editor) {
|
||||||
|
const { left, top } = editor.getScrollInfo()
|
||||||
|
editor.setValue((value = new_value))
|
||||||
|
editor.scrollTo(left, top)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export function resize() {
|
||||||
|
editor.refresh()
|
||||||
|
}
|
||||||
|
|
||||||
|
export function focus() {
|
||||||
|
editor.focus()
|
||||||
|
}
|
||||||
|
|
||||||
|
const modes = {
|
||||||
|
js: {
|
||||||
|
name: "javascript",
|
||||||
|
json: false,
|
||||||
|
},
|
||||||
|
json: {
|
||||||
|
name: "javascript",
|
||||||
|
json: true,
|
||||||
|
},
|
||||||
|
sql: {
|
||||||
|
name: "sql",
|
||||||
|
},
|
||||||
|
svelte: {
|
||||||
|
name: "handlebars",
|
||||||
|
base: "text/html",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
const refs = {}
|
||||||
|
let editor
|
||||||
|
let updating_externally = false
|
||||||
|
let marker
|
||||||
|
let error_line
|
||||||
|
let destroyed = false
|
||||||
|
|
||||||
|
$: if (editor && w && h) {
|
||||||
|
editor.refresh()
|
||||||
|
}
|
||||||
|
|
||||||
|
$: {
|
||||||
|
if (marker) marker.clear()
|
||||||
|
|
||||||
|
if (errorLoc) {
|
||||||
|
const line = errorLoc.line - 1
|
||||||
|
const ch = errorLoc.column
|
||||||
|
|
||||||
|
marker = editor.markText(
|
||||||
|
{ line, ch },
|
||||||
|
{ line, ch: ch + 1 },
|
||||||
|
{
|
||||||
|
className: "error-loc",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
error_line = line
|
||||||
|
} else {
|
||||||
|
error_line = null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let previous_error_line
|
||||||
|
$: if (editor) {
|
||||||
|
if (previous_error_line != null) {
|
||||||
|
editor.removeLineClass(previous_error_line, "wrap", "error-line")
|
||||||
|
}
|
||||||
|
|
||||||
|
if (error_line && error_line !== previous_error_line) {
|
||||||
|
editor.addLineClass(error_line, "wrap", "error-line")
|
||||||
|
previous_error_line = error_line
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onMount(() => {
|
||||||
|
createEditor(mode).then(() => {
|
||||||
|
if (editor) editor.setValue(value || "")
|
||||||
|
})
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
destroyed = true
|
||||||
|
if (editor) editor.toTextArea()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
let first = true
|
||||||
|
|
||||||
|
async function createEditor(mode) {
|
||||||
|
if (destroyed || !CodeMirror) return
|
||||||
|
|
||||||
|
if (editor) editor.toTextArea()
|
||||||
|
|
||||||
|
const opts = {
|
||||||
|
lineNumbers,
|
||||||
|
lineWrapping: true,
|
||||||
|
indentWithTabs: true,
|
||||||
|
indentUnit: 2,
|
||||||
|
tabSize: 2,
|
||||||
|
value: "",
|
||||||
|
mode: modes[mode] || {
|
||||||
|
name: mode,
|
||||||
|
},
|
||||||
|
readOnly: readonly,
|
||||||
|
autoCloseBrackets: true,
|
||||||
|
autoCloseTags: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!tab)
|
||||||
|
opts.extraKeys = {
|
||||||
|
Tab: tab,
|
||||||
|
"Shift-Tab": tab,
|
||||||
|
}
|
||||||
|
|
||||||
|
// Creating a text editor is a lot of work, so we yield
|
||||||
|
// the main thread for a moment. This helps reduce jank
|
||||||
|
if (first) await sleep(50)
|
||||||
|
|
||||||
|
if (destroyed) return
|
||||||
|
|
||||||
|
editor = CodeMirror.fromTextArea(refs.editor, opts)
|
||||||
|
|
||||||
|
editor.on("change", instance => {
|
||||||
|
if (!updating_externally) {
|
||||||
|
const value = instance.getValue()
|
||||||
|
dispatch("change", { value })
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
if (first) await sleep(50)
|
||||||
|
editor.refresh()
|
||||||
|
|
||||||
|
first = false
|
||||||
|
}
|
||||||
|
|
||||||
|
function sleep(ms) {
|
||||||
|
return new Promise(fulfil => setTimeout(fulfil, ms))
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<textarea tabindex="0" bind:this={refs.editor} readonly {value} />
|
||||||
|
|
||||||
|
<style>
|
||||||
|
textarea {
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
:global(.CodeMirror) {
|
||||||
|
border-radius: var(--border-radius-m);
|
||||||
|
font-family: var(--font-sans) !important;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -1,6 +1,6 @@
|
||||||
<script>
|
<script>
|
||||||
import { TextArea, Label, Input, Heading, Spacer } from "@budibase/bbui"
|
import { TextArea, Label, Input, Heading, Spacer } from "@budibase/bbui"
|
||||||
import Editor from "./QueryEditor.svelte"
|
import Editor from "./SvelteEditor.svelte"
|
||||||
import ParameterBuilder from "./QueryParameterBuilder.svelte"
|
import ParameterBuilder from "./QueryParameterBuilder.svelte"
|
||||||
|
|
||||||
const QueryTypes = {
|
const QueryTypes = {
|
||||||
|
@ -12,22 +12,30 @@
|
||||||
export let query
|
export let query
|
||||||
|
|
||||||
function updateQuery({ detail }) {
|
function updateQuery({ detail }) {
|
||||||
query.queryString = detail
|
query.queryString = detail.value
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<ParameterBuilder bind:parameters={query.parameters} bindable={false} />
|
<ParameterBuilder bind:parameters={query.parameters} bindable={false} />
|
||||||
<Spacer large />
|
<Spacer large />
|
||||||
|
|
||||||
<Label grey medium>Query</Label>
|
<Heading extraSmall black>Query</Heading>
|
||||||
|
<Spacer large />
|
||||||
|
|
||||||
{#if query.queryType === QueryTypes.SQL}
|
{#if query.queryType === QueryTypes.SQL}
|
||||||
<TextArea bind:value={query.queryString} />
|
<!-- <TextArea bind:value={query.queryString} /> -->
|
||||||
<!-- <Editor label="Query" on:change={updateQuery} value={query.queryString} /> -->
|
<Editor
|
||||||
|
label="Query"
|
||||||
|
mode="sql"
|
||||||
|
on:change={updateQuery}
|
||||||
|
value={query.queryString} />
|
||||||
{:else if query.queryType === QueryTypes.JSON}
|
{:else if query.queryType === QueryTypes.JSON}
|
||||||
<!-- <ParameterBuilder bind:parameters={query.parameters} bindable={false} />
|
|
||||||
<Spacer large />
|
<Spacer large />
|
||||||
<TextArea bind:value={query.queryString} /> -->
|
<Editor
|
||||||
|
label="Query"
|
||||||
|
mode="json"
|
||||||
|
on:change={updateQuery}
|
||||||
|
value={query.queryString} />
|
||||||
{:else if query.queryType === QueryTypes.FIELDS}
|
{:else if query.queryType === QueryTypes.FIELDS}
|
||||||
<!-- {#each Object.keys()} -->
|
<!-- {#each Object.keys()} -->
|
||||||
{/if}
|
{/if}
|
||||||
|
|
|
@ -8,9 +8,7 @@
|
||||||
} from "@budibase/bbui"
|
} from "@budibase/bbui"
|
||||||
import { AddIcon, ArrowDownIcon } from "components/common/Icons/"
|
import { AddIcon, ArrowDownIcon } from "components/common/Icons/"
|
||||||
import actionTypes from "./actions"
|
import actionTypes from "./actions"
|
||||||
import { createEventDispatcher } from "svelte"
|
|
||||||
|
|
||||||
const dispatch = createEventDispatcher()
|
|
||||||
const eventTypeKey = "##eventHandlerType"
|
const eventTypeKey = "##eventHandlerType"
|
||||||
|
|
||||||
export let event
|
export let event
|
||||||
|
@ -49,10 +47,6 @@
|
||||||
const selectAction = action => () => {
|
const selectAction = action => () => {
|
||||||
selectedAction = action
|
selectedAction = action
|
||||||
}
|
}
|
||||||
|
|
||||||
const saveEventData = () => {
|
|
||||||
dispatch("change", actions)
|
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="actions-container">
|
<div class="actions-container">
|
||||||
|
@ -87,23 +81,11 @@
|
||||||
<span class:selected={action === selectedAction}>
|
<span class:selected={action === selectedAction}>
|
||||||
{index + 1}. {action[eventTypeKey]}
|
{index + 1}. {action[eventTypeKey]}
|
||||||
</span>
|
</span>
|
||||||
<!-- <Body small lh>{index + 1}. {action[eventTypeKey]}</Body> -->
|
|
||||||
<!-- <div class="row-expander" class:rotate={action !== selectedAction}>
|
|
||||||
<ArrowDownIcon />
|
|
||||||
</div> -->
|
|
||||||
</div>
|
</div>
|
||||||
<!-- {#if action === selectedAction}
|
<i
|
||||||
<div class="selected-action-container">
|
class="ri-close-fill"
|
||||||
<svelte:component
|
style="margin-left: var(--spacing-m);"
|
||||||
this={selectedActionComponent}
|
on:click={() => deleteAction(index)} />
|
||||||
parameters={selectedAction.parameters} />
|
|
||||||
<div class="delete-action-button">
|
|
||||||
<TextButton text medium on:click={() => deleteAction(index)}>
|
|
||||||
Delete
|
|
||||||
</TextButton>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{/if} -->
|
|
||||||
</div>
|
</div>
|
||||||
{/each}
|
{/each}
|
||||||
{/if}
|
{/if}
|
||||||
|
@ -114,19 +96,11 @@
|
||||||
<svelte:component
|
<svelte:component
|
||||||
this={selectedActionComponent}
|
this={selectedActionComponent}
|
||||||
parameters={selectedAction.parameters} />
|
parameters={selectedAction.parameters} />
|
||||||
<div class="delete-action-button">
|
|
||||||
<!-- <TextButton text medium on:click={() => deleteAction(index)}>
|
|
||||||
Delete
|
|
||||||
</TextButton> -->
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
<Button thin blue on:click={saveEventData}>Save</Button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<a href="https://docs.budibase.com">Learn more about Actions</a>
|
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
.action-header {
|
.action-header {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
@ -137,6 +111,7 @@
|
||||||
|
|
||||||
.action-header > span {
|
.action-header > span {
|
||||||
margin-bottom: var(--spacing-m);
|
margin-bottom: var(--spacing-m);
|
||||||
|
font-size: var(--font-size-s);
|
||||||
}
|
}
|
||||||
|
|
||||||
.action-header > span:hover,
|
.action-header > span:hover,
|
||||||
|
@ -174,6 +149,8 @@
|
||||||
.action-container {
|
.action-container {
|
||||||
border: var(--border-light);
|
border: var(--border-light);
|
||||||
border-width: 1px 0 0 0;
|
border-width: 1px 0 0 0;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.selected-action-container {
|
.selected-action-container {
|
||||||
|
@ -181,13 +158,6 @@
|
||||||
padding-top: var(--spacing-s);
|
padding-top: var(--spacing-s);
|
||||||
}
|
}
|
||||||
|
|
||||||
.delete-action-button {
|
|
||||||
padding-top: var(--spacing-l);
|
|
||||||
display: flex;
|
|
||||||
justify-content: flex-end;
|
|
||||||
flex-direction: row;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
a {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
color: var(--grey-5);
|
color: var(--grey-5);
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
import { Button, Modal } from "@budibase/bbui"
|
import { Button, Modal } from "@budibase/bbui"
|
||||||
import { createEventDispatcher } from "svelte"
|
import { createEventDispatcher } from "svelte"
|
||||||
import { store } from "builderStore"
|
import { store } from "builderStore"
|
||||||
|
import { notifier } from "builderStore/store/notifications"
|
||||||
import EventEditor from "./EventEditor.svelte"
|
import EventEditor from "./EventEditor.svelte"
|
||||||
import BottomDrawer from "components/common/BottomDrawer.svelte"
|
import BottomDrawer from "components/common/BottomDrawer.svelte"
|
||||||
|
|
||||||
|
@ -15,6 +16,11 @@
|
||||||
function showDrawer() {
|
function showDrawer() {
|
||||||
drawerVisible = true
|
drawerVisible = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const saveEventData = () => {
|
||||||
|
dispatch("change", value)
|
||||||
|
notifier.success("Component actions saved.")
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<Button secondary small on:click={showDrawer}>Define Actions</Button>
|
<Button secondary small on:click={showDrawer}>Define Actions</Button>
|
||||||
|
@ -22,10 +28,10 @@
|
||||||
{#if drawerVisible}
|
{#if drawerVisible}
|
||||||
<BottomDrawer title={'Actions'} onClose={() => (drawerVisible = false)}>
|
<BottomDrawer title={'Actions'} onClose={() => (drawerVisible = false)}>
|
||||||
<heading slot="buttons">
|
<heading slot="buttons">
|
||||||
<Button thin blue>Save</Button>
|
<Button thin blue on:click={saveEventData}>Save</Button>
|
||||||
</heading>
|
</heading>
|
||||||
<div slot="body">
|
<div slot="body">
|
||||||
<EventEditor event={value} eventType={name} on:change />
|
<EventEditor event={value} eventType={name} />
|
||||||
</div>
|
</div>
|
||||||
</BottomDrawer>
|
</BottomDrawer>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
|
@ -60,3 +60,9 @@
|
||||||
<pre>{query.queryString}</pre>
|
<pre>{query.queryString}</pre>
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.root {
|
||||||
|
padding: var(--spacing-m);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
const CouchDB = require("../../db")
|
const CouchDB = require("../../db")
|
||||||
const bcrypt = require("../../utilities/bcrypt")
|
const bcrypt = require("../../utilities/bcrypt")
|
||||||
const { generateDatasourceID, getDatasourceParams } = require("../../db/utils")
|
const {
|
||||||
|
generateDatasourceID,
|
||||||
|
getDatasourceParams,
|
||||||
|
getQueryParams,
|
||||||
|
} = require("../../db/utils")
|
||||||
|
|
||||||
exports.fetch = async function(ctx) {
|
exports.fetch = async function(ctx) {
|
||||||
const database = new CouchDB(ctx.user.appId)
|
const database = new CouchDB(ctx.user.appId)
|
||||||
|
@ -17,11 +21,6 @@ exports.fetch = async function(ctx) {
|
||||||
exports.save = async function(ctx) {
|
exports.save = async function(ctx) {
|
||||||
const db = new CouchDB(ctx.user.appId)
|
const db = new CouchDB(ctx.user.appId)
|
||||||
|
|
||||||
// TODO: validate the config against the integration type
|
|
||||||
// if (!somethingIsntValid) {
|
|
||||||
// // ctx.throw(400, "email and Password Required.")
|
|
||||||
// }
|
|
||||||
|
|
||||||
const datasource = {
|
const datasource = {
|
||||||
_id: generateDatasourceID(),
|
_id: generateDatasourceID(),
|
||||||
type: "datasource",
|
type: "datasource",
|
||||||
|
@ -60,9 +59,15 @@ exports.update = async function(ctx) {
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.destroy = async function(ctx) {
|
exports.destroy = async function(ctx) {
|
||||||
// TODO: destroy all queries as well
|
const db = new CouchDB(ctx.user.appId)
|
||||||
const database = new CouchDB(ctx.user.appId)
|
|
||||||
await database.destroy(ctx.params.datasourceId)
|
// Delete all queries for the datasource
|
||||||
|
const rows = await db.allDocs(getQueryParams(ctx.params.datasourceId, null))
|
||||||
|
await db.bulkDocs(rows.rows.map(row => ({ ...row.doc, _deleted: true })))
|
||||||
|
|
||||||
|
// delete the datasource
|
||||||
|
await db.destroy(ctx.params.datasourceId)
|
||||||
|
|
||||||
ctx.message = `Datasource deleted.`
|
ctx.message = `Datasource deleted.`
|
||||||
ctx.status = 200
|
ctx.status = 200
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@ exports.save = async function(ctx) {
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.preview = async function(ctx) {
|
exports.preview = async function(ctx) {
|
||||||
const { query, datasourceId, parameters } = ctx.request.body
|
const { query, datasourceId, parameters, queryVerb } = ctx.request.body
|
||||||
|
|
||||||
let parsedQuery = ""
|
let parsedQuery = ""
|
||||||
if (query) {
|
if (query) {
|
||||||
|
@ -49,7 +49,7 @@ exports.preview = async function(ctx) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx.body = await new Integration(datasource.config, parsedQuery).query()
|
ctx.body = await new Integration(datasource.config, parsedQuery)[queryVerb]()
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.execute = async function(ctx) {
|
exports.execute = async function(ctx) {
|
||||||
|
@ -60,7 +60,6 @@ exports.execute = async function(ctx) {
|
||||||
|
|
||||||
const queryTemplate = handlebars.compile(query.queryString)
|
const queryTemplate = handlebars.compile(query.queryString)
|
||||||
|
|
||||||
// TODO: Take the default params into account
|
|
||||||
const parsedQuery = queryTemplate(ctx.request.body.parameters)
|
const parsedQuery = queryTemplate(ctx.request.body.parameters)
|
||||||
|
|
||||||
const Integration = integrations[datasource.source]
|
const Integration = integrations[datasource.source]
|
||||||
|
@ -69,7 +68,11 @@ exports.execute = async function(ctx) {
|
||||||
ctx.throw(400, "Integration type does not exist.")
|
ctx.throw(400, "Integration type does not exist.")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
const response = await new Integration(datasource.config, parsedQuery).query()
|
|
||||||
|
// call the relevant CRUD method on the integration class
|
||||||
|
const response = await new Integration(datasource.config, parsedQuery)[
|
||||||
|
query.queryVerb
|
||||||
|
]()
|
||||||
|
|
||||||
ctx.body = response
|
ctx.body = response
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,10 +12,10 @@ const joiValidator = require("../../middleware/joi-validator")
|
||||||
const router = Router()
|
const router = Router()
|
||||||
|
|
||||||
const QueryVerb = {
|
const QueryVerb = {
|
||||||
Create: "CREATE",
|
Create: "create",
|
||||||
Read: "READ",
|
Read: "read",
|
||||||
Update: "UPDATE",
|
Update: "update",
|
||||||
Delete: "DELETE",
|
Delete: "delete",
|
||||||
}
|
}
|
||||||
|
|
||||||
function generateQueryValidation() {
|
function generateQueryValidation() {
|
||||||
|
@ -30,7 +30,7 @@ function generateQueryValidation() {
|
||||||
name: Joi.string(),
|
name: Joi.string(),
|
||||||
default: Joi.string()
|
default: Joi.string()
|
||||||
})),
|
})),
|
||||||
// queryVerb: Joi.string().allow(...Object.values(QueryVerb)).required(),
|
queryVerb: Joi.string().allow(...Object.values(QueryVerb)).required(),
|
||||||
queryType: Joi.string().required(),
|
queryType: Joi.string().required(),
|
||||||
schema: Joi.object({}).required().unknown(true)
|
schema: Joi.object({}).required().unknown(true)
|
||||||
}))
|
}))
|
||||||
|
@ -40,6 +40,7 @@ function generateQueryPreviewValidation() {
|
||||||
// prettier-ignore
|
// prettier-ignore
|
||||||
return joiValidator.body(Joi.object({
|
return joiValidator.body(Joi.object({
|
||||||
query: Joi.string(),
|
query: Joi.string(),
|
||||||
|
queryVerb: Joi.string().allow(...Object.values(QueryVerb)).required(),
|
||||||
datasourceId: Joi.string().required(),
|
datasourceId: Joi.string().required(),
|
||||||
parameters: Joi.object({}).required().unknown(true)
|
parameters: Joi.object({}).required().unknown(true)
|
||||||
}))
|
}))
|
||||||
|
|
|
@ -254,6 +254,14 @@ exports.generateQueryID = datasourceId => {
|
||||||
/**
|
/**
|
||||||
* Gets parameters for retrieving a query, this is a utility function for the getDocParams function.
|
* Gets parameters for retrieving a query, this is a utility function for the getDocParams function.
|
||||||
*/
|
*/
|
||||||
exports.getQueryParams = (queryId = null, otherProps = {}) => {
|
exports.getQueryParams = (datasourceId = null, otherProps = {}) => {
|
||||||
return getDocParams(DocumentTypes.QUERY, queryId, otherProps)
|
if (datasourceId == null) {
|
||||||
|
return getDocParams(DocumentTypes.QUERY, null, otherProps)
|
||||||
|
}
|
||||||
|
|
||||||
|
return getDocParams(
|
||||||
|
DocumentTypes.QUERY,
|
||||||
|
`${datasourceId}${SEPARATOR}`,
|
||||||
|
otherProps
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,11 +31,6 @@ class AirtableIntegration {
|
||||||
|
|
||||||
// }
|
// }
|
||||||
|
|
||||||
async read() {
|
|
||||||
const response = await this.client.query(this.queryString)
|
|
||||||
return response.rows
|
|
||||||
}
|
|
||||||
|
|
||||||
// async update() {
|
// async update() {
|
||||||
|
|
||||||
// }
|
// }
|
||||||
|
@ -44,9 +39,9 @@ class AirtableIntegration {
|
||||||
|
|
||||||
// }
|
// }
|
||||||
|
|
||||||
async query() {
|
async read() {
|
||||||
const records = await this.client(this.config.table)
|
const records = await this.client(this.config.table)
|
||||||
.select({ maxRecords: 10, view: "Grid view" })
|
.select({ maxRecords: this.query.records, view: this.query.view })
|
||||||
.firstPage()
|
.firstPage()
|
||||||
return records.map(({ fields }) => fields)
|
return records.map(({ fields }) => fields)
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@ class CouchDBIntegration {
|
||||||
this.client = new PouchDB(`${config.url}/${config.database}`)
|
this.client = new PouchDB(`${config.url}/${config.database}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
async query() {
|
async read() {
|
||||||
try {
|
try {
|
||||||
const result = await this.client.allDocs({
|
const result = await this.client.allDocs({
|
||||||
include_docs: true,
|
include_docs: true,
|
||||||
|
|
|
@ -62,7 +62,7 @@ class DynamoDBIntegration {
|
||||||
AWS.config.update(this.config)
|
AWS.config.update(this.config)
|
||||||
}
|
}
|
||||||
|
|
||||||
async query() {
|
async read() {
|
||||||
const response = await this.client.query({
|
const response = await this.client.query({
|
||||||
TableName: this.config.table,
|
TableName: this.config.table,
|
||||||
KeyConditionExpression: this.config.KeyConditionExpression,
|
KeyConditionExpression: this.config.KeyConditionExpression,
|
||||||
|
|
|
@ -26,7 +26,7 @@ class ElasticSearchIntegration {
|
||||||
this.client = new Client({ node: config.url })
|
this.client = new Client({ node: config.url })
|
||||||
}
|
}
|
||||||
|
|
||||||
async query() {
|
async read() {
|
||||||
try {
|
try {
|
||||||
const result = await this.client.search({
|
const result = await this.client.search({
|
||||||
index: this.config.index,
|
index: this.config.index,
|
||||||
|
|
|
@ -37,7 +37,7 @@ class SqlServerIntegration {
|
||||||
return await this.client.connect(this.config)
|
return await this.client.connect(this.config)
|
||||||
}
|
}
|
||||||
|
|
||||||
async query() {
|
async read() {
|
||||||
try {
|
try {
|
||||||
await this.connect()
|
await this.connect()
|
||||||
const response = await this.client.query(this.config.query)
|
const response = await this.client.query(this.config.query)
|
||||||
|
|
|
@ -17,7 +17,7 @@ const SCHEMA = {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
query: {
|
query: {
|
||||||
json: {
|
JSON: {
|
||||||
type: "json",
|
type: "json",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -32,15 +32,15 @@ class MongoIntegration {
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
this.config.query = {}
|
this.config.query = {}
|
||||||
}
|
}
|
||||||
|
this.connect()
|
||||||
}
|
}
|
||||||
|
|
||||||
async connect() {
|
async connect() {
|
||||||
return this.client.connect()
|
return this.client.connect()
|
||||||
}
|
}
|
||||||
|
|
||||||
async query() {
|
async read() {
|
||||||
try {
|
try {
|
||||||
await this.connect()
|
|
||||||
const db = this.client.db(this.config.db)
|
const db = this.client.db(this.config.db)
|
||||||
const collection = db.collection(this.config.collection)
|
const collection = db.collection(this.config.collection)
|
||||||
const result = await collection.find(this.config.query).toArray()
|
const result = await collection.find(this.config.query).toArray()
|
||||||
|
|
|
@ -104,10 +104,10 @@ class PostgresIntegration {
|
||||||
|
|
||||||
// }
|
// }
|
||||||
|
|
||||||
async query() {
|
// async query() {
|
||||||
const response = await this.client.query(this.queryString)
|
// const response = await this.client.query(this.queryString)
|
||||||
return response.rows
|
// return response.rows
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
|
Loading…
Reference in New Issue