{_t('customJoin.defineCustomJoin', { defaultMessage: 'Define custom join' })}
{_t('customJoin.joinName', { defaultMessage: 'Join name' })}
{ joinName = e.target['value']; }} />
{_t('customJoin.baseTable', { defaultMessage: 'Base table' })}
{ if (e.detail) { fromDesignerId = e.detail; } }} />
{_t('customJoin.connection', { defaultMessage: 'Connection' })}
{ conidOverride = e.detail; }} />
{_t('customJoin.database', { defaultMessage: 'Database' })}
{ databaseOverride = e.detail; }} />
{_t('customJoin.referencedTable', { defaultMessage: 'Referenced table' })}
{ if (e.detail) { const name = fullNameFromString(e.detail); refTableName = name.pureName; refSchemaName = name.schemaName; const refTable = $refDbInfo?.tables?.find( x => x.pureName == refTableName && x.schemaName == refSchemaName ); columns = refTable?.primaryKey?.columns?.map(col => ({ refColumnName: col.columnName, })) || []; } }} />
{_t('customJoin.baseColumn', { defaultMessage: 'Base column' })} - {fromTableInfo?.pureName}
{_t('customJoin.refColumn', { defaultMessage: 'Ref column' })} - {refTableName || _t('customJoin.tableNotSet', { defaultMessage: '(table not set)' })}
{#each columns as column, index}
{#key column.baseColumnName} ({ label: col.columnName, value: col.columnName, }))} on:change={e => { if (e.detail) { columns = columns.map((col, i) => (i == index ? { ...col, baseColumnName: e.detail } : col)); } }} /> {/key}
{#key column.refColumnName} ({ label: col.columnName, value: col.columnName, }))} on:change={e => { if (e.detail) { columns = columns.map((col, i) => (i == index ? { ...col, refColumnName: e.detail } : col)); } }} /> {/key}
{ const x = [...columns]; x.splice(index, 1); columns = x; }} />
{/each} { columns = [ ...columns, { baseColumnName: '', refColumnName: '', }, ]; }} />
{ setConfig(cfg => { const newNode = createPerspectiveNodeConfig({ pureName: refTableName, schemaName: refSchemaName }); newNode.designerId = editValue?.refNodeDesignerId || uuidv1(); newNode.conid = conidOverride; newNode.database = databaseOverride; newNode.position = cfg.nodes.find(x => x.designerId == editValue?.refNodeDesignerId)?.position; newNode.alias = joinName; const newRef = { designerId: editValue?.referenceDesignerId || uuidv1(), sourceId: fromDesignerId, targetId: newNode.designerId, columns: columns.map(col => ({ source: col.baseColumnName, target: col.refColumnName, })), }; return { ...cfg, nodes: [...cfg.nodes.filter(x => x.designerId != editValue?.refNodeDesignerId), newNode], references: [...cfg.references.filter(x => x.designerId != editValue?.referenceDesignerId), newRef], }; }); // const newJoin = { // joinid, // joinName, // baseDesignerId: fromDesignerId, // refTableName, // refSchemaName, // columns, // conid: conidOverride, // database: databaseOverride, // }; // setConfig(cfg => ({ // ...cfg, // customJoins: editValue // ? cfg.customJoins.map(x => (x.joinid == editValue.joinid ? newJoin : x)) // : [...(cfg.customJoins || []), newJoin], // })); closeCurrentModal(); }} />