@ -131,53 +131,44 @@
< / script >
< / script >
< header >
< header >
< Heading small > { query . name } </ Heading >
< div class = "input" >
< Input placeholder = "✎ Edit Query Name" bind:value = { query . name } / >
< / div >
{ #if config }
{ #if config }
< div class = "queryVerbs" >
< div class = "props" >
< / div >
< div class = "query-type" > Query type: < span class = "query-type-span" > { config [ query . queryVerb ]. type } </ span ></ div >
< Select thin secondary bind:value = { query . queryVerb } >
< div class = "select" >
< Select primary thin bind:value = { query . queryVerb } >
{ #each Object . keys ( config ) as queryVerb }
{ #each Object . keys ( config ) as queryVerb }
< option value = { queryVerb } > { queryVerb } </option >
< option value = { queryVerb } > { queryVerb } </option >
{ /each }
{ /each }
< / Select >
< / Select >
< div >
< / div >
{ config [ query . queryVerb ]. type }
< / div >
< / div >
< EditQueryParamsPopover bind:parameters = { query . parameters } bindable= { false } />
< EditQueryParamsPopover bind:parameters = { query . parameters } bindable= { false } />
< Spacer medium / >
< Button primary href = { docsLink } target="_blank" >
< i class = "ri-book-2-line" / >
< / Button >
{ /if }
{ /if }
< / header >
< / header >
< Spacer extraLarge / >
< Spacer large / >
{ #if shouldShowQueryConfig }
{ #if shouldShowQueryConfig }
< section >
< section >
< div class = "config" >
< div class = "config" >
< Label extraSmall grey > Query Name< / Label >
< Input thin bind:value = { query . name } / >
< Spacer medium / >
< IntegrationQueryEditor
< IntegrationQueryEditor
{ query }
{ query }
schema={ config [ query . queryVerb ]}
schema={ config [ query . queryVerb ]}
bind:parameters />
bind:parameters />
< Spacer medium / >
< Spacer extraLarge / >
< Spacer large / >
< div class = "viewer-controls" >
< div class = "viewer-controls" >
< Button
< Button
wide
thin
blue
blue
disabled={ data . length === 0 }
disabled={ data . length === 0 }
on:click={ saveQuery } >
on:click={ saveQuery } >
Save
Save Query
< / Button >
< / Button >
< Button wide thin primary on:click = { previewQuery } > Run</Button >
< Button primary on:click = { previewQuery } > Run Query </ Button >
< / div >
< / div >
< section class = "viewer" >
< section class = "viewer" >
@ -189,10 +180,11 @@
< ExternalDataSourceTable { query } { data } />
< ExternalDataSourceTable { query } { data } />
{ :else if tab === 'SCHEMA' }
{ :else if tab === 'SCHEMA' }
{ #each fields as field , idx }
{ #each fields as field , idx }
< Spacer small / >
< div class = "field" >
< div class = "field" >
< Input thin type = { 'text' } bind:value= { field . name } />
< Input outline placeholder = "Field Name" type = { 'text' } bind:value= { field . name } />
< Select secondary thin bind:value = { field . type } >
< Select thin border bind:value = { field . type } >
< option value = { '' } > Select an option </ option >
< option value = { '' } > Select a field type </ option >
< option value = { 'STRING' } > Text</option >
< option value = { 'STRING' } > Text</option >
< option value = { 'NUMBER' } > Number</option >
< option value = { 'NUMBER' } > Number</option >
< option value = { 'BOOLEAN' } > Boolean</option >
< option value = { 'BOOLEAN' } > Boolean</option >
@ -203,7 +195,8 @@
on:click={() => deleteField ( idx )} />
on:click={() => deleteField ( idx )} />
< / div >
< / div >
{ /each }
{ /each }
< Button thin secondary on:click = { newField } > Add Field </ Button >
< Spacer small / >
< Button thin secondary on:click = { newField } > Add Field </ Button >
{ /if }
{ /if }
< / Switcher >
< / Switcher >
{ /if }
{ /if }
@ -213,11 +206,28 @@
{ /if }
{ /if }
< style >
< style >
.input {
width: 300px;
}
.select {
width: 200px;
margin-right: 40px;
}
.props {
display: flex;
flex-direction: row;
margin-left: auto;
align-items: center;
gap: var(--layout-l);
}
.field {
.field {
display: grid;
display: grid;
grid-gap: 10px;
grid-template-columns: 1fr 1fr 50px;
grid-template-columns: 1fr 1fr 50px;
margin-bottom: var(--spacing-m);
gap: var(--spacing-l );
}
}
a {
a {
@ -233,6 +243,16 @@
cursor: pointer;
cursor: pointer;
}
}
.query-type {
font-family: var(--font-sans);
color: var(--grey-8);
font-size: var(--font-size-s);
}
.query-type-span {
text-transform: uppercase;
}
.preview {
.preview {
width: 800px;
width: 800px;
height: 100%;
height: 100%;
@ -246,32 +266,18 @@
align-items: center;
align-items: center;
}
}
.queryVerb s {
.viewer-control s {
display: flex;
display: flex;
flex: 1;
flex-direction: row;
font-size: var(--font-size-m);
margin-left: auto;
align-items: center;
direction: rtl;
margin-left: var(--spacing-l);
z-index: 5;
}
gap: var(--spacing-m);
min-width: 150px;
.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 {
display: grid;
margin-top: -28px;
grid-gap: var(--spacing-m);
z-index: -2;
grid-auto-flow: column;
direction: rtl;
grid-template-columns: 10% 10% 1fr;
margin-bottom: var(--spacing-m);
}
}
< / style >
< / style >