Commit 83502dce7bdd98d64bf1f8a3042386efd072b4a5
Merge branch 'ww' into 'main'
feat: implement chart component render && fix some problem See merge request huang/thingskit-drawio!26
Showing
9 changed files
with
135 additions
and
123 deletions
Too many changes to show.
To preserve performance only 9 of 10 files are displayed.
src/main/webapp/images/thingskit/empty.png
0 → 100644
2.41 KB
src/main/webapp/images/thingskit/empty.svg
0 → 100644
1 | +<svg viewBox="0 0 79 86" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><linearGradient id="linearGradient-1-1" x1="38.8503086%" y1="0%" x2="61.1496914%" y2="100%"><stop stop-color="#FCFCFD" offset="0%"></stop><stop stop-color="#EEEFF3" offset="100%"></stop></linearGradient><linearGradient id="linearGradient-2-1" x1="0%" y1="9.5%" x2="100%" y2="90.5%"><stop stop-color="#FCFCFD" offset="0%"></stop><stop stop-color="#E9EBEF" offset="100%"></stop></linearGradient><rect id="path-3-1" x="0" y="0" width="17" height="36"></rect></defs><g id="Illustrations" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g id="B-type" transform="translate(-1268.000000, -535.000000)"><g id="Group-2" transform="translate(1268.000000, 535.000000)"><path id="Oval-Copy-2" d="M39.5,86 C61.3152476,86 79,83.9106622 79,81.3333333 C79,78.7560045 57.3152476,78 35.5,78 C13.6847524,78 0,78.7560045 0,81.3333333 C0,83.9106622 17.6847524,86 39.5,86 Z" fill="#F7F8FC"></path><polygon id="Rectangle-Copy-14" fill="#E5E7E9" transform="translate(27.500000, 51.500000) scale(1, -1) translate(-27.500000, -51.500000) " points="13 58 53 58 42 45 2 45"></polygon><g id="Group-Copy" transform="translate(34.500000, 31.500000) scale(-1, 1) rotate(-25.000000) translate(-34.500000, -31.500000) translate(7.000000, 10.000000)"><polygon id="Rectangle-Copy-10" fill="#E5E7E9" transform="translate(11.500000, 5.000000) scale(1, -1) translate(-11.500000, -5.000000) " points="2.84078316e-14 3 18 3 23 7 5 7"></polygon><polygon id="Rectangle-Copy-11" fill="#EDEEF2" points="-3.69149156e-15 7 38 7 38 43 -3.69149156e-15 43"></polygon><rect id="Rectangle-Copy-12" fill="url(#linearGradient-1-1)" transform="translate(46.500000, 25.000000) scale(-1, 1) translate(-46.500000, -25.000000) " x="38" y="7" width="17" height="36"></rect><polygon id="Rectangle-Copy-13" fill="#F8F9FB" transform="translate(39.500000, 3.500000) scale(-1, 1) translate(-39.500000, -3.500000) " points="24 7 41 7 55 -3.63806207e-12 38 -3.63806207e-12"></polygon></g><rect id="Rectangle-Copy-15" fill="url(#linearGradient-2-1)" x="13" y="45" width="40" height="36"></rect><g id="Rectangle-Copy-17" transform="translate(53.000000, 45.000000)"><mask id="mask-4-1" fill="white"><use xlink:href="#path-3-1"></use></mask><use id="Mask" fill="#E0E3E9" transform="translate(8.500000, 18.000000) scale(-1, 1) translate(-8.500000, -18.000000) " xlink:href="#path-3-1"></use><polygon id="Rectangle-Copy" fill="#D5D7DE" mask="url(#mask-4-1)" transform="translate(12.000000, 9.000000) scale(-1, 1) translate(-12.000000, -9.000000) " points="7 0 24 0 20 18 -1.70530257e-13 16"></polygon></g><polygon id="Rectangle-Copy-18" fill="#F8F9FB" transform="translate(66.000000, 51.500000) scale(-1, 1) translate(-66.000000, -51.500000) " points="62 45 79 45 70 58 53 58"></polygon></g></g></g></svg> |
@@ -5030,6 +5030,9 @@ App.prototype.loadFile = function (id, sameWindow, file, success, force) { | @@ -5030,6 +5030,9 @@ App.prototype.loadFile = function (id, sameWindow, file, success, force) { | ||
5030 | lastModifiedDate: new Date() | 5030 | lastModifiedDate: new Date() |
5031 | }; | 5031 | }; |
5032 | this.openFileHandle(Editor.defaultContent, Editor.configurationName, file, false, fileHandle); | 5032 | this.openFileHandle(Editor.defaultContent, Editor.configurationName, file, false, fileHandle); |
5033 | + // TODO thingsKit 初始化图表 | ||
5034 | + const graph = this.editor.graph | ||
5035 | + Sidebar.prototype.initChartInstance(graph) | ||
5033 | //加载数据结束 | 5036 | //加载数据结束 |
5034 | 5037 | ||
5035 | // if (id == null || id.length == 0) | 5038 | // if (id == null || id.length == 0) |
@@ -8,10 +8,9 @@ | @@ -8,10 +8,9 @@ | ||
8 | * @param {number} x X-coordinate of the point. | 8 | * @param {number} x X-coordinate of the point. |
9 | * @param {number} y Y-coordinate of the point. | 9 | * @param {number} y Y-coordinate of the point. |
10 | */ | 10 | */ |
11 | -LocalFile = function(ui, data, title, temp, fileHandle, desc) | ||
12 | -{ | 11 | +LocalFile = function (ui, data, title, temp, fileHandle, desc) { |
13 | DrawioFile.call(this, ui, data); | 12 | DrawioFile.call(this, ui, data); |
14 | - | 13 | + |
15 | this.title = title; | 14 | this.title = title; |
16 | this.mode = (temp) ? null : App.MODE_DEVICE; | 15 | this.mode = (temp) ? null : App.MODE_DEVICE; |
17 | this.fileHandle = fileHandle; | 16 | this.fileHandle = fileHandle; |
@@ -27,8 +26,7 @@ mxUtils.extend(LocalFile, DrawioFile); | @@ -27,8 +26,7 @@ mxUtils.extend(LocalFile, DrawioFile); | ||
27 | * @param {number} dx X-coordinate of the translation. | 26 | * @param {number} dx X-coordinate of the translation. |
28 | * @param {number} dy Y-coordinate of the translation. | 27 | * @param {number} dy Y-coordinate of the translation. |
29 | */ | 28 | */ |
30 | -LocalFile.prototype.isAutosave = function() | ||
31 | -{ | 29 | +LocalFile.prototype.isAutosave = function () { |
32 | return this.fileHandle != null && !this.invalidFileHandle && DrawioFile.prototype.isAutosave.apply(this, arguments); | 30 | return this.fileHandle != null && !this.invalidFileHandle && DrawioFile.prototype.isAutosave.apply(this, arguments); |
33 | }; | 31 | }; |
34 | 32 | ||
@@ -36,8 +34,7 @@ LocalFile.prototype.isAutosave = function() | @@ -36,8 +34,7 @@ LocalFile.prototype.isAutosave = function() | ||
36 | * Specifies if the autosave checkbox should be shown in the document | 34 | * Specifies if the autosave checkbox should be shown in the document |
37 | * properties dialog. Default is false. | 35 | * properties dialog. Default is false. |
38 | */ | 36 | */ |
39 | -LocalFile.prototype.isAutosaveOptional = function() | ||
40 | -{ | 37 | +LocalFile.prototype.isAutosaveOptional = function () { |
41 | return this.fileHandle != null; | 38 | return this.fileHandle != null; |
42 | }; | 39 | }; |
43 | 40 | ||
@@ -47,8 +44,7 @@ LocalFile.prototype.isAutosaveOptional = function() | @@ -47,8 +44,7 @@ LocalFile.prototype.isAutosaveOptional = function() | ||
47 | * @param {number} dx X-coordinate of the translation. | 44 | * @param {number} dx X-coordinate of the translation. |
48 | * @param {number} dy Y-coordinate of the translation. | 45 | * @param {number} dy Y-coordinate of the translation. |
49 | */ | 46 | */ |
50 | -LocalFile.prototype.getMode = function() | ||
51 | -{ | 47 | +LocalFile.prototype.getMode = function () { |
52 | return this.mode; | 48 | return this.mode; |
53 | }; | 49 | }; |
54 | 50 | ||
@@ -58,8 +54,7 @@ LocalFile.prototype.getMode = function() | @@ -58,8 +54,7 @@ LocalFile.prototype.getMode = function() | ||
58 | * @param {number} dx X-coordinate of the translation. | 54 | * @param {number} dx X-coordinate of the translation. |
59 | * @param {number} dy Y-coordinate of the translation. | 55 | * @param {number} dy Y-coordinate of the translation. |
60 | */ | 56 | */ |
61 | -LocalFile.prototype.getTitle = function() | ||
62 | -{ | 57 | +LocalFile.prototype.getTitle = function () { |
63 | return this.title; | 58 | return this.title; |
64 | }; | 59 | }; |
65 | 60 | ||
@@ -69,8 +64,7 @@ LocalFile.prototype.getTitle = function() | @@ -69,8 +64,7 @@ LocalFile.prototype.getTitle = function() | ||
69 | * @param {number} dx X-coordinate of the translation. | 64 | * @param {number} dx X-coordinate of the translation. |
70 | * @param {number} dy Y-coordinate of the translation. | 65 | * @param {number} dy Y-coordinate of the translation. |
71 | */ | 66 | */ |
72 | -LocalFile.prototype.isRenamable = function() | ||
73 | -{ | 67 | +LocalFile.prototype.isRenamable = function () { |
74 | return true; | 68 | return true; |
75 | }; | 69 | }; |
76 | 70 | ||
@@ -80,8 +74,7 @@ LocalFile.prototype.isRenamable = function() | @@ -80,8 +74,7 @@ LocalFile.prototype.isRenamable = function() | ||
80 | * @param {number} dx X-coordinate of the translation. | 74 | * @param {number} dx X-coordinate of the translation. |
81 | * @param {number} dy Y-coordinate of the translation. | 75 | * @param {number} dy Y-coordinate of the translation. |
82 | */ | 76 | */ |
83 | -LocalFile.prototype.save = function(revision, success, error) | ||
84 | -{ | 77 | +LocalFile.prototype.save = function (revision, success, error) { |
85 | this.saveAs(this.title, success, error); | 78 | this.saveAs(this.title, success, error); |
86 | }; | 79 | }; |
87 | 80 | ||
@@ -91,8 +84,7 @@ LocalFile.prototype.save = function(revision, success, error) | @@ -91,8 +84,7 @@ LocalFile.prototype.save = function(revision, success, error) | ||
91 | * @param {number} dx X-coordinate of the translation. | 84 | * @param {number} dx X-coordinate of the translation. |
92 | * @param {number} dy Y-coordinate of the translation. | 85 | * @param {number} dy Y-coordinate of the translation. |
93 | */ | 86 | */ |
94 | -LocalFile.prototype.saveAs = function(title, success, error) | ||
95 | -{ | 87 | +LocalFile.prototype.saveAs = function (title, success, error) { |
96 | this.saveFile(title, false, success, error); | 88 | this.saveFile(title, false, success, error); |
97 | }; | 89 | }; |
98 | 90 | ||
@@ -102,24 +94,21 @@ LocalFile.prototype.saveAs = function(title, success, error) | @@ -102,24 +94,21 @@ LocalFile.prototype.saveAs = function(title, success, error) | ||
102 | * @param {number} dx X-coordinate of the translation. | 94 | * @param {number} dx X-coordinate of the translation. |
103 | * @param {number} dy Y-coordinate of the translation. | 95 | * @param {number} dy Y-coordinate of the translation. |
104 | */ | 96 | */ |
105 | -LocalFile.prototype.saveAs = function(title, success, error) | ||
106 | -{ | 97 | +LocalFile.prototype.saveAs = function (title, success, error) { |
107 | this.saveFile(title, false, success, error); | 98 | this.saveFile(title, false, success, error); |
108 | }; | 99 | }; |
109 | 100 | ||
110 | /** | 101 | /** |
111 | * Adds all listeners. | 102 | * Adds all listeners. |
112 | */ | 103 | */ |
113 | -LocalFile.prototype.getDescriptor = function() | ||
114 | -{ | 104 | +LocalFile.prototype.getDescriptor = function () { |
115 | return this.desc; | 105 | return this.desc; |
116 | }; | 106 | }; |
117 | 107 | ||
118 | /** | 108 | /** |
119 | * Updates the descriptor of this file with the one from the given file. | 109 | * Updates the descriptor of this file with the one from the given file. |
120 | */ | 110 | */ |
121 | -LocalFile.prototype.setDescriptor = function(desc) | ||
122 | -{ | 111 | +LocalFile.prototype.setDescriptor = function (desc) { |
123 | this.desc = desc; | 112 | this.desc = desc; |
124 | }; | 113 | }; |
125 | 114 | ||
@@ -129,14 +118,11 @@ LocalFile.prototype.setDescriptor = function(desc) | @@ -129,14 +118,11 @@ LocalFile.prototype.setDescriptor = function(desc) | ||
129 | * @param {number} dx X-coordinate of the translation. | 118 | * @param {number} dx X-coordinate of the translation. |
130 | * @param {number} dy Y-coordinate of the translation. | 119 | * @param {number} dy Y-coordinate of the translation. |
131 | */ | 120 | */ |
132 | -LocalFile.prototype.getLatestVersion = function(success, error) | ||
133 | -{ | ||
134 | - if (this.fileHandle == null) | ||
135 | - { | 121 | +LocalFile.prototype.getLatestVersion = function (success, error) { |
122 | + if (this.fileHandle == null) { | ||
136 | success(null); | 123 | success(null); |
137 | } | 124 | } |
138 | - else | ||
139 | - { | 125 | + else { |
140 | this.ui.loadFileSystemEntry(this.fileHandle, success, error); | 126 | this.ui.loadFileSystemEntry(this.fileHandle, success, error); |
141 | } | 127 | } |
142 | }; | 128 | }; |
@@ -147,69 +133,60 @@ LocalFile.prototype.getLatestVersion = function(success, error) | @@ -147,69 +133,60 @@ LocalFile.prototype.getLatestVersion = function(success, error) | ||
147 | * @param {number} dx X-coordinate of the translation. | 133 | * @param {number} dx X-coordinate of the translation. |
148 | * @param {number} dy Y-coordinate of the translation. | 134 | * @param {number} dy Y-coordinate of the translation. |
149 | */ | 135 | */ |
150 | -LocalFile.prototype.saveFile = function(title, revision, success, error, useCurrentData) | ||
151 | -{ | ||
152 | - if (title != this.title) | ||
153 | - { | 136 | +LocalFile.prototype.saveFile = function (title, revision, success, error, useCurrentData) { |
137 | + if (title != this.title) { | ||
154 | this.fileHandle = null; | 138 | this.fileHandle = null; |
155 | this.desc = null; | 139 | this.desc = null; |
156 | } | 140 | } |
157 | - | 141 | + |
158 | this.title = title; | 142 | this.title = title; |
159 | 143 | ||
160 | // Updates data after changing file name | 144 | // Updates data after changing file name |
161 | - if (!useCurrentData) | ||
162 | - { | 145 | + if (!useCurrentData) { |
163 | this.updateFileData(); | 146 | this.updateFileData(); |
164 | } | 147 | } |
165 | - | 148 | + |
166 | var binary = this.ui.useCanvasForExport && /(\.png)$/i.test(this.getTitle()); | 149 | var binary = this.ui.useCanvasForExport && /(\.png)$/i.test(this.getTitle()); |
167 | this.setShadowModified(false); | 150 | this.setShadowModified(false); |
168 | var savedData = this.getData(); | 151 | var savedData = this.getData(); |
169 | - | ||
170 | - var done = mxUtils.bind(this, function() | ||
171 | - { | 152 | + |
153 | + var done = mxUtils.bind(this, function () { | ||
172 | this.setModified(this.getShadowModified()); | 154 | this.setModified(this.getShadowModified()); |
173 | this.contentChanged(); | 155 | this.contentChanged(); |
174 | - | ||
175 | - if (success != null) | ||
176 | - { | 156 | + |
157 | + if (success != null) { | ||
177 | success(); | 158 | success(); |
178 | } | 159 | } |
179 | }); | 160 | }); |
180 | - | ||
181 | - var doSave = mxUtils.bind(this, function(data) | ||
182 | - { | ||
183 | - if (this.fileHandle != null) | ||
184 | - { | 161 | + |
162 | + var doSave = mxUtils.bind(this, function (data) { | ||
163 | + if (this.fileHandle != null) { | ||
185 | // Sets shadow modified state during save | 164 | // Sets shadow modified state during save |
186 | - if (!this.savingFile) | ||
187 | - { | 165 | + if (!this.savingFile) { |
188 | this.savingFileTime = new Date(); | 166 | this.savingFileTime = new Date(); |
189 | this.savingFile = true; | 167 | this.savingFile = true; |
190 | - | ||
191 | - var errorWrapper = mxUtils.bind(this, function(e) | ||
192 | - { | 168 | + |
169 | + var errorWrapper = mxUtils.bind(this, function (e) { | ||
193 | this.savingFile = false; | 170 | this.savingFile = false; |
194 | - | ||
195 | - if (error != null) | ||
196 | - { | 171 | + |
172 | + if (error != null) { | ||
197 | // Wraps error object to offer save status option | 173 | // Wraps error object to offer save status option |
198 | - error({error: e}); | 174 | + error({ error: e }); |
199 | } | 175 | } |
200 | }); | 176 | }); |
201 | - | 177 | + |
202 | // Saves a copy as a draft while saving | 178 | // Saves a copy as a draft while saving |
203 | this.saveDraft(); | 179 | this.saveDraft(); |
204 | // 修改开始 | 180 | // 修改开始 |
205 | - try | ||
206 | - { | 181 | + try { |
207 | //调用API,保存数据到数据库 | 182 | //调用API,保存数据到数据库 |
208 | - var desc = {name: Editor.configurationName, | ||
209 | - type: "", | ||
210 | - webkitRelativePath: "", | ||
211 | - lastModified: new Date().getTime(), | ||
212 | - lastModifiedDate: new Date()}; | 183 | + var desc = { |
184 | + name: Editor.configurationName, | ||
185 | + type: "", | ||
186 | + webkitRelativePath: "", | ||
187 | + lastModified: new Date().getTime(), | ||
188 | + lastModifiedDate: new Date() | ||
189 | + }; | ||
213 | this.savingFile = false; | 190 | this.savingFile = false; |
214 | this.desc = desc; | 191 | this.desc = desc; |
215 | this.fileSaved(savedData, this.desc, done, errorWrapper); | 192 | this.fileSaved(savedData, this.desc, done, errorWrapper); |
@@ -217,17 +194,25 @@ LocalFile.prototype.saveFile = function(title, revision, success, error, useCurr | @@ -217,17 +194,25 @@ LocalFile.prototype.saveFile = function(title, revision, success, error, useCurr | ||
217 | // Deletes draft after saving | 194 | // Deletes draft after saving |
218 | this.removeDraft(); | 195 | this.removeDraft(); |
219 | Editor.defaultContent = savedData; | 196 | Editor.defaultContent = savedData; |
220 | - var configurationContentList=[]; | ||
221 | - var configurationContent = {"name":"第 1 页", | ||
222 | - "id":Editor.configurationContentId,"content":savedData,"type":1}; | 197 | + var configurationContentList = []; |
198 | + const basicAttr = Sidebar.prototype.enumCellBasicAttribute | ||
199 | + const allCell = (this.ui.editor.graph.getDefaultParent().children || []).filter(item => item.getAttribute(basicAttr.COMPONENT_TYPE)) | ||
200 | + const contentId = this.ui.currentPage.node.id | ||
201 | + var configurationContent = { | ||
202 | + name: "第 1 页", | ||
203 | + id: Editor.configurationContentId, | ||
204 | + contentId, | ||
205 | + content: savedData, | ||
206 | + type: 1, | ||
207 | + nodeIds: allCell.map(item => item.id) | ||
208 | + }; | ||
223 | configurationContentList.push(configurationContent); | 209 | configurationContentList.push(configurationContent); |
224 | - var parmam = {"configurationId":Editor.configurationId,"configurationContentList":configurationContentList}; | ||
225 | - defHttp.put("/yt/configuration/content",parmam).then(res=>{ | 210 | + var parmam = { configurationId: Editor.configurationId, configurationContentList }; |
211 | + defHttp.put("/yt/configuration/content", parmam).then(res => { | ||
226 | console.log(res) | 212 | console.log(res) |
227 | }) | 213 | }) |
228 | } | 214 | } |
229 | - catch (e) | ||
230 | - { | 215 | + catch (e) { |
231 | errorWrapper(e); | 216 | errorWrapper(e); |
232 | } | 217 | } |
233 | // 修改结束 | 218 | // 修改结束 |
@@ -277,20 +262,16 @@ LocalFile.prototype.saveFile = function(title, revision, success, error, useCurr | @@ -277,20 +262,16 @@ LocalFile.prototype.saveFile = function(title, revision, success, error, useCurr | ||
277 | // }), errorWrapper); | 262 | // }), errorWrapper); |
278 | } | 263 | } |
279 | } | 264 | } |
280 | - else | ||
281 | - { | ||
282 | - if (this.ui.isOfflineApp() || this.ui.isLocalFileSave()) | ||
283 | - { | 265 | + else { |
266 | + if (this.ui.isOfflineApp() || this.ui.isLocalFileSave()) { | ||
284 | this.ui.doSaveLocalFile(data, title, (binary) ? | 267 | this.ui.doSaveLocalFile(data, title, (binary) ? |
285 | 'image/png' : 'text/xml', binary); | 268 | 'image/png' : 'text/xml', binary); |
286 | } | 269 | } |
287 | - else | ||
288 | - { | ||
289 | - if (data.length < MAX_REQUEST_SIZE) | ||
290 | - { | 270 | + else { |
271 | + if (data.length < MAX_REQUEST_SIZE) { | ||
291 | var dot = title.lastIndexOf('.'); | 272 | var dot = title.lastIndexOf('.'); |
292 | var format = (dot > 0) ? title.substring(dot + 1) : 'xml'; | 273 | var format = (dot > 0) ? title.substring(dot + 1) : 'xml'; |
293 | - | 274 | + |
294 | // Do not update modified flag | 275 | // Do not update modified flag |
295 | new mxXmlRequest(SAVE_URL, 'format=' + format + | 276 | new mxXmlRequest(SAVE_URL, 'format=' + format + |
296 | '&xml=' + encodeURIComponent(data) + | 277 | '&xml=' + encodeURIComponent(data) + |
@@ -298,31 +279,26 @@ LocalFile.prototype.saveFile = function(title, revision, success, error, useCurr | @@ -298,31 +279,26 @@ LocalFile.prototype.saveFile = function(title, revision, success, error, useCurr | ||
298 | ((binary) ? '&binary=1' : '')). | 279 | ((binary) ? '&binary=1' : '')). |
299 | simulate(document, '_blank'); | 280 | simulate(document, '_blank'); |
300 | } | 281 | } |
301 | - else | ||
302 | - { | ||
303 | - this.ui.handleError({message: mxResources.get('drawingTooLarge')}, mxResources.get('error'), mxUtils.bind(this, function() | ||
304 | - { | 282 | + else { |
283 | + this.ui.handleError({ message: mxResources.get('drawingTooLarge') }, mxResources.get('error'), mxUtils.bind(this, function () { | ||
305 | mxUtils.popup(data); | 284 | mxUtils.popup(data); |
306 | })); | 285 | })); |
307 | } | 286 | } |
308 | } | 287 | } |
309 | - | 288 | + |
310 | done(); | 289 | done(); |
311 | } | 290 | } |
312 | }); | 291 | }); |
313 | - | ||
314 | - if (binary) | ||
315 | - { | 292 | + |
293 | + if (binary) { | ||
316 | var p = this.ui.getPngFileProperties(this.ui.fileNode); | 294 | var p = this.ui.getPngFileProperties(this.ui.fileNode); |
317 | 295 | ||
318 | - this.ui.getEmbeddedPng(mxUtils.bind(this, function(imageData) | ||
319 | - { | 296 | + this.ui.getEmbeddedPng(mxUtils.bind(this, function (imageData) { |
320 | doSave(imageData); | 297 | doSave(imageData); |
321 | }), error, (this.ui.getCurrentFile() != this) ? | 298 | }), error, (this.ui.getCurrentFile() != this) ? |
322 | savedData : null, p.scale, p.border); | 299 | savedData : null, p.scale, p.border); |
323 | } | 300 | } |
324 | - else | ||
325 | - { | 301 | + else { |
326 | doSave(savedData); | 302 | doSave(savedData); |
327 | } | 303 | } |
328 | }; | 304 | }; |
@@ -333,13 +309,11 @@ LocalFile.prototype.saveFile = function(title, revision, success, error, useCurr | @@ -333,13 +309,11 @@ LocalFile.prototype.saveFile = function(title, revision, success, error, useCurr | ||
333 | * @param {number} dx X-coordinate of the translation. | 309 | * @param {number} dx X-coordinate of the translation. |
334 | * @param {number} dy Y-coordinate of the translation. | 310 | * @param {number} dy Y-coordinate of the translation. |
335 | */ | 311 | */ |
336 | -LocalFile.prototype.rename = function(title, success, error) | ||
337 | -{ | 312 | +LocalFile.prototype.rename = function (title, success, error) { |
338 | this.title = title; | 313 | this.title = title; |
339 | this.descriptorChanged(); | 314 | this.descriptorChanged(); |
340 | - | ||
341 | - if (success != null) | ||
342 | - { | 315 | + |
316 | + if (success != null) { | ||
343 | success(); | 317 | success(); |
344 | } | 318 | } |
345 | }; | 319 | }; |
@@ -348,8 +322,7 @@ LocalFile.prototype.rename = function(title, success, error) | @@ -348,8 +322,7 @@ LocalFile.prototype.rename = function(title, success, error) | ||
348 | * Returns the location as a new object. | 322 | * Returns the location as a new object. |
349 | * @type mx.Point | 323 | * @type mx.Point |
350 | */ | 324 | */ |
351 | -LocalFile.prototype.open = function() | ||
352 | -{ | 325 | +LocalFile.prototype.open = function () { |
353 | this.ui.setFileData(this.getData()); | 326 | this.ui.setFileData(this.getData()); |
354 | this.installListeners(); | 327 | this.installListeners(); |
355 | }; | 328 | }; |
@@ -993,6 +993,14 @@ EditorUi.prototype.selectPage = function(page, quiet, viewState) | @@ -993,6 +993,14 @@ EditorUi.prototype.selectPage = function(page, quiet, viewState) | ||
993 | catch (e) | 993 | catch (e) |
994 | { | 994 | { |
995 | this.handleError(e); | 995 | this.handleError(e); |
996 | + } finally { | ||
997 | + // TODO thingskit instance chart | ||
998 | + Sidebar.prototype.chartsInstanceMapping.forEach(item => { | ||
999 | + item.dispose() | ||
1000 | + }) | ||
1001 | + Sidebar.prototype.chartsInstanceMapping.clear() | ||
1002 | + const graph = this.editor.graph | ||
1003 | + Sidebar.prototype.initChartInstance(graph) | ||
996 | } | 1004 | } |
997 | }; | 1005 | }; |
998 | 1006 | ||
@@ -2079,4 +2087,4 @@ EditorUi.prototype.createPageMenu = function(page, label) | @@ -2079,4 +2087,4 @@ EditorUi.prototype.createPageMenu = function(page, label) | ||
2079 | }; | 2087 | }; |
2080 | 2088 | ||
2081 | mxCodecRegistry.register(codec); | 2089 | mxCodecRegistry.register(codec); |
2082 | -})(); | ||
2090 | +})(); |
@@ -166,7 +166,12 @@ | @@ -166,7 +166,12 @@ | ||
166 | /** | 166 | /** |
167 | * @description 组件类型 | 167 | * @description 组件类型 |
168 | */ | 168 | */ |
169 | - COMPONENT_TYPE: 'componentType' | 169 | + COMPONENT_TYPE: 'componentType', |
170 | + | ||
171 | + /** | ||
172 | + * @description 图表实例ID | ||
173 | + */ | ||
174 | + CHART_INSTANCE_ID: 'chartInstanceId' | ||
170 | } | 175 | } |
171 | 176 | ||
172 | /** | 177 | /** |
@@ -248,7 +253,9 @@ | @@ -248,7 +253,9 @@ | ||
248 | */ | 253 | */ |
249 | Sidebar.prototype.enumPermissionPanel = { | 254 | Sidebar.prototype.enumPermissionPanel = { |
250 | DATA_SOURCE: 'dataSource', | 255 | DATA_SOURCE: 'dataSource', |
251 | - DISPLAY_TYPE: 'displayType', | 256 | + // DISPLAY_TYPE: 'displayType', |
257 | + LINE_CHART_EXPAND: 'lineChartExpandDataSource', | ||
258 | + BAR_CHART_EXPAND: 'barChartExpandDataSource', | ||
252 | INTERACTION: 'interaction', | 259 | INTERACTION: 'interaction', |
253 | DYNAMIC_EFFECT: 'dynamicEffect', | 260 | DYNAMIC_EFFECT: 'dynamicEffect', |
254 | VAR_IMAGE: 'variableImage' | 261 | VAR_IMAGE: 'variableImage' |
@@ -596,6 +603,7 @@ | @@ -596,6 +603,7 @@ | ||
596 | // Defines all entries for the sidebar. This is used in the MoreShapes dialog. Create screenshots using the savesidebar URL parameter and | 603 | // Defines all entries for the sidebar. This is used in the MoreShapes dialog. Create screenshots using the savesidebar URL parameter and |
597 | // http://www.alderg.com/merge.html for creating a vertical stack of PNG images if multiple sidebars are part of an entry. | 604 | // http://www.alderg.com/merge.html for creating a vertical stack of PNG images if multiple sidebars are part of an entry. |
598 | //更多图形里面的加载,可以加载自己定义的图形库,同时要提供对应的图片 | 605 | //更多图形里面的加载,可以加载自己定义的图形库,同时要提供对应的图片 |
606 | + var stdEntries = [] | ||
599 | // var stdEntries = [{title: mxResources.get('general'), id: 'general', image: IMAGE_PATH + '/sidebar-general.png'}, | 607 | // var stdEntries = [{title: mxResources.get('general'), id: 'general', image: IMAGE_PATH + '/sidebar-general.png'}, |
600 | // {title: mxResources.get('basic'), id: 'basic', image: IMAGE_PATH + '/sidebar-basic.png'}, | 608 | // {title: mxResources.get('basic'), id: 'basic', image: IMAGE_PATH + '/sidebar-basic.png'}, |
601 | // {title: mxResources.get('arrows'), id: 'arrows2', image: IMAGE_PATH + '/sidebar-arrows2.png'}, | 609 | // {title: mxResources.get('arrows'), id: 'arrows2', image: IMAGE_PATH + '/sidebar-arrows2.png'}, |
@@ -604,7 +612,7 @@ | @@ -604,7 +612,7 @@ | ||
604 | //更多图形,显示出来的的标题跟id,同时包括图片 | 612 | //更多图形,显示出来的的标题跟id,同时包括图片 |
605 | 613 | ||
606 | // TODO thingsKit 设置数据绑定展示面板 | 614 | // TODO thingsKit 设置数据绑定展示面板 |
607 | - const { DISPLAY_TYPE, DYNAMIC_EFFECT, DATA_SOURCE, VAR_IMAGE, INTERACTION } = this.enumPermissionPanel | 615 | + const { LINE_CHART_EXPAND, BAR_CHART_EXPAND, DYNAMIC_EFFECT, DATA_SOURCE, VAR_IMAGE, INTERACTION } = this.enumPermissionPanel |
608 | const { LINE, LINE_CHART, REAL_TIME, TITLE, VARIABLE, DEFAULT, BAR_CHART } = this.enumComponentType | 616 | const { LINE, LINE_CHART, REAL_TIME, TITLE, VARIABLE, DEFAULT, BAR_CHART } = this.enumComponentType |
609 | this.setComponentPermission(LINE, [DYNAMIC_EFFECT]) | 617 | this.setComponentPermission(LINE, [DYNAMIC_EFFECT]) |
610 | this.setComponentPermission(DEFAULT, [DYNAMIC_EFFECT]) | 618 | this.setComponentPermission(DEFAULT, [DYNAMIC_EFFECT]) |
@@ -612,8 +620,8 @@ | @@ -612,8 +620,8 @@ | ||
612 | this.setComponentPermission(TITLE, [INTERACTION, DYNAMIC_EFFECT]) | 620 | this.setComponentPermission(TITLE, [INTERACTION, DYNAMIC_EFFECT]) |
613 | this.setComponentPermission(VAR_IMAGE, [DATA_SOURCE, INTERACTION, VAR_IMAGE]) | 621 | this.setComponentPermission(VAR_IMAGE, [DATA_SOURCE, INTERACTION, VAR_IMAGE]) |
614 | this.setComponentPermission(VARIABLE, [DATA_SOURCE, INTERACTION, DYNAMIC_EFFECT]) | 622 | this.setComponentPermission(VARIABLE, [DATA_SOURCE, INTERACTION, DYNAMIC_EFFECT]) |
615 | - this.setComponentPermission(BAR_CHART, [DATA_SOURCE, DISPLAY_TYPE, DYNAMIC_EFFECT]) | ||
616 | - this.setComponentPermission(LINE_CHART, [DATA_SOURCE, DISPLAY_TYPE, DYNAMIC_EFFECT]) | 623 | + this.setComponentPermission(BAR_CHART, [DATA_SOURCE, BAR_CHART_EXPAND, DYNAMIC_EFFECT]) |
624 | + this.setComponentPermission(LINE_CHART, [DATA_SOURCE, LINE_CHART_EXPAND, DYNAMIC_EFFECT]) | ||
617 | 625 | ||
618 | var thingskitEntries = [ | 626 | var thingskitEntries = [ |
619 | { title: "风机", id: 'fan', image: IMAGE_PATH + '/thingskit/风机.png' }, | 627 | { title: "风机", id: 'fan', image: IMAGE_PATH + '/thingskit/风机.png' }, |
@@ -36,7 +36,7 @@ | @@ -36,7 +36,7 @@ | ||
36 | return this.createEdgeTemplateFromCells([ cell ], 60, 40, '线条'); | 36 | return this.createEdgeTemplateFromCells([ cell ], 60, 40, '线条'); |
37 | })), | 37 | })), |
38 | this.addEntry('real time', mxUtils.bind(this, function () { | 38 | this.addEntry('real time', mxUtils.bind(this, function () { |
39 | - const template = `<div class="thingKit-component__real-time"><div class="real-time__date"></div> <div style="font-size:30px" class="real-time__now">时间</div></div>` | 39 | + const template = `<div class="thingKit-component__real-time"><div class="real-time__date">%currentDate%</div> <div style="font-size:30px" class="real-time__now">HH:mm:ss</div></div>` |
40 | const cell = new mxCell(template, new mxGeometry(0, 0, 180, 60), 'text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;overflow=hidden;'); | 40 | const cell = new mxCell(template, new mxGeometry(0, 0, 180, 60), 'text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;overflow=hidden;'); |
41 | cell.vertex = true; | 41 | cell.vertex = true; |
42 | this.setCellAttributes(cell, { | 42 | this.setCellAttributes(cell, { |
@@ -24,7 +24,7 @@ | @@ -24,7 +24,7 @@ | ||
24 | /** | 24 | /** |
25 | * @description cell id key | 25 | * @description cell id key |
26 | */ | 26 | */ |
27 | - CHART_CELL_ID: 'chartInstanceId', | 27 | + CHART_INSTANCE_ID: 'chartInstanceId', |
28 | 28 | ||
29 | /** | 29 | /** |
30 | * @description 图表容器 class name | 30 | * @description 图表容器 class name |
@@ -143,7 +143,7 @@ | @@ -143,7 +143,7 @@ | ||
143 | const basicAttr = this.enumCellBasicAttribute | 143 | const basicAttr = this.enumCellBasicAttribute |
144 | this.setCellAttributes(cell, { | 144 | this.setCellAttributes(cell, { |
145 | [basicAttr.COMPONENT_TYPE]: chartType, | 145 | [basicAttr.COMPONENT_TYPE]: chartType, |
146 | - [enumConst.CHART_CELL_ID]: id, | 146 | + [basicAttr.CHART_INSTANCE_ID]: id, |
147 | [enumConst.CHART_CELL_WIDTH]: width, | 147 | [enumConst.CHART_CELL_WIDTH]: width, |
148 | [enumConst.CHART_CELL_HEIGHT]: height, | 148 | [enumConst.CHART_CELL_HEIGHT]: height, |
149 | }) | 149 | }) |
@@ -194,6 +194,7 @@ | @@ -194,6 +194,7 @@ | ||
194 | const chartOptionMapping = this.chartOptionMapping | 194 | const chartOptionMapping = this.chartOptionMapping |
195 | const chartsInstanceMapping = this.chartsInstanceMapping | 195 | const chartsInstanceMapping = this.chartsInstanceMapping |
196 | const chartDom = document.getElementById(id); | 196 | const chartDom = document.getElementById(id); |
197 | + if (!chartDom) return | ||
197 | chartDom.style.width = `${width}px` | 198 | chartDom.style.width = `${width}px` |
198 | chartDom.style.height = `${height}px` | 199 | chartDom.style.height = `${height}px` |
199 | const myChart = echarts.init(chartDom); | 200 | const myChart = echarts.init(chartDom); |
@@ -208,7 +209,8 @@ | @@ -208,7 +209,8 @@ | ||
208 | * @returns {*} | 209 | * @returns {*} |
209 | */ | 210 | */ |
210 | Sidebar.prototype.getCellId = function (cell) { | 211 | Sidebar.prototype.getCellId = function (cell) { |
211 | - return this.graph.getAttributeForCell(cell, enumConst.CHART_CELL_ID) | 212 | + const basicAttr = this.enumCellBasicAttribute |
213 | + return this.graph.getAttributeForCell(cell, basicAttr.CHART_INSTANCE_ID) | ||
212 | } | 214 | } |
213 | 215 | ||
214 | /** | 216 | /** |
@@ -238,7 +240,7 @@ | @@ -238,7 +240,7 @@ | ||
238 | const id = self.generatorChartsId() | 240 | const id = self.generatorChartsId() |
239 | const geo = Object.assign(graph.model.getGeometry(cell), { width: 400, height: 400 }) | 241 | const geo = Object.assign(graph.model.getGeometry(cell), { width: 400, height: 400 }) |
240 | cell.setGeometry(geo) | 242 | cell.setGeometry(geo) |
241 | - self.graph.setAttributeForCell(cell, enumConst.CHART_CELL_ID, id); | 243 | + self.graph.setAttributeForCell(cell, basicAttr.CHART_INSTANCE_ID, id); |
242 | self.graph.setAttributeForCell(cell, enumConst.CHART_CELL_WIDTH, enumConst.CHART_CELL_DEFAULT_WIDTH); | 244 | self.graph.setAttributeForCell(cell, enumConst.CHART_CELL_WIDTH, enumConst.CHART_CELL_DEFAULT_WIDTH); |
243 | self.graph.setAttributeForCell(cell, enumConst.CHART_CELL_HEIGHT, enumConst.CHART_CELL_DEFAULT_HEIGHT); | 245 | self.graph.setAttributeForCell(cell, enumConst.CHART_CELL_HEIGHT, enumConst.CHART_CELL_DEFAULT_HEIGHT); |
244 | self.graph.setAttributeForCell(cell, 'label', self.createChartsNode(id)) | 246 | self.graph.setAttributeForCell(cell, 'label', self.createChartsNode(id)) |
@@ -281,7 +283,8 @@ | @@ -281,7 +283,8 @@ | ||
281 | self.graph.setAttributeForCell(cell, enumConst.CHART_CELL_WIDTH, width) | 283 | self.graph.setAttributeForCell(cell, enumConst.CHART_CELL_WIDTH, width) |
282 | self.graph.setAttributeForCell(cell, enumConst.CHART_CELL_HEIGHT, height) | 284 | self.graph.setAttributeForCell(cell, enumConst.CHART_CELL_HEIGHT, height) |
283 | const instance = chartsInstanceMapping.get(id) | 285 | const instance = chartsInstanceMapping.get(id) |
284 | - instance.resize() | 286 | + |
287 | + instance && instance.resize() | ||
285 | } | 288 | } |
286 | cellResized.apply(this, arguments) | 289 | cellResized.apply(this, arguments) |
287 | } | 290 | } |
@@ -327,10 +330,10 @@ | @@ -327,10 +330,10 @@ | ||
327 | */ | 330 | */ |
328 | Sidebar.prototype.initChartInstance = function (graph) { | 331 | Sidebar.prototype.initChartInstance = function (graph) { |
329 | const basicAttr = this.enumCellBasicAttribute | 332 | const basicAttr = this.enumCellBasicAttribute |
330 | - const allCell = graph.getDefaultParent().children | 333 | + const allCell = graph.getDefaultParent().children || [] |
331 | const domIdMapping = new Map() | 334 | const domIdMapping = new Map() |
332 | for (const cell of allCell) { | 335 | for (const cell of allCell) { |
333 | - const chartInstanceId = graph.getAttributeForCell(cell, enumConst.CHART_CELL_ID) | 336 | + const chartInstanceId = graph.getAttributeForCell(cell, basicAttr.CHART_INSTANCE_ID) |
334 | if (Sidebar.prototype.isChartCell(cell) && chartInstanceId) { | 337 | if (Sidebar.prototype.isChartCell(cell) && chartInstanceId) { |
335 | const width = graph.getAttributeForCell(cell, enumConst.CHART_CELL_WIDTH) | 338 | const width = graph.getAttributeForCell(cell, enumConst.CHART_CELL_WIDTH) |
336 | const height = graph.getAttributeForCell(cell, enumConst.CHART_CELL_HEIGHT) | 339 | const height = graph.getAttributeForCell(cell, enumConst.CHART_CELL_HEIGHT) |
@@ -352,15 +355,17 @@ | @@ -352,15 +355,17 @@ | ||
352 | /** | 355 | /** |
353 | * @description 初始化图表 | 356 | * @description 初始化图表 |
354 | */ | 357 | */ |
355 | - const openFileHandle = EditorUi.prototype.openFileHandle | ||
356 | - EditorUi.prototype.openFileHandle = function () { | ||
357 | - try { | ||
358 | - openFileHandle.apply(this, arguments) | ||
359 | - } finally { | ||
360 | - const graph = this.editor.graph | ||
361 | - Sidebar.prototype.initChartInstance(graph) | ||
362 | - } | ||
363 | - } | 358 | + // const openFileHandle = EditorUi.prototype.openFileHandle |
359 | + // EditorUi.prototype.openFileHandle = function () { | ||
360 | + // console.log('enter open file') | ||
361 | + // try { | ||
362 | + // openFileHandle.apply(this, arguments) | ||
363 | + // } finally { | ||
364 | + // console.log('openFileHandle') | ||
365 | + // const graph = this.editor.graph | ||
366 | + // Sidebar.prototype.initChartInstance(graph) | ||
367 | + // } | ||
368 | + // } | ||
364 | 369 | ||
365 | /** | 370 | /** |
366 | * @description 实例化 echarts | 371 | * @description 实例化 echarts |
@@ -372,5 +377,17 @@ | @@ -372,5 +377,17 @@ | ||
372 | Sidebar.prototype.initChartInstance(this) | 377 | Sidebar.prototype.initChartInstance(this) |
373 | } | 378 | } |
374 | } | 379 | } |
380 | + | ||
381 | + // const selectPage = EditorUi.prototype.selectPage | ||
382 | + // EditorUi.prototype.selectPage = function () { | ||
383 | + // try { | ||
384 | + // selectPage.apply(this, arguments) | ||
385 | + | ||
386 | + // } finally { | ||
387 | + // Sidebar.prototype.chartsInstanceMapping.clear() | ||
388 | + // const graph = this.editor.graph | ||
389 | + // Sidebar.prototype.initChartInstance(graph) | ||
390 | + // } | ||
391 | + // } | ||
375 | })(); | 392 | })(); |
376 | 393 |
@@ -3379,6 +3379,8 @@ EditorUi.prototype.lightboxFit = function(maxHeight) | @@ -3379,6 +3379,8 @@ EditorUi.prototype.lightboxFit = function(maxHeight) | ||
3379 | this.editor.graph.maxFitScale = this.lightboxMaxFitScale; | 3379 | this.editor.graph.maxFitScale = this.lightboxMaxFitScale; |
3380 | this.editor.graph.fit(border, null, null, null, null, null, maxHeight); | 3380 | this.editor.graph.fit(border, null, null, null, null, null, maxHeight); |
3381 | this.editor.graph.maxFitScale = null; | 3381 | this.editor.graph.maxFitScale = null; |
3382 | + // TODO thingsKit lightbox 默认缩放为1 | ||
3383 | + this.editor.graph.view.setScale(1); | ||
3382 | } | 3384 | } |
3383 | }; | 3385 | }; |
3384 | 3386 |