@vitrosoftware/common-ui-ts 1.1.209 → 1.1.210

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.
Files changed (65) hide show
  1. package/css/std/controls/bim-viewer/bim-viewer-index.css +4 -1
  2. package/css/std/controls/bim-viewer/style.css +4 -0
  3. package/css/std/controls/filter/filter.css +85 -0
  4. package/css/std/controls/pdf-viewer/custom.css +1 -5
  5. package/css/std/controls/pdf-viewer/pdf-viewer-index.css +1 -24
  6. package/css/std/controls/pdf-viewer/pdf-viewer.css +0 -19
  7. package/css/std/controls/search/search-dialog.css +202 -0
  8. package/css/std/controls/search/search.css +0 -185
  9. package/css/std/controls/viewer-issue-list/viewer-issue-list.css +49 -0
  10. package/dist/index.css +3292 -3140
  11. package/dist/index.js +11815 -10479
  12. package/dist/index.js.map +1 -1
  13. package/dist/src/constants/Event.d.ts +5 -1
  14. package/dist/src/constants/Factory.d.ts +8 -0
  15. package/dist/src/constants/MoveType.d.ts +5 -0
  16. package/dist/src/controls/BimViewer/services/BimViewerService.d.ts +10 -1
  17. package/dist/src/controls/DxfViewer/services/DxfViewerService.d.ts +10 -1
  18. package/dist/src/controls/Filter/CriterionFilter.d.ts +26 -0
  19. package/dist/src/controls/Filter/Filter.d.ts +28 -0
  20. package/dist/src/controls/Filter/FilterConstants.d.ts +54 -0
  21. package/dist/src/controls/Filter/Inputs/BaseLookupPicker.d.ts +35 -0
  22. package/dist/src/controls/Filter/Inputs/Checkbox.d.ts +10 -0
  23. package/dist/src/controls/Filter/Inputs/DatePicker.d.ts +8 -0
  24. package/dist/src/controls/Filter/Inputs/Input.d.ts +10 -0
  25. package/dist/src/controls/Filter/Inputs/LookupPicker.d.ts +2 -0
  26. package/dist/src/controls/Filter/Inputs/NumberInput.d.ts +13 -0
  27. package/dist/src/controls/Filter/Inputs/TimePicker.d.ts +8 -0
  28. package/dist/src/controls/Filter/Inputs/UserLookupPicker.d.ts +3 -0
  29. package/dist/src/controls/Filter/SortFilter.d.ts +14 -0
  30. package/dist/src/controls/Filter/models/SortCriterion.d.ts +7 -0
  31. package/dist/src/controls/Filter/models/SortItem.d.ts +4 -0
  32. package/dist/src/controls/PdfViewer/services/PdfViewerService.d.ts +10 -1
  33. package/dist/src/controls/Search/Search.d.ts +11 -24
  34. package/dist/src/controls/Search/SearchConstants.d.ts +12 -0
  35. package/dist/src/controls/Search/SearchDialog.d.ts +23 -0
  36. package/dist/src/controls/ViewerIssueList/ViewerIssueList.d.ts +28 -0
  37. package/dist/src/index.d.ts +3 -0
  38. package/dist/src/models/Action.d.ts +20 -0
  39. package/dist/src/models/ContentType.d.ts +17 -0
  40. package/dist/src/models/ContentTypeView.d.ts +5 -0
  41. package/dist/src/models/Field.d.ts +13 -0
  42. package/dist/src/models/FieldType.d.ts +5 -0
  43. package/dist/src/models/Item.d.ts +22 -0
  44. package/dist/src/models/ItemCopyRequest.d.ts +5 -0
  45. package/dist/src/models/ItemId.d.ts +7 -0
  46. package/dist/src/models/ItemPath.d.ts +5 -0
  47. package/dist/src/models/ItemUpdateRequest.d.ts +8 -0
  48. package/dist/src/models/ListConfig.d.ts +25 -0
  49. package/dist/src/models/Site.d.ts +10 -0
  50. package/dist/src/models/ViewPart.d.ts +7 -0
  51. package/dist/src/models/ViewPartList.d.ts +7 -0
  52. package/dist/src/models.d.ts +3 -0
  53. package/dist/src/services/ColumnService.d.ts +9 -0
  54. package/dist/src/services/ContentTypeService.d.ts +8 -0
  55. package/dist/src/services/EventHandlerService.d.ts +4 -0
  56. package/dist/src/services/EventService.d.ts +6 -0
  57. package/dist/src/services/GuidService.d.ts +3 -0
  58. package/dist/src/services/ImageService.d.ts +7 -0
  59. package/dist/src/services/ItemSelectDialogService.d.ts +12 -0
  60. package/dist/src/services/ItemService.d.ts +24 -0
  61. package/dist/src/services/LookupListItemService.d.ts +9 -0
  62. package/package.json +1 -1
  63. package/src/controls/BimViewer/js/bim-viewer.js +50 -7
  64. package/src/controls/DxfViewer/js/dxf-viewer.js +78 -21
  65. package/src/controls/PdfViewer/js/pdf-viewer.js +136 -23
@@ -0,0 +1,7 @@
1
+ import { ViewPart } from "./ViewPart";
2
+ export interface ViewPartList {
3
+ name: string;
4
+ isAdmin: boolean;
5
+ list: ViewPart[];
6
+ permission: string;
7
+ }
@@ -26,6 +26,7 @@ import { SiteSelectItem as _SiteSelectItem } from './controls/SiteSelect/models/
26
26
  import { QuillRichEditorSettings as _QuillRichEditorSettings } from './controls/Input/models/QuillRichEditorSettings';
27
27
  import { TelerikMediaPlayerSettings as _TelerikMediaPlayerSettings } from './controls/VideoViewer/models/TelerikMediaPlayerSettings';
28
28
  import { FilePickerItem as _FilePickerItem } from './controls/FilePicker/models/FilePickerItem';
29
+ import { SortItem as _SortItem } from './controls/Filter/models/SortItem';
29
30
  export declare namespace models {
30
31
  interface JsTreeViewNode extends _JsTreeViewNode {
31
32
  }
@@ -83,4 +84,6 @@ export declare namespace models {
83
84
  }
84
85
  interface FilePickerItem extends _FilePickerItem {
85
86
  }
87
+ interface SortItem extends _SortItem {
88
+ }
86
89
  }
@@ -0,0 +1,9 @@
1
+ export interface ColumnService {
2
+ getSystemList(): {
3
+ internalName: string;
4
+ name: string;
5
+ component: string;
6
+ }[];
7
+ getName(internalName: string): string;
8
+ isSystemUserLookupPicker(internalName: string): boolean;
9
+ }
@@ -0,0 +1,8 @@
1
+ import { ContentType } from '../models/ContentType';
2
+ export interface ContentTypeService {
3
+ get(contentTypeId: string): Promise<ContentType>;
4
+ getByList(listId: string): Promise<ContentType[]>;
5
+ getListByFeature(feature: {
6
+ id: string;
7
+ }[], contentTypeList: ContentType[]): ContentType[];
8
+ }
@@ -0,0 +1,4 @@
1
+ export interface EventHandlerService {
2
+ readonly id: string;
3
+ process(...params: any[]): unknown;
4
+ }
@@ -0,0 +1,6 @@
1
+ import { EventHandlerService } from './EventHandlerService';
2
+ export interface EventService {
3
+ send<T>(eventId: string, data: T, eventScopeId?: string): void;
4
+ register(eventHandler: EventHandlerService, eventScopeId?: string): void;
5
+ remove(eventHandler: EventHandlerService): void;
6
+ }
@@ -0,0 +1,3 @@
1
+ export interface GuidService {
2
+ get(): string;
3
+ }
@@ -0,0 +1,7 @@
1
+ import type { ContentType } from '../models/ContentType';
2
+ export interface ImageService {
3
+ get(name: string, contentType: ContentType): string;
4
+ getByContentType(contentType: ContentType): string;
5
+ getByFileName(name: string): string;
6
+ getByImageId(imageId: string): string;
7
+ }
@@ -0,0 +1,12 @@
1
+ export interface ItemSelectDialogService {
2
+ show(listId: string, viewId?: string, isMultiSelect?: boolean, isFolderOnly?: boolean, dialogSettings?: {
3
+ title?: string;
4
+ subtitle?: string;
5
+ image?: string;
6
+ buttonText?: string;
7
+ isListSelectEnabled?: boolean;
8
+ isShowSelection?: boolean;
9
+ }, viewSettings?: {
10
+ [key: string]: unknown;
11
+ }): Promise<string[]>;
12
+ }
@@ -0,0 +1,24 @@
1
+ import type { ItemUpdateRequest } from '../models/ItemUpdateRequest';
2
+ import type { ItemCopyRequest } from '../models/ItemCopyRequest';
3
+ import { MOVE_TYPE } from '../constants/MoveType';
4
+ import { Item } from '../models/Item';
5
+ import { ItemId } from '../models/ItemId';
6
+ export interface ItemService {
7
+ get(itemId: string | ItemId, onError?: (response: any) => void): Promise<Item>;
8
+ getListByParentId(listId: string, query?: string, sort?: {
9
+ [internalName: string]: number;
10
+ }): Promise<Array<any>>;
11
+ getList(itemIdList: string[]): Promise<Array<Item>>;
12
+ getParentList(item: Item): Promise<Array<any>>;
13
+ getRecursive(itemId: string): Promise<Array<Item>>;
14
+ createByContentType(listId: string, contentTypeId: string, parentId?: string): Promise<any>;
15
+ update(itemList: ItemUpdateRequest[]): Promise<any>;
16
+ delete(idList: string[] | string): Promise<string[]>;
17
+ restore(deleteTransactionId: string): Promise<void>;
18
+ move(itemId: string, toItemId: string, type: MOVE_TYPE): Promise<any>;
19
+ createItemUpdateRequestMap(item: ItemUpdateRequest, itemList: File[]): {
20
+ [key: string]: string | number | Array<string | number>;
21
+ };
22
+ copy(parentId: any, nodeList: ItemCopyRequest[]): Promise<any>;
23
+ createNewInstance(listId: string, contentTypeId: string, parentId: string, fieldValueMap?: Map<string, string | number>): Promise<Item>;
24
+ }
@@ -0,0 +1,9 @@
1
+ import { Item } from "../models/Item";
2
+ import { ItemId } from "../models/ItemId";
3
+ export interface LookupListItemService {
4
+ getValueList(field: Item, searchValue: string, currentItemRef?: {
5
+ item: ItemId | null;
6
+ changedFieldValueMap?: Map<string, unknown>;
7
+ }): Promise<any>;
8
+ getFilteredItemList(fieldId: string, searchValue: string, query?: string): Promise<Item[]>;
9
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vitrosoftware/common-ui-ts",
3
- "version": "1.1.209",
3
+ "version": "1.1.210",
4
4
  "description": "vitro software common ui ts",
5
5
  "author": "",
6
6
  "license": "MIT",
@@ -1,11 +1,11 @@
1
- import { BIMModel, BIMCommon, BIMAnnotation } from '/resource/bimViewer/js/bim-viewer-models.js?version=1.1.209';
1
+ import { BIMModel, BIMCommon, BIMAnnotation } from '/resource/bimViewer/js/bim-viewer-models.js?version=1.1.210';
2
2
 
3
3
  import {
4
4
  Viewer, XKTLoaderPlugin, NavCubePlugin, SectionPlanesPlugin, math, BCFViewpointsPlugin, AnnotationsPlugin,
5
5
  ContextMenu, TreeViewPlugin, StoreyViewsPlugin, AngleMeasurementsPlugin, CameraMemento, DistanceMeasurementsPlugin,
6
6
  GLTFLoaderPlugin, utils, FastNavPlugin, MetaObject, parsers
7
7
  }
8
- from '/resource/bimViewer/js/xeokit/xeokit-sdk.es.js?version=1.1.209';
8
+ from '/resource/bimViewer/js/xeokit/xeokit-sdk.es.js?version=1.1.210';
9
9
 
10
10
 
11
11
  //----------------------------------------------------------------------------------------------------------------------
@@ -1645,7 +1645,8 @@ function clearSectionPanes() {
1645
1645
  // Load Annotations
1646
1646
  //------------------------------------------------------------------------------------------------------------------
1647
1647
  function loadAnnotations() {
1648
- context.getIssueList().then(issueList => {
1648
+ const searchCriterion = window.searchCriterionList ? window.searchCriterionList : [];
1649
+ context.getIssueList(searchCriterion).then(issueList => {
1649
1650
  issueList.map(issue => {
1650
1651
  let data = getMarkupData(issue.item);
1651
1652
  data.occludable = false;
@@ -3087,7 +3088,11 @@ const fastNavPlugin = new FastNavPlugin(viewer, {
3087
3088
  //
3088
3089
  //------------------------------------------------------------------------------------------------------------------
3089
3090
 
3090
- var notesDescriptionVisibleList = {};
3091
+ const EVENT_SEARCH_ISSUE_LIST = 'vitro.search.issue.list';
3092
+ const EVENT_ISSUE_LIST_REFRESH = 'vitro.issue.list.refresh';
3093
+ const EVENT_ISSUE_LIST_SELECT_ITEM = 'vitro.issue.list.select.item';
3094
+
3095
+ var notesDescriptionVisibleList = {};
3091
3096
 
3092
3097
  BIMAnnotation.GetNote = (callback) => {
3093
3098
  callback([]);
@@ -3296,21 +3301,25 @@ function updatePage(e) {
3296
3301
  annotations.annotations[data.id].setLabelShown(false);
3297
3302
  }
3298
3303
  }, 10);
3304
+ setTimeout(function () { refreshIssueList(); }, 250);
3299
3305
  }
3300
3306
 
3301
3307
  if (e.type === context.deleteIssueEvent) {
3302
3308
 
3303
3309
  let item = e.detail.itemList[0];
3304
3310
  annotations.destroyAnnotation(item.fieldValueMap.item_id);
3305
- if ($('.sidebar').is(':visible')) {
3306
- initSidebarNotes();
3307
- }
3311
+ refreshIssueList();
3308
3312
  if (isNoteDescriptionVisible(item.fieldValueMap.item_id)) {
3309
3313
  removeFromNotesDescriptionVisibleList(item.fieldValueMap.item_id);
3310
3314
  }
3311
3315
  }
3312
3316
  }
3313
3317
 
3318
+ function refreshIssueList() {
3319
+ const event = new CustomEvent(EVENT_ISSUE_LIST_REFRESH, { detail: {} });
3320
+ window.dispatchEvent(event);
3321
+ }
3322
+
3314
3323
  function goToNoteMarker(issue) {
3315
3324
  if (!$('#btnCreateNotes').hasClass('toggled')) {
3316
3325
  hideNotesDescription();
@@ -3898,7 +3907,41 @@ function bindBtnAddModel() {
3898
3907
  });
3899
3908
  }
3900
3909
 
3910
+ function bindUpdateDocumentMarkupList() {
3911
+ window.addEventListener(EVENT_SEARCH_ISSUE_LIST, updateDocumentMarkupList);
3912
+ }
3901
3913
 
3914
+ function updateDocumentMarkupList(e) {
3915
+ annotations.clear();
3916
+ if (e.detail.issueList && e.detail.issueList.length) {
3917
+ e.detail.issueList.map(issue => {
3918
+ let data = getMarkupData(issue.item);
3919
+ data.occludable = false;
3920
+ annotations.createAnnotation(data);
3921
+ });
3922
+ }
3923
+ }
3924
+
3925
+ bindUpdateDocumentMarkupList();
3926
+
3927
+ function highlightSidebarNote(noteId) {
3928
+ var noteWrap = $('#vitro-issue-tile-' + noteId);
3929
+
3930
+ if (!noteWrap.position()) {
3931
+ setTimeout(() => {
3932
+ highlightSidebarNote(noteId);
3933
+ }, 500);
3934
+
3935
+ return;
3936
+ }
3937
+
3938
+ selectIssueListItem(noteId);
3939
+ }
3940
+
3941
+ function selectIssueListItem(itemId) {
3942
+ const event = new CustomEvent(EVENT_ISSUE_LIST_SELECT_ITEM, { detail: { itemId: itemId } });
3943
+ window.dispatchEvent(event);
3944
+ }
3902
3945
 
3903
3946
  //------------------------------------------------------------------------------------------------------------------
3904
3947
  // Do action wherever we click on an object
@@ -1,17 +1,17 @@
1
- import * as three from '/resource/dxfViewer/js/three/three.module.js?version=1.1.209';
2
- import { Matrix3, Vector2 } from '/resource/dxfViewer/js/three/three.module.js?version=1.1.209';
3
- import { Batch, DxfViewer, Layer } from '/resource/dxfViewer/js/viewer/DxfViewer.js?version=1.1.209';
4
- import { Block as SceneBlock } from '/resource/dxfViewer/js/viewer/DxfScene.js?version=1.1.209';
5
- import { Block } from '/resource/dxfViewer/js/viewer/DxfViewer.js?version=1.1.209';
6
- import { DxfScene, Entity, ColorCode } from '/resource/dxfViewer/js/viewer/DxfScene.js?version=1.1.209';
7
- import { TextRenderer, ParseSpecialChars, HAlign, VAlign } from '/resource/dxfViewer/js/viewer/TextRenderer.js?version=1.1.209';
8
- import { DxfWorker } from '/resource/dxfViewer/js/viewer/DxfWorker.js?version=1.1.209';
9
- import { DxfFetcher } from '/resource/dxfViewer/js/viewer/DxfFetcher.js?version=1.1.209';
10
- import DxfParser from '/resource/dxfViewer/js/viewer/parser/DxfParser.js?version=1.1.209';
11
- import { RenderBatch } from '/resource/dxfViewer/js/viewer/DxfScene.js?version=1.1.209';
12
- import { DynamicBuffer, NativeType } from '/resource/dxfViewer/js/viewer/DynamicBuffer.js?version=1.1.209';
13
- import { OrbitControls } from '/resource/dxfViewer/js/viewer/OrbitControls.js?version=1.1.209';
14
- import { CSS2DRenderer, CSS2DObject } from '/resource/dxfViewer/js/three/three.module.js?version=1.1.209';
1
+ import * as three from '/resource/dxfViewer/js/three/three.module.js?version=1.1.210';
2
+ import { Matrix3, Vector2 } from '/resource/dxfViewer/js/three/three.module.js?version=1.1.210';
3
+ import { Batch, DxfViewer, Layer } from '/resource/dxfViewer/js/viewer/DxfViewer.js?version=1.1.210';
4
+ import { Block as SceneBlock } from '/resource/dxfViewer/js/viewer/DxfScene.js?version=1.1.210';
5
+ import { Block } from '/resource/dxfViewer/js/viewer/DxfViewer.js?version=1.1.210';
6
+ import { DxfScene, Entity, ColorCode } from '/resource/dxfViewer/js/viewer/DxfScene.js?version=1.1.210';
7
+ import { TextRenderer, ParseSpecialChars, HAlign, VAlign } from '/resource/dxfViewer/js/viewer/TextRenderer.js?version=1.1.210';
8
+ import { DxfWorker } from '/resource/dxfViewer/js/viewer/DxfWorker.js?version=1.1.210';
9
+ import { DxfFetcher } from '/resource/dxfViewer/js/viewer/DxfFetcher.js?version=1.1.210';
10
+ import DxfParser from '/resource/dxfViewer/js/viewer/parser/DxfParser.js?version=1.1.210';
11
+ import { RenderBatch } from '/resource/dxfViewer/js/viewer/DxfScene.js?version=1.1.210';
12
+ import { DynamicBuffer, NativeType } from '/resource/dxfViewer/js/viewer/DynamicBuffer.js?version=1.1.210';
13
+ import { OrbitControls } from '/resource/dxfViewer/js/viewer/OrbitControls.js?version=1.1.210';
14
+ import { CSS2DRenderer, CSS2DObject } from '/resource/dxfViewer/js/three/three.module.js?version=1.1.210';
15
15
 
16
16
  let treeViewData = [];
17
17
  let notes = [];
@@ -2878,7 +2878,8 @@ function bindBtnToggleSidebarNotes() {
2878
2878
  $(document).on('click', '#btnToggleSidebarNotes', function() {
2879
2879
  $(this).toggleClass('toggled');
2880
2880
 
2881
- if($(this).hasClass('toggled')) {
2881
+ if ($(this).hasClass('toggled')) {
2882
+ collapseSidebarIssueDetail();
2882
2883
  if(!$('.sidebar').is(':visible')) {
2883
2884
  expandSidebarNotes();
2884
2885
  $('body').addClass('vitro-sidebar-notes-expanded');
@@ -2891,7 +2892,8 @@ function bindBtnToggleSidebarNotes() {
2891
2892
  }
2892
2893
 
2893
2894
  function expandSidebarNotes() {
2894
- context.initIssueList();
2895
+ const searchCriterion = window.searchCriterionList ? window.searchCriterionList : [];
2896
+ context.initIssueList(true, searchCriterion);
2895
2897
 
2896
2898
  if ($('#btnCreateNotes').hasClass('toggled')) {
2897
2899
  $('#btnCreateNotes').removeClass('toggled');
@@ -3177,6 +3179,9 @@ function initTreeViewPanelResizable() {
3177
3179
  minWidth: 150
3178
3180
  });
3179
3181
  }
3182
+ const EVENT_SEARCH_ISSUE_LIST = 'vitro.search.issue.list';
3183
+ const EVENT_ISSUE_LIST_REFRESH = 'vitro.issue.list.refresh';
3184
+
3180
3185
  var canvas = document.getElementById('canvasContainer');
3181
3186
  window.dxfViewer = new Viewer(canvas, null);
3182
3187
 
@@ -3244,7 +3249,7 @@ function KeyDown(event) {
3244
3249
  const code = event.code;
3245
3250
  if (code == 'Delete') {
3246
3251
  const selectedId = window.dxfViewer.GetSelectedHandle();
3247
- if (selectedId) {initi
3252
+ if (selectedId) {
3248
3253
  const drawable = window.dxfViewer.GetDrawable(selectedId);
3249
3254
  if (drawable?.drawMode === DrawMode.ANNOTATIONS) {
3250
3255
  window.dxfViewer.DeleteDrawable(selectedId);
@@ -3376,16 +3381,23 @@ function bindUpdatePage() {
3376
3381
  }
3377
3382
  }
3378
3383
 
3384
+ function refreshIssueList() {
3385
+ const event = new CustomEvent(EVENT_ISSUE_LIST_REFRESH, { detail: {} });
3386
+ window.dispatchEvent(event);
3387
+ }
3388
+
3379
3389
  function updatePage(e) {
3380
3390
  const item = e.detail.itemList[0];
3381
3391
  const markup = item.fieldValueMap.markup;
3382
- context.initIssueList(true);
3392
+ const searchCriterion = window.searchCriterionList ? window.searchCriterionList : [];
3393
+ context.initIssueList(true, searchCriterion);
3383
3394
  anno.RemoveLabels();
3384
3395
  removeNewAnnotations();
3385
3396
 
3386
3397
  if (e.type === context.deleteIssueEvent && markup) {
3387
3398
  const selectedId = item.fieldValueMap.item_id;
3388
3399
  deleteNote(selectedId);
3400
+ refreshIssueList();
3389
3401
  }
3390
3402
 
3391
3403
  if (e.type === context.updateIssueEvent && markup) {
@@ -3439,15 +3451,20 @@ function getCurrentSpaceHandle() {
3439
3451
  }
3440
3452
 
3441
3453
  function onSelectAnnotation(id) {
3442
- if (context.selectIssue) {
3443
- context.selectIssue(id, true);
3444
- }
3445
3454
  zoomToAnnotation(id);
3446
3455
 
3447
3456
  if (!$('#btnToggleSidebarNotes').hasClass('toggled')) {
3448
3457
  $('#btnToggleSidebarNotes').addClass('toggled');
3449
3458
  expandSidebarNotes();
3450
3459
  }
3460
+ if (context.selectIssue) {
3461
+ const interval = setInterval(() => {
3462
+ if ($('.sidebar').find('.vitro-viewer-issue-list').length) {
3463
+ context.selectIssue(id, true);
3464
+ clearInterval(interval);
3465
+ }
3466
+ }, 50);
3467
+ }
3451
3468
  updateCanvasContainerWidth();
3452
3469
  }
3453
3470
 
@@ -3466,6 +3483,9 @@ function switchSpace(space) {
3466
3483
 
3467
3484
  if (layout) {
3468
3485
  window.dxfViewer.SwitchSpace(layout);
3486
+
3487
+ refreshMarkupList();
3488
+
3469
3489
  dxfViewer.ZoomTo(dxfViewer.GetSpace(dxfViewer.spaceName).scene);
3470
3490
  dxfViewer.DoFakeZoomToRedrawScene();
3471
3491
  anno.RemoveLabels();
@@ -3636,6 +3656,42 @@ function updateCanvasContainerWidth() {
3636
3656
  $('#canvasContainer').css('width', `calc(100% - ${insetStart + insetEnd}px)`);
3637
3657
  $('#canvasContainer').css('inset-inline-start', `${insetStart}px`);
3638
3658
  $('#canvasContainer').css('inset-inline-end', `${insetEnd}px`);
3659
+ }
3660
+
3661
+ function bindUpdateDocumentMarkupList() {
3662
+ window.removeEventListener(context.searchIssueListEvent, updateDocumentMarkupList);
3663
+ window.addEventListener(context.searchIssueListEvent, updateDocumentMarkupList);
3664
+ }
3665
+
3666
+ function updateDocumentMarkupList(e) {
3667
+ removeAllMarkups();
3668
+ context.issueList = e.detail.issueList;
3669
+ reinitMarkupList();
3670
+ anno.UpdateLabelPosition();
3671
+ }
3672
+
3673
+ function removeAllMarkups() {
3674
+ context.issueList?.forEach(item => {
3675
+ deleteNote(item.id);
3676
+ });
3677
+ anno.RemoveLabels();
3678
+ }
3679
+
3680
+ function refreshMarkupList() {
3681
+ removeAllMarkups();
3682
+ reinitMarkupList();
3683
+ }
3684
+
3685
+ function reinitMarkupList() {
3686
+ const currentSpaceHandle = getCurrentSpaceHandle();
3687
+
3688
+ if (context.issueList && context.issueList.length) {
3689
+ $.each(context.issueList, function (index, note) {
3690
+ if (note.markup) {
3691
+ initNote(note, currentSpaceHandle);
3692
+ }
3693
+ });
3694
+ }
3639
3695
  }
3640
3696
  $(document).ready(function () {
3641
3697
  bindBtnToggleSidebarNotes();
@@ -3660,6 +3716,7 @@ $(document).ready(function () {
3660
3716
  bindSelectList();
3661
3717
  bindScaleSelectChange();
3662
3718
  bindPanelResize();
3719
+ bindUpdateDocumentMarkupList();
3663
3720
  });
3664
3721
 
3665
3722
  var userLocale =