Fix web2d patch issue

This commit is contained in:
Paulo Gustavo Veiga 2021-12-30 15:03:59 -08:00
parent 475c5e2538
commit f774a8a0c9
16 changed files with 72 additions and 95 deletions

View File

@ -16,7 +16,7 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
import { $assert, innerXML } from '@wisemapping/core-js'; import { $assert } from '@wisemapping/core-js';
import XMLSerializerFactory from './persistence/XMLSerializerFactory'; import XMLSerializerFactory from './persistence/XMLSerializerFactory';
class PersistenceManager { class PersistenceManager {
@ -29,7 +29,7 @@ class PersistenceManager {
const serializer = XMLSerializerFactory.getSerializerFromMindmap(mindmap); const serializer = XMLSerializerFactory.getSerializerFromMindmap(mindmap);
const domMap = serializer.toXML(mindmap); const domMap = serializer.toXML(mindmap);
const mapXml = innerXML(domMap); const mapXml = new XMLSerializer().serializeToString(domMap);
const pref = JSON.stringify(editorProperties); const pref = JSON.stringify(editorProperties);
try { try {

View File

@ -1,6 +1,5 @@
import { Mindmap } from "../.."; import { Mindmap } from "../..";
import ImageIcon from "../ImageIcon";
import Exporter from "./Exporter"; import Exporter from "./Exporter";
class SVGExporter implements Exporter { class SVGExporter implements Exporter {
@ -12,14 +11,14 @@ class SVGExporter implements Exporter {
export(): string { export(): string {
// Replace all images for in-line images ... // Replace all images for in-line images ...
const imagesElements: HTMLCollection = this.svgElement.getElementsByTagName('image'); const imagesElements: HTMLCollection = this.svgElement.getElementsByTagName('image');
console.log(imagesElements.length); let result:string = new XMLSerializer().serializeToString(this.svgElement);
const image = ImageIcon.getImageUrl('face_smile'); // Are namespace declared ?. Otherwise, force the declaration ...
Array.from(imagesElements).forEach((image) => { if(result.indexOf('xmlns=')!=-1){
const imgValue = image.attributes['xlink:href'].value; result.replace('<svg ', '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" ')
console.log(image.attributes); }
});
return ""; return result;
} }
} }

View File

@ -169,18 +169,6 @@ class XMLSerializerBeta {
return noteDom; return noteDom;
} }
static innerXML(element) {
let result = null;
if ($defined(element.innerXML)) {
result = element.innerXML;
} if ($defined(element.xml)) {
result = element.xml;
} if ($defined(XMLSerializer)) {
result = new XMLSerializer().serializeToString(element);
}
return result;
}
loadFromDom(dom, mapId) { loadFromDom(dom, mapId) {
$assert(dom, 'Dom can not be null'); $assert(dom, 'Dom can not be null');
$assert(mapId, 'mapId can not be null'); $assert(mapId, 'mapId can not be null');
@ -196,7 +184,7 @@ class XMLSerializerBeta {
$assert( $assert(
documentElement.tagName === XMLSerializerBeta.MAP_ROOT_NODE, documentElement.tagName === XMLSerializerBeta.MAP_ROOT_NODE,
`This seem not to be a map document. Root Tag: '${documentElement.tagName}',HTML:${dom.innerHTML `This seem not to be a map document. Root Tag: '${documentElement.tagName}',HTML:${dom.innerHTML
},XML:,${XMLSerializerBeta.innerXML(dom)}`, },XML:,${new XMLSerializer().serializeToString(dom)}`,
); );
// Start the loading process ... // Start the loading process ...

View File

@ -495,18 +495,6 @@ class XMLSerializerPela {
} }
return result; return result;
} }
static innerXML(element) {
let result = null;
if ($defined(element.innerXML)) {
result = element.innerXML;
} if ($defined(element.xml)) {
result = element.xml;
} if ($defined(XMLSerializer)) {
result = new XMLSerializer().serializeToString(element);
}
return result;
}
} }
/** /**

View File

@ -19,7 +19,8 @@ test('mindplot generation of simple maps', () => {
// Inspect ... // Inspect ...
const exporter = new SVGExporter(mindmap, svgDocument.documentElement); const exporter = new SVGExporter(mindmap, svgDocument.documentElement);
console.log(exporter.export()); console.log('Exported map:' + exporter.export());
function parseXMLFile(filePath: fs.PathOrFileDescriptor, mimeType: DOMParserSupportedType) { function parseXMLFile(filePath: fs.PathOrFileDescriptor, mimeType: DOMParserSupportedType) {
const parser = new DOMParser(); const parser = new DOMParser();
@ -28,8 +29,10 @@ test('mindplot generation of simple maps', () => {
// Is there any parsing error ?. // Is there any parsing error ?.
if (xmlDoc.getElementsByTagName("parsererror").length > 0) { if (xmlDoc.getElementsByTagName("parsererror").length > 0) {
console.log(new XMLSerializer().serializeToString(xmlDoc));
throw new Error(`Unexpected error parsing: ${filePath}. Error: ${new XMLSerializer().serializeToString(xmlDoc)}`); throw new Error(`Unexpected error parsing: ${filePath}. Error: ${new XMLSerializer().serializeToString(xmlDoc)}`);
} }
return xmlDoc; return xmlDoc;
} }
}); });

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 81 KiB

View File

@ -90,7 +90,7 @@ class Text extends ElementClass {
} }
getHeight() { getHeight() {
return parseInt(this.peer.getHeight(), 10); return Number.parseInt(this.peer.getHeight(), 10);
} }
getFontHeight() { getFontHeight() {

View File

@ -31,10 +31,6 @@ import VerdanaFont from './peer/svg/VerdanaFont';
import TahomaFont from './peer/svg/TahomaFont'; import TahomaFont from './peer/svg/TahomaFont';
class Toolkit { class Toolkit {
static init() {
}
static createWorkspace(element) { static createWorkspace(element) {
return new WorkspacePeer(element); return new WorkspacePeer(element);
} }

View File

@ -37,8 +37,8 @@ class CurvedLinePeer extends ElementPeer {
const change = this._control1.x !== control.x || this._control1.y !== control.y; const change = this._control1.x !== control.x || this._control1.y !== control.y;
if ($defined(control.x)) { if ($defined(control.x)) {
this._control1 = control; this._control1 = control;
this._control1.x = Number.parseInt(this._control1.x, 10); this._control1.x = Number.parseFloat(this._control1.x, 10);
this._control1.y = Number.parseInt(this._control1.y, 10); this._control1.y = Number.parseFloat(this._control1.y, 10);
} }
if (change) { if (change) {
this._updatePath(); this._updatePath();
@ -50,8 +50,8 @@ class CurvedLinePeer extends ElementPeer {
const change = this._control2.x !== control.x || this._control2.y !== control.y; const change = this._control2.x !== control.x || this._control2.y !== control.y;
if ($defined(control.x)) { if ($defined(control.x)) {
this._control2 = control; this._control2 = control;
this._control2.x = Number.parseInt(this._control2.x, 10); this._control2.x = Number.parseFloat(this._control2.x, 10);
this._control2.y = Number.parseInt(this._control2.y, 10); this._control2.y = Number.parseFloat(this._control2.y, 10);
} }
if (change) this._updatePath(); if (change) this._updatePath();
} }
@ -77,16 +77,16 @@ class CurvedLinePeer extends ElementPeer {
} }
setFrom(x1, y1) { setFrom(x1, y1) {
const change = this._x1 !== parseInt(x1, 10) || this._y1 !== parseInt(y1, 10); const change = this._x1 !== Number.parseFloat(x1, 10) || this._y1 !== Number.parseFloat(y1, 10);
this._x1 = Number.parseInt(x1, 10); this._x1 = Number.parseFloat(x1, 10);
this._y1 = Number.parseInt(y1, 10); this._y1 = Number.parseFloat(y1, 10);
if (change) this._updatePath(); if (change) this._updatePath();
} }
setTo(x2, y2) { setTo(x2, y2) {
const change = this._x2 !== parseInt(x2, 10) || this._y2 !== parseInt(y2, 10); const change = this._x2 !== Number.parseFloat(x2, 10) || this._y2 !== parseFloat(y2, 10);
this._x2 = Number.parseInt(x2, 10); this._x2 = Number.parseFloat(x2, 10);
this._y2 = Number.parseInt(y2, 10); this._y2 = Number.parseFloat(y2, 10);
if (change) this._updatePath(); if (change) this._updatePath();
} }
@ -196,8 +196,8 @@ class CurvedLinePeer extends ElementPeer {
const y2 = m * (x2 - tarPos.x) + tarPos.y; const y2 = m * (x2 - tarPos.x) + tarPos.y;
return [ return [
new Point(Number.toFixed(-srcPos.x + x1, 5), Number.toFixed(-srcPos.y + y1), 5), new Point(-srcPos.x + x1, -srcPos.y + y1),
new Point(Number.toFixed(-tarPos.x + x2, 5), Number.toFixed(-tarPos.y + y2, 5)), new Point(-tarPos.x + x2, -tarPos.y + y2),
]; ];
} }

View File

@ -120,13 +120,13 @@ class ElementPeer {
} }
setSize(width, height) { setSize(width, height) {
if ($defined(width) && this._size.width !== parseInt(width, 10)) { if ($defined(width) && this._size.width !== Number.parseFloat(width, 10)) {
this._size.width = parseInt(width, 10); this._size.width = Number.parseFloat(width, 10);
this._native.setAttribute('width', this._size.width); this._native.setAttribute('width', this._size.width);
} }
if ($defined(height) && this._size.height !== parseInt(height, 10)) { if ($defined(height) && this._size.height !== Number.parseFloat(height, 10)) {
this._size.height = parseInt(height, 10); this._size.height = Number.parseFloat(height, 10);
this._native.setAttribute('height', this._size.height); this._native.setAttribute('height', this._size.height);
} }

View File

@ -57,7 +57,7 @@ class Font {
} }
getSize() { getSize() {
return parseInt(this._size, 10); return Number.parseInt(this._size, 10);
} }
getStyle() { getStyle() {

View File

@ -132,11 +132,11 @@ class GroupPeer extends ElementPeer {
setPosition(x, y) { setPosition(x, y) {
const change = x !== this._position.x || y !== this._position.y; const change = x !== this._position.x || y !== this._position.y;
if ($defined(x)) { if ($defined(x)) {
this._position.x = parseInt(x, 10); this._position.x = Number.parseFloat(x, 10);
} }
if ($defined(y)) { if ($defined(y)) {
this._position.y = parseInt(y, 10); this._position.y = Number.parseFloat(y, 10);
} }
if (change) { if (change) {
this.updateTransform(); this.updateTransform();

View File

@ -31,22 +31,23 @@ class RectPeer extends ElementPeer {
setPosition(x, y) { setPosition(x, y) {
if ($defined(x)) { if ($defined(x)) {
this._native.setAttribute('x', parseInt(x, 10)); this._native.setAttribute('x', Number.parseFloat(x, 10));
} }
if ($defined(y)) { if ($defined(y)) {
this._native.setAttribute('y', parseInt(y, 10)); this._native.setAttribute('y', Number.parseFloat(y, 10));
} }
} }
getPosition() { getPosition() {
const x = this._native.getAttribute('x'); const x = this._native.getAttribute('x');
const y = this._native.getAttribute('y'); const y = this._native.getAttribute('y');
return { x: parseInt(x, 10), y: parseInt(y, 10) }; return { x: Number.parseFloat(x, 10), y: Number.parseFloat(y, 10) };
} }
setSize(width, height) { setSize(width, height) {
super.setSize(width, height); super.setSize(width, height);
const min = width < height ? width : height; const min = width < height ? width : height;
if ($defined(this._arc)) { if ($defined(this._arc)) {
// Transform percentages to SVG format. // Transform percentages to SVG format.
const arc = (min / 2) * this._arc; const arc = (min / 2) * this._arc;

View File

@ -51,16 +51,17 @@ class WorkspacePeer extends ElementPeer {
setCoordSize(width, height) { setCoordSize(width, height) {
const viewBox = this._native.getAttribute('viewBox'); const viewBox = this._native.getAttribute('viewBox');
let coords = [0, 0, 0, 0]; let coords = [0, 0, 0, 0];
if (viewBox != null) { if (viewBox != null) {
coords = viewBox.split(/ /); coords = viewBox.split(/ /);
} }
if ($defined(width)) { if ($defined(width)) {
coords[2] = width; coords[2] = width.toFixed(5);
} }
if ($defined(height)) { if ($defined(height)) {
coords[3] = height; coords[3] = height.toFixed(5);
} }
this._native.setAttribute('viewBox', coords.join(' ')); this._native.setAttribute('viewBox', coords.join(' '));

View File

@ -25,8 +25,8 @@ const TransformUtil = {
const coordSize = current.getCoordSize(); const coordSize = current.getCoordSize();
const size = current.getSize(); const size = current.getSize();
width *= parseInt(size.width, 10) / coordSize.width; width *= Number.parseFloat(size.width, 10) / coordSize.width;
height *= parseInt(size.height, 10) / coordSize.height; height *= Number.parseFloat(size.height, 10) / coordSize.height;
current = current.getParent(); current = current.getParent();
} }
return { width, height }; return { width, height };