canal-admin-ui 指定profile编译 (#2019)

* canal-admin-ui 指定profile编译

* 启动实例时选择指定节点

* modify

* modify

* 静态页面修改
This commit is contained in:
rewerma
2019-07-22 09:15:14 +08:00
committed by GitHub
parent be9813142f
commit 44722fe01c
26 changed files with 207 additions and 155 deletions

View File

@@ -2,64 +2,74 @@
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>canal-admin</artifactId>
<groupId>com.alibaba.otter</groupId>
<version>1.1.4-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>canal-admin</artifactId>
<groupId>com.alibaba.otter</groupId>
<version>1.1.4-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>canal-admin-ui</artifactId>
<artifactId>canal-admin-ui</artifactId>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<frontend-maven-plugin.version>1.6</frontend-maven-plugin.version>
</properties>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<frontend-maven-plugin.version>1.6</frontend-maven-plugin.version>
</properties>
<build>
<profiles>
<profile>
<id>release</id>
<activation>
<property>
<name>env</name>
<value>release</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>com.github.eirslett</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<version>${frontend-maven-plugin.version}</version>
<executions>
<execution>
<id>install node and npm</id>
<goals>
<goal>install-node-and-npm</goal>
</goals>
<configuration>
<nodeVersion>v9.11.1</nodeVersion>
</configuration>
</execution>
<!-- Install all project dependencies -->
<execution>
<id>npm install</id>
<goals>
<goal>npm</goal>
</goals>
<!-- optional: default phase is "generate-resources" -->
<phase>generate-resources</phase>
<!-- Optional configuration which provides for running any npm command -->
<configuration>
<arguments>install</arguments>
</configuration>
</execution>
<!-- Build and minify static files -->
<execution>
<id>npm run build</id>
<goals>
<goal>npm</goal>
</goals>
<configuration>
<arguments>run build</arguments>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.github.eirslett</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<version>${frontend-maven-plugin.version}</version>
<executions>
<execution>
<id>install node and npm</id>
<goals>
<goal>install-node-and-npm</goal>
</goals>
<configuration>
<nodeVersion>v9.11.1</nodeVersion>
</configuration>
</execution>
<!-- Install all project dependencies -->
<execution>
<id>npm install</id>
<goals>
<goal>npm</goal>
</goals>
<!-- optional: default phase is "generate-resources" -->
<phase>generate-resources</phase>
<!-- Optional configuration which provides for running any npm command -->
<configuration>
<arguments>install</arguments>
</configuration>
</execution>
<!-- Build and minify static files -->
<execution>
<id>npm run build</id>
<goals>
<goal>npm</goal>
</goals>
<configuration>
<arguments>run build</arguments>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</build>
</profile>
</profiles>
</project>

View File

@@ -38,9 +38,9 @@ export function deleteCanalInstance(id) {
})
}
export function startInstance(id) {
export function startInstance(id, nodeId) {
return request({
url: '/canal/instance/start/' + id,
url: '/canal/instance/start/' + id + '/' + nodeId,
method: 'put'
})
}

View File

@@ -47,11 +47,25 @@
</template>
</el-table-column>
</el-table>
<el-dialog :visible.sync="dialogFormVisible" title="确定启动服务" width="400px">
<el-form ref="dataForm" :rules="rules" :model="nodeModel" label-position="left" label-width="80px" style="width: 350px; margin-left:30px;">
<el-form-item label="选择节点" prop="nodeId">
<el-select v-model="nodeModel.id" placeholder="选择节点">
<el-option v-for="item in nodeServices" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible = false">取消</el-button>
<el-button type="primary" @click="doStartInstance()">确定</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { getCanalInstances, deleteCanalInstance, startInstance, stopInstance } from '@/api/canalInstance'
import { getNodeServers } from '@/api/nodeServer'
export default {
filters: {
@@ -68,8 +82,17 @@ export default {
return {
list: null,
listLoading: true,
dialogFormVisible: false,
nodeServices: [],
listQuery: {
name: ''
},
currentId: null,
nodeModel: {
id: null
},
rules: {
id: [{ required: true, message: '请选择节点', trigger: 'change' }]
}
}
},
@@ -117,25 +140,34 @@ export default {
this.$message({ message: '当前实例不是停止状态,无法启动', type: 'error' })
return
}
this.$confirm('启动Canal Instance: ' + row.name, '确定启动实例服务', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
startInstance(row.id).then((res) => {
if (res.data) {
this.fetchData()
this.$message({
message: '启动成功',
type: 'success'
})
} else {
this.$message({
message: '启动实例服务出现异常',
type: 'error'
})
}
})
this.currentId = row.id
this.nodeModel.id = null
this.$nextTick(() => {
this.$refs['dataForm'].clearValidate()
})
getNodeServers().then((res) => {
this.nodeServices = res.data
this.dialogFormVisible = true
})
},
doStartInstance() {
startInstance(this.currentId, this.nodeModel.id).then((res) => {
if (res.data) {
this.fetchData()
this.$message({
message: '启动成功',
type: 'success'
})
this.dialogFormVisible = false
} else {
this.$message({
message: '启动实例服务出现异常',
type: 'error'
})
}
})
},
handleStop(row) {

View File

@@ -7,7 +7,7 @@
<el-button type="primary" @click="onRefresh">刷新</el-button>
<el-button type="info" @click="onBack">返回</el-button>
</el-form-item>
<el-input v-model="form.desc" :rows="35" readonly="true" type="textarea" />
<el-input v-model="form.desc" :rows="35" :readonly="'readonly'" type="textarea" />
</div>
</el-form>
</div>

View File

@@ -7,7 +7,7 @@
<el-button type="primary" @click="onRefresh">刷新</el-button>
<el-button type="info" @click="onBack">返回</el-button>
</el-form-item>
<el-input v-model="form.desc" :rows="35" readonly="true" type="textarea" />
<el-input v-model="form.desc" :rows="35" :readonly="'readonly'" type="textarea" />
</div>
</el-form>
</div>

View File

@@ -57,26 +57,6 @@
</template>
</el-table-column>
</el-table>
<el-dialog :visible.sync="dialogFormVisible" title="新建节点信息" width="600px">
<el-form ref="dataForm" :rules="rules" :model="nodeModel" label-position="left" label-width="80px" style="width: 350px; margin-left:80px;">
<el-form-item label="节点名称" prop="name">
<el-input v-model="nodeModel.name" />
</el-form-item>
<el-form-item label="节点IP" prop="ip">
<el-input v-model="nodeModel.ip" />
</el-form-item>
<el-form-item label="节点端口" prop="port">
<el-input v-model="nodeModel.port" placeholder="11113" type="number" />
</el-form-item>
<el-form-item label="监控端口" prop="port2">
<el-input v-model="nodeModel.port2" type="number" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible = false">取消</el-button>
<el-button type="primary" @click="createData()">确定</el-button>
</div>
</el-dialog>
<el-dialog :visible.sync="dialogFormVisible" :title="textMap[dialogStatus]" width="600px">
<el-form ref="dataForm" :rules="rules" :model="nodeModel" label-position="left" label-width="80px" style="width: 350px; margin-left:80px;">
<el-form-item label="节点名称" prop="name">
@@ -146,7 +126,8 @@ export default {
name: [{ required: true, message: '节点名称不能为空', trigger: 'change' }],
ip: [{ required: true, message: '节点IP不能为空', trigger: 'change' }],
port: [{ required: true, message: '节点端口不能为空', trigger: 'change' }]
}
},
dialogStatus: 'create'
}
},
// { min: 2, max: 5, message: '长度在 2 到 5 个字符', trigger: 'change' }