mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-24 17:32:15 +00:00
Fix ignore Polyline
This commit is contained in:
2
demo-shell-ng2/.gitignore
vendored
2
demo-shell-ng2/.gitignore
vendored
@@ -1,8 +1,6 @@
|
|||||||
typings/
|
typings/
|
||||||
node_modules/
|
node_modules/
|
||||||
bower_components/
|
bower_components/
|
||||||
app/**/*.js
|
|
||||||
app/**/*.js.map
|
|
||||||
.idea
|
.idea
|
||||||
dist/
|
dist/
|
||||||
|
|
||||||
|
372
demo-shell-ng2/app/js/Polyline.js
Normal file
372
demo-shell-ng2/app/js/Polyline.js
Normal file
@@ -0,0 +1,372 @@
|
|||||||
|
/**
|
||||||
|
* Class to generate polyline
|
||||||
|
*
|
||||||
|
* @author Dmitry Farafonov
|
||||||
|
*/
|
||||||
|
|
||||||
|
var ANCHOR_TYPE= {
|
||||||
|
main: "main",
|
||||||
|
middle: "middle",
|
||||||
|
first: "first",
|
||||||
|
last: "last"
|
||||||
|
};
|
||||||
|
|
||||||
|
function Anchor(uuid, type, x, y) {
|
||||||
|
this.uuid = uuid;
|
||||||
|
this.x = x;
|
||||||
|
this.y = y;
|
||||||
|
this.type = (type == ANCHOR_TYPE.middle) ? ANCHOR_TYPE.middle : ANCHOR_TYPE.main;
|
||||||
|
};
|
||||||
|
Anchor.prototype = {
|
||||||
|
uuid: null,
|
||||||
|
x: 0,
|
||||||
|
y: 0,
|
||||||
|
type: ANCHOR_TYPE.main,
|
||||||
|
isFirst: false,
|
||||||
|
isLast: false,
|
||||||
|
ndex: 0,
|
||||||
|
typeIndex: 0
|
||||||
|
};
|
||||||
|
|
||||||
|
function Polyline(uuid, points, strokeWidth, paper) {
|
||||||
|
/* Array on coordinates:
|
||||||
|
* points: [{x: 410, y: 110}, 1
|
||||||
|
* {x: 570, y: 110}, 1 2
|
||||||
|
* {x: 620, y: 240}, 2 3
|
||||||
|
* {x: 750, y: 270}, 3 4
|
||||||
|
* {x: 650, y: 370}]; 4
|
||||||
|
*/
|
||||||
|
this.points = points;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* path for graph
|
||||||
|
* [["M", x1, y1], ["L", x2, y2], ["C", ax, ay, bx, by, x3, y3], ["L", x3, y3]]
|
||||||
|
*/
|
||||||
|
this.path = [];
|
||||||
|
|
||||||
|
this.anchors = [];
|
||||||
|
|
||||||
|
if (strokeWidth) this.strokeWidth = strokeWidth;
|
||||||
|
|
||||||
|
this.paper = paper;
|
||||||
|
|
||||||
|
this.closePath = false;
|
||||||
|
|
||||||
|
this.init();
|
||||||
|
};
|
||||||
|
|
||||||
|
Polyline.prototype = {
|
||||||
|
id: null,
|
||||||
|
points: [],
|
||||||
|
path: [],
|
||||||
|
anchors: [],
|
||||||
|
strokeWidth: 1,
|
||||||
|
radius: 1,
|
||||||
|
showDetails: false,
|
||||||
|
paper: null,
|
||||||
|
element: null,
|
||||||
|
isDefaultConditionAvailable: false,
|
||||||
|
closePath: false,
|
||||||
|
|
||||||
|
init: function(points){
|
||||||
|
var linesCount = this.getLinesCount();
|
||||||
|
if (linesCount < 1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this.normalizeCoordinates();
|
||||||
|
|
||||||
|
// create anchors
|
||||||
|
|
||||||
|
this.pushAnchor(ANCHOR_TYPE.first, this.getLine(0).x1, this.getLine(0).y1);
|
||||||
|
|
||||||
|
for (var i = 1; i < linesCount; i++)
|
||||||
|
{
|
||||||
|
var line1 = this.getLine(i-1);
|
||||||
|
this.pushAnchor(ANCHOR_TYPE.main, line1.x2, line1.y2);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.pushAnchor(ANCHOR_TYPE.last, this.getLine(linesCount-1).x2, this.getLine(linesCount-1).y2);
|
||||||
|
|
||||||
|
this.rebuildPath();
|
||||||
|
},
|
||||||
|
|
||||||
|
normalizeCoordinates: function(){
|
||||||
|
for(var i=0; i < this.points.length; i++){
|
||||||
|
this.points[i].x = parseFloat(this.points[i].x);
|
||||||
|
this.points[i].y = parseFloat(this.points[i].y);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
getLinesCount: function(){
|
||||||
|
return this.points.length-1;
|
||||||
|
},
|
||||||
|
_getLine: function(i){
|
||||||
|
if (this.points.length > i && this.points[i]) {
|
||||||
|
return {x1: this.points[i].x, y1: this.points[i].y, x2: this.points[i+1].x, y2: this.points[i+1].y};
|
||||||
|
} else {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getLine: function(i){
|
||||||
|
var line = this._getLine(i);
|
||||||
|
if (line != undefined) {
|
||||||
|
line.angle = this.getLineAngle(i);
|
||||||
|
}
|
||||||
|
return line;
|
||||||
|
},
|
||||||
|
getLineAngle: function(i){
|
||||||
|
var line = this._getLine(i);
|
||||||
|
return Math.atan2(line.y2 - line.y1, line.x2 - line.x1);
|
||||||
|
},
|
||||||
|
getLineLengthX: function(i){
|
||||||
|
var line = this.getLine(i);
|
||||||
|
return (line.x2 - line.x1);
|
||||||
|
},
|
||||||
|
getLineLengthY: function(i){
|
||||||
|
var line = this.getLine(i);
|
||||||
|
return (line.y2 - line.y1);
|
||||||
|
},
|
||||||
|
getLineLength: function(i){
|
||||||
|
return Math.sqrt(Math.pow(this.getLineLengthX(i), 2) + Math.pow(this.getLineLengthY(i), 2));
|
||||||
|
},
|
||||||
|
|
||||||
|
getAnchors: function(){
|
||||||
|
return this.anchors;
|
||||||
|
},
|
||||||
|
getAnchorsCount: function(type){
|
||||||
|
if (!type)
|
||||||
|
return this.anchors.length;
|
||||||
|
else {
|
||||||
|
var count = 0;
|
||||||
|
for(var i=0; i < this.getAnchorsCount(); i++){
|
||||||
|
var anchor = this.anchors[i];
|
||||||
|
if (anchor.getType() == type) {
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
pushAnchor: function(type, x, y, index){
|
||||||
|
if (type == ANCHOR_TYPE.first) {
|
||||||
|
index = 0;
|
||||||
|
typeIndex = 0;
|
||||||
|
} else if (type == ANCHOR_TYPE.last) {
|
||||||
|
index = this.getAnchorsCount();
|
||||||
|
typeIndex = 0;
|
||||||
|
} else if (!index) {
|
||||||
|
index = this.anchors.length;
|
||||||
|
} else {
|
||||||
|
for(var i=0; i < this.getAnchorsCount(); i++){
|
||||||
|
var anchor = this.anchors[i];
|
||||||
|
if (anchor.index > index) {
|
||||||
|
anchor.index++;
|
||||||
|
anchor.typeIndex++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var anchor = new Anchor(this.id, ANCHOR_TYPE.main, x, y, index, typeIndex);
|
||||||
|
|
||||||
|
this.anchors.push(anchor);
|
||||||
|
},
|
||||||
|
|
||||||
|
getAnchor: function(position){
|
||||||
|
return this.anchors[position];
|
||||||
|
},
|
||||||
|
|
||||||
|
getAnchorByType: function(type, position){
|
||||||
|
if (type == ANCHOR_TYPE.first)
|
||||||
|
return this.anchors[0];
|
||||||
|
if (type == ANCHOR_TYPE.last)
|
||||||
|
return this.anchors[this.getAnchorsCount()-1];
|
||||||
|
|
||||||
|
for(var i=0; i < this.getAnchorsCount(); i++){
|
||||||
|
var anchor = this.anchors[i];
|
||||||
|
if (anchor.type == type) {
|
||||||
|
if( position == anchor.position)
|
||||||
|
return anchor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
},
|
||||||
|
|
||||||
|
addNewPoint: function(position, x, y){
|
||||||
|
//
|
||||||
|
for(var i = 0; i < this.getLinesCount(); i++){
|
||||||
|
var line = this.getLine(i);
|
||||||
|
if (x > line.x1 && x < line.x2 && y > line.y1 && y < line.y2) {
|
||||||
|
this.points.splice(i+1,0,{x: x, y: y});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.rebuildPath();
|
||||||
|
},
|
||||||
|
|
||||||
|
rebuildPath: function(){
|
||||||
|
var path = [];
|
||||||
|
|
||||||
|
for(var i = 0; i < this.getAnchorsCount(); i++){
|
||||||
|
var anchor = this.getAnchor(i);
|
||||||
|
|
||||||
|
var pathType = "";
|
||||||
|
if (i == 0)
|
||||||
|
pathType = "M";
|
||||||
|
else
|
||||||
|
pathType = "L";
|
||||||
|
|
||||||
|
// TODO: save previous points and calculate new path just if points are updated, and then save currents values as previous
|
||||||
|
|
||||||
|
var targetX = anchor.x, targetY = anchor.y;
|
||||||
|
if (i>0 && i < this.getAnchorsCount()-1) {
|
||||||
|
// get new x,y
|
||||||
|
var cx = anchor.x, cy = anchor.y;
|
||||||
|
|
||||||
|
// pivot point of prev line
|
||||||
|
var AO = this.getLineLength(i-1);
|
||||||
|
if (AO < this.radius) {
|
||||||
|
AO = this.radius;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.isDefaultConditionAvailable = (this.isDefaultConditionAvailable || (i == 1 && AO > 10));
|
||||||
|
|
||||||
|
var ED = this.getLineLengthY(i-1) * this.radius / AO;
|
||||||
|
var OD = this.getLineLengthX(i-1) * this.radius / AO;
|
||||||
|
targetX = anchor.x - OD;
|
||||||
|
targetY = anchor.y - ED;
|
||||||
|
|
||||||
|
if (AO < 2*this.radius && i>1) {
|
||||||
|
targetX = anchor.x - this.getLineLengthX(i-1)/2;
|
||||||
|
targetY = anchor.y - this.getLineLengthY(i-1)/2;;
|
||||||
|
}
|
||||||
|
|
||||||
|
// pivot point of next line
|
||||||
|
var AO = this.getLineLength(i);
|
||||||
|
if (AO < this.radius) {
|
||||||
|
AO = this.radius;
|
||||||
|
}
|
||||||
|
var ED = this.getLineLengthY(i) * this.radius / AO;
|
||||||
|
var OD = this.getLineLengthX(i) * this.radius / AO;
|
||||||
|
var nextSrcX = anchor.x + OD;
|
||||||
|
var nextSrcY = anchor.y + ED;
|
||||||
|
|
||||||
|
if (AO < 2*this.radius && i<this.getAnchorsCount()-2) {
|
||||||
|
nextSrcX = anchor.x + this.getLineLengthX(i)/2;
|
||||||
|
nextSrcY = anchor.y + this.getLineLengthY(i)/2;;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var dx0 = (cx - targetX) / 3,
|
||||||
|
dy0 = (cy - targetY) / 3,
|
||||||
|
ax = cx - dx0,
|
||||||
|
ay = cy - dy0,
|
||||||
|
|
||||||
|
dx1 = (cx - nextSrcX) / 3,
|
||||||
|
dy1 = (cy - nextSrcY) / 3,
|
||||||
|
bx = cx - dx1,
|
||||||
|
by = cy - dy1,
|
||||||
|
|
||||||
|
zx=nextSrcX, zy=nextSrcY;
|
||||||
|
|
||||||
|
} else if (i==1 && this.getAnchorsCount() == 2){
|
||||||
|
var AO = this.getLineLength(i-1);
|
||||||
|
if (AO < this.radius) {
|
||||||
|
AO = this.radius;
|
||||||
|
}
|
||||||
|
this.isDefaultConditionAvailable = (this.isDefaultConditionAvailable || (i == 1 && AO > 10));
|
||||||
|
}
|
||||||
|
|
||||||
|
// anti smoothing
|
||||||
|
if (this.strokeWidth%2 == 1) {
|
||||||
|
targetX += 0.5;
|
||||||
|
targetY += 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
path.push([pathType, targetX, targetY]);
|
||||||
|
|
||||||
|
if (i>0 && i < this.getAnchorsCount()-1) {
|
||||||
|
path.push(["C", ax, ay, bx, by, zx, zy]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.closePath)
|
||||||
|
{
|
||||||
|
path.push(["Z"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.path = path;
|
||||||
|
},
|
||||||
|
|
||||||
|
transform: function(transformation)
|
||||||
|
{
|
||||||
|
this.element.transform(transformation);
|
||||||
|
},
|
||||||
|
attr: function(attrs)
|
||||||
|
{
|
||||||
|
// TODO: foreach and set each
|
||||||
|
this.element.attr(attrs);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
function Polygone(points, strokeWidth) {
|
||||||
|
/* Array on coordinates:
|
||||||
|
* points: [{x: 410, y: 110}, 1
|
||||||
|
* {x: 570, y: 110}, 1 2
|
||||||
|
* {x: 620, y: 240}, 2 3
|
||||||
|
* {x: 750, y: 270}, 3 4
|
||||||
|
* {x: 650, y: 370}]; 4
|
||||||
|
*/
|
||||||
|
this.points = points;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* path for graph
|
||||||
|
* [["M", x1, y1], ["L", x2, y2], ["C", ax, ay, bx, by, x3, y3], ["L", x3, y3]]
|
||||||
|
*/
|
||||||
|
this.path = [];
|
||||||
|
|
||||||
|
this.anchors = [];
|
||||||
|
|
||||||
|
if (strokeWidth) this.strokeWidth = strokeWidth;
|
||||||
|
|
||||||
|
this.closePath = true;
|
||||||
|
this.init();
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Poligone is inherited from Poliline: draws closedPath of polyline
|
||||||
|
*/
|
||||||
|
|
||||||
|
var Foo = function () { };
|
||||||
|
Foo.prototype = Polyline.prototype;
|
||||||
|
|
||||||
|
Polygone.prototype = new Foo();
|
||||||
|
|
||||||
|
Polygone.prototype.rebuildPath = function(){
|
||||||
|
var path = [];
|
||||||
|
for(var i = 0; i < this.getAnchorsCount(); i++){
|
||||||
|
var anchor = this.getAnchor(i);
|
||||||
|
|
||||||
|
var pathType = "";
|
||||||
|
if (i == 0)
|
||||||
|
pathType = "M";
|
||||||
|
else
|
||||||
|
pathType = "L";
|
||||||
|
|
||||||
|
var targetX = anchor.x, targetY = anchor.y;
|
||||||
|
|
||||||
|
// anti smoothing
|
||||||
|
if (this.strokeWidth%2 == 1) {
|
||||||
|
targetX += 0.5;
|
||||||
|
targetY += 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
path.push([pathType, targetX, targetY]);
|
||||||
|
}
|
||||||
|
if (this.closePath)
|
||||||
|
path.push(["Z"]);
|
||||||
|
|
||||||
|
this.path = path;
|
||||||
|
};
|
@@ -1,178 +0,0 @@
|
|||||||
/* This work is licensed under Creative Commons GNU LGPL License.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
License: http://creativecommons.org/licenses/LGPL/2.1/
|
|
||||||
Version: 0.9
|
|
||||||
Author: Stefan Goessner/2006
|
|
||||||
Web: http://goessner.net/
|
|
||||||
*/
|
|
||||||
var parseXml;
|
|
||||||
|
|
||||||
if (typeof window.DOMParser != "undefined") {
|
|
||||||
parseXml = function(xmlStr) {
|
|
||||||
return ( new window.DOMParser() ).parseFromString(xmlStr, "text/xml");
|
|
||||||
};
|
|
||||||
} else if (typeof window.ActiveXObject != "undefined" &&
|
|
||||||
new window.ActiveXObject("Microsoft.XMLDOM")) {
|
|
||||||
parseXml = function(xmlStr) {
|
|
||||||
var xmlDoc = new window.ActiveXObject("Microsoft.XMLDOM");
|
|
||||||
xmlDoc.async = "false";
|
|
||||||
xmlDoc.loadXML(xmlStr);
|
|
||||||
return xmlDoc;
|
|
||||||
};
|
|
||||||
} else {
|
|
||||||
throw new Error("No XML parser found");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function xml2json(xml, tab) {
|
|
||||||
var X = {
|
|
||||||
toObj: function(xml) {
|
|
||||||
var o = {};
|
|
||||||
if (xml.nodeType==1) { // element node ..
|
|
||||||
if (xml.attributes.length) // element with attributes ..
|
|
||||||
for (var i=0; i<xml.attributes.length; i++)
|
|
||||||
o["@"+xml.attributes[i].nodeName] = (xml.attributes[i].nodeValue||"").toString();
|
|
||||||
if (xml.firstChild) { // element has child nodes ..
|
|
||||||
var textChild=0, cdataChild=0, hasElementChild=false;
|
|
||||||
for (var n=xml.firstChild; n; n=n.nextSibling) {
|
|
||||||
if (n.nodeType==1) hasElementChild = true;
|
|
||||||
else if (n.nodeType==3 && n.nodeValue.match(/[^ \f\n\r\t\v]/)) textChild++; // non-whitespace text
|
|
||||||
else if (n.nodeType==4) cdataChild++; // cdata section node
|
|
||||||
}
|
|
||||||
if (hasElementChild) {
|
|
||||||
if (textChild < 2 && cdataChild < 2) { // structured element with evtl. a single text or/and cdata node ..
|
|
||||||
X.removeWhite(xml);
|
|
||||||
for (var n=xml.firstChild; n; n=n.nextSibling) {
|
|
||||||
if (n.nodeType == 3) // text node
|
|
||||||
o["#text"] = X.escape(n.nodeValue);
|
|
||||||
else if (n.nodeType == 4) // cdata node
|
|
||||||
o["#cdata"] = X.escape(n.nodeValue);
|
|
||||||
else if (o[n.nodeName]) { // multiple occurence of element ..
|
|
||||||
if (o[n.nodeName] instanceof Array)
|
|
||||||
o[n.nodeName][o[n.nodeName].length] = X.toObj(n);
|
|
||||||
else
|
|
||||||
o[n.nodeName] = [o[n.nodeName], X.toObj(n)];
|
|
||||||
}
|
|
||||||
else // first occurence of element..
|
|
||||||
o[n.nodeName] = X.toObj(n);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else { // mixed content
|
|
||||||
if (!xml.attributes.length)
|
|
||||||
o = X.escape(X.innerXml(xml));
|
|
||||||
else
|
|
||||||
o["#text"] = X.escape(X.innerXml(xml));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (textChild) { // pure text
|
|
||||||
if (!xml.attributes.length)
|
|
||||||
o = X.escape(X.innerXml(xml));
|
|
||||||
else
|
|
||||||
o["#text"] = X.escape(X.innerXml(xml));
|
|
||||||
}
|
|
||||||
else if (cdataChild) { // cdata
|
|
||||||
if (cdataChild > 1)
|
|
||||||
o = X.escape(X.innerXml(xml));
|
|
||||||
else
|
|
||||||
for (var n=xml.firstChild; n; n=n.nextSibling)
|
|
||||||
o["#cdata"] = X.escape(n.nodeValue);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!xml.attributes.length && !xml.firstChild) o = null;
|
|
||||||
}
|
|
||||||
else if (xml.nodeType==9) { // document.node
|
|
||||||
o = X.toObj(xml.documentElement);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
alert("unhandled node type: " + xml.nodeType);
|
|
||||||
return o;
|
|
||||||
},
|
|
||||||
toJson: function(o, name, ind) {
|
|
||||||
var json = name ? ("\""+name+"\"") : "";
|
|
||||||
if (o instanceof Array) {
|
|
||||||
for (var i=0,n=o.length; i<n; i++)
|
|
||||||
o[i] = X.toJson(o[i], "", ind+"\t");
|
|
||||||
json += (name?":[":"[") + (o.length > 1 ? ("\n"+ind+"\t"+o.join(",\n"+ind+"\t")+"\n"+ind) : o.join("")) + "]";
|
|
||||||
}
|
|
||||||
else if (o == null)
|
|
||||||
json += (name&&":") + "null";
|
|
||||||
else if (typeof(o) == "object") {
|
|
||||||
var arr = [];
|
|
||||||
for (var m in o)
|
|
||||||
arr[arr.length] = X.toJson(o[m], m, ind+"\t");
|
|
||||||
json += (name?":{":"{") + (arr.length > 1 ? ("\n"+ind+"\t"+arr.join(",\n"+ind+"\t")+"\n"+ind) : arr.join("")) + "}";
|
|
||||||
}
|
|
||||||
else if (typeof(o) == "string")
|
|
||||||
json += (name&&":") + "\"" + o.toString() + "\"";
|
|
||||||
else
|
|
||||||
json += (name&&":") + o.toString();
|
|
||||||
return json;
|
|
||||||
},
|
|
||||||
innerXml: function(node) {
|
|
||||||
var s = ""
|
|
||||||
if ("innerHTML" in node)
|
|
||||||
s = node.innerHTML;
|
|
||||||
else {
|
|
||||||
var asXml = function(n) {
|
|
||||||
var s = "";
|
|
||||||
if (n.nodeType == 1) {
|
|
||||||
s += "<" + n.nodeName;
|
|
||||||
for (var i=0; i<n.attributes.length;i++)
|
|
||||||
s += " " + n.attributes[i].nodeName + "=\"" + (n.attributes[i].nodeValue||"").toString() + "\"";
|
|
||||||
if (n.firstChild) {
|
|
||||||
s += ">";
|
|
||||||
for (var c=n.firstChild; c; c=c.nextSibling)
|
|
||||||
s += asXml(c);
|
|
||||||
s += "</"+n.nodeName+">";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
s += "/>";
|
|
||||||
}
|
|
||||||
else if (n.nodeType == 3)
|
|
||||||
s += n.nodeValue;
|
|
||||||
else if (n.nodeType == 4)
|
|
||||||
s += "<![CDATA[" + n.nodeValue + "]]>";
|
|
||||||
return s;
|
|
||||||
};
|
|
||||||
for (var c=node.firstChild; c; c=c.nextSibling)
|
|
||||||
s += asXml(c);
|
|
||||||
}
|
|
||||||
return s;
|
|
||||||
},
|
|
||||||
escape: function(txt) {
|
|
||||||
return txt.replace(/[\\]/g, "\\\\")
|
|
||||||
.replace(/[\"]/g, '\\"')
|
|
||||||
.replace(/[\n]/g, '\\n')
|
|
||||||
.replace(/[\r]/g, '\\r');
|
|
||||||
},
|
|
||||||
removeWhite: function(e) {
|
|
||||||
e.normalize();
|
|
||||||
for (var n = e.firstChild; n; ) {
|
|
||||||
if (n.nodeType == 3) { // text node
|
|
||||||
if (!n.nodeValue.match(/[^ \f\n\r\t\v]/)) { // pure whitespace text node
|
|
||||||
var nxt = n.nextSibling;
|
|
||||||
e.removeChild(n);
|
|
||||||
n = nxt;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
n = n.nextSibling;
|
|
||||||
}
|
|
||||||
else if (n.nodeType == 1) { // element node
|
|
||||||
X.removeWhite(n);
|
|
||||||
n = n.nextSibling;
|
|
||||||
}
|
|
||||||
else // any other node
|
|
||||||
n = n.nextSibling;
|
|
||||||
}
|
|
||||||
return e;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
xml = parseXml(xml);
|
|
||||||
if (xml.nodeType == 9) // document node
|
|
||||||
xml = xml.documentElement;
|
|
||||||
var json = X.toJson(X.toObj(X.removeWhite(xml)), xml.nodeName, "\t");
|
|
||||||
return "{\n" + tab + (tab ? json.replace(/\t/g, tab) : json.replace(/\t|\n/g, "")) + "\n}";
|
|
||||||
}
|
|
@@ -33,7 +33,6 @@
|
|||||||
<script src="node_modules/reflect-metadata/Reflect.js"></script>
|
<script src="node_modules/reflect-metadata/Reflect.js"></script>
|
||||||
<script src="node_modules/systemjs/dist/system.src.js"></script>
|
<script src="node_modules/systemjs/dist/system.src.js"></script>
|
||||||
|
|
||||||
<script src="/app/js/xml2json.js"></script>
|
|
||||||
<script src="/app/js/Polyline.js"></script>
|
<script src="/app/js/Polyline.js"></script>
|
||||||
|
|
||||||
<script src="node_modules/pdfjs-dist/web/compatibility.js"></script>
|
<script src="node_modules/pdfjs-dist/web/compatibility.js"></script>
|
||||||
|
Reference in New Issue
Block a user