web: Supports historical viewing (#28)

This commit is contained in:
qianmoQ 2022-09-24 13:01:36 +08:00 committed by GitHub
commit 739a54b7ee
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 158 additions and 18 deletions

View File

@ -41,28 +41,12 @@ jobs:
- run: chmod 755 ./mvnw
- run: ./mvnw clean install findbugs:findbugs -Dcheckstyle.skip -Dskip.npm -DskipTests=true -X
before_checker_tests:
runs-on: ubuntu-latest
needs:
- before_checker_loading
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Maven Checker Tests
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'temurin'
- run: chmod 755 ./mvnw
- run: ./mvnw clean install -Dfindbugs.skip -Dcheckstyle.skip -Dskip.npm -X
before_checker_package:
runs-on: ubuntu-latest
needs:
- before_checker_loading
- before_checker_style
- before_checker_bugs
- before_checker_tests
steps:
- name: Checkout
uses: actions/checkout@v3

View File

@ -12,3 +12,66 @@ DataCap is integrated software for data transformation, integration and visualiz
cp configure/git-hook/* .git/hooks
chmod 700 .git/hooks/*
```
## Contributors
---
![GitHub Contributors Image](https://contrib.rocks/image?repo=EdurtIO/incubator-datacap)
## Stargazers over time
---
[![Stargazers over time](https://starchart.cc/EdurtIO/incubator-datacap.svg)](https://starchart.cc/EdurtIO/incubator-datacap)
## Overview
---
![](https://visitor-badge.glitch.me/badge?page_id=incubator-datacap)
[![](https://tokei.rs/b1/github/EdurtIO/dbm)](https://github.com/EdurtIO/incubator-datacap)
![version](https://img.shields.io/github/v/release/EdurtIO/incubator-datacap.svg)
![GitHub release (latest by date including pre-releases)](https://img.shields.io/github/downloads-pre/EdurtIO/incubator-datacap/latest/total?style=flat-square)
![GitHub all releases](https://img.shields.io/github/downloads/EdurtIO/incubator-datacap/total?style=flat-square)
![GitHub branch checks state](https://img.shields.io/github/checks-status/EdurtIO/incubator-datacap/master?style=flat-square)
![GitHub Release Date](https://img.shields.io/github/release-date/EdurtIO/incubator-datacap?style=flat-square)
![GitHub commit activity](https://img.shields.io/github/commit-activity/y/EdurtIO/incubator-datacap?style=flat-square)
![GitHub contributors](https://img.shields.io/github/contributors-anon/EdurtIO/incubator-datacap?style=flat-square)
![GitHub last commit](https://img.shields.io/github/last-commit/EdurtIO/incubator-datacap?style=flat-square)
## Supported Databases
---
DBM can query data from any SQL-speaking datastore or data engine (ClickHouse and more).
Here are some of the major database solutions that are supported:
<p align="center">
<a href="https://clickhouse.com" target="_blank"><img src="./shared/plugin/clickhouse.png" alt="ClickHouse" class="a" width="133" height="34" /></a>
<a href="https://www.mysql.com" target="_blank"><img src="./shared/plugin/mysql.png" alt="MySQL" class="a" width="auto" height="50"/></a>
</p>
## Join Us
---
Open the DingTalk software and scan the following QR code to join
<img src="./shared/dingtalk.png" width="200px" height="250px"></img>
## Thank you
---
- [Jetbrains](https://www.jetbrains.com/)
## Installation and Configuration
---
[Extended documentation for DataCap](https://databap.incubator.edurt.io)

BIN
shared/dingtalk.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

BIN
shared/plugin/mysql.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -0,0 +1,48 @@
<template>
<a-modal v-model:visible="visible" title="SQL" :footer="null" width="60%" @cancel="handlerCancel()">
<MonacoEditor theme="vs" :options="{theme: 'vs-dark', fontSize: 15}" language="sql" :height="300"
v-model:value="localContent">
</MonacoEditor>
</a-modal>
</template>
<script lang="ts">
import MonacoEditor from 'monaco-editor-vue3';
import { defineComponent } from "vue";
export default defineComponent({
name: "ConsoleSQLComponent",
props: {
isVisible: {
type: Boolean,
default: () => false
},
content: {
type: String,
default: () => ''
}
},
components: { MonacoEditor },
data() {
return {
localContent: this.content
}
}
,
methods: {
handlerCancel() {
this.visible = false;
}
},
computed: {
visible: {
get(): boolean {
return this.isVisible;
},
set(value: boolean) {
this.$emit('close', value);
}
}
}
});
</script>

View File

@ -1,4 +1,4 @@
import {SourceModel} from "@/model/SourceModel";
import { SourceModel } from "@/model/SourceModel";
const emptySource: SourceModel = {
name: "",

View File

@ -31,6 +31,12 @@ const headers = [
name: 'state',
dataIndex: 'state',
key: 'state'
},
{
title: 'Action',
name: 'action',
dataIndex: 'action',
key: 'action'
}
];

View File

@ -10,25 +10,50 @@
<template v-if="column.dataIndex === 'state'">
<a-tag :color="record.state === 'SUCCESS' ? '#87d068' : '#f50'">{{record.state}}</a-tag>
</template>
<template v-if="column.dataIndex === 'action'">
<a-space style="width: 100%">
<a-button type="primary" shape="circle" size="small"
@click="handlerShowContent(record.content)">
<a-tooltip>
<template #title>SQL</template>
<eye-outlined />
</a-tooltip>
</a-button>
<a-button :disabled="record.state === 'SUCCESS'" danger type="primary" shape="circle"
size="small" @click="handlerShowError(record.message)">
<a-tooltip>
<template #title>Error</template>
<warning-outlined />
</a-tooltip>
</a-button>
</a-space>
</template>
</template>
</a-table>
</a-card>
</div>
<ConsoleSQLComponent v-if="content" :isVisible="visibleContent" :content="content"
@close="handlerCloseContent($event)" />
</template>
<script lang="ts">
import ConsoleSQLComponent from "@/components/ConsoleSQL.vue";
import { AuditService } from "@/services/AuditService";
import { headers } from "@/views/pages/console/ConsoleGenerate";
import { Modal } from "ant-design-vue";
import { defineComponent } from "vue";
export default defineComponent({
name: "ConsoleHistoryView",
components: {},
components: { ConsoleSQLComponent },
data() {
return {
headers,
columns: [],
loading: false,
content: '',
visibleContent: false,
pagination: {
total: 0,
current: 1,
@ -59,6 +84,20 @@ export default defineComponent({
this.pagination.current = pagination.current;
this.pagination.pageSize = pagination.pageSize;
this.handlerInitialize(pagination.current, pagination.pageSize)
},
handlerShowError(message: string) {
Modal.error({
title: 'Error Message',
content: message,
});
},
handlerShowContent(content: string) {
this.visibleContent = true;
this.content = content;
},
handlerCloseContent(value: boolean) {
this.visibleContent = value;
this.content = '';
}
}
});