保存良乡大屏数据 和iframe数据 1-23
This commit is contained in:
parent
77f9e4d546
commit
537031aae6
444
public/static/3d-force-graph/data/three-spritetext.mjs
Normal file
444
public/static/3d-force-graph/data/three-spritetext.mjs
Normal file
|
@ -0,0 +1,444 @@
|
|||
import { CanvasTexture, Sprite, SpriteMaterial, SRGBColorSpace } from 'three';
|
||||
|
||||
function _arrayLikeToArray(r, a) {
|
||||
(null == a || a > r.length) && (a = r.length);
|
||||
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
|
||||
return n;
|
||||
}
|
||||
function _arrayWithHoles(r) {
|
||||
if (Array.isArray(r)) return r;
|
||||
}
|
||||
function _arrayWithoutHoles(r) {
|
||||
if (Array.isArray(r)) return _arrayLikeToArray(r);
|
||||
}
|
||||
function _assertThisInitialized(e) {
|
||||
if (undefined === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
||||
return e;
|
||||
}
|
||||
function _callSuper(t, o, e) {
|
||||
return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e, _getPrototypeOf(t).constructor) : o.apply(t, e));
|
||||
}
|
||||
function _classCallCheck(a, n) {
|
||||
if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");
|
||||
}
|
||||
function _defineProperties(e, r) {
|
||||
for (var t = 0; t < r.length; t++) {
|
||||
var o = r[t];
|
||||
o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o);
|
||||
}
|
||||
}
|
||||
function _createClass(e, r, t) {
|
||||
return _defineProperties(e.prototype, r), Object.defineProperty(e, "prototype", {
|
||||
writable: false
|
||||
}), e;
|
||||
}
|
||||
function _getPrototypeOf(t) {
|
||||
return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {
|
||||
return t.__proto__ || Object.getPrototypeOf(t);
|
||||
}, _getPrototypeOf(t);
|
||||
}
|
||||
function _inherits(t, e) {
|
||||
if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
|
||||
t.prototype = Object.create(e && e.prototype, {
|
||||
constructor: {
|
||||
value: t,
|
||||
writable: true,
|
||||
configurable: true
|
||||
}
|
||||
}), Object.defineProperty(t, "prototype", {
|
||||
writable: false
|
||||
}), e && _setPrototypeOf(t, e);
|
||||
}
|
||||
function _isNativeReflectConstruct() {
|
||||
try {
|
||||
var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
|
||||
} catch (t) {}
|
||||
return (_isNativeReflectConstruct = function () {
|
||||
return !!t;
|
||||
})();
|
||||
}
|
||||
function _iterableToArray(r) {
|
||||
if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r);
|
||||
}
|
||||
function _iterableToArrayLimit(r, l) {
|
||||
var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
|
||||
if (null != t) {
|
||||
var e,
|
||||
n,
|
||||
i,
|
||||
u,
|
||||
a = [],
|
||||
f = true,
|
||||
o = false;
|
||||
try {
|
||||
if (i = (t = t.call(r)).next, 0 === l) {
|
||||
if (Object(t) !== t) return;
|
||||
f = !1;
|
||||
} else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
|
||||
} catch (r) {
|
||||
o = true, n = r;
|
||||
} finally {
|
||||
try {
|
||||
if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;
|
||||
} finally {
|
||||
if (o) throw n;
|
||||
}
|
||||
}
|
||||
return a;
|
||||
}
|
||||
}
|
||||
function _nonIterableRest() {
|
||||
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
||||
}
|
||||
function _nonIterableSpread() {
|
||||
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
||||
}
|
||||
function _possibleConstructorReturn(t, e) {
|
||||
if (e && ("object" == typeof e || "function" == typeof e)) return e;
|
||||
if (undefined !== e) throw new TypeError("Derived constructors may only return object or undefined");
|
||||
return _assertThisInitialized(t);
|
||||
}
|
||||
function _setPrototypeOf(t, e) {
|
||||
return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {
|
||||
return t.__proto__ = e, t;
|
||||
}, _setPrototypeOf(t, e);
|
||||
}
|
||||
function _slicedToArray(r, e) {
|
||||
return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();
|
||||
}
|
||||
function _toConsumableArray(r) {
|
||||
return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();
|
||||
}
|
||||
function _toPrimitive(t, r) {
|
||||
if ("object" != typeof t || !t) return t;
|
||||
var e = t[Symbol.toPrimitive];
|
||||
if (undefined !== e) {
|
||||
var i = e.call(t, r);
|
||||
if ("object" != typeof i) return i;
|
||||
throw new TypeError("@@toPrimitive must return a primitive value.");
|
||||
}
|
||||
return (String )(t);
|
||||
}
|
||||
function _toPropertyKey(t) {
|
||||
var i = _toPrimitive(t, "string");
|
||||
return "symbol" == typeof i ? i : i + "";
|
||||
}
|
||||
function _unsupportedIterableToArray(r, a) {
|
||||
if (r) {
|
||||
if ("string" == typeof r) return _arrayLikeToArray(r, a);
|
||||
var t = {}.toString.call(r).slice(8, -1);
|
||||
return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : undefined;
|
||||
}
|
||||
}
|
||||
|
||||
var three = typeof window !== 'undefined' && window.THREE ? window.THREE // Prefer consumption from global THREE, if exists
|
||||
: {
|
||||
CanvasTexture: CanvasTexture,
|
||||
Sprite: Sprite,
|
||||
SpriteMaterial: SpriteMaterial,
|
||||
SRGBColorSpace: SRGBColorSpace
|
||||
};
|
||||
var _default = /*#__PURE__*/function (_three$Sprite) {
|
||||
function _default() {
|
||||
var _this;
|
||||
var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
||||
var textHeight = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10;
|
||||
var color = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'rgba(255, 255, 255, 1)';
|
||||
_classCallCheck(this, _default);
|
||||
_this = _callSuper(this, _default, [new three.SpriteMaterial()]);
|
||||
_this._text = "".concat(text);
|
||||
_this._textHeight = textHeight;
|
||||
_this._color = color;
|
||||
_this._backgroundColor = false; // no background color
|
||||
|
||||
_this._padding = 0;
|
||||
_this._borderWidth = 0;
|
||||
_this._borderRadius = 0;
|
||||
_this._borderColor = 'white';
|
||||
_this._strokeWidth = 0;
|
||||
_this._strokeColor = 'white';
|
||||
_this._fontFace = 'system-ui';
|
||||
_this._fontSize = 90; // defines text resolution
|
||||
_this._fontWeight = 'normal';
|
||||
_this._canvas = document.createElement('canvas');
|
||||
_this._genCanvas();
|
||||
return _this;
|
||||
}
|
||||
_inherits(_default, _three$Sprite);
|
||||
return _createClass(_default, [{
|
||||
key: "text",
|
||||
get: function get() {
|
||||
return this._text;
|
||||
},
|
||||
set: function set(text) {
|
||||
this._text = text;
|
||||
this._genCanvas();
|
||||
}
|
||||
}, {
|
||||
key: "textHeight",
|
||||
get: function get() {
|
||||
return this._textHeight;
|
||||
},
|
||||
set: function set(textHeight) {
|
||||
this._textHeight = textHeight;
|
||||
this._genCanvas();
|
||||
}
|
||||
}, {
|
||||
key: "color",
|
||||
get: function get() {
|
||||
return this._color;
|
||||
},
|
||||
set: function set(color) {
|
||||
this._color = color;
|
||||
this._genCanvas();
|
||||
}
|
||||
}, {
|
||||
key: "backgroundColor",
|
||||
get: function get() {
|
||||
return this._backgroundColor;
|
||||
},
|
||||
set: function set(color) {
|
||||
this._backgroundColor = color;
|
||||
this._genCanvas();
|
||||
}
|
||||
}, {
|
||||
key: "padding",
|
||||
get: function get() {
|
||||
return this._padding;
|
||||
},
|
||||
set: function set(padding) {
|
||||
this._padding = padding;
|
||||
this._genCanvas();
|
||||
}
|
||||
}, {
|
||||
key: "borderWidth",
|
||||
get: function get() {
|
||||
return this._borderWidth;
|
||||
},
|
||||
set: function set(borderWidth) {
|
||||
this._borderWidth = borderWidth;
|
||||
this._genCanvas();
|
||||
}
|
||||
}, {
|
||||
key: "borderRadius",
|
||||
get: function get() {
|
||||
return this._borderRadius;
|
||||
},
|
||||
set: function set(borderRadius) {
|
||||
this._borderRadius = borderRadius;
|
||||
this._genCanvas();
|
||||
}
|
||||
}, {
|
||||
key: "borderColor",
|
||||
get: function get() {
|
||||
return this._borderColor;
|
||||
},
|
||||
set: function set(borderColor) {
|
||||
this._borderColor = borderColor;
|
||||
this._genCanvas();
|
||||
}
|
||||
}, {
|
||||
key: "fontFace",
|
||||
get: function get() {
|
||||
return this._fontFace;
|
||||
},
|
||||
set: function set(fontFace) {
|
||||
this._fontFace = fontFace;
|
||||
this._genCanvas();
|
||||
}
|
||||
}, {
|
||||
key: "fontSize",
|
||||
get: function get() {
|
||||
return this._fontSize;
|
||||
},
|
||||
set: function set(fontSize) {
|
||||
this._fontSize = fontSize;
|
||||
this._genCanvas();
|
||||
}
|
||||
}, {
|
||||
key: "fontWeight",
|
||||
get: function get() {
|
||||
return this._fontWeight;
|
||||
},
|
||||
set: function set(fontWeight) {
|
||||
this._fontWeight = fontWeight;
|
||||
this._genCanvas();
|
||||
}
|
||||
}, {
|
||||
key: "strokeWidth",
|
||||
get: function get() {
|
||||
return this._strokeWidth;
|
||||
},
|
||||
set: function set(strokeWidth) {
|
||||
this._strokeWidth = strokeWidth;
|
||||
this._genCanvas();
|
||||
}
|
||||
}, {
|
||||
key: "strokeColor",
|
||||
get: function get() {
|
||||
return this._strokeColor;
|
||||
},
|
||||
set: function set(strokeColor) {
|
||||
this._strokeColor = strokeColor;
|
||||
this._genCanvas();
|
||||
}
|
||||
}, {
|
||||
key: "_genCanvas",
|
||||
value: function _genCanvas() {
|
||||
var _this2 = this;
|
||||
var canvas = this._canvas;
|
||||
var ctx = canvas.getContext('2d');
|
||||
var relFactor = 1 / this.textHeight;
|
||||
var border = Array.isArray(this.borderWidth) ? this.borderWidth : [this.borderWidth, this.borderWidth]; // x,y border
|
||||
var relBorder = border.map(function (b) {
|
||||
return b * _this2.fontSize * relFactor;
|
||||
}); // border in canvas units
|
||||
|
||||
var borderRadius = Array.isArray(this.borderRadius) ? this.borderRadius : [this.borderRadius, this.borderRadius, this.borderRadius, this.borderRadius]; // tl tr br bl corners
|
||||
var relBorderRadius = borderRadius.map(function (b) {
|
||||
return b * _this2.fontSize * relFactor;
|
||||
}); // border radius in canvas units
|
||||
|
||||
var padding = Array.isArray(this.padding) ? this.padding : [this.padding, this.padding]; // x,y padding
|
||||
var relPadding = padding.map(function (p) {
|
||||
return p * _this2.fontSize * relFactor;
|
||||
}); // padding in canvas units
|
||||
|
||||
var lines = this.text.split('\n');
|
||||
var font = "".concat(this.fontWeight, " ").concat(this.fontSize, "px ").concat(this.fontFace);
|
||||
ctx.font = font; // measure canvas with appropriate font
|
||||
var innerWidth = Math.max.apply(Math, _toConsumableArray(lines.map(function (line) {
|
||||
return ctx.measureText(line).width;
|
||||
})));
|
||||
var innerHeight = this.fontSize * lines.length;
|
||||
canvas.width = innerWidth + relBorder[0] * 2 + relPadding[0] * 2;
|
||||
canvas.height = innerHeight + relBorder[1] * 2 + relPadding[1] * 2;
|
||||
|
||||
// paint border
|
||||
if (this.borderWidth) {
|
||||
ctx.strokeStyle = this.borderColor;
|
||||
if (relBorder[0]) {
|
||||
// left + right borders
|
||||
var hb = relBorder[0] / 2;
|
||||
ctx.lineWidth = relBorder[0];
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(hb, relBorderRadius[0]);
|
||||
ctx.lineTo(hb, canvas.height - relBorderRadius[3]);
|
||||
ctx.moveTo(canvas.width - hb, relBorderRadius[1]);
|
||||
ctx.lineTo(canvas.width - hb, canvas.height - relBorderRadius[2]);
|
||||
ctx.stroke();
|
||||
}
|
||||
if (relBorder[1]) {
|
||||
// top + bottom borders
|
||||
var _hb = relBorder[1] / 2;
|
||||
ctx.lineWidth = relBorder[1];
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(Math.max(relBorder[0], relBorderRadius[0]), _hb);
|
||||
ctx.lineTo(canvas.width - Math.max(relBorder[0], relBorderRadius[1]), _hb);
|
||||
ctx.moveTo(Math.max(relBorder[0], relBorderRadius[3]), canvas.height - _hb);
|
||||
ctx.lineTo(canvas.width - Math.max(relBorder[0], relBorderRadius[2]), canvas.height - _hb);
|
||||
ctx.stroke();
|
||||
}
|
||||
if (this.borderRadius) {
|
||||
// strike rounded corners
|
||||
var cornerWidth = Math.max.apply(Math, _toConsumableArray(relBorder));
|
||||
var _hb2 = cornerWidth / 2;
|
||||
ctx.lineWidth = cornerWidth;
|
||||
ctx.beginPath();
|
||||
[!!relBorderRadius[0] && [relBorderRadius[0], _hb2, _hb2, relBorderRadius[0]], !!relBorderRadius[1] && [canvas.width - relBorderRadius[1], canvas.width - _hb2, _hb2, relBorderRadius[1]], !!relBorderRadius[2] && [canvas.width - relBorderRadius[2], canvas.width - _hb2, canvas.height - _hb2, canvas.height - relBorderRadius[2]], !!relBorderRadius[3] && [relBorderRadius[3], _hb2, canvas.height - _hb2, canvas.height - relBorderRadius[3]]].filter(function (d) {
|
||||
return d;
|
||||
}).forEach(function (_ref) {
|
||||
var _ref2 = _slicedToArray(_ref, 4),
|
||||
x0 = _ref2[0],
|
||||
x1 = _ref2[1],
|
||||
y0 = _ref2[2],
|
||||
y1 = _ref2[3];
|
||||
ctx.moveTo(x0, y0);
|
||||
ctx.quadraticCurveTo(x1, y0, x1, y1);
|
||||
});
|
||||
ctx.stroke();
|
||||
}
|
||||
}
|
||||
|
||||
// paint background
|
||||
if (this.backgroundColor) {
|
||||
ctx.fillStyle = this.backgroundColor;
|
||||
if (!this.borderRadius) {
|
||||
ctx.fillRect(relBorder[0], relBorder[1], canvas.width - relBorder[0] * 2, canvas.height - relBorder[1] * 2);
|
||||
} else {
|
||||
// fill with rounded corners
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(relBorder[0], relBorderRadius[0]);
|
||||
[[relBorder[0], relBorderRadius[0], canvas.width - relBorderRadius[1], relBorder[1], relBorder[1], relBorder[1]],
|
||||
// t
|
||||
[canvas.width - relBorder[0], canvas.width - relBorder[0], canvas.width - relBorder[0], relBorder[1], relBorderRadius[1], canvas.height - relBorderRadius[2]],
|
||||
// r
|
||||
[canvas.width - relBorder[0], canvas.width - relBorderRadius[2], relBorderRadius[3], canvas.height - relBorder[1], canvas.height - relBorder[1], canvas.height - relBorder[1]],
|
||||
// b
|
||||
[relBorder[0], relBorder[0], relBorder[0], canvas.height - relBorder[1], canvas.height - relBorderRadius[3], relBorderRadius[0]] // t
|
||||
].forEach(function (_ref3) {
|
||||
var _ref4 = _slicedToArray(_ref3, 6),
|
||||
x0 = _ref4[0],
|
||||
x1 = _ref4[1],
|
||||
x2 = _ref4[2],
|
||||
y0 = _ref4[3],
|
||||
y1 = _ref4[4],
|
||||
y2 = _ref4[5];
|
||||
ctx.quadraticCurveTo(x0, y0, x1, y1);
|
||||
ctx.lineTo(x2, y2);
|
||||
});
|
||||
ctx.closePath();
|
||||
ctx.fill();
|
||||
}
|
||||
}
|
||||
ctx.translate.apply(ctx, _toConsumableArray(relBorder));
|
||||
ctx.translate.apply(ctx, _toConsumableArray(relPadding));
|
||||
|
||||
// paint text
|
||||
ctx.font = font; // Set font again after canvas is resized, as context properties are reset
|
||||
ctx.fillStyle = this.color;
|
||||
ctx.textBaseline = 'bottom';
|
||||
var drawTextStroke = this.strokeWidth > 0;
|
||||
if (drawTextStroke) {
|
||||
ctx.lineWidth = this.strokeWidth * this.fontSize / 10;
|
||||
ctx.strokeStyle = this.strokeColor;
|
||||
}
|
||||
lines.forEach(function (line, index) {
|
||||
var lineX = (innerWidth - ctx.measureText(line).width) / 2;
|
||||
var lineY = (index + 1) * _this2.fontSize;
|
||||
drawTextStroke && ctx.strokeText(line, lineX, lineY);
|
||||
ctx.fillText(line, lineX, lineY);
|
||||
});
|
||||
|
||||
// Inject canvas into sprite
|
||||
if (this.material.map) this.material.map.dispose(); // gc previous texture
|
||||
var texture = this.material.map = new three.CanvasTexture(canvas);
|
||||
texture.colorSpace = three.SRGBColorSpace;
|
||||
var yScale = this.textHeight * lines.length + border[1] * 2 + padding[1] * 2;
|
||||
this.scale.set(yScale * canvas.width / canvas.height, yScale, 0);
|
||||
}
|
||||
}, {
|
||||
key: "clone",
|
||||
value: function clone() {
|
||||
return new this.constructor(this.text, this.textHeight, this.color).copy(this);
|
||||
}
|
||||
}, {
|
||||
key: "copy",
|
||||
value: function copy(source) {
|
||||
three.Sprite.prototype.copy.call(this, source);
|
||||
this.color = source.color;
|
||||
this.backgroundColor = source.backgroundColor;
|
||||
this.padding = source.padding;
|
||||
this.borderWidth = source.borderWidth;
|
||||
this.borderColor = source.borderColor;
|
||||
this.fontFace = source.fontFace;
|
||||
this.fontSize = source.fontSize;
|
||||
this.fontWeight = source.fontWeight;
|
||||
this.strokeWidth = source.strokeWidth;
|
||||
this.strokeColor = source.strokeColor;
|
||||
return this;
|
||||
}
|
||||
}]);
|
||||
}(three.Sprite);
|
||||
|
||||
export { _default as default };
|
37049
public/static/3d-force-graph/data/three.core.js
Normal file
37049
public/static/3d-force-graph/data/three.core.js
Normal file
File diff suppressed because one or more lines are too long
17626
public/static/3d-force-graph/data/three.module.js
Normal file
17626
public/static/3d-force-graph/data/three.module.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
5102
src/bigscreen2/data/futureRisk.json
Normal file
5102
src/bigscreen2/data/futureRisk.json
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
13
src/bigscreen2/data/naershiye.json
Normal file
13
src/bigscreen2/data/naershiye.json
Normal file
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"data": {
|
||||
"投资关系": 82.44588614888224,
|
||||
"操盘模式": 25,
|
||||
"财务状态": 54.00000000000001,
|
||||
"健康指数": 48,
|
||||
"运行状态": 58.56999999999999,
|
||||
"规模扩张": 20,
|
||||
"声誉风险": 65,
|
||||
"外部环境": 5,
|
||||
"等级": 5
|
||||
}
|
||||
}
|
|
@ -4,8 +4,8 @@ import axios from 'axios'
|
|||
//
|
||||
const http = axios.create({
|
||||
//通用请求
|
||||
// baseURL:'http://61.240.140.173:8000/',//后端的地址前缀
|
||||
baseURL:'/api/',//后端的地址前缀
|
||||
baseURL:'http://61.240.140.173:8000/',//后端的地址前缀
|
||||
// baseURL:'/api/',//后端的地址前缀
|
||||
// withCredentials:truenpm run serve
|
||||
// async:true,
|
||||
// timeout:'10000',//10s 超时时间
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 4.2 KiB |
Binary file not shown.
Before Width: | Height: | Size: 4.2 KiB |
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 8.8 KiB |
Binary file not shown.
Before Width: | Height: | Size: 43 KiB |
Binary file not shown.
Before Width: | Height: | Size: 289 KiB |
Binary file not shown.
Before Width: | Height: | Size: 36 KiB |
|
@ -1 +0,0 @@
|
|||
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="Logo.ico"><title>资本市场系统性风险平台</title><script defer="defer" src="/js/chunk-vendors.4f7948c0.js"></script><script defer="defer" src="/js/app.5c692974.js"></script><link href="/css/chunk-vendors.3a09ad9a.css" rel="stylesheet"><link href="/css/app.d4baead9.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but finacial doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1,29 +0,0 @@
|
|||
<head>
|
||||
<style> body { margin: 0; } </style>
|
||||
|
||||
<script src="3d-force-graph.min.js"></script>
|
||||
<!-- <script src="../../dist/3d-force-graph.js"></script>-->
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="3d-graph"></div>
|
||||
|
||||
<!-- <script type="importmap">{ "imports": { "three": "//unpkg.com/three/build/three.module.js" }}</script> -->
|
||||
<script src="../../../node_modules/three/build/three.module.js"></script>
|
||||
<script type="module">
|
||||
import { UnrealBloomPass } from '../../../node_modules/three/examples/jsm/postprocessing/UnrealBloomPass.js';
|
||||
|
||||
const Graph = ForceGraph3D()
|
||||
(document.getElementById('3d-graph'))
|
||||
.backgroundColor('#000003')
|
||||
.jsonUrl('../datasets/miserables.json')
|
||||
.nodeLabel('id')
|
||||
.nodeAutoColorBy('group');
|
||||
|
||||
const bloomPass = new UnrealBloomPass();
|
||||
bloomPass.strength = 4;
|
||||
bloomPass.radius = 1;
|
||||
bloomPass.threshold = 0;
|
||||
Graph.postProcessingComposer().addPass(bloomPass);
|
||||
</script>
|
||||
</body>
|
|
@ -1,80 +0,0 @@
|
|||
<head>
|
||||
<style> body { margin: 0; } </style>
|
||||
|
||||
<script src="3d-force-graph.min.js"></script>
|
||||
<!--<script src="../../dist/3d-force-graph.js"></script>-->
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="3d-graph"></div>
|
||||
<div style="position: absolute; top: 5px; right: 5px;">
|
||||
<button id="rotationToggle" style="margin: 8px; height: 25px; width: 150px;">
|
||||
暂停旋转
|
||||
</button>
|
||||
</div>
|
||||
<script type="importmap">{ "imports": { "three": "//unpkg.com/three/build/three.module.js" }}</script>
|
||||
<script type="module">
|
||||
import SpriteText from "//unpkg.com/three-spritetext/dist/three-spritetext.mjs";
|
||||
|
||||
const distance = 500;
|
||||
let isRotationActive = true;
|
||||
|
||||
// Random tree
|
||||
// const N = 300;
|
||||
// const gData = {
|
||||
// nodes: [...Array(N).keys()].map(i => ({ id: i,group:Math.floor(i/7) })),
|
||||
// links: [...Array(N).keys()]
|
||||
// .filter(id => id)
|
||||
// .map(id => ({
|
||||
// source: id,
|
||||
// target: Math.round(Math.random() * (id-1))
|
||||
// }))
|
||||
// };
|
||||
const Graph = ForceGraph3D()
|
||||
(document.getElementById('3d-graph'))
|
||||
// .graphData(gData)
|
||||
.jsonUrl('./miserables.json')
|
||||
.nodeAutoColorBy('group')
|
||||
// .nodeLabel('id')
|
||||
// .linkDirectionalParticles("value")
|
||||
// .linkDirectionalParticleWidth(2)
|
||||
// .linkDirectionalParticleSpeed(d => d.value * 0.001)
|
||||
// .linkWidth(2)
|
||||
.nodeThreeObject(node => {// 借助三方库 实现文字几何的展示
|
||||
const sprite = new SpriteText(node.id);
|
||||
sprite.material.depthWrite = false; // make sprite background transparent
|
||||
sprite.color = node.color;// node.color
|
||||
sprite.textHeight = 8;
|
||||
return sprite;
|
||||
})
|
||||
.linkDirectionalArrowLength(3)// 让边带上箭头
|
||||
.linkDirectionalArrowRelPos(1)// 设置箭头位置
|
||||
.cameraPosition({ z: distance })
|
||||
|
||||
// Spread nodes a little wider
|
||||
// Graph.d3Force('charge').strength(-120);
|
||||
|
||||
// camera orbit
|
||||
let angle = 0;
|
||||
let time = setInterval(() => {
|
||||
if (isRotationActive) {
|
||||
Graph.cameraPosition({
|
||||
x: distance * Math.sin(angle),
|
||||
y: 0,
|
||||
z: distance * Math.cos(angle),
|
||||
});
|
||||
angle += Math.PI / 300;
|
||||
}
|
||||
}, 10);
|
||||
|
||||
document.getElementById('rotationToggle').addEventListener('click', event => {
|
||||
if(isRotationActive){
|
||||
isRotationActive = !isRotationActive
|
||||
}else{
|
||||
isRotationActive = !isRotationActive
|
||||
}
|
||||
event.target.innerHTML = `${(isRotationActive ? '暂停' : '重置')} 旋转`;
|
||||
});
|
||||
|
||||
</script>
|
||||
</body>
|
|
@ -1,28 +0,0 @@
|
|||
<head>
|
||||
<style> body { margin: 0; } </style>
|
||||
|
||||
<script src="3d-force-graph.min.js"></script>
|
||||
<!--<script src="../../dist/3d-force-graph.js"></script>-->
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="3d-graph"></div>
|
||||
|
||||
<script>
|
||||
// Random tree
|
||||
const N = 1500;
|
||||
const gData = {
|
||||
nodes: [...Array(N).keys()].map(i => ({ id: i })),
|
||||
links: [...Array(N).keys()]
|
||||
.filter(id => id)
|
||||
.map(id => ({
|
||||
source: id,
|
||||
target: Math.round(Math.random() * (id-1))
|
||||
}))
|
||||
};
|
||||
|
||||
const Graph = ForceGraph3D()
|
||||
(document.getElementById('3d-graph'))
|
||||
.graphData(gData);
|
||||
</script>
|
||||
</body>
|
|
@ -1,96 +0,0 @@
|
|||
<head>
|
||||
<style> body { margin: 0; } </style>
|
||||
|
||||
<script src="3d-force-graph.min.js"></script>
|
||||
<!--<script src="../../dist/3d-force-graph.js"></script>-->
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="3d-graph"></div>
|
||||
<div style="position: absolute; top: 5px; right: 5px;">
|
||||
<button id="rotationToggle" style="margin: 8px; height: 25px; width: 150px;">
|
||||
暂停旋转
|
||||
</button>
|
||||
</div>
|
||||
<script type="importmap">{ "imports": { "three": "//unpkg.com/three/build/three.module.js" }}</script>
|
||||
<script type="module">
|
||||
import SpriteText from "//unpkg.com/three-spritetext/dist/three-spritetext.mjs";
|
||||
|
||||
const distance = 2000;
|
||||
let isRotationActive = true;
|
||||
|
||||
// Random tree
|
||||
const N = 1200;
|
||||
const gData = {
|
||||
nodes: [...Array(N).keys()].map(i => ({ id: i,group:Math.floor(i/150) })),
|
||||
links: [...Array(N).keys()]
|
||||
.filter(id => id)
|
||||
.map(id => ({
|
||||
source: id,
|
||||
target: Math.round(Math.random() * (id-1))
|
||||
}))
|
||||
};
|
||||
const Graph = ForceGraph3D()
|
||||
(document.getElementById('3d-graph'))
|
||||
.graphData(gData)
|
||||
// .jsonUrl('./miserables.json')
|
||||
.nodeAutoColorBy('group')
|
||||
.nodeLabel('id')
|
||||
.linkDirectionalParticles(4)
|
||||
.linkDirectionalParticleWidth(4)
|
||||
.linkDirectionalParticleSpeed(d => 4 * 0.001)// d.value
|
||||
.linkWidth(4)
|
||||
.nodeRelSize(6)
|
||||
// .nodeThreeObject(node => {// 借助三方库 实现文字几何的展示
|
||||
// const sprite = new SpriteText(node.id);
|
||||
// sprite.material.depthWrite = false; // make sprite background transparent
|
||||
// sprite.color = node.color;// node.color
|
||||
// sprite.textHeight = 8;
|
||||
// return sprite;
|
||||
// })
|
||||
// .linkDirectionalArrowLength(3)// 让边带上箭头
|
||||
// .linkDirectionalArrowRelPos(1)// 设置箭头位置
|
||||
.onNodeClick(node => {
|
||||
// Aim at node from outside it
|
||||
const distance = 1800;
|
||||
const distRatio = 1 + distance/Math.hypot(node.x, node.y, node.z);
|
||||
|
||||
const newPos = node.x || node.y || node.z
|
||||
? { x: node.x * distRatio, y: node.y * distRatio, z: node.z * distRatio }
|
||||
: { x: 0, y: 0, z: distance }; // special case if node is in (0,0,0)
|
||||
|
||||
Graph.cameraPosition(
|
||||
newPos, // new position
|
||||
node, // lookAt ({ x, y, z })
|
||||
3000 // ms transition duration
|
||||
)
|
||||
})
|
||||
.cameraPosition({ z: distance })
|
||||
|
||||
// Spread nodes a little wider
|
||||
// Graph.d3Force('charge').strength(-120);
|
||||
|
||||
// camera orbit
|
||||
let angle = 0;
|
||||
let time = setInterval(() => {
|
||||
if (isRotationActive) {
|
||||
Graph.cameraPosition({
|
||||
x: distance * Math.sin(angle),
|
||||
y: 0,
|
||||
z: distance * Math.cos(angle),
|
||||
});
|
||||
angle += Math.PI / 500;
|
||||
}
|
||||
}, 10);
|
||||
|
||||
document.getElementById('rotationToggle').addEventListener('click', event => {
|
||||
if(isRotationActive){
|
||||
isRotationActive = !isRotationActive
|
||||
}else{
|
||||
isRotationActive = !isRotationActive
|
||||
}
|
||||
event.target.innerHTML = `${(isRotationActive ? '暂停' : '重置')} 旋转`;
|
||||
});
|
||||
|
||||
</script>
|
||||
</body>
|
|
@ -1,337 +0,0 @@
|
|||
{
|
||||
"nodes": [
|
||||
{"id": "Myriel", "group": 1},
|
||||
{"id": "Napoleon", "group": 1},
|
||||
{"id": "Mlle.Baptistine", "group": 1},
|
||||
{"id": "Mme.Magloire", "group": 1},
|
||||
{"id": "CountessdeLo", "group": 1},
|
||||
{"id": "Geborand", "group": 1},
|
||||
{"id": "Champtercier", "group": 1},
|
||||
{"id": "Cravatte", "group": 1},
|
||||
{"id": "Count", "group": 1},
|
||||
{"id": "OldMan", "group": 1},
|
||||
{"id": "Labarre", "group": 2},
|
||||
{"id": "Valjean", "group": 2},
|
||||
{"id": "Marguerite", "group": 3},
|
||||
{"id": "Mme.deR", "group": 2},
|
||||
{"id": "Isabeau", "group": 2},
|
||||
{"id": "Gervais", "group": 2},
|
||||
{"id": "Tholomyes", "group": 3},
|
||||
{"id": "Listolier", "group": 3},
|
||||
{"id": "Fameuil", "group": 3},
|
||||
{"id": "Blacheville", "group": 3},
|
||||
{"id": "Favourite", "group": 3},
|
||||
{"id": "Dahlia", "group": 3},
|
||||
{"id": "Zephine", "group": 3},
|
||||
{"id": "Fantine", "group": 3},
|
||||
{"id": "Mme.Thenardier", "group": 4},
|
||||
{"id": "Thenardier", "group": 4},
|
||||
{"id": "Cosette", "group": 5},
|
||||
{"id": "Javert", "group": 4},
|
||||
{"id": "Fauchelevent", "group": 0},
|
||||
{"id": "Bamatabois", "group": 2},
|
||||
{"id": "Perpetue", "group": 3},
|
||||
{"id": "Simplice", "group": 2},
|
||||
{"id": "Scaufflaire", "group": 2},
|
||||
{"id": "Woman1", "group": 2},
|
||||
{"id": "Judge", "group": 2},
|
||||
{"id": "Champmathieu", "group": 2},
|
||||
{"id": "Brevet", "group": 2},
|
||||
{"id": "Chenildieu", "group": 2},
|
||||
{"id": "Cochepaille", "group": 2},
|
||||
{"id": "Pontmercy", "group": 4},
|
||||
{"id": "Boulatruelle", "group": 6},
|
||||
{"id": "Eponine", "group": 4},
|
||||
{"id": "Anzelma", "group": 4},
|
||||
{"id": "Woman2", "group": 5},
|
||||
{"id": "MotherInnocent", "group": 0},
|
||||
{"id": "Gribier", "group": 0},
|
||||
{"id": "Jondrette", "group": 7},
|
||||
{"id": "Mme.Burgon", "group": 7},
|
||||
{"id": "Gavroche", "group": 8},
|
||||
{"id": "Gillenormand", "group": 5},
|
||||
{"id": "Magnon", "group": 5},
|
||||
{"id": "Mlle.Gillenormand", "group": 5},
|
||||
{"id": "Mme.Pontmercy", "group": 5},
|
||||
{"id": "Mlle.Vaubois", "group": 5},
|
||||
{"id": "Lt.Gillenormand", "group": 5},
|
||||
{"id": "Marius", "group": 8},
|
||||
{"id": "BaronessT", "group": 5},
|
||||
{"id": "Mabeuf", "group": 8},
|
||||
{"id": "Enjolras", "group": 8},
|
||||
{"id": "Combeferre", "group": 8},
|
||||
{"id": "Prouvaire", "group": 8},
|
||||
{"id": "Feuilly", "group": 8},
|
||||
{"id": "Courfeyrac", "group": 8},
|
||||
{"id": "Bahorel", "group": 8},
|
||||
{"id": "Bossuet", "group": 8},
|
||||
{"id": "Joly", "group": 8},
|
||||
{"id": "Grantaire", "group": 8},
|
||||
{"id": "MotherPlutarch", "group": 9},
|
||||
{"id": "Gueulemer", "group": 4},
|
||||
{"id": "Babet", "group": 4},
|
||||
{"id": "Claquesous", "group": 4},
|
||||
{"id": "Montparnasse", "group": 4},
|
||||
{"id": "Toussaint", "group": 5},
|
||||
{"id": "Child1", "group": 10},
|
||||
{"id": "Child2", "group": 10},
|
||||
{"id": "Brujon", "group": 4},
|
||||
{"id": "Mme.Hucheloup", "group": 8}
|
||||
],
|
||||
"links": [
|
||||
{"source": "Napoleon", "target": "Myriel", "value": 1},
|
||||
{"source": "Mlle.Baptistine", "target": "Myriel", "value": 8},
|
||||
{"source": "Mme.Magloire", "target": "Myriel", "value": 10},
|
||||
{"source": "Mme.Magloire", "target": "Mlle.Baptistine", "value": 6},
|
||||
{"source": "CountessdeLo", "target": "Myriel", "value": 1},
|
||||
{"source": "Geborand", "target": "Myriel", "value": 1},
|
||||
{"source": "Champtercier", "target": "Myriel", "value": 1},
|
||||
{"source": "Cravatte", "target": "Myriel", "value": 1},
|
||||
{"source": "Count", "target": "Myriel", "value": 2},
|
||||
{"source": "OldMan", "target": "Myriel", "value": 1},
|
||||
{"source": "Valjean", "target": "Labarre", "value": 1},
|
||||
{"source": "Valjean", "target": "Mme.Magloire", "value": 3},
|
||||
{"source": "Valjean", "target": "Mlle.Baptistine", "value": 3},
|
||||
{"source": "Valjean", "target": "Myriel", "value": 5},
|
||||
{"source": "Marguerite", "target": "Valjean", "value": 1},
|
||||
{"source": "Mme.deR", "target": "Valjean", "value": 1},
|
||||
{"source": "Isabeau", "target": "Valjean", "value": 1},
|
||||
{"source": "Gervais", "target": "Valjean", "value": 1},
|
||||
{"source": "Listolier", "target": "Tholomyes", "value": 4},
|
||||
{"source": "Fameuil", "target": "Tholomyes", "value": 4},
|
||||
{"source": "Fameuil", "target": "Listolier", "value": 4},
|
||||
{"source": "Blacheville", "target": "Tholomyes", "value": 4},
|
||||
{"source": "Blacheville", "target": "Listolier", "value": 4},
|
||||
{"source": "Blacheville", "target": "Fameuil", "value": 4},
|
||||
{"source": "Favourite", "target": "Tholomyes", "value": 3},
|
||||
{"source": "Favourite", "target": "Listolier", "value": 3},
|
||||
{"source": "Favourite", "target": "Fameuil", "value": 3},
|
||||
{"source": "Favourite", "target": "Blacheville", "value": 4},
|
||||
{"source": "Dahlia", "target": "Tholomyes", "value": 3},
|
||||
{"source": "Dahlia", "target": "Listolier", "value": 3},
|
||||
{"source": "Dahlia", "target": "Fameuil", "value": 3},
|
||||
{"source": "Dahlia", "target": "Blacheville", "value": 3},
|
||||
{"source": "Dahlia", "target": "Favourite", "value": 5},
|
||||
{"source": "Zephine", "target": "Tholomyes", "value": 3},
|
||||
{"source": "Zephine", "target": "Listolier", "value": 3},
|
||||
{"source": "Zephine", "target": "Fameuil", "value": 3},
|
||||
{"source": "Zephine", "target": "Blacheville", "value": 3},
|
||||
{"source": "Zephine", "target": "Favourite", "value": 4},
|
||||
{"source": "Zephine", "target": "Dahlia", "value": 4},
|
||||
{"source": "Fantine", "target": "Tholomyes", "value": 3},
|
||||
{"source": "Fantine", "target": "Listolier", "value": 3},
|
||||
{"source": "Fantine", "target": "Fameuil", "value": 3},
|
||||
{"source": "Fantine", "target": "Blacheville", "value": 3},
|
||||
{"source": "Fantine", "target": "Favourite", "value": 4},
|
||||
{"source": "Fantine", "target": "Dahlia", "value": 4},
|
||||
{"source": "Fantine", "target": "Zephine", "value": 4},
|
||||
{"source": "Fantine", "target": "Marguerite", "value": 2},
|
||||
{"source": "Fantine", "target": "Valjean", "value": 9},
|
||||
{"source": "Mme.Thenardier", "target": "Fantine", "value": 2},
|
||||
{"source": "Mme.Thenardier", "target": "Valjean", "value": 7},
|
||||
{"source": "Thenardier", "target": "Mme.Thenardier", "value": 13},
|
||||
{"source": "Thenardier", "target": "Fantine", "value": 1},
|
||||
{"source": "Thenardier", "target": "Valjean", "value": 12},
|
||||
{"source": "Cosette", "target": "Mme.Thenardier", "value": 4},
|
||||
{"source": "Cosette", "target": "Valjean", "value": 31},
|
||||
{"source": "Cosette", "target": "Tholomyes", "value": 1},
|
||||
{"source": "Cosette", "target": "Thenardier", "value": 1},
|
||||
{"source": "Javert", "target": "Valjean", "value": 17},
|
||||
{"source": "Javert", "target": "Fantine", "value": 5},
|
||||
{"source": "Javert", "target": "Thenardier", "value": 5},
|
||||
{"source": "Javert", "target": "Mme.Thenardier", "value": 1},
|
||||
{"source": "Javert", "target": "Cosette", "value": 1},
|
||||
{"source": "Fauchelevent", "target": "Valjean", "value": 8},
|
||||
{"source": "Fauchelevent", "target": "Javert", "value": 1},
|
||||
{"source": "Bamatabois", "target": "Fantine", "value": 1},
|
||||
{"source": "Bamatabois", "target": "Javert", "value": 1},
|
||||
{"source": "Bamatabois", "target": "Valjean", "value": 2},
|
||||
{"source": "Perpetue", "target": "Fantine", "value": 1},
|
||||
{"source": "Simplice", "target": "Perpetue", "value": 2},
|
||||
{"source": "Simplice", "target": "Valjean", "value": 3},
|
||||
{"source": "Simplice", "target": "Fantine", "value": 2},
|
||||
{"source": "Simplice", "target": "Javert", "value": 1},
|
||||
{"source": "Scaufflaire", "target": "Valjean", "value": 1},
|
||||
{"source": "Woman1", "target": "Valjean", "value": 2},
|
||||
{"source": "Woman1", "target": "Javert", "value": 1},
|
||||
{"source": "Judge", "target": "Valjean", "value": 3},
|
||||
{"source": "Judge", "target": "Bamatabois", "value": 2},
|
||||
{"source": "Champmathieu", "target": "Valjean", "value": 3},
|
||||
{"source": "Champmathieu", "target": "Judge", "value": 3},
|
||||
{"source": "Champmathieu", "target": "Bamatabois", "value": 2},
|
||||
{"source": "Brevet", "target": "Judge", "value": 2},
|
||||
{"source": "Brevet", "target": "Champmathieu", "value": 2},
|
||||
{"source": "Brevet", "target": "Valjean", "value": 2},
|
||||
{"source": "Brevet", "target": "Bamatabois", "value": 1},
|
||||
{"source": "Chenildieu", "target": "Judge", "value": 2},
|
||||
{"source": "Chenildieu", "target": "Champmathieu", "value": 2},
|
||||
{"source": "Chenildieu", "target": "Brevet", "value": 2},
|
||||
{"source": "Chenildieu", "target": "Valjean", "value": 2},
|
||||
{"source": "Chenildieu", "target": "Bamatabois", "value": 1},
|
||||
{"source": "Cochepaille", "target": "Judge", "value": 2},
|
||||
{"source": "Cochepaille", "target": "Champmathieu", "value": 2},
|
||||
{"source": "Cochepaille", "target": "Brevet", "value": 2},
|
||||
{"source": "Cochepaille", "target": "Chenildieu", "value": 2},
|
||||
{"source": "Cochepaille", "target": "Valjean", "value": 2},
|
||||
{"source": "Cochepaille", "target": "Bamatabois", "value": 1},
|
||||
{"source": "Pontmercy", "target": "Thenardier", "value": 1},
|
||||
{"source": "Boulatruelle", "target": "Thenardier", "value": 1},
|
||||
{"source": "Eponine", "target": "Mme.Thenardier", "value": 2},
|
||||
{"source": "Eponine", "target": "Thenardier", "value": 3},
|
||||
{"source": "Anzelma", "target": "Eponine", "value": 2},
|
||||
{"source": "Anzelma", "target": "Thenardier", "value": 2},
|
||||
{"source": "Anzelma", "target": "Mme.Thenardier", "value": 1},
|
||||
{"source": "Woman2", "target": "Valjean", "value": 3},
|
||||
{"source": "Woman2", "target": "Cosette", "value": 1},
|
||||
{"source": "Woman2", "target": "Javert", "value": 1},
|
||||
{"source": "MotherInnocent", "target": "Fauchelevent", "value": 3},
|
||||
{"source": "MotherInnocent", "target": "Valjean", "value": 1},
|
||||
{"source": "Gribier", "target": "Fauchelevent", "value": 2},
|
||||
{"source": "Mme.Burgon", "target": "Jondrette", "value": 1},
|
||||
{"source": "Gavroche", "target": "Mme.Burgon", "value": 2},
|
||||
{"source": "Gavroche", "target": "Thenardier", "value": 1},
|
||||
{"source": "Gavroche", "target": "Javert", "value": 1},
|
||||
{"source": "Gavroche", "target": "Valjean", "value": 1},
|
||||
{"source": "Gillenormand", "target": "Cosette", "value": 3},
|
||||
{"source": "Gillenormand", "target": "Valjean", "value": 2},
|
||||
{"source": "Magnon", "target": "Gillenormand", "value": 1},
|
||||
{"source": "Magnon", "target": "Mme.Thenardier", "value": 1},
|
||||
{"source": "Mlle.Gillenormand", "target": "Gillenormand", "value": 9},
|
||||
{"source": "Mlle.Gillenormand", "target": "Cosette", "value": 2},
|
||||
{"source": "Mlle.Gillenormand", "target": "Valjean", "value": 2},
|
||||
{"source": "Mme.Pontmercy", "target": "Mlle.Gillenormand", "value": 1},
|
||||
{"source": "Mme.Pontmercy", "target": "Pontmercy", "value": 1},
|
||||
{"source": "Mlle.Vaubois", "target": "Mlle.Gillenormand", "value": 1},
|
||||
{"source": "Lt.Gillenormand", "target": "Mlle.Gillenormand", "value": 2},
|
||||
{"source": "Lt.Gillenormand", "target": "Gillenormand", "value": 1},
|
||||
{"source": "Lt.Gillenormand", "target": "Cosette", "value": 1},
|
||||
{"source": "Marius", "target": "Mlle.Gillenormand", "value": 6},
|
||||
{"source": "Marius", "target": "Gillenormand", "value": 12},
|
||||
{"source": "Marius", "target": "Pontmercy", "value": 1},
|
||||
{"source": "Marius", "target": "Lt.Gillenormand", "value": 1},
|
||||
{"source": "Marius", "target": "Cosette", "value": 21},
|
||||
{"source": "Marius", "target": "Valjean", "value": 19},
|
||||
{"source": "Marius", "target": "Tholomyes", "value": 1},
|
||||
{"source": "Marius", "target": "Thenardier", "value": 2},
|
||||
{"source": "Marius", "target": "Eponine", "value": 5},
|
||||
{"source": "Marius", "target": "Gavroche", "value": 4},
|
||||
{"source": "BaronessT", "target": "Gillenormand", "value": 1},
|
||||
{"source": "BaronessT", "target": "Marius", "value": 1},
|
||||
{"source": "Mabeuf", "target": "Marius", "value": 1},
|
||||
{"source": "Mabeuf", "target": "Eponine", "value": 1},
|
||||
{"source": "Mabeuf", "target": "Gavroche", "value": 1},
|
||||
{"source": "Enjolras", "target": "Marius", "value": 7},
|
||||
{"source": "Enjolras", "target": "Gavroche", "value": 7},
|
||||
{"source": "Enjolras", "target": "Javert", "value": 6},
|
||||
{"source": "Enjolras", "target": "Mabeuf", "value": 1},
|
||||
{"source": "Enjolras", "target": "Valjean", "value": 4},
|
||||
{"source": "Combeferre", "target": "Enjolras", "value": 15},
|
||||
{"source": "Combeferre", "target": "Marius", "value": 5},
|
||||
{"source": "Combeferre", "target": "Gavroche", "value": 6},
|
||||
{"source": "Combeferre", "target": "Mabeuf", "value": 2},
|
||||
{"source": "Prouvaire", "target": "Gavroche", "value": 1},
|
||||
{"source": "Prouvaire", "target": "Enjolras", "value": 4},
|
||||
{"source": "Prouvaire", "target": "Combeferre", "value": 2},
|
||||
{"source": "Feuilly", "target": "Gavroche", "value": 2},
|
||||
{"source": "Feuilly", "target": "Enjolras", "value": 6},
|
||||
{"source": "Feuilly", "target": "Prouvaire", "value": 2},
|
||||
{"source": "Feuilly", "target": "Combeferre", "value": 5},
|
||||
{"source": "Feuilly", "target": "Mabeuf", "value": 1},
|
||||
{"source": "Feuilly", "target": "Marius", "value": 1},
|
||||
{"source": "Courfeyrac", "target": "Marius", "value": 9},
|
||||
{"source": "Courfeyrac", "target": "Enjolras", "value": 17},
|
||||
{"source": "Courfeyrac", "target": "Combeferre", "value": 13},
|
||||
{"source": "Courfeyrac", "target": "Gavroche", "value": 7},
|
||||
{"source": "Courfeyrac", "target": "Mabeuf", "value": 2},
|
||||
{"source": "Courfeyrac", "target": "Eponine", "value": 1},
|
||||
{"source": "Courfeyrac", "target": "Feuilly", "value": 6},
|
||||
{"source": "Courfeyrac", "target": "Prouvaire", "value": 3},
|
||||
{"source": "Bahorel", "target": "Combeferre", "value": 5},
|
||||
{"source": "Bahorel", "target": "Gavroche", "value": 5},
|
||||
{"source": "Bahorel", "target": "Courfeyrac", "value": 6},
|
||||
{"source": "Bahorel", "target": "Mabeuf", "value": 2},
|
||||
{"source": "Bahorel", "target": "Enjolras", "value": 4},
|
||||
{"source": "Bahorel", "target": "Feuilly", "value": 3},
|
||||
{"source": "Bahorel", "target": "Prouvaire", "value": 2},
|
||||
{"source": "Bahorel", "target": "Marius", "value": 1},
|
||||
{"source": "Bossuet", "target": "Marius", "value": 5},
|
||||
{"source": "Bossuet", "target": "Courfeyrac", "value": 12},
|
||||
{"source": "Bossuet", "target": "Gavroche", "value": 5},
|
||||
{"source": "Bossuet", "target": "Bahorel", "value": 4},
|
||||
{"source": "Bossuet", "target": "Enjolras", "value": 10},
|
||||
{"source": "Bossuet", "target": "Feuilly", "value": 6},
|
||||
{"source": "Bossuet", "target": "Prouvaire", "value": 2},
|
||||
{"source": "Bossuet", "target": "Combeferre", "value": 9},
|
||||
{"source": "Bossuet", "target": "Mabeuf", "value": 1},
|
||||
{"source": "Bossuet", "target": "Valjean", "value": 1},
|
||||
{"source": "Joly", "target": "Bahorel", "value": 5},
|
||||
{"source": "Joly", "target": "Bossuet", "value": 7},
|
||||
{"source": "Joly", "target": "Gavroche", "value": 3},
|
||||
{"source": "Joly", "target": "Courfeyrac", "value": 5},
|
||||
{"source": "Joly", "target": "Enjolras", "value": 5},
|
||||
{"source": "Joly", "target": "Feuilly", "value": 5},
|
||||
{"source": "Joly", "target": "Prouvaire", "value": 2},
|
||||
{"source": "Joly", "target": "Combeferre", "value": 5},
|
||||
{"source": "Joly", "target": "Mabeuf", "value": 1},
|
||||
{"source": "Joly", "target": "Marius", "value": 2},
|
||||
{"source": "Grantaire", "target": "Bossuet", "value": 3},
|
||||
{"source": "Grantaire", "target": "Enjolras", "value": 3},
|
||||
{"source": "Grantaire", "target": "Combeferre", "value": 1},
|
||||
{"source": "Grantaire", "target": "Courfeyrac", "value": 2},
|
||||
{"source": "Grantaire", "target": "Joly", "value": 2},
|
||||
{"source": "Grantaire", "target": "Gavroche", "value": 1},
|
||||
{"source": "Grantaire", "target": "Bahorel", "value": 1},
|
||||
{"source": "Grantaire", "target": "Feuilly", "value": 1},
|
||||
{"source": "Grantaire", "target": "Prouvaire", "value": 1},
|
||||
{"source": "MotherPlutarch", "target": "Mabeuf", "value": 3},
|
||||
{"source": "Gueulemer", "target": "Thenardier", "value": 5},
|
||||
{"source": "Gueulemer", "target": "Valjean", "value": 1},
|
||||
{"source": "Gueulemer", "target": "Mme.Thenardier", "value": 1},
|
||||
{"source": "Gueulemer", "target": "Javert", "value": 1},
|
||||
{"source": "Gueulemer", "target": "Gavroche", "value": 1},
|
||||
{"source": "Gueulemer", "target": "Eponine", "value": 1},
|
||||
{"source": "Babet", "target": "Thenardier", "value": 6},
|
||||
{"source": "Babet", "target": "Gueulemer", "value": 6},
|
||||
{"source": "Babet", "target": "Valjean", "value": 1},
|
||||
{"source": "Babet", "target": "Mme.Thenardier", "value": 1},
|
||||
{"source": "Babet", "target": "Javert", "value": 2},
|
||||
{"source": "Babet", "target": "Gavroche", "value": 1},
|
||||
{"source": "Babet", "target": "Eponine", "value": 1},
|
||||
{"source": "Claquesous", "target": "Thenardier", "value": 4},
|
||||
{"source": "Claquesous", "target": "Babet", "value": 4},
|
||||
{"source": "Claquesous", "target": "Gueulemer", "value": 4},
|
||||
{"source": "Claquesous", "target": "Valjean", "value": 1},
|
||||
{"source": "Claquesous", "target": "Mme.Thenardier", "value": 1},
|
||||
{"source": "Claquesous", "target": "Javert", "value": 1},
|
||||
{"source": "Claquesous", "target": "Eponine", "value": 1},
|
||||
{"source": "Claquesous", "target": "Enjolras", "value": 1},
|
||||
{"source": "Montparnasse", "target": "Javert", "value": 1},
|
||||
{"source": "Montparnasse", "target": "Babet", "value": 2},
|
||||
{"source": "Montparnasse", "target": "Gueulemer", "value": 2},
|
||||
{"source": "Montparnasse", "target": "Claquesous", "value": 2},
|
||||
{"source": "Montparnasse", "target": "Valjean", "value": 1},
|
||||
{"source": "Montparnasse", "target": "Gavroche", "value": 1},
|
||||
{"source": "Montparnasse", "target": "Eponine", "value": 1},
|
||||
{"source": "Montparnasse", "target": "Thenardier", "value": 1},
|
||||
{"source": "Toussaint", "target": "Cosette", "value": 2},
|
||||
{"source": "Toussaint", "target": "Javert", "value": 1},
|
||||
{"source": "Toussaint", "target": "Valjean", "value": 1},
|
||||
{"source": "Child1", "target": "Gavroche", "value": 2},
|
||||
{"source": "Child2", "target": "Gavroche", "value": 2},
|
||||
{"source": "Child2", "target": "Child1", "value": 3},
|
||||
{"source": "Brujon", "target": "Babet", "value": 3},
|
||||
{"source": "Brujon", "target": "Gueulemer", "value": 3},
|
||||
{"source": "Brujon", "target": "Thenardier", "value": 3},
|
||||
{"source": "Brujon", "target": "Gavroche", "value": 1},
|
||||
{"source": "Brujon", "target": "Eponine", "value": 1},
|
||||
{"source": "Brujon", "target": "Claquesous", "value": 1},
|
||||
{"source": "Brujon", "target": "Montparnasse", "value": 1},
|
||||
{"source": "Mme.Hucheloup", "target": "Bossuet", "value": 1},
|
||||
{"source": "Mme.Hucheloup", "target": "Joly", "value": 1},
|
||||
{"source": "Mme.Hucheloup", "target": "Grantaire", "value": 1},
|
||||
{"source": "Mme.Hucheloup", "target": "Bahorel", "value": 1},
|
||||
{"source": "Mme.Hucheloup", "target": "Courfeyrac", "value": 1},
|
||||
{"source": "Mme.Hucheloup", "target": "Gavroche", "value": 1},
|
||||
{"source": "Mme.Hucheloup", "target": "Enjolras", "value": 1}
|
||||
]
|
||||
}
|
Loading…
Reference in New Issue
Block a user