Commit dba90c5caa028a88bacb84c859d229f857d1d5d2

Authored by xp.Huang
2 parents 5b576b67 8e8125a5

Merge branch 'ww' into 'main'

merge: fix some bug && perf some function

See merge request huang/thingskit-drawio!28
... ... @@ -195,8 +195,7 @@ LocalFile.prototype.saveFile = function (title, revision, success, error, useCur
195 195 this.removeDraft();
196 196 Editor.defaultContent = savedData;
197 197 var configurationContentList = [];
198   - const basicAttr = Sidebar.prototype.enumCellBasicAttribute
199   - const allCell = (this.ui.editor.graph.getDefaultParent().children || []).filter(item => item.getAttribute(basicAttr.COMPONENT_TYPE))
  198 + const allCell = this.ui.editor.graph.getModel().cells || {}
200 199 const contentId = this.ui.currentPage.node.id
201 200 var configurationContent = {
202 201 name: "第 1 页",
... ... @@ -204,12 +203,12 @@ LocalFile.prototype.saveFile = function (title, revision, success, error, useCur
204 203 contentId,
205 204 content: savedData,
206 205 type: 1,
207   - nodeIds: allCell.map(item => item.id)
  206 + nodeIds: Object.keys(allCell)
208 207 };
209 208 configurationContentList.push(configurationContent);
210 209 var parmam = { configurationId: Editor.configurationId, configurationContentList };
211 210 defHttp.put("/yt/configuration/content", parmam).then(res => {
212   - console.log(res)
  211 + // console.log(res)
213 212 })
214 213 }
215 214 catch (e) {
... ...
... ... @@ -372,6 +372,7 @@ Format.prototype.immediateRefresh = function () {
372 372 div.style.color = "rgb(112, 112, 112)";
373 373 div.style.textAlign = "left";
374 374 div.style.cursor = "default";
  375 + div.style.display = 'flex'
375 376
376 377 var label = document.createElement("div");
377 378 label.className = "geFormatSection";
... ... @@ -385,6 +386,7 @@ Format.prototype.immediateRefresh = function () {
385 386 label.style.height = "25px";
386 387 label.style.overflow = "hidden";
387 388 label.style.width = "100%";
  389 + label.style.flex = 'auto'
388 390 this.container.appendChild(div);
389 391
390 392 // Prevents text selection
... ... @@ -401,6 +403,24 @@ Format.prototype.immediateRefresh = function () {
401 403 var currentLabel = null;
402 404 var currentPanel = null;
403 405
  406 +
  407 + /**
  408 + * @description 验证是否有数据绑定面板
  409 + * @returns {boolean}
  410 + */
  411 + const validateHasDataSourcePanel = () => {
  412 + const ui = this.editorUi;
  413 + const ss = ui.getSelectionState();
  414 + const vertices = ss.vertices || []
  415 + const sidebarInstance = ui.sidebar
  416 + const cell = vertices[0]
  417 + if (!cell) return false
  418 + const basicAttr = sidebarInstance.enumCellBasicAttribute
  419 + const componentType = cell.getAttribute(basicAttr.COMPONENT_TYPE)
  420 + const hasPermission = sidebarInstance.getComponentPermission(componentType)
  421 + return !!hasPermission.length
  422 + }
  423 +
404 424 var addClickHandler = mxUtils.bind(
405 425 this,
406 426 function (elt, panel, index, lastEntry) {
... ... @@ -433,6 +453,8 @@ Format.prototype.immediateRefresh = function () {
433 453 currentPanel.style.display = "";
434 454 }
435 455 }
  456 +
  457 + if (!validateHasDataSourcePanel()) this.currentIndex = 0
436 458 });
437 459
438 460 mxEvent.addListener(elt, "click", clickHandler);
... ... @@ -584,14 +606,16 @@ Format.prototype.immediateRefresh = function () {
584 606 this.panels.push(new ArrangePanel(this, ui, arrangePanel));
585 607 this.container.appendChild(arrangePanel);
586 608
587   - // bind data
588   - mxUtils.write(label4, "数据绑定");
589   - div.appendChild(label4);
  609 + if (validateHasDataSourcePanel()) {
  610 + // bind data
  611 + mxUtils.write(label4, "数据绑定");
  612 + div.appendChild(label4);
590 613
591   - var dataPanel = div.cloneNode(false);
592   - dataPanel.style.display = "none";
593   - this.panels.push(new DataFormatPanel(this, ui, dataPanel));
594   - this.container.appendChild(dataPanel);
  614 + var dataPanel = div.cloneNode(false);
  615 + dataPanel.style.display = "none";
  616 + this.panels.push(new DataFormatPanel(this, ui, dataPanel));
  617 + this.container.appendChild(dataPanel);
  618 + }
595 619
596 620 if (ss.cells.length > 0) {
597 621 addClickHandler(label2, textPanel, idx++);
... ... @@ -5044,11 +5068,18 @@ DataFormatPanel.prototype.addDataFont = function (container) {
5044 5068 }
5045 5069
5046 5070 /**
5047   - * @description 刷新页面
  5071 + * @description 刷新页面 用于在其他位置调用更新数据面板的操作,默认是个空函数,在生成数据源面板中进行了拓展
5048 5072 */
5049 5073 function echoRefreshFn() {
5050 5074 }
5051 5075
  5076 + /**
  5077 + * @description 用于在其他位置获取数据源绑定的数据,在生成数据源面板中进行了改写
  5078 + */
  5079 + function getDataSourceBindValue() {
  5080 +
  5081 + }
  5082 +
5052 5083
5053 5084 // 获取url的请求参数函数
5054 5085 function getRequest() {
... ... @@ -5130,6 +5161,9 @@ DataFormatPanel.prototype.addDataFont = function (container) {
5130 5161 await echoActionType()
5131 5162 }
5132 5163
  5164 + /**
  5165 + * @description 回显动效类型
  5166 + */
5133 5167 async function echoActionType() {
5134 5168 const act = currentNodeData.act ?? []
5135 5169 const event = currentNodeData.event ?? []
... ... @@ -5189,7 +5223,7 @@ DataFormatPanel.prototype.addDataFont = function (container) {
5189 5223
5190 5224
5191 5225 async function mount() {
5192   - const { component, echoDataSource } = generatorDataSourceComponent({ validate: false })
  5226 + const { component, echoDataSource, getValue } = generatorDataSourceComponent({ validate: false })
5193 5227 $(fragment).append(title).append(component)
5194 5228 $(container).append(fragment)
5195 5229
... ... @@ -5204,6 +5238,9 @@ DataFormatPanel.prototype.addDataFont = function (container) {
5204 5238 echoDataSource(dataSource)
5205 5239 form.render(null, CONTAINER_FILTER)
5206 5240 }
  5241 +
  5242 + // 改写获取数据源绑定的值
  5243 + getDataSourceBindValue = getValue
5207 5244 }
5208 5245
5209 5246 mount()
... ... @@ -5920,26 +5957,26 @@ DataFormatPanel.prototype.addDataFont = function (container) {
5920 5957 const content = `
5921 5958 <tr class="layui-form" lay-filter="${rowFormFilter}">
5922 5959 <td>
5923   - <div class="layui-form-item">
5924   - <input class="layui-input ${enumActionEl.MIN_FILTER}" autocomplete="off" type="number" name="${enumConst.MIN}" lay-filter="${enumConst.MIN}" lay-verType="tips" lay-verify="required" />
5925   - </div>
  5960 + <div class="layui-form-item">
  5961 + <input class="layui-input ${enumActionEl.MIN_FILTER}" autocomplete="off" type="number" name="${enumConst.MIN}" lay-filter="${enumConst.MIN}" lay-verType="tips" lay-verify="required" />
  5962 + </div>
5926 5963 </td>
5927 5964 <td>
5928   - <div class="layui-form-item">
5929   - <input class="layui-input ${enumActionEl.MAX_FILTER}"" autocomplete="off" type="number" name="${enumConst.MAX}" lay-filter="${enumConst.MAX}" lay-verType="tips" lay-verify="required" />
5930   - </div>
  5965 + <div class="layui-form-item">
  5966 + <input class="layui-input ${enumActionEl.MAX_FILTER}"" autocomplete="off" type="number" name="${enumConst.MAX}" lay-filter="${enumConst.MAX}" lay-verType="tips" lay-verify="required" />
  5967 + </div>
5931 5968 </td>
5932 5969 <td>
5933   - <div class="${enumActionEl.SET_IMG_EL}">
5934   - <input name="${enumConst.IMAGE_GALLERY_CATEGORY}" type="text" style="display: none">
5935   - <input name="${enumConst.IMAGE_GALLERY_IMAGE_PATH}" type="text" style="display: none">
5936   - <input name="${enumConst.IMAGE_ORIGIN}" type="text" style="display: none">
5937   - <div class="${enumActionEl.PREVIEW_IMG_CONTAINER}">
5938   - <img src="" alt="">
5939   - <div class="${enumActionEl.DEL_PREVIEW_IMG}">x</div>
5940   - <div class="add__button">+</div>
5941   - </div>
5942   - </div>
  5970 + <div class="${enumActionEl.SET_IMG_EL}">
  5971 + <input name="${enumConst.IMAGE_GALLERY_CATEGORY}" type="text" style="display: none">
  5972 + <input name="${enumConst.IMAGE_GALLERY_IMAGE_PATH}" type="text" style="display: none">
  5973 + <input name="${enumConst.IMAGE_ORIGIN}" type="text" style="display: none">
  5974 + <div class="${enumActionEl.PREVIEW_IMG_CONTAINER}">
  5975 + <img src="" alt="">
  5976 + <div class="${enumActionEl.DEL_PREVIEW_IMG}">x</div>
  5977 + <div class="add__button">+</div>
  5978 + </div>
  5979 + </div>
5943 5980 </td>
5944 5981 <!-- <td>-->
5945 5982 <!-- <div style="display: flex">-->
... ... @@ -6164,6 +6201,11 @@ DataFormatPanel.prototype.addDataFont = function (container) {
6164 6201 */
6165 6202 let orgId = null
6166 6203
  6204 + const recordData = {
  6205 + orgId: null,
  6206 + enabled: false
  6207 + }
  6208 +
6167 6209 const getRowFilter = (rowNumber) => `${enumActionEl.ROW_FILTER}${rowNumber}`
6168 6210
6169 6211 /**
... ... @@ -6208,8 +6250,8 @@ DataFormatPanel.prototype.addDataFont = function (container) {
6208 6250 * @description 创建回显数据 查询出所有网关设备和直连设备
6209 6251 */
6210 6252 async function getAllGatewayDeviceAndConnectionDevice() {
6211   - if (!orgId) return
6212   - const [err, res] = await to(ConfigurationNodeApi.getAllGatewayDeviceAndConnectionDevice(orgId))
  6253 + if (!recordData.orgId) return
  6254 + const [err, res] = await to(ConfigurationNodeApi.getAllGatewayDeviceAndConnectionDevice(recordData.orgId))
6213 6255 allDeviceOptions = res
6214 6256 mountAllDeviceToSelect()
6215 6257 }
... ... @@ -6259,7 +6301,7 @@ DataFormatPanel.prototype.addDataFont = function (container) {
6259 6301 data: treeList,
6260 6302 onlyIconControl: true,
6261 6303 click(node) {
6262   - orgId = node.data.id
  6304 + recordData.orgId = node.data.id
6263 6305 getAllGatewayDeviceAndConnectionDevice()
6264 6306 },
6265 6307 },
... ... @@ -6369,7 +6411,7 @@ DataFormatPanel.prototype.addDataFont = function (container) {
6369 6411 * @description 回显表单数据
6370 6412 */
6371 6413 function echoFormData(info) {
6372   - const { content: { data = [] } = {}, orgId } = info
  6414 + const { content: { data = [] } = {} } = info
6373 6415 data.forEach((datum, index) => {
6374 6416 addRecord(datum)
6375 6417 form.val(getRowFilter(index), datum)
... ... @@ -6380,9 +6422,11 @@ DataFormatPanel.prototype.addDataFont = function (container) {
6380 6422 * @description 回显组织树
6381 6423 */
6382 6424 function echoOrgTree(id) {
6383   - orgId = id
  6425 + recordData.orgId = id
6384 6426 const node = UseLayUi.findTreeObjectByField(treeList, id)
6385   - UseLayUi.nextTick(() => $(`#${enumActionEl.ORG_EL} input[name="${enumConst.ORG_ID}"]`).val(orgId).parent().find('span').html(node?.name))
  6427 + UseLayUi.nextTick(() => {
  6428 + $(`#${enumActionEl.ORG_EL} input[name="${enumConst.ORG_ID}"]`).val(recordData.orgId).parent().find('span').html(node?.name)
  6429 + })
6386 6430 }
6387 6431
6388 6432 /**
... ... @@ -6426,6 +6470,8 @@ DataFormatPanel.prototype.addDataFont = function (container) {
6426 6470 return validateFlag
6427 6471 }
6428 6472
  6473 +
  6474 +
6429 6475 /**
6430 6476 * @description 保存
6431 6477 */
... ... @@ -6433,8 +6479,9 @@ DataFormatPanel.prototype.addDataFont = function (container) {
6433 6479 const data = Array.from({ length: addRowNumber }).map((_, row) => form.val(getRowFilter(row))).filter(item => Object.keys(item).length)
6434 6480 if (!validate(data)) return
6435 6481 const formModal = {
  6482 + ...recordData,
6436 6483 configurationId,
6437   - orgId,
  6484 + // orgId,
6438 6485 contentId: currentPageId.id,
6439 6486 id: graphId,
6440 6487 content: {
... ... @@ -6523,10 +6570,10 @@ DataFormatPanel.prototype.addDataFont = function (container) {
6523 6570 'lay-submit': '',
6524 6571 'lay-filter': enumActionEl.LAYER_SUBMIT_FILTER,
6525 6572 })
6526   - createOrgTreeSelect()
  6573 + await createOrgTreeSelect()
6527 6574 const info = getLayerBindInfo('event', type)
6528   - const { content: { data = [] } = {}, orgId: recordOrgId } = info
6529   - orgId = recordOrgId
  6575 + const { content: { data = [] } = {}, orgId, enabled } = info
  6576 + Object.assign(recordData, { orgId, enabled })
6530 6577 await getAllGatewayDeviceAndConnectionDevice()
6531 6578 if (!info || !data.length) {
6532 6579 addRecord()
... ... @@ -6535,7 +6582,7 @@ DataFormatPanel.prototype.addDataFont = function (container) {
6535 6582 }
6536 6583 generatorEventListen()
6537 6584 form.render()
6538   - echoOrgTree(recordOrgId)
  6585 + echoOrgTree(orgId)
6539 6586 },
6540 6587 })
6541 6588 }
... ... @@ -6607,6 +6654,13 @@ DataFormatPanel.prototype.addDataFont = function (container) {
6607 6654 }
6608 6655
6609 6656 /**
  6657 + * @description
  6658 + */
  6659 + const recordData = {
  6660 + enabled: false
  6661 + }
  6662 +
  6663 + /**
6610 6664 * @description 回显数据
6611 6665 */
6612 6666 function echoFormData(data) {
... ... @@ -6633,6 +6687,7 @@ DataFormatPanel.prototype.addDataFont = function (container) {
6633 6687 contentId: currentPageId.id,
6634 6688 id: graphId,
6635 6689 orgId: 'b4dd6e2b-6e0f-413c-bf5a-70133bd571e8',
  6690 + ...recordData,
6636 6691 content: {
6637 6692 type: formVal[enumConst.ACTION],
6638 6693 value: formVal[enumGetValue[formVal[enumConst.ACTION]]],
... ... @@ -6741,6 +6796,7 @@ DataFormatPanel.prototype.addDataFont = function (container) {
6741 6796 })
6742 6797 generatorEventListen()
6743 6798 const info = getLayerBindInfo('event', type)
  6799 + Object.assign(recordData, { enabled: info.enabled })
6744 6800 form.render(null, enumActionEl.FORM_FILTER)
6745 6801 if (info) echoFormData(info)
6746 6802 },
... ... @@ -6801,6 +6857,10 @@ DataFormatPanel.prototype.addDataFont = function (container) {
6801 6857 */
6802 6858 let addRowNumber = 0
6803 6859
  6860 + const recordData = {
  6861 + enabled: false
  6862 + }
  6863 +
6804 6864 function generatorDisplayOptions() {
6805 6865 const options = [
6806 6866 { name: '显示', id: enumDisplayType.SHOW },
... ... @@ -6959,6 +7019,7 @@ DataFormatPanel.prototype.addDataFont = function (container) {
6959 7019 id: graphId,
6960 7020 condition: tableData,
6961 7021 type: event.data.type,
  7022 + ...recordData
6962 7023 }
6963 7024 await to(autoSaveGraphInfo())
6964 7025 const [err, res] = await to(ConfigurationNodeApi.updateNodeAct(formModel))
... ... @@ -7024,7 +7085,8 @@ DataFormatPanel.prototype.addDataFont = function (container) {
7024 7085 $(`#${enumActionEl.DATA_SOURCE_COMP_EL}`).append(component)
7025 7086 form.render()
7026 7087 const info = getLayerBindInfo('act', type)
7027   - const { condition = [] } = info
  7088 + const { condition = [], enabled } = info
  7089 + Object.assign(recordData, { enabled })
7028 7090 if (info && condition.length) {
7029 7091 echoDataSource(info)
7030 7092 echoData(info)
... ... @@ -7417,17 +7479,16 @@ DataFormatPanel.prototype.addDataFont = function (container) {
7417 7479 */
7418 7480 function createLocalFileContainer() {
7419 7481 return `
7420   - <div id="${enumActionEl.UPLOAD_LOCAL_FILE_EL}" class="layui-upload">
7421   - <div class="preview__img">
7422   - <img src="" class="layui-upload-img" id="${enumActionEl.IMAGE_PREVIEW_EL}">
7423   - <div class="var_image__add-icon">+</div>
7424   - <div class="var-image__del-icon">x</div>
7425   - </div>
7426   - <div class="layui-upload-list"></div>
7427   - </div>
7428   - <div id="${enumActionEl.IMAGE_UPLOAD_STATE_EL}"></div>
7429   - <div style="margin-top: 30px;">图片格式支持png、jpg(jpeg)、gif, 大小不能超过5M</div>
7430   - `
  7482 + <div id="${enumActionEl.UPLOAD_LOCAL_FILE_EL}" class="layui-upload">
  7483 + <div class="preview__img">
  7484 + <img src="" class="layui-upload-img" id="${enumActionEl.IMAGE_PREVIEW_EL}">
  7485 + <div class="var_image__add-icon">+</div>
  7486 + <div class="var-image__del-icon">x</div>
  7487 + </div>
  7488 + <div class="layui-upload-list"></div>
  7489 + </div>
  7490 + <div style="margin-top: 10px;" id="${enumActionEl.IMAGE_UPLOAD_STATE_EL}"></div>
  7491 + <div style="margin-top: 10px;">图片格式支持png、jpg(jpeg)、gif, 大小不能超过5M</div>`
7431 7492 }
7432 7493
7433 7494 /**
... ... @@ -7437,15 +7498,14 @@ DataFormatPanel.prototype.addDataFont = function (container) {
7437 7498 const category = sidebarInstance.getAllVariableImageLib()
7438 7499 const defaultShow = category[0] || { lib: [] }
7439 7500 return `
7440   - <div class="var-image__container--gallery">
7441   - <div id="${enumActionEl.VAR_IMG_CONTAINER_SIDEBAR}">
7442   - ${category.reduce((prev, next) => prev + `<div class="${enumActionEl.VAR_IMG_CATEGORY}" ${enumConst.IMAGE_GALLERY_CATEGORY}="${next.key}">${next.label}</div>`, '')}
7443   - </div>
7444   - <div id="${enumActionEl.VAR_IMG_CONTAINER_CONTENT}">
7445   - ${defaultShow.lib.reduce((prev, next) => prev + `<div class="${enumActionEl.VAR_IMG_ITEM}" title="${next.name}"><img src="${next.staticPath}" alt=""></div>`, '')}
7446   - </div>
7447   - </div>
7448   - `
  7501 + <div class="var-image__container--gallery">
  7502 + <div id="${enumActionEl.VAR_IMG_CONTAINER_SIDEBAR}">
  7503 + ${category.reduce((prev, next) => prev + `<div class="${enumActionEl.VAR_IMG_CATEGORY}" ${enumConst.IMAGE_GALLERY_CATEGORY}="${next.key}">${next.label}</div>`, '')}
  7504 + </div>
  7505 + <div id="${enumActionEl.VAR_IMG_CONTAINER_CONTENT}">
  7506 + ${defaultShow.lib.reduce((prev, next) => prev + `<div class="${enumActionEl.VAR_IMG_ITEM}" title="${next.name}"><img src="${next.staticPath}" alt=""></div>`, '')}
  7507 + </div>
  7508 + </div>`
7449 7509 }
7450 7510
7451 7511 /**
... ... @@ -7464,14 +7524,20 @@ DataFormatPanel.prototype.addDataFont = function (container) {
7464 7524 url: '/yt/oss/upload',
7465 7525 method: 'post',
7466 7526 choose(obj) {
  7527 + console.log('enter choose')
7467 7528 obj.preview(async function (index, file, result) {
7468 7529 const formData = new FormData()
7469 7530 formData.set('file', file)
  7531 + $(`#${enumActionEl.IMAGE_UPLOAD_STATE_EL}`).html('上传中...')
7470 7532 const [err, res] = await to(ConfigurationNodeApi.uploadImg(formData))
7471 7533 if (!err) {
7472 7534 $(`#${enumActionEl.IMAGE_PREVIEW_EL}`).attr('src', result)
7473 7535 const { fileStaticUri = '' } = res
7474 7536 imageState[enumConst.IMAGE_GALLERY_IMAGE_PATH] = fileStaticUri
  7537 + $(`#${enumActionEl.IMAGE_UPLOAD_STATE_EL}`).html('上传成功').css({ color: '#5fb878' })
  7538 + } else {
  7539 + console.log(err)
  7540 + $(`#${enumActionEl.IMAGE_UPLOAD_STATE_EL}`).html('上传失败').css({ color: 'red' })
7475 7541 }
7476 7542 });
7477 7543 },
... ... @@ -7545,9 +7611,9 @@ DataFormatPanel.prototype.addDataFont = function (container) {
7545 7611 imageState = {}
7546 7612 layer.close(index)
7547 7613 },
7548   - zIndex: layer.zIndex,
  7614 + // zIndex: layer.zIndex,
7549 7615 async success(layero, index) {
7550   - layer.setTop(layero);
  7616 + // layer.setTop(layero);
7551 7617 $(layero).addClass('layui-form').find('.layui-layer-btn0').attr({
7552 7618 'lay-submit': '',
7553 7619 'lay-filter': enumActionEl.IMAGE_LAYER_FILTER,
... ... @@ -7565,17 +7631,31 @@ DataFormatPanel.prototype.addDataFont = function (container) {
7565 7631 // 异步设置此处才能生效 -- 设置默认select和样式和初始化侧边栏生成组件和事件绑定
7566 7632 setTimeout(() => {
7567 7633
  7634 + function proxyFn(fn) {
  7635 + return (...args) => {
  7636 + const currentDataSource = getDataSourceBindValue() || {}
  7637 +
  7638 + to(ConfigurationNodeApi.updateNodeInfo({
  7639 + configurationId,
  7640 + contentId: currentPageId.id,
  7641 + nodeId: graphId,
  7642 + [enumCategory.DATA_SOURCE]: currentDataSource
  7643 + }))
  7644 + fn.apply(null, args)
  7645 + }
  7646 + }
  7647 +
7568 7648 // TODO 数据交互事件
7569   - $(`#${enumDynamicEffectType.IMAGE}`).click({ type: enumDynamicEffectType.IMAGE }, handleSettingVarImage);
  7649 + $(`#${enumDynamicEffectType.IMAGE}`).click({ type: enumDynamicEffectType.IMAGE }, proxyFn(handleSettingVarImage));
7570 7650
7571   - $(`#${enumInteractionType.DOWN}`).click({ type: enumInteractionType.DOWN }, handleDownOrUpEvent);
7572   - $(`#${enumInteractionType.UP}`).click({ type: enumInteractionType.UP }, handleDownOrUpEvent);
7573   - $(`#${enumInteractionType.SINGLE}`).click({ type: enumInteractionType.SINGLE }, handleClickOrDbClick);
7574   - $(`#${enumInteractionType.DOUBLE}`).click({ type: enumInteractionType.DOUBLE }, handleClickOrDbClick);
  7651 + $(`#${enumInteractionType.DOWN}`).click({ type: enumInteractionType.DOWN }, proxyFn(handleDownOrUpEvent));
  7652 + $(`#${enumInteractionType.UP}`).click({ type: enumInteractionType.UP }, proxyFn(handleDownOrUpEvent));
  7653 + $(`#${enumInteractionType.SINGLE}`).click({ type: enumInteractionType.SINGLE }, proxyFn(handleClickOrDbClick));
  7654 + $(`#${enumInteractionType.DOUBLE}`).click({ type: enumInteractionType.DOUBLE }, proxyFn(handleClickOrDbClick));
7575 7655 // 数据动效事件
7576   - $(`#${enumDynamicEffectType.FLASH}`).click({ type: enumDynamicEffectType.FLASH }, handleDataDynamicEffect);
7577   - $(`#${enumDynamicEffectType.DISPLAY}`).click({ type: enumDynamicEffectType.DISPLAY }, handleDataDynamicEffect);
7578   - $(`#${enumDynamicEffectType.ROTATE}`).click({ type: enumDynamicEffectType.ROTATE }, handleDataDynamicEffect);
  7656 + $(`#${enumDynamicEffectType.FLASH}`).click({ type: enumDynamicEffectType.FLASH }, proxyFn(handleDataDynamicEffect));
  7657 + $(`#${enumDynamicEffectType.DISPLAY}`).click({ type: enumDynamicEffectType.DISPLAY }, proxyFn(handleDataDynamicEffect));
  7658 + $(`#${enumDynamicEffectType.ROTATE}`).click({ type: enumDynamicEffectType.ROTATE }, proxyFn(handleDataDynamicEffect));
7579 7659 });
7580 7660 };
7581 7661
... ... @@ -11566,7 +11646,7 @@ class UseLayUi {
11566 11646 static createTreeSelect(options) {
11567 11647 const CLASS_NAME = 'things-kit-tree-select'
11568 11648 const SELECT_CLS = 'things-kit-tree-select__tree'
11569   - const { tree, jquery: $ } = layui
  11649 + const { tree, jquery: $, form } = layui
11570 11650
11571 11651 const {
11572 11652 layFilter,
... ... @@ -11625,47 +11705,48 @@ class UseLayUi {
11625 11705 $(elem).html(template)
11626 11706
11627 11707 // mount tree
11628   - UseLayUi.nextTick(() => {
11629   - tree.render({
11630   - ...treeProps,
11631   - ...(autoFormatDataSource ? { data: UseLayUi.formatTreeDataSource(data, customSetTree, valueField, labelField, childrenField) } : {}),
11632   - elem: $(elem).find('.tree-select__tree-mount'),
11633   - click(node) {
11634   - setValue(node.data)
11635   - if (UseLayUi.isFunction(click)) click(node)
11636   - },
11637   - })
  11708 + // UseLayUi.nextTick(() => {
  11709 + tree.render({
  11710 + ...treeProps,
  11711 + ...(autoFormatDataSource ? { data: UseLayUi.formatTreeDataSource(data, customSetTree, valueField, labelField, childrenField) } : {}),
  11712 + elem: $(elem).find('.tree-select__tree-mount'),
  11713 + click(node) {
  11714 + setValue(node.data)
  11715 + if (UseLayUi.isFunction(click)) click(node)
  11716 + },
  11717 + })
11638 11718
11639   - // focus
11640   - $(`.${SELECT_CLS}`).off('click')
11641   - .on("click", ".layui-select-title", function (e) {
11642   - $(document).find('.layui-form-select').removeClass('layui-form-selected')
11643   - $(this).parents(`.${SELECT_CLS}`).toggleClass("layui-form-selected");
11644   - layui.stope(e);
11645   - })
11646   - .on('click', '.layui-anim', (e) => {
11647   - layui.stope(e)
11648   - })
11649   - .on("click", "dl i", function (e) {
11650   - layui.stope(e);
11651   - })
  11719 + // focus
  11720 + $(`.${SELECT_CLS}`).off('click')
  11721 + .on("click", ".layui-select-title", function (e) {
  11722 + $(document).find('.layui-form-select').removeClass('layui-form-selected')
  11723 + $(this).parents(`.${SELECT_CLS}`).toggleClass("layui-form-selected");
  11724 + layui.stope(e);
  11725 + })
  11726 + .on('click', '.layui-anim', (e) => {
  11727 + layui.stope(e)
  11728 + })
  11729 + .on("click", "dl i", function (e) {
  11730 + layui.stope(e);
  11731 + })
11652 11732
11653   - // blur
11654   - // $(document)
11655   - // .on("click", function (e) {
11656   - // const target = e.target
11657   - // const parentNode = $(`.${CLASS_NAME} .tree-select__tree-mount`)
11658   - // if (!parentNode) return
11659   - // console.log($.contains(parentNode, target))
11660   - // // const showClose = UseLayUi.isInNode(parentNode, target, true)
11661   - // // if (showClose) return
11662   - // // $(`.${ SELECT_CLS }`).removeClass("layui-form-selected")
11663   - // });
11664   -
11665   - if (UseLayUi.isFunction(onReady)) {
11666   - onReady(setValue)
11667   - }
11668   - })
  11733 + // blur
  11734 + // $(document)
  11735 + // .on("click", function (e) {
  11736 + // const target = e.target
  11737 + // const parentNode = $(`.${CLASS_NAME} .tree-select__tree-mount`)
  11738 + // if (!parentNode) return
  11739 + // console.log($.contains(parentNode, target))
  11740 + // // const showClose = UseLayUi.isInNode(parentNode, target, true)
  11741 + // // if (showClose) return
  11742 + // // $(`.${ SELECT_CLS }`).removeClass("layui-form-selected")
  11743 + // });
  11744 +
  11745 + if (UseLayUi.isFunction(onReady)) {
  11746 + onReady(setValue)
  11747 + }
  11748 + // })
  11749 + form.render()
11669 11750 }
11670 11751
11671 11752 mount()
... ... @@ -11707,13 +11788,13 @@ class UseLayUi {
11707 11788 }
11708 11789
11709 11790 let template = `
11710   - <div class="layui-form-item ${CLASS_NAME}" >
11711   - <label class="layui-form-label">${label}</label>
11712   - <div class="layui-input-block">
11713   - ${createOptions(dataSource).join('')}
11714   - </div>
11715   - </div>
11716   - `
  11791 + <div class="layui-form-item ${CLASS_NAME}" >
  11792 + <label class="layui-form-label">${label}</label>
  11793 + <div class="layui-input-block">
  11794 + ${createOptions(dataSource).join('')}
  11795 + </div>
  11796 + </div>`
  11797 +
11717 11798 template = singleUsage ? UseLayUi.createSingleUseFormItem(template) : template
11718 11799
11719 11800 function mount() {
... ... @@ -12673,7 +12754,7 @@ class HandleDataSource {
12673 12754 dataZoom: [
12674 12755 {
12675 12756 show: true,
12676   - type: 'slider',
  12757 + type: 'inside',
12677 12758 // endValue: showNumberOf
12678 12759 }
12679 12760 ]
... ... @@ -12729,7 +12810,7 @@ class HandleDataSource {
12729 12810 dataZoom: [
12730 12811 {
12731 12812 show: true,
12732   - type: 'slider',
  12813 + type: 'inside',
12733 12814 }
12734 12815 // {
12735 12816 // startValue: seriesValue.length - 1 > showNumberOf
... ... @@ -12819,7 +12900,7 @@ class HandleDataSource {
12819 12900 {
12820 12901 // xAxisIndex: 0,
12821 12902 show: true,
12822   - type: 'slider',
  12903 + type: 'inside',
12823 12904 // startValue: 0,
12824 12905 // endValue: showNumberOf
12825 12906 }
... ... @@ -12862,6 +12943,9 @@ class HandleDataSource {
12862 12943 }
12863 12944
12864 12945 instance.setOption(chartOption)
  12946 + instance.on('dataZoom', () => {
  12947 + console.log(instance.getOption())
  12948 + })
12865 12949 // instance.on('mouseover', stop)
12866 12950 // instance.on('mouseout', goMove)
12867 12951 // autoMove()
... ... @@ -12998,13 +13082,17 @@ class HandleDataInteraction {
12998 13082 graphClick.apply(this.graph, args)
12999 13083 }
13000 13084
  13085 + const mouseDownEvent = this.throttle(this.handleMouseDownEvent)
  13086 + const mouseUpEvent = this.throttle(this.handleMouseUpEvent)
13001 13087 const graphFireMouseEvent = this.graph.fireMouseEvent;
13002 13088 this.graph.fireMouseEvent = (eventName, event, sender) => {
13003 13089 if (eventName === mxEvent.MOUSE_DOWN) {
13004   - this.handleMouseDownEvent(eventName, event, sender)
  13090 + // this.handleMouseDownEvent(eventName, event, sender)
  13091 + mouseDownEvent(eventName, event, sender)
13005 13092 }
13006 13093 if (eventName === mxEvent.MOUSE_UP) {
13007   - this.handleMouseUpEvent(eventName, event, sender)
  13094 + mouseUpEvent(eventName, event, sender)
  13095 + // this.handleMouseUpEvent(eventName, event, sender)
13008 13096 }
13009 13097 graphFireMouseEvent.apply(this.graph, [eventName, event, sender]);
13010 13098 };
... ... @@ -13043,7 +13131,7 @@ class HandleDataInteraction {
13043 13131 }
13044 13132
13045 13133 /**
13046   - * @description 鼠标双击事件
  13134 + * @description 鼠标单击事件事件
13047 13135 * @param event
13048 13136 */
13049 13137 handleClickEvent(event) {
... ... @@ -13052,16 +13140,16 @@ class HandleDataInteraction {
13052 13140 if (temp && temp.has(DispatchCenter.enumEventType.SINGLE)) {
13053 13141 const content = temp.get(DispatchCenter.enumEventType.SINGLE)
13054 13142 const { type, value } = content
13055   - if (type === DispatchCenter.enumPageType.PAGE) {
  13143 + if (type === DispatchCenter.enumPageType.PAGE && value) {
13056 13144 this.jumpPage(value)
13057   - } else if (type === DispatchCenter.enumPageType.LINK) {
  13145 + } else if (type === DispatchCenter.enumPageType.LINK && value) {
13058 13146 window.open(value)
13059 13147 }
13060 13148 }
13061 13149 }
13062 13150
13063 13151 /**
13064   - * @description 鼠标击事件
  13152 + * @description 鼠标击事件
13065 13153 * @param event
13066 13154 * @param cell
13067 13155 */
... ... @@ -13071,9 +13159,9 @@ class HandleDataInteraction {
13071 13159 if (temp && temp.has(DispatchCenter.enumEventType.DOUBLE)) {
13072 13160 const content = temp.get(DispatchCenter.enumEventType.DOUBLE)
13073 13161 const { type, value } = content
13074   - if (type === DispatchCenter.enumPageType.PAGE) {
  13162 + if (type === DispatchCenter.enumPageType.PAGE && value) {
13075 13163 this.jumpPage(value)
13076   - } else if (type === DispatchCenter.enumPageType.LINK) {
  13164 + } else if (type === DispatchCenter.enumPageType.LINK && value) {
13077 13165 window.open(value)
13078 13166 }
13079 13167 }
... ... @@ -13116,11 +13204,27 @@ class HandleDataInteraction {
13116 13204 Promise.all(queue.map(fn => fn()))
13117 13205 }
13118 13206
  13207 + throttle(fn, time = 1000) {
  13208 + let now = Date.now
  13209 + let oldTime = now()
  13210 + return (...args) => {
  13211 + let newTime = now()
  13212 + if (newTime - oldTime > time) {
  13213 + oldTime = now()
  13214 + fn.apply(this, args)
  13215 + }
  13216 + }
  13217 + }
  13218 +
13119 13219 /**
13120 13220 * @description 跳转页面
13121 13221 */
13122 13222 jumpPage(page) {
13123   - this.editorUi.handleCustomLink(`data:page/id,${page}`)
  13223 + try {
  13224 + this.editorUi.handleCustomLink(`data:page/id,${page}`)
  13225 + } catch (error) {
  13226 + throw error
  13227 + }
13124 13228 }
13125 13229 }
13126 13230
... ... @@ -13480,7 +13584,7 @@ class HandleDynamicEffect {
13480 13584 }
13481 13585
13482 13586 /**
13483   - * @description 验证优先级
  13587 + * @description 验证数据动效优先级 显示隐藏优先级最高
13484 13588 * @param {string} nodeId
13485 13589 * @returns
13486 13590 */
... ...