index.html 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448
  1. <!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]-->
  2. <!DOCTYPE html>
  3. <html>
  4. <head>
  5. <title>Flowchart Maker &amp; Online Diagram Software</title>
  6. <meta charset="utf-8">
  7. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  8. <meta name="Description" content="draw.io is free online diagram software for making flowcharts, process diagrams, org charts, UML, ER and network diagrams">
  9. <meta name="Keywords" content="diagram, online, flow chart, flowchart maker, uml, erd">
  10. <meta itemprop="name" content="draw.io - free flowchart maker and diagrams online">
  11. <meta itemprop="description" content="draw.io is a free online diagramming application and flowchart maker . You can use it to create UML, entity relationship,
  12. org charts, BPMN and BPM, database schema and networks. Also possible are telecommunication network, workflow, flowcharts, maps overlays and GIS, electronic
  13. circuit and social network diagrams.">
  14. <meta itemprop="image" content="https://lh4.googleusercontent.com/-cLKEldMbT_E/Tx8qXDuw6eI/AAAAAAAAAAs/Ke0pnlk8Gpg/w500-h344-k/BPMN%2Bdiagram%2Brc2f.png">
  15. <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
  16. <meta name="mobile-web-app-capable" content="yes">
  17. <meta name="apple-mobile-web-app-capable" content="yes">
  18. <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
  19. <link rel="canonical" href="https://www.draw.io">
  20. <script type="text/javascript">
  21. /**
  22. * URL Parameters and protocol description are here:
  23. *
  24. * https://support.draw.io/pages/viewpage.action?pageId=12878136
  25. *
  26. * Parameters for developers:
  27. *
  28. * - dev=1: For developers only
  29. * - test=1: For developers only
  30. * - drawdev=1: For developers only
  31. * - export=URL for export: For developers only
  32. * - page=n: For developers only
  33. * - ignoremime=1: For developers only (see DriveClient.js). Use Cmd-S to override mime.
  34. * - createindex=1: For developers only (see etc/build/README)
  35. * - filesupport=0: For developers only (see Editor.js in core)
  36. * - savesidebar=1: For developers only (see Sidebar.js)
  37. * - pages=1: For developers only (see Pages.js)
  38. * - lic=email: For developers only (see LicenseServlet.java)
  39. * --
  40. * - networkshapes=1: For testing network shapes (temporary)
  41. */
  42. var urlParams = (function()
  43. {
  44. var result = new Object();
  45. var params = window.location.search.slice(1).split('&');
  46. for (var i = 0; i < params.length; i++)
  47. {
  48. idx = params[i].indexOf('=');
  49. if (idx > 0)
  50. {
  51. result[params[i].substring(0, idx)] = params[i].substring(idx + 1);
  52. }
  53. }
  54. return result;
  55. })();
  56. // Redirects page if required
  57. if (urlParams['dev'] != '1')
  58. {
  59. (function()
  60. {
  61. var proto = window.location.protocol;
  62. // Electron protocol is file:
  63. if (proto != 'file:')
  64. {
  65. var host = window.location.host;
  66. // Redirects apex and rt to www
  67. if (host === 'draw.io' || host === 'rt.draw.io')
  68. {
  69. host = 'www.draw.io';
  70. }
  71. // Redirects to SSL/non-SSL
  72. if (urlParams['demo'] != '1' && urlParams['offline'] != '1')
  73. {
  74. var ssl = (urlParams['https'] != null) ? urlParams['https'] == '1' :
  75. navigator.userAgent.indexOf('MSIE') < 0 || document.documentMode >= 9;
  76. if (ssl && proto != 'https:')
  77. {
  78. proto = 'https:';
  79. }
  80. else if (!ssl && proto != 'http:')
  81. {
  82. proto = 'http:';
  83. }
  84. }
  85. var href = proto + '//' + host + window.location.href.substring(
  86. window.location.protocol.length +
  87. window.location.host.length + 2);
  88. // Redirects if href changes
  89. if (href != window.location.href)
  90. {
  91. window.location.href = href;
  92. }
  93. }
  94. })();
  95. }
  96. </script>
  97. <link rel="alternate" type="application/rss+xml" title="RSS Feed for draw.io" href="http://blog.draw.io/feed/">
  98. <link rel="chrome-webstore-item" href="https://chrome.google.com/webstore/detail/plgmlhohecdddhbmmkncjdmlhcmaachm">
  99. <link rel="apple-touch-icon" sizes="57x57" href="images/apple-touch-icon-57x57.png">
  100. <link rel="apple-touch-icon" sizes="60x60" href="images/apple-touch-icon-60x60.png">
  101. <link rel="apple-touch-icon" sizes="72x72" href="images/apple-touch-icon-72x72.png">
  102. <link rel="apple-touch-icon" sizes="76x76" href="images/apple-touch-icon-76x76.png">
  103. <link rel="apple-touch-icon" sizes="114x114" href="images/apple-touch-icon-114x114.png">
  104. <link rel="apple-touch-icon" sizes="120x120" href="images/apple-touch-icon-120x120.png">
  105. <link rel="apple-touch-icon" sizes="144x144" href="images/apple-touch-icon-144x144.png">
  106. <link rel="apple-touch-icon" sizes="152x152" href="images/apple-touch-icon-152x152.png">
  107. <link rel="apple-touch-icon" sizes="180x180" href="images/apple-touch-icon-180x180.png">
  108. <link rel="icon" type="image/png" href="images/favicon-32x32.png" sizes="32x32">
  109. <link rel="icon" type="image/png" href="images/favicon-194x194.png" sizes="194x194">
  110. <link rel="icon" type="image/png" href="images/favicon-96x96.png" sizes="96x96">
  111. <link rel="icon" type="image/png" href="images/android-chrome-192x192.png" sizes="192x192">
  112. <link rel="icon" type="image/png" href="images/favicon-16x16.png" sizes="16x16">
  113. <link rel="manifest" href="images/manifest.json">
  114. <link rel="mask-icon" href="images/safari-pinned-tab.svg" color="#f18808">
  115. <meta name="msapplication-TileColor" content="#da532c">
  116. <meta name="msapplication-TileImage" content="images/mstile-144x144.png">
  117. <meta name="msapplication-config" content="images/browserconfig.xml">
  118. <meta name="theme-color" content="#f18808">
  119. <link rel="apple-touch-startup-image" href="images/logo-flat.png">
  120. <link rel="stylesheet" type="text/css" href="styles/grapheditor.css">
  121. <style type="text/css">
  122. body { overflow:hidden; }
  123. .geSidebarContainer .geTitle { color:#505050; }
  124. .geSidebarContainer .geTitle input {
  125. font-size:8pt;
  126. color:#606060;
  127. }
  128. .geBlock {
  129. z-index:-3;
  130. margin:100px;
  131. margin-top:40px;
  132. margin-bottom:30px;
  133. padding:20px;
  134. }
  135. .geBlock h1, .geBlock h2 {
  136. margin-top:0px;
  137. padding-top:0px;
  138. }
  139. .geEditor ::-webkit-scrollbar {
  140. width:12px;
  141. height:12px;
  142. }
  143. .geEditor ::-webkit-scrollbar-track {
  144. background:whiteSmoke;
  145. -webkit-box-shadow:inset 0 0 4px rgba(0,0,0,0.1);
  146. }
  147. .geEditor ::-webkit-scrollbar-thumb {
  148. background:#c5c5c5;
  149. border-radius:10px;
  150. border:whiteSmoke solid 3px;
  151. }
  152. .geEditor ::-webkit-scrollbar-thumb:hover {
  153. background:#b5b5b5;
  154. }
  155. .geTemplate {
  156. border:1px solid transparent;
  157. display:inline-block;
  158. _display:inline;
  159. vertical-align:top;
  160. border-radius:3px;
  161. overflow:hidden;
  162. font-size:14pt;
  163. cursor:pointer;
  164. margin:5px;
  165. }
  166. .geFooterContainer div.geSocialFooter a {
  167. display:inline;
  168. padding:0px;
  169. }
  170. .geFooterContainer div.geSocialFooter a img {
  171. margin-top:10px;
  172. opacity:0.8;
  173. }
  174. .geFooterContainer div.geSocialFooter a img:hover {
  175. opacity:1;
  176. }
  177. #geFooterItem1 {
  178. background-color: #cdcdcd;
  179. }
  180. #geFooterItem1:hover {
  181. background-color: #b0b0b0;
  182. }
  183. .geFooterContainer>div>img {
  184. opacity:0.5;
  185. background:#e5e5e5;
  186. border:1px solid transparent;
  187. cusor:pointer;
  188. margin-top:3px;
  189. margin-right:6px;
  190. position:absolute;
  191. right:4px;
  192. top:12px;
  193. padding:1px;
  194. cursor:pointer;
  195. }
  196. .geFooterContainer>div>img:hover {
  197. opacity: 1;
  198. }
  199. </style>
  200. <!-- Workaround for binary XHR in IE 9/10, see App.loadUrl -->
  201. <!--[if (IE 9)|(IE 10)]><!-->
  202. <script type="text/vbscript">
  203. Function mxUtilsBinaryToArray(Binary)
  204. Dim i
  205. ReDim byteArray(LenB(Binary))
  206. For i = 1 To LenB(Binary)
  207. byteArray(i-1) = AscB(MidB(Binary, i, 1))
  208. Next
  209. mxUtilsBinaryToArray = byteArray
  210. End Function
  211. </script>
  212. <!--<![endif]-->
  213. <script type="text/javascript">
  214. /**
  215. * Synchronously adds scripts to the page.
  216. */
  217. function mxscript(src, onLoad, id, dataAppKey)
  218. {
  219. if (onLoad != null)
  220. {
  221. var s = document.createElement('script');
  222. s.setAttribute('type', 'text/javascript');
  223. s.setAttribute('src', src);
  224. var r = false;
  225. if (id != null)
  226. {
  227. s.setAttribute('id', id);
  228. }
  229. if (dataAppKey != null)
  230. {
  231. s.setAttribute('data-app-key', dataAppKey);
  232. }
  233. s.onload = s.onreadystatechange = function()
  234. {
  235. if (!r && (!this.readyState || this.readyState == 'complete'))
  236. {
  237. r = true;
  238. onLoad();
  239. }
  240. };
  241. var t = document.getElementsByTagName('script')[0];
  242. t.parentNode.insertBefore(s, t);
  243. }
  244. else
  245. {
  246. document.write('<script src="' + src + '"' + ((id != null) ? ' id="' + id +'" ' : '') +
  247. ((dataAppKey != null) ? ' data-app-key="' + dataAppKey +'" ' : '') + '></scr' + 'ipt>');
  248. }
  249. };
  250. /**
  251. * Asynchronously adds scripts to the page.
  252. */
  253. function mxinclude(src)
  254. {
  255. var g = document.createElement('script'); g.type = 'text/javascript'; g.async = true; g.src = src;
  256. var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(g, s);
  257. };
  258. // Checks for local storage
  259. var isLocalStorage = false;
  260. try
  261. {
  262. isLocalStorage = urlParams['local'] != '1' && typeof(localStorage) != 'undefined';
  263. }
  264. catch (e)
  265. {
  266. // ignored
  267. }
  268. var t0 = new Date();
  269. // Changes paths for local development environment
  270. if (urlParams['dev'] == '1')
  271. {
  272. // Used to request grapheditor/mxgraph sources in dev mode
  273. var mxDevUrl = document.location.protocol + '//devhost.jgraph.com/mxgraph2';
  274. if (document.location.protocol == 'file:')
  275. {
  276. mxDevUrl = '../../mxgraph2';
  277. }
  278. var geBasePath = mxDevUrl + '/javascript/examples/grapheditor/www/js';
  279. var mxBasePath = mxDevUrl + '/javascript/src';
  280. // Used to request draw.io sources in dev mode
  281. var drawDevUrl = '';
  282. if (urlParams['drawdev'] == '1')
  283. {
  284. drawDevUrl = document.location.protocol + '//drawhost.jgraph.com/';
  285. }
  286. mxscript(drawDevUrl + 'js/diagramly/Init.js');
  287. mxscript(geBasePath + '/Init.js');
  288. mxscript(mxDevUrl + '/javascript/src/js/mxClient.js');
  289. // Adds all JS code that depends on mxClient. This indirection via Devel.js is
  290. // required in some browsers to make sure mxClient.js (and the files that it
  291. // loads asynchronously) are available when the code loaded in Devel.js runs.
  292. mxscript(drawDevUrl + 'js/diagramly/Devel.js');
  293. }
  294. else
  295. {
  296. mxscript('js/app.min.js');
  297. }
  298. if (window && window.process && window.process.type)
  299. {
  300. // Electron
  301. mxscript('js/diagramly/ElectronApp.js');
  302. }
  303. // Adds basic error handling
  304. window.onerror = function()
  305. {
  306. var status = document.getElementById('geStatus');
  307. if (status != null)
  308. {
  309. status.innerHTML = 'Page could not be loaded. Please try refreshing.';
  310. }
  311. };
  312. </script>
  313. </head>
  314. <body class="geEditor">
  315. <div id="geInfo">
  316. <div class="geBlock" style="text-align:center;min-width:50%;">
  317. <h1>Flowchart Maker and Online Diagram Software</h1>
  318. <p>
  319. draw.io (formerly Diagramly) is free online diagram software. You can use it as a flowchart maker, network diagram software, to create UML online, as an ER diagram tool,
  320. to design database schema, to build BPMN online, as a circuit diagram maker, and more. draw.io can import .vsdx, Gliffy&trade; and Lucidchart&trade; files .
  321. </p>
  322. <h2 id="geStatus">Loading...</h2>
  323. <p>
  324. Please ensure JavaScript is enabled
  325. </p>
  326. </div>
  327. </div>
  328. <div id="geFooter" style="visibility:hidden;overflow:hidden;margin-right:170px;">
  329. <div class="geSocialFooter" style="position:absolute;right:32px;white-space:nowrap;">
  330. <a href="https://plus.google.com/u/0/+DrawIo1/posts" title="draw.io on Google+" target="_blank">
  331. <img border="0" width="24" height="24" src="images/glyphicons_google.png" alt="draw.io on Google+"/>
  332. </a>
  333. &nbsp;
  334. <a href="https://www.facebook.com/pages/drawio/161015263923018" title="draw.io on Facebook" target="_blank">
  335. <img border="0" width="24" height="24" src="images/glyphicons_facebook.png" alt="draw.io on Facebook"/>
  336. </a>
  337. &nbsp;
  338. <a href="https://www.twitter.com/drawio" title="draw.io on Twitter" target="_blank">
  339. <img border="0" width="24" height="24" src="images/glyphicons_twitter.png" alt="draw.io on Twitter"/>
  340. </a>
  341. &nbsp;
  342. <a href="https://github.com/jgraph/draw.io" title="draw.io on GitHub" target="_blank">
  343. <img border="0" width="24" height="24" src="images/glyphicons_github.png" alt="draw.io on GitHub"/>
  344. </a>
  345. </div>
  346. <table align="center">
  347. <tr>
  348. <td id="geFooterItem2">
  349. <a title="HTML5 JavaScript Diagramming" target="_blank" href="https://github.com/jgraph/draw.io">
  350. <img border="0" align="absmiddle" style="margin-top:-2px;padding-right:14px;"
  351. src="images/glyphicons_github.png"/>Fork us on Github
  352. </a>
  353. </td>
  354. <td id="geFooterItem1">
  355. <a id="geFooterLink1" title="#1 Rated Confluence Add-on" target="_blank"
  356. href="https://marketplace.atlassian.com/plugins/com.mxgraph.confluence.plugins.diagramly/server/overview">
  357. <img border="0" width="27" height="24" align="absmiddle" style="padding-right:16px;"
  358. src="images/logo-confluence.png"/>#1 Rated Confluence Add-on
  359. </a>
  360. </td>
  361. </tr>
  362. </table>
  363. </div>
  364. <script type="text/javascript">
  365. // Testing new icons
  366. (function()
  367. {
  368. if (urlParams['icons'] == 'test')
  369. {
  370. HoverIcons.prototype.triangleUp = new mxImage(IMAGE_PATH + '/connect-up-new.png', 20, 20);
  371. HoverIcons.prototype.triangleRight = new mxImage(IMAGE_PATH + '/connect-right-new.png', 20, 20);
  372. HoverIcons.prototype.triangleDown = new mxImage(IMAGE_PATH + '/connect-down-new.png', 20, 20);
  373. HoverIcons.prototype.triangleLeft = new mxImage(IMAGE_PATH + '/connect-left-new.png', 20, 20);
  374. HoverIcons.prototype.rotationHandle = new mxImage(IMAGE_PATH + '/handle-rotate-new.png', 18, 18);
  375. Sidebar.prototype.triangleUp = HoverIcons.prototype.triangleUp;
  376. Sidebar.prototype.triangleRight = HoverIcons.prototype.triangleRight;
  377. Sidebar.prototype.triangleDown = HoverIcons.prototype.triangleDown;
  378. Sidebar.prototype.triangleLeft = HoverIcons.prototype.triangleLeft;
  379. mxVertexHandler.prototype.rotationHandleVSpacing = -18;
  380. HoverIcons.prototype.inactiveOpacity = 30;
  381. }
  382. })();
  383. /**
  384. * Main
  385. */
  386. App.main();
  387. // Logs footer1 clicks
  388. if (document != null)
  389. {
  390. var footerElem = document.getElementById('geFooterLink1');
  391. if (footerElem != null)
  392. {
  393. footerElem.onclick = function()
  394. {
  395. var img = new Image();
  396. img.src = 'https://log.draw.io/log?msg=geFooterLink1:%20location=' + encodeURIComponent(window.location) + '&v=' + encodeURIComponent(EditorUi.VERSION);
  397. }
  398. }
  399. }
  400. /**
  401. * Analytics
  402. */
  403. if (urlParams['analytics'] != '0' && urlParams['dev'] != '1' && urlParams['chrome'] != '0')
  404. {
  405. (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  406. (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  407. m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  408. })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
  409. ga('create', 'UA-78007-10', 'auto');
  410. ga('send', 'pageview');
  411. }
  412. </script>
  413. </body>
  414. </html>