Skip to content

TransactionTable

트랜잭션 데이터 표현을 위한 테이블 컴포넌트입니다.

Types

ts
import type { ApiTransactionData } from '@jennifersoft/apm-apis';

export type TransactionType = 'ERROR' | 'LINKED' | 'STACKED' | 'ASYNC';

export interface TransactionTime {
    elapsedTime: number;
    methodTime: number;
    sqlTime: number;
    txcallTime: number;
    batchTime: number;
}

// TransactionTable.vue
interface TransactionData extends ApiTransactionData {
    transactionTypes: TransactionType[];
    score: number;
    methodTime: number;
}

type TransactionTableData = TransactionData & Record<string, unknown>;

const emit = defineEmits(['sort', 'select']);
const props = defineProps<
    PagingTableProps<T> & {
        maxMap: TransactionTime;
    }
>();

Sample Code

vue
<template>
    <transaction-table
        :alias="'transaction-table'"
        :width="620"
        :height="420"
        :columns="TRANSACTION_TABLE_COLUMNS"
        :rows="TRANSACTION_TABLE_ROWS"
        :display-count="10"
        :max-map="TRANSACTION_TABLE_MAX_TIME"
        @select="onSelectTransactionTable"
    >
    </transaction-table>
</template>

<script setup lang="ts">
import {
    TRANSACTION_TABLE_COLUMNS,
    TRANSACTION_TABLE_ROWS,
    TRANSACTION_TABLE_MAX_TIME,
} from './data/transaction-table';
import { provide } from 'vue';
import { TransactionTable } from '@jennifersoft/apm-components';

provide<I18n>('i18n', {
    method: 'Method',
    sql: 'SQL',
    externalCall: 'External Call',
    batch: 'Batch Job',
    error: 'ERROR',
    fetch: 'Fetch',

    pageInfo: '%d개 중 %s',
    firstPage: '첫 페이지',
    lastPage: '마지막 페이지',
    manageTableColumns: '테이블 컬럼 관리',
});

const onSelectTransactionTable = (row) => {
    console.log('TransactionTable selected:', row);
};
</script>

Demo