Browse Source

support sort and change logo

pull/7/head
cweijan 5 years ago
parent
commit
bfeef8b257
  1. 6
      README.md
  2. BIN
      logo.png
  3. 39
      resources/webview/result.html
  4. 1
      src/provider/Complection/CompletionProvider.ts
  5. 1
      src/provider/Complection/chain/keywordChain.ts
  6. 5
      src/view/result/query.ts

6
README.md

@ -1,17 +1,15 @@
# MySQL
[![Marketplace Version](https://vsmarketplacebadge.apphb.com/version-short/cweijan.vscode-mysql-manager.svg)](https://marketplace.visualstudio.com/items?itemName=cweijan.vscode-mysql-manager) [![Installs](https://vsmarketplacebadge.apphb.com/installs-short/cweijan.vscode-mysql-manager.svg)](https://marketplace.visualstudio.com/items?itemName=cweijan.vscode-mysql-manager) [![Rating](https://vsmarketplacebadge.apphb.com/rating-short/cweijan.vscode-mysql-manager.svg)](https://marketplace.visualstudio.com/items?itemName=cweijan.vscode-mysql-manager) [![Build Status](https://travis-ci.org/formulahendry/vscode-mysql.svg?branch=master)](https://travis-ci.org/formulahendry/vscode-mysql)
[![Marketplace Version](https://vsmarketplacebadge.apphb.com/version-short/cweijan.vscode-mysql-manager.svg)](https://marketplace.visualstudio.com/items?itemName=cweijan.vscode-mysql-manager) [![Installs](https://vsmarketplacebadge.apphb.com/installs-short/cweijan.vscode-mysql-manager.svg)](https://marketplace.visualstudio.com/items?itemName=cweijan.vscode-mysql-manager) [![Rating](https://vsmarketplacebadge.apphb.com/rating-short/cweijan.vscode-mysql-manager.svg)](https://marketplace.visualstudio.com/items?itemName=cweijan.vscode-mysql-manager) [![Build Status](https://travis-ci.org/cweijan/vscode-mysql.svg?branch=master)](https://travis-ci.org/cweijan/vscode-mysql)
MySQL management tool Plus
> This plugin forked from [MySQL](https://marketplace.visualstudio.com/items?itemName=formulahendry.vscode-mysql)
> This plugin base of [MySQL](https://marketplace.visualstudio.com/items?itemName=formulahendry.vscode-mysql)
>
> Many amazing improvements have been made
>
> Welcome to contribute in [repository](https://github.com/cweijan/vscode-mysql)
>
> You can see changes in the [changelog](/CHANGELOG.md)
## Features

BIN
logo.png

Before

Width: 277  |  Height: 277  |  Size: 11 KiB

After

Width: 512  |  Height: 512  |  Size: 33 KiB

39
resources/webview/result.html

@ -28,7 +28,7 @@
.info-panel {
color: #444;
font-size: 16px;
font-size: 14px;
background-color: white;
border: 1px solid #dcdfe6;
border-radius: 5px;
@ -84,24 +84,27 @@
</el-cow>
</el-row>
</div>
<div v-if="info.visible">
<div class="info-panel" v-html="info.message"></div>
<div v-if="info.visible ">
<div v-if="info.error" class="info-panel" style="color:red" v-html="info.message"></div>
<div v-if="!info.error" class="info-panel" style="color: green;" v-html="info.message"></div>
</div>
<div :style="'width:' + table.width + 'px;overflow:scroll'" v-if="result.data">
<el-table id="dataTable" v-loading='table.loading' size='small'
<el-table id="dataTable" v-loading='table.loading' size='small' @sort-change="sort"
:data="result.data.filter(data => !table.search || JSON.stringify(data).toLowerCase().includes(table.search.toLowerCase()))"
border @cell-click="celledit">
<!-- tool bar -->
<el-table-column fixed="left" label="Operations" width="100" v-if="result.primaryKey">
<template slot-scope="scope">
<el-button @click="openEdit(scope.row)" type="text" size="small">Edit</el-button>
<el-button @click="deleteConfirm(scope.row[result.primaryKey])" type="text" size="small">Delete
<el-button @click="openEdit(scope.row)" type="primary" size="small" icon="el-icon-edit" circle>
</el-button>
<el-button @click="deleteConfirm(scope.row[result.primaryKey])" type="danger" size="small"
icon="el-icon-delete" circle>
</el-button>
</template>
</el-table-column>
<!-- table view -->
<el-table-column :label="column" v-for="(column) in result.columnList" :key="column" align="center"
v-if="result.columnList" :width="computeWidth(column)">
sortable v-if="result.columnList" :width="computeWidth(column)">
<template slot-scope="scope">
<span v-html='dataformat(scope.row[column])'></span>
</template>
@ -166,7 +169,8 @@
info: {
sql: null,
message: null,
visible: false
visible: false,
error: false
},
update: {
current: {},
@ -175,6 +179,14 @@
}
},
methods: {
sort(row) {
let order = row.order == 'ascending' ? "asc" : "desc"
let sortSql = this.result.sql
.replace(";","")
.replace(/order by .+? (desc|asc)?/ig, "")
.replace(/\s?(limit.+)?$/i,` ORDER BY ${row.column.label} ${order} \$1 `)
this.execute(sortSql)
},
insertRequest() {
this.editor.visible = true;
this.update.primary = null;
@ -332,14 +344,12 @@
// vscode.setState({ result: vue.result }); is instead by retainContextWhenHidden=true
}
const handlerDml = (res) => {
// TODO 回显优化
const handlerCommon = (res) => {
vue.editor.loading = false;
vue.editor.visible = false;
vue.info.visible = true;
vue.info.message = res.message
// vue.$message({ type: 'success', message: `EXECUTE ${res.sql} SUCCESS, affectedRows:${res.affectedRows}` });
vue.refresh()
}
window.addEventListener('message', event => {
@ -358,8 +368,13 @@
handlerData(response)
break;
case "DML":
handlerCommon(response)
vue.info.error = false
vue.refresh()
break;
case "ERROR":
handlerDml(response)
handlerCommon(response)
vue.info.error = true
break;
default:
vue.$message(JSON.stringify(event.data));

1
src/provider/Complection/CompletionProvider.ts

@ -18,7 +18,6 @@ export class CompletionProvider implements vscode.CompletionItemProvider {
private initDefaultComplectionItem() {
// The chain is orderly
// TODO 增加在Where和ON语句下的表检测
this.fullChain = [
new TableCreateChain(),
new TypeKeywordChain(),

1
src/provider/Complection/chain/keywordChain.ts

@ -3,7 +3,6 @@ import { ComplectionChain, ComplectionContext } from "../complectionContext";
export class KeywordChain implements ComplectionChain {
// TODO 需要再细分, 分为ON和WHERE才能使用的条件
private keywordList: string[] = ["JOIN", "SELECT", "UPDATE", "DELETE", "TABLE", "INSERT", "INTO", "VALUES", "FROM", "WHERE", "GROUP BY", "ORDER BY", "HAVING", "LIMIT", "ALTER", "CREATE", "DROP", "FUNCTION", "CASE", "PROCEDURE", "TRIGGER", "INDEX", "CHANGE", "COLUMN", "ADD", 'SHOW', "PRIVILEGES", "IDENTIFIED", "VIEW", "CURSOR", "EXPLAIN"];
private keywordComplectionItems: vscode.CompletionItem[] = [];

5
src/view/result/query.ts

@ -6,7 +6,7 @@ import { DatabaseCache } from "../../database/DatabaseCache";
import { QueryUnit } from "../../database/QueryUnit";
import { IConnection } from "../../model/Connection";
import { ColumnNode } from "../../model/table/columnNode";
import { DataResponse, ErrorResponse, DMLResponse } from "./queryResponse";
import { DataResponse } from "./queryResponse";
export class QueryParam<T> {
type: MessageType;
@ -31,13 +31,12 @@ export class QueryPage {
queryParam.res.message=`EXECUTE SUCCESS:<br><br>&nbsp;&nbsp;${queryParam.res.sql}<br><br>AffectedRows : ${queryParam.res.affectedRows}, CostTime : ${queryParam.res.costTime}ms`
break;
case MessageType.ERROR:
queryParam.res.message=`EXECUTE Fail:<br><br>&nbsp;&nbsp;${queryParam.res.sql}<br><br>message :<br>&nbsp;&nbsp;${queryParam.res.message}`
queryParam.res.message=`EXECUTE FAIL:<br><br>&nbsp;&nbsp;${queryParam.res.sql}<br><br>Message :<br><br>&nbsp;&nbsp;${queryParam.res.message}`
break;
}
this.sendData = queryParam
if (this.creating) return;
// TODO support delimiter : const _sql = sql.toString().replace(/DELIMITER ;?;/gm, '').replace(/;;/gm, ';')
// update result webview
if (this.resultWebviewPanel) {

Loading…
Cancel
Save