frontend: apply prettier

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/7668
GitOrigin-RevId: 0ed901780092994ae40c2c57557c5854812a91b2
This commit is contained in:
Nicolas Beaussart 2023-01-25 21:53:48 +01:00 committed by hasura-bot
parent 221af57e53
commit 09c9cf8b46
205 changed files with 9464 additions and 8769 deletions

View File

@ -1,2 +1,3 @@
11a454c2d69bb05c3471be0d04d2282cc93a557e # reformat with Ormolu
342391f39dd68dd7922ef29215e150dca7811975 # reformat with Ormolu v0.5.0.1
fb19d80e16092186c6aa61bf90b3d1a55644a5a7 # Prettier reformat

3
frontend/.gitignore vendored
View File

@ -42,3 +42,6 @@ Thumbs.db
# Env
.env
# This is a snapshot generated during npm install, but not needed
/snapshots.js

View File

@ -3,3 +3,7 @@
/dist
/coverage
/docs
/apps/console-ce/src/assets/
/apps/console-ee/src/assets/
/apps/console-ce-e2e/**/snapshots.js
/snapshots.js

View File

@ -2,7 +2,6 @@
"eslint.validate": ["json"],
"cSpell.words": ["clsx"],
"tailwindCSS.experimental.classRegex": [
"tw\\w+ ?= ?`([^`]*)`",
"tw\\w+: ?`([^`]*)`"
],

View File

@ -6,8 +6,7 @@ Visit the [Nx Documentation](https://nx.dev) to learn more about it.
This `frontend` monorepo contains the Hasura Console, in all the possible modes.
*Last import [2023-01-12](https://github.com/hasura/graphql-engine-mono/tree/a8cbb297437e4c2d9ba4cab5da1e464d4eac43e4)*
_Last import [2023-01-12](https://github.com/hasura/graphql-engine-mono/tree/a8cbb297437e4c2d9ba4cab5da1e464d4eac43e4)_
## Nx Console

View File

@ -1,6 +1,7 @@
# Test
## Useful resources
- [Cypress Dashboard for the Console project](https://dashboard.cypress.io/projects/5yiuic)
## Running all tests to generate coverage

View File

@ -1,3 +1,3 @@
module.exports = {
"__version": "10.4.0"
}
__version: '10.4.0',
};

View File

@ -1,3 +1,3 @@
module.exports = {
"__version": "10.4.0"
}
__version: '10.4.0',
};

View File

@ -37,71 +37,71 @@
* @see https://github.com/bahmutov/cypress-network-idle
*/
import 'cypress-wait-until';
export function waitForPostCreationRequests() {
let waitCompleted = false;
cy.log('*--- All requests must be settled*');
const pendingRequests = new Map();
cy.intercept('POST', 'http://localhost:8080/v1/metadata', req => {
if (waitCompleted) return;
Cypress.log({ message: '*--- Request pending*' });
pendingRequests.set(req, true);
req.continue(() => {
Cypress.log({ message: '*--- Request settled*' });
pendingRequests.delete(req);
});
import 'cypress-wait-until';
export function waitForPostCreationRequests() {
let waitCompleted = false;
cy.log('*--- All requests must be settled*');
const pendingRequests = new Map();
cy.intercept('POST', 'http://localhost:8080/v1/metadata', req => {
if (waitCompleted) return;
Cypress.log({ message: '*--- Request pending*' });
pendingRequests.set(req, true);
req.continue(() => {
Cypress.log({ message: '*--- Request settled*' });
pendingRequests.delete(req);
});
Cypress.log({ message: '*--- Waiting for the first request to start*' });
// Check if at least one request has been caught. This check must protect from the following case
//
// check requests start test failure, the requests got the UI re-rendered
// | | |
// |--🚦🔴----⚠️---🚦🟢-------1-2-3-4-5-6-7-1----------💥
//
// where checking that "there are no pending requests" falls in the false positive case where
// there are no pending requests because no one started at all.
//
// The check runs every millisecond to be 100% sure that no request can escape (ex. because of a
// super fast server). A false-negative case represented here
//
// requests start requests end check check test failure, no first request caught
// | | | | | | |
// |--🚦🔴--1-2-3-4-5-6-7-1-2-3-4-5-6-7--⚠️------------------⚠️------------------💥
cy.waitUntil(() => pendingRequests.size > 0, {
timeout: 5000, // 5 seconds is the default Cypress wait for a request to start
interval: 1,
errorMsg: 'No first request caught',
});
Cypress.log({ message: '*--- Waiting for all the requests to start*' });
// Let pass some time to collect all the requests. Otherwise, it could detect that the first
// request complete and go on with the test, even if another one will be performed in a while.
//
// This fixed wait protects from the following timeline
//
// 1st request start first request end other requests start test failure, the requests got the UI re-rendered
// | | | |
// |--🚦🔴---1---------------------1----🚦🟢----------------2-3-4-5-6-7-1----------💥
//
// Obviously, it is an empiric waiting, that also slows down the test.
cy.wait(500);
Cypress.log({ message: '*--- Waiting for all the requests to be settled*' });
cy.waitUntil(() => pendingRequests.size === 0, {
timeout: 30000, // 30 seconds is the default Cypress wait for the request to complete
errorMsg: 'Some requests are not settled yet',
}).then(() => {
waitCompleted = true;
});
}
});
Cypress.log({ message: '*--- Waiting for the first request to start*' });
// Check if at least one request has been caught. This check must protect from the following case
//
// check requests start test failure, the requests got the UI re-rendered
// | | |
// |--🚦🔴----⚠️---🚦🟢-------1-2-3-4-5-6-7-1----------💥
//
// where checking that "there are no pending requests" falls in the false positive case where
// there are no pending requests because no one started at all.
//
// The check runs every millisecond to be 100% sure that no request can escape (ex. because of a
// super fast server). A false-negative case represented here
//
// requests start requests end check check test failure, no first request caught
// | | | | | | |
// |--🚦🔴--1-2-3-4-5-6-7-1-2-3-4-5-6-7--⚠️------------------⚠️------------------💥
cy.waitUntil(() => pendingRequests.size > 0, {
timeout: 5000, // 5 seconds is the default Cypress wait for a request to start
interval: 1,
errorMsg: 'No first request caught',
});
Cypress.log({ message: '*--- Waiting for all the requests to start*' });
// Let pass some time to collect all the requests. Otherwise, it could detect that the first
// request complete and go on with the test, even if another one will be performed in a while.
//
// This fixed wait protects from the following timeline
//
// 1st request start first request end other requests start test failure, the requests got the UI re-rendered
// | | | |
// |--🚦🔴---1---------------------1----🚦🟢----------------2-3-4-5-6-7-1----------💥
//
// Obviously, it is an empiric waiting, that also slows down the test.
cy.wait(500);
Cypress.log({ message: '*--- Waiting for all the requests to be settled*' });
cy.waitUntil(() => pendingRequests.size === 0, {
timeout: 30000, // 30 seconds is the default Cypress wait for the request to complete
errorMsg: 'Some requests are not settled yet',
}).then(() => {
waitCompleted = true;
});
}

View File

@ -1,123 +1,128 @@
module.exports = {
"__version": "10.4.0",
"Actions with Transform": {
"When the users create, and delete a Action with Transform, everything should work": {
"Action payload": {
"bodyToSnapshot": [
{
"type": "set_custom_types",
"args": {
"scalars": [],
"input_objects": [],
"objects": [
{
"name": "LoginResponse",
"description": null,
"fields": [
{
"name": "accessToken",
"type": "String!",
"description": null
}
]
}
],
"enums": []
}
},
{
"type": "create_action",
"args": {
"name": "login",
"definition": {
"arguments": [
__version: '10.4.0',
'Actions with Transform': {
'When the users create, and delete a Action with Transform, everything should work':
{
'Action payload': {
bodyToSnapshot: [
{
type: 'set_custom_types',
args: {
scalars: [],
input_objects: [],
objects: [
{
"name": "username",
"type": "String!",
"description": null
name: 'LoginResponse',
description: null,
fields: [
{
name: 'accessToken',
type: 'String!',
description: null,
},
],
},
{
"name": "password",
"type": "String!",
"description": null
}
],
"kind": "synchronous",
"output_type": "LoginResponse",
"handler": "https://hasura-actions-demo.glitch.me",
"type": "mutation",
"headers": [],
"forward_client_headers": false,
"timeout": null,
"request_transform": {
"version": 2,
"template_engine": "Kriti",
"method": "POST",
"url": "{{$base_url}}/{{$body.action.name}}",
"query_params": {
"id": "5",
"name": "{{$body.action.name}}"
},
"body": {
"action": "transform",
"template": "{\n \"userInfo\": {\n \"name\": {{$body.input.username}},\n \"password\": {{$body.input.password}},\n \"type\": {{$body.action.name}}\n \n }\n}"
}
},
"response_transform": {
"version": 2,
"body": {
"action": "transform",
"template": "{\n \"userInfo\": {\n \"name\": {{$body.input.username}},\n \"password\": {{$body.input.password}},\n \"type\": {{$body.action.name}}\n \n }\n}"
},
"template_engine": "Kriti"
}
enums: [],
},
"comment": null
}
}
]
},
"Action metadata": {
"name": "login",
"definition": {
"handler": "https://hasura-actions-demo.glitch.me",
"output_type": "LoginResponse",
"arguments": [
{
"name": "username",
"type": "String!"
},
{
"name": "password",
"type": "String!"
}
type: 'create_action',
args: {
name: 'login',
definition: {
arguments: [
{
name: 'username',
type: 'String!',
description: null,
},
{
name: 'password',
type: 'String!',
description: null,
},
],
kind: 'synchronous',
output_type: 'LoginResponse',
handler: 'https://hasura-actions-demo.glitch.me',
type: 'mutation',
headers: [],
forward_client_headers: false,
timeout: null,
request_transform: {
version: 2,
template_engine: 'Kriti',
method: 'POST',
url: '{{$base_url}}/{{$body.action.name}}',
query_params: {
id: '5',
name: '{{$body.action.name}}',
},
body: {
action: 'transform',
template:
'{\n "userInfo": {\n "name": {{$body.input.username}},\n "password": {{$body.input.password}},\n "type": {{$body.action.name}}\n \n }\n}',
},
},
response_transform: {
version: 2,
body: {
action: 'transform',
template:
'{\n "userInfo": {\n "name": {{$body.input.username}},\n "password": {{$body.input.password}},\n "type": {{$body.action.name}}\n \n }\n}',
},
template_engine: 'Kriti',
},
},
comment: null,
},
},
],
"request_transform": {
"body": {
"action": "transform",
"template": "{\n \"userInfo\": {\n \"name\": {{$body.input.username}},\n \"password\": {{$body.input.password}},\n \"type\": {{$body.action.name}}\n \n }\n}"
},
'Action metadata': {
name: 'login',
definition: {
handler: 'https://hasura-actions-demo.glitch.me',
output_type: 'LoginResponse',
arguments: [
{
name: 'username',
type: 'String!',
},
{
name: 'password',
type: 'String!',
},
],
request_transform: {
body: {
action: 'transform',
template:
'{\n "userInfo": {\n "name": {{$body.input.username}},\n "password": {{$body.input.password}},\n "type": {{$body.action.name}}\n \n }\n}',
},
method: 'POST',
query_params: {
id: '5',
name: '{{$body.action.name}}',
},
template_engine: 'Kriti',
url: '{{$base_url}}/{{$body.action.name}}',
version: 2,
},
"method": "POST",
"query_params": {
"id": "5",
"name": "{{$body.action.name}}"
response_transform: {
body: {
action: 'transform',
template:
'{\n "userInfo": {\n "name": {{$body.input.username}},\n "password": {{$body.input.password}},\n "type": {{$body.action.name}}\n \n }\n}',
},
template_engine: 'Kriti',
version: 2,
},
"template_engine": "Kriti",
"url": "{{$base_url}}/{{$body.action.name}}",
"version": 2
type: 'mutation',
kind: 'synchronous',
},
"response_transform": {
"body": {
"action": "transform",
"template": "{\n \"userInfo\": {\n \"name\": {{$body.input.username}},\n \"password\": {{$body.input.password}},\n \"type\": {{$body.action.name}}\n \n }\n}"
},
"template_engine": "Kriti",
"version": 2
},
"type": "mutation",
"kind": "synchronous"
}
}
}
}
}
},
},
},
};

View File

@ -1,3 +1,3 @@
module.exports = {
"__version": "10.4.0"
}
__version: '10.4.0',
};

View File

@ -1,3 +1,3 @@
module.exports = {
"__version": "10.4.0"
}
__version: '10.4.0',
};

View File

@ -1,3 +1,3 @@
module.exports = {
"__version": "10.4.0"
}
__version: '10.4.0',
};

View File

@ -1,3 +1,3 @@
module.exports = {
"__version": "10.4.0"
}
__version: '10.4.0',
};

View File

@ -92,7 +92,9 @@ export const failCTWrongDefaultValue = () => {
};
export const passCT = () => {
cy.get(getElementFromAlias('frequently-used-columns')).first().should('exist');
cy.get(getElementFromAlias('frequently-used-columns'))
.first()
.should('exist');
// Set second column
cy.get(getElementFromAlias('column-1')).clear().type(getColName(1));
tableColumnTypeSelector('col-type-1');

View File

@ -1,3 +1,3 @@
module.exports = {
"__version": "10.4.0"
}
__version: '10.4.0',
};

View File

@ -1,3 +1,3 @@
module.exports = {
"__version": "10.4.0"
}
__version: '10.4.0',
};

View File

@ -1,3 +1,3 @@
module.exports = {
"__version": "10.4.0"
}
__version: '10.4.0',
};

View File

@ -1,3 +1,3 @@
module.exports = {
"__version": "10.4.0"
}
__version: '10.4.0',
};

View File

@ -1,3 +1,3 @@
module.exports = {
"__version": "10.4.0"
}
__version: '10.4.0',
};

View File

@ -1,3 +1,3 @@
module.exports = {
"__version": "10.4.0"
}
__version: '10.4.0',
};

View File

@ -7,9 +7,7 @@ export const toggleOnMigrationMode = () => {
}).then(response => {
if (response.body.migration_mode === 'false') {
// Go to migrations section
cy.get('a')
.contains('Migrations')
.click();
cy.get('a').contains('Migrations').click();
cy.wait(3000);
// Toggle Migration mode
cy.get('[class=react-toggle-track]').click();
@ -25,9 +23,7 @@ export const toggleOffMigrationMode = () => {
}).then(response => {
if (response.body.migration_mode === 'true') {
// Go to migrations section
cy.get('a')
.contains('Migrations')
.click();
cy.get('a').contains('Migrations').click();
cy.wait(3000);
// Toggle Migration mode
cy.get('[class=react-toggle-track]').click();

View File

@ -1,3 +1,3 @@
module.exports = {
"__version": "10.4.0"
}
__version: '10.4.0',
};

View File

@ -208,7 +208,9 @@ export const Addcolumnname = (name: string) => {
};
export const passMTAddColumn = () => {
cy.get(getElementFromAlias('frequently-used-columns')).first().should('exist');
cy.get(getElementFromAlias('frequently-used-columns'))
.first()
.should('exist');
cy.get(getElementFromAlias('column-name')).type('{selectall}{del}');
cy.get(getElementFromAlias('column-name')).type(getColName(0));
tableColumnTypeSelector('col-type-0');

View File

@ -1,3 +1,3 @@
module.exports = {
"__version": "10.4.0"
}
__version: '10.4.0',
};

View File

@ -47,7 +47,10 @@ export const passPTCreateTable = () => {
cy.wait(7000);
cy.url().should(
'eq',
`${baseUrl}/data/default/schema/public/tables/${getTableName(0, testName)}/modify`
`${baseUrl}/data/default/schema/public/tables/${getTableName(
0,
testName
)}/modify`
);
};
@ -107,9 +110,7 @@ export const passPVDeleteView = () => {
// Delete view
setPromptValue(getTableName(1, testName));
cy.get(getElementFromAlias('delete-view')).click();
cy.window()
.its('prompt')
.should('be.called');
cy.window().its('prompt').should('be.called');
cy.wait(7000);
};
@ -122,9 +123,7 @@ export const passPTDeleteTable = () => {
// Delete table
setPromptValue(getTableName(0, testName));
cy.get(getElementFromAlias('delete-table')).click();
cy.window()
.its('prompt')
.should('be.called');
cy.window().its('prompt').should('be.called');
cy.wait(7000);
};

View File

@ -1,3 +1,3 @@
module.exports = {
"__version": "10.4.0"
}
__version: '10.4.0',
};

View File

@ -1,3 +1,3 @@
module.exports = {
"__version": "10.4.0"
}
__version: '10.4.0',
};

View File

@ -1,3 +1,3 @@
module.exports = {
"__version": "10.4.0"
}
__version: '10.4.0',
};

View File

@ -1,3 +1,3 @@
module.exports = {
"__version": "10.4.0"
}
__version: '10.4.0',
};

View File

@ -1,3 +1,3 @@
module.exports = {
"__version": "10.4.0"
}
__version: '10.4.0',
};

View File

@ -1,3 +1,3 @@
module.exports = {
"__version": "10.4.0"
}
__version: '10.4.0',
};

View File

@ -1,3 +1,3 @@
module.exports = {
"__version": "10.4.0"
}
__version: '10.4.0',
};

View File

@ -1,3 +1,3 @@
module.exports = {
"__version": "10.4.0"
}
__version: '10.4.0',
};

View File

@ -25,26 +25,16 @@ export const checkCreateRemoteSchemaRoute = () => {
};
export const failRSWithInvalidRemoteUrl = () => {
cy.get('[data-testid=name]').type(getRemoteSchemaName(0, testName));
cy.get('[data-testid=url]').type(getInvalidRemoteSchemaUrl());
cy.get('[data-testid=name]').type(
getRemoteSchemaName(0, testName)
);
cy.get('[data-testid=url]').type(
getInvalidRemoteSchemaUrl()
);
cy.get('[data-testid=submit]').click();
cy.get('.notifications-wrapper').contains('Error');
};
export const createSimpleRemoteSchema = () => {
cy.get('[data-testid=name]')
.clear()
.type(getRemoteSchemaName(1, testName));
cy.get('[data-testid=url]')
.clear()
.type(getRemoteGraphQLURL());
cy.get('[data-testid=name]').clear().type(getRemoteSchemaName(1, testName));
cy.get('[data-testid=url]').clear().type(getRemoteGraphQLURL());
cy.get('[data-testid=submit]').click();
cy.get('.notifications-wrapper').contains('Success');
validateRS(getRemoteSchemaName(1, testName), ResultType.SUCCESS);
@ -59,12 +49,8 @@ export const createSimpleRemoteSchema = () => {
export const failRSDuplicateSchemaName = () => {
cy.visit('remote-schemas/manage/add');
cy.get('[data-testid=name]')
.clear()
.type(getRemoteSchemaName(1, testName));
cy.get('[data-testid=url]')
.clear()
.type(getRemoteGraphQLURL());
cy.get('[data-testid=name]').clear().type(getRemoteSchemaName(1, testName));
cy.get('[data-testid=url]').clear().type(getRemoteGraphQLURL());
cy.get('[data-testid=submit]').click();
cy.get('.notifications-wrapper').contains('Error');
cy.url().should('eq', `${baseUrl}/remote-schemas/manage/add`);
@ -72,12 +58,8 @@ export const failRSDuplicateSchemaName = () => {
export const failRSDuplicateSchemaNodes = () => {
cy.visit('remote-schemas/manage/add');
cy.get('[data-testid=name]')
.clear()
.type(getRemoteSchemaName(2, testName));
cy.get('[data-testid=url]')
.clear()
.type(getRemoteGraphQLURL());
cy.get('[data-testid=name]').clear().type(getRemoteSchemaName(2, testName));
cy.get('[data-testid=url]').clear().type(getRemoteGraphQLURL());
cy.get('[data-testid=submit]').click();
cy.get('.notifications-wrapper').contains('Error');
cy.url().should('eq', `${baseUrl}/remote-schemas/manage/add`);
@ -112,15 +94,9 @@ export const deleteSimpleRemoteSchema = () => {
export const failWithRemoteSchemaEnvUrl = () => {
cy.visit('remote-schemas/manage/add');
cy.get('[data-testid=name]')
.clear()
.type(getRemoteSchemaName(3, testName));
cy.get(
'[name="url.type"]'
).select('from_env');
cy.get('[data-testid=url]')
.clear()
.type(getRemoteGraphQLURLFromEnv());
cy.get('[data-testid=name]').clear().type(getRemoteSchemaName(3, testName));
cy.get('[name="url.type"]').select('from_env');
cy.get('[data-testid=url]').clear().type(getRemoteGraphQLURLFromEnv());
cy.get('[data-testid=submit]').click();
cy.get('.notifications-wrapper').contains('Error');
cy.url().should('eq', `${baseUrl}/remote-schemas/manage/add`);
@ -128,38 +104,22 @@ export const failWithRemoteSchemaEnvUrl = () => {
export const failWithRemoteSchemaEnvHeader = () => {
cy.visit('remote-schemas/manage/add');
cy.get('[data-testid=name]')
.clear()
.type(getRemoteSchemaName(3, testName));
cy.get('[data-testid=url]')
.clear()
.type(getRemoteGraphQLURL());
cy.get('[data-testid=name]').clear().type(getRemoteSchemaName(3, testName));
cy.get('[data-testid=url]').clear().type(getRemoteGraphQLURL());
cy.get('[data-testid="add-header')
.click()
cy.get('[data-testid="add-header').click();
cy.get('[name="headers[0].name"]')
.clear()
.type('sampleHeader1');
cy.get('[name="headers[0].name"]').clear().type('sampleHeader1');
cy.get('[name="headers[0].value"]')
.clear()
.type('sampleHeaderValue1');
cy.get('[name="headers[0].value"]').clear().type('sampleHeaderValue1');
cy.get('[data-testid="add-header')
.click()
cy.get('[data-testid="add-header').click();
cy.get('[name="headers[1].name"]')
.clear()
.type('sampleHeader2');
cy.get('[name="headers[1].name"]').clear().type('sampleHeader2');
cy.get(
'[name="headers[1].type"]'
).select("from_env");
cy.get('[name="headers[1].type"]').select('from_env');
cy.get('[name="headers[1].value"]')
.clear()
.type('SAMPLE_ENV_HEADER');
cy.get('[name="headers[1].value"]').clear().type('SAMPLE_ENV_HEADER');
cy.get('[data-testid=submit]').click();
cy.get('.notifications-wrapper').contains('Error');
@ -168,34 +128,20 @@ export const failWithRemoteSchemaEnvHeader = () => {
export const passWithRemoteSchemaHeader = () => {
cy.visit('remote-schemas/manage/add');
cy.get('[data-testid=name]')
.clear()
.type(getRemoteSchemaName(3, testName));
cy.get('[data-testid=url]')
.clear()
.type(getRemoteGraphQLURL());
cy.get('[data-testid=name]').clear().type(getRemoteSchemaName(3, testName));
cy.get('[data-testid=url]').clear().type(getRemoteGraphQLURL());
cy.get('[data-testid="add-header')
.click()
cy.get('[data-testid="add-header').click();
cy.get('[name="headers[0].name"]')
.clear()
.type('sampleHeader1');
cy.get('[name="headers[0].name"]').clear().type('sampleHeader1');
cy.get('[name="headers[0].value"]')
.clear()
.type('sampleHeaderValue1');
cy.get('[name="headers[0].value"]').clear().type('sampleHeaderValue1');
cy.get('[data-testid="add-header')
.click()
cy.get('[data-testid="add-header').click();
cy.get('[name="headers[1].name"]')
.clear()
.type('sampleHeader2');
cy.get('[name="headers[1].name"]').clear().type('sampleHeader2');
cy.get('[name="headers[1].value"]')
.clear()
.type('sampleHeaderValue2');
cy.get('[name="headers[1].value"]').clear().type('sampleHeaderValue2');
cy.get('[data-testid=submit]').click();
cy.get('.notifications-wrapper').contains('Success');
@ -240,7 +186,7 @@ export const createSimpleRemoteSchemaPermission = () => {
cy.get(getElementFromAlias('save-remote-schema-permissions')).click({
force: true,
});
cy.get('.notifications-wrapper').contains('saved')
cy.get('.notifications-wrapper').contains('saved');
cy.url().should(
'eq',
`${baseUrl}/remote-schemas/manage/${getRemoteSchemaName(

View File

@ -1,3 +1,3 @@
module.exports = {
"__version": "10.4.0"
}
__version: '10.4.0',
};

View File

@ -1,3 +1,3 @@
module.exports = {
"__version": "10.4.0"
}
__version: '10.4.0',
};

View File

@ -1,3 +1,3 @@
module.exports = {
"__version": "10.4.0"
}
__version: '10.4.0',
};

View File

@ -1,3 +1,3 @@
module.exports = {
"__version": "10.4.0"
}
__version: '10.4.0',
};

View File

@ -1,3 +1,3 @@
module.exports = {
"__version": "10.4.0"
}
__version: '10.4.0',
};

View File

@ -1,3 +1,3 @@
module.exports = {
"__version": "10.4.0"
}
__version: '10.4.0',
};

View File

@ -14,5 +14,5 @@ export const config: ServerConfig = {
claims_namespace: '',
claims_format: '',
},
is_prometheus_metrics_enabled: false
is_prometheus_metrics_enabled: false,
};

View File

@ -1,3 +1,3 @@
module.exports = {
"__version": "10.4.0"
}
__version: '10.4.0',
};

View File

@ -18,7 +18,7 @@ export const setPromptValue = (value: string | null) => {
};
// This is works as setPromptValue with no unnecessary waiting
export const setPromptWithCb = (value: string | null, cb: () => void) => {
export const setPromptWithCb = (value: string | null, cb: () => void) => {
cy.window().then(win => {
cy.stub(win, 'prompt').returns(value);
cb();

View File

@ -5,8 +5,7 @@ export const baseUrl = Cypress.config('baseUrl');
export const getRemoteSchemaName = (i: number, schemaName: string) =>
`test-remote-schema-${schemaName}-${i}`;
export const getRemoteGraphQLURL = () =>
'https://graphql-pokemon2.vercel.app/';
export const getRemoteGraphQLURL = () => 'https://graphql-pokemon2.vercel.app/';
export const getRemoteGraphQLURLFromEnv = () => 'GRAPHQL_URL';

View File

@ -13,9 +13,10 @@ export const toggleRequestTransformSection = () => {
};
export const clearRequestUrl = () => {
cy.get(
getElementFromAlias('transform-requestUrl')
).type('{selectall}{backspace}', { force: true });
cy.get(getElementFromAlias('transform-requestUrl')).type(
'{selectall}{backspace}',
{ force: true }
);
};
export const typeIntoRequestUrl = (content: string) => {

View File

@ -1,3 +1,3 @@
module.exports = {
"__version": "10.4.0"
}
__version: '10.4.0',
};

View File

@ -29,9 +29,7 @@
"output": "common"
}
],
"styles": [
"apps/console-ce/src/css/tailwind.css"
],
"styles": ["apps/console-ce/src/css/tailwind.css"],
"scripts": [],
"webpackConfig": "custom-webpack.config.js",
"postcssConfig": "apps/console-ce/postcss.config.js"

View File

@ -8,10 +8,9 @@
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="icon" type="image/x-icon" href="favicon.ico" />
<script>
// Needed since if the env var is not defined, it won't be replaced with undefined but keep as the string
const getEnv = (value) => value.startsWith('%NX') ? undefined : value;
const getEnvAsBool = (value) => Boolean(getEnv(value))
const getEnv = value => (value.startsWith('%NX') ? undefined : value);
const getEnvAsBool = value => Boolean(getEnv(value));
const serverEnvVars = {
dataApiUrl: getEnv('%NX_DATA_API_URL%'),
@ -30,7 +29,7 @@
tenantID: getEnv('%NX_HASURA_CLOUD_TENANT_ID%') || '',
projectID: getEnv('%NX_HASURA_CLOUD_PROJECT_ID%') || '',
cloudRootDomain: getEnv('%NX_HASURA_CLOUD_ROOT_DOMAIN%'),
consoleType: getEnv('%NX_HASURA_CONSOLE_TYPE%')
consoleType: getEnv('%NX_HASURA_CONSOLE_TYPE%'),
};
const cliEnvVars = {
@ -52,29 +51,28 @@
};
const envVars =
getEnv('%NX_CONSOLE_MODE%') === 'cli' ? cliEnvVars : serverEnvVars;
getEnv('%NX_CONSOLE_MODE%') === 'cli' ? cliEnvVars : serverEnvVars;
window.__env = envVars;
</script>
</head>
<body>
<style>
.content {
display: 'none';
opacity: 0;
transition: opacity 0.2s linear;
}
.content.show {
display: 'block';
opacity: 1;
transition: opacity 0.2s linear;
}
</style>
<div id="loading">
<div
class="page-loading"
style="
<style>
.content {
display: 'none';
opacity: 0;
transition: opacity 0.2s linear;
}
.content.show {
display: 'block';
opacity: 1;
transition: opacity 0.2s linear;
}
</style>
<div id="loading">
<div
class="page-loading"
style="
min-height: 100vh;
width: 100%;
display: flex;
@ -82,12 +80,12 @@
font-family: sans-serif;
justify-content: center;
"
>
>
<span class="" style="font-size: 2em; margin-top: -3em; color: #848484">
Loading...
</span>
</div>
</div>
</div>
<div id="content" class="content"></div>
<div id="content" class="content"></div>
</body>
</html>

View File

@ -28,9 +28,7 @@
"output": "common"
}
],
"styles": [
"apps/console-ee/src/css/tailwind.css"
],
"styles": ["apps/console-ee/src/css/tailwind.css"],
"scripts": [],
"webpackConfig": "custom-webpack.config.js",
"postcssConfig": "apps/console-ee/postcss.config.js"

View File

@ -10,8 +10,8 @@
<script src="https://graphql-engine-cdn.hasura.io/pro-console/assets/common/js/lottie.min.js"></script>
<script>
// Needed since if the env var is not defined, it won't be replaced with undefined but keep as the string
const getEnv = (value) => (value.startsWith('%NX') ? undefined : value);
const getEnvAsBool = (value) => Boolean(getEnv(value));
const getEnv = value => (value.startsWith('%NX') ? undefined : value);
const getEnvAsBool = value => Boolean(getEnv(value));
const serverEnvVars = {
dataApiUrl: getEnv('%NX_DATA_API_URL%'),

View File

@ -102,7 +102,10 @@
"**/__tests__/**/*.[jt]s?(x)",
"**/?(*.)+(spec|test).[jt]s?(x)"
],
"extends": ["plugin:testing-library/react", "plugin:jest-dom/recommended"],
"extends": [
"plugin:testing-library/react",
"plugin:jest-dom/recommended"
],
"rules": {
"testing-library/no-unnecessary-act": "warn",
"testing-library/prefer-query-by-disappearance": "warn",

View File

@ -3,7 +3,6 @@
dataApiUrl: 'http://localhost:8080',
apiHost: 'http://localhost',
apiPort: '8080',
nodeEnv: 'development'
nodeEnv: 'development',
};
</script>

View File

@ -13,7 +13,7 @@ import '../src/lib/components/Common/Common.module.scss';
const channel = addons.getChannel();
initialize();
const DocsContainerElement = (props) => {
const DocsContainerElement = props => {
// Sync Docs dark mode with Storybook Manager
const [isDark, setDark] = React.useState();
@ -28,8 +28,8 @@ const DocsContainerElement = (props) => {
{...props}
context={{
...props.context,
storyById: (id) => {
return produce(props.context.storyById(id), (draft) => {
storyById: id => {
return produce(props.context.storyById(id), draft => {
draft.parameters.docs.theme = isDark ? theme.dark : theme.light;
});
},
@ -67,7 +67,7 @@ export const parameters = {
export const decorators = [
(fn, c) => <Provider store={store}>{fn(c)}</Provider>,
mswDecorator,
(Story) => {
Story => {
document.body.classList.add('hasura-tailwind-on');
return <div className={'bg-legacybg'}>{Story()}</div>;
},

View File

@ -1,4 +1,4 @@
@import "../Common/Common.module";
@import '../Common/Common.module';
:global {
@keyframes react-progress-spinner {

View File

@ -1565,7 +1565,7 @@ code {
margin-bottom: 2px;
align-self: flex-end;
padding-top: 8px;
border-color:rgba(0, 0, 0, 0.1);
border-color: rgba(0, 0, 0, 0.1);
border-top-width: 1px;
position: sticky;
bottom: 0;

View File

@ -42,234 +42,234 @@ type ConfigureTransformationProps = {
responseBodyOnChange?: (responseBody: ResponseTransformStateBody) => void;
};
const ConfigureTransformation: React.FC<ConfigureTransformationProps> =
props => {
const {
transformationType,
requestTransfromState,
responseTransformState,
resetSampleInput,
envVarsOnChange,
sessionVarsOnChange,
requestMethodOnChange,
requestUrlOnChange,
requestQueryParamsOnChange,
requestAddHeadersOnChange,
requestBodyOnChange,
requestSampleInputOnChange,
requestUrlTransformOnChange,
requestPayloadTransformOnChange,
responsePayloadTransformOnChange,
responseBodyOnChange,
} = props;
const {
envVars,
sessionVars,
requestMethod,
requestUrl,
requestUrlError,
requestUrlPreview,
requestQueryParams,
requestAddHeaders,
requestBody,
requestBodyError,
requestSampleInput,
requestTransformedBody,
isRequestUrlTransform,
isRequestPayloadTransform,
} = requestTransfromState;
const [isContextAreaActive, toggleContextArea] = useState<boolean>(false);
const ConfigureTransformation: React.FC<
ConfigureTransformationProps
> = props => {
const {
transformationType,
requestTransfromState,
responseTransformState,
resetSampleInput,
envVarsOnChange,
sessionVarsOnChange,
requestMethodOnChange,
requestUrlOnChange,
requestQueryParamsOnChange,
requestAddHeadersOnChange,
requestBodyOnChange,
requestSampleInputOnChange,
requestUrlTransformOnChange,
requestPayloadTransformOnChange,
responsePayloadTransformOnChange,
responseBodyOnChange,
} = props;
const {
envVars,
sessionVars,
requestMethod,
requestUrl,
requestUrlError,
requestUrlPreview,
requestQueryParams,
requestAddHeaders,
requestBody,
requestBodyError,
requestSampleInput,
requestTransformedBody,
isRequestUrlTransform,
isRequestPayloadTransform,
} = requestTransfromState;
const [isContextAreaActive, toggleContextArea] = useState<boolean>(false);
const contextAreaText = isContextAreaActive
? `Hide Sample Context`
: `Show Sample Context`;
const contextAreaText = isContextAreaActive
? `Hide Sample Context`
: `Show Sample Context`;
const requestUrlTransformText = isRequestUrlTransform
? `Remove Request Options Transform`
: `Add Request Options Transform`;
const requestPayloadTransformText = isRequestPayloadTransform
? `Remove Payload Transform`
: `Add Payload Transform`;
const requestUrlTransformText = isRequestUrlTransform
? `Remove Request Options Transform`
: `Add Request Options Transform`;
const requestPayloadTransformText = isRequestPayloadTransform
? `Remove Payload Transform`
: `Add Payload Transform`;
const responsePayloadTransformText =
responseTransformState?.isResponsePayloadTransform
? `Remove Response Transform`
: `Add Response Transform`;
return (
<>
<h2 className="text-lg font-semibold mb-sm flex items-center">
Configure REST Connectors
</h2>
const responsePayloadTransformText =
responseTransformState?.isResponsePayloadTransform
? `Remove Response Transform`
: `Add Response Transform`;
return (
<>
<h2 className="text-lg font-semibold mb-sm flex items-center">
Configure REST Connectors
</h2>
<div className="mb-lg">
<label className="block text-gray-600 font-medium mb-xs">
Sample Context
</label>
<p className="text-sm text-gray-600 mb-sm">
Add sample env vars and session vars for testing the connector
</p>
<Analytics
name={
isContextAreaActive
? 'actions-tab-hide-sample-context-button'
: 'actions-tab-show-sample-context-button'
}
passHtmlAttributesToChildren
<div className="mb-lg">
<label className="block text-gray-600 font-medium mb-xs">
Sample Context
</label>
<p className="text-sm text-gray-600 mb-sm">
Add sample env vars and session vars for testing the connector
</p>
<Analytics
name={
isContextAreaActive
? 'actions-tab-hide-sample-context-button'
: 'actions-tab-show-sample-context-button'
}
passHtmlAttributesToChildren
>
<Button
color="white"
size="sm"
data-test="toggle-context-area"
onClick={() => {
toggleContextArea(!isContextAreaActive);
}}
>
<Button
color="white"
size="sm"
data-test="toggle-context-area"
onClick={() => {
toggleContextArea(!isContextAreaActive);
}}
>
{!isContextAreaActive ? <AddIcon /> : null}
{contextAreaText}
</Button>
</Analytics>
{!isContextAreaActive ? <AddIcon /> : null}
{contextAreaText}
</Button>
</Analytics>
{isContextAreaActive ? (
<SampleContextTransforms
transformationType={transformationType}
envVars={envVars}
sessionVars={sessionVars}
envVarsOnChange={envVarsOnChange}
sessionVarsOnChange={sessionVarsOnChange}
/>
) : null}
</div>
{isContextAreaActive ? (
<SampleContextTransforms
transformationType={transformationType}
envVars={envVars}
sessionVars={sessionVars}
envVarsOnChange={envVarsOnChange}
sessionVarsOnChange={sessionVarsOnChange}
/>
) : null}
</div>
<div className="mb-lg">
<label className="block text-gray-600 font-medium mb-xs">
Change Request Options
</label>
<p className="text-sm text-gray-600 mb-sm">
Change the method and URL to adapt to your API&apos;s expected
format.
</p>
<Analytics
name={
isRequestUrlTransform
? 'actions-tab-hide-request-transform-button'
: 'actions-tab-show-request-transform-button'
}
passHtmlAttributesToChildren
<div className="mb-lg">
<label className="block text-gray-600 font-medium mb-xs">
Change Request Options
</label>
<p className="text-sm text-gray-600 mb-sm">
Change the method and URL to adapt to your API&apos;s expected format.
</p>
<Analytics
name={
isRequestUrlTransform
? 'actions-tab-hide-request-transform-button'
: 'actions-tab-show-request-transform-button'
}
passHtmlAttributesToChildren
>
<Button
size="sm"
icon={!isRequestUrlTransform ? <AddIcon /> : undefined}
iconPosition="start"
data-test="toggle-request-transform"
onClick={() => {
requestUrlTransformOnChange(!isRequestUrlTransform);
resetSampleInput();
}}
>
<Button
size="sm"
icon={!isRequestUrlTransform ? <AddIcon /> : undefined}
iconPosition="start"
data-test="toggle-request-transform"
onClick={() => {
requestUrlTransformOnChange(!isRequestUrlTransform);
resetSampleInput();
}}
>
{requestUrlTransformText}
</Button>
</Analytics>
{isRequestUrlTransform ? (
<RequestOptionsTransforms
requestMethod={requestMethod}
requestUrl={requestUrl}
requestUrlError={requestUrlError}
requestUrlPreview={requestUrlPreview}
requestQueryParams={requestQueryParams}
requestAddHeaders={requestAddHeaders}
requestMethodOnChange={requestMethodOnChange}
requestUrlOnChange={requestUrlOnChange}
requestQueryParamsOnChange={requestQueryParamsOnChange}
requestAddHeadersOnChange={requestAddHeadersOnChange}
/>
) : null}
</div>
{requestUrlTransformText}
</Button>
</Analytics>
{isRequestUrlTransform ? (
<RequestOptionsTransforms
requestMethod={requestMethod}
requestUrl={requestUrl}
requestUrlError={requestUrlError}
requestUrlPreview={requestUrlPreview}
requestQueryParams={requestQueryParams}
requestAddHeaders={requestAddHeaders}
requestMethodOnChange={requestMethodOnChange}
requestUrlOnChange={requestUrlOnChange}
requestQueryParamsOnChange={requestQueryParamsOnChange}
requestAddHeadersOnChange={requestAddHeadersOnChange}
/>
) : null}
</div>
<div className="mb-lg">
<label className="block text-gray-600 font-medium mb-xs">
Change Payload
</label>
<p className="text-sm text-gray-600 mb-sm">
Change the payload to adapt to your API&apos;s expected format.
</p>
<Analytics
name={
isRequestPayloadTransform
? 'actions-tab-hide-payload-transform-button'
: 'actions-tab-show-payload-transform-button'
}
passHtmlAttributesToChildren
>
<Button
color="white"
size="sm"
data-test="toggle-payload-transform"
onClick={() => {
requestPayloadTransformOnChange(!isRequestPayloadTransform);
resetSampleInput();
}}
>
{!isRequestPayloadTransform ? <AddIcon /> : null}
{requestPayloadTransformText}
</Button>
</Analytics>
{isRequestPayloadTransform ? (
<PayloadOptionsTransforms
transformationType={transformationType}
requestBody={requestBody}
requestBodyError={requestBodyError}
requestSampleInput={requestSampleInput}
requestTransformedBody={requestTransformedBody}
resetSampleInput={resetSampleInput}
requestBodyOnChange={requestBodyOnChange}
requestSampleInputOnChange={requestSampleInputOnChange}
/>
) : null}
</div>
{responseTransformState && responsePayloadTransformOnChange && (
<div className="mb-lg">
<label className="block text-gray-600 font-medium mb-xs">
Change Payload
Change Response
</label>
<p className="text-sm text-gray-600 mb-sm">
Change the payload to adapt to your API&apos;s expected format.
Change the incoming response to adapt to your declared types.
</p>
<Analytics
name={
isRequestPayloadTransform
? 'actions-tab-hide-payload-transform-button'
: 'actions-tab-show-payload-transform-button'
? 'actions-tab-hide-response-transform-button'
: 'actions-tab-show-response-transform-button'
}
passHtmlAttributesToChildren
>
<Button
color="white"
size="sm"
data-test="toggle-payload-transform"
data-test="toggle-response-transform"
onClick={() => {
requestPayloadTransformOnChange(!isRequestPayloadTransform);
responsePayloadTransformOnChange(
!responseTransformState.isResponsePayloadTransform
);
resetSampleInput();
}}
>
{!isRequestPayloadTransform ? <AddIcon /> : null}
{requestPayloadTransformText}
{!responseTransformState.isResponsePayloadTransform ? (
<AddIcon />
) : null}
{responsePayloadTransformText}
</Button>
</Analytics>
{isRequestPayloadTransform ? (
<PayloadOptionsTransforms
transformationType={transformationType}
requestBody={requestBody}
requestBodyError={requestBodyError}
requestSampleInput={requestSampleInput}
requestTransformedBody={requestTransformedBody}
resetSampleInput={resetSampleInput}
requestBodyOnChange={requestBodyOnChange}
requestSampleInputOnChange={requestSampleInputOnChange}
{responseTransformState.isResponsePayloadTransform &&
responseBodyOnChange ? (
<ResponseTransforms
responseBody={responseTransformState.responseBody}
responseBodyOnChange={responseBodyOnChange}
/>
) : null}
</div>
{responseTransformState && responsePayloadTransformOnChange && (
<div className="mb-lg">
<label className="block text-gray-600 font-medium mb-xs">
Change Response
</label>
<p className="text-sm text-gray-600 mb-sm">
Change the incoming response to adapt to your declared types.
</p>
<Analytics
name={
isRequestPayloadTransform
? 'actions-tab-hide-response-transform-button'
: 'actions-tab-show-response-transform-button'
}
passHtmlAttributesToChildren
>
<Button
color="white"
size="sm"
data-test="toggle-response-transform"
onClick={() => {
responsePayloadTransformOnChange(
!responseTransformState.isResponsePayloadTransform
);
resetSampleInput();
}}
>
{!responseTransformState.isResponsePayloadTransform ? (
<AddIcon />
) : null}
{responsePayloadTransformText}
</Button>
</Analytics>
{responseTransformState.isResponsePayloadTransform &&
responseBodyOnChange ? (
<ResponseTransforms
responseBody={responseTransformState.responseBody}
responseBodyOnChange={responseBodyOnChange}
/>
) : null}
</div>
)}
</>
);
};
)}
</>
);
};
export default ConfigureTransformation;

View File

@ -55,8 +55,9 @@ const CustomInputAutoSuggest: React.FC<CustomInputAutoSuggestProps> = ({
setSuggestions(getSuggestions(value));
};
const getSuggestionValue: GetSuggestionValue<AutoSuggestOption> =
suggestion => suggestion.value;
const getSuggestionValue: GetSuggestionValue<
AutoSuggestOption
> = suggestion => suggestion.value;
const onSuggestionsClearRequested = () => {
setSuggestions([]);

View File

@ -9,7 +9,7 @@
z-index: 100;
opacity: 0.3;
&:hover {
opacity: 1.0;
opacity: 1;
}
}
@ -19,4 +19,4 @@
right: 28px;
z-index: 100;
font-style: italic;
}
}

View File

@ -1,4 +1,4 @@
@import "../Common.module";
@import '../Common.module';
.data_dropdown_wrapper {
display: inline-block;
@ -31,7 +31,7 @@
text-align: left;
margin-right: 5px;
}
// &:hover {
// background-color: #eee;
// }
@ -54,9 +54,9 @@
.dropdownRight:before,
.dropdownBottom:before {
content: "";
position: absolute;
border: solid 5px transparent;
content: '';
position: absolute;
border: solid 5px transparent;
z-index: 10000;
}

View File

@ -1,4 +1,4 @@
@import "../Common.module";
@import '../Common.module';
.queryBox {
box-sizing: border-box;
@ -8,7 +8,7 @@
.inputRow {
margin: 20px 0;
div[class^=col-xs-] {
div[class^='col-xs-'] {
padding-left: 0;
padding-right: 2.5px;
}
@ -19,7 +19,8 @@
}
:global(.form-control):focus {
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 0px rgba(102, 175, 233, 0.6);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075),
0 0 0px rgba(102, 175, 233, 0.6);
}
:global(.fa) {

View File

@ -1,5 +1,5 @@
@import "../Common.module";
@import '../Common.module';
.headerInputWidth {
width: 300px
width: 300px;
}

View File

@ -1,4 +1,4 @@
@import "../../Common.module";
@import '../../Common.module';
.editorExpanded {
margin: 10px 0;
@ -15,4 +15,4 @@
.editorContent {
padding: 10px 15px;
}
}

View File

@ -1,4 +1,3 @@
@import '../../Common.module';
.displayFlexContainer {
@ -273,4 +272,4 @@
height: 17px;
width: 17px;
margin-left: 5px;
}
}

View File

@ -1,4 +1,4 @@
@import "../../Common.module";
@import '../../Common.module';
.common_header_wrapper {
.defaultWidth {

View File

@ -1,4 +1,4 @@
@import "../../Common.module";
@import '../../Common.module';
.loader_ml {
margin-left: 3px;

View File

@ -1,4 +1,4 @@
@import "../../Common.module";
@import '../../Common.module';
.container {
}
@ -42,7 +42,8 @@
padding: 7px 0;
transition: color 0.5s;
a,a:visited {
a,
a:visited {
/* Taken from boostrap navbar-inverse-link-color variables */
color: lighten(lighten(#000, 46.7%), 15%);
}
@ -61,7 +62,7 @@
transition: color 0.5s;
pointer: cursor;
}
}
}
}
.main {

View File

@ -1,4 +1,4 @@
@import "../Common.module";
@import '../Common.module';
.qb_nested {
margin-top: 5px;
@ -23,11 +23,10 @@
color: #999;
select option {
color: #555
color: #555;
}
}
.qb_unselected_key {
color: #999;
}

View File

@ -57,22 +57,25 @@
z-index: 100;
}
.copyGenerated img, .copyExecution img {
.copyGenerated img,
.copyExecution img {
width: 20px;
opacity: .6;
opacity: 0.6;
}
.copyGenerated img:hover, .copyExecution img:hover {
.copyGenerated img:hover,
.copyExecution img:hover {
opacity: 1;
}
.copyGenerated:focus, .copyExecution:focus {
.copyGenerated:focus,
.copyExecution:focus {
outline: none;
}
.copyTooltip {
position: relative;
display: inline-block;
position: relative;
display: inline-block;
}
.copyTooltip i {
@ -80,36 +83,36 @@
}
.copyTooltip .tooltiptext {
background-color: #555;
color: #fff;
text-align: center;
border-radius: 6px;
padding: 4px 0px;
font-size: 14px;
position: absolute;
z-index: 1000000000;
right: -21px;
bottom: 30px;
opacity: 0;
-webkit-transition: opacity 0.3s;
transition: opacity 0.3s;
background-color: #555;
color: #fff;
text-align: center;
border-radius: 6px;
padding: 4px 0px;
font-size: 14px;
position: absolute;
z-index: 1000000000;
right: -21px;
bottom: 30px;
opacity: 0;
-webkit-transition: opacity 0.3s;
transition: opacity 0.3s;
display: none;
width: 57px;
}
.copyTooltip .tooltiptext::after {
content: "";
position: absolute;
top: 26px;
right: 22px;
margin-left: -5px;
border-width: 5px;
border-style: solid;
border-color: #555 transparent transparent transparent;
content: '';
position: absolute;
top: 26px;
right: 22px;
margin-left: -5px;
border-width: 5px;
border-style: solid;
border-color: #555 transparent transparent transparent;
}
.copyTooltip:hover .tooltiptext {
visibility: visible;
opacity: 1;
display: block;
visibility: visible;
opacity: 1;
display: block;
}

View File

@ -1,3 +1,3 @@
.tooltipIcon{
.tooltipIcon {
margin-left: 5px;
}
}

View File

@ -1,5 +1,5 @@
@import "../Common.module";
@import '../Common.module';
.warningSymbol {
color: #d9534f;
}
}

View File

@ -192,7 +192,7 @@ export function getAllJsonPaths(
const handleSubJson = (subJson: any, newPrefix: string) => {
const subPaths = getAllJsonPaths(subJson, leafKeys, newPrefix);
subPaths.forEach((subPath: typeof subPaths[0]) => {
subPaths.forEach((subPath: (typeof subPaths)[0]) => {
paths.push(subPath);
});

View File

@ -1,4 +1,4 @@
@import "../../Common/Common.module";
@import '../../Common/Common.module';
.addPaddCommom {
padding: 10px 0;
@ -52,7 +52,7 @@
.commonBtn {
text-align: center;
padding: 20px 0;
padding-bottom: 10px
padding-bottom: 10px;
}
.readMore {
@ -61,7 +61,7 @@
}
}
.iconWrapper{
.iconWrapper {
padding: 20px 0;
.icon {
@ -119,7 +119,8 @@
.inputLabel {
margin-left: 0;
input, select {
input,
select {
width: 300px;
}
}
@ -140,7 +141,7 @@
}
.red_button {
color: #FFF;
color: #fff;
}
a {
@ -166,7 +167,6 @@
.set_line_height {
line-height: 26px;
}
}
.actionsImg {
@ -193,7 +193,7 @@
display: flex;
align-items: center;
a{
a {
color: #909090;
}
@ -260,24 +260,24 @@
display: inline-block;
}
.instructionsWrapper, .instructionsWrapperPos {
.instructionsWrapper,
.instructionsWrapperPos {
margin-top: 20px;
border-top: 1px solid #DEDEDE;
border-top: 1px solid #dedede;
.instructions {
padding: 12px 0;
}
}
.instructionsWrapper
{
.instructionsWrapper {
position: relative;
}
.instructionsWrapperPos
{
.instructionsWrapperPos {
position: static;
}
.instructionsWrapper:hover, .instructionsWrapperPos:hover {
.instructionsWrapper:hover,
.instructionsWrapperPos:hover {
.instructions {
color: #505050
color: #505050;
}
.rightArrow {

View File

@ -1 +1 @@
@import '../../../Common/Common.module';
@import '../../../Common/Common.module';

View File

@ -86,8 +86,8 @@ const acceptedGQLTypes = [
'Double',
] as const;
export type VariableData = {
kind: typeof acceptedTypeKind[number] | 'Unsupported';
type: typeof acceptedGQLTypes[number];
kind: (typeof acceptedTypeKind)[number] | 'Unsupported';
type: (typeof acceptedGQLTypes)[number];
name: string;
};

View File

@ -10,27 +10,28 @@ import IntrospectionTable from './IntrospectionTable';
interface IntrospectionOptionsComponentProps extends InjectedProps {}
const IntrospectionOptionsComponent: React.FC<IntrospectionOptionsComponentProps> =
({ metadata, allRoles, dispatch }) => {
// Fire on component load, so that pro console doesn't crash on undefined metadata
useEffect(() => {
dispatch(exportMetadata());
}, []);
const IntrospectionOptionsComponent: React.FC<
IntrospectionOptionsComponentProps
> = ({ metadata, allRoles, dispatch }) => {
// Fire on component load, so that pro console doesn't crash on undefined metadata
useEffect(() => {
dispatch(exportMetadata());
}, []);
const disabledRoles =
metadata?.graphql_schema_introspection?.disabled_for_roles ?? [];
const disabledRoles =
metadata?.graphql_schema_introspection?.disabled_for_roles ?? [];
const tableData = allRoles.map(role => ({
roleName: role,
instrospectionIsDisabled: disabledRoles.includes(role),
}));
const tableData = allRoles.map(role => ({
roleName: role,
instrospectionIsDisabled: disabledRoles.includes(role),
}));
return (
<SecurityTabs tabName="introspection">
<IntrospectionTable rows={tableData} />
</SecurityTabs>
);
};
return (
<SecurityTabs tabName="introspection">
<IntrospectionTable rows={tableData} />
</SecurityTabs>
);
};
const mapDispatchToProps = (dispatch: Dispatch) => ({
dispatch,

View File

@ -1,5 +1,5 @@
@import "../../../Common/Common.module";
@import "../../../Common/TextAreaWithCopy/TextAreaWithCopy.module";
@import '../../../Common/Common.module';
@import '../../../Common/TextAreaWithCopy/TextAreaWithCopy.module';
.wd100 {
width: 100%;
@ -11,7 +11,7 @@
height: 0;
border-top: 8px solid transparent;
border-bottom: 8px solid transparent;
border-right:8px solid #fff;
border-right: 8px solid #fff;
position: absolute;
left: 0;
bottom: 20px;
@ -32,7 +32,7 @@
}
.commonBorBottom {
border-bottom: 1px solid #DEDEDE;
border-bottom: 1px solid #dedede;
}
.addPaddLeft {
@ -59,12 +59,12 @@
top: 60px;
left: 524px;
}
.popupWrapper
{
.popupWrapper {
bottom: 0px;
left: 244px;
}
.popupWrapper, .popupWrapperPos {
.popupWrapper,
.popupWrapperPos {
box-shadow: 0 0 14px 0 rgba(0, 0, 0, 0.16);
background-color: #ffffff;
position: absolute;
@ -90,7 +90,6 @@
}
.copyGenerated {
}
.copyTooltip .tooltiptext::after {

View File

@ -1 +1 @@
@import "../../../Common/Common.module";
@import '../../../Common/Common.module';

View File

@ -33,46 +33,47 @@ interface FrequentlyUsedColumnSelectorProps {
dispatch?: Dispatch | null;
}
const FrequentlyUsedColumnSelector: React.VFC<FrequentlyUsedColumnSelectorProps> =
({ onSelect, postgresVersion, action = null, dispatch = null }) => {
const frequentlyUsedColumnsOptions = frequentlyUsedColumns
.filter(fuc => !action || fuc.validFor.includes(action))
.filter(col =>
postgresVersion && col.minPGVersion
? parseFloat(postgresVersion) >= col.minPGVersion
: true
)
.map(fuc => {
const { title, subTitle } = getFreqUsedColDisplayInfo(fuc);
return {
content: (
const FrequentlyUsedColumnSelector: React.VFC<
FrequentlyUsedColumnSelectorProps
> = ({ onSelect, postgresVersion, action = null, dispatch = null }) => {
const frequentlyUsedColumnsOptions = frequentlyUsedColumns
.filter(fuc => !action || fuc.validFor.includes(action))
.filter(col =>
postgresVersion && col.minPGVersion
? parseFloat(postgresVersion) >= col.minPGVersion
: true
)
.map(fuc => {
const { title, subTitle } = getFreqUsedColDisplayInfo(fuc);
return {
content: (
<div>
<div>
<div>
<b>{title}</b>
</div>
<div>{subTitle}</div>
<b>{title}</b>
</div>
),
onClick: () => (dispatch ? dispatch(onSelect(fuc)) : onSelect(fuc)),
};
});
<div>{subTitle}</div>
</div>
),
onClick: () => (dispatch ? dispatch(onSelect(fuc)) : onSelect(fuc)),
};
});
return (
<Dropdown
testId="frequently-used-columns"
options={frequentlyUsedColumnsOptions}
data-test="frequently-used-columns"
position="bottom"
key="frequently-used-columns"
keyPrefix="frequently-used-columns"
>
{({ onClick }) => (
<Button size="sm" onClick={onClick}>
+ Frequently used columns
</Button>
)}
</Dropdown>
);
};
return (
<Dropdown
testId="frequently-used-columns"
options={frequentlyUsedColumnsOptions}
data-test="frequently-used-columns"
position="bottom"
key="frequently-used-columns"
keyPrefix="frequently-used-columns"
>
{({ onClick }) => (
<Button size="sm" onClick={onClick}>
+ Frequently used columns
</Button>
)}
</Dropdown>
);
};
export default FrequentlyUsedColumnSelector;

View File

@ -5,46 +5,47 @@ import { IndicatorCard } from '@/new-components/IndicatorCard';
import { FaExclamationTriangle } from 'react-icons/fa';
import styles from '../../DataSources.module.scss';
export const CumulativeMaxConnections: React.VFC<ConnectionSettingsFormProps> =
({ connectionDBState, connectionDBStateDispatch }) => (
<>
<div className={styles.connection_settings_input_layout}>
<LabeledInput
label="Total Max Connections"
tooltipText="Maximum number of database connections"
type="number"
className={`form-control ${styles.connnection_settings_form_input}`}
placeholder="1000"
value={
connectionDBState.connectionSettings?.total_max_connections ||
undefined
}
onChange={e =>
connectionDBStateDispatch({
type: 'UPDATE_TOTAL_MAX_CONNECTIONS',
data: e.target.value,
})
}
min="0"
boldlabel
data-test="max-connections"
icon={
connectionDBState?.connectionSettings?.max_connections !== undefined
}
/>
</div>
{connectionDBState?.connectionSettings?.max_connections && (
<IndicatorCard status="info">
<p className="font-bold">
<FaExclamationTriangle className="text-blue-300 pb-1 mr-4 text-lg" />
Set Total Max Connections
</p>
<p className="ml-lg">
You have set <b>Max Connections Per Instance</b> which is not
recommended for Hasura Cloud. Use <b>Total Max Connections</b>{' '}
instead.
</p>
</IndicatorCard>
)}
</>
);
export const CumulativeMaxConnections: React.VFC<
ConnectionSettingsFormProps
> = ({ connectionDBState, connectionDBStateDispatch }) => (
<>
<div className={styles.connection_settings_input_layout}>
<LabeledInput
label="Total Max Connections"
tooltipText="Maximum number of database connections"
type="number"
className={`form-control ${styles.connnection_settings_form_input}`}
placeholder="1000"
value={
connectionDBState.connectionSettings?.total_max_connections ||
undefined
}
onChange={e =>
connectionDBStateDispatch({
type: 'UPDATE_TOTAL_MAX_CONNECTIONS',
data: e.target.value,
})
}
min="0"
boldlabel
data-test="max-connections"
icon={
connectionDBState?.connectionSettings?.max_connections !== undefined
}
/>
</div>
{connectionDBState?.connectionSettings?.max_connections && (
<IndicatorCard status="info">
<p className="font-bold">
<FaExclamationTriangle className="text-blue-300 pb-1 mr-4 text-lg" />
Set Total Max Connections
</p>
<p className="ml-lg">
You have set <b>Max Connections Per Instance</b> which is not
recommended for Hasura Cloud. Use <b>Total Max Connections</b>{' '}
instead.
</p>
</IndicatorCard>
)}
</>
);

View File

@ -9,8 +9,9 @@ export default {
argTypes: { onChange: { action: 'change' } },
} as ComponentMeta<typeof GraphQLFieldCustomization>;
export const Playground: ComponentStory<typeof GraphQLFieldCustomization> =
args => <GraphQLFieldCustomization {...args} />;
export const Playground: ComponentStory<
typeof GraphQLFieldCustomization
> = args => <GraphQLFieldCustomization {...args} />;
Playground.args = {
rootFields: {

View File

@ -30,33 +30,34 @@ export const getActionType = (
): ConnectDBActions['type'] | null =>
CustomizationFieldNameToActionTypeMap[fieldName] || null;
export const GraphQLFieldCustomizationContainer: React.FC<GraphQLFieldCustomizationContainerProps> =
({
rootFields,
typeNames,
namingConvention,
connectionDBStateDispatch,
connectionDBState,
}) => {
const onChange = (
fieldName: CustomizationFieldName,
fieldValue: string | null | undefined
) => {
const actionType = getActionType(fieldName);
if (actionType) {
connectionDBStateDispatch({
type: actionType,
data: fieldValue,
} as ConnectDBActions);
}
};
return (
<GraphQLFieldCustomization
rootFields={rootFields}
typeNames={typeNames}
namingConvention={namingConvention}
onChange={onChange}
connectionDBState={connectionDBState}
/>
);
export const GraphQLFieldCustomizationContainer: React.FC<
GraphQLFieldCustomizationContainerProps
> = ({
rootFields,
typeNames,
namingConvention,
connectionDBStateDispatch,
connectionDBState,
}) => {
const onChange = (
fieldName: CustomizationFieldName,
fieldValue: string | null | undefined
) => {
const actionType = getActionType(fieldName);
if (actionType) {
connectionDBStateDispatch({
type: actionType,
data: fieldValue,
} as ConnectDBActions);
}
};
return (
<GraphQLFieldCustomization
rootFields={rootFields}
typeNames={typeNames}
namingConvention={namingConvention}
onChange={onChange}
connectionDBState={connectionDBState}
/>
);
};

View File

@ -1,4 +1,4 @@
@import "../../../Common/Common.module";
@import '../../../Common/Common.module';
.migration_mode {
display: inline-block;

View File

@ -1,4 +1,3 @@
.table {
width: 100%;
background-color: white;
@ -75,7 +74,7 @@
.ace_custom_style {
border: 1px solid #dddddd;
margin: .5em 0;
margin: 0.5em 0;
background-color: #f8fafb;
border-radius: 4px;
}
@ -85,7 +84,7 @@
padding: 4px 8px;
font-weight: 600;
border-radius: 16px;
color: #6B7280;
color: #6b7280;
border: 1px solid #d1d5db;
}
@ -116,7 +115,7 @@
opacity: 0;
}
tr:hover .schema_gallery_button{
tr:hover .schema_gallery_button {
opacity: 1;
}

View File

@ -28,77 +28,77 @@ type TableTrackingCustomizationModalContainerProps = Omit<
'onSubmit'
> & { dataSource: string; driver: Driver; schema: string };
export const TableTrackingCustomizationModalContainer: React.FC<TableTrackingCustomizationModalContainerProps> =
({ onClose, tableName, schema, dataSource, driver }) => {
const { fireNotification } = useFireNotification();
const dispatch: ThunkDispatch<ReduxState, unknown, AnyAction> =
useDispatch();
const mutation = useMetadataMigration({
onSuccess: () => {
dispatch({ type: REQUEST_SUCCESS });
dispatch(updateSchemaInfo()).then(() => {
const nextRoute =
driver !== 'bigquery'
? getTableModifyRoute(schema, dataSource, tableName, true)
: getTableBrowseRoute(schema, dataSource, tableName, true);
dispatch(_push(nextRoute));
dispatch(setSidebarLoading(false));
fireNotification({
title: 'Success!',
message: 'Existing table/view added',
type: 'success',
});
if (onClose) onClose();
});
},
onError: (error: Error) => {
export const TableTrackingCustomizationModalContainer: React.FC<
TableTrackingCustomizationModalContainerProps
> = ({ onClose, tableName, schema, dataSource, driver }) => {
const { fireNotification } = useFireNotification();
const dispatch: ThunkDispatch<ReduxState, unknown, AnyAction> = useDispatch();
const mutation = useMetadataMigration({
onSuccess: () => {
dispatch({ type: REQUEST_SUCCESS });
dispatch(updateSchemaInfo()).then(() => {
const nextRoute =
driver !== 'bigquery'
? getTableModifyRoute(schema, dataSource, tableName, true)
: getTableBrowseRoute(schema, dataSource, tableName, true);
dispatch(_push(nextRoute));
dispatch(setSidebarLoading(false));
fireNotification({
title: 'Error',
message: error?.message ?? 'Error while adding table/view',
type: 'error',
title: 'Success!',
message: 'Existing table/view added',
type: 'success',
});
},
});
if (onClose) onClose();
});
},
onError: (error: Error) => {
fireNotification({
title: 'Error',
message: error?.message ?? 'Error while adding table/view',
type: 'error',
});
},
});
const onCustomizationFormSubmit = (values: FormValues) => {
const requestBody = {
type: getTrackTableType(driver) as allowedMetadataTypes,
args: {
source: dataSource,
table: getQualifiedTable({
driver,
tableName,
schema,
}),
configuration: {
custom_name: values.custom_name,
custom_root_fields: {
select: values.select,
select_by_pk: values.select_by_pk,
select_aggregate: values.select_aggregate,
select_stream: values.select_stream,
insert: values.insert,
insert_one: values.insert_one,
update: values.update,
update_by_pk: values.update_by_pk,
delete: values.delete,
delete_by_pk: values.delete_by_pk,
update_many: values.update_many,
},
const onCustomizationFormSubmit = (values: FormValues) => {
const requestBody = {
type: getTrackTableType(driver) as allowedMetadataTypes,
args: {
source: dataSource,
table: getQualifiedTable({
driver,
tableName,
schema,
}),
configuration: {
custom_name: values.custom_name,
custom_root_fields: {
select: values.select,
select_by_pk: values.select_by_pk,
select_aggregate: values.select_aggregate,
select_stream: values.select_stream,
insert: values.insert,
insert_one: values.insert_one,
update: values.update,
update_by_pk: values.update_by_pk,
delete: values.delete,
delete_by_pk: values.delete_by_pk,
update_many: values.update_many,
},
},
};
mutation.mutate({
query: requestBody,
});
},
};
return (
<TableTrackingCustomizationModal
tableName={tableName}
onSubmit={onCustomizationFormSubmit}
onClose={onClose}
isLoading={mutation.isLoading}
/>
);
mutation.mutate({
query: requestBody,
});
};
return (
<TableTrackingCustomizationModal
tableName={tableName}
onSubmit={onCustomizationFormSubmit}
onClose={onClose}
isLoading={mutation.isLoading}
/>
);
};

View File

@ -21,125 +21,126 @@ export type TableTrackingCustomizationFormProps = {
onClose: () => void;
};
export const TableTrackingCustomizationForm: React.VFC<TableTrackingCustomizationFormProps> =
props => {
const { onClose } = props;
export const TableTrackingCustomizationForm: React.VFC<
TableTrackingCustomizationFormProps
> = props => {
const { onClose } = props;
const {
errors,
formMethods,
handleSubmit,
hasValues,
isMutateOpen,
isQueryOpen,
placeholders,
reset,
setCustomTableName,
} = useGqlCustomizationForm(props);
const {
errors,
formMethods,
handleSubmit,
hasValues,
isMutateOpen,
isQueryOpen,
placeholders,
reset,
setCustomTableName,
} = useGqlCustomizationForm(props);
return (
<FormProvider {...formMethods}>
<form onSubmit={formMethods.handleSubmit(handleSubmit)}>
<div>
<div className="px-sm pb-sm">
<SanitizeTips />
<div className="mb-4 flex justify-end">
<Button disabled={!hasValues} size="sm" onClick={reset}>
Clear All Fields
</Button>
</div>
return (
<FormProvider {...formMethods}>
<form onSubmit={formMethods.handleSubmit(handleSubmit)}>
<div>
<div className="px-sm pb-sm">
<SanitizeTips />
<div className="mb-4 flex justify-end">
<Button disabled={!hasValues} size="sm" onClick={reset}>
Clear All Fields
</Button>
</div>
<div className="pl-6">
<InputField
label="Custom Table Name"
fieldName="custom_name"
placeholder={placeholders.custom_name}
onClear={() => {
setCustomTableName('');
}}
onChange={value => {
setCustomTableName(value);
}}
/>
</div>
{errors.custom_name?.type === 'required' && (
<div className="grid grid-cols-12 gap-3">
<div className="col-span-4 flex items-center" />
<div className="col-span-8">
<div
role="alert"
aria-label="custom table name is a required field!"
className="text-red-600 flex items-center text-sm pt-1"
>
<span className="flex items-center">
<FaExclamationCircle className="mr-1" />
This field is required!
</span>
</div>
<div className="pl-6">
<InputField
label="Custom Table Name"
fieldName="custom_name"
placeholder={placeholders.custom_name}
onClear={() => {
setCustomTableName('');
}}
onChange={value => {
setCustomTableName(value);
}}
/>
</div>
{errors.custom_name?.type === 'required' && (
<div className="grid grid-cols-12 gap-3">
<div className="col-span-4 flex items-center" />
<div className="col-span-8">
<div
role="alert"
aria-label="custom table name is a required field!"
className="text-red-600 flex items-center text-sm pt-1"
>
<span className="flex items-center">
<FaExclamationCircle className="mr-1" />
This field is required!
</span>
</div>
</div>
)}
<div className="mb-sm">
<div className="flex items-center">
<Collapse
defaultOpen={isQueryOpen}
title="Query and Subscription"
rootClassName="w-full"
>
<Collapse.Content>
<div className="pl-sm py-xs ml-[0.47rem]">
<div className="space-y-sm">
{query_field_props.map(name => (
<InputField
key={`query-and-subscription-${name}`}
fieldName={name}
label={name}
placeholder={placeholders[name]}
/>
))}
</div>
</div>
</Collapse.Content>
</Collapse>
</div>
</div>
)}
<div>
<div className="flex items-center">
<Collapse
defaultOpen={isMutateOpen}
title="Mutation"
rootClassName="w-full"
>
<Collapse.Content>
<div className="pl-sm py-xs ml-[0.47rem]">
<div className="space-y-sm">
{mutation_field_props.map(name => (
<InputField
key={`mutation-${name}`}
label={name}
fieldName={name}
placeholder={placeholders[name]}
/>
))}
</div>
<div className="mb-sm">
<div className="flex items-center">
<Collapse
defaultOpen={isQueryOpen}
title="Query and Subscription"
rootClassName="w-full"
>
<Collapse.Content>
<div className="pl-sm py-xs ml-[0.47rem]">
<div className="space-y-sm">
{query_field_props.map(name => (
<InputField
key={`query-and-subscription-${name}`}
fieldName={name}
label={name}
placeholder={placeholders[name]}
/>
))}
</div>
</Collapse.Content>
</Collapse>
</div>
</div>
</Collapse.Content>
</Collapse>
</div>
</div>
<Dialog.Footer
callToAction="Save"
callToActionLoadingText="Saving..."
callToDeny="Cancel"
onClose={onClose}
className="absolute w-full bottom-0"
/>
<div>
<div className="flex items-center">
<Collapse
defaultOpen={isMutateOpen}
title="Mutation"
rootClassName="w-full"
>
<Collapse.Content>
<div className="pl-sm py-xs ml-[0.47rem]">
<div className="space-y-sm">
{mutation_field_props.map(name => (
<InputField
key={`mutation-${name}`}
label={name}
fieldName={name}
placeholder={placeholders[name]}
/>
))}
</div>
</div>
</Collapse.Content>
</Collapse>
</div>
</div>
</div>
</form>
</FormProvider>
);
};
<Dialog.Footer
callToAction="Save"
callToActionLoadingText="Saving..."
callToDeny="Cancel"
onClose={onClose}
className="absolute w-full bottom-0"
/>
</div>
</form>
</FormProvider>
);
};

View File

@ -22,41 +22,42 @@ export type TableTrackingCustomizationModalProps = {
currentConfiguration?: MetadataTableConfig;
};
export const TableTrackingCustomizationModal: React.FC<TableTrackingCustomizationModalProps> =
({
tableName,
onSubmit,
onClose,
show = true,
currentConfiguration,
dialogDescription,
}) => {
return (
<>
{show && (
<Analytics
name="TableTrackingCustomizationModal"
{...REDACT_EVERYTHING}
export const TableTrackingCustomizationModal: React.FC<
TableTrackingCustomizationModalProps
> = ({
tableName,
onSubmit,
onClose,
show = true,
currentConfiguration,
dialogDescription,
}) => {
return (
<>
{show && (
<Analytics
name="TableTrackingCustomizationModal"
{...REDACT_EVERYTHING}
>
<Dialog
hasBackdrop
title={tableName}
description={dialogDescription}
onClose={onClose}
titleTooltip="Customize table name and root fields for GraphQL operations."
contentContainer={{
className: 'mb-[60px]',
}}
>
<Dialog
hasBackdrop
title={tableName}
description={dialogDescription}
<TableTrackingCustomizationForm
initialTableName={tableName}
currentConfiguration={currentConfiguration}
onClose={onClose}
titleTooltip="Customize table name and root fields for GraphQL operations."
contentContainer={{
className: 'mb-[60px]',
}}
>
<TableTrackingCustomizationForm
initialTableName={tableName}
currentConfiguration={currentConfiguration}
onClose={onClose}
onSubmit={onSubmit}
/>
</Dialog>
</Analytics>
)}
</>
);
};
onSubmit={onSubmit}
/>
</Dialog>
</Analytics>
)}
</>
);
};

View File

@ -1,6 +1,7 @@
@import "../../../../Common/Common.module";
@import '../../../../Common/Common.module';
.qb_select, .qb_input {
.qb_select,
.qb_input {
border: none;
background-color: transparent;
border-bottom: 2px dotted;
@ -12,7 +13,8 @@
cursor: pointer;
}
.qb_select:focus, .qb_input:focus {
.qb_select:focus,
.qb_input:focus {
outline: none;
}

View File

@ -1,9 +1,10 @@
@import "../TableModify/ModifyTable.module";
@import '../TableModify/ModifyTable.module';
.permissionsTable {
width: 85%;
td, th {
td,
th {
text-align: center;
vertical-align: middle !important;
position: relative;
@ -13,12 +14,14 @@
font-weight: bold;
}
td:last-child, th:last-child {
td:last-child,
th:last-child {
border-left: 4px double #ddd;
width: 10%;
}
td:first-child, th:first-child {
td:first-child,
th:first-child {
overflow: auto;
border-right: 4px double #ddd;
max-width: 250px;
@ -56,9 +59,10 @@
}
}
.currEdit, .currEdit:hover {
background-color: #FFF3D5;
color: #FD9540;
.currEdit,
.currEdit:hover {
background-color: #fff3d5;
color: #fd9540;
.editPermsIcon {
display: inline-block;

View File

@ -14,4 +14,4 @@
.ant-tree {
color: grey;
}
}

View File

@ -1,4 +1,4 @@
@import "../../../../Common/TableCommon/Table.module";
@import '../../../../Common/TableCommon/Table.module';
.dropdown_wrapper {
width: 300px;
@ -28,15 +28,13 @@
display: flex;
align-items: center;
}
.tabletdCenter
{
.tabletdCenter {
height: 21px;
display: flex;
align-items: center;
justify-content: center;
}
.tableArrowCenter
{
.tableArrowCenter {
height: 100%;
display: flex;
align-items: center;
@ -56,7 +54,7 @@
}
.invocationSuccess {
color: #28a745
color: #28a745;
}
.invocationFailure {
color: red;
@ -107,7 +105,7 @@
display: flex;
align-items: center;
justify-content: center;
background-color: #FFF3D5;
background-color: #fff3d5;
padding: 5px;
min-height: 41px;
}
@ -116,7 +114,7 @@
display: flex;
align-items: center;
justify-content: center;
background-color: #FFF3D5;
background-color: #fff3d5;
padding: 5px;
min-height: 41px;
position: relative;
@ -176,7 +174,7 @@
}
i:hover {
color: #4D4D4D ;
color: #4d4d4d;
}
}

View File

@ -83,4 +83,4 @@
"2021-05-18 07:14:19.196511",
"f"
]
]
]

View File

@ -1,222 +1,222 @@
[
[
"id",
"event_id",
"status",
"request",
"response",
"created_at",
"id",
"schema_name",
"table_name",
"trigger_name",
"payload",
"delivered",
"error",
"tries",
"created_at",
"locked",
"next_retry_at",
"archived"
],
[
"31b4c28c-954d-4871-ba95-a6d7da8d6988",
"7bc7b398-f1cd-4761-839d-44971e01be48",
"1000",
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":8}},\"trace_context\":{\"trace_id\":\"04415c5c0870f8f6\",\"span_id\":\"455d47a2c5d8f40e\"}},\"created_at\":\"2021-05-18T07:39:50.658771Z\",\"id\":\"7bc7b398-f1cd-4761-839d-44971e01be48\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":4},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"04415c5c0870f8f6\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"d1260fcdfe50945e\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"de05cf247e935b7a\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
"2021-05-18 07:40:32.81592",
"7bc7b398-f1cd-4761-839d-44971e01be48",
"public",
"users",
"new_user",
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 8, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"455d47a2c5d8f40e\", \"trace_id\": \"04415c5c0870f8f6\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
"f",
"t",
"5",
"2021-05-18 07:39:50.658771",
"NULL",
"NULL",
"f"
],
[
"bf1760ee-c628-4b94-b535-1d5453675958",
"c3ac48be-a569-4d87-8c52-cb84309002ed",
"1000",
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":6}},\"trace_context\":{\"trace_id\":\"ecba73bac1b4601a\",\"span_id\":\"5a75ae38fccf4473\"}},\"created_at\":\"2021-05-18T07:39:50.332379Z\",\"id\":\"c3ac48be-a569-4d87-8c52-cb84309002ed\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":4},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"ecba73bac1b4601a\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"1c3c460b36da4a0e\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"f309dbf4632da6a5\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
"2021-05-18 07:40:32.815484",
"c3ac48be-a569-4d87-8c52-cb84309002ed",
"public",
"users",
"new_user",
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 6, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"5a75ae38fccf4473\", \"trace_id\": \"ecba73bac1b4601a\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
"f",
"t",
"5",
"2021-05-18 07:39:50.332379",
"NULL",
"NULL",
"f"
],
[
"5836823f-9104-489e-b339-946b45e266a9",
"338eec2d-0c1f-4358-ae12-05d3f73a85c6",
"1000",
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":9}},\"trace_context\":{\"trace_id\":\"ea970ad818f358cf\",\"span_id\":\"77150de9d725e5df\"}},\"created_at\":\"2021-05-18T07:39:50.831182Z\",\"id\":\"338eec2d-0c1f-4358-ae12-05d3f73a85c6\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":4},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"ea970ad818f358cf\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"332c2f49df1cb4d2\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"3668323420f67bb1\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
"2021-05-18 07:40:32.81517",
"338eec2d-0c1f-4358-ae12-05d3f73a85c6",
"public",
"users",
"new_user",
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 9, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"77150de9d725e5df\", \"trace_id\": \"ea970ad818f358cf\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
"f",
"t",
"5",
"2021-05-18 07:39:50.831182",
"NULL",
"NULL",
"f"
],
[
"7b314fa3-fa10-4d1d-9c7b-0799e2a2345c",
"423e5a24-d4e0-493a-83df-ecff0eca2398",
"1000",
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":7}},\"trace_context\":{\"trace_id\":\"da0635bf4fb444b1\",\"span_id\":\"5e088982a14f9bdd\"}},\"created_at\":\"2021-05-18T07:39:50.490999Z\",\"id\":\"423e5a24-d4e0-493a-83df-ecff0eca2398\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":4},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"da0635bf4fb444b1\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"f92c4fac3a66595a\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"b3a34f8a72e89980\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
"2021-05-18 07:40:32.815118",
"423e5a24-d4e0-493a-83df-ecff0eca2398",
"public",
"users",
"new_user",
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 7, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"5e088982a14f9bdd\", \"trace_id\": \"da0635bf4fb444b1\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
"f",
"t",
"5",
"2021-05-18 07:39:50.490999",
"NULL",
"NULL",
"f"
],
[
"c6ec4304-3848-4c4c-a188-ff91ebe61ea0",
"7bc7b398-f1cd-4761-839d-44971e01be48",
"1000",
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":8}},\"trace_context\":{\"trace_id\":\"04415c5c0870f8f6\",\"span_id\":\"455d47a2c5d8f40e\"}},\"created_at\":\"2021-05-18T07:39:50.658771Z\",\"id\":\"7bc7b398-f1cd-4761-839d-44971e01be48\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":3},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"04415c5c0870f8f6\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"f520ea1624695587\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"2dc1b4d86426e316\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
"2021-05-18 07:40:22.736277",
"7bc7b398-f1cd-4761-839d-44971e01be48",
"public",
"users",
"new_user",
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 8, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"455d47a2c5d8f40e\", \"trace_id\": \"04415c5c0870f8f6\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
"f",
"t",
"5",
"2021-05-18 07:39:50.658771",
"NULL",
"NULL",
"f"
],
[
"8c88c745-29eb-4637-ad2d-85f3d6ba82c4",
"423e5a24-d4e0-493a-83df-ecff0eca2398",
"1000",
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":7}},\"trace_context\":{\"trace_id\":\"da0635bf4fb444b1\",\"span_id\":\"5e088982a14f9bdd\"}},\"created_at\":\"2021-05-18T07:39:50.490999Z\",\"id\":\"423e5a24-d4e0-493a-83df-ecff0eca2398\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":3},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"da0635bf4fb444b1\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"d6bdb95ec116b8ff\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"01b61664322a458b\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
"2021-05-18 07:40:22.736095",
"423e5a24-d4e0-493a-83df-ecff0eca2398",
"public",
"users",
"new_user",
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 7, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"5e088982a14f9bdd\", \"trace_id\": \"da0635bf4fb444b1\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
"f",
"t",
"5",
"2021-05-18 07:39:50.490999",
"NULL",
"NULL",
"f"
],
[
"48532d4d-ee73-4245-a8f6-378b034eb4f0",
"338eec2d-0c1f-4358-ae12-05d3f73a85c6",
"1000",
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":9}},\"trace_context\":{\"trace_id\":\"ea970ad818f358cf\",\"span_id\":\"77150de9d725e5df\"}},\"created_at\":\"2021-05-18T07:39:50.831182Z\",\"id\":\"338eec2d-0c1f-4358-ae12-05d3f73a85c6\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":3},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"ea970ad818f358cf\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"4d8d92209b40eab3\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"876f35924d13168e\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
"2021-05-18 07:40:22.736039",
"338eec2d-0c1f-4358-ae12-05d3f73a85c6",
"public",
"users",
"new_user",
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 9, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"77150de9d725e5df\", \"trace_id\": \"ea970ad818f358cf\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
"f",
"t",
"5",
"2021-05-18 07:39:50.831182",
"NULL",
"NULL",
"f"
],
[
"33105396-99dc-446c-ac7f-d93c38ceb686",
"c3ac48be-a569-4d87-8c52-cb84309002ed",
"1000",
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":6}},\"trace_context\":{\"trace_id\":\"ecba73bac1b4601a\",\"span_id\":\"5a75ae38fccf4473\"}},\"created_at\":\"2021-05-18T07:39:50.332379Z\",\"id\":\"c3ac48be-a569-4d87-8c52-cb84309002ed\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":3},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"ecba73bac1b4601a\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"4fa95afd2b803b9c\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"de923514252481ca\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
"2021-05-18 07:40:22.735757",
"c3ac48be-a569-4d87-8c52-cb84309002ed",
"public",
"users",
"new_user",
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 6, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"5a75ae38fccf4473\", \"trace_id\": \"ecba73bac1b4601a\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
"f",
"t",
"5",
"2021-05-18 07:39:50.332379",
"NULL",
"NULL",
"f"
],
[
"f7980cf5-7520-489a-87f1-f658773f9e60",
"423e5a24-d4e0-493a-83df-ecff0eca2398",
"1000",
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":7}},\"trace_context\":{\"trace_id\":\"da0635bf4fb444b1\",\"span_id\":\"5e088982a14f9bdd\"}},\"created_at\":\"2021-05-18T07:39:50.490999Z\",\"id\":\"423e5a24-d4e0-493a-83df-ecff0eca2398\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":2},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"da0635bf4fb444b1\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"2fbf0361df48ccc7\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"ebc5dd9ef22f9543\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
"2021-05-18 07:40:11.704173",
"423e5a24-d4e0-493a-83df-ecff0eca2398",
"public",
"users",
"new_user",
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 7, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"5e088982a14f9bdd\", \"trace_id\": \"da0635bf4fb444b1\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
"f",
"t",
"5",
"2021-05-18 07:39:50.490999",
"NULL",
"NULL",
"f"
],
[
"18e6a7de-c38d-4f56-90f5-d0cc1298ea97",
"338eec2d-0c1f-4358-ae12-05d3f73a85c6",
"1000",
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":9}},\"trace_context\":{\"trace_id\":\"ea970ad818f358cf\",\"span_id\":\"77150de9d725e5df\"}},\"created_at\":\"2021-05-18T07:39:50.831182Z\",\"id\":\"338eec2d-0c1f-4358-ae12-05d3f73a85c6\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":2},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"ea970ad818f358cf\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"18ac4aa73874b52d\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"705e55f29e621be4\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
"2021-05-18 07:40:11.704093",
"338eec2d-0c1f-4358-ae12-05d3f73a85c6",
"public",
"users",
"new_user",
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 9, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"77150de9d725e5df\", \"trace_id\": \"ea970ad818f358cf\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
"f",
"t",
"5",
"2021-05-18 07:39:50.831182",
"NULL",
"NULL",
"f"
]
]
[
"id",
"event_id",
"status",
"request",
"response",
"created_at",
"id",
"schema_name",
"table_name",
"trigger_name",
"payload",
"delivered",
"error",
"tries",
"created_at",
"locked",
"next_retry_at",
"archived"
],
[
"31b4c28c-954d-4871-ba95-a6d7da8d6988",
"7bc7b398-f1cd-4761-839d-44971e01be48",
"1000",
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":8}},\"trace_context\":{\"trace_id\":\"04415c5c0870f8f6\",\"span_id\":\"455d47a2c5d8f40e\"}},\"created_at\":\"2021-05-18T07:39:50.658771Z\",\"id\":\"7bc7b398-f1cd-4761-839d-44971e01be48\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":4},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"04415c5c0870f8f6\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"d1260fcdfe50945e\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"de05cf247e935b7a\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
"2021-05-18 07:40:32.81592",
"7bc7b398-f1cd-4761-839d-44971e01be48",
"public",
"users",
"new_user",
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 8, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"455d47a2c5d8f40e\", \"trace_id\": \"04415c5c0870f8f6\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
"f",
"t",
"5",
"2021-05-18 07:39:50.658771",
"NULL",
"NULL",
"f"
],
[
"bf1760ee-c628-4b94-b535-1d5453675958",
"c3ac48be-a569-4d87-8c52-cb84309002ed",
"1000",
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":6}},\"trace_context\":{\"trace_id\":\"ecba73bac1b4601a\",\"span_id\":\"5a75ae38fccf4473\"}},\"created_at\":\"2021-05-18T07:39:50.332379Z\",\"id\":\"c3ac48be-a569-4d87-8c52-cb84309002ed\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":4},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"ecba73bac1b4601a\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"1c3c460b36da4a0e\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"f309dbf4632da6a5\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
"2021-05-18 07:40:32.815484",
"c3ac48be-a569-4d87-8c52-cb84309002ed",
"public",
"users",
"new_user",
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 6, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"5a75ae38fccf4473\", \"trace_id\": \"ecba73bac1b4601a\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
"f",
"t",
"5",
"2021-05-18 07:39:50.332379",
"NULL",
"NULL",
"f"
],
[
"5836823f-9104-489e-b339-946b45e266a9",
"338eec2d-0c1f-4358-ae12-05d3f73a85c6",
"1000",
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":9}},\"trace_context\":{\"trace_id\":\"ea970ad818f358cf\",\"span_id\":\"77150de9d725e5df\"}},\"created_at\":\"2021-05-18T07:39:50.831182Z\",\"id\":\"338eec2d-0c1f-4358-ae12-05d3f73a85c6\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":4},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"ea970ad818f358cf\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"332c2f49df1cb4d2\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"3668323420f67bb1\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
"2021-05-18 07:40:32.81517",
"338eec2d-0c1f-4358-ae12-05d3f73a85c6",
"public",
"users",
"new_user",
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 9, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"77150de9d725e5df\", \"trace_id\": \"ea970ad818f358cf\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
"f",
"t",
"5",
"2021-05-18 07:39:50.831182",
"NULL",
"NULL",
"f"
],
[
"7b314fa3-fa10-4d1d-9c7b-0799e2a2345c",
"423e5a24-d4e0-493a-83df-ecff0eca2398",
"1000",
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":7}},\"trace_context\":{\"trace_id\":\"da0635bf4fb444b1\",\"span_id\":\"5e088982a14f9bdd\"}},\"created_at\":\"2021-05-18T07:39:50.490999Z\",\"id\":\"423e5a24-d4e0-493a-83df-ecff0eca2398\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":4},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"da0635bf4fb444b1\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"f92c4fac3a66595a\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"b3a34f8a72e89980\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
"2021-05-18 07:40:32.815118",
"423e5a24-d4e0-493a-83df-ecff0eca2398",
"public",
"users",
"new_user",
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 7, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"5e088982a14f9bdd\", \"trace_id\": \"da0635bf4fb444b1\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
"f",
"t",
"5",
"2021-05-18 07:39:50.490999",
"NULL",
"NULL",
"f"
],
[
"c6ec4304-3848-4c4c-a188-ff91ebe61ea0",
"7bc7b398-f1cd-4761-839d-44971e01be48",
"1000",
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":8}},\"trace_context\":{\"trace_id\":\"04415c5c0870f8f6\",\"span_id\":\"455d47a2c5d8f40e\"}},\"created_at\":\"2021-05-18T07:39:50.658771Z\",\"id\":\"7bc7b398-f1cd-4761-839d-44971e01be48\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":3},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"04415c5c0870f8f6\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"f520ea1624695587\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"2dc1b4d86426e316\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
"2021-05-18 07:40:22.736277",
"7bc7b398-f1cd-4761-839d-44971e01be48",
"public",
"users",
"new_user",
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 8, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"455d47a2c5d8f40e\", \"trace_id\": \"04415c5c0870f8f6\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
"f",
"t",
"5",
"2021-05-18 07:39:50.658771",
"NULL",
"NULL",
"f"
],
[
"8c88c745-29eb-4637-ad2d-85f3d6ba82c4",
"423e5a24-d4e0-493a-83df-ecff0eca2398",
"1000",
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":7}},\"trace_context\":{\"trace_id\":\"da0635bf4fb444b1\",\"span_id\":\"5e088982a14f9bdd\"}},\"created_at\":\"2021-05-18T07:39:50.490999Z\",\"id\":\"423e5a24-d4e0-493a-83df-ecff0eca2398\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":3},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"da0635bf4fb444b1\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"d6bdb95ec116b8ff\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"01b61664322a458b\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
"2021-05-18 07:40:22.736095",
"423e5a24-d4e0-493a-83df-ecff0eca2398",
"public",
"users",
"new_user",
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 7, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"5e088982a14f9bdd\", \"trace_id\": \"da0635bf4fb444b1\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
"f",
"t",
"5",
"2021-05-18 07:39:50.490999",
"NULL",
"NULL",
"f"
],
[
"48532d4d-ee73-4245-a8f6-378b034eb4f0",
"338eec2d-0c1f-4358-ae12-05d3f73a85c6",
"1000",
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":9}},\"trace_context\":{\"trace_id\":\"ea970ad818f358cf\",\"span_id\":\"77150de9d725e5df\"}},\"created_at\":\"2021-05-18T07:39:50.831182Z\",\"id\":\"338eec2d-0c1f-4358-ae12-05d3f73a85c6\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":3},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"ea970ad818f358cf\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"4d8d92209b40eab3\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"876f35924d13168e\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
"2021-05-18 07:40:22.736039",
"338eec2d-0c1f-4358-ae12-05d3f73a85c6",
"public",
"users",
"new_user",
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 9, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"77150de9d725e5df\", \"trace_id\": \"ea970ad818f358cf\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
"f",
"t",
"5",
"2021-05-18 07:39:50.831182",
"NULL",
"NULL",
"f"
],
[
"33105396-99dc-446c-ac7f-d93c38ceb686",
"c3ac48be-a569-4d87-8c52-cb84309002ed",
"1000",
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":6}},\"trace_context\":{\"trace_id\":\"ecba73bac1b4601a\",\"span_id\":\"5a75ae38fccf4473\"}},\"created_at\":\"2021-05-18T07:39:50.332379Z\",\"id\":\"c3ac48be-a569-4d87-8c52-cb84309002ed\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":3},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"ecba73bac1b4601a\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"4fa95afd2b803b9c\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"de923514252481ca\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
"2021-05-18 07:40:22.735757",
"c3ac48be-a569-4d87-8c52-cb84309002ed",
"public",
"users",
"new_user",
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 6, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"5a75ae38fccf4473\", \"trace_id\": \"ecba73bac1b4601a\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
"f",
"t",
"5",
"2021-05-18 07:39:50.332379",
"NULL",
"NULL",
"f"
],
[
"f7980cf5-7520-489a-87f1-f658773f9e60",
"423e5a24-d4e0-493a-83df-ecff0eca2398",
"1000",
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":7}},\"trace_context\":{\"trace_id\":\"da0635bf4fb444b1\",\"span_id\":\"5e088982a14f9bdd\"}},\"created_at\":\"2021-05-18T07:39:50.490999Z\",\"id\":\"423e5a24-d4e0-493a-83df-ecff0eca2398\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":2},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"da0635bf4fb444b1\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"2fbf0361df48ccc7\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"ebc5dd9ef22f9543\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
"2021-05-18 07:40:11.704173",
"423e5a24-d4e0-493a-83df-ecff0eca2398",
"public",
"users",
"new_user",
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 7, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"5e088982a14f9bdd\", \"trace_id\": \"da0635bf4fb444b1\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
"f",
"t",
"5",
"2021-05-18 07:39:50.490999",
"NULL",
"NULL",
"f"
],
[
"18e6a7de-c38d-4f56-90f5-d0cc1298ea97",
"338eec2d-0c1f-4358-ae12-05d3f73a85c6",
"1000",
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":9}},\"trace_context\":{\"trace_id\":\"ea970ad818f358cf\",\"span_id\":\"77150de9d725e5df\"}},\"created_at\":\"2021-05-18T07:39:50.831182Z\",\"id\":\"338eec2d-0c1f-4358-ae12-05d3f73a85c6\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":2},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"ea970ad818f358cf\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"18ac4aa73874b52d\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"705e55f29e621be4\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
"2021-05-18 07:40:11.704093",
"338eec2d-0c1f-4358-ae12-05d3f73a85c6",
"public",
"users",
"new_user",
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 9, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"77150de9d725e5df\", \"trace_id\": \"ea970ad818f358cf\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
"f",
"t",
"5",
"2021-05-18 07:39:50.831182",
"NULL",
"NULL",
"f"
]
]

View File

@ -332,4 +332,4 @@
width: 15px;
min-width: 15px;
cursor: pointer;
}
}

View File

@ -35,7 +35,7 @@ const InheritedRolesEditor: React.FC<EditorProps> = ({
const [isCollapsed, setIsCollapsed] = useState(props.isCollapsed);
type Option = {
value: typeof allRoles[number];
value: (typeof allRoles)[number];
isChecked: true | false;
};

View File

@ -150,24 +150,26 @@ CloudMetadataKo.parameters = {
msw: mockHandlers({}),
};
export const ProLitePrometheusEnabled: ComponentStory<typeof Sidebar> =
args => {
// eslint-disable-next-line no-underscore-dangle
window.__env.consoleType = 'pro-lite';
return <Sidebar {...args} />;
};
export const ProLitePrometheusEnabled: ComponentStory<
typeof Sidebar
> = args => {
// eslint-disable-next-line no-underscore-dangle
window.__env.consoleType = 'pro-lite';
return <Sidebar {...args} />;
};
ProLitePrometheusEnabled.storyName = '💠 Demo Pro Lite Prometheus Enabled';
ProLitePrometheusEnabled.args = generateArgs();
ProLitePrometheusEnabled.parameters = {
msw: mockHandlers({ prometheusEnabled: true }),
};
export const ProLitePrometheusDisabled: ComponentStory<typeof Sidebar> =
args => {
// eslint-disable-next-line no-underscore-dangle
window.__env.consoleType = 'pro-lite';
return <Sidebar {...args} />;
};
export const ProLitePrometheusDisabled: ComponentStory<
typeof Sidebar
> = args => {
// eslint-disable-next-line no-underscore-dangle
window.__env.consoleType = 'pro-lite';
return <Sidebar {...args} />;
};
ProLitePrometheusDisabled.storyName = '💠 Demo Pro Lite Prometheus Disabled';
ProLitePrometheusDisabled.args = generateArgs();
ProLitePrometheusDisabled.parameters = {

View File

@ -46,7 +46,7 @@ export const drivers = [
'cockroach',
'alloy',
] as const;
export type Driver = typeof drivers[number];
export type Driver = (typeof drivers)[number];
export const driverToLabel: Record<Driver, string> = {
postgres: 'PostgreSQL',

View File

@ -7,37 +7,38 @@ export interface OasGeneratorMoreInfoProps {
operation: Operation;
}
export const OasGeneratorMoreInfo: React.FC<OasGeneratorMoreInfoProps> =
props => {
const { operation } = props;
const [isExpanded, setExpanded] = React.useState(false);
return (
<div>
<div
className="flex justify-between cursor-pointer"
onClick={() => setExpanded(!isExpanded)}
>
<div>{operation.path}</div>
<div>
More info{' '}
<FaChevronDown
className={clsx(
isExpanded ? 'rotate-180' : '',
'transition-all duration-300 ease-in-out'
)}
/>
</div>
</div>
<div
className={clsx(
'whitespace-normal',
isExpanded ? 'h-auto pt-4' : 'h-0 pt-0',
'overflow-hidden transition-all duration-300 ease-in-out'
)}
>
{operation.description.trim() ??
'No description available for this endpoint'}
export const OasGeneratorMoreInfo: React.FC<
OasGeneratorMoreInfoProps
> = props => {
const { operation } = props;
const [isExpanded, setExpanded] = React.useState(false);
return (
<div>
<div
className="flex justify-between cursor-pointer"
onClick={() => setExpanded(!isExpanded)}
>
<div>{operation.path}</div>
<div>
More info{' '}
<FaChevronDown
className={clsx(
isExpanded ? 'rotate-180' : '',
'transition-all duration-300 ease-in-out'
)}
/>
</div>
</div>
);
};
<div
className={clsx(
'whitespace-normal',
isExpanded ? 'h-auto pt-4' : 'h-0 pt-0',
'overflow-hidden transition-all duration-300 ease-in-out'
)}
>
{operation.description.trim() ??
'No description available for this endpoint'}
</div>
</div>
);
};

View File

@ -7,33 +7,34 @@ interface AllowListSidebarSearchFormProps {
setSearch: (search: string) => void;
}
export const AllowListSidebarSearchForm: React.FC<AllowListSidebarSearchFormProps> =
({ setSearch }) => {
const schema = z.object({
search: z.string(),
});
export const AllowListSidebarSearchForm: React.FC<
AllowListSidebarSearchFormProps
> = ({ setSearch }) => {
const schema = z.object({
search: z.string(),
});
const {
methods: { watch },
Form,
} = useConsoleForm({
schema,
});
const {
methods: { watch },
Form,
} = useConsoleForm({
schema,
});
const search = watch('search');
const search = watch('search');
useEffect(() => {
setSearch(search);
}, [search]);
useEffect(() => {
setSearch(search);
}, [search]);
return (
<Form onSubmit={() => {}} className="pl-0 pr-0 !p-0 bg-transparent">
<InputField
id="search"
placeholder="Search Collections..."
icon={<FaSearch />}
name="search"
/>
</Form>
);
};
return (
<Form onSubmit={() => {}} className="pl-0 pr-0 !p-0 bg-transparent">
<InputField
id="search"
placeholder="Search Collections..."
icon={<FaSearch />}
name="search"
/>
</Form>
);
};

Some files were not shown because too many files have changed in this diff Show More