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.
- package/classes/vue2/Documents.ts +62 -17
- package/package.json +1 -1
@@ -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;
|
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
|
*/
|