@flexem/fc-gui 3.0.0-alpha.94 → 3.0.0-alpha.96

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -388,40 +388,7 @@
388
388
  #### Bug Fix
389
389
  1. FLEXCLOUD-2612 组态元件写值超时
390
390
 
391
- ## 3.0.0-alpha.87(2023-05-31)
391
+ ## 3.0.0-alpha.96(2023-09-26)
392
392
  ### Web端
393
393
  #### Bug Fix
394
- 1. FLEXCLOUD-2698 【app-ios】视频元件放大后缩小不应占满整个组态
395
-
396
- ## 3.0.0-alpha.88(2023-06-01)
397
- ### Web端
398
- #### Bug Fix
399
- 1. FLEXCLOUD-2699、FLEXCLOUD-2700 将视频元件还原为在组态外渲染,并且在弹窗时隐藏视频
400
-
401
- ## 3.0.0-alpha.89(2023-06-01)
402
- ### Web端
403
- #### Bug Fix
404
- 1. FLEXCLOUD-2699、FLEXCLOUD-2700 修改视频元件,优化视频显示逻辑
405
-
406
- ## 3.0.0-alpha.90(2023-06-06)
407
- ### Web端
408
- #### Bug Fix
409
- 1. 安卓和鸿蒙系统上,组态横屏时不再显示状态栏
410
- 2. 修复在鸿蒙系统的手机上,视频元件的控制按钮显示异常的问题
411
- 3. 修复ios系统中视频放大缩小后,画面会变形的问题
412
-
413
- ## 3.0.0-alpha.92(2023-07-18)
414
- ### Web端
415
- #### Features
416
- 1. FLEXCLOUD-2710 【氚云20230621000600】组态历史曲线表:历史曲线增加点位标记,便于直观看到曲线采样点的变化
417
-
418
- ## 3.0.0-alpha.93(2023-07-21)
419
- ### Web端
420
- #### Features
421
- 1. FLEXCLOUD-2741 【氚云20230714001409】模板的模拟功能,无法进行写值,一直提示提交中
422
-
423
- ## 3.0.0-alpha.94(2023-07-21)
424
- ### Web端
425
- #### Features
426
- 1. FLEXCLOUD-2710 【氚云20230621000600】组态历史曲线表:历史曲线增加点位标记,便于直观看到曲线采样点的变化
427
- - 修改标记点大小
394
+ 1. FLEXCLOUD-2864 2018年创建的模板组态写值失败(在补丁包v2.22.0-Hotfix5中使用,其它分支不要用)
@@ -33767,7 +33767,7 @@ function styleFunction(name, value, priority) {
33767
33767
  };
33768
33768
  }
33769
33769
 
33770
- /* harmony default export */ var selection_style = (function(name, value, priority) {
33770
+ /* harmony default export */ var style = (function(name, value, priority) {
33771
33771
  return arguments.length > 1
33772
33772
  ? this.each((value == null
33773
33773
  ? styleRemove : typeof value === "function"
@@ -34222,7 +34222,7 @@ Selection.prototype = selection_selection.prototype = {
34222
34222
  empty: selection_empty,
34223
34223
  each: each,
34224
34224
  attr: attr,
34225
- style: selection_style,
34225
+ style: style,
34226
34226
  property: property,
34227
34227
  classed: classed,
34228
34228
  text: selection_text,
@@ -36357,7 +36357,6 @@ class historical_curve_element_HistoricalCurveElement extends conditional_displa
36357
36357
  operationButtonMargin: 4
36358
36358
  };
36359
36359
  this.elementStatus = HistoricalCurveElementStatus.Loading;
36360
- this.data = [];
36361
36360
  this.logger = injector.get(logger["b" /* LOGGER_SERVICE_TOKEN */]);
36362
36361
  this.localization = injector.get(_tmp_localization["b" /* LOCALIZATION */]);
36363
36362
  this.timePeriods = this.getValidTimePeriods();
@@ -36469,7 +36468,6 @@ class historical_curve_element_HistoricalCurveElement extends conditional_displa
36469
36468
  Object(lodash["each"])(result, v => values.push({ x: moment(v.time).local().toDate().valueOf(), y: v.values[key] }));
36470
36469
  data.push({ key: channel.name, area: channel.projectEnabled, values: values });
36471
36470
  });
36472
- this.data = data;
36473
36471
  nv_d3["addGraph"](() => {
36474
36472
  if (this.model.displaySetting.curveType === CurveType.BarGroup || this.model.displaySetting.curveType === CurveType.BarStack) {
36475
36473
  return this.getMultiBarWithFocusChart(chartWidth, chartHeight, data);
@@ -36479,50 +36477,6 @@ class historical_curve_element_HistoricalCurveElement extends conditional_displa
36479
36477
  }
36480
36478
  });
36481
36479
  }
36482
- initPoint() {
36483
- try {
36484
- const legendList = this.$element
36485
- .find('.nv-legend')
36486
- .find('.nv-series');
36487
- let hiddenCount = 0;
36488
- for (let i = 0; i < this.data.length; i++) {
36489
- const channel = this.model.dataSetting.channels[i];
36490
- if (legendList.eq(i).children().eq(0).css('fill-opacity') === '1') {
36491
- const pointList = this.$element
36492
- .find('.nv-scatterWrap')
36493
- .find('.nv-series-' + (i - hiddenCount))
36494
- .find('.nv-point');
36495
- if (pointList && pointList.length) {
36496
- for (let j = 0; j < pointList.length; j++) {
36497
- const point = pointList.eq(j);
36498
- const previousPoint = pointList.eq(j - 1);
36499
- if (j && point.attr('transform').split(',')[1] !== previousPoint.attr('transform').split(',')[1]) {
36500
- if (channel.enablePoint && channel.pointColor) {
36501
- const pointStyle = {
36502
- 'stroke-opacity': 1,
36503
- 'stroke-width': '2px',
36504
- 'stroke': channel.pointColor,
36505
- 'fill-opacity': 1,
36506
- 'fill': channel.pointColor
36507
- };
36508
- point.addClass('nv-mark-point');
36509
- point.css(pointStyle);
36510
- previousPoint.addClass('nv-mark-point');
36511
- previousPoint.css(pointStyle);
36512
- }
36513
- }
36514
- }
36515
- }
36516
- }
36517
- else {
36518
- hiddenCount++;
36519
- }
36520
- }
36521
- }
36522
- catch (e) {
36523
- console.log(e);
36524
- }
36525
- }
36526
36480
  getLineChart(chartWidth, chartHeight, data) {
36527
36481
  const chart = nv_d3["models"].lineChart().showLegend(true)
36528
36482
  .margin({ top: 0, bottom: 0, left: this.displayOption.marginLeft, right: this.displayOption.marginRight })
@@ -36538,19 +36492,6 @@ class historical_curve_element_HistoricalCurveElement extends conditional_displa
36538
36492
  }
36539
36493
  this.renderCommonProperty(chart, chartWidth, chartHeight, data);
36540
36494
  this.renderOperationArea(chartWidth, chartHeight);
36541
- this.initPoint();
36542
- chart.legend.dispatch.on('legendClick', () => {
36543
- setTimeout(() => {
36544
- this.$element.find('.nv-mark-point').css({
36545
- 'stroke-opacity': 0,
36546
- 'stroke-width': 0,
36547
- 'stroke': 'unset',
36548
- 'fill-opacity': 0,
36549
- 'fill': 'unset'
36550
- }).removeClass('nv-mark-point');
36551
- this.initPoint();
36552
- }, 1);
36553
- });
36554
36495
  return chart;
36555
36496
  }
36556
36497
  getMultiBarWithFocusChart(chartWidth, chartHeight, data) {
@@ -36594,18 +36535,6 @@ class historical_curve_element_HistoricalCurveElement extends conditional_displa
36594
36535
  chart.tooltip.headerFormatter(d => this.timeFormat(d, '%x %X'));
36595
36536
  if (this.model.displaySetting.showAxis) {
36596
36537
  chart.xAxis.showMaxMin(true).tickFormat(d => {
36597
- this.$element.find('.nv-mark-point').css({
36598
- 'stroke-opacity': 0,
36599
- 'stroke-width': 0,
36600
- 'stroke': 'unset',
36601
- 'fill-opacity': 0,
36602
- 'fill': 'unset'
36603
- }).removeClass('nv-mark-point');
36604
- clearTimeout(this.timer);
36605
- this.timer = undefined;
36606
- this.timer = setTimeout(() => {
36607
- this.initPoint();
36608
- }, 100);
36609
36538
  if (this.currentTimePeriod === 3 || this.currentTimePeriod === 4 || this.currentTimePeriod === 5) {
36610
36539
  return this.timeFormat(d, '%y-%m-%d');
36611
36540
  }
@@ -39384,9 +39313,6 @@ class view_operation_element_ViewOperationElement extends conditional_enable_ele
39384
39313
  const viewIndex = this.model.viewIndex;
39385
39314
  if (null != viewIndex) {
39386
39315
  this.popupViewService.popView(viewIndex, this.hostContainerId, this.el).subscribe(() => this.recordViewOperation(), error => this.logger.error(`ToggleView(${viewIndex}) failed. ${error}`));
39387
- $(`#${this.hostContainerId} video`)
39388
- .addClass('video-hidden')
39389
- .css('visibility', 'hidden');
39390
39316
  }
39391
39317
  else {
39392
39318
  this.logger.error('[GUI]Toggle View:invalid view index');
@@ -39394,11 +39320,6 @@ class view_operation_element_ViewOperationElement extends conditional_enable_ele
39394
39320
  }
39395
39321
  closeView() {
39396
39322
  this.popupViewService.closeView();
39397
- if ($(`#${this.hostContainerId} > svg > svg`).length === 0) {
39398
- $(`#${this.hostContainerId} .video-hidden`)
39399
- .removeClass('video-hidden')
39400
- .css('visibility', 'visible');
39401
- }
39402
39323
  this.recordViewOperation();
39403
39324
  }
39404
39325
  moveView(movementX, movementY) {
@@ -39545,7 +39466,6 @@ class video_element_VideoElement extends conditional_display_element_Conditional
39545
39466
  this.guiSize = guiSize;
39546
39467
  this.svgRootClass = svgRootClass;
39547
39468
  this.videoId = '';
39548
- this.isFullscreen = false;
39549
39469
  this.isMobileMode = _tmp_settings["a" /* DisplayMode */].Mobile === injector.get(_tmp_settings["b" /* GlobalSettings */]).displayMode;
39550
39470
  this.localization = injector.get(_tmp_localization["b" /* LOCALIZATION */]);
39551
39471
  this.init();
@@ -39581,84 +39501,60 @@ class video_element_VideoElement extends conditional_display_element_Conditional
39581
39501
  return;
39582
39502
  }
39583
39503
  this.videoId = guid["a" /* Guid */].newGuid().toString('n');
39584
- this.rootElement.append('rect').attr('id', 'rect' + this.videoId).attr('fill', 'transparent')
39585
- .attr('width', this.model.size.width)
39586
- .attr('height', this.model.size.height);
39587
39504
  this.videoService.getVideoUrl(this.model.videoTag).then(result => {
39588
- this.videoUrl = result.url;
39589
- this.initVideo(result.url, this.videoId);
39590
- }).catch(() => {
39591
- throw new Error('Failure of the videoService');
39592
- });
39593
- }
39594
- initVideo(videoUrl, videoId) {
39595
- const patt = /https:.+.m3u8/;
39596
- if (videoUrl.indexOf('http:') !== -1) {
39597
- videoUrl = videoUrl.replace('http:', 'https:');
39598
- }
39599
- if (!patt.test(videoUrl)) {
39600
- let videoToolTip = this.localization.invalidVideoAddress;
39601
- if (Object(lodash["isNil"])(videoUrl) || videoUrl === '') {
39602
- videoToolTip = this.localization.unconfiguredVideoAddress;
39505
+ this.isMobileType = result.isMobileType;
39506
+ const isAndroid = !!navigator.userAgent.match(/(Android)/i);
39507
+ let videoUrl = result.url;
39508
+ const patt = /https:.+.m3u8/;
39509
+ if (videoUrl.indexOf('http:') !== -1) {
39510
+ videoUrl = videoUrl.replace('http:', 'https:');
39511
+ }
39512
+ if (!patt.test(videoUrl)) {
39513
+ let videoToolTip = this.localization.invalidVideoAddress;
39514
+ if (Object(lodash["isNil"])(videoUrl) || videoUrl === '') {
39515
+ videoToolTip = this.localization.unconfiguredVideoAddress;
39516
+ }
39517
+ this.addVideoAddressToolTip(videoToolTip);
39518
+ return;
39603
39519
  }
39604
- this.addVideoAddressToolTip(videoToolTip);
39605
- return;
39606
- }
39607
- const isAndroid = !!navigator.userAgent.match(/(Android)/i);
39608
- const isIos = !!navigator.userAgent.match(/(Mac)/i);
39609
- const currentRect = this.$element.find('rect#rect' + videoId).first();
39610
- if (!currentRect.length) {
39611
- return;
39612
- }
39613
- const clientRect = currentRect[0].getBoundingClientRect();
39614
- const chartWidth = clientRect.width;
39615
- const chartHeight = clientRect.height;
39616
- const left = this.model.location.x / this.guiSize.width * $('.' + this.svgRootClass).find('.svg-content').width();
39617
- const top = this.model.location.y / this.guiSize.height * $('.' + this.svgRootClass).find('.svg-content').height();
39618
- const scareX = this.model.location.x / this.guiSize.width;
39619
- const scareY = this.model.location.y / this.guiSize.height;
39620
- if (isIos) {
39621
- videoUrl = videoUrl + '#t=1';
39622
- }
39623
- const preload = isIos ? ' preload=\'metadata\'' : '';
39624
- let videoHtml = `<video scareX="${scareX}"
39625
- scareY="${scareY}" id="${videoId}" ${preload} src="${videoUrl}" width="${chartWidth}" height="${chartHeight}"
39626
- style="position: absolute;top:${top}px;left:${left}px;object-fit:fill;z-index:0;"
39627
- playsInline webkit-playsinline `;
39628
- if (this.isMobileMode) {
39629
- if (isAndroid) {
39630
- videoHtml += ' autoplay muted></video>';
39520
+ const video = this.rootElement.append('foreignObject')
39521
+ .attr('x', 0)
39522
+ .attr('y', 0)
39523
+ .attr('width', this.model.size.width)
39524
+ .attr('height', this.model.size.height)
39525
+ .append('xhtml:video')
39526
+ .attr('id', this.videoId)
39527
+ .attr('class', 'element-video')
39528
+ .attr('scareX', this.model.location.x / this.guiSize.width)
39529
+ .attr('scareY', this.model.location.y / this.guiSize.height)
39530
+ .attr('src', videoUrl)
39531
+ .style('width', '100%')
39532
+ .style('height', '100%')
39533
+ .style('object-fit', 'fill')
39534
+ .attr('playsInline', true)
39535
+ .attr('webkit-playsinline', true)
39536
+ .attr('controls', true)
39537
+ .attr('muted', true);
39538
+ if (this.isMobileMode) {
39539
+ if (isAndroid) {
39540
+ video.attr('autoplay', true);
39541
+ }
39631
39542
  }
39632
39543
  else {
39633
- videoHtml += ' controls muted></video>';
39634
- }
39635
- }
39636
- else {
39637
- videoHtml += ' controls autoplay muted></video>';
39638
- }
39639
- $('.' + this.svgRootClass).find('.svg-content').append(videoHtml);
39640
- if (this.isShow === false) {
39641
- $('#' + this.videoId).hide();
39642
- }
39643
- setTimeout(() => {
39644
- if (isAndroid) {
39645
- this.setAndroidVideo(videoId);
39544
+ video.attr('autoplay', true);
39646
39545
  }
39647
- else if (isIos) {
39648
- this.setIosVideo(this.videoUrl, videoId);
39649
- }
39650
- try {
39651
- this.videoPlayer = new EZUIPlayer(videoId);
39546
+ if (this.isShow === false) {
39547
+ $('#' + this.videoId).hide();
39652
39548
  }
39653
- catch (err) {
39654
- console.log(err);
39549
+ this.videoPlayer = new EZUIPlayer(this.videoId);
39550
+ if (isAndroid) {
39551
+ setTimeout(() => {
39552
+ this.setAndroidVideo();
39553
+ }, 500);
39655
39554
  }
39656
- }, 1000);
39657
- const style = document.createElement('style');
39658
- style.innerHTML = `#${videoId}::-webkit-media-controls-enclosure {
39659
- display: none;
39660
- }`;
39661
- document.head.append();
39555
+ }).catch(() => {
39556
+ throw new Error('Failure of the videoService');
39557
+ });
39662
39558
  }
39663
39559
  addVideoAddressToolTip(videoToolTip) {
39664
39560
  const size = this.model.size;
@@ -39680,71 +39576,53 @@ class video_element_VideoElement extends conditional_display_element_Conditional
39680
39576
  const textElement = new text_element_TextElementModal(videoToolTip, font, size.width, size.height);
39681
39577
  this.$element.append(textElement.Element);
39682
39578
  }
39683
- setAndroidVideo(videoId) {
39684
- const videoElement = $('#' + videoId);
39685
- let preHeight = videoElement.height();
39686
- let preWidth = videoElement.width();
39687
- let preTop = videoElement.css('top');
39688
- let preLeft = videoElement.css('left');
39579
+ setAndroidVideo() {
39689
39580
  const { StatusBar } = window;
39690
- videoElement.on('click', () => {
39691
- if (!this.isFullscreen) {
39692
- if (StatusBar) {
39693
- StatusBar.hide();
39694
- }
39695
- preHeight = videoElement.height();
39696
- preWidth = videoElement.width();
39697
- preTop = videoElement.css('top');
39698
- preLeft = videoElement.css('left');
39699
- const width = document.documentElement.clientWidth;
39700
- const height = document.documentElement.clientHeight;
39701
- videoElement.css('object-fit', 'contain');
39702
- videoElement.css('background', '#000000');
39703
- videoElement.css('width', width + 'px');
39704
- videoElement.css('height', height + 'px');
39705
- videoElement.css('left', '0px');
39706
- videoElement.css('top', '0px');
39707
- videoElement.css('z-index', '99');
39708
- videoElement.css('position', 'fixed');
39709
- this.isFullscreen = true;
39710
- try {
39711
- screen.orientation.lock(screen.orientation.type);
39712
- }
39713
- catch (error) {
39714
- console.error(error);
39715
- }
39581
+ this.bindFullscreenEvent();
39582
+ window.addEventListener('orientationchange', () => {
39583
+ StatusBar.show();
39584
+ this.hide();
39585
+ clearTimeout(this.refreshTimer);
39586
+ this.refreshTimer = null;
39587
+ this.refreshTimer = setTimeout(() => {
39588
+ this.init();
39589
+ this.show();
39590
+ }, 1000);
39591
+ });
39592
+ }
39593
+ bindFullscreenEvent() {
39594
+ const that = this;
39595
+ const { StatusBar } = window;
39596
+ $('#' + this.videoId).bind('webkitfullscreenchange', () => {
39597
+ if (document.webkitIsFullScreen) {
39598
+ $('#' + that.videoId).css({
39599
+ 'object-fit': 'contain',
39600
+ 'z-index': 99
39601
+ });
39602
+ StatusBar.hide();
39716
39603
  }
39717
39604
  else {
39718
- videoElement.css('object-fit', 'fill');
39719
- videoElement.css('width', preWidth + 'px');
39720
- videoElement.css('height', preHeight + 'px');
39721
- videoElement.css('left', preLeft);
39722
- videoElement.css('top', preTop);
39723
- videoElement.css('z-index', '0');
39724
- videoElement.css('position', 'absolute');
39725
- this.isFullscreen = false;
39726
- try {
39727
- if (screen.orientation.type.includes('portrait')) {
39728
- StatusBar.show();
39729
- }
39605
+ StatusBar.show();
39606
+ if (that.isMobileType) {
39607
+ $('#' + this.videoId).css('object-fit', document.webkitIsFullScreen ? 'contain' : 'fill');
39730
39608
  }
39731
- catch (error) {
39732
- console.error(error);
39609
+ else {
39610
+ clearTimeout(this.resetTimer);
39611
+ this.resetTimer = null;
39612
+ $('#' + this.videoId).css('display', 'none');
39613
+ this.resetTimer = setTimeout(() => {
39614
+ $('#' + this.videoId).css({
39615
+ 'width': '100%',
39616
+ 'height': '100%',
39617
+ 'display': 'block',
39618
+ 'z-index': 0,
39619
+ 'object-fit': document.webkitIsFullScreen ? 'contain' : 'fill'
39620
+ });
39621
+ }, 1000);
39733
39622
  }
39734
39623
  }
39735
39624
  });
39736
39625
  }
39737
- setIosVideo(videoUrl, videoId) {
39738
- const video = $('#' + this.videoId);
39739
- video.on('webkitendfullscreen', () => {
39740
- video.remove();
39741
- clearTimeout(this.refreshTimer);
39742
- this.refreshTimer = null;
39743
- this.refreshTimer = setTimeout(() => {
39744
- this.initVideo(videoUrl, videoId);
39745
- }, 500);
39746
- });
39747
- }
39748
39626
  }
39749
39627
 
39750
39628
  // CONCATENATED MODULE: ./.tmp/elements/weather/weater-element.ts
@@ -41791,24 +41669,13 @@ let WriteValueModalComponent = class WriteValueModalComponent {
41791
41669
  value = this.formatWriteValue();
41792
41670
  }
41793
41671
  }
41794
- if (!this.args.releasedVariableService) {
41795
- this.onClosed({
41796
- value: value,
41797
- showValue: showValue,
41798
- enableNumericalOperation: false,
41799
- isNumericalOperation: this.isNumericalOperation,
41800
- variableRwType: 6
41801
- });
41802
- return;
41803
- }
41804
41672
  this.args.releasedVariableService.getVariableWithValueTransform(this.variableName).subscribe(result => {
41805
41673
  const valueTransform = JSON.parse(result.valueTransform);
41806
- if (valueTransform.Type !== 0) {
41674
+ if ((valueTransform === null || valueTransform === void 0 ? void 0 : valueTransform.Type) !== 0) {
41807
41675
  this.isNumericalOperation = true;
41808
41676
  }
41809
41677
  this.onClosed({
41810
- value: value,
41811
- showValue: showValue,
41678
+ value, showValue,
41812
41679
  enableNumericalOperation: this.enableNumericalOperation,
41813
41680
  isNumericalOperation: this.isNumericalOperation,
41814
41681
  variableRwType: result.variableRwType