dochub-sdk 0.1.182 → 0.1.184

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.
@@ -26,14 +26,20 @@ export enum DocHubDocumentType {
26
26
  // В результате работы вызовет метод processingData
27
27
  }
28
28
 
29
+ export interface IDocHubDocumentUIState {
30
+ styleHeight: string;
31
+ styleWidth: string;
32
+ styleFilter: string;
33
+ }
34
+
29
35
  @Component
30
36
  export class DocHubDocumentProto extends DocHubComponentProto implements IDocHubEditableComponent {
31
- onRefresher: any = null; // Таймер отложенного выполнения обновления
32
- followFiles: string[] | undefined; // Список файлов за изменениями которых нужно следить
33
- baseURI: string | undefined; // URI документа от которого должны разрешаться все относительные ссылки
34
- error: string | null = null; // Ошибка
35
- isPending = true; // Признак внутренней работы. Например загрузка данных.
36
-
37
+ onRefresher: any = null; // Таймер отложенного выполнения обновления
38
+ followFiles: string[] | undefined; // Список файлов за изменениями которых нужно следить
39
+ baseURI: string | undefined; // URI документа от которого должны разрешаться все относительные ссылки
40
+ error: string | null = null; // Ошибка
41
+ isPending = true; // Признак внутренней работы. Например загрузка данных.
42
+ savedUIState: IDocHubDocumentUIState | null = null; // Хранит текущее UI состояние для последующего восстановления
37
43
  /**
38
44
  * Профиль документа
39
45
  */
@@ -41,7 +47,6 @@ export class DocHubDocumentProto extends DocHubComponentProto implements IDocHub
41
47
  type: Object,
42
48
  required: true
43
49
  }) readonly profile: IDocHubPresentationProfile;
44
-
45
50
  /**
46
51
  * Параметры
47
52
  */
@@ -49,20 +54,32 @@ export class DocHubDocumentProto extends DocHubComponentProto implements IDocHub
49
54
  type: Object,
50
55
  default: {}
51
56
  }) readonly params: IDocHubPresentationsParams;
52
-
57
+ /**
58
+ * Признак версии для печати
59
+ */
60
+ @Prop({
61
+ type: Boolean,
62
+ default: false
63
+ }) readonly isPrintVersion: boolean;
53
64
  /**
54
65
  * Следим за изменением профиля документа
55
66
  */
56
67
  @Watch('profile') onProfileChanged() {
57
68
  this.onRefresh();
58
69
  }
59
-
60
70
  /**
61
71
  * Следим за изменением параметров
62
72
  */
63
73
  @Watch('params') onParamsChanged() {
64
74
  this.onRefresh();
65
75
  }
76
+ /**
77
+ * Следим за занятостью документа
78
+ */
79
+ @Watch('isPending') onPendingChanged() {
80
+ if (this.isPending) this.freezeView();
81
+ else this.unfreezeView();
82
+ }
66
83
 
67
84
  mounted() {
68
85
  // При монтировании компонента в DOM, генерируем событие обновления
@@ -73,7 +90,6 @@ export class DocHubDocumentProto extends DocHubComponentProto implements IDocHub
73
90
  // Отключаем слежку за файлом
74
91
  this.refreshFilesFollow(true);
75
92
  }
76
-
77
93
  /**
78
94
  * Подтверждаем, что презентация может редактироваться
79
95
  * @returns
@@ -89,7 +105,6 @@ export class DocHubDocumentProto extends DocHubComponentProto implements IDocHub
89
105
  targetPath: this.profile.$base
90
106
  });
91
107
  }
92
-
93
108
  /**
94
109
  * Обработка полученных данных документа.
95
110
  * Можно перехватывать.
@@ -97,7 +112,6 @@ export class DocHubDocumentProto extends DocHubComponentProto implements IDocHub
97
112
  async processingData(data: any): Promise<any> {
98
113
  return data;
99
114
  }
100
-
101
115
  /**
102
116
  * Обработка полученных данных документа.
103
117
  * Нужно переопределить для типа документа DocHubDocumentType.content
@@ -105,7 +119,6 @@ export class DocHubDocumentProto extends DocHubComponentProto implements IDocHub
105
119
  async processingContent(content: AxiosResponse): Promise<void> {
106
120
  throw new DocHubError(`The document has ${this.getType()} type. It must have processingContent method. But, the method is not implemented.`);
107
121
  }
108
-
109
122
  /**
110
123
  * Возвращает список отслеживаемых файлов.
111
124
  * Может быть переопределен.
@@ -115,7 +128,6 @@ export class DocHubDocumentProto extends DocHubComponentProto implements IDocHub
115
128
  async processingFollowFiles(files: string[]): Promise<string[]> {
116
129
  return files;
117
130
  }
118
-
119
131
  /**
120
132
  * Возвращает схему данных для контроля структуры и состава данных.
121
133
  * Необходимо переопределить.
@@ -123,7 +135,6 @@ export class DocHubDocumentProto extends DocHubComponentProto implements IDocHub
123
135
  getSchemaData(): any {
124
136
  return {};
125
137
  }
126
-
127
138
  /**
128
139
  * Возвращает тип документа.
129
140
  * Может быть переопределен.
@@ -131,14 +142,48 @@ export class DocHubDocumentProto extends DocHubComponentProto implements IDocHub
131
142
  getType(): DocHubDocumentType {
132
143
  return DocHubDocumentType.content;
133
144
  }
134
-
135
145
  /**
136
146
  * Обрабатываем событие переключения языкового пакета
137
147
  */
138
148
  onLangSwitch() {
139
149
  this.onRefresh();
140
150
  }
141
-
151
+ /**
152
+ * Сохраняет текущие параметры визуализации для исключения дерганий при обновлении контента
153
+ */
154
+ saveUISate() {
155
+ const element = this['$el'];
156
+ this.savedUIState = {
157
+ styleHeight: element.style.height,
158
+ styleWidth: element.style.styleWidth,
159
+ styleFilter: element.style.filter
160
+ }
161
+ }
162
+ /**
163
+ * Восстанавливает параметры визуализации из ранее сохраненных
164
+ */
165
+ loadUISate() {
166
+ const element = this['$el'];
167
+ element.style.height = this.savedUIState?.styleHeight || element.style.height;
168
+ element.style.width = this.savedUIState?.styleWidth || element.style.width;
169
+ element.style.filter = this.savedUIState?.styleFilter || element.style.filter;
170
+ }
171
+ /**
172
+ * "Замораживает" представление на период обновления
173
+ */
174
+ freezeView() {
175
+ this.saveUISate();
176
+ const element = this['$el'];
177
+ element.style.height = `${element.clientHeight}px !important`;
178
+ element.style.width = `${element.clientWidth}px !important`;
179
+ element.style.filter = 'blur(8px)';
180
+ }
181
+ /**
182
+ * "Размораживает" представление после загрузки
183
+ */
184
+ unfreezeView() {
185
+ this.loadUISate();
186
+ }
142
187
  /**
143
188
  * Для переопределения
144
189
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dochub-sdk",
3
- "version": "0.1.182",
3
+ "version": "0.1.184",
4
4
  "description": "The DocHub System Development Kit.",
5
5
  "private": false,
6
6
  "main": "index.ts",