浏览代码

yglob main?

ji9r_works
jfinn 4 年前
父节点
当前提交
df18c6adf6
共有 8 个文件被更改,包括 812 次插入10 次删除
  1. 9
    0
      libs/d3_.js
  2. 4
    0
      mob/u2/glob_defs.js
  3. 118
    6
      xf/sfl/mod_e.js
  4. 4
    3
      xf/sfl/sfl.html
  5. 6
    0
      xf/sfl/sfl_r/n1.css
  6. 169
    0
      xf/sfl/sfl_r/n1.js
  7. 501
    0
      xf/sfl/sfl_r/n2.js
  8. 1
    1
      xf/vc/vc_iconf.js

+ 9
- 0
libs/d3_.js 查看文件

18850
 
18850
 
18851
   return zoom;
18851
   return zoom;
18852
 }
18852
 }
18853
+function evl(txt){
18854
+
18855
+  var ret = {}
18856
+  clog("d3_ evl")
18857
+  ret.eret = eval(txt)
18858
+  clog("d3_ evl.")
18859
+  return ret
18860
+}
18861
+exports.evl = evl;
18853
 
18862
 
18854
 exports.Adder = Adder;
18863
 exports.Adder = Adder;
18855
 exports.Delaunay = Delaunay;
18864
 exports.Delaunay = Delaunay;

+ 4
- 0
mob/u2/glob_defs.js 查看文件

1
+
2
+glob_dev_hooks = window.glob_dev_hooks || {}
3
+glob_dev_fns = window.glob_dev_fns || {}
4
+glob_dbg = window.glob_dbg || {}

+ 118
- 6
xf/sfl/mod_e.js 查看文件

1
 // https://observablehq.com/@jinnace/sticky-force-layout@137
1
 // https://observablehq.com/@jinnace/sticky-force-layout@137
2
 export default function define(runtime, observer) {
2
 export default function define(runtime, observer) {
3
   const main = runtime.module();
3
   const main = runtime.module();
4
+  yglob.m = main
4
   main.variable(observer()).define(["md"], function(md){return(
5
   main.variable(observer()).define(["md"], function(md){return(
5
 md`# Sticky Force Layout
6
 md`# Sticky Force Layout
6
 
7
 
72
 
73
 
73
 // svg.append("g").attr("id","tx").classed("tnodex", true).text("Q")
74
 // svg.append("g").attr("id","tx").classed("tnodex", true).text("Q")
74
  // /*
75
  // /*
76
+
77
+
78
+
75
 const node = svg
79
 const node = svg
76
       .selectAll(".node")
80
       .selectAll(".node")
77
       .data(graph.nodes)
81
       .data(graph.nodes)
78
       .join("g")
82
       .join("g")
79
       .attr("r", 12)
83
       .attr("r", 12)
80
       .classed("node", true)
84
       .classed("node", true)
81
-      .classed("fixed", d => d.fx !== undefined);
85
+      .classed("fixed", d => d.fx !== undefined)
86
+
82
 
87
 
83
 svg.append("text").attr("id","tx").classed("tnodex", true).text("Q")
88
 svg.append("text").attr("id","tx").classed("tnodex", true).text("Q")
84
   // */
89
   // */
95
       .attr("fill", "#0ff")
100
       .attr("fill", "#0ff")
96
       .classed("node", true)
101
       .classed("node", true)
97
       .classed("node_l", true)
102
       .classed("node_l", true)
98
-      .classed("fixed", (d) => {clog("zx~",d);return d.fx  !== undefined});
103
+      .classed("fixed", (d) => {clog("zx~",d);return d.fx  !== undefined})
104
+      .classed("fx", glob_dev_fns.cls_picker || nop)
99
 // const node = node_l
105
 // const node = node_l
100
 // 
106
 // 
101
 node_l.append("circle")
107
 node_l.append("circle")
182
 
188
 
183
       console.log("NODE",svg,node,[z],z.style,[svg.node])
189
       console.log("NODE",svg,node,[z],z.style,[svg.node])
184
 
190
 
191
+
192
+      /*
193
+      let transform;
194
+  const zoom = d3.zoom().on("zoom", e => {
195
+    node.attr("transform", (transform = e.transform));
196
+    node.style("stroke-width", 3 / Math.sqrt(transform.k));
197
+    // points.attr("r", 3 / Math.sqrt(transform.k));
198
+  });
199
+
200
+      svg.call(zoom)
201
+    .call(zoom.transform, d3.zoomIdentity)
202
+      */
203
+
204
+
205
+
185
   yield svg.node();
206
   yield svg.node();
186
 /*
207
 /*
187
   clog("z?",graph)
208
   clog("z?",graph)
189
         clog("z~",vx)
210
         clog("z~",vx)
190
       }
211
       }
191
 */
212
 */
213
+// dev_dec_gen(glob_dev_fns.forceManyBody,"forceManyBody_",[])
214
+// dev_dec_gen(glob_dev_fns.forceCenter,"forceCenter_",[width / 2, height / 2])
215
+// dev_dec_gen(glob_dev_fns.forceLink,"forceLink_",[graph.links])
216
+
217
+// glob_dev_fns.forceManyBody_
218
+// glob_dev_fns.forceCenter_
219
+// glob_dev_fns.forceLink_
220
+  // clog()
221
+
222
+
223
+
224
+  clog("d3_",d3,d3.evl,d3.evl(glob_dev_fns.forceManyBody + ""))
225
+  Object.assign(window.yglob,{d3})
226
+
192
   const simulation = d3
227
   const simulation = d3
193
     .forceSimulation()
228
     .forceSimulation()
194
     .nodes(graph.nodes)
229
     .nodes(graph.nodes)
230
+
231
+    .force("charge",dev_dec_gen(glob_dev_fns.forceManyBody,"forceManyBody_",[]))
232
+    .force("center",dev_dec_gen(glob_dev_fns.forceCenter,"forceCenter_",[width / 2, height / 2]))
233
+    .force("link",  dev_dec_gen(glob_dev_fns.forceLink,"forceLink_",[graph.links]))
234
+
235
+    // .force("charge", d3.forceManyBody())
236
+    // .force("center", d3.forceCenter(width / 2, height / 2))
237
+    // .force("link", d3.forceLink(graph.links))
238
+
239
+    .on("tick", tick);
240
+
241
+
242
+/*
243
+
244
+
245
+    .force("charge", d3.evl(`clog("d3_~");ret= `+glob_dev_fns.forceManyBody)())
246
+    .force("center", d3.evl(`clog("d3_~");ret= `+glob_dev_fns.forceCenter)(width / 2, height / 2))
247
+    .force("link", d3.evl(`clog("d3_~");ret= `+glob_dev_fns.forceLink)(graph.links))
248
+
249
+
250
+    .force("charge", glob_dev_fns.forceManyBody())
251
+    .force("center", glob_dev_fns.forceCenter(width / 2, height / 2))
252
+    .force("link", glob_dev_fns.forceLink(graph.links))
253
+
195
     .force("charge", d3.forceManyBody())
254
     .force("charge", d3.forceManyBody())
196
     .force("center", d3.forceCenter(width / 2, height / 2))
255
     .force("center", d3.forceCenter(width / 2, height / 2))
197
     .force("link", d3.forceLink(graph.links))
256
     .force("link", d3.forceLink(graph.links))
198
-    .on("tick", tick);
257
+
258
+
259
+
260
+
261
+    .force("charge", d3.evl(`
262
+      clog("d3_C")
263
+      ret.fn=` +glob_dev_fns.forceManyBody + "").fn())
264
+    .force("center", d3.evl(`
265
+clog("d3_C")
266
+      ret.fn=` +glob_dev_fns.forceCenter + "").fn(width / 2, height / 2))
267
+    .force("link", d3.evl(`
268
+
269
+clog("d3_C")
270
+      ret.fn=` +glob_dev_fns.forceLink + "").fn(graph.links))
271
+
272
+
273
+
274
+
275
+
276
+
277
+*/
278
+
279
+
280
+
281
+
282
+
283
+
199
 
284
 
200
   const drag = d3
285
   const drag = d3
201
     .drag()
286
     .drag()
206
   node_l.call(drag).on("click", click);
291
   node_l.call(drag).on("click", click);
207
 
292
 
208
   function tick() {
293
   function tick() {
294
+    return glob_dev_fns["tick"].apply(this,arguments)
295
+  }
296
+  function click(event, d) {
297
+    return glob_dev_fns["click"].apply(this,arguments)
298
+  }
299
+  function dragstart() {
300
+    return glob_dev_fns["dragstart"].apply(this,arguments)
301
+  }
302
+  function dragged(event, d) {
303
+    return glob_dev_fns["dragged"].apply(this,arguments)
304
+  }
305
+  // function tick() {}
306
+
307
+  function tick_() {
209
     link
308
     link
210
       .attr("x1", d => d.source.x)
309
       .attr("x1", d => d.source.x)
211
       .attr("y1", d => d.source.y)
310
       .attr("y1", d => d.source.y)
218
     // node.text(d => {      // clog("Ntxt")      return`${d.index} z?`})
317
     // node.text(d => {      // clog("Ntxt")      return`${d.index} z?`})
219
     z.text(d => {      
318
     z.text(d => {      
220
      // clog("Ntxt")      
319
      // clog("Ntxt")      
320
+      return`${d.index} ${d.i2 != undefined ? d.i2  : "_"}`
321
+      return`${d.index} ${d.i2  || "_"}`
221
       return`${d.index} ${d.x.toFixed(2)},${d.y.toFixed(2)}`
322
       return`${d.index} ${d.x.toFixed(2)},${d.y.toFixed(2)}`
222
     })
323
     })
223
     if (!yglob.n1){
324
     if (!yglob.n1){
235
     */
336
     */
236
   }
337
   }
237
 
338
 
238
-  function click(event, d) {
339
+  function click_(event, d) {
239
     delete d.fx;
340
     delete d.fx;
240
     delete d.fy;
341
     delete d.fy;
241
     clog("click")
342
     clog("click")
243
     simulation.alpha(1).restart();
344
     simulation.alpha(1).restart();
244
   }
345
   }
245
 
346
 
246
-  function dragstart() {
347
+  function dragstart_() {
247
     clog("cli drag")
348
     clog("cli drag")
248
     d3.select(this).classed("fixed", true);
349
     d3.select(this).classed("fixed", true);
249
   }
350
   }
250
 
351
 
251
-  function dragged(event, d) {
352
+  function dragged_(event, d) {
252
     d.fx = clamp(event.x, 0, width);
353
     d.fx = clamp(event.x, 0, width);
253
     d.fy = clamp(event.y, 0, height);
354
     d.fy = clamp(event.y, 0, height);
254
     // clog("DRAGGED2")
355
     // clog("DRAGGED2")
255
     // simulation.alpha(0).restart();
356
     // simulation.alpha(0).restart();
256
     simulation.alpha(1).restart();
357
     simulation.alpha(1).restart();
257
   }
358
   }
359
+  glob_dev_fns["tick"] = tick_
360
+  glob_dev_fns["click"] = click_
361
+  glob_dev_fns["dragstart"] = dragstart_
362
+  glob_dev_fns["dragged"] = dragged_
363
+
364
+  glob_dev_fns["tick_"] = tick_
365
+  glob_dev_fns["click_"] = click_
366
+  glob_dev_fns["dragstart_"] = dragstart_
367
+  glob_dev_fns["dragged_"] = dragged_
368
+
258
   clog(":vbox")
369
   clog(":vbox")
259
   window.yglob = window.yglob || {}
370
   window.yglob = window.yglob || {}
260
   Object.assign(window.yglob,{simulation,d3})
371
   Object.assign(window.yglob,{simulation,d3})
299
 )});
410
 )});
300
 */
411
 */
301
   main.variable(observer("graph")).define("graph", function(){
412
   main.variable(observer("graph")).define("graph", function(){
413
+    clog("d3_mg")
302
 
414
 
303
 
415
 
304
     // return(
416
     // return(

+ 4
- 3
xf/sfl/sfl.html 查看文件

1
 <!DOCTYPE html>
1
 <!DOCTYPE html>
2
 <meta charset="utf-8">
2
 <meta charset="utf-8">
3
 <title>Sticky Force Layout</title>
3
 <title>Sticky Force Layout</title>
4
-<link rel="stylesheet" type="text/css" href="./inspector.css">
5
-<link rel="stylesheet" type="text/css" href="./m.css">
4
+<link class="rld" rel="stylesheet" type="text/css" href="./inspector.css">
5
+<link class="rld" rel="stylesheet" type="text/css" href="./m.css">
6
 	<script src="/ign/libs/jquery-3.5.1.min.js"></script> 
6
 	<script src="/ign/libs/jquery-3.5.1.min.js"></script> 
7
 	<script class="rld" src="/ign/mob/u2/unj.js?c=023"></script>
7
 	<script class="rld" src="/ign/mob/u2/unj.js?c=023"></script>
8
+	<script class="rld" src="/ign/mob/u2/glob_defs.js?c=023"></script>
8
 	<script class="rld" src="/ign/rf/u/proto_ext.js?c=023"></script>
9
 	<script class="rld" src="/ign/rf/u/proto_ext.js?c=023"></script>
9
 	<script class="rld" src="/ign/rf/u/universals.js?c=023"></script>
10
 	<script class="rld" src="/ign/rf/u/universals.js?c=023"></script>
10
 	<script class="rld" src="/ign/xf/sfl/sfl_r/n1.js?c=023"></script>
11
 	<script class="rld" src="/ign/xf/sfl/sfl_r/n1.js?c=023"></script>
12
 <script>
13
 <script>
13
 	window.dev_flag = 1
14
 	window.dev_flag = 1
14
 </script>
15
 </script>
15
-	<link rel="stylesheet" type="text/css" href="/ign/xf/sfl/sfl_r/n1.css?c=023">
16
+	<link  class="rld" rel="stylesheet" type="text/css" href="/ign/xf/sfl/sfl_r/n1.css?c=023">
16
 
17
 
17
 
18
 
18
 
19
 

+ 6
- 0
xf/sfl/sfl_r/n1.css 查看文件

1
  
1
  
2
+.n2 *{
3
+	/*fill: blue !important;*/
4
+	fill: blue;
5
+	/*pointer-events:none; */
6
+	/*fill: blue !important;*/
7
+}

+ 169
- 0
xf/sfl/sfl_r/n1.js 查看文件

3
 clog("A.")
3
 clog("A.")
4
 
4
 
5
 
5
 
6
+function add_link(link_) {
7
+	var link = jc(link_)
8
+	// body...
9
+}
10
+
11
+
12
+
13
+function evl_test(txt){
14
+		var ret = {}
15
+		  ret.eret = eval(txt)// clog("d3_r evl.")
16
+		  return ret
17
+
18
+}
19
+
20
+function scope_test(){
21
+	var lvar = "z"
22
+	Function.call(fnt)
23
+	// new Function("return " +fnt)()()
24
+
25
+}
26
+
27
+
28
+function fn_attrs(fn){
29
+	var i,k,v 
30
+	i=0
31
+	// for ([k,v] of entries(fn)) {
32
+	for ([k,v] in entries(fn)) {
33
+		i++
34
+		clog(".",{i,k,v})
35
+	}
36
+
37
+	// dev_dec_gen2(glob_dev_fns.forceManyBody,"forceManyBody_")
38
+}
39
+
40
+
41
+function fnt(){
42
+	clog("FNT1",lvar)
43
+}
44
+
45
+// fn_gen.forceManyBody_.fn
46
+
47
+// n.toString(10.2)
48
+glob_dev_fns.cls_picker = function(){
49
+	clog("d3_~ CLS!",{that:this,args:[...arguments]})
50
+}
51
+
52
+
53
+function i2hp(int,s="",size=2){
54
+	return s + Number(int).toString(16).padStart(size,"0")
55
+	// "".padStart(2,"0")
56
+
57
+}
58
+
59
+function* sequenceGenerator(minVal, maxVal) {
60
+    let currVal = minVal;
61
+    let cnt
62
+
63
+    while(currVal < maxVal){
64
+    	clog("CV",currVal)
65
+    // let cv = currVal++
66
+    cnt += 1
67
+    if (cnt > 30){
68
+    	clog("CNT!")
69
+    	break
70
+    }
71
+    	yield currVal.toString(3)
72
+    // .padStart(3,"0")
73
+        // yield currVal++;
74
+		currVal++;
75
+    	
76
+    	clog("CV.",currVal)
77
+    }
78
+}
79
+function* sequenceGenerator2(minVal, maxVal) {
80
+    let currVal = minVal;
81
+    let cnt
82
+
83
+    while(currVal < maxVal){
84
+    	clog("CV",currVal)
85
+    // let cv = currVal++
86
+    cnt += 1
87
+    if (cnt > 30){
88
+    	clog("CNT!")
89
+    	break
90
+    }
91
+
92
+    	yield i2hp(currVal++)
93
+    // .padStart(3,"0")
94
+        // yield currVal++;
95
+		// currVal++;
96
+    	
97
+    	// clog("CV.",currVal)
98
+    }
99
+}
100
+// sequenceGenerator
101
+// a=[...sequenceGenerator(0,27)]
102
+
103
+// [
104
+// 111
105
+// 110
106
+// 101
107
+// 011
108
+
109
+// 001
110
+// 010
111
+// 100
112
+// 000
113
+
114
+
115
+// 8 01
116
+// 7 02
117
+// 6 12
118
+
119
+
120
+// 012
121
+// 021
122
+// 102
123
+// 120
124
+// 210
125
+// 201
126
+// ]
127
+
128
+function gen_colors(){
129
+
130
+}
131
+
132
+
133
+
134
+
135
+
136
+function save_index(){
137
+	yglob.main.nodes.forEach(function(n,i,arr){
138
+
139
+		clog("d3_E",{that:this,args:[...arguments]})
140
+		Object.assign(n,{i2:n.index})
141
+	})
142
+}
143
+
144
+function save_index2(){
145
+	yglob.main.nodes.forEach(function(){
146
+		clog("d3_E",{that:this,args:[...arguments]})
147
+	})
148
+}
149
+function splice_out(arr,elm){
150
+	let i = arr.indexOf(elm)
151
+	// var r = "" 
152
+	if (i != -1){
153
+		return arr.splice(i,1)
154
+	}
155
+	// return
156
+
157
+}
158
+
159
+function rem_node_by_index(index){
160
+	var n = get_node(index)
161
+	return splice_out(yglob.main.nodes,n)
162
+}
163
+
164
+function get_node(index){
165
+	var i,k,v
166
+	for (v of yglob.main.nodes){
167
+		if (v.index == index){
168
+			return v
169
+		}
170
+	}
171
+
172
+}
173
+// a = [1,2,3,4,5,6,7,8,9,0]
174
+// 

+ 501
- 0
xf/sfl/sfl_r/n2.js 查看文件

1
  
1
  
2
+{
3
+// forceManyBody
4
+// forceCenter
5
+// forceLink
6
+
7
+window.glob_dev_fns.forceLink = function link(links) {
8
+  var id = index$1,
9
+      strength = defaultStrength,
10
+      strengths,
11
+      distance = constant$7(30),
12
+      distances,
13
+      nodes,
14
+      count,
15
+      bias,
16
+      random,
17
+      iterations = 1;
18
+
19
+  if (links == null) links = [];
20
+
21
+  function defaultStrength(link) {
22
+    return 1 / Math.min(count[link.source.index], count[link.target.index]);
23
+  }
24
+
25
+  function force(alpha) {
26
+    for (var k = 0, n = links.length; k < iterations; ++k) {
27
+      for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {
28
+        link = links[i], source = link.source, target = link.target;
29
+        x = target.x + target.vx - source.x - source.vx || jiggle(random);
30
+        y = target.y + target.vy - source.y - source.vy || jiggle(random);
31
+        l = Math.sqrt(x * x + y * y);
32
+        l = (l - distances[i]) / l * alpha * strengths[i];
33
+        x *= l, y *= l;
34
+        target.vx -= x * (b = bias[i]);
35
+        target.vy -= y * b;
36
+        source.vx += x * (b = 1 - b);
37
+        source.vy += y * b;
38
+      }
39
+    }
40
+  }
41
+  	function reinit(txt){
42
+		var ret = {};ret.eret = eval(txt);return ret
43
+	}
44
+	force.reinit = reinit
45
+
46
+  function initialize() {
47
+    if (!nodes) return;
48
+
49
+    var i,
50
+        n = nodes.length,
51
+        m = links.length,
52
+        nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])),
53
+        link;
54
+
55
+    for (i = 0, count = new Array(n); i < m; ++i) {
56
+      link = links[i], link.index = i;
57
+      if (typeof link.source !== "object") link.source = find$1(nodeById, link.source);
58
+      if (typeof link.target !== "object") link.target = find$1(nodeById, link.target);
59
+      count[link.source.index] = (count[link.source.index] || 0) + 1;
60
+      count[link.target.index] = (count[link.target.index] || 0) + 1;
61
+    }
62
+
63
+    for (i = 0, bias = new Array(m); i < m; ++i) {
64
+      link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);
65
+    }
66
+
67
+    strengths = new Array(m), initializeStrength();
68
+    distances = new Array(m), initializeDistance();
69
+  }
70
+
71
+  function initializeStrength() {
72
+    if (!nodes) return;
73
+
74
+    for (var i = 0, n = links.length; i < n; ++i) {
75
+      strengths[i] = +strength(links[i], i, links);
76
+    }
77
+  }
78
+
79
+  function initializeDistance() {
80
+    if (!nodes) return;
81
+
82
+    for (var i = 0, n = links.length; i < n; ++i) {
83
+      distances[i] = +distance(links[i], i, links);
84
+    }
85
+  }
86
+
87
+  force.initialize = function(_nodes, _random) {
88
+    nodes = _nodes;
89
+    random = _random;
90
+    initialize();
91
+  };
92
+
93
+  force.links = function(_) {
94
+    return arguments.length ? (links = _, initialize(), force) : links;
95
+  };
96
+
97
+  force.id = function(_) {
98
+    return arguments.length ? (id = _, force) : id;
99
+  };
100
+
101
+  force.iterations = function(_) {
102
+    return arguments.length ? (iterations = +_, force) : iterations;
103
+  };
104
+
105
+  force.strength = function(_) {
106
+    return arguments.length ? (strength = typeof _ === "function" ? _ : constant$7(+_), initializeStrength(), force) : strength;
107
+  };
108
+
109
+  force.distance = function(_) {
110
+    return arguments.length ? (distance = typeof _ === "function" ? _ : constant$7(+_), initializeDistance(), force) : distance;
111
+  };
112
+
113
+  return force;
114
+}
115
+
116
+
117
+
118
+
119
+
120
+
121
+
122
+
123
+window.glob_dev_fns.forceCenter = function center$1(x, y) {
124
+  var nodes, strength = 1;
125
+
126
+  if (x == null) x = 0;
127
+  if (y == null) y = 0;
128
+
129
+  function force() {
130
+    var i,
131
+        n = nodes.length,
132
+        node,
133
+        sx = 0,
134
+        sy = 0;
135
+
136
+    for (i = 0; i < n; ++i) {
137
+      node = nodes[i], sx += node.x, sy += node.y;
138
+    }
139
+
140
+    for (sx = (sx / n - x) * strength, sy = (sy / n - y) * strength, i = 0; i < n; ++i) {
141
+      node = nodes[i], node.x -= sx, node.y -= sy;
142
+    }
143
+  }
144
+	function reinit(txt){
145
+		var ret = {};ret.eret = eval(txt);return ret
146
+	}
147
+	force.reinit = reinit
148
+
149
+  force.initialize = function(_) {
150
+    nodes = _;
151
+  };
152
+
153
+  force.x = function(_) {
154
+    return arguments.length ? (x = +_, force) : x;
155
+  };
156
+
157
+  force.y = function(_) {
158
+    return arguments.length ? (y = +_, force) : y;
159
+  };
160
+
161
+  force.strength = function(_) {
162
+    return arguments.length ? (strength = +_, force) : strength;
163
+  };
164
+
165
+  return force;
166
+}
167
+
168
+
169
+
170
+
171
+window.glob_dev_fns.forceManyBody = function manyBody() {
172
+	clog("d3 dc3")
173
+
174
+  var nodes,
175
+      node,
176
+      random,
177
+      alpha,
178
+      strength = constant$7(-30),
179
+      strengths,
180
+      distanceMin2 = 1,
181
+      distanceMax2 = Infinity,
182
+      theta2 = 0.81;
183
+
184
+  function force(_) {
185
+
186
+  	function xfn(){
187
+  		clog("XFN")
188
+  	}
189
+
190
+	if (glob_dbg.rfn_c > 0){
191
+		glob_dbg.rfn_c -= 1
192
+		clog("d3_r",glob_dbg.rfn_c,this)
193
+		// clog("d3_r",glob_dbg.rfn_c,this,fn_gen[this.name])
194
+	}
195
+
196
+  	this.xfn_ = xfn
197
+
198
+    var i, n = nodes.length, tree = quadtree(nodes, x$1, y$1).visitAfter(accumulate);
199
+    for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);
200
+  }
201
+
202
+	function reinit(txt){
203
+		var ret = {};ret.eret = eval(txt);return ret
204
+	}
205
+	force.reinit = reinit
206
+
207
+  function initialize() {
208
+    if (!nodes) return;
209
+    var i, n = nodes.length, node;
210
+    strengths = new Array(n);
211
+    for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);
212
+  }
213
+
214
+  function accumulate(quad) {
215
+    var strength = 0, q, c, weight = 0, x, y, i;
216
+
217
+    // For internal nodes, accumulate forces from child quadrants.
218
+    if (quad.length) {
219
+      for (x = y = i = 0; i < 4; ++i) {
220
+        if ((q = quad[i]) && (c = Math.abs(q.value))) {
221
+          strength += q.value, weight += c, x += c * q.x, y += c * q.y;
222
+        }
223
+      }
224
+      quad.x = x / weight;
225
+      quad.y = y / weight;
226
+    }
227
+
228
+    // For leaf nodes, accumulate forces from coincident quadrants.
229
+    else {
230
+      q = quad;
231
+      q.x = q.data.x;
232
+      q.y = q.data.y;
233
+      do strength += strengths[q.data.index];
234
+      while (q = q.next);
235
+    }
236
+
237
+    quad.value = strength;
238
+  }
239
+
240
+  function apply(quad, x1, _, x2) {
241
+    if (!quad.value) return true;
242
+
243
+    var x = quad.x - node.x,
244
+        y = quad.y - node.y,
245
+        w = x2 - x1,
246
+        l = x * x + y * y;
247
+
248
+    // Apply the Barnes-Hut approximation if possible.
249
+    // Limit forces for very close nodes; randomize direction if coincident.
250
+    if (w * w / theta2 < l) {
251
+      if (l < distanceMax2) {
252
+        if (x === 0) x = jiggle(random), l += x * x;
253
+        if (y === 0) y = jiggle(random), l += y * y;
254
+        if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);
255
+        node.vx += x * quad.value * alpha / l;
256
+        node.vy += y * quad.value * alpha / l;
257
+      }
258
+      return true;
259
+    }
260
+
261
+    // Otherwise, process points directly.
262
+    else if (quad.length || l >= distanceMax2) return;
263
+
264
+    // Limit forces for very close nodes; randomize direction if coincident.
265
+    if (quad.data !== node || quad.next) {
266
+      if (x === 0) x = jiggle(random), l += x * x;
267
+      if (y === 0) y = jiggle(random), l += y * y;
268
+      if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);
269
+    }
270
+
271
+    do if (quad.data !== node) {
272
+      w = strengths[quad.data.index] * alpha / l;
273
+      node.vx += x * w;
274
+      node.vy += y * w;
275
+    } while (quad = quad.next);
276
+  }
277
+
278
+  force.initialize = function(_nodes, _random) {
279
+    nodes = _nodes;
280
+    random = _random;
281
+    initialize();
282
+  };
283
+
284
+  force.strength = function(_) {
285
+	if (glob_dbg.rfn_c > 0){
286
+		glob_dbg.rfn_c -= 1
287
+		clog("d3_r strength",glob_dbg.rfn_c,this)
288
+		// clog("d3_r",glob_dbg.rfn_c,this,fn_gen[this.name])
289
+	}
290
+
291
+
292
+    return arguments.length ? (strength = typeof _ === "function" ? _ : constant$7(+_), initialize(), force) : strength;
293
+  };
294
+
295
+  force.distanceMin = function(_) {
296
+    return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);
297
+  };
298
+
299
+  force.distanceMax = function(_) {
300
+    return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);
301
+  };
302
+
303
+  force.theta = function(_) {
304
+    return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);
305
+  };
306
+
307
+  return force;
308
+}
309
+
310
+
311
+}
312
+
313
+
314
+
315
+glob_dev_fns.forceManyBody_ = glob_dev_fns.forceManyBody
316
+glob_dev_fns.forceCenter_ = glob_dev_fns.forceCenter
317
+glob_dev_fns.forceLink_ = glob_dev_fns.forceLink
318
+
319
+
320
+
321
+
322
+clog("n2")
323
+function trc(){
324
+	console.trace("zq")
325
+}
326
+
327
+function eval_helper(txt){
328
+	return yglob.d3.evl(txt).fn
329
+}
330
+function eval_helper2(txt,fscope){
331
+	return fscope.reinit(txt).fn
332
+}
333
+window.glob_dev_fns["test"]  = function test(){
334
+	clog("TEXT")
335
+}
336
+
337
+
338
+
339
+
340
+if (window.yglob){
341
+
342
+// glob_dev_fns.forceManyBody_
343
+// glob_dev_fns.forceCenter_
344
+// glob_dev_fns.forceLink_
345
+
346
+// dev_dec_gen2(glob_dev_fns.forceManyBody,"forceManyBody_")
347
+dev_dec_gen2(glob_dev_fns.forceManyBody,"forceManyBody_")
348
+dev_dec_gen2(glob_dev_fns.forceCenter,"forceCenter_")
349
+dev_dec_gen2(glob_dev_fns.forceLink,"forceLink_")
350
+
351
+}
352
+
353
+
354
+
355
+
356
+
357
+
358
+
359
+
360
+
361
+
362
+
363
+function ret_fn(){
364
+	// clog("?")
365
+	if (glob_dbg.rfn_c > 0){
366
+		glob_dbg.rfn_c -= 1
367
+		clog("d3_r",glob_dbg.rfn_c,this,fn_gen[this.name])
368
+	}
369
+	// window.yglob
370
+	return fn_gen[this.name].fn
371
+}
372
+
373
+function txt_dec_fn(fn){
374
+	return "ret.fn = "+ fn + ""
375
+}
376
+
377
+function reinit_helper(nforce,oforce,m){
378
+	var rforce = eval_helper2(txt_dec_fn(nforce),oforce)
379
+	clog("d3_re rf",m)
380
+	var i,k,v
381
+	var varr = []
382
+	for ([k,v] of entries(oforce)){
383
+		varr.push(k)
384
+		if (k=="reinit"){
385
+			// continue
386
+		}
387
+		if (v + "" == rforce[k] + ""){
388
+			rforce[k]=v
389
+			continue
390
+
391
+		} else if (!rforce[k]) {
392
+			rforce[k]=v
393
+			continue
394
+
395
+		} else {
396
+			clog("d3_re rfk",m,k)
397
+			rforce[k] = eval_helper2(txt_dec_fn(rforce[k]),oforce)
398
+		}
399
+
400
+	}
401
+	for ([k,v] of entries(rforce)){
402
+		if (varr.includes(k)){
403
+			continue
404
+		} 
405
+			clog("d3_re rfk_",m,k)
406
+		rforce[k] = eval_helper2(txt_dec_fn(rforce[k]),oforce)
407
+	}
408
+	return rforce
409
+
410
+
411
+}
412
+
413
+function dev_dec_gen2(fn_txt,name,args,that){
414
+	let txt = txt_dec_fn(fn_txt)
415
+	let fscope = fn_gen[name]
416
+	let evl_fn = eval_helper(txt,fscope.fn)
417
+	var nforce = evl_fn(...fn_gen[name].args)
418
+	// force.reinit
419
+	let evl_fn2 = reinit_helper(nforce,fscope.fn,{name})
420
+			/*
421
+	let evl_fn2 = eval_helper2(txt_dec_fn(nforce),fscope.fn)
422
+
423
+
424
+	// fn_gen.forceManyBody_.fn
425
+	Object.assign(evl_fn2,fn_gen[name].fn)
426
+	// evl_fn2
427
+	evl_fn2.reinit = fn_gen[name].fn.reinit
428
+	//		*/
429
+	// fn_gen[name].fn = evl_fn(...fn_gen[name].args)
430
+		fn_gen[name].fn = evl_fn2
431
+}
432
+
433
+function dev_dec_gen2_(fn_txt,name,args,that){
434
+	let txt = txt_dec_fn(fn_txt)
435
+	let evl_fn = eval_helper(txt)
436
+	fn_gen[name].fn = evl_fn(...fn_gen[name].args)
437
+}
438
+
439
+function dev_dec_gen(fn_txt,name,args,that){
440
+	let txt = txt_dec_fn(fn_txt)
441
+	let evl_fn = eval_helper(txt)
442
+	if (!fn_gen[name]){
443
+		fn_gen[name] = {args:[]}
444
+	}
445
+	if (args){
446
+	fn_gen[name].args = args
447
+
448
+	}
449
+	fn_gen[name].fn = evl_fn(...fn_gen[name].args)
450
+	// glob_dev_fns[name] = evl_fn(...args)
451
+	glob_dev_fns[name] = new Proxy(fn_gen[name].fn,{name,...fn_gen.fn_prx})
452
+	// glob_dev_fns[name] = ret_fn.bind({name})
453
+	return glob_dev_fns[name]
454
+}
455
+
456
+fn_gen = window.fn_gen || {}
457
+fn_gen.fn_prx = {
458
+	apply:function(target,that,args){
459
+		return fn_gen[this.name].fn(...args)
460
+	},
461
+	// new Proxy(target, handler)
462
+
463
+}
464
+
465
+
466
+
467
+
468
+glob_dbg.rfn_b = 0
469
+glob_dbg.rfn_c = 3
470
+
471
+
472
+
473
+clog("d3_+",window.yglob,glob_dbg,jc(glob_dbg))
474
+
475
+
476
+
477
+// yglob.d3.evl(`clog("d3_~");ret= `+glob_dev_fns.forceManyBody)()
478
+
479
+
480
+
481
+
482
+// glob_dev_fns.forceLink
483
+
484
+/*
485
+var z = "tx_4"
486
+// var Z = "tx_3"
487
+// window.glob_dev_fns["tx_2"]  = function(){
488
+window["glob_dev_fns"][`Z_${1}`]  = function(){
489
+	clog("z3")
490
+	// console.trace("zq")
491
+	trc()
492
+}
493
+window["glob_dev_fns"][z]  = function(){
494
+	clog("z4")
495
+	// console.trace("zq")
496
+	trc()
497
+}
498
+*/
499
+
500
+// glob_dev_fns["tx_2"]()
501
+// glob_dev_fns["tx_3"]()
502
+// glob_dev_fns["tx_4"]()

+ 1
- 1
xf/vc/vc_iconf.js 查看文件

113
 		// arr_rmv(interfaceConfig.TOOLBAR_BUTTONS,"fullscreen")
113
 		// arr_rmv(interfaceConfig.TOOLBAR_BUTTONS,"fullscreen")
114
 		arr_rmv(interfaceConfig.TOOLBAR_BUTTONS,"shortcuts")
114
 		arr_rmv(interfaceConfig.TOOLBAR_BUTTONS,"shortcuts")
115
 		// arr_rmv(interfaceConfig.TOOLBAR_BUTTONS,"tileview")
115
 		// arr_rmv(interfaceConfig.TOOLBAR_BUTTONS,"tileview")
116
-		arr_rmv(interfaceConfig.TOOLBAR_BUTTONS,"livestreaming")
116
+		// arr_rmv(interfaceConfig.TOOLBAR_BUTTONS,"livestreaming")
117
 		arr_rmv(interfaceConfig.TOOLBAR_BUTTONS,"recording")
117
 		arr_rmv(interfaceConfig.TOOLBAR_BUTTONS,"recording")
118
 		// arr_rmv(interfaceConfig.TOOLBAR_BUTTONS,"filmstrip")
118
 		// arr_rmv(interfaceConfig.TOOLBAR_BUTTONS,"filmstrip")
119
 		clog("MODx",isMod,interfaceConfig.TOOLBAR_BUTTONS)
119
 		clog("MODx",isMod,interfaceConfig.TOOLBAR_BUTTONS)

正在加载...
取消
保存