app-as-graph
This commit is contained in:
		
							parent
							
								
									437a56221a
								
							
						
					
					
						commit
						c30c20e8b2
					
				
							
								
								
									
										87
									
								
								index.html
									
									
									
									
									
								
							
							
						
						
									
										87
									
								
								index.html
									
									
									
									
									
								
							| @ -122,12 +122,17 @@ var N = | ||||
|         return (inForward === undefined || inForward === true) ? connectionGroup.Set : connectionGroup.Get; | ||||
|          | ||||
|     }, | ||||
|     Walk(inIterator, inNode, inKey, inForward) | ||||
|     Walk(inIterator, inNode, inKey, inForward, inTerminal) | ||||
|     { | ||||
|         let array = N.Step(inNode, inKey, inForward); | ||||
| 
 | ||||
|         if(!array.length && inTerminal) | ||||
|         { | ||||
|             return inTerminal(inNode); | ||||
|         } | ||||
| 
 | ||||
|         for(let i=0; i<array.length; i++) | ||||
|         { | ||||
| 
 | ||||
|             let next = array[i]; | ||||
|             if(next.ID.Walk !== N.ID.Walk) | ||||
|             { | ||||
| @ -135,7 +140,7 @@ var N = | ||||
|                 let results = inIterator(next); | ||||
|                 if(results !== false) | ||||
|                 { | ||||
|                     N.Walk(inIterator, next, inKey, inForward); | ||||
|                     N.Walk(inIterator, next, inKey, inForward, inTerminal); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| @ -157,7 +162,8 @@ var N = | ||||
| var Pivot =  | ||||
| { | ||||
|     Leaves:{}, | ||||
|      | ||||
|     Root:N.Create({}), | ||||
| 
 | ||||
|     Init(inRows) | ||||
|     { | ||||
|         Pivot.Leaves = inRows.map(r => N.Create({Row:r})); | ||||
| @ -255,26 +261,47 @@ var Pivot = | ||||
|     Create(inPivotIndicies, inSumIndicies) | ||||
|     { | ||||
|         N.ID.Walk++; | ||||
|         return Pivot.Pivot(N.Create({Leaves:Pivot.Leaves}), inPivotIndicies, inSumIndicies); | ||||
|          | ||||
|         let pivotRoot = N.Create({Leaves:Pivot.Leaves}); | ||||
|         N.Connect(Pivot.Root, pivotRoot, "Pivot"); | ||||
|         return Pivot.Pivot(pivotRoot, inPivotIndicies, inSumIndicies); | ||||
|     }, | ||||
|     Delete(inRoot) | ||||
|     { | ||||
|         N.ID.Walk++; | ||||
| 
 | ||||
|         let scan = n => | ||||
|         { | ||||
| 
 | ||||
|         }; | ||||
| 
 | ||||
|         N.Walk(scan, inRoot, "Hierarchy") | ||||
|     }, | ||||
|     Modify(inNode) | ||||
|     { | ||||
|         let modified = N.Create({}); | ||||
|         let leaves = []; | ||||
| 
 | ||||
|         let gatherUp = n =>  | ||||
|         N.ID.Walk++; | ||||
|         if(N.Step(inNode, "Hierarchy").length) | ||||
|         { | ||||
|             N.Connect(modified, n, "ModifyUp"); | ||||
|         }; | ||||
|             N.Walk(()=>{}, inNode, "Hierarchy", false, (inRoot)=> | ||||
|             { | ||||
|                 N.Connect(inRoot, modified, "Modifier"); | ||||
|             }); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
| 
 | ||||
|             N.Connect(Pivot.Root, modified, "Modifier"); | ||||
|         } | ||||
| 
 | ||||
|         let leaves = []; | ||||
|         let gatherUp = n => N.Connect(modified, n, "ModifyUp"); | ||||
|         let gatherDown = n => | ||||
|         { | ||||
|             N.Connect(modified, n, "ModifyDown"); | ||||
|             N.Step(n, "Hierarchy").length == 0 ?  leaves.push(n) : null; | ||||
|         }; | ||||
|         let gatherOut = n =>  | ||||
|         { | ||||
|             N.Connect(modified, n, "ModifyOut"); | ||||
|         }; | ||||
|         let gatherOut = n => N.Connect(modified, n, "ModifyOut"); | ||||
| 
 | ||||
|         N.ID.Walk++; | ||||
|         inNode.ID.Walk = N.ID.Walk; | ||||
| @ -294,6 +321,7 @@ var Pivot = | ||||
|         N.Disconnect(modifier, null, "ModifyDown"); | ||||
|         N.Disconnect(modifier, null, "ModifyOut"); | ||||
|         N.Disconnect(modifier, null, "ModifyAt"); | ||||
|         N.Disconnect(null, modifier, "Modifier"); | ||||
|     } | ||||
| }; | ||||
| </script> | ||||
| @ -313,15 +341,13 @@ Pivot.Init([ | ||||
|     ["#6", "a", "short", 0], | ||||
|     ["#7", "b", "short", 7], | ||||
| ]); | ||||
| let pivotRoot1 = Pivot.Create([1, 2], [3]); | ||||
| //let pivotRoot2 = Pivot.Create([2, 1], [3]); | ||||
| //let pivots = [pivotRoot1, pivotRoot2]; | ||||
| let pivots = [pivotRoot1]; | ||||
| Pivot.Create([1, 2], [3]); | ||||
| 
 | ||||
| let AddNewPivot = () => | ||||
| { | ||||
|     pivots.push(Pivot.Create([2, 1], [3])); | ||||
| } | ||||
|     Pivot.Create([2], [3]); | ||||
|     Render(); | ||||
| }; | ||||
| 
 | ||||
| let ElNode = ({node, depth}) => | ||||
| { | ||||
| @ -405,22 +431,37 @@ let ElNode = ({node, depth}) => | ||||
|     ]); | ||||
| }; | ||||
| let ElPivot = ({pivot}) => | ||||
| { | ||||
| {    | ||||
|     return h("div", {style:{display:"inline-block", width:"500px"}}, [ | ||||
|         h(ElModifiers, {node:pivot}), | ||||
|         h(ElNode, {node:pivot, depth:0}) | ||||
|     ]); | ||||
| }; | ||||
| let ElModifiers = ({node}) => | ||||
| { | ||||
|     let modifiers = N.Step(node, "Modifier") || []; | ||||
| 
 | ||||
|     return h("div", null, [ | ||||
|         h("strong", null, "modifiers"), | ||||
|         ...modifiers.map( m => h("span", {onClick:e=> | ||||
|         { | ||||
|             Pivot.Unmodify(N.Step(m, "ModifyAt")[0]); | ||||
|             Render(); | ||||
|         } | ||||
|         }, "modifier")) | ||||
|     ]); | ||||
| }; | ||||
| let ElRoot = props => | ||||
| { | ||||
|     return h("div", null, [ | ||||
|         h("h3", null, "tree view"), | ||||
|         h(ElModifiers, {node:Pivot.Root}), | ||||
|         h("button", { onClick:e=> | ||||
|         { | ||||
|             AddNewPivot(); | ||||
|             Render(); | ||||
|         } | ||||
|         }, "add new pivot"), | ||||
|         ...pivots.map(pivot=>h(ElPivot, {pivot})) | ||||
|         ...N.Step(Pivot.Root, "Pivot").map(pivot=>h(ElPivot, {pivot})) | ||||
|     ]) | ||||
| }; | ||||
| let Render = () => render(h(ElRoot), document.querySelector("#app")); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user