diff --git a/src/lib/components/filters/customFilters.svelte b/src/lib/components/filters/customFilters.svelte
new file mode 100644
index 000000000..3b4a1d751
--- /dev/null
+++ b/src/lib/components/filters/customFilters.svelte
@@ -0,0 +1,17 @@
+
+
+
+ (show = true)}>Custom filters
+
+
+{#if show}
+
+{/if}
diff --git a/src/lib/components/filters/filtersModal.svelte b/src/lib/components/filters/filtersModal.svelte
new file mode 100644
index 000000000..816187d28
--- /dev/null
+++ b/src/lib/components/filters/filtersModal.svelte
@@ -0,0 +1,73 @@
+
+
+
+ Apply filter rules to refine the table view
+
+ (applied = 0)} />
+
+
+
+
+
diff --git a/src/lib/components/filters/index.ts b/src/lib/components/filters/index.ts
index 7d3b7f3d2..b2747057b 100644
--- a/src/lib/components/filters/index.ts
+++ b/src/lib/components/filters/index.ts
@@ -1,3 +1,6 @@
export { default as Filters } from './filters.svelte';
export { default as TagList } from './tagList.svelte';
+export { default as FilterMenu } from './menu.svelte';
+export { default as FilterSubMenu } from './subMenu.svelte';
+export { default as CustomFilters } from './customFilters.svelte';
export { hasPageQueries, queryParamToMap, queries } from '$lib/components/filters/store';
diff --git a/src/lib/components/filters/menu.svelte b/src/lib/components/filters/menu.svelte
new file mode 100644
index 000000000..743ac1a20
--- /dev/null
+++ b/src/lib/components/filters/menu.svelte
@@ -0,0 +1,49 @@
+
+
+
+
+ {#if $tags.length}
+
+ {:else}
+
+ {/if}
+
+
+
+
+
+
diff --git a/src/routes/(console)/project-[project]/functions/function-[function]/+page.svelte b/src/routes/(console)/project-[project]/functions/function-[function]/+page.svelte
index 88cf037db..b7f2ac859 100644
--- a/src/routes/(console)/project-[project]/functions/function-[function]/+page.svelte
+++ b/src/routes/(console)/project-[project]/functions/function-[function]/+page.svelte
@@ -183,31 +183,6 @@
{#if data.deploymentList.total}
-
-
-
- {#if $tags?.length}
-
-
-
- {/if}
-
-
{/if}
diff --git a/src/routes/(console)/project-[project]/functions/function-[function]/executions/(components)/LogsRequest.svelte b/src/routes/(console)/project-[project]/functions/function-[function]/executions/(components)/LogsRequest.svelte
new file mode 100644
index 000000000..71fee3b9a
--- /dev/null
+++ b/src/routes/(console)/project-[project]/functions/function-[function]/executions/(components)/LogsRequest.svelte
@@ -0,0 +1,114 @@
+
+
+
+
+
+ (requestTab = 'parameters')}>
+ Parameters
+
+
+ (requestTab = 'headers')}>
+ Headers
+
+
+
+
+ {#if requestTab === 'parameters'}
+ {#if parameters?.length}
+
+
+ Key
+ Value
+
+ {#each parameters as parameter}
+
+ {parameter.name}
+ {parameter.value}
+
+ {/each}
+
+ {:else}
+
+ No parameters found.
+
+ {/if}
+ {:else if requestTab === 'headers'}
+ {#if selectedLog.requestHeaders?.length}
+
+
+ Key
+ Value
+
+ {#each selectedLog.requestHeaders as request}
+
+ {request.name}
+ {request.value}
+
+ {/each}
+
+
+
+
+ Missing headers? Check the docs to
+ see the supported data and how to log it.
+
+
+ {:else}
+
+ No headers found.
+
+ {/if}
+ {/if}
+
diff --git a/src/routes/(console)/project-[project]/functions/function-[function]/executions/(components)/LogsResponse.svelte b/src/routes/(console)/project-[project]/functions/function-[function]/executions/(components)/LogsResponse.svelte
new file mode 100644
index 000000000..82e204396
--- /dev/null
+++ b/src/routes/(console)/project-[project]/functions/function-[function]/executions/(components)/LogsResponse.svelte
@@ -0,0 +1,127 @@
+
+
+
+
+
+ (responseTab = 'logs')}>
+ Logs
+
+ (responseTab = 'errors')}>
+ Errors
+
+ (responseTab = 'headers')}>
+ Headers
+
+
+ (responseTab = 'body')}>
+ Body
+
+
+
+
+
+ {#if responseTab === 'logs'}
+ {#if selectedLog.logs}
+
+ {:else}
+
+ No logs found.
+
+ {/if}
+ {:else if responseTab === 'errors'}
+ {#if selectedLog.errors}
+
+ {:else}
+
+ No errors found.
+
+ {/if}
+ {:else if responseTab === 'headers'}
+ {#if selectedLog.responseHeaders?.length}
+
+
+ Key
+ Value
+
+ {#each selectedLog.responseHeaders as request}
+
+ {request.name}
+ {request.value}
+
+ {/each}
+
+
+
+
+ Missing headers? Check the docs to
+ see the supported data and how to log it.
+
+
+ {:else}
+
+ No headers found.
+
+ {/if}
+ {:else if responseTab === 'body'}
+ {#if selectedLog.responseBody}
+
+ {:else}
+
+ Body data is not captured by Appwrite for your user's security and privacy. To
+ display body data in the Logs tab, use .
+ Learn more.
+
+
+ {/if}
+ {/if}
+
diff --git a/src/routes/(console)/project-[project]/functions/function-[function]/executions/+page.svelte b/src/routes/(console)/project-[project]/functions/function-[function]/executions/+page.svelte
index f44dccf92..09c7544cd 100644
--- a/src/routes/(console)/project-[project]/functions/function-[function]/executions/+page.svelte
+++ b/src/routes/(console)/project-[project]/functions/function-[function]/executions/+page.svelte
@@ -31,31 +31,7 @@
-
+
{#if data?.executions?.total}
diff --git a/src/routes/(console)/project-[project]/functions/function-[function]/executions/quickFilters.svelte b/src/routes/(console)/project-[project]/functions/function-[function]/executions/quickFilters.svelte
index df451a731..f9bb43bf0 100644
--- a/src/routes/(console)/project-[project]/functions/function-[function]/executions/quickFilters.svelte
+++ b/src/routes/(console)/project-[project]/functions/function-[function]/executions/quickFilters.svelte
@@ -11,11 +11,9 @@
type TagValue
} from '$lib/components/filters/store';
import type { Column } from '$lib/helpers/types';
- import { Card, Icon } from '@appwrite.io/pink-svelte';
- import { melt, createMenubar } from '@melt-ui/svelte';
import { type Writable } from 'svelte/store';
- import { Button } from '$lib/elements/forms';
- import { IconFilterLine } from '@appwrite.io/pink-icons-svelte';
+ import Menu from '$lib/components/filters/menu.svelte';
+ import { CustomFilters } from '$lib/components/filters';
export let columns: Writable;
@@ -183,86 +181,53 @@
addFilter($columns, colId, ValidOperators.GreaterThanOrEqual, isoValue.toISOString());
addFilter($columns, colId, ValidOperators.LessThanOrEqual, now.toISOString());
}
-
- const {
- elements: { menubar },
- builders: { createMenu }
- } = createMenubar();
-
- const {
- elements: { trigger: trigger, menu: menu }
- } = createMenu();
-
-
- {#if $tags.length}
-
- {:else}
-
- {/if}
-
-
-
-
-
-
+
diff --git a/src/routes/(console)/project-[project]/functions/function-[function]/executions/sheet.svelte b/src/routes/(console)/project-[project]/functions/function-[function]/executions/sheet.svelte
index 70497878d..26c5b316e 100644
--- a/src/routes/(console)/project-[project]/functions/function-[function]/executions/sheet.svelte
+++ b/src/routes/(console)/project-[project]/functions/function-[function]/executions/sheet.svelte
@@ -11,11 +11,16 @@
Layout,
Sheet,
Tag,
- Typography
+ Typography,
+ Tooltip,
+ Status
} from '@appwrite.io/pink-svelte';
- import { timeFromNow } from '$lib/helpers/date';
+ import { timeFromNow, toLocaleDateTime } from '$lib/helpers/date';
import { capitalize } from '$lib/helpers/string';
import { Copy } from '$lib/components';
+ import { logStatusConverter } from './store';
+ import LogsResponse from './(components)/LogsResponse.svelte';
+ import LogsRequest from './(components)/LogsRequest.svelte';
export let open = false;
export let selectedLogId: string;
@@ -40,14 +45,13 @@
$: selectedLog = logs?.find((log) => log.$id === selectedLogId);
$: isFirstLog = logs.findIndex((log) => log.$id === selectedLogId) === 0;
$: isLastLog = logs.findIndex((log) => log.$id === selectedLogId) === logs.length - 1;
- $: console.log(selectedLog);
- Log ID
+ Execution ID
{selectedLog?.$id}
@@ -66,66 +70,109 @@
-
-
-
-
- Method
-
-
- {selectedLog.requestMethod}
-
-
-
-
- Status
-
-
- = 400
- ? 'error'
- : 'success'} />
-
-
-
-
- Duration
-
-
- {calculateTime(selectedLog.duration)}
-
-
-
-
- Created
-
-
- {capitalize(timeFromNow(selectedLog.$createdAt))}
-
-
-
-
+
+
+
+ Method
+
+
+ {selectedLog.requestMethod}
+
+
+
+
+ Status code
+
+
+ = 400
+ ? 'error'
+ : selectedLog.responseStatusCode === 0
+ ? undefined
+ : 'success'} />
+
+
-
-
- Path
-
-
-
-
-
+
+
+ Path
+
+
+
+
+
+
+
+
+
+ Status
+
+
+
+
+
+ {capitalize(selectedLog.status)}
+
+
+
+ {`Scheduled to execute on ${toLocaleDateTime(selectedLog.scheduledAt)}`}
+
+
+
+
+
+ Duration
+
+
+ {calculateTime(selectedLog.duration)}
+
+
+
+
+ Triggered
+
+
+ {capitalize(selectedLog.trigger)}
+
+
+
+
+ Created
+
+
+ {capitalize(timeFromNow(selectedLog.$createdAt))}
+
+
+
-
+
-
+
{/if}
diff --git a/src/routes/(console)/project-[project]/functions/function-[function]/executions/store.ts b/src/routes/(console)/project-[project]/functions/function-[function]/executions/store.ts
index 2459b8059..2758f99ad 100644
--- a/src/routes/(console)/project-[project]/functions/function-[function]/executions/store.ts
+++ b/src/routes/(console)/project-[project]/functions/function-[function]/executions/store.ts
@@ -3,29 +3,15 @@ import { writable } from 'svelte/store';
export const columns = writable([
{ id: '$id', title: 'Execution ID', type: 'string', show: true, width: 150 },
-
{
- id: '$createdAt',
- title: 'Created',
- type: 'datetime',
+ id: 'requestPath',
+ title: 'Path',
+ type: 'string',
show: true,
- width: 120,
- format: 'datetime',
- elements: [
- {
- value: 5 * 60 * 1000,
- label: 'last 5 minutes'
- },
- {
- value: 60 * 60 * 1000,
- label: 'last 1 hour'
- },
- {
- value: 24 * 60 * 60 * 1000,
- label: 'last 24 hours'
- }
- ]
+ width: 90,
+ format: 'string'
},
+
{
id: 'trigger',
title: 'Trigger',
@@ -79,14 +65,7 @@ export const columns = writable([
],
hide: true
},
- {
- id: 'requestPath',
- title: 'Path',
- type: 'string',
- show: true,
- width: 90,
- format: 'string'
- },
+
{
id: 'status',
title: 'Status',
@@ -118,5 +97,48 @@ export const columns = writable([
label: 'more than 30 seconds'
}
]
+ },
+ {
+ id: '$createdAt',
+ title: 'Created',
+ type: 'datetime',
+ show: true,
+ width: 120,
+ format: 'datetime',
+ elements: [
+ {
+ value: 5 * 60 * 1000,
+ label: 'last 5 minutes'
+ },
+ {
+ value: 60 * 60 * 1000,
+ label: 'last 1 hour'
+ },
+ {
+ value: 24 * 60 * 60 * 1000,
+ label: 'last 24 hours'
+ }
+ ]
}
]);
+
+export function logStatusConverter(status: string) {
+ // ['completed', 'failed', 'waiting', 'scheduled', 'processing', 'cancelled']
+
+ switch (status) {
+ case 'completed':
+ return 'complete';
+ case 'scheduled':
+ return 'processing';
+ case 'processing':
+ return 'processing';
+ case 'waiting':
+ return 'waiting';
+ case 'peding':
+ return 'pending';
+ case 'cancelled':
+ return 'waiting';
+ case 'failed':
+ return 'failed';
+ }
+}
diff --git a/src/routes/(console)/project-[project]/functions/function-[function]/executions/table.svelte b/src/routes/(console)/project-[project]/functions/function-[function]/executions/table.svelte
index 59be85c6a..fa1bf102c 100644
--- a/src/routes/(console)/project-[project]/functions/function-[function]/executions/table.svelte
+++ b/src/routes/(console)/project-[project]/functions/function-[function]/executions/table.svelte
@@ -7,35 +7,13 @@
import Sheet from './sheet.svelte';
import { capitalize } from '$lib/helpers/string';
import { formatTimeDetailed } from '$lib/helpers/timeConversion';
+ import { logStatusConverter } from './store';
export let columns: Column[];
export let logs: Models.ExecutionList;
let openSheet = false;
let selectedLogId: string = null;
-
- $: console.log(columns);
-
- export function logStatusConverter(status: string) {
- // ['completed', 'failed', 'waiting', 'scheduled', 'processing', 'cancelled']
-
- switch (status) {
- case 'completed':
- return 'complete';
- case 'scheduled':
- return 'ready';
- case 'processing':
- return 'processing';
- case 'waiting':
- return 'waiting';
- case 'peding':
- return 'pending';
- case 'cancelled':
- return 'waiting';
- case 'failed':
- return 'failed';
- }
- }
@@ -97,12 +75,7 @@
- {#if status === 'scheduled'}
-
- {timeFromNow(log.scheduledAt)}
- {:else}
- {status}
- {/if}
+ {status}
diff --git a/src/routes/(console)/project-[project]/functions/function-[function]/quickFilters.svelte b/src/routes/(console)/project-[project]/functions/function-[function]/quickFilters.svelte
index e171c5784..9286f84d0 100644
--- a/src/routes/(console)/project-[project]/functions/function-[function]/quickFilters.svelte
+++ b/src/routes/(console)/project-[project]/functions/function-[function]/quickFilters.svelte
@@ -1,19 +1,18 @@
-{#each [typeFilter] as filter}
-
-
- {#key filter.tag}
-
- {filter?.tag ?? filter.title}
-
- {/key}
-
-
-
-
- {#each filter.options as option (option.value + option.checked)}
- {
- option.checked = !option.checked;
- addFilterAndApply(
- filter.id,
- filter.title,
- filter.operator,
- filter?.array ? null : option.checked ? option.value : null,
- filter?.array
- ? (filter.options
- .filter((opt) => opt.checked)
- .map((opt) => opt.value) ?? [])
- : []
- );
- }}>
- {option.label}
-
- {/each}
- {#if filter.options.some((option) => option.checked)}
- {
- toggle(e);
- filter.tag = null;
- addFilterAndApply(filter.id, filter.title, filter.operator, null, []);
- }}>
- Clear selection
-
- {/if}
-
-
-
-{/each}
-{#each [sizeFilter] as filter}
-
-
- {#key filter.tag}
-
- {filter?.tag ?? filter.title}
-
- {/key}
-
-
-
-
- {#each filter.options as option (option.value + option.checked)}
- {
- addFilterAndApply(
- filter.id,
- filter.title,
- filter.operator,
- filter?.array ? null : option.value,
- []
- );
- toggle(e);
- }}>
- {option.label}
-
- {/each}
- {#if filter?.tag}
- {
- filter.tag = null;
- addFilterAndApply(filter.id, filter.title, filter.operator, null, []);
- toggle(e);
- }}>
- Clear selection
-
- {/if}
-
-
-
-{/each}
+
diff --git a/src/routes/(console)/project-[project]/sites/site-[site]/logs/+page.svelte b/src/routes/(console)/project-[project]/sites/site-[site]/logs/+page.svelte
index 95c47e7e1..6cd53aab5 100644
--- a/src/routes/(console)/project-[project]/sites/site-[site]/logs/+page.svelte
+++ b/src/routes/(console)/project-[project]/sites/site-[site]/logs/+page.svelte
@@ -20,6 +20,15 @@
const columns = writable([
{ id: '$id', title: 'Log ID', type: 'string', show: true, width: 150 },
+
+ {
+ id: 'requestPath',
+ title: 'Path',
+ type: 'string',
+ show: true,
+ width: 90,
+ format: 'string'
+ },
{
id: '$createdAt',
title: 'Created',
@@ -41,15 +50,6 @@
label: 'last 24 hours'
}
]
- },
-
- {
- id: 'requestPath',
- title: 'Path',
- type: 'string',
- show: true,
- width: 90,
- format: 'string'
}
]);
let search = '';
diff --git a/src/routes/(console)/project-[project]/sites/site-[site]/logs/sheet.svelte b/src/routes/(console)/project-[project]/sites/site-[site]/logs/sheet.svelte
index f31f2ca55..d50a824b3 100644
--- a/src/routes/(console)/project-[project]/sites/site-[site]/logs/sheet.svelte
+++ b/src/routes/(console)/project-[project]/sites/site-[site]/logs/sheet.svelte
@@ -80,7 +80,7 @@
- Status
+ Status code