1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 2<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" > 3 <head> 4 <title>Mission Control - Textexture</title> 5 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 6 <meta charset="UTF-8"> 7 <meta property="fb:admins" content="655200751"/> 8 <meta property="og:title" content="Mission Control - Textexture"/> 9<meta property="og:url" content="http://textexture.com"/> 10<meta property="og:site_name" content="Textexture Text Network Visualization"/> 11<meta property="og:type" content="software"/> 12<meta property="fb:page_id" content="247159645351083"/> 13<meta property="fb:app_id" content="301949576509759"/> 14 15
16<script src="js/sigma.min.js"></script>
vendor: 1 bytes, line 16
16
17<script src="js/sigma.parseGexf.js"></script>
vendor: 1 bytes, line 17
17
18<script src="js/sigma.forceatlas2.js"></script>
vendor: 1 bytes, line 18
18
19<script type='text/javascript' src='js/jquery.min.js'></script>
vendor: 1 bytes, line 19
19
20<script type='text/javascript' src='js/jquery.content-panel-switcher.js'></script>
20
21<script type="text/javascript" src="js/jquery.qtip-1.0.0.min.js"></script>
21 22 23
24<script> 25 26function checkUser(user) { 27 if (user.value == '') { 28 document.getElementById('info').innerHTML = '' 29 return 30 } 31 32 params = "user=" + user.value 33 request = new ajaxRequest() 34 request.open("POST","_aux/checkuser.php", true) 35 request.setRequestHeader("Content-type","application/x-www-form-urlencoded") 36 request.setRequestHeader("Content-length", params.length) 37 request.setRequestHeader("Connection", "close") 38 39request.onreadystatechange = function () { 40 41if (this.readyState == 4) 42 { 43 if (this.status == 200) 44 { 45 if (this.responseText != null) { 46 document.getElementById('info').innerHTML = this.responseText 47 48 } 49 50 else alert("Ajax error: No data received") 51 52 } 53 else alert("Ajax error: " + this.statusText) 54 55 56 } 57 58 59} 60request.send(params) 61} 62 63function ajaxRequest() 64 65{ 66 try 67 { 68 var request = new XMLHttpRequest() 69 70 } 71 catch(e1) 72 { 73 try 74 { 75 request = new ActiveXObject("Msxml2.XMLHTTP") 76 } 77 catch(e2) 78 { 79 try 80 { 81 request = new ActiveXObject("Microsoft.XMLHTTP") 82 } 83 catch(e3) 84 { 85 request = false 86 } 87 } 88 } 89 return request 90 91} 92</script>
92 93
94<script type="text/javascript"> 95function validateForm() 96{ 97var x=document.forms["signup"]["email"].value; 98var atpos=x.indexOf("@"); 99var dotpos=x.lastIndexOf("."); 100if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length) 101 { 102 alert("Not a valid e-mail address"); 103 return false; 104 } 105} 106</script>
106 107
108<script type='text/javascript'> 109$(document).ready(function() { 110 jcps.fader(300, '#switcher-panel', '.set1'); 111}); 112</script>
112 113
114<script type='text/javascript'> 115function prepareSubmit() { 116 117 document.getElementById('textarea').value = document.getElementById('textdisplay').innerHTML; 118 return confirm('Are you sure you want to submit and visualize this text? Maybe type in something else?'); 119 120} 121</script>
121 122 123
124<script type="text/javascript"> 125// Create the tooltips only on document load 126$(document).ready(function() 127{ 128 // Match all link elements with href attributes within the content div 129 $('#bookmarklet').qtip( 130 { 131 132 content: '<img src="templates/bookmarklet_help.png" border="0"><font size="-1" face="Helvetica, Arial"><br> <br>1. Make sure that your browser\'s bookmarks toolbar is visible (View > Always Show Bookmarks Bar in Chrome);<br> <br>2. Drag and drop the button into your browser\'s bookmarks toolbar;<br> <br>3. Next time you want to visualize any article you\'re reading or a YouTube video as a text network, just click on that button;<br> <br></font>', 133 show: 'mouseover', 134 hide: 'mouseout', 135 position: { 136 corner: { 137 target: 'bottomMiddle', 138 tooltip: 'topMiddle' 139 } 140 }, 141 style: { 142 border: { 143 width: 3, 144 radius: 10 145 }, 146 width: 580, 147 height: 380, 148 padding: 10, 149 tip: true, 150 name: 'cream' // Inherit from preset style 151 // tip: true 152 }, 153 154 155 }); 156}); 157</script>
157 158 159 160 161<link rel="stylesheet" type="text/css" media="all" href="templates/styles.css" /> 162<link rel="stylesheet" type="text/css" media="screen" href="js/jquery.content-panel-switcher.css" /> 163 164
165<script language="javascript"> 166function toggle() { 167 var ele = document.getElementById("graphhelp"); 168 var text = document.getElementById("displayText"); 169 if(ele.style.display == "block") { 170 ele.style.display = "none"; 171 text.innerHTML = "How to Use?"; 172 } 173 else { 174 ele.style.display = "block"; 175 text.innerHTML = "Hide Tip"; 176 } 177} 178</script>
178 179 180
181<script language="javascript"> 182function toggleios() { 183 var ele = document.getElementById("ioshelp"); 184 var text = document.getElementById("displayios"); 185 if(ele.style.display == "block") { 186 ele.style.display = "none"; 187 text.innerHTML = "iPad/iPhone"; 188 } 189 else { 190 ele.style.display = "block"; 191 text.innerHTML = "hide"; 192 } 193} 194</script>
194 195 196 197 198 199</head> 200 <body> 201<div id="page"> 202<div id="header"> 203<div id="fb-root"></div>
204<script>(function(d, s, id) { 205 var js, fjs = d.getElementsByTagName(s)[0]; 206 if (d.getElementById(id)) return; 207 js = d.createElement(s); js.id = id; 208 js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=301949576509759"; 209 fjs.parentNode.insertBefore(js, fjs); 210}(document, 'script', 'facebook-jssdk'));</script>
210 211<div id="logo"> 212<a href="index.php"><img src="templates/logo.png" vspace="3"></a></div> 213<div id="search"> 214 <form action="search.php" method="get"> 215 <nobr> <input size="30" name="search" id="search_form" value=""></input> <input type="submit" value="search" /></nobr> 216 217 </form> 218</div> 219 220<nav id="navigation"> 221<div class="menu"> <br><ul id="menu-main-menu"><li class="current_page_item"><a href="/">start</a></li> 222<li><a href="user.php">my account</a></li> 223<li><a href="search.php?show_all=1">library</a> 224<ul class='children'> 225<li><a href="search.php?show_all=1">Your Texts</a></li> 226<li><a href="search.php?search=&public=1">Public Texts</a></li> 227<li><a href="index.php?text_id=603">Bible, Genesis 1:1</a></li> 228<li><a href="index.php?text_id=604">I Have a Dream by Martin Luther King</a></li> 229<li><a href="index.php?text_id=606">War and Peace, chapter 2 by Leo Tolstoy</a></li> 230<li><a href="index.php?text_id=711">Lolita by Vladimir Nabokov</a></li> 231<li><a href="index.php?text_id=605">Emancipated Spectator by Jacques Rancier</a></li> 232<li><a href="index.php?text_id=4">Magic and Happiness by Giorgio Agamben</a></li> 233<li><a href="index.php?text_id=8">Alice in Wonderland by Lewis Carroll</a></li> 234<li><a href="index.php?text_id=702">Julian Assange address in London 2012</a></li> 235<li><a href="index.php?text_id=429">Pussy Riot last court statement</a></li> 236</ul> 237</li> 238<li><a href="http://noduslabs.com/cases/textexture-non-linear-reading-machine/" target="_blank">methodology</a> 239<ul class='children'> 240<li><a href="http://noduslabs.com/cases/textexture-non-linear-reading-machine/" target="_blank">Basic Introduction to Textexture</a></li> 241<li><a href="http://noduslabs.com/research/pathways-meaning-circulation-text-network-analysis/" target="_blank">Text Network Analysis Paper</a></li> 242<li><a href="http://scholar.google.com/scholar?q=paranyushkin+text+network+analysis" rel="nofollow" target="_blank">Other Papers on Text Network Analysis</a></li> 243</ul> 244</li> 245<li><a href="http://noduslabs.com/services/text-network-analysis/" target="_blank">our services</a> 246<ul class='children'> 247<li><a href="http://noduslabs.com/services/text-network-analysis/" target="_blank">Large Text Corpus Processing</a></li> 248<li><a href="http://noduslabs.com/cases/polysingularity-network-prints/" target="_blank">High Resolution Prints</a></li> 249</ul> 250</li> 251<li><a href="index.php?text_id=3">contacts</a> 252<ul class='children'> 253<li><a href="index.php?text_id=3" target="_blank">Contact Details</a></li> 254<li><a href="http://noduslabs.com/about/" target="_blank">Nodus Labs</a></li> 255</ul> 256</li> 257<li><a href="http://textatlas.tumblr.com" target="_blank">tumblr</a> 258<ul class='children'> 259<li><a href="http://textatlas.tumblr.com" target="_blank">Text Atlas</a></li> 260<li><a href="http://polysingularity.com" target="_blank">Polysingularity</a></li> 261</ul> 262</li> 263</ul></div> 264</nav> 265 266<div id="teaser">visualize any text as a network</div> 267 268</div> 269 270 271<div id="content"> 272 273<div class="source"> 274 275<nav class="folders"> 276<div class="folder"><ul id="menu-main-menu"><li><a id="login" class="switcher set1">log in</a></li> 277<li><a id="signup" class="switcher set1">sign up</a></li> 278</ul></div> 279</nav> 280<div class="text"> 281 <div id="switcher-panel"></div> 282 283 284 285 286 287 <div id="login-content" class="switcher-content set1 show"> 288 289 290<form method='post' action='user.php'> 291 <div class="submitdata"> 292 Username<br> 293 <input type='text' maxlength='16' name='user' value='' /><br /> 294 Password<br> 295 <input type='password' maxlngth='16' name='pass' value='' /><br /> 296 <br> 297 298 <input type="checkbox" name="reminder" value="1"> Remind me my password <br> 299 300 301 <br><br> </div> 302 <div class="buttons-container"> 303 <input type="hidden" name="login" value="1"> 304 <input type="submit" value="Log In" /> 305 </div> 306</form> 307 308 </div> 309 310 311 <div id="signup-content" class="switcher-content set1"> 312 313 <!-- <form method='post' name="signup" action='user.php' onsubmit="return validateForm();"> 314 <div class="submitdata"> 315 Username<br> 316 <input type='text' maxlength='16' name='user' value='' onBlur='checkUser(this)'/><span id='info'></span><br /> 317 E-mail<br> 318 <input type='text' maxlength='40' name='e-mail' value=''/><br /> 319 Password<br> 320 <input type='password' maxlngth='16' name='pass' value='' /><br /> 321 </div> 322 <div class="buttons-container"> 323 <input type='submit' value='Signup'> 324 </div> 325</form> --> 326 327 </div> 328 329 330 331</div> 332 333 334<div class="caption"> <br/> 335<strong>Please, note, that Textexture was developed in 2012 and is no longer supported as it is outdated.<br/><br> 336We recommend you to use our new open source tool <a href="https://infranodus.com">InfraNodus â text network visualization</a></strong> 337</div> 338<div></br> 339 340</div> 341<div id="ioshelp" style="display: none"> <br> 342 <ol> 343 <li>Open this page from your iPad or iPhone.</li> 344 <li>Click the action button (Square with Arrow on it) on your iPad / iPhone and choose "Add Bookmark".</li> 345 <li>Edit the Title of the bookmark to say "Textexture" (or whatever you like).</li> 346 <li>Save the bookmark</li> 347 <li>Copy the code below. (Hold your finger down on it until the copy paste handles pop up, then select it all and copy it). 348 349 <div style="width:350px;overflow:auto"><pre>javascript:var s='';s=document.getSelection().toString();if(s!=''){function postData(g,a,e){var h=document.createElement('iframe'),d=(+((''+Math.random()).substring(2))).toString(36);h.setAttribute('name',d);h.setAttribute('id',d);h.setAttribute('style','width:0;height:0;border:none;margin:none;padding:none;position:absolute;');document.body.appendChild(h);var c=window.frames[d],i=c.document,b=i.createElement('form'),j=i.createElement('textarea');j.setAttribute('name','text');j.appendChild(i.createTextNode(g));b.setAttribute('action',a);b.setAttribute('method','post');b.setAttribute('target','_blank');b.appendChild(j);i.body.appendChild(b);if(e){document.getElementById(d).onload=e}i.forms[0].submit()};postData(s,'http://textexture.com/search.php')}else{void(window.open('http://textexture.com/search.php?url='+encodeURIComponent(location.href)))}</pre></div> 350 351 </li> 352 <li>Open your bookmarks (tap the book symbol).</li> 353 <li>Edit your bookmarks (tap the edit button).</li> 354 <li>Choose the "Textexture" bookmark you just created.</li> 355 <li>Click on the URL and delete it.</li> 356 <li>Paste the code you copied in the earlier step (tap and hold your finger in the empty field until the Paste option a
356ppears).</li> 357 <li>Return to the bookmarks, tap "Done" and you're finished.</li> 358 <li>To use it, when you're on the page or youtube video you'd like to visualize as a network, open the Bookmarks folder (tap the book symbol) and tap the "Textexture" bookmark. You'll be able to edit any notes and save the link straight into Delicious.</li> 359 </ol> 360</div> 361 362 363</div> 364 365 366<div class="graph"> 367 368<nav class="folders"> 369<div class="folder"><ul id="menu-main-menu"><li class="current_page_item"><a href="">this text</a></li> 370</ul></div> 371</nav> 372 373 374<div class="span12 sigma-parent" id="sigma-example-parent"> 375 <div class="sigma-expand" id="sigma-example"> 376 <div id="graphhelp" style="display: none"> 377This is a graph of your text "". The colors designate distinct communities of words within this text that appear more often next to each other (clusters of meaning circulation). The bigger the node, the more different clusters of meaning it connects.<br /><br /> 378<b>MOVE</b> → <br>click on the black space and drag<br/><br/> 379<b>ZOOM</b> → <br>scroll or swipe over the trackpad <br/><br/> 380<b>WORD'S CLUSTER</b> → <br>hover the cursor over the word node<br/><br/> 381<b>FIND OTHER TEXTS</b> → <br>click on the node<br/><br/> 382 383 384<br/> 385 386 <br></div> 387 <div id="graphcontrol"><a id="displayText" href="javascript:toggle();">How to Use?</a></div> 388 389 </div> 390</div> 391 <br> </br> 392 393 394 395 396 397 398 </div> 399 400 401</div> 402<div id="footer"> <br> 403 404 405 <br> 4062012 © Made by <a href="http://noduslabs.com">Nodus Labs</a>, using open-source <a href="http://gephi.org" target="_blank">Gephi</a>, <a href="http://sigmajs.org" target="_blank">sigma.js</a>, and phpmorphy | <a href="http://github.com/deemeetree" target="_blank">git</a><br> <br>
407<script type="text/javascript"> 408 409 var _gaq = _gaq || []; 410 _gaq.push(['_setAccount', 'UA-27849174-5']); 411 _gaq.push(['_setDomainName', 'textexture.com']); 412 _gaq.push(['_setAllowLinker', true]); 413 _gaq.push(['_trackPageview']); 414 415 (function() { 416 var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; 417 ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; 418 var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); 419 })(); 420 421</script>
421 422 423
424<script type="text/javascript">function init() { 425 426 427 428 /** 429 * This is the code to write the FishEye plugin : 430 */ 431 432 (function(){ 433 434 // First, let's write a FishEye class. 435 // There is no need to make this class global, since it is made to be used through 436 // the SigmaPublic object, that's why a local scope is used for the declaration. 437 // The parameter 'sig' represents a Sigma instance. 438 var FishEye = function(sig) { 439 sigma.classes.Cascade.call(this); // The Cascade class manages the chainable property 440 // edit/get function. 441 442 var self = this; // Used to avoid any scope confusion. 443 var isActivated = false; // Describes is the FishEye is activated. 444 445 this.p = { // The object containing the properties accessible with 446 radius: 200, // the Cascade.config() method. 447 power: 2 448 }; 449 450 function applyFishEye(mouseX, mouseY) { // This method will apply a formula relatively to 451 // the mouse position. 452 var newDist, newSize, xDist, yDist, dist, 453 radius = self.p.radius, 454 power = self.p.power, 455 powerExp = Math.exp(power); 456 457 sig.graph.nodes.forEach(function(node) { 458 xDist = node.displayX - mouseX; 459 yDist = node.displayY - mouseY; 460 dist = Math.sqrt(xDist*xDist + yDist*yDist); 461 462 if(dist < radius){ 463 newDist = powerExp/(powerExp-1)*radius*(1-Math.exp(-dist/radius*power)); 464 newSize = powerExp/(powerExp-1)*radius*(1-Math.exp(-dist/radius*power)); 465 466 if(!node.isFixed){ 467 node.displayX = mouseX + xDist*(newDist/dist*3/4 + 1/4); 468 node.displayY = mouseY + yDist*(newDist/dist*3/4 + 1/4); 469 } 470 471 node.displaySize = Math.min(node.displaySize*newSize/dist,10*node.displaySize); 472 } 473 }); 474 }; 475 476 // The method that will be triggered when Sigma's 'graphscaled' is dispatched. 477 function handler() { 478 applyFishEye( 479 sig.mousecaptor.mouseX, 480 sig.mousecaptor.mouseY 481 ); 482 } 483 484 this.handler = handler; 485 486 // A public method to set/get the isActivated parameter. 487 this.activated = function(v) { 488 if(v==undefined){ 489 return isActivated; 490 }else{ 491 isActivated = v; 492 return this; 493 } 494 }; 495 496 // this.refresh() is just a helper to draw the graph. 497 this.refresh = function(){ 498 sig.draw(2,2,2); 499 }; 500 }; 501 502 // Then, let's add some public method to sigma.js instances : 503 sigma.publicPrototype.activateFishEye = function() { 504 if(!this.fisheye) { 505 var sigmaInstance = this; 506 var fe = new FishEye(sigmaInstance._core); 507 sigmaInstance.fisheye = fe; 508 } 509 510 if(!this.fisheye.activated()){ 511 this.fisheye.activated(true); 512 this._core.bind('graphscaled', this.fisheye.handler); 513 document.getElementById( 514 'sigma_mouse_'+this.getID() 515 ).addEventListener('mousemove',this.fisheye.refresh,true); 516 } 517 518 return this; 519 }; 520 521 sigma.publicPrototype.desactivateFishEye = function() { 522 if(this.fisheye && this.fisheye.activated()){ 523 this.fisheye.activated(false); 524 this._core.unbind('graphscaled', this.fisheye.handler); 525 document.getElementById( 526 'sigma_mouse_'+this.getID() 527 ).removeEventListener('mousemove',this.fisheye.refresh,true); 528 } 529 530 return this; 531 }; 532 533 sigma.publicPrototype.fishEyeProperties = function(a1, a2) { 534 var res = this.fisheye.config(a1, a2); 535 return res == s ? this.fisheye : res; 536 }; 537 })(); 538 539 540 // Instanciate sigma.js and customize rendering : 541 var sigInst = sigma.init(document.getElementById('sigma-example')).drawingProperties({ 542 defaultLabelColor: '#fff', 543 defaultLabelSize: , 544 defaultLabelBGColor: '#fff', 545 defaultLabelHoverColor: '#000', 546 labelThreshold: , 547 defaultEdgeType: 'curve' 548 }).graphProperties({ 549 minNodeSize: , 550 maxNodeSize: , 551 minEdgeSize: , 552 maxEdgeSize: }).mouseProperties({ 553 maxRatio: 4 554 }); 555 556 // Parse a GEXF encoded file to fill the graph 557 // (requires "sigma.parseGexf.js" to be included) 558 sigInst.parseGexf(''); 559 560 561 sigInst.startForceAtlas2(); 562 563 setTimeout(function() {sigInst.stopForceAtlas2();;},5000); 564 565 566 567 // Bind events : 568 sigInst.bind('overnodes',function(event){ 569 var nodes = event.content; 570 var neighbors = {}; 571 572 // Mod - highlight text 573 var node; 574 sigInst.iterNodes(function(n){ 575 node = n; 576 },[event.content[0]]); 577 578 579 $('#textdisplay').highlight(node['label']); 580 581 document.getElementById('search_form').value += ' '+node['label']; 582 583 // Mod - highlight respective text 584 585 586 587 588 sigInst.iterEdges(function(e){ 589 if(nodes.indexOf(e.source)>=0 || nodes.indexOf(e.target)>=0){ 590 neighbors[e.source] = 1; 591 neighbors[e.target] = 1; 592 } 593 }).iterNodes(function(n){ 594 if(!neighbors[n.id]){ 595 n.hidden = 1; 596 }else{ 597 n.hidden = 0; 598 } 599 }).draw(2,2,2); 600 }).bind('outnodes',function(){ 601 sigInst.iterEdges(function(e){ 602 e.hidden = 0; 603 }).iterNodes(function(n){ 604 n.hidden = 0; 605 }).draw(2,2,2); 606 }); 607 608 // Mod Dmitry 609 610 611 sigInst.bind('downnodes',function(event){ 612 var node; 613 sigInst.iterNodes(function(n){ 614 node = n; 615 },[event.content[0]]); 616 window.open("search.php?search="+node['label'],"_self"); 617 }); 618 619// Mod Dmitry 620 621 // Draw the graph : 622// sigInst.draw(); 623 sigInst.activateFishEye().draw(); 624 625} 626 627if (document.addEventListener) { 628 document.addEventListener("DOMContentLoaded", init, false); 629} else { 630 window.onload = init; 631} 632 633var node_label = ''; 634 635if (node_label != '') { 636$('#textdisplay').highlight(''); 637document.getElementById('search_form').value += ' '+node_label; 638} 639</script>
639 640</div> 641 642 <br> 643 644 645</div> 646 </body> 647</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.