UNPKG

7.26 kBHTMLView Raw
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no, viewport-fit=cover"/>
6<meta name="description" content="TypeScript: Users can zoom into and out of a diagram by drawing a rectangle showing what part of the document should be shown by the new viewport."/>
7<link rel="stylesheet" href="../assets/css/style.css"/>
8<!-- Copyright 1998-2021 by Northwoods Software Corporation. -->
9<title>Drag Zooming Tool</title>
10</head>
11
12<body>
13 <!-- This top nav is not part of the sample code -->
14 <nav id="navTop" class="w-full z-30 top-0 text-white bg-nwoods-primary">
15 <div class="w-full container max-w-screen-lg mx-auto flex flex-wrap sm:flex-nowrap items-center justify-between mt-0 py-2">
16 <div class="md:pl-4">
17 <a class="text-white hover:text-white no-underline hover:no-underline
18 font-bold text-2xl lg:text-4xl rounded-lg hover:bg-nwoods-secondary " href="../">
19 <h1 class="mb-0 p-1 ">GoJS</h1>
20 </a>
21 </div>
22 <button id="topnavButton" class="rounded-lg sm:hidden focus:outline-none focus:ring" aria-label="Navigation">
23 <svg fill="currentColor" viewBox="0 0 20 20" class="w-6 h-6">
24 <path id="topnavOpen" fill-rule="evenodd" d="M3 5a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM9 15a1 1 0 011-1h6a1 1 0 110 2h-6a1 1 0 01-1-1z" clip-rule="evenodd"></path>
25 <path id="topnavClosed" class="hidden" fill-rule="evenodd" d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" clip-rule="evenodd"></path>
26 </svg>
27 </button>
28 <div id="topnavList" class="hidden sm:block items-center w-auto mt-0 text-white p-0 z-20">
29 <ul class="list-reset list-none font-semibold flex justify-end flex-wrap sm:flex-nowrap items-center px-0 pb-0">
30 <li class="p-1 sm:p-0"><a class="topnav-link" href="../learn/">Learn</a></li>
31 <li class="p-1 sm:p-0"><a class="topnav-link" href="../samples/">Samples</a></li>
32 <li class="p-1 sm:p-0"><a class="topnav-link" href="../intro/">Intro</a></li>
33 <li class="p-1 sm:p-0"><a class="topnav-link" href="../api/">API</a></li>
34 <li class="p-1 sm:p-0"><a class="topnav-link" href="https://www.nwoods.com/products/register.html">Register</a></li>
35 <li class="p-1 sm:p-0"><a class="topnav-link" href="../download.html">Download</a></li>
36 <li class="p-1 sm:p-0"><a class="topnav-link" href="https://forum.nwoods.com/c/gojs/11">Forum</a></li>
37 <li class="p-1 sm:p-0"><a class="topnav-link" href="https://www.nwoods.com/contact.html"
38 target="_blank" rel="noopener" onclick="getOutboundLink('https://www.nwoods.com/contact.html', 'contact');">Contact</a></li>
39 <li class="p-1 sm:p-0"><a class="topnav-link" href="https://www.nwoods.com/sales/index.html"
40 target="_blank" rel="noopener" onclick="getOutboundLink('https://www.nwoods.com/sales/index.html', 'buy');">Buy</a></li>
41 </ul>
42 </div>
43 </div>
44 <hr class="border-b border-gray-600 opacity-50 my-0 py-0" />
45 </nav>
46 <div class="md:flex flex-col md:flex-row md:min-h-screen w-full max-w-screen-xl mx-auto">
47 <div id="navSide" class="flex flex-col w-full md:w-48 text-gray-700 bg-white flex-shrink-0"></div>
48 <!-- * * * * * * * * * * * * * -->
49 <!-- Start of GoJS sample code -->
50
51
52 <div class="p-4 w-full">
53 <div id="sample">
54 <div id="myDiagramDiv" style="background-color: white; border: solid 1px black; width: 100%;height: 800px"></div>
55 <p>
56 This sample demonstrates the DragZoomingTool, which replaces the standard DragSelectingTool. It is defined in its own file, as <a href="DragZoomingTool.ts">DragZoomingTool.ts</a>.
57 </p>
58 <p>
59 Press in the background, wait briefly, and then drag to zoom in to show the area of the drawn rectangle.
60 Hold down the Shift key to zoom out.
61 The rectangle always has the same aspect ratio as the viewport of the diagram.
62 </p>
63 </div>
64
65 <script type="module" id="code">
66 import * as go from "../release/go-module.js";
67 import { DragZoomingTool } from './DragZoomingTool.js';
68
69 if (window.goSamples) window.goSamples(); // init for these samples -- you don't need to call this
70 const $ = go.GraphObject.make; // for conciseness in defining templates
71
72 const myDiagram =
73 $(go.Diagram, 'myDiagramDiv', {
74 initialDocumentSpot: go.Spot.Center,
75 initialViewportSpot: go.Spot.Center,
76 // Define the template for Nodes, just some text inside a colored rectangle
77 nodeTemplate: $(go.Node, 'Spot', { width: 70, height: 20 }, $(go.Shape, 'Rectangle', new go.Binding('fill', 'c')), $(go.TextBlock, { margin: 2 }, new go.Binding('text', 'c'))),
78 // Define the template for Links, just a simple line
79 linkTemplate: $(go.Link, $(go.Shape, { stroke: 'black' })),
80 layout: $(go.TreeLayout, {
81 angle: 90,
82 nodeSpacing: 4,
83 compaction: go.TreeLayout.CompactionNone
84 }),
85 model: $(go.TreeModel, {
86 nodeKeyProperty: 'k',
87 nodeParentKeyProperty: 'p'
88 })
89 });
90 // Add an instance of the custom tool defined in DragZoomingTool.js.
91 // This needs to be inserted before the standard DragSelectingTool,
92 // which is normally the third Tool in the ToolManager.mouseMoveTools list.
93 myDiagram.toolManager.mouseMoveTools.insertAt(2, new DragZoomingTool());
94 // This is a status message
95 const myLoading =
96 $(go.Part, { selectable: false, location: new go.Point(0, 0) }, $(go.TextBlock, 'loading...', { stroke: 'red', font: '20pt sans-serif' }));
97 // temporarily add the status indicator
98 myDiagram.add(myLoading);
99 // allow the myLoading indicator to be shown now,
100 // but allow objects added in loadTree to also be considered part of the initial Diagram
101 myDiagram.delayInitialization(loadTree);
102
103 function loadTree() {
104 // create some tree data
105 const total = 99;
106 const treedata = [];
107 for (let i = 0; i < total; i++) {
108 // these property names are also specified when creating the TreeModel
109 const d = {
110 k: i,
111 c: go.Brush.randomColor(),
112 p: (i > 0 ? Math.floor(Math.random() * i / 2) : undefined) // the random parent's key
113 };
114 treedata.push(d);
115 }
116 // give the Diagram's model all the data
117 myDiagram.model.nodeDataArray = treedata;
118 // remove the status indicator
119 myDiagram.remove(myLoading);
120
121 window.myDiagram = myDiagram; // Attach to the window for console debugging
122 }
123 </script>
124 </div>
125 <!-- * * * * * * * * * * * * * -->
126 <!-- End of GoJS sample code -->
127 </div>
128</body>
129<!-- This script is part of the gojs.net website, and is not needed to run the sample -->
130<script src="../assets/js/goSamples.js"></script>
131</html>