}
48
    }
49
50
    /**
51
     * 节点修改,适用于PathParentCache、TreeNodeCache
52
     *
53
     * 只有当 Push-Server 的 http 端口修改时,才会触发相应操作;
54
     *
55
     * @param event 触发事件
56
     */
57
    @Override
58
    public void changeListener(TreeCacheEvent event) {
59
        //空数据不予处理
60
        if(event.getData() == null)
61
            return;
62
63
        LOG.debug("PushServerTreeWatcher-modify:path=["+event.getData().getPath()+"],value=["+ new String(event.getData().getData())+"]");
64
    }
65
    /**
66
     * 不需要要处理的事件
67
     *
68
     * @param event
69
     * @return
70
     * @throws
71
     */
72
    private boolean skip(TreeCacheEvent event) {
73
        //空数据不予处理
74
        if(event.getData() == null)
75
            return true;
76
77
        //只处理叶子节点(PushServer的值)
78
        Stat stat = event.getData().getStat();
79
        if(stat.getNumChildren() != 0)
80
            return true;
81
82
        return false;
83
    }
84
}

+ 57 - 0
ipu-zk-example/src/main/java/com/ai/ipu/example/zookeeper/ZookeeperExample.java

@ -0,0 +1,57 @@
1
package com.ai.ipu.example.zookeeper;
2
3
import com.ai.ipu.zk.ICuratorClient;
4
import com.ai.ipu.zk.ZkClientFactory;
5
import com.ai.ipu.zk.util.OperType;
6
import org.junit.Before;
7
import org.junit.Test;
8
import org.slf4j.Logger;
9
import org.slf4j.LoggerFactory;
10
11
public class ZookeeperExample {
12
    private static final Logger LOG = LoggerFactory.getLogger(ZookeeperExample.class);
13
    private static final String PATH = "test";
14
    private static final String PATH2 = "test/test2";
15
    private static final String TYPE = "/myzktest";
16
    private static final boolean VERSIONCTL = true;
17
    private static final boolean PERSISTENT = true;
18
    private ICuratorClient client;
19
20
    @Before
21
    public void setBefore(){
22
        try {
23
            client = (ICuratorClient) ZkClientFactory.getZkClient("push");
24
            setUserDefine();
25
            client.addPathCacheListener(OperType.Define, PATH, true, new PushServerPathWatcher());
26
            client.addTreeCacheListener(OperType.Define, PATH, true, new PushServerTreeWatcher());
27
        } catch (Exception e) {
28
            LOG.error(e.getMessage(), e);
29
        }
30
    }
31
32
    private void setUserDefine() {
33
        OperType.Define.setType(TYPE);
34
        OperType.Define.setPersistent(PERSISTENT);
35
        OperType.Define.setVersionCtrl(VERSIONCTL);
36
    }
37
38
    @Test
39
    public void testSetValue() throws Exception{
40
        LOG.debug(Boolean.toString(client.setValue(OperType.Define, PATH, "myData1")));
41
    }
42
43
    @Test
44
    public void testSetValue2() throws Exception{
45
        LOG.debug(Boolean.toString(client.setValue(OperType.Define, PATH2, "myData1")));
46
    }
47
48
    @Test
49
    public void testGetValue() throws Exception {
50
        LOG.debug(client.getValue(OperType.Define, PATH2));
51
    }
52
53
    @Test
54
    public void deleteNode() throws Exception {
55
        LOG.debug(Boolean.toString(client.delete(OperType.Define, PATH2)));
56
    }
57
}

+ 21 - 0
ipu-zk-example/src/main/resources/ipu-zk.xml

@ -0,0 +1,21 @@
1
<?xml version = '1.0' encoding = 'UTF-8'?>
2
<zookeepers>
3
    <zookeeper name="push">
4
        <!-- 连接主机 -->
5
        <config name="connHosts" value="47.105.160.21:2101,47.105.160.21:2102,47.105.160.21:2103"/>
6
        <!-- 认证名和密码 -->
7
        <config name="auth" value="ipu:ipu321"/>
8
        <!-- 身份验证方式,world,auth,digest,ip -->
9
        <config name="acl" value="digest"/>
10
        <!-- 版本信息 -->
11
        <config name="version" value="3.0"/>
12
        <!-- 会话超时时间-->
13
        <config name="sessionTimeout" value="30000"/>
14
        <!-- 连接超时时间-->
15
        <config name="connectTimeout" value="3000"/>
16
        <!-- 重连超时时间-->
17
        <config name="reconnectTimeout" value="1000"/>
18
        <!-- 重连次数-->
19
        <config name="reconnectCount" value="3"/>
20
    </zookeeper>
21
</zookeepers>

+ 8 - 0
ipu-zk-example/src/main/resources/log4j.properties

@ -0,0 +1,8 @@
1
log4j.rootLogger=error, console
2
log4j.logger.org.apache.com.ai.ipu.zookeeper=error
3
log4j.logger.com.ai.ipu.example=debug
4
5
log4j.appender.console=org.apache.log4j.ConsoleAppender
6
log4j.appender.console.target=System.out
7
log4j.appender.console.layout=org.apache.log4j.PatternLayout
8
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %5p [%t] (%F:%L) - %m%n

common-ui - Nuosi Git Service

AIoT前端公共UI

base.md 2.5KB

CommonDrawer 抽屉

基础用法


:::demo

<template>
  <div>
    <el-button type="primary" @click="handelClick">点击1抽屉</el-button>
    <common-drawer v-if="showDialog" title="我是抽屉组件"></common-drawer>
  </div>
</template>

<script setup lang="ts">
import { ref } from 'vue'

const showDialog = ref(false)


function handelClick() {
  showDialog.value = true
}

</script>

:::

:::demo

<!-- 自定义抽屉按钮 -->
<template>
  <div>
    <el-button @click.stop="handelClick">自定义抽屉</el-button>
    <common-drawer
      v-if="showCustomDialog"
      title="自定义抽屉"
      :drawer-data="dialogData"
      @close-drawer="handelCancel"
    ></common-drawer>
  </div>
</template>

<script setup lang="ts">
import { ref } from 'vue'

const showCustomDialog = ref(false)


function handelClick() {
  showCustomDialog.value = true
}

function handelCancel() {
  showCustomDialog.value = true
}

function handelClose() {
  showCustomDialog.value = false
}

function handelConfirm () {
  showCustomDialog.value = false
}
const dialogData = ref({
  btns: [
    { label: '取消', name: 'cancel', onClick: handelCancel },
    { label: '关闭', type: 'danger', name: 'close', onClick: handelClose },
    { label: '确认', type: 'promary', name: 'confirm', onClick: handelConfirm }
  ]
});

</script>

:::

配置参数


参数 说明 类型 是否必须
dialogData drawerData: 支持element-plus中el-drawer全部参数的导入; btns: 支持抽屉按钮自定义 Object[] false
fullscreen 是否采用全屏抽屉 Boolean false
width 抽屉宽度, 目前支持两种数据形式, ’数字自定义方式‘,如果直接传number数字时或者百分比时,支持按照百分比或者数字进行宽度的自定义调整, 默认900px String/Number false

事件

事件

事件名称 说明 回调
handleClose 触发el-dialog的before-close钩子,确保点击右上角×后下次依然可以打开弹窗,必须调用 --
closeDialog 点击取消时,触发的回调事件 --
confirmDialog 点击确认按钮时,触发的回调事件 --
如果为自定义按钮时,回调事件将按照自定义按钮的onClick函数进行执行回调,
同时需要调用handleClose事件去做弹窗的关闭动作,否则弹窗被关闭后将无法在打开;