Gaudenz Alder 6 éve
szülő
commit
308727d218

+ 7 - 0
ChangeLog

@@ -1,3 +1,10 @@
+14-MAR-2019: 10.4.6
+
+- Adds warning dialog for failed autosave after 10 minutes
+- Improves error logging in Google Drive client
+- Improves error handling for auto conversion
+- Fixes shadow for PNG export in dark mode
+
 13-MAR-2019: 10.4.5
 
 - Fixes bug in Confluence cloud

+ 1 - 1
VERSION

@@ -1 +1 @@
-10.4.5
+10.4.6

+ 1 - 1
src/main/webapp/cache.manifest

@@ -1,7 +1,7 @@
 CACHE MANIFEST
 
 # THIS FILE WAS GENERATED. DO NOT MODIFY!
-# 03/13/2019 01:31 PM
+# 03/14/2019 11:48 AM
 
 app.html
 index.html?offline=1

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 826 - 821
src/main/webapp/js/app.min.js


+ 4 - 11
src/main/webapp/js/diagramly/App.js

@@ -25,7 +25,7 @@ App = function(editor, container, lightbox)
 			
 			if (file != null && file.constructor == DriveFile && file.isModified() && this.drive != null)
 			{
-				EditorUi.logEvent({category: 'DISCARD-SAVE-GOOGLE-' + file.getId() + '.' +
+				EditorUi.logEvent({category: 'DISCARD-SAVE-FILE-' + file.getHash() + '.' +
 					file.desc.headRevisionId + '.' + file.desc.modifiedDate,
 					action: 'time-' + new Date().toISOString() + '-saved-' +
 					((file.lastSaved != null) ? file.lastSaved.toISOString() : 'never'),
@@ -1195,7 +1195,7 @@ App.prototype.init = function()
 			var timeoutThread = window.setTimeout(mxUtils.bind(this, function()
 			{
 				acceptResponse = false;
-				EditorUi.logEvent({category: 'Cache', action: 'alive', label: 408});
+				EditorUi.logEvent({category: 'TIMEOUT-CACHE-CHECK', action: 'timeout', label: 408});
 			}), this.timeout);
 			
 			var t0 = new Date().getTime();
@@ -1206,7 +1206,7 @@ App.prototype.init = function()
 				
 				if (acceptResponse)
 				{
-					EditorUi.logEvent({category: 'Cache', action: 'alive', label:
+					EditorUi.logEvent({category: 'ALIVE-CACHE-CHECK', action: 'alive', label:
 						req.getStatus() + '.' + (new Date().getTime() - t0)});
 				}
 			}));
@@ -2128,14 +2128,7 @@ App.prototype.load = function()
 						if (urlParams['convert-realtime'] == '1')
 						{
 							this.spinner.stop();
-							
-							this.confirm('You are about to convert realtime files', mxUtils.bind(this, function()
-							{
-								this.drive.convertRealtimeFiles();
-							}), mxUtils.bind(this, function()
-							{
-								this.start();
-							}));
+							this.drive.convertRealtimeFiles();
 						}
 						else
 						{

+ 66 - 3
src/main/webapp/js/diagramly/DrawioFile.js

@@ -89,6 +89,22 @@ DrawioFile.prototype.autosaveThread = null;
  */
 DrawioFile.prototype.lastAutosave = null;
 
+/**
+ * Stores the timestamp for hte last autosave.
+ */
+DrawioFile.prototype.lastSaved = null;
+
+/**
+ * Stores the timestamp for hte last autosave.
+ */
+DrawioFile.prototype.lastWarned = null;
+
+/**
+ * Interal to show dialog for unsaved data with autosave.
+ * Default is 600000 (10 minutes).
+ */
+DrawioFile.prototype.warnInterval = 600000;
+
 /**
  * Stores the modified state.
  */
@@ -490,8 +506,19 @@ DrawioFile.prototype.checksumError = function(error, patches, details, etag, fun
 			var user = this.getCurrentUser();
 			var uid = (user != null) ? user.id : 'unknown';
 			
-			EditorUi.logError('Checksum Error in ' + functionName, null,
-				this.getMode() + '.' + this.getId(), uid);
+			EditorUi.logError('Checksum Error in ' + functionName + ' ' + this.getId(),
+				null, this.getMode() + '.' + this.getId(), uid);
+			
+			// Logs checksum error for file
+			try
+			{
+				EditorUi.logEvent({category: 'CHECKSUM-ERROR-SYNC-FILE-' + this.getHash(),
+					action: functionName, label: uid});
+			}
+			catch (e)
+			{
+				// ignore
+			}
 		}
 	}
 	catch (e)
@@ -1576,6 +1603,42 @@ DrawioFile.prototype.handleFileError = function(err, manual)
 					mxUtils.htmlEntities(mxResources.get('error')) +
 					((msg != null) ? ' (' + mxUtils.htmlEntities(msg) + ')' : '') + '</div>');
 			}
+			else if (this.isModified() && !manual && this.isAutosave())
+			{
+				if (this.lastWarned == null)
+				{
+					this.lastWarned = Date.now();
+				}
+				else if (Date.now() - this.lastWarned > this.warnInterval)
+				{
+					var msg = '';
+					
+					if (this.lastSaved != null)
+					{
+						var str = this.ui.timeSince(new Date(this.lastSaved));
+					
+						// Only show if more than a minute ago
+						if (str != null)
+						{
+							msg = mxResources.get('lastSaved', [str]);
+						}
+					}
+					
+					this.ui.showError(mxResources.get('unsavedChanges'), msg, mxResources.get('ignore'),
+						mxUtils.bind(this, function()
+						{
+							this.lastWarned = Date.now();
+							this.ui.hideDialog();
+							EditorUi.logEvent({category: 'IGNORE-WARN-SAVE-FILE-' + this.getHash(), action: 'ignore'});
+						}), null, mxResources.get('save'), mxUtils.bind(this, function()
+						{
+							this.lastWarned = Date.now();
+							this.ui.actions.get((this.ui.mode == null || !this.isEditable()) ?
+								'saveAs' : 'save').funct();
+							EditorUi.logEvent({category: 'SAVE-WARN-SAVE-FILE-' + this.getHash(), action: 'save'});
+						}), null, null, 360, 120);
+				}
+			}
 		}
 	}
 };
@@ -1936,7 +1999,7 @@ DrawioFile.prototype.destroy = function()
 			var user = this.getCurrentUser();
 			var uid = (user != null) ? user.id : 'unknown';
 		
-			EditorUi.logEvent({category: 'RT-END-' + DrawioFile.SYNC,
+			EditorUi.logEvent({category: DrawioFile.SYNC + '-DESTROY-FILE-' + DrawioFile.SYNC,
 				action: 'file-' + this.getId() +
 				'-mode-' + this.getMode() +
 				'-size-' + this.getSize() +

+ 22 - 0
src/main/webapp/js/diagramly/DrawioFileSync.js

@@ -942,6 +942,17 @@ DrawioFileSync.prototype.merge = function(patches, checksum, desc, success, erro
 				this.file.patch(patches,
 					(DrawioFile.LAST_WRITE_WINS) ?
 					this.file.backupPatch : null);
+				
+				// Logs successull patch
+				try
+				{
+					EditorUi.logEvent({category: 'PATCH-SYNC-FILE-' + this.file.getHash(),
+						action: 'DrawioFileSync.merge', label: this.clientId});
+				}
+				catch (e)
+				{
+					// ignore
+				}
 			}
 		}
 
@@ -1100,6 +1111,17 @@ DrawioFileSync.prototype.fileSaved = function(pages, lastDesc, success, error)
 					'from', etag, 'to', current, data.length,
 					'bytes', 'diff', diff, 'checksum', checksum);
 			}
+			
+			// Logs successull diff
+			try
+			{
+				EditorUi.logEvent({category: 'DIFF-SYNC-FILE-' + this.file.getHash(),
+					action: 'DrawioFileSync.fileSaved', label: this.clientId});
+			}
+			catch (e)
+			{
+				// ignore
+			}
 		}
 	}
 	

+ 184 - 136
src/main/webapp/js/diagramly/DriveClient.js

@@ -1060,10 +1060,13 @@ DriveClient.prototype.saveFile = function(file, revision, success, errFn, noChec
 		// Logs failed save
 		try
 		{
-			EditorUi.logEvent({category: 'FAIL-SAVE-GOOGLE-' + file.desc.id  + '.' +
-				file.desc.headRevisionId + '.' + file.desc.modifiedDate,
-				action: 'error-' + file.getErrorMessage(e),
-				label: (this.user != null) ? this.user.id : 'unknown-user'});
+			if (!file.isConflict(e))
+			{
+				EditorUi.logEvent({category: 'ERROR-SAVE-FILE-' + file.getHash()  + '.' +
+					file.desc.headRevisionId + '.' + file.desc.modifiedDate,
+					action: 'error-' + file.getErrorMessage(e),
+					label: (this.user != null) ? this.user.id : 'unknown-user'});
+			}
 		}
 		catch (e)
 		{
@@ -1098,6 +1101,7 @@ DriveClient.prototype.saveFile = function(file, revision, success, errFn, noChec
 		if (file.isEditable() && file.desc != null)
 		{
 			var t0 = new Date().getTime();
+			var etag0 = file.desc.etag;
 			var mod0 = file.desc.modifiedDate;
 			var head0 = file.desc.headRevisionId;
 			var saveAsPng = this.ui.useCanvasForExport && /(\.png)$/i.test(file.getTitle());
@@ -1194,7 +1198,7 @@ DriveClient.prototype.saveFile = function(file, revision, success, errFn, noChec
 							// Checks if modified time is in the future and head revision has changed
 							var delta = new Date(resp.modifiedDate).getTime() - new Date(mod0).getTime();
 							
-							if (delta <= 0 || (revision && head0 == resp.headRevisionId))
+							if (delta <= 0 || etag0 == resp.etag || (revision && head0 == resp.headRevisionId))
 							{
 								error({message: mxResources.get('errorSavingFile')});
 								
@@ -1206,10 +1210,11 @@ DriveClient.prototype.saveFile = function(file, revision, success, errFn, noChec
 										'\n\nBrowser=' + navigator.userAgent +
 										'\nFile=' + file.desc.id + ' ' + file.desc.mimeType +
 										'\nUser=' + ((this.user != null) ? this.user.id : 'unknown') +
-										'\nOld Rev=' + head0 + ' ' + mod0 +
-										'\nNew Rev=' + resp.headRevisionId + ' ' + resp.modifiedDate);
-									EditorUi.logError('Critical: Error saving to Google Drive',
-										null, file.desc.id + '.' + file.desc.headRevisionId,
+										'\nOld=' + head0 + ' ' + mod0 + ' etag-hash=' + this.ui.hashValue(etag0) +
+										'\nNew=' + resp.headRevisionId + ' ' + resp.modifiedDate + '  etag-hash=' + this.ui.hashValue(resp.etag))
+									EditorUi.logError('Critical: Error saving to Google Drive ' + file.desc.id,
+										null, 'from-' + head0 + '.' + mod0 + '-' + this.ui.hashValue(etag0) +
+										'-to-' + resp.headRevisionId + '.' + resp.modifiedDate + '-' + this.ui.hashValue(resp.etag),
 										(this.user != null) ? this.user.id : 'unknown');
 								}
 								catch (e)
@@ -1244,7 +1249,7 @@ DriveClient.prototype.saveFile = function(file, revision, success, errFn, noChec
 									// Logs conversion
 									try
 									{
-										EditorUi.logEvent({category: 'RT-CONVERT-' + file.convertedFrom,
+										EditorUi.logEvent({category: file.convertedFrom + '-CONVERT-FILE-' + file.getHash(),
 											action: 'from-' + prevDesc.id + '.' + prevDesc.headRevisionId +
 											'-to-' + file.desc.id + '.' + file.desc.headRevisionId,
 											label: (this.user != null) ? this.user.id : 'unknown-user'});
@@ -1258,7 +1263,7 @@ DriveClient.prototype.saveFile = function(file, revision, success, errFn, noChec
 								// Logs successful save
 								try
 								{
-									EditorUi.logEvent({category: 'SAVE-GOOGLE-' + file.desc.id +
+									EditorUi.logEvent({category: 'SUCCESS-SAVE-FILE-' + file.getHash() +
 										'.' + head0 + '.' + mod0, action: 'saved-' + resp.headRevisionId +
 										'.' + resp.modifiedDate, label: (this.user != null) ?
 										this.user.id : 'unknown-user'});
@@ -1274,7 +1279,7 @@ DriveClient.prototype.saveFile = function(file, revision, success, errFn, noChec
 							criticalError(e);
 						}
 					});
-		
+					
 					var doExecuteRequest = mxUtils.bind(this, function(data, binary)
 					{
 						try
@@ -1335,11 +1340,6 @@ DriveClient.prototype.saveFile = function(file, revision, success, errFn, noChec
 																// Logs overwrite
 																try
 																{
-																	EditorUi.sendReport('Warning: Stale Etag Overwrite ' +
-																		new Date().toISOString() + ':' +
-																		'\n\nBrowser=' + navigator.userAgent +
-																		'\nFile=' + file.desc.id + '.' + file.desc.headRevisionId +
-																		'\nUser=' + ((this.user != null) ? this.user.id : 'unknown'));
 																	EditorUi.logError('Warning: Stale Etag Overwrite ' + file.desc.id,
 																		null, file.desc.id + '.' + file.desc.headRevisionId,
 																		(this.user != null) ? this.user.id : 'unknown');
@@ -2475,10 +2475,8 @@ DriveClient.prototype.convertRealtimeFiles = function()
 	{
 		this.checkToken(mxUtils.bind(this, function()
 		{
-			var day = new Date().getDay();
-			var isWeekend = (day === 6) || (day === 0);
 			var q = 'mimeType=\'application/vnd.jgraph.mxfile.realtime\'';
-			var convertDelay = (isWeekend) ? 1000 : 2000;
+			var convertDelay = 2000;
 			var convertedIds = {};
 			var converted = 0;
 			var fromJson = 0;
@@ -2488,6 +2486,7 @@ DriveClient.prototype.convertRealtimeFiles = function()
 			var saveFail = 0;
 			var failed = 0;
 			var total = 0;
+			var queryFail = 0;
 			
 			var done = mxUtils.bind(this, function()
 			{
@@ -2530,14 +2529,9 @@ DriveClient.prototype.convertRealtimeFiles = function()
 				return (err == null) ? '' : ((err.message != null) ? err.message : ((err.error != null &&
 					err.error.message != null) ? err.error.message : ''));
 			};
-			
-			var totals = {'maxResults': 10000, 'q': q, 'includeTeamDriveItems': true, 'supportsTeamDrives': true};
-			
-			this.executeRequest(gapi.client.drive.files.list(totals), mxUtils.bind(this, function(res)
+
+			var doConvert = mxUtils.bind(this, function()
 			{
-				this.ui.spinner.stop();
-				total = (res != null && res.items != null) ? res.items.length : 0;
-				
 				if (this.ui.spinner.spin(document.body, 'Converting ' + total + ' file(s)'))
 				{
 					print('Found ' + total + ' file(s). This will take up to ' + Math.ceil((total * (convertDelay + 3000)) / 60000) +
@@ -2554,15 +2548,21 @@ DriveClient.prototype.convertRealtimeFiles = function()
 							query.pageToken = token;
 						}
 						
+						var acceptResponse = true;
+						
+						var timeoutThread = window.setTimeout(mxUtils.bind(this, function()
+						{
+							acceptResponse = false;
+							nextPage(token, delay);
+						}), this.ui.timeout);
+						
 						this.executeRequest(gapi.client.drive.files.list(query), mxUtils.bind(this, function(res)
 						{
-							var doNextPage = mxUtils.bind(this, function()
+							window.clearTimeout(timeoutThread);
+							
+							if (acceptResponse)
 							{
-								if (res.nextPageToken != null)
-								{
-									nextPage(res.nextPageToken);
-								}
-								else
+								var doNextPage = mxUtils.bind(this, function()
 								{
 									if (res.nextPageToken != null)
 									{
@@ -2572,139 +2572,187 @@ DriveClient.prototype.convertRealtimeFiles = function()
 									{
 										done();
 									}
-								}
-							});
-							
-							if (res != null && (res.items == null || res.items.length == 0) &&
-								res.nextPageToken != null)
-							{
-								// Next page can still contain results, see
-								// https://stackoverflow.com/questions/23741845
-								nextPage(res.nextPageToken, 10000);
-							}
-							else if (res != null && res.items != null && res.items.length > 0)
-							{
-								var fileId = res.items[0].id;
-								this.ui.spinner.stop();
-								counter++;
+								});
 								
-								if (this.ui.spinner.spin(document.body, 'Converting file ' + counter + ' of ' + total))
+								if (res != null && res.error != null)
 								{
-									print('Converting ' + counter + ' of ' + total + ': "' + mxUtils.htmlEntities(res.items[0].title) +
-										'" (' + fileId + ')... ', true);
-		
-									window.setTimeout(mxUtils.bind(this, function()
+									queryFail++;
+									
+									if (queryFail < 4)
 									{
-										// Exits if same file is returned twice
-										if (convertedIds[fileId] == null)
+										nextPage(token, delay);
+									}
+									else
+									{
+										this.ui.spinner.stop();
+										print('Query for next file failed multiple times. Exiting.<br><br>This window can now be closed.');
+									}
+								}
+								else if (res != null && (res.items == null || res.items.length == 0) &&
+									res.nextPageToken != null)
+								{
+									// Next page can still contain results, see
+									// https://stackoverflow.com/questions/23741845
+									nextPage(res.nextPageToken, 10000);
+								}
+								else if (res != null && res.items != null && res.items.length > 0)
+								{
+									var fileId = res.items[0].id;
+									this.ui.spinner.stop();
+									counter++;
+									
+									if (this.ui.spinner.spin(document.body, 'Converting file ' + counter + ' of ' + total))
+									{
+										print('Converting ' + counter + ' of ' + total + ': "' + mxUtils.htmlEntities(res.items[0].title) +
+											'" (<a href="https://drive.google.com/open?id=' + fileId + '" target="_blank">' + fileId + '</a>)... ', true);
+			
+										window.setTimeout(mxUtils.bind(this, function()
 										{
-											convertedIds[fileId] = true;
-											
-											var acceptResponse = true;
-											
-											var timeoutThread = window.setTimeout(mxUtils.bind(this, function()
+											// Exits if same file is returned twice
+											if (convertedIds[fileId] == null)
 											{
-												acceptResponse = false;
+												convertedIds[fileId] = true;
 												
-												failed++;
-												loadFail++;
-												print('<img src="' + this.ui.editor.graph.warningImage.src + '" border="0" valign="absmiddle"/> Timeout');
-												doNextPage();
-											}), this.ui.timeout);
-											
-											this.getFile(fileId, mxUtils.bind(this, function(file)
-											{
-												window.clearTimeout(timeoutThread);
+												acceptResponse = true;
 												
-												if (acceptResponse)
+												timeoutThread = window.setTimeout(mxUtils.bind(this, function()
 												{
-													if (file.constructor == DriveFile)
+													acceptResponse = false;
+													
+													failed++;
+													loadFail++;
+													print('<img src="' + this.ui.editor.graph.warningImage.src + '" border="0" valign="absmiddle"/> Timeout');
+													doNextPage();
+												}), this.ui.timeout);
+												
+												this.getFile(fileId, mxUtils.bind(this, function(file)
+												{
+													window.clearTimeout(timeoutThread);
+													
+													if (acceptResponse)
 													{
-														if (file.convertedFrom == 'json')
-														{
-															fromJson++;
-														}
-														else
+														if (file.constructor == DriveFile)
 														{
-															fromXml++;
-														}
-														
-														acceptResponse = true;
-														
-														timeoutThread = window.setTimeout(mxUtils.bind(this, function()
-														{
-															acceptResponse = false;
-															
-															failed++;
-															saveFail++;
-															print('<img src="' + this.ui.editor.graph.warningImage.src + '" border="0" valign="absmiddle"/> Timeout');
-															doNextPage();
-														}), this.ui.timeout);
-	
-														this.saveFile(file, null, mxUtils.bind(this, function()
-														{
-															window.clearTimeout(timeoutThread);
-															
-															if (acceptResponse)
+															if (file.convertedFrom == 'json')
 															{
-																converted++;
-																print('OK <img src="' + Editor.checkmarkImage + '" border="0" valign="middle"/>');
-																doNextPage();
+																fromJson++;
 															}
-														}), mxUtils.bind(this, function(err)
-														{
-															window.clearTimeout(timeoutThread);
+															else
+															{
+																fromXml++;
+															}
+															
+															acceptResponse = true;
 															
-															if (acceptResponse)
+															timeoutThread = window.setTimeout(mxUtils.bind(this, function()
 															{
-																var msg = getMessage(err);
+																acceptResponse = false;
+																
 																failed++;
 																saveFail++;
-																print('<img src="' + this.ui.editor.graph.warningImage.src + '" border="0" valign="absmiddle"/> ' + msg);
+																print('<img src="' + this.ui.editor.graph.warningImage.src + '" border="0" valign="absmiddle"/> Timeout');
 																doNextPage();
-															}
-														}));
+															}), this.ui.timeout);
+		
+															this.saveFile(file, null, mxUtils.bind(this, function()
+															{
+																window.clearTimeout(timeoutThread);
+																
+																if (acceptResponse)
+																{
+																	converted++;
+																	print('OK <img src="' + Editor.checkmarkImage + '" border="0" valign="middle"/>');
+																	doNextPage();
+																}
+															}), mxUtils.bind(this, function(err)
+															{
+																window.clearTimeout(timeoutThread);
+																
+																if (acceptResponse)
+																{
+																	var msg = getMessage(err);
+																	failed++;
+																	saveFail++;
+																	print('<img src="' + this.ui.editor.graph.warningImage.src + '" border="0" valign="absmiddle"/> ' + msg);
+																	doNextPage();
+																}
+															}));
+														}
+														else
+														{
+															failed++;
+															invalid++;
+															print('<img src="' + this.ui.editor.graph.warningImage.src + '" border="0" valign="absmiddle"/> Invalid file');
+															doNextPage();
+														}
 													}
-													else
+												}), mxUtils.bind(this, function(err)
+												{
+													window.clearTimeout(timeoutThread);
+													
+													if (acceptResponse)
 													{
+														var msg = getMessage(err);
 														failed++;
-														invalid++;
-														print('<img src="' + this.ui.editor.graph.warningImage.src + '" border="0" valign="absmiddle"/> Invalid file');
+														loadFail++;
+														print('<img src="' + this.ui.editor.graph.warningImage.src + '" border="0" valign="absmiddle"/> ' + msg);
 														doNextPage();
 													}
-												}
-											}), mxUtils.bind(this, function(err)
+												}));
+											}
+											else
 											{
-												window.clearTimeout(timeoutThread);
-												
-												if (acceptResponse)
-												{
-													var msg = getMessage(err);
-													failed++;
-													loadFail++;
-													print('<img src="' + this.ui.editor.graph.warningImage.src + '" border="0" valign="absmiddle"/> ' + msg);
-													doNextPage();
-												}
-											}));
-										}
-										else
-										{
-											this.ui.spinner.stop();
-											print('Search returned duplicate file ' + fileId + '. Exiting.<br><br>This window can now be closed.');
-										}
-									}), (delay != null) ? delay : convertDelay)
+												this.ui.spinner.stop();
+												print('Search returned duplicate file ' + fileId + '. Exiting.<br><br>This window can now be closed.');
+											}
+										}), (delay != null) ? delay : convertDelay)
+									}
+								}
+								else
+								{
+									done();
 								}
-							}
-							else
-							{
-								done();
 							}
 						}));
 					});
 					
 					nextPage();
 				}
-			}));
+			});
+			
+			var totals = {'maxResults': 10000, 'q': q, 'includeTeamDriveItems': true, 'supportsTeamDrives': true};
+			
+			var count = mxUtils.bind(this, function(token)
+			{
+				if (token != null)
+				{
+					totals.pageToken = token;
+				}
+				
+				this.executeRequest(gapi.client.drive.files.list(totals), mxUtils.bind(this, function(res)
+				{
+					total += (res != null && res.items != null) ? res.items.length : 0;
+					
+					if (res.nextPageToken != null)
+					{
+						count(res.nextPageToken);
+					}
+					else
+					{
+						this.ui.spinner.stop();
+						
+						this.ui.confirm('You are about to convert ' + total + ' file(s)', mxUtils.bind(this, function()
+						{
+							doConvert();
+						}), mxUtils.bind(this, function()
+						{
+							print('Cancelled by user.<br><br>This window can now be closed.');
+						}));
+					}
+				}));
+			});
+			
+			count();
 		}));
 	}
 	else

+ 0 - 4
src/main/webapp/js/diagramly/EditorUi.js

@@ -3370,10 +3370,6 @@
 	    	Graph.prototype.defaultThemeName = 'darkTheme';
 			Graph.prototype.defaultPageBackgroundColor = '#2a2a2a';
 			Graph.prototype.defaultPageBorderColor = '#505759';
-		    Graph.prototype.svgShadowColor = '#e0e0e0';
-		    Graph.prototype.svgShadowOpacity = '0.6';
-		    Graph.prototype.svgShadowSize = '0.8';
-		    Graph.prototype.svgShadowBlur = '1.4';
 			Format.prototype.inactiveTabBackgroundColor = 'black';
 			BaseFormatPanel.prototype.buttonBackgroundColor = '#2a2a2a';
 			Sidebar.prototype.dragPreviewBorder = '1px dashed #cccccc';

+ 1 - 1
src/main/webapp/js/diagramly/Menus.js

@@ -840,7 +840,7 @@
 						this.editorUi.openLink('https://desk.draw.io/support/search/solutions?term=' +
 							encodeURIComponent(term));
 						input.value = '';
-						EditorUi.logEvent({category: 'Help', action: 'search', label: term});
+						EditorUi.logEvent({category: 'SEARCH-HELP', action: 'search', label: term});
 						
 						if (this.editorUi.menubar != null)
 						{

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 58 - 56
src/main/webapp/js/viewer.min.js