Пример #1
0
        public NetworkView(NetworkViewModel viewModel)
        {
            height = jQuery.Window.GetHeight();
            width  = jQuery.Window.GetWidth();

            vm = viewModel;

            force = D3.Layout.Force()
                    .Size(new int[] { width, height })
                    .LinkDistance(150)
                    .Friction(0.7)
                    .Charge(-700)
                    .On("tick", Tick);

            zoom = D3.Behavior
                   .Zoom()
                   .ScaleExtent(new Number[] { minZoom, maxZoom })
                   .Center2(new Number[] { width / 2, height / 2 })
                   .On("zoom", zoomed);

            svg = D3.Select("#networksvg")
                  .Attr("width", width)
                  .Attr("height", height)
                  .Call(zoom)
                  .Append("g");

            dragBehavior = force.OnDrag()
                           .On("dragstart", dragstart);

            // Add InfoBox
            SVGexactTip = D3.Select("#infoBox").Style("opacity", 0);

            nodeData = (Stack <EntityNode>)(object) force.Nodes();
            linkData = (Stack <EntityLink>)(object) force.Links();
            link     = svg.SelectAll(".link");
            node     = svg.SelectAll(".node");

            Update();

            ViewBase.RegisterViewModel(vm);

            // Create event listeners for MVVM
            vm.OnNewNodes             += OnNodesChange;
            vm.OnSelectedNodesAdded   += vm_OnSelectedNodesAdded;
            vm.OnSelectedNodesCleared += vm_OnSelectedNodesCleared;
            vm.OnSelectedLinksAdded   += vm_OnSelectedLinksAdded;
            vm.OnInfoBoxClose         += vm_OnInfoBoxClose;
            vm.OnZoom += vm_OnZoom;
            jQuery.Window.Resize(OnResize);
            jQuery.OnDocumentReady(delegate()
            {
                Window.SetTimeout(delegate()
                {
                    vm.ProcessQueue();
                }, 10);
            });
        }