Commit 6d452738a7e2d1a3c24c9e14d308b27b78a2ee84

Authored by xp.Huang
2 parents 4914dbde 10b07ecb

Merge branch 'ww' into 'main'

feat: add picture component

See merge request huang/thingskit-drawio!44
@@ -22,26 +22,26 @@ @@ -22,26 +22,26 @@
22 <meta name="mobile-web-app-capable" content="yes"> 22 <meta name="mobile-web-app-capable" content="yes">
23 <meta name="theme-color" content="#d89000"> 23 <meta name="theme-color" content="#d89000">
24 24
25 - <link rel="stylesheet" href="./js/plugin/layui/css/layui.css?v=1660097025459"> 25 + <link rel="stylesheet" href="./js/plugin/layui/css/layui.css?v=1663582316568">
26 26
27 <!-- load configure file --> 27 <!-- load configure file -->
28 - <script src="./js/config/config.js?v=1660097025459"></script> 28 + <script src="./js/config/config.js?v=1663582316568"></script>
29 29
30 <!-- crypto-js --> 30 <!-- crypto-js -->
31 - <script src="./js/plugin/crypto-js/crypto-js.js?v=1660097025459"></script> 31 + <script src="./js/plugin/crypto-js/crypto-js.js?v=1663582316568"></script>
32 32
33 <!-- storage persistent --> 33 <!-- storage persistent -->
34 - <script src="./js/const/persistentStorage.js?v=1660097025459"></script> 34 + <script src="./js/const/persistentStorage.js?v=1663582316568"></script>
35 <!-- Global const --> 35 <!-- Global const -->
36 - <script src="./js/const/const.js?v=1660097025459"></script> 36 + <script src="./js/const/const.js?v=1663582316568"></script>
37 37
38 <!-- Axios --> 38 <!-- Axios -->
39 - <script src="./js/plugin/axios/axios.min.js?v=1660097025459"></script>  
40 - <script src="./js/plugin/axios/DefHttp.js?v=1660097025459"></script>  
41 - <script src="./js/api/index.js?v=1660097025459"></script> 39 + <script src="./js/plugin/axios/axios.min.js?v=1663582316568"></script>
  40 + <script src="./js/plugin/axios/DefHttp.js?v=1663582316568"></script>
  41 + <script src="./js/api/index.js?v=1663582316568"></script>
42 42
43 <!-- load script --> 43 <!-- load script -->
44 - <script src="./js/config/loadScript.js?v=1660097025459"></script> 44 + <script src="./js/config/loadScript.js?v=1663582316568"></script>
45 45
46 <!-- act editor --> 46 <!-- act editor -->
47 <!-- <script src="https://oss.yuntengcloud.com/iotdocs/thingskit-scada/ace.js"></script> --> 47 <!-- <script src="https://oss.yuntengcloud.com/iotdocs/thingskit-scada/ace.js"></script> -->
@@ -54,7 +54,7 @@ @@ -54,7 +54,7 @@
54 <!-- <script src="https://vjs.zencdn.net/7.10.2/video.min.js"></script> --> 54 <!-- <script src="https://vjs.zencdn.net/7.10.2/video.min.js"></script> -->
55 <!-- <script src="https://oss.yuntengcloud.com/iotdocs/thingskit-scada/video.min.js"></script> --> 55 <!-- <script src="https://oss.yuntengcloud.com/iotdocs/thingskit-scada/video.min.js"></script> -->
56 56
57 - <script src="./js/plugin/layui/layui.js?v=1660097025459"></script> 57 + <script src="./js/plugin/layui/layui.js?v=1663582316568"></script>
58 <!-- <link rel="stylesheet" href="https://cdnjs.loli.net/ajax/libs/layui/2.6.8/css/layui.min.css" 58 <!-- <link rel="stylesheet" href="https://cdnjs.loli.net/ajax/libs/layui/2.6.8/css/layui.min.css"
59 integrity="sha512-iQBJbsNHXUcgEIgWThd2dr8tOdKPvICwqjPEZYY81z3eMya44A5MiAqfWSCh+Ee1YzNYkdrI982Qhwgr8LEYOQ==" 59 integrity="sha512-iQBJbsNHXUcgEIgWThd2dr8tOdKPvICwqjPEZYY81z3eMya44A5MiAqfWSCh+Ee1YzNYkdrI982Qhwgr8LEYOQ=="
60 crossorigin="anonymous" referrerpolicy="no-referrer" /> 60 crossorigin="anonymous" referrerpolicy="no-referrer" />
@@ -63,7 +63,7 @@ @@ -63,7 +63,7 @@
63 crossorigin="anonymous" referrerpolicy="no-referrer"></script> --> 63 crossorigin="anonymous" referrerpolicy="no-referrer"></script> -->
64 64
65 <!-- 引入修改样式 --> 65 <!-- 引入修改样式 -->
66 - <link rel="stylesheet" href="./styles/formatChange.css?v=1660097025459"> 66 + <link rel="stylesheet" href="./styles/formatChange.css?v=1663582316568">
67 67
68 <script type="text/javascript"> 68 <script type="text/javascript">
69 /** 69 /**
@@ -306,7 +306,7 @@ @@ -306,7 +306,7 @@
306 var supportedDomain = (hostName.substring(hostName.length - 8, hostName.length) === '.draw.io') || 306 var supportedDomain = (hostName.substring(hostName.length - 8, hostName.length) === '.draw.io') ||
307 (hostName.substring(hostName.length - 13, hostName.length) === '.diagrams.net'); 307 (hostName.substring(hostName.length - 13, hostName.length) === '.diagrams.net');
308 308
309 - const releaseVersion = '1660097025459' 309 + const releaseVersion = '1663582316568'
310 const appMinSrc = Enable_OSS ? `${OSS_Prefix}app.min.js?v=${releaseVersion}` : `js/app.min.js?v=${releaseVersion}` 310 const appMinSrc = Enable_OSS ? `${OSS_Prefix}app.min.js?v=${releaseVersion}` : `js/app.min.js?v=${releaseVersion}`
311 function loadAppJS() { 311 function loadAppJS() {
312 mxscript(appMinSrc, function () { 312 mxscript(appMinSrc, function () {
1 /** 1 /**
2 * @description load script from oss server prefix 2 * @description load script from oss server prefix
3 */ 3 */
4 -const OSS_Prefix = 'https://oss.yuntengcloud.com/iotdocs/thingskit-scada/' 4 +const OSS_Prefix = 'https://oss.yuntengcloud.com/iotdocs/thingskit-scada-development/'
5 5
6 /** 6 /**
7 * @description enable load script form oss server 7 * @description enable load script form oss server
@@ -12,3 +12,5 @@ const Enable_OSS = true @@ -12,3 +12,5 @@ const Enable_OSS = true
12 * @description 代理配置项 12 * @description 代理配置项
13 */ 13 */
14 const Proxy_Prefix = window.location.pathname.startsWith('/') ? window.location.pathname.replace(/\/$/, '') : window.location.pathname 14 const Proxy_Prefix = window.location.pathname.startsWith('/') ? window.location.pathname.replace(/\/$/, '') : window.location.pathname
  15 +
  16 +
@@ -21,7 +21,7 @@ const GLOBAL_TOKEN = (() => { @@ -21,7 +21,7 @@ const GLOBAL_TOKEN = (() => {
21 /** 21 /**
22 * @description 写权限 key 22 * @description 写权限 key
23 */ 23 */
24 -const CAN_WRITE = 'api:yt:admin:designConfiguration' 24 +const CAN_WRITE = 'api:yt:configuration:center:get_configuration_info:get'
25 25
26 const USER_PERMISSION = { 26 const USER_PERMISSION = {
27 permission: [] 27 permission: []
@@ -4221,8 +4221,8 @@ App.prototype.loadFile = function (id, sameWindow, file, success, force) { @@ -4221,8 +4221,8 @@ App.prototype.loadFile = function (id, sameWindow, file, success, force) {
4221 function getUserPermission() { 4221 function getUserPermission() {
4222 defHttp.get('/yt/role/me/permissions') 4222 defHttp.get('/yt/role/me/permissions')
4223 .then(res => { 4223 .then(res => {
4224 - USER_PERMISSION.permission = res  
4225 - console.log({ USER_PERMISSION }) 4224 + console.log('enter')
  4225 + USER_PERMISSION.permission = res
4226 updateButtonContainer() 4226 updateButtonContainer()
4227 // var flag = hasSavePermission() 4227 // var flag = hasSavePermission()
4228 // if (!flag) { 4228 // if (!flag) {
@@ -4234,9 +4234,10 @@ App.prototype.loadFile = function (id, sameWindow, file, success, force) { @@ -4234,9 +4234,10 @@ App.prototype.loadFile = function (id, sameWindow, file, success, force) {
4234 4234
4235 // 调用API,获取保存的内容 4235 // 调用API,获取保存的内容
4236 function getSaveContent() { 4236 function getSaveContent() {
4237 - defHttp.get('/yt/configuration/center/getConfigurationInfo/' + Editor.configurationId)  
4238 - .then(function (response) {  
4239 - console.log({ response }) 4237 + defHttp.get('/yt/configuration/center/get_configuration_info/' + Editor.configurationId)
  4238 + .then(function (response) {
  4239 + getUserPermission()
  4240 +
4240 const { platform } = response || {} 4241 const { platform } = response || {}
4241 const pageSizeControl = PageSetupDialog.getFormats 4242 const pageSizeControl = PageSetupDialog.getFormats
4242 PageSetupDialog.getFormats = function () { 4243 PageSetupDialog.getFormats = function () {
@@ -4281,10 +4282,8 @@ App.prototype.loadFile = function (id, sameWindow, file, success, force) { @@ -4281,10 +4282,8 @@ App.prototype.loadFile = function (id, sameWindow, file, success, force) {
4281 fn(); 4282 fn();
4282 } 4283 }
4283 4284
4284 - getUserPermission()  
4285 }) 4285 })
4286 - .catch(function (error) {  
4287 - console.log(error); 4286 + .catch(function (error) {
4288 }); 4287 });
4289 } 4288 }
4290 4289
@@ -268,6 +268,11 @@ @@ -268,6 +268,11 @@
268 * @description 开关组件状态 {true | false | null} 268 * @description 开关组件状态 {true | false | null}
269 */ 269 */
270 SWITCH_STATE: 'switchState', 270 SWITCH_STATE: 'switchState',
  271 +
  272 + /**
  273 + * @description 图片组件
  274 + */
  275 + IMAGE: 'image'
271 276
272 } 277 }
273 278
@@ -717,7 +722,7 @@ @@ -717,7 +722,7 @@
717 722
718 // TODO thingsKit 设置数据绑定展示面板 723 // TODO thingsKit 设置数据绑定展示面板
719 const { LINE_CHART_EXPAND, BAR_CHART_EXPAND, DASHBOARD_CHART_EXPAND, DYNAMIC_EFFECT, DATA_SOURCE, VAR_IMAGE, INTERACTION, VIDEO: VIDEO_PANEL, SWITCH_STATE_SETTING, ONLY_SINGLE_EVENT, RUNNING_AND_STOP } = this.enumPermissionPanel 724 const { LINE_CHART_EXPAND, BAR_CHART_EXPAND, DASHBOARD_CHART_EXPAND, DYNAMIC_EFFECT, DATA_SOURCE, VAR_IMAGE, INTERACTION, VIDEO: VIDEO_PANEL, SWITCH_STATE_SETTING, ONLY_SINGLE_EVENT, RUNNING_AND_STOP } = this.enumPermissionPanel
720 - const { LINE, LINE_CHART, REAL_TIME, TITLE, VARIABLE, DEFAULT, BAR_CHART, VIDEO, SWITCH, PARAMS_SETTING_BUTTON, DASHBOARD_CHART } = this.enumComponentType 725 + const { LINE, LINE_CHART, REAL_TIME, TITLE, VARIABLE, DEFAULT, BAR_CHART, VIDEO, SWITCH, PARAMS_SETTING_BUTTON, DASHBOARD_CHART, IMAGE } = this.enumComponentType
721 this.setComponentPermission(LINE, [RUNNING_AND_STOP, DYNAMIC_EFFECT]) 726 this.setComponentPermission(LINE, [RUNNING_AND_STOP, DYNAMIC_EFFECT])
722 this.setComponentPermission(DEFAULT, [DYNAMIC_EFFECT]) 727 this.setComponentPermission(DEFAULT, [DYNAMIC_EFFECT])
723 this.setComponentPermission(REAL_TIME, [DYNAMIC_EFFECT]) 728 this.setComponentPermission(REAL_TIME, [DYNAMIC_EFFECT])
@@ -730,6 +735,7 @@ @@ -730,6 +735,7 @@
730 this.setComponentPermission(VIDEO, [VIDEO_PANEL]) 735 this.setComponentPermission(VIDEO, [VIDEO_PANEL])
731 this.setComponentPermission(SWITCH, [DATA_SOURCE, SWITCH_STATE_SETTING]) 736 this.setComponentPermission(SWITCH, [DATA_SOURCE, SWITCH_STATE_SETTING])
732 this.setComponentPermission(PARAMS_SETTING_BUTTON, [DATA_SOURCE, ONLY_SINGLE_EVENT]) 737 this.setComponentPermission(PARAMS_SETTING_BUTTON, [DATA_SOURCE, ONLY_SINGLE_EVENT])
  738 + this.setComponentPermission(IMAGE, [DATA_SOURCE])
733 739
734 var thingskitEntries = [ 740 var thingskitEntries = [
735 { title: mxResources.get('general'), id: 'general', image: IMAGE_PATH + '/sidebar-general.png' }, 741 { title: mxResources.get('general'), id: 'general', image: IMAGE_PATH + '/sidebar-general.png' },
@@ -59,6 +59,12 @@ @@ -59,6 +59,12 @@
59 this.setCellAttributes(cell, { [basicAttr.COMPONENT_TYPE]: componentType.VIDEO }) 59 this.setCellAttributes(cell, { [basicAttr.COMPONENT_TYPE]: componentType.VIDEO })
60 return this.createVertexTemplateFromCells([cell], cell.geometry.width, cell.geometry.height, '视频'); 60 return this.createVertexTemplateFromCells([cell], cell.geometry.width, cell.geometry.height, '视频');
61 })), 61 })),
  62 + this.addEntry(this.getTagsForStencil('mxgraph.basic', '图片', 'basic').join(' '), mxUtils.bind(this, function () {
  63 + const cell = new mxCell(`<img class="basic-component__image" src="${Proxy_Prefix}/images/thingskit/img-placeholder.png" />`, new mxGeometry(0, 0, 190, 190), 'text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;overflow=hidden;');
  64 + cell.setVertex(true)
  65 + this.setCellAttributes(cell, { [basicAttr.COMPONENT_TYPE]: componentType.IMAGE })
  66 + return this.createVertexTemplateFromCells([cell], cell.geometry.width, cell.geometry.height, '图片');
  67 + })),
62 ]; 68 ];
63 69
64 this.addPaletteFunctions('component', '基础元件', true, fns); 70 this.addPaletteFunctions('component', '基础元件', true, fns);
@@ -5930,7 +5930,8 @@ DataFormatPanel.prototype.addDataFont = function (container) { @@ -5930,7 +5930,8 @@ DataFormatPanel.prototype.addDataFont = function (container) {
5930 [componentType.DEFAULT]: getSubmitValue, 5930 [componentType.DEFAULT]: getSubmitValue,
5931 [componentType.VIDEO]: getVideoSubmitValue, 5931 [componentType.VIDEO]: getVideoSubmitValue,
5932 [componentType.SWITCH]: getSwitchSubmitValue, 5932 [componentType.SWITCH]: getSwitchSubmitValue,
5933 - [componentType.PARAMS_SETTING_BUTTON]: getSwitchSubmitValue 5933 + [componentType.PARAMS_SETTING_BUTTON]: getSwitchSubmitValue,
  5934 + [componentType.IMAGE]: getSubmitValue
5934 } 5935 }
5935 5936
5936 const cell = vertices[0] 5937 const cell = vertices[0]
@@ -13453,6 +13454,11 @@ class HandleDataSource { @@ -13453,6 +13454,11 @@ class HandleDataSource {
13453 return 13454 return
13454 } 13455 }
13455 13456
  13457 + if (type === this.componentType.IMAGE) {
  13458 + this.handleImageComponent(message)
  13459 + return
  13460 + }
  13461 +
13456 if (!data) return 13462 if (!data) return
13457 const [[timespan, value]] = data[attr] 13463 const [[timespan, value]] = data[attr]
13458 node.setValue(value) 13464 node.setValue(value)
@@ -13508,6 +13514,7 @@ class HandleDataSource { @@ -13508,6 +13514,7 @@ class HandleDataSource {
13508 13514
13509 handleParamSettingButton(message) { 13515 handleParamSettingButton(message) {
13510 const { subscriptionId, data = {} } = message 13516 const { subscriptionId, data = {} } = message
  13517 + if (!data) return
13511 const node = this.getNodeByCmdId(subscriptionId) 13518 const node = this.getNodeByCmdId(subscriptionId)
13512 const { attr } = this.getBindData(subscriptionId) 13519 const { attr } = this.getBindData(subscriptionId)
13513 const [[timespan, receiveValue] = []] = data[attr] || [] 13520 const [[timespan, receiveValue] = []] = data[attr] || []
@@ -13516,6 +13523,16 @@ class HandleDataSource { @@ -13516,6 +13523,16 @@ class HandleDataSource {
13516 }, node) 13523 }, node)
13517 } 13524 }
13518 13525
  13526 + handleImageComponent(message) {
  13527 + const { subscriptionId, data = {} } = message
  13528 + const node = this.getNodeByCmdId(subscriptionId)
  13529 + const { attr } = this.getBindData(subscriptionId)
  13530 + const [[timespan, receiveValue] = []] = data[attr] || []
  13531 + this.updatePage(() => {
  13532 + node.setAttribute('label', `<img class="basic-component__image" alt="图片" src="${receiveValue}" />`)
  13533 + }, node)
  13534 + }
  13535 +
13519 /** 13536 /**
13520 * @description 更新实时数据 13537 * @description 更新实时数据
13521 * @param {} message 13538 * @param {} message
@@ -13821,7 +13838,7 @@ class HandleDataSource { @@ -13821,7 +13838,7 @@ class HandleDataSource {
13821 }, 13838 },
13822 data: [ 13839 data: [
13823 { 13840 {
13824 - value: 20 13841 + value
13825 } 13842 }
13826 ] 13843 ]
13827 }, 13844 },
@@ -49,6 +49,11 @@ function createAxios(options) { @@ -49,6 +49,11 @@ function createAxios(options) {
49 49
50 doRefreshToken() 50 doRefreshToken()
51 } 51 }
  52 +
  53 + const message = error.response && error.response.data && error.response.data.message
  54 + const { layer } = layui
  55 + message && layer.msg(message, { icon: 5 })
  56 +
52 return Promise.reject(error); 57 return Promise.reject(error);
53 } 58 }
54 ); 59 );
@@ -595,3 +595,10 @@ @@ -595,3 +595,10 @@
595 top: -130px; 595 top: -130px;
596 z-index: 99; 596 z-index: 99;
597 } 597 }
  598 +
  599 +
  600 +/* basic-component */
  601 +.basic-component__image {
  602 + width: 100%;
  603 + height: 100%;
  604 +}