├── data ├── article09_06_04_0159210.json ├── article09_06_05_172247.json ├── article09_06_27_0329207.json ├── article09_11_02_1435227.json ├── article09_11_26_0628247.json ├── article09_12_04_0546254.json ├── article09_12_19_0419205.json ├── article10_01_05_1514241.json ├── article10_02_20_048256.json └── article09_05_28_1952214_flat.json ├── .gitignore ├── back.png ├── blue.png ├── author.png ├── button.png ├── form ├── top.png ├── blank.gif ├── bottom.png ├── shadow.gif ├── save_interface.php ├── saveuser.php ├── file.csv ├── choose_interface.php ├── view.js ├── iepngfix.htc ├── user.php ├── form.html └── view.css ├── gravatar.gif ├── js ├── main.js ├── jcollapsible.js ├── jquery_003.js ├── init.js ├── search.js ├── jquery_002.js ├── highlight.js ├── commentview.js.bak ├── commentview_baseline.js ├── commentview_simple.js ├── commentview.js └── conversationTemple.js ├── arrow-down.png ├── arrow-right.png ├── author_border.png ├── blue_border.png ├── icons ├── author.png └── logout.png ├── test.php ├── list.txt ├── README.md ├── index.php ├── document.json ├── do_query.php ├── style.css.bak ├── style.css ├── style_simple.css ├── license.txt └── convis.php /data/article09_06_04_0159210.json: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /data/article09_06_05_172247.json: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /data/article09_06_27_0329207.json: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /data/article09_11_02_1435227.json: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /data/article09_11_26_0628247.json: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /data/article09_12_04_0546254.json: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /data/article09_12_19_0419205.json: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /data/article10_01_05_1514241.json: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /data/article10_02_20_048256.json: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /data/article09_05_28_1952214_flat.json: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | data/.DS_Store 3 | .DS_Store 4 | -------------------------------------------------------------------------------- /back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gonzalezf/ConVis/master/back.png -------------------------------------------------------------------------------- /blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gonzalezf/ConVis/master/blue.png -------------------------------------------------------------------------------- /author.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gonzalezf/ConVis/master/author.png -------------------------------------------------------------------------------- /button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gonzalezf/ConVis/master/button.png -------------------------------------------------------------------------------- /form/top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gonzalezf/ConVis/master/form/top.png -------------------------------------------------------------------------------- /gravatar.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gonzalezf/ConVis/master/gravatar.gif -------------------------------------------------------------------------------- /js/main.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gonzalezf/ConVis/master/js/main.js -------------------------------------------------------------------------------- /arrow-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gonzalezf/ConVis/master/arrow-down.png -------------------------------------------------------------------------------- /form/blank.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gonzalezf/ConVis/master/form/blank.gif -------------------------------------------------------------------------------- /arrow-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gonzalezf/ConVis/master/arrow-right.png -------------------------------------------------------------------------------- /author_border.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gonzalezf/ConVis/master/author_border.png -------------------------------------------------------------------------------- /blue_border.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gonzalezf/ConVis/master/blue_border.png -------------------------------------------------------------------------------- /form/bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gonzalezf/ConVis/master/form/bottom.png -------------------------------------------------------------------------------- /form/shadow.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gonzalezf/ConVis/master/form/shadow.gif -------------------------------------------------------------------------------- /icons/author.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gonzalezf/ConVis/master/icons/author.png -------------------------------------------------------------------------------- /icons/logout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gonzalezf/ConVis/master/icons/logout.png -------------------------------------------------------------------------------- /test.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /form/save_interface.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /form/saveuser.php: -------------------------------------------------------------------------------- 1 | 17 | 18 | -------------------------------------------------------------------------------- /list.txt: -------------------------------------------------------------------------------- 1 | article09_05_28_1952214: Hackers Breached US Army Servers (89 comments) 2 | article09_06_04_0159210: Music Streaming to Overtake Downloads (102 comments) 3 | article09_06_27_0329207: The State of Video Game Physics (89 comments) 4 | article10_03_10_1515232: LHC Will Be Shut Down In 2011 Because of Mistake (98 comments) 5 | article10_03_29_2037239: Lord British Claims He Owns the Moonspan classvballoonmarquee rd5spanComments:spana href144aspan (82 comments) 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ConVis 2 | ConVis: A Visual Text Analytic System for Exploring Blog Conversations 3 | 4 | If you use ConVis in your research paper please cite: 5 | Enamul Hoque and Giuseppe Carenini, ConVis: A visual text analytic system for exploring blog conversations, Journal of Computer Graphics Forum (Proc. EuroVis), Vol. 33, No. 3, pp. 221-230, 2014 6 | 7 | Running the code 8 | ----------------- 9 | - Install PHP server 10 | - Run index.php 11 | - Click on a sample conversation file. 12 | 13 | Each blog conversation is represented using a json file in the data directory 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /form/file.csv: -------------------------------------------------------------------------------- 1 | ,, 2 | ,, 3 | ,, 4 | ww,, 5 | 100,www,123askdfjsdklfcsdlk 6 | 100,www,123askdfjsdklfcsdlk 7 | 100,www,1,23,askdfj,sdklfcsdlk 8 | 100,www,1,23,askdfj,sdklfcsdlk 9 | 100,www,1,23,askdfj,sdklfcsdlk 10 | 105,www,2,23,askdfj,sdklfcsdlk 11 | 105,www,2,23,askdfj,sdklfcsdlk 12 | 110,fdsfsd,Male,21,skdfdskf,sdlk 13 | 200,ssss,Male,sdfds,scsdsdd,sdfds 14 | 220,sdfs,Male,28,SDFSD,SDAFDAS 15 | 999,,,,, 16 | 998,sdsa,Male,skdljdsk,sdfkldsj,sdfkjds 17 | 199,sdfds,Male,12,asdasdas,sdfds 18 | 299,sdfds,Male,12,sdfsf,sdfsdf 19 | ass,asdfskj,Male,23,sddsl,dskfdk 20 | 100,enamul_ubc,Male,12,askdfj,s 21 | 500,sdfsd,Female,sdjkfh,lk;adsnklf,klsdjfk 22 | SDHI,SDJFDS,Male,23,SWFSDH,JHDKF 23 | 111,Kaya,Female,,, 24 | done,,,,, 25 | test,efsd,Male,23,dfds,edf 26 | 102,"mirza saquib us sarwar",Male,26,"graduate student","micro nano fabrication" 27 | 3,Brendon,,,, 28 | 104,"James liu",,,, 29 | 5,,,,, 30 | test2,,,,, 31 | -------------------------------------------------------------------------------- /index.php: -------------------------------------------------------------------------------- 1 | List of conversations:
'; 7 | 8 | $handle = @fopen("list.txt", "r"); 9 | if ($handle) { 10 | while (($entry = fgets($handle, 4096)) !== false) { 11 | echo ''; 17 | echo str_replace(".json","",$entry); 18 | echo ''; 19 | echo '

'; 20 | } 21 | if (!feof($handle)) { 22 | echo "Error: unexpected fgets() fail\n"; 23 | } 24 | fclose($handle); 25 | } 26 | 27 | /*if ($handle = opendir('data/')) { 28 | while (false !== ($entry = readdir($handle))) { 29 | if ($entry != "." && $entry != "..") { 30 | echo ''; 34 | echo str_replace(".json","",$entry); 35 | echo ''; 36 | echo '
'; 37 | } 38 | } 39 | closedir($handle); 40 | }*/ 41 | ?> -------------------------------------------------------------------------------- /js/jcollapsible.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jCollapsible - Makes any nested list collapsible by adding an icon to the left of it 3 | * Copyright 2010 Monjurul Dolon, http://mdolon.com/ 4 | * Released under the MIT, BSD, and GPL Licenses. 5 | * More information: http://devgrow.com/simple-threaded-comments-with-jcollapsible 6 | */ 7 | $.fn.collapsible = function(options) { 8 | 9 | var defaults = {defaulthide: true, symbolhide: '-', symbolshow: '+', imagehide: null, imageshow: null, xoffset: '-15', yoffset: '0'}; 10 | var opts = $.extend(defaults, options); 11 | var o = $.meta ? $.extend({}, opts, $$.data()) : opts; var obj = $(this); 12 | if(o.imageshow) o.symbolshow = ''; 13 | if(o.imagehide) o.symbolhide = ''; 14 | //alert(o.symbolhide); 15 | var startsymbol = o.symbolshow; 16 | 17 | $('li', obj).each(function(index) { 18 | 19 | if($('>ul, >ol',this).size() > 0){ 20 | 21 | if(o.defaulthide) $('>ul, >ol',this).hide(); else startsymbol = o.symbolhide; 22 | 23 | $(this).prepend(''+startsymbol+'').css('position','relative'); 24 | } 25 | }); 26 | $('.jcollapsible', obj).click(function(){ 27 | var parent = $(this).parent(); 28 | $('>ul, >ol',parent).slideToggle('fast'); 29 | $(this).html($(this).html() == o.symbolshow ? o.symbolhide : o.symbolshow); 30 | return false; 31 | }); 32 | }; -------------------------------------------------------------------------------- /form/choose_interface.php: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | Untitled Form 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 |

Exploring blog

19 |
20 | 21 | 42 |
43 |
44 | 45 | 46 | -------------------------------------------------------------------------------- /js/jquery_003.js: -------------------------------------------------------------------------------- 1 | /** 2 | * jQuery.LocalScroll - Animated scrolling navigation, using anchors. 3 | * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com 4 | * Dual licensed under MIT and GPL. 5 | * Date: 3/11/2009 6 | * @author Ariel Flesler 7 | * @version 1.2.7 8 | **/ 9 | ;(function($){var l=location.href.replace(/#.*/,'');var g=$.localScroll=function(a){$('body').localScroll(a)};g.defaults={duration:1e3,axis:'y',event:'click',stop:true,target:window,reset:true};g.hash=function(a){if(location.hash){a=$.extend({},g.defaults,a);a.hash=false;if(a.reset){var e=a.duration;delete a.duration;$(a.target).scrollTo(0,a);a.duration=e}i(0,location,a)}};$.fn.localScroll=function(b){b=$.extend({},g.defaults,b);return b.lazy?this.bind(b.event,function(a){var e=$([a.target,a.target.parentNode]).filter(d)[0];if(e)i(a,e,b)}):this.find('a,area').filter(d).bind(b.event,function(a){i(a,this,b)}).end().end();function d(){return!!this.href&&!!this.hash&&this.href.replace(this.hash,'')==l&&(!b.filter||$(this).is(b.filter))}};function i(a,e,b){var d=e.hash.slice(1),f=document.getElementById(d)||document.getElementsByName(d)[0];if(!f)return;if(a)a.preventDefault();var h=$(b.target);if(b.lock&&h.is(':animated')||b.onBefore&&b.onBefore.call(b,a,f,h)===false)return;if(b.stop)h.stop(true);if(b.hash){var j=f.id==d?'id':'name',k=$(' ').attr(j,d).css({position:'absolute',top:$(window).scrollTop(),left:$(window).scrollLeft()});f[j]='';$('body').prepend(k);location=e.hash;k.remove();f[j]=d}h.scrollTo(f,b).trigger('notify.serialScroll',[f])}})(jQuery); -------------------------------------------------------------------------------- /js/init.js: -------------------------------------------------------------------------------- 1 | jQuery(function( $ ){ 2 | /** 3 | * Most jQuery.localScroll's settings, actually belong to jQuery.ScrollTo, check it's demo for an example of each option. 4 | * @see http://flesler.demos.com/jquery/scrollTo/ 5 | * You can use EVERY single setting of jQuery.ScrollTo, in the settings hash you send to jQuery.LocalScroll. 6 | */ 7 | 8 | // The default axis is 'y', but in this demo, I want to scroll both 9 | // You can modify any default like this 10 | $.localScroll.defaults.axis = 'y'; 11 | 12 | // Scroll initially if there's a hash (#something) in the url 13 | $.localScroll.hash({ 14 | target: '#content', // Could be a selector or a jQuery object too. 15 | queue:true, 16 | duration:1500 17 | }); 18 | 19 | /** 20 | * NOTE: I use $.localScroll instead of $('#navigation').localScroll() so I 21 | * also affect the >> and << links. I want every link in the page to scroll. 22 | */ 23 | $.localScroll({ 24 | target: '#content', // could be a selector or a jQuery object too. 25 | queue:true, 26 | duration:400, 27 | hash:true, 28 | onBefore:function( e, anchor, $target ){ 29 | // The 'this' is the settings object, can be modified 30 | }, 31 | onAfter:function( anchor, settings ){ 32 | 33 | // The 'this' contains the scrolled element (#content) 34 | } 35 | }); 36 | 37 | function nodeToString ( node ) { 38 | var tmpNode = document.createElement( "div" ); 39 | tmpNode.appendChild( node.cloneNode( true ) ); 40 | var str = tmpNode.innerHTML; 41 | tmpNode = node = null; // prevent memory leaks in IE 42 | return str; 43 | } 44 | 45 | }); -------------------------------------------------------------------------------- /document.json: -------------------------------------------------------------------------------- 1 | [{ 2 | "class": "folder", 3 | "title": "Test Framework", 4 | "nodes": [{ 5 | "class": "folder", 6 | "title": "Item 1", 7 | "nodes": [{ 8 | "class": "folder", 9 | "title": "Item 1.1", 10 | "nodes": [{ 11 | "class": "file", 12 | "title": "Item 1.1.a" 13 | }] 14 | }, 15 | { 16 | "class": "folder", 17 | "title": "Item 1.2", 18 | "nodes": [{ 19 | "class": "file", 20 | "title": "Item 1.2.a" 21 | }, 22 | { 23 | "class": "file", 24 | "title": "Item 1.2.b" 25 | }, 26 | { 27 | "class": "file", 28 | "title": "Item 1.2.c" 29 | }] 30 | }, 31 | { 32 | "class": "folder", 33 | "title": "Item 1.3", 34 | "nodes": [{ 35 | "class": "folder", 36 | "title": "Item 1.3.a", 37 | "nodes": [{ 38 | "class": "file", 39 | "title": "Item 1.3.a.i" 40 | }, 41 | { 42 | "class": "file", 43 | "title": "Item 1.3.a.ii" 44 | }] 45 | }] 46 | }] 47 | }, 48 | { 49 | "class": "folder", 50 | "title": "Item 2", 51 | "nodes": [{ 52 | "class": "file", 53 | "title": "item 2.a" 54 | }, 55 | { 56 | "class": "file", 57 | "title": "Item 2.b" 58 | }] 59 | }] 60 | }] -------------------------------------------------------------------------------- /js/search.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | $(function() { 4 | 5 | var self = this; 6 | self.input = $("#search").select().focus(); 7 | 8 | //handles searching the document 9 | self.performSearch = function() { 10 | 11 | //create a search string 12 | var phrase = self.input.val().replace(/^\s+|\s+$/g, ""); 13 | phrase = phrase.replace(/\s+/g, "|"); 14 | 15 | //make sure there are a couple letters 16 | if (phrase.length < 3) { return; } 17 | 18 | //append the rest of the expression 19 | phrase = ["\\b(", phrase, ")"].join(""); 20 | 21 | //search for any matches 22 | var count = 0; 23 | $("h1, h3, p").each(function(i, v) { 24 | 25 | //replace any matches 26 | var block = $(v); 27 | block.html( 28 | block.text().replace( 29 | new RegExp(phrase, "gi"), 30 | function(match) { 31 | count++; 32 | return ["", match, ""].join(""); 33 | })); 34 | 35 | }); 36 | 37 | //update the count 38 | $(".result-count").text(count + " results on this page!"); 39 | 40 | //clear this search attempt 41 | //should be gone anyways... 42 | self.search = null; 43 | 44 | }; 45 | 46 | self.search; 47 | self.input.keyup(function(e) { 48 | if (self.search) { clearTimeout(self.search); } 49 | 50 | //start a timer to perform the search. On browsers like 51 | //Chrome, Javascript works fine -- other less performant 52 | //browsers like IE6 have a hard time doing this 53 | self.search = setTimeout(self.performSearch, 300); 54 | 55 | }); 56 | 57 | }); 58 | -------------------------------------------------------------------------------- /do_query.php: -------------------------------------------------------------------------------- 1 | 39 | 40 | Firstname 41 | Lastname 42 | Age 43 | Hometown 44 | Job 45 | "; 46 | 47 | while($row = mysqli_fetch_array($result)) 48 | { 49 | echo ""; 50 | echo "" . $row['FirstName'] . ""; 51 | echo "" . $row['LastName'] . ""; 52 | echo "" . $row['Age'] . ""; 53 | echo "" . $row['Hometown'] . ""; 54 | echo "" . $row['Job'] . ""; 55 | echo ""; 56 | } 57 | echo ""; 58 | 59 | mysqli_close($con);*/ 60 | ?> -------------------------------------------------------------------------------- /form/view.js: -------------------------------------------------------------------------------- 1 | eval(function(p,a,c,k,e,r){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('3(7.X){7["R"+a]=a;7["z"+a]=6(){7["R"+a](7.1k)};7.X("1e",7["z"+a])}E{7.19("z",a,15)}2 j=H V();6 a(){2 e=q.1d("1a");3(e){o(e,"P");2 N=B(q,"*","14");3((e.12<=10)||(N=="")){c(e,"P",d)}}4=B(q,"*","1n");k(i=0;i<4.b;i++){3(4[i].F=="1g"||4[i].F=="1f"||4[i].F=="1c"){4[i].1b=6(){r();c(v.5.5,"f",d)};4[i].O=6(){r();c(v.5.5,"f",d)};j.D(j.b,0,4[i])}E{4[i].O=6(){r();c(v.5.5,"f",d)};4[i].18=6(){o(v.5.5,"f")}}}2 C=17.16.13();2 A=q.M("11");3(C.K("J")+1){c(A[0],"J",d)}3(C.K("I")+1){c(A[0],"I",d)}}6 r(){k(2 i=0;i 2 | 3 | 4 | 68 | -------------------------------------------------------------------------------- /form/user.php: -------------------------------------------------------------------------------- 1 | User Information

User Information

User Information

Please fill up the following information

-------------------------------------------------------------------------------- /js/jquery_002.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2007-2012 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com 3 | * Dual licensed under MIT and GPL. 4 | * @author Ariel Flesler 5 | * @version 1.4.3.1 6 | */ 7 | ;(function($){var h=$.scrollTo=function(a,b,c){$(window).scrollTo(a,b,c)};h.defaults={axis:'xy',duration:parseFloat($.fn.jquery)>=1.3?0:1,limit:true};h.window=function(a){return $(window)._scrollable()};$.fn._scrollable=function(){return this.map(function(){var a=this,isWin=!a.nodeName||$.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!isWin)return a;var b=(a.contentWindow||a).document||a.ownerDocument||a;return/webkit/i.test(navigator.userAgent)||b.compatMode=='BackCompat'?b.body:b.documentElement})};$.fn.scrollTo=function(e,f,g){if(typeof f=='object'){g=f;f=0}if(typeof g=='function')g={onAfter:g};if(e=='max')e=9e9;g=$.extend({},h.defaults,g);f=f||g.duration;g.queue=g.queue&&g.axis.length>1;if(g.queue)f/=2;g.offset=both(g.offset);g.over=both(g.over);return this._scrollable().each(function(){if(e==null)return;var d=this,$elem=$(d),targ=e,toff,attr={},win=$elem.is('html,body');switch(typeof targ){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(targ)){targ=both(targ);break}targ=$(targ,this);if(!targ.length)return;case'object':if(targ.is||targ.style)toff=(targ=$(targ)).offset()}$.each(g.axis.split(''),function(i,a){var b=a=='x'?'Left':'Top',pos=b.toLowerCase(),key='scroll'+b,old=d[key],max=h.max(d,a);if(toff){attr[key]=toff[pos]+(win?0:old-$elem.offset()[pos]);if(g.margin){attr[key]-=parseInt(targ.css('margin'+b))||0;attr[key]-=parseInt(targ.css('border'+b+'Width'))||0}attr[key]+=g.offset[pos]||0;if(g.over[pos])attr[key]+=targ[a=='x'?'width':'height']()*g.over[pos]}else{var c=targ[pos];attr[key]=c.slice&&c.slice(-1)=='%'?parseFloat(c)/100*max:c}if(g.limit&&/^\d+$/.test(attr[key]))attr[key]=attr[key]<=0?0:Math.min(attr[key],max);if(!i&&g.queue){if(old!=attr[key])animate(g.onAfterFirst);delete attr[key]}});animate(g.onAfter);function animate(a){$elem.animate(attr,f,g.easing,a&&function(){a.call(this,e,g)})}}).end()};h.max=function(a,b){var c=b=='x'?'Width':'Height',scroll='scroll'+c;if(!$(a).is('html,body'))return a[scroll]-$(a)[c.toLowerCase()]();var d='client'+c,html=a.ownerDocument.documentElement,body=a.ownerDocument.body;return Math.max(html[scroll],body[scroll])-Math.min(html[d],body[d])};function both(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery); -------------------------------------------------------------------------------- /style.css.bak: -------------------------------------------------------------------------------- 1 | .node rect { 2 | fill: #F1595F; 3 | cursor: pointer; 4 | stroke: #000; 5 | stroke-width:.25px; 6 | 7 | } 8 | 9 | .roundedrect { 10 | fill: #F1595F; 11 | 12 | 13 | cursor: pointer; 14 | stroke: #000; 15 | stroke-width:2px; 16 | 17 | } 18 | 19 | .authorrect { 20 | 21 | 22 | } 23 | .rrr{ 24 | 25 | } 26 | .node text { 27 | font: 8px sans-serif; 28 | pointer-events: none; 29 | } 30 | 31 | path.link { 32 | fill: none; 33 | stroke: #d5e6ec; 34 | stroke-width: 1.5px; 35 | } 36 | 37 | .linktopics { 38 | fill: none; 39 | /*stroke: #d5e6ec; */ 40 | stroke:#00479D; 41 | stroke-width: 1.5px; 42 | } 43 | 44 | .linkauthors { 45 | fill: none; 46 | stroke: #9970AB; 47 | stroke-width: 1.5px; 48 | } 49 | body { 50 | 51 | /* font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", Helvetica, sans-serif;*/ 52 | font-family: "HelveticaNeueLight", "HelveticaNeue-Light", "Helvetica Neue Light", "HelveticaNeue", "Helvetica Neue", 'TeXGyreHerosRegular', "Arial", sans-serif; 53 | font-weight: 200; font-stretch: normal; 54 | padding: 40px; 55 | } 56 | a { text-decoration: none; } 57 | h2, h3 { margin: 0 0 20px; text-shadow: 2px 2px #fff; } 58 | h2 { font-size: 28px; } 59 | h3 { font-size: 22px; } 60 | pre { background: #fff; width: 460px; padding: 10px 20px; border-left: 5px solid #ccc; margin: 0 0 20px; } 61 | p { font-size: 18px; line-height: 24px; margin: 0 0 30px; } 62 | input { margin: 0; padding: 0; } 63 | 64 | #content {margin: 0px; width: 420px; height: 700px; vertical-align: top; background: #eee; overflow:scroll;} 65 | ul, ol { padding-left: 20px; line-height: 18px; } 66 | .biglist { font-size: 110%; font-weight: bold; background: #fff; padding: 10px 40px; margin: 0; } 67 | 68 | .jcollapsible { font-size: 125%; font-weight: bold; } 69 | 70 | #example, #example2, #example3 { width: 120px; float: left; margin-right: 40px; } 71 | #example2, #example2 ul { list-style-type: none; } 72 | 73 | 74 | #example3, #example3 ul { list-style: none; } 75 | 76 | #comments { padding: 0; margin: 0; } 77 | 78 | #comments li { padding: 10px 0 0; } 79 | #comments ul { list-style-type: none;} 80 | .comment { background: #fff; padding: 10px; display: block; overflow: hidden; } 81 | .comment-author { float: left; width: 60px; font-size: 10px; text-align: center; margin: 0 10px 10px 0; } 82 | .comment-body, .comment-body p { font-size: 12px; line-height: 18px; margin: 0; } 83 | 84 | table { 85 | margin: 0px; 86 | border-collapse: collapse; 87 | padding: 0px; 88 | width: 100%; 89 | 90 | } -------------------------------------------------------------------------------- /form/form.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | User Information 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 |

User Information

16 |
17 |
18 |

User Information

19 |

Please fill up the following information

20 |
21 |
    22 | 23 |
  • 24 | 25 |
    26 | 27 |
    28 |
  • 29 | 30 |
    31 | 32 |
    33 |
  • 34 | 35 |
    36 | 42 |
    43 |
  • 44 | 45 |
    46 | 47 |
    48 |
  • 49 | 50 |
    51 | 52 |
    53 |
  • 54 | 55 |
    56 | 57 |
    58 |
  • 59 | 60 |
  • 61 | 62 | 63 | 64 |
  • 65 |
66 |
67 |
68 | 69 | 70 | -------------------------------------------------------------------------------- /js/highlight.js: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | highlight v4 4 | 5 | Highlights arbitrary terms. 6 | 7 | 8 | 9 | MIT license. 10 | 11 | Johann Burkard 12 | 13 | 14 | 15 | */ 16 | !function($) { 17 | $.fn.highlight = function(pat, ignore) { 18 | function replaceDiacritics(str) { 19 | var diacritics = [ [ /[\u00c0-\u00c6]/g, 'A' ], 20 | [ /[\u00e0-\u00e6]/g, 'a' ], 21 | [ /[\u00c7]/g, 'C' ], 22 | [ /[\u00e7]/g, 'c' ], 23 | [ /[\u00c8-\u00cb]/g, 'E' ], 24 | [ /[\u00e8-\u00eb]/g, 'e' ], 25 | [ /[\u00cc-\u00cf]/g, 'I' ], 26 | [ /[\u00ec-\u00ef]/g, 'i' ], 27 | [ /[\u00d1|\u0147]/g, 'N' ], 28 | [ /[\u00f1|\u0148]/g, 'n' ], 29 | [ /[\u00d2-\u00d8|\u0150]/g, 'O' ], 30 | [ /[\u00f2-\u00f8|\u0151]/g, 'o' ], 31 | [ /[\u0160]/g, 'S' ], 32 | [ /[\u0161]/g, 's' ], 33 | [ /[\u00d9-\u00dc]/g, 'U' ], 34 | [ /[\u00f9-\u00fc]/g, 'u' ], 35 | [ /[\u00dd]/g, 'Y' ], 36 | [ /[\u00fd]/g, 'y' ] 37 | ]; 38 | 39 | for ( var i = 0; i < diacritics.length; i++) { 40 | str = str.replace(diacritics[i][0], diacritics[i][1]); 41 | } 42 | 43 | return str; 44 | } 45 | 46 | function innerHighlight(node, pat, ignore) { 47 | var skip = 0; 48 | if (node.nodeType == 3) { 49 | var isPatternArray = $.isArray(pat); 50 | if (!isPatternArray) { 51 | pat = [pat]; 52 | } 53 | var patternCount = pat.length; 54 | for (var ii = 0; ii < patternCount; ii++) { 55 | var currentTerm = (ignore ? replaceDiacritics(pat[ii]) : pat[ii]).toUpperCase(); 56 | var pos = (ignore ? replaceDiacritics(node.data) : node.data).toUpperCase().indexOf(currentTerm); 57 | if (pos >= 0) { 58 | var spannode = document.createElement('span'); 59 | spannode.className = 'highlight'; 60 | var middlebit = node.splitText(pos); 61 | var endbit = middlebit.splitText(currentTerm.length); 62 | var middleclone = middlebit.cloneNode(true); 63 | spannode.appendChild(middleclone); 64 | middlebit.parentNode.replaceChild(spannode, middlebit); 65 | skip = 1; 66 | } 67 | } 68 | } else if (node.nodeType == 1 && node.childNodes && !/(script|style)/i.test(node.tagName)) { 69 | for (var i = 0; i < node.childNodes.length; ++i) { 70 | i += innerHighlight(node.childNodes[i], pat, ignore); 71 | } 72 | } 73 | return skip; 74 | } 75 | return this.length && pat && pat.length ? this.each(function() { 76 | ignore = typeof ignore !== 'undefined' ? ignore : $.fn.highlight.defaults.ignore; 77 | innerHighlight(this, pat, ignore); 78 | }) : this; 79 | }; 80 | 81 | $.fn.highlight.defaults = { 82 | ignore : false 83 | } 84 | 85 | $.fn.removeHighlight = function() { 86 | return this.find("span.highlight").each(function() { 87 | this.parentNode.firstChild.nodeName; 88 | with(this.parentNode) { 89 | replaceChild(this.firstChild, this); 90 | normalize(); 91 | } 92 | }).end(); 93 | }; 94 | }(window.jQuery); -------------------------------------------------------------------------------- /style.css: -------------------------------------------------------------------------------- 1 | .node rect { 2 | fill: #F1595F; 3 | cursor: pointer; 4 | stroke: #000; 5 | stroke-width:.15px; 6 | 7 | } 8 | 9 | .roundedrect { 10 | fill: #F1595F; 11 | 12 | 13 | cursor: pointer; 14 | stroke: #000; 15 | stroke-width:2px; 16 | 17 | } 18 | 19 | .authorrect { 20 | fill: #F1595F; 21 | cursor: pointer; 22 | stroke: #000; 23 | stroke-width:.15px; 24 | 25 | 26 | } 27 | .rrr{ 28 | 29 | } 30 | .node text { 31 | font: 8px sans-serif; 32 | pointer-events: none; 33 | } 34 | 35 | path.link { 36 | fill: none; 37 | stroke: #d5e6ec; 38 | stroke-width: 1.5px; 39 | } 40 | 41 | .linktopics { 42 | fill: none; 43 | /*stroke: #d5e6ec; */ 44 | stroke:#00479D; 45 | stroke-width: 1.5px; 46 | } 47 | 48 | .linkauthors { 49 | fill: none; 50 | stroke: #9970AB; 51 | stroke-width: 1.5px; 52 | } 53 | body { 54 | 55 | /* font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", Helvetica, sans-serif;*/ 56 | font-family: "HelveticaNeueLight", "HelveticaNeue-Light", "Helvetica Neue Light", "HelveticaNeue", "Helvetica Neue", 'TeXGyreHerosRegular', "Arial", sans-serif; 57 | font-weight: 200; font-stretch: normal; 58 | padding: 10px; 59 | } 60 | a { text-decoration: none;} 61 | h2, h3 { margin: 0 0 20px; text-shadow: 2px 2px #fff; } 62 | h2 { font-size: 28px; } 63 | h3 { font-size: 22px; } 64 | pre { background: #fff; width: 460px; padding: 10px 20px; border-left: 5px solid #ccc; margin: 0 0 20px; } 65 | p { font-size: 18px; line-height: 24px; margin: 0 0 30px; } 66 | input { margin: 0; padding: 0; } 67 | 68 | #content {border: 2px solid #eee; margin: 0px; width: 650px; height: 700px; vertical-align: top; background: #eee; overflow:scroll;} 69 | ul, ol { padding-left: 20px; line-height: 18px; } 70 | .biglist { font-size: 110%; font-weight: bold; background: #fff; padding: 10px 40px; margin: 0; } 71 | 72 | .jcollapsible { font-size: 125%; font-weight: bold; } 73 | 74 | #example, #example2, #example3 { width: 120px; float: left; margin-right: 40px; } 75 | #example2, #example2 ul { list-style-type: none; } 76 | 77 | #example3, #example3 ul { list-style: none; } 78 | 79 | #comments { padding: 0; margin: 0; } 80 | 81 | #comments li { padding: 5px 0 0; } 82 | #comments ul { list-style-type: none;} 83 | .comment { background: #fff; padding: 10px; display: block; overflow: hidden; } 84 | .comment-author { float: left; width: 60px; font-size: 10px; text-align: center; margin: 0 10px 10px 0; } 85 | .comment-body, .comment-body p { font-size: 12px; line-height: 18px; margin: 0; } 86 | .comment-body, .comment-body p { font-size: 13px; line-height: 18px; margin: 0; } 87 | .link-title{ color:#339966;} 88 | 89 | #div_title{padding-left: 15px;color: #fff; background-image: URL(back.png); width: 640px;} 90 | table { 91 | margin: 0px; 92 | border-collapse: collapse; 93 | padding: 0px; 94 | width: 100%; 95 | } 96 | 97 | 98 | 99 | /* 100 | search bar 101 | */ 102 | 103 | #tfnewsearch{ 104 | float:right; 105 | padding:25px; 106 | } 107 | .tftextinput3{ 108 | margin-bottom: 3px; 109 | padding: 3px 15px; 110 | font-family: Arial, Helvetica, sans-serif; 111 | font-size:13px; 112 | color:#666; 113 | border:1px solid #0076a3; 114 | border-top-left-radius: 5px 5px; 115 | border-bottom-left-radius: 5px 5px; 116 | border-top-right-radius: 5px 5px; 117 | border-bottom-right-radius: 5px 5px; 118 | } 119 | .tfclear{ 120 | clear:both; 121 | } 122 | .highlight{ background-color:yellow; } -------------------------------------------------------------------------------- /style_simple.css: -------------------------------------------------------------------------------- 1 | .node rect { 2 | fill: #F1595F; 3 | cursor: pointer; 4 | stroke: #000; 5 | stroke-width:.15px; 6 | 7 | } 8 | 9 | .roundedrect { 10 | fill: #F1595F; 11 | 12 | 13 | cursor: pointer; 14 | stroke: #000; 15 | stroke-width:2px; 16 | 17 | } 18 | 19 | .authorrect { 20 | 21 | 22 | } 23 | .rrr{ 24 | 25 | } 26 | .node text { 27 | font: 8px sans-serif; 28 | pointer-events: none; 29 | } 30 | 31 | path.link { 32 | fill: none; 33 | stroke: #d5e6ec; 34 | stroke-width: 1.5px; 35 | } 36 | 37 | .linktopics { 38 | fill: none; 39 | /*stroke: #d5e6ec; */ 40 | stroke:#00479D; 41 | stroke-width: 1.5px; 42 | } 43 | 44 | .linkauthors { 45 | fill: none; 46 | stroke: #9970AB; 47 | stroke-width: 1.5px; 48 | } 49 | body { 50 | 51 | /* font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", Helvetica, sans-serif;*/ 52 | font-family: "HelveticaNeueLight", "HelveticaNeue-Light", "Helvetica Neue Light", "HelveticaNeue", "Helvetica Neue", 'TeXGyreHerosRegular', "Arial", sans-serif; 53 | font-weight: 200; font-stretch: normal; 54 | padding: 10px; 55 | } 56 | 57 | #chart {border: 2px solid #eee; margin: 0px; width: 300px; height: 665px; vertical-align: top; overflow:scroll;} 58 | a { text-decoration: none; } 59 | #chart a{ text-decoration: none; color:#000;} 60 | h2, h3 { margin: 0 0 20px; text-shadow: 2px 2px #fff; } 61 | h2 { font-size: 28px; } 62 | h3 { font-size: 22px; } 63 | pre { background: #fff; width: 460px; padding: 10px 20px; border-left: 5px solid #ccc; margin: 0 0 20px; } 64 | p { font-size: 18px; line-height: 24px; margin: 0 0 30px; } 65 | input { margin: 0; padding: 0; } 66 | 67 | #chart ul { list-style-type: none; padding:5px; margin:0px;} 68 | #chart li.a{ padding:1px; background-image:url(blue_border.png); background-position:2px 5px; background-repeat: no-repeat;padding-left:15px;} 69 | #chart li.b{ padding:1px;background-image:url(author.png); background-position:2px 5px; background-repeat: no-repeat;padding-left:15px;} 70 | #content {border: 2px solid #eee; margin: 0px; width: 600px; height: 650px; vertical-align: top; background: #eee; overflow:scroll;} 71 | ul, ol { padding-left: 20px; line-height: 18px; } 72 | .biglist { font-size: 110%; font-weight: bold; background: #fff; padding: 10px 40px; margin: 0; } 73 | 74 | .jcollapsible { font-size: 125%; font-weight: bold; } 75 | 76 | #example, #example2, #example3 { width: 120px; float: left; margin-right: 40px; } 77 | #example2, #example2 ul { list-style-type: none; } 78 | 79 | #example3, #example3 ul { list-style: none; } 80 | 81 | #comments { padding: 0; margin: 0; } 82 | 83 | #comments li { padding: 5px 0 0; } 84 | #comments ul { list-style-type: none;} 85 | .comment { background: #fff; padding: 10px; display: block; overflow: hidden; } 86 | .comment-author { float: left; width: 60px; font-size: 10px; text-align: center; margin: 0 10px 10px 0; } 87 | .comment-body, .comment-body p { font-size: 12px; line-height: 18px; margin: 0; } 88 | .comment-body, .comment-body p { font-size: 13px; line-height: 18px; margin: 0; } 89 | .link-title{color:#339966;} 90 | 91 | #div_title{padding-left: 15px;color: #fff; background-image: URL(back.png); width: 590px;} 92 | table { 93 | margin: 0px; 94 | border-collapse: collapse; 95 | padding: 0px; 96 | width: 100%; 97 | } 98 | 99 | 100 | 101 | /* 102 | search bar 103 | */ 104 | 105 | #tfnewsearch{ 106 | float:right; 107 | padding:25px; 108 | } 109 | .tftextinput3{ 110 | margin-bottom: 3px; 111 | padding: 3px 15px; 112 | font-family: Arial, Helvetica, sans-serif; 113 | font-size:13px; 114 | color:#666; 115 | border:1px solid #0076a3; 116 | border-top-left-radius: 5px 5px; 117 | border-bottom-left-radius: 5px 5px; 118 | border-top-right-radius: 5px 5px; 119 | border-bottom-right-radius: 5px 5px; 120 | } 121 | .tfclear{ 122 | clear:both; 123 | } 124 | .highlight{ background-color:yellow; } -------------------------------------------------------------------------------- /js/commentview.js.bak: -------------------------------------------------------------------------------- 1 | var first=1; 2 | 3 | function parseNodes(nodes) { // takes a nodes array and turns it into a
    4 | var ol = document.createElement("ul"); 5 | if(first==1) 6 | { 7 | ol.setAttribute('id','comments'); 8 | 9 | first=0; 10 | } 11 | else{ 12 | ol.setAttribute('class','children'); 13 | } 14 | //alert("Creating OL"+nodes.length); 15 | for(var i=0; i 23 | var li = document.createElement("LI"); 24 | li.setAttribute('id',node.commentid); 25 | var sentences=""; 26 | for(var i=0; i"+ 34 | "
    "+ 35 | node.author+""+ 36 | drawSentimentbar(node)+ 37 | "

    "+ 38 | ""+node.title+""+ " " +sentences+ 39 | "

    "+ 40 | ""; 41 | li.innerHTML = text; 42 | // li.className = node.class; 43 | if(node.children) li.appendChild(parseNodes(node.children)); 44 | return li; 45 | } 46 | 47 | function drawSentimentbar(node) { 48 | colorBins=findColor(node); 49 | var totalWidth=60; 50 | var sentimentbar=""; 51 | if(colorBins[4]>0) 52 | sentimentbar+=""; 53 | if(colorBins[3]>0) 54 | sentimentbar+=""; 55 | if(colorBins[2]>0) 56 | sentimentbar+=""; 57 | if(colorBins[1]>0) 58 | sentimentbar+=""; 59 | if(colorBins[0]>0) 60 | sentimentbar+=""; 61 | sentimentbar+="
    "; 62 | return sentimentbar; 63 | } 64 | 65 | function commentMouseOver(commentid){ 66 | //alert("hellow world"); 67 | //alert($("#div"+commentid).attr('style')); 68 | nodeEnter.transition() 69 | .duration(0) 70 | .selectAll("rect") 71 | .style("stroke-width",function(s,i){ 72 | var stroke="0.25px"; 73 | if(commentid==s.commentid){ 74 | stroke="2px"; 75 | //if($("#div"+s.commentid).attr('style').indexOf("rgb")==-1) 76 | $("#div"+s.commentid).css("border", "2px solid"); 77 | } 78 | else if(s.clickstate=="1") {stroke="2px";} 79 | return stroke; 80 | }); 81 | 82 | } 83 | function commentMouseOut(commentid){ 84 | //alert("hellow world"); 85 | if($("#div"+commentid).attr('style').indexOf("rgb")==-1) 86 | $("#div"+commentid).css("border", "0px solid"); 87 | nodeEnter.transition() 88 | .duration(0) 89 | .selectAll("rect") 90 | .style("stroke-width",function(s,i){ 91 | 92 | var stroke="0.25px"; 93 | if(s.clickstate=="1") { 94 | stroke="2px"; 95 | //alert(""+s.author); 96 | $("#div"+s.commentid).css("border", "2px solid"); 97 | } 98 | return stroke; 99 | }); 100 | } 101 | 102 | function commentMouseClick(commentid){ 103 | nodeEnter.transition() 104 | .duration(0) 105 | .selectAll("rect") 106 | .style("stroke-width",function(s,i){ 107 | 108 | var stroke="0.15px"; 109 | if(commentid==s.commentid){ 110 | if(s.clickstate=="1"){ 111 | stroke="0.15px"; 112 | s.clickstate="0"; 113 | /*var sentences=""; 114 | for(var i=0; i"+ 119 | ""+s.title+""+" " +sentences+"

    ");*/ 120 | $("#div"+commentid).css("border", "0px solid"); 121 | } 122 | else{ 123 | stroke="2px"; 124 | s.clickstate="1"; 125 | $("#div"+commentid).css("border", "2px solid"); 126 | /*$("#comment"+s.commentid).html("

    "+ 127 | ""+s.title+""+" " +s.colorText+"

    "); */ 128 | } 129 | } 130 | else if(s.clickstate=="1") {stroke="2px";} 131 | return stroke; 132 | }); 133 | 134 | } 135 | 136 | $.getJSON('data_comments/article09_05_28_1952214.json', function(data) { 137 | //alert(JSON.stringify(data)); 138 | da=parseNodes(data); 139 | document.getElementById("content").appendChild(da); 140 | //document.body.appendChild(da); 141 | }); 142 | $(document).ready(function(){ 143 | $('#comments').collapsible({xoffset:'-20', yoffset:'30', defaulthide: false, imagehide: 'arrow-down.png', imageshow: 'arrow-right.png'}); 144 | //$("#comments").css("backgroundColor", "red"); 145 | /*$(".comment").click(function() { 146 | alert("called"+$(this).commentid); 147 | //$(this).css("border", "2px solid"); 148 | }); */ 149 | }); -------------------------------------------------------------------------------- /js/commentview_baseline.js: -------------------------------------------------------------------------------- 1 | var first=1; 2 | 3 | //obama: article1236551 4 | //filename="article09_05_28_1952214"; 5 | 6 | var QueryString = function () { 7 | // This function is anonymous, is executed immediately and 8 | // the return value is assigned to QueryString! 9 | var query_string = {}; 10 | var query = window.location.search.substring(1); 11 | //alert(query); 12 | var vars = query.split("&"); 13 | /*for (var i=0;i 37 | var ol = document.createElement("ul"); 38 | if(first==1) 39 | { 40 | ol.setAttribute('id','comments'); 41 | //alert(ol.getAttribute("id"); 42 | first=0; 43 | } 44 | else{ 45 | ol.setAttribute('class','children'); 46 | } 47 | //alert("Creating OL"+nodes.length); 48 | for(var i=0; i 56 | var li = document.createElement("LI"); 57 | li.setAttribute('id',node.commentid); 58 | var sentences=""; 59 | for(var i=0; i"+ 87 | "
    "+ 88 | node.author+""+ 89 | 90 | 91 | "

    "+node.title+":"+ " " + 92 | sentences+ 93 | "

    "+ 94 | 95 | "
    "+ 96 | "

    "+node.date+"

    " 97 | +""; 98 | 99 | li.innerHTML = text; 100 | // li.className = node.class; 101 | if(node.children) li.appendChild(parseNodes(node.children)); 102 | return li; 103 | } 104 | 105 | function drawSentimentbar(node) { 106 | colorBins=findColor(node); 107 | var totalWidth=60; 108 | var sentimentbar=""; 109 | if(colorBins[4]>0) 110 | sentimentbar+=""; 111 | if(colorBins[3]>0) 112 | sentimentbar+=""; 113 | if(colorBins[2]>0) 114 | sentimentbar+=""; 115 | if(colorBins[1]>0) 116 | sentimentbar+=""; 117 | if(colorBins[0]>0) 118 | sentimentbar+=""; 119 | sentimentbar+="
    "; 120 | return sentimentbar; 121 | } 122 | 123 | function commentMouseOver(commentid){ 124 | 125 | //alert("hellow world"); 126 | $("#div"+commentid).css("border-top", "2px solid"); 127 | $("#div"+commentid).css("border-bottom", "2px solid"); 128 | var node; 129 | for (i = 0; i < nodes.length; i++) { 130 | if (nodes[i].commentid == commentid) { 131 | node=nodes[i]; 132 | break; 133 | } 134 | } 135 | //alert("CommentMouseOver"+","+node.commentid+"\n"); 136 | logInteraction("CommentMouseOver"+","+node.commentid+"\n"); 137 | /*nodeEnter.transition() 138 | .duration(0) 139 | .selectAll("rect") 140 | .style("stroke-width",function(s,i){ 141 | //alert("yes"); 142 | var stroke="0.15px"; 143 | if(commentid==s.commentid){ 144 | stroke="2px"; 145 | //alert("yes"+$("#div"+s.commentid).attr('style')); 146 | if($("#div"+s.commentid).attr('style').indexOf("rgb")==-1){ 147 | 148 | } 149 | } 150 | else if(s.clickstate=="1") {stroke="2px";} 151 | return stroke; 152 | }); 153 | */ 154 | commentsList = []; 155 | commentsList.push(node.commentid); 156 | //a(); 157 | //alert(commentsList.length); 158 | } 159 | 160 | function commentMouseOut(commentid){ 161 | //alert(commentid); 162 | 163 | $("#div"+commentid).css("border-top", "0px solid"); 164 | $("#div"+commentid).css("border-bottom", "0px solid"); 165 | var nodeMouseOut; 166 | for (i = 0; i < nodes.length; i++) { 167 | if (nodes[i].commentid == commentid) { 168 | nodeMouseOut=nodes[i]; 169 | break; 170 | } 171 | } 172 | //if($("#div"+commentid).attr('style').indexOf("rgb")==-1) 173 | //alert(commentid); 174 | /*nodeEnter.transition() 175 | .duration(0) 176 | .selectAll("rect") 177 | .style("stroke-width",function(s,i){ 178 | 179 | var stroke="0.15px"; 180 | if(s.clickstate=="1") { 181 | stroke="2px"; 182 | $("#div"+s.commentid).css("border", "2px solid"); 183 | } 184 | return stroke; 185 | }); */ 186 | } 187 | 188 | function commentMouseClick(commentid){ 189 | var node; 190 | for (i = 0; i < nodes.length; i++) { 191 | if (nodes[i].commentid == commentid) { 192 | node=nodes[i]; 193 | if(nodes[i].clickcomment == "1") 194 | nodes[i].clickcomment == "0"; 195 | else nodes[i].clickcomment == "1"; 196 | if (nodes[i].clickcomment == "1"){ 197 | 198 | $("#div"+commentid).css("border-bottom", "2px solid"); 199 | $("#comment" + node.commentid).html("

    " + 200 | "" + node.title + ":" + " " + 201 | node.colorText); 202 | nodes[i].clickcomment = "0"; 203 | 204 | } 205 | else{ 206 | 207 | $("#comment" + node.commentid).html("

    " + 208 | "" + node.title + ":" + " " + 209 | node.sentences 210 | ); 211 | $("#div"+commentid).css("border", "0px solid"); 212 | nodes[i].clickcomment = "1"; 213 | } 214 | break; 215 | } 216 | } 217 | /* nodeEnter.transition() 218 | .duration(0) 219 | .selectAll("rect") 220 | .style("stroke-width",function(s,i){ 221 | var stroke="0.15px"; 222 | if(commentid==s.commentid){ 223 | if(s.clickcomment=="0"){ 224 | stroke="0.15px"; 225 | $("#div"+commentid).css("border", "0px solid"); 226 | 227 | $("#comment" + node.commentid).html("

    " + 228 | "" + node.title + "" + " " + 229 | node.sentences + 230 | "

    "); 231 | $("#div"+commentid).css("border", "0px solid"); 232 | } 233 | else{ 234 | //stroke="2px"; 235 | //s.clickstate="1"; 236 | $("#div"+commentid).css("border-top", "2px solid"); 237 | $("#div"+commentid).css("border-bottom", "2px solid"); 238 | $("#comment" + node.commentid).html("

    " + 239 | "" + node.title + "" + " " + 240 | node.colorText + 241 | "

    "); 242 | } 243 | } 244 | //else if(s.clickstate=="1") {stroke="2px";} 245 | 246 | return stroke; 247 | }); */ 248 | } 249 | 250 | 251 | $.getJSON(jsonFileMainView, function(data) { 252 | data="["+JSON.stringify(data)+"]"; //add damm bracket 253 | //alert(data); 254 | jsonObj=JSON.parse(data); // get back to json object again 255 | da=parseNodes(jsonObj); 256 | document.getElementById("content").appendChild(da); 257 | 258 | /* var theDiv = document.getElementById("div_title"); 259 | var cont = document.createTextNode(jsonObj[0].title); 260 | 261 | theDiv.appendChild(cont);*/ 262 | //document.body.appendChild(da); 263 | }); 264 | 265 | $(window).load(function(){ 266 | //alert($( "#comments" ).html()); 267 | //alert($( "#example" ).html()); 268 | $('#comments').collapsible({xoffset:'-20', yoffset:'30', defaulthide: false, imagehide: 'arrow-down.png', imageshow: 'arrow-right.png'}); 269 | 270 | }); -------------------------------------------------------------------------------- /js/commentview_simple.js: -------------------------------------------------------------------------------- 1 | var first=1; 2 | 3 | //obama: article1236551 4 | //filename="article09_05_28_1952214"; 5 | 6 | var QueryString = function () { 7 | // This function is anonymous, is executed immediately and 8 | // the return value is assigned to QueryString! 9 | var query_string = {}; 10 | var query = window.location.search.substring(1); 11 | //alert(query); 12 | var vars = query.split("&"); 13 | /*for (var i=0;i 37 | var ol = document.createElement("ul"); 38 | if(first==1) 39 | { 40 | ol.setAttribute('id','comments'); 41 | //alert(ol.getAttribute("id"); 42 | first=0; 43 | } 44 | else{ 45 | ol.setAttribute('class','children'); 46 | } 47 | //alert("Creating OL"+nodes.length); 48 | for(var i=0; i 56 | var li = document.createElement("LI"); 57 | li.setAttribute('id',node.commentid); 58 | var sentences=""; 59 | for(var i=0; i"+ 87 | "
    "+ 88 | node.author+""+ 89 | drawSentimentbar(node)+ 90 | "

    "+node.title+":"+ " " + 91 | sentences+ 92 | "

    "+ 93 | 94 | "
    "+ 95 | "

    "+node.date+"

    " 96 | +""; 97 | 98 | li.innerHTML = text; 99 | // li.className = node.class; 100 | if(node.children) li.appendChild(parseNodes(node.children)); 101 | return li; 102 | } 103 | 104 | function drawSentimentbar(node) { 105 | colorBins=findColor(node); 106 | var totalWidth=60; 107 | var sentimentbar=""; 108 | if(colorBins[0]>0) 109 | sentimentbar+=""; 110 | if(colorBins[1]>0) 111 | sentimentbar+=""; 112 | if(colorBins[2]>0) 113 | sentimentbar+=""; 114 | if(colorBins[3]>0) 115 | sentimentbar+=""; 116 | if(colorBins[4]>0) 117 | sentimentbar+=""; 118 | sentimentbar+="
    "; 119 | return sentimentbar; 120 | } 121 | 122 | function commentMouseOver(commentid){ 123 | 124 | //alert("hellow world"); 125 | $("#div"+commentid).css("border-top", "2px solid"); 126 | $("#div"+commentid).css("border-bottom", "2px solid"); 127 | var node; 128 | for (i = 0; i < nodes.length; i++) { 129 | if (nodes[i].commentid == commentid) { 130 | node=nodes[i]; 131 | break; 132 | } 133 | } 134 | //alert("CommentMouseOver"+","+node.commentid+"\n"); 135 | logInteraction("CommentMouseOver"+","+node.commentid+"\n"); 136 | /*nodeEnter.transition() 137 | .duration(0) 138 | .selectAll("rect") 139 | .style("stroke-width",function(s,i){ 140 | //alert("yes"); 141 | var stroke="0.15px"; 142 | if(commentid==s.commentid){ 143 | stroke="2px"; 144 | //alert("yes"+$("#div"+s.commentid).attr('style')); 145 | if($("#div"+s.commentid).attr('style').indexOf("rgb")==-1){ 146 | 147 | } 148 | } 149 | else if(s.clickstate=="1") {stroke="2px";} 150 | return stroke; 151 | }); 152 | */ 153 | commentsList = []; 154 | commentsList.push(node.commentid); 155 | //a(); 156 | //alert(commentsList.length); 157 | } 158 | 159 | function commentMouseOut(commentid){ 160 | //alert(commentid); 161 | logInteraction("CommentMouseOut"+","+commentid+"\n"); 162 | $("#div"+commentid).css("border-top", "0px solid"); 163 | $("#div"+commentid).css("border-bottom", "0px solid"); 164 | var nodeMouseOut; 165 | for (i = 0; i < nodes.length; i++) { 166 | if (nodes[i].commentid == commentid) { 167 | nodeMouseOut=nodes[i]; 168 | break; 169 | } 170 | } 171 | //if($("#div"+commentid).attr('style').indexOf("rgb")==-1) 172 | //alert(commentid); 173 | /*nodeEnter.transition() 174 | .duration(0) 175 | .selectAll("rect") 176 | .style("stroke-width",function(s,i){ 177 | 178 | var stroke="0.15px"; 179 | if(s.clickstate=="1") { 180 | stroke="2px"; 181 | $("#div"+s.commentid).css("border", "2px solid"); 182 | } 183 | return stroke; 184 | }); */ 185 | } 186 | 187 | function commentMouseClick(commentid){ 188 | var node; 189 | for (i = 0; i < nodes.length; i++) { 190 | if (nodes[i].commentid == commentid) { 191 | node=nodes[i]; 192 | if(nodes[i].clickcomment == "1") 193 | nodes[i].clickcomment == "0"; 194 | else nodes[i].clickcomment == "1"; 195 | if (nodes[i].clickcomment == "1"){ 196 | 197 | $("#div"+commentid).css("border-bottom", "2px solid"); 198 | $("#comment" + node.commentid).html("

    " + 199 | "" + node.title + ":" + " " + 200 | node.colorText); 201 | nodes[i].clickcomment = "0"; 202 | 203 | } 204 | else{ 205 | $("#comment" + node.commentid).html("

    " + 206 | "" + node.title + ":" + " " + 207 | node.colorText); 208 | /* $("#comment" + node.commentid).html("

    " + 209 | "" + node.title + ":" + " " + 210 | node.sentences 211 | );*/ 212 | //$("#div"+commentid).css("border", "0px solid"); 213 | nodes[i].clickcomment = "1"; 214 | } 215 | break; 216 | } 217 | } 218 | /* nodeEnter.transition() 219 | .duration(0) 220 | .selectAll("rect") 221 | .style("stroke-width",function(s,i){ 222 | var stroke="0.15px"; 223 | if(commentid==s.commentid){ 224 | if(s.clickcomment=="0"){ 225 | stroke="0.15px"; 226 | $("#div"+commentid).css("border", "0px solid"); 227 | 228 | $("#comment" + node.commentid).html("

    " + 229 | "" + node.title + "" + " " + 230 | node.sentences + 231 | "

    "); 232 | $("#div"+commentid).css("border", "0px solid"); 233 | } 234 | else{ 235 | //stroke="2px"; 236 | //s.clickstate="1"; 237 | $("#div"+commentid).css("border-top", "2px solid"); 238 | $("#div"+commentid).css("border-bottom", "2px solid"); 239 | $("#comment" + node.commentid).html("

    " + 240 | "" + node.title + "" + " " + 241 | node.colorText + 242 | "

    "); 243 | } 244 | } 245 | //else if(s.clickstate=="1") {stroke="2px";} 246 | 247 | return stroke; 248 | }); */ 249 | } 250 | 251 | 252 | $.getJSON(jsonFileMainView, function(data) { 253 | data="["+JSON.stringify(data)+"]"; //add damm bracket 254 | //alert(data); 255 | jsonObj=JSON.parse(data); // get back to json object again 256 | da=parseNodes(jsonObj); 257 | document.getElementById("content").appendChild(da); 258 | 259 | /* var theDiv = document.getElementById("div_title"); 260 | var cont = document.createTextNode(jsonObj[0].title); 261 | 262 | theDiv.appendChild(cont);*/ 263 | //document.body.appendChild(da); 264 | }); 265 | 266 | $(window).load(function(){ 267 | //alert($( "#comments" ).html()); 268 | //alert($( "#example" ).html()); 269 | $('#comments').collapsible({xoffset:'-20', yoffset:'30', defaulthide: false, imagehide: 'arrow-down.png', imageshow: 'arrow-right.png'}); 270 | 271 | }); -------------------------------------------------------------------------------- /js/commentview.js: -------------------------------------------------------------------------------- 1 | var first=1; 2 | //obama: article1236551 3 | //filename="article09_05_28_1952214"; 4 | 5 | var QueryString = function () { 6 | // This function is anonymous, is executed immediately and 7 | // the return value is assigned to QueryString! 8 | var query_string = {}; 9 | var query = window.location.search.substring(1); 10 | //alert(query); 11 | var vars = query.split("&"); 12 | /*for (var i=0;i 38 | var ol = document.createElement("ul"); 39 | if(first==1) 40 | { 41 | ol.setAttribute('id','comments'); 42 | first=0; 43 | } 44 | else{ 45 | ol.setAttribute('class','children'); 46 | } 47 | //alert("Creating OL"+nodes.length); 48 | for(var i=0; i 56 | var li = document.createElement("LI"); 57 | li.setAttribute('id',node.commentid); 58 | var sentences=""; 59 | for(var i=0; i"+ 81 | "
    "+ 82 | node.author+""+ 83 | drawSentimentbar(node)+ 84 | "

    "+ 85 | ""+node.title+":"+ " " +sentences+ 86 | "

    "+ 87 | "
    "+ 88 | "

    "+node.date+"

    "+ 89 | ""; 90 | 91 | li.innerHTML = text; 92 | // li.className = node.class; 93 | if(node.children) li.appendChild(parseNodes(node.children)); 94 | return li; 95 | } 96 | 97 | function drawSentimentbar(node) { 98 | colorBins=findColor(node); 99 | var totalWidth=60; 100 | var sentimentbar=""; 101 | if(colorBins[0]>0) 102 | sentimentbar+=""; 103 | if(colorBins[1]>0) 104 | sentimentbar+=""; 105 | if(colorBins[2]>0) 106 | sentimentbar+=""; 107 | if(colorBins[3]>0) 108 | sentimentbar+=""; 109 | if(colorBins[4]>0) 110 | sentimentbar+=""; 111 | sentimentbar+="
    "; 112 | return sentimentbar; 113 | } 114 | 115 | function drawSentimentLegend() { 116 | var totalWidth=100; 117 | var polaritywidth=(0.2)*totalWidth; 118 | var sentimentbar=""; 119 | sentimentbar+=""; 120 | sentimentbar+=""; 121 | sentimentbar+=""; 122 | sentimentbar+=""; 123 | sentimentbar+=""; 124 | sentimentbar+=""; 125 | sentimentbar+=""; 126 | sentimentbar+="
    Highly Negative Highly Positive
    "; 127 | 128 | return sentimentbar; 129 | } 130 | 131 | function commentMouseOver(commentid){ 132 | //alert("hellow world"); 133 | $("#div"+commentid).css("border-top", "2px solid"); 134 | $("#div"+commentid).css("border-bottom", "2px solid"); 135 | var node; 136 | for (i = 0; i < nodes.length; i++) { 137 | if (nodes[i].commentid == commentid) { 138 | node=nodes[i]; 139 | break; 140 | } 141 | } 142 | logInteraction("CommentMouseOver"+","+node.commentid+"\n"); 143 | drawLineMouseOver(node); 144 | /*nodeEnter.transition() 145 | .duration(0) 146 | .selectAll("rect") 147 | .style("stroke-width",function(s,i){ 148 | //alert("yes"); 149 | var stroke="0.15px"; 150 | if(commentid==s.commentid){ 151 | stroke="2px"; 152 | //alert("yes"+$("#div"+s.commentid).attr('style')); 153 | if($("#div"+s.commentid).attr('style').indexOf("rgb")==-1){ 154 | 155 | } 156 | } 157 | else if(s.clickstate=="1") {stroke="2px";} 158 | return stroke; 159 | }); 160 | */ 161 | commentsList = []; 162 | commentsList.push(node.commentid); 163 | //a(); 164 | //alert(commentsList.length); 165 | highlightAuthorsbytopic("dummy"); 166 | highlightAuthorsLinks(); 167 | highlightTopicsbyAuthor(node.author); 168 | highlightTopicLinks(); 169 | 170 | } 171 | 172 | function commentMouseOut(commentid){ 173 | //alert(commentid); 174 | logInteraction("CommentMouseOut"+","+commentid+"\n"); 175 | 176 | vis.selectAll("line").remove(); 177 | $("#div"+commentid).css("border-top", "0px solid"); 178 | $("#div"+commentid).css("border-bottom", "0px solid"); 179 | var nodeMouseOut; 180 | for (i = 0; i < nodes.length; i++) { 181 | if (nodes[i].commentid == commentid) { 182 | nodeMouseOut=nodes[i]; 183 | break; 184 | } 185 | } 186 | //undoHighlightTopicLinks(); 187 | //undoHighlightAuthorsLinks(); 188 | undoHighlightCommentsbyAuthor(nodeMouseOut.author); 189 | //if($("#div"+commentid).attr('style').indexOf("rgb")==-1) 190 | 191 | 192 | 193 | 194 | /*nodeEnter.transition() 195 | .duration(0) 196 | .selectAll("rect") 197 | .style("stroke-width",function(s,i){ 198 | 199 | var stroke="0.15px"; 200 | if(s.clickstate=="1") { 201 | stroke="2px"; 202 | $("#div"+s.commentid).css("border", "2px solid"); 203 | } 204 | return stroke; 205 | }); */ 206 | } 207 | 208 | function commentMouseClick(commentid){ 209 | 210 | var node; 211 | for (i = 0; i < nodes.length; i++) { 212 | if (nodes[i].commentid == commentid) { 213 | node=nodes[i]; 214 | if (nodes[i].clickcomment == "1") 215 | nodes[i].clickcomment = "0"; 216 | else 217 | nodes[i].clickcomment = "1"; 218 | break; 219 | } 220 | } 221 | nodeEnter.transition() 222 | .duration(0) 223 | .selectAll("rect") 224 | .style("stroke-width",function(s,i){ 225 | var stroke="0.15px"; 226 | if(commentid==s.commentid){ 227 | if(s.clickcomment=="0"){ 228 | stroke="0.15px"; 229 | //$("#div"+commentid).css("border", "0px solid"); 230 | 231 | /*$("#comment" + node.commentid).html("

    " + 232 | "" + node.title + ":" + " " + 233 | node.sentences + 234 | "

    ");*/ 235 | //$("#div"+commentid).css("border", "0px solid"); 236 | } 237 | else{ 238 | //stroke="2px"; 239 | //s.clickstate="1"; 240 | $("#div"+commentid).css("border-top", "2px solid"); 241 | $("#div"+commentid).css("border-bottom", "2px solid"); 242 | $("#comment" + node.commentid).html("

    " + 243 | "" + node.title + ":" + " " + 244 | node.colorText + 245 | "

    "); 246 | logInteraction("CommentMouseClick"+","+node.commentid+"\n"); 247 | } 248 | } 249 | //else if(s.clickstate=="1") {stroke="2px";} 250 | 251 | return stroke; 252 | }); 253 | } 254 | 255 | 256 | 257 | 258 | $.getJSON(jsonFileMainView, function(data) { 259 | data="["+JSON.stringify(data)+"]"; //add damm bracket 260 | //alert(data); 261 | jsonObj=JSON.parse(data); // get back to json object again 262 | da=parseNodes(jsonObj); 263 | document.getElementById("content").appendChild(da); 264 | 265 | var legendDiv = document.getElementById("sentiment_legend"); 266 | var legendHTML = drawSentimentLegend(); 267 | //alert(legendHTML); 268 | legendDiv.innerHTML=drawSentimentLegend(); 269 | }); 270 | 271 | 272 | $(window).load(function(){ 273 | $('#comments').collapsible({xoffset:'-20', yoffset:'30', defaulthide: false, imagehide: 'arrow-down.png', imageshow: 'arrow-right.png'}); 274 | }); -------------------------------------------------------------------------------- /js/conversationTemple.js: -------------------------------------------------------------------------------- 1 | { 2 | "name": "article09_05_27_1446206", 3 | "author":"kdawson"; 4 | "date":"1243437600000", 5 | "title": "Pulsar Signals Could Provide Galactic GPS", 6 | 7 | "children": [ 8 | { 9 | "name": "analytics", 10 | "children": [ 11 | { 12 | "name": "cluster", 13 | "children": [ 14 | {"name": "AgglomerativeCluster", "size": 3938}, 15 | {"name": "CommunityStructure", "size": 3812}, 16 | {"name": "HierarchicalCluster", "size": 6714}, 17 | {"name": "MergeEdge", "size": 743} 18 | ] 19 | }, 20 | { 21 | "name": "graph", 22 | "children": [ 23 | {"name": "BetweennessCentrality", "size": 3534}, 24 | {"name": "LinkDistance", "size": 5731}, 25 | {"name": "MaxFlowMinCut", "size": 7840}, 26 | {"name": "ShortestPaths", "size": 5914}, 27 | {"name": "SpanningTree", "size": 3416} 28 | ] 29 | }, 30 | { 31 | "name": "optimization", 32 | "children": [ 33 | {"name": "AspectRatioBanker", "size": 7074} 34 | ] 35 | } 36 | ] 37 | }, 38 | { 39 | "name": "animate", 40 | "children": [ 41 | {"name": "Easing", "size": 17010}, 42 | {"name": "FunctionSequence", "size": 5842}, 43 | { 44 | "name": "interpolate", 45 | "children": [ 46 | {"name": "ArrayInterpolator", "size": 1983}, 47 | {"name": "ColorInterpolator", "size": 2047}, 48 | {"name": "DateInterpolator", "size": 1375}, 49 | {"name": "Interpolator", "size": 8746}, 50 | {"name": "MatrixInterpolator", "size": 2202}, 51 | {"name": "NumberInterpolator", "size": 1382}, 52 | {"name": "ObjectInterpolator", "size": 1629}, 53 | {"name": "PointInterpolator", "size": 1675}, 54 | {"name": "RectangleInterpolator", "size": 2042} 55 | ] 56 | }, 57 | {"name": "ISchedulable", "size": 1041}, 58 | {"name": "Parallel", "size": 5176}, 59 | {"name": "Pause", "size": 449}, 60 | {"name": "Scheduler", "size": 5593}, 61 | {"name": "Sequence", "size": 5534}, 62 | {"name": "Transition", "size": 9201}, 63 | {"name": "Transitioner", "size": 19975}, 64 | {"name": "TransitionEvent", "size": 1116}, 65 | {"name": "Tween", "size": 6006} 66 | ] 67 | }, 68 | { 69 | "name": "data", 70 | "children": [ 71 | { 72 | "name": "converters", 73 | "children": [ 74 | {"name": "Converters", "size": 721}, 75 | {"name": "DelimitedTextConverter", "size": 4294}, 76 | {"name": "GraphMLConverter", "size": 9800}, 77 | {"name": "IDataConverter", "size": 1314}, 78 | {"name": "JSONConverter", "size": 2220} 79 | ] 80 | }, 81 | {"name": "DataField", "size": 1759}, 82 | {"name": "DataSchema", "size": 2165}, 83 | {"name": "DataSet", "size": 586}, 84 | {"name": "DataSource", "size": 3331}, 85 | {"name": "DataTable", "size": 772}, 86 | {"name": "DataUtil", "size": 3322} 87 | ] 88 | }, 89 | { 90 | "name": "display", 91 | "children": [ 92 | {"name": "DirtySprite", "size": 8833}, 93 | {"name": "LineSprite", "size": 1732}, 94 | {"name": "RectSprite", "size": 3623}, 95 | {"name": "TextSprite", "size": 10066} 96 | ] 97 | }, 98 | { 99 | "name": "flex", 100 | "children": [ 101 | {"name": "FlareVis", "size": 4116} 102 | ] 103 | }, 104 | { 105 | "name": "physics", 106 | "children": [ 107 | {"name": "DragForce", "size": 1082}, 108 | {"name": "GravityForce", "size": 1336}, 109 | {"name": "IForce", "size": 319}, 110 | {"name": "NBodyForce", "size": 10498}, 111 | {"name": "Particle", "size": 2822}, 112 | {"name": "Simulation", "size": 9983}, 113 | {"name": "Spring", "size": 2213}, 114 | {"name": "SpringForce", "size": 1681} 115 | ] 116 | }, 117 | { 118 | "name": "query", 119 | "children": [ 120 | {"name": "AggregateExpression", "size": 1616}, 121 | {"name": "And", "size": 1027}, 122 | {"name": "Arithmetic", "size": 3891}, 123 | {"name": "Average", "size": 891}, 124 | {"name": "BinaryExpression", "size": 2893}, 125 | {"name": "Comparison", "size": 5103}, 126 | {"name": "CompositeExpression", "size": 3677}, 127 | {"name": "Count", "size": 781}, 128 | {"name": "DateUtil", "size": 4141}, 129 | {"name": "Distinct", "size": 933}, 130 | {"name": "Expression", "size": 5130}, 131 | {"name": "ExpressionIterator", "size": 3617}, 132 | {"name": "Fn", "size": 3240}, 133 | {"name": "If", "size": 2732}, 134 | {"name": "IsA", "size": 2039}, 135 | {"name": "Literal", "size": 1214}, 136 | {"name": "Match", "size": 3748}, 137 | {"name": "Maximum", "size": 843}, 138 | { 139 | "name": "methods", 140 | "children": [ 141 | {"name": "add", "size": 593}, 142 | {"name": "and", "size": 330}, 143 | {"name": "average", "size": 287}, 144 | {"name": "count", "size": 277}, 145 | {"name": "distinct", "size": 292}, 146 | {"name": "div", "size": 595}, 147 | {"name": "eq", "size": 594}, 148 | {"name": "fn", "size": 460}, 149 | {"name": "gt", "size": 603}, 150 | {"name": "gte", "size": 625}, 151 | {"name": "iff", "size": 748}, 152 | {"name": "isa", "size": 461}, 153 | {"name": "lt", "size": 597}, 154 | {"name": "lte", "size": 619}, 155 | {"name": "max", "size": 283}, 156 | {"name": "min", "size": 283}, 157 | {"name": "mod", "size": 591}, 158 | {"name": "mul", "size": 603}, 159 | {"name": "neq", "size": 599}, 160 | {"name": "not", "size": 386}, 161 | {"name": "or", "size": 323}, 162 | {"name": "orderby", "size": 307}, 163 | {"name": "range", "size": 772}, 164 | {"name": "select", "size": 296}, 165 | {"name": "stddev", "size": 363}, 166 | {"name": "sub", "size": 600}, 167 | {"name": "sum", "size": 280}, 168 | {"name": "update", "size": 307}, 169 | {"name": "variance", "size": 335}, 170 | {"name": "where", "size": 299}, 171 | {"name": "xor", "size": 354}, 172 | {"name": "_", "size": 264} 173 | ] 174 | }, 175 | {"name": "Minimum", "size": 843}, 176 | {"name": "Not", "size": 1554}, 177 | {"name": "Or", "size": 970}, 178 | {"name": "Query", "size": 13896}, 179 | {"name": "Range", "size": 1594}, 180 | {"name": "StringUtil", "size": 4130}, 181 | {"name": "Sum", "size": 791}, 182 | {"name": "Variable", "size": 1124}, 183 | {"name": "Variance", "size": 1876}, 184 | {"name": "Xor", "size": 1101} 185 | ] 186 | }, 187 | { 188 | "name": "scale", 189 | "children": [ 190 | {"name": "IScaleMap", "size": 2105}, 191 | {"name": "LinearScale", "size": 1316}, 192 | {"name": "LogScale", "size": 3151}, 193 | {"name": "OrdinalScale", "size": 3770}, 194 | {"name": "QuantileScale", "size": 2435}, 195 | {"name": "QuantitativeScale", "size": 4839}, 196 | {"name": "RootScale", "size": 1756}, 197 | {"name": "Scale", "size": 4268}, 198 | {"name": "ScaleType", "size": 1821}, 199 | {"name": "TimeScale", "size": 5833} 200 | ] 201 | }, 202 | { 203 | "name": "util", 204 | "children": [ 205 | {"name": "Arrays", "size": 8258}, 206 | {"name": "Colors", "size": 10001}, 207 | {"name": "Dates", "size": 8217}, 208 | {"name": "Displays", "size": 12555}, 209 | {"name": "Filter", "size": 2324}, 210 | {"name": "Geometry", "size": 10993}, 211 | { 212 | "name": "heap", 213 | "children": [ 214 | {"name": "FibonacciHeap", "size": 9354}, 215 | {"name": "HeapNode", "size": 1233} 216 | ] 217 | }, 218 | {"name": "IEvaluable", "size": 335}, 219 | {"name": "IPredicate", "size": 383}, 220 | {"name": "IValueProxy", "size": 874}, 221 | { 222 | "name": "math", 223 | "children": [ 224 | {"name": "DenseMatrix", "size": 3165}, 225 | {"name": "IMatrix", "size": 2815}, 226 | {"name": "SparseMatrix", "size": 3366} 227 | ] 228 | }, 229 | {"name": "Maths", "size": 17705}, 230 | {"name": "Orientation", "size": 1486}, 231 | { 232 | "name": "palette", 233 | "children": [ 234 | {"name": "ColorPalette", "size": 6367}, 235 | {"name": "Palette", "size": 1229}, 236 | {"name": "ShapePalette", "size": 2059}, 237 | {"name": "SizePalette", "size": 2291} 238 | ] 239 | }, 240 | {"name": "Property", "size": 5559}, 241 | {"name": "Shapes", "size": 19118}, 242 | {"name": "Sort", "size": 6887}, 243 | {"name": "Stats", "size": 6557}, 244 | {"name": "Strings", "size": 22026} 245 | ] 246 | }, 247 | { 248 | "name": "vis", 249 | "children": [ 250 | { 251 | "name": "axis", 252 | "children": [ 253 | {"name": "Axes", "size": 1302}, 254 | {"name": "Axis", "size": 24593}, 255 | {"name": "AxisGridLine", "size": 652}, 256 | {"name": "AxisLabel", "size": 636}, 257 | {"name": "CartesianAxes", "size": 6703} 258 | ] 259 | }, 260 | { 261 | "name": "controls", 262 | "children": [ 263 | {"name": "AnchorControl", "size": 2138}, 264 | {"name": "ClickControl", "size": 3824}, 265 | {"name": "Control", "size": 1353}, 266 | {"name": "ControlList", "size": 4665}, 267 | {"name": "DragControl", "size": 2649}, 268 | {"name": "ExpandControl", "size": 2832}, 269 | {"name": "HoverControl", "size": 4896}, 270 | {"name": "IControl", "size": 763}, 271 | {"name": "PanZoomControl", "size": 5222}, 272 | {"name": "SelectionControl", "size": 7862}, 273 | {"name": "TooltipControl", "size": 8435} 274 | ] 275 | }, 276 | { 277 | "name": "data", 278 | "children": [ 279 | {"name": "Data", "size": 20544}, 280 | {"name": "DataList", "size": 19788}, 281 | {"name": "DataSprite", "size": 10349}, 282 | {"name": "EdgeSprite", "size": 3301}, 283 | {"name": "NodeSprite", "size": 19382}, 284 | { 285 | "name": "render", 286 | "children": [ 287 | {"name": "ArrowType", "size": 698}, 288 | {"name": "EdgeRenderer", "size": 5569}, 289 | {"name": "IRenderer", "size": 353}, 290 | {"name": "ShapeRenderer", "size": 2247} 291 | ] 292 | }, 293 | {"name": "ScaleBinding", "size": 11275}, 294 | {"name": "Tree", "size": 7147}, 295 | {"name": "TreeBuilder", "size": 9930} 296 | ] 297 | }, 298 | { 299 | "name": "events", 300 | "children": [ 301 | {"name": "DataEvent", "size": 2313}, 302 | {"name": "SelectionEvent", "size": 1880}, 303 | {"name": "TooltipEvent", "size": 1701}, 304 | {"name": "VisualizationEvent", "size": 1117} 305 | ] 306 | }, 307 | { 308 | "name": "legend", 309 | "children": [ 310 | {"name": "Legend", "size": 20859}, 311 | {"name": "LegendItem", "size": 4614}, 312 | {"name": "LegendRange", "size": 10530} 313 | ] 314 | }, 315 | { 316 | "name": "operator", 317 | "children": [ 318 | { 319 | "name": "distortion", 320 | "children": [ 321 | {"name": "BifocalDistortion", "size": 4461}, 322 | {"name": "Distortion", "size": 6314}, 323 | {"name": "FisheyeDistortion", "size": 3444} 324 | ] 325 | }, 326 | { 327 | "name": "encoder", 328 | "children": [ 329 | {"name": "ColorEncoder", "size": 3179}, 330 | {"name": "Encoder", "size": 4060}, 331 | {"name": "PropertyEncoder", "size": 4138}, 332 | {"name": "ShapeEncoder", "size": 1690}, 333 | {"name": "SizeEncoder", "size": 1830} 334 | ] 335 | }, 336 | { 337 | "name": "filter", 338 | "children": [ 339 | {"name": "FisheyeTreeFilter", "size": 5219}, 340 | {"name": "GraphDistanceFilter", "size": 3165}, 341 | {"name": "VisibilityFilter", "size": 3509} 342 | ] 343 | }, 344 | {"name": "IOperator", "size": 1286}, 345 | { 346 | "name": "label", 347 | "children": [ 348 | {"name": "Labeler", "size": 9956}, 349 | {"name": "RadialLabeler", "size": 3899}, 350 | {"name": "StackedAreaLabeler", "size": 3202} 351 | ] 352 | }, 353 | { 354 | "name": "layout", 355 | "children": [ 356 | {"name": "AxisLayout", "size": 6725}, 357 | {"name": "BundledEdgeRouter", "size": 3727}, 358 | {"name": "CircleLayout", "size": 9317}, 359 | {"name": "CirclePackingLayout", "size": 12003}, 360 | {"name": "DendrogramLayout", "size": 4853}, 361 | {"name": "ForceDirectedLayout", "size": 8411}, 362 | {"name": "IcicleTreeLayout", "size": 4864}, 363 | {"name": "IndentedTreeLayout", "size": 3174}, 364 | {"name": "Layout", "size": 7881}, 365 | {"name": "NodeLinkTreeLayout", "size": 12870}, 366 | {"name": "PieLayout", "size": 2728}, 367 | {"name": "RadialTreeLayout", "size": 12348}, 368 | {"name": "RandomLayout", "size": 870}, 369 | {"name": "StackedAreaLayout", "size": 9121}, 370 | {"name": "TreeMapLayout", "size": 9191} 371 | ] 372 | }, 373 | {"name": "Operator", "size": 2490}, 374 | {"name": "OperatorList", "size": 5248}, 375 | {"name": "OperatorSequence", "size": 4190}, 376 | {"name": "OperatorSwitch", "size": 2581}, 377 | {"name": "SortOperator", "size": 2023} 378 | ] 379 | }, 380 | {"name": "Visualization", "size": 16540} 381 | ] 382 | } 383 | ] 384 | } -------------------------------------------------------------------------------- /form/view.css: -------------------------------------------------------------------------------- 1 | body 2 | { 3 | background:#CDDCEC; 4 | font-family:"Lucida Grande", Tahoma, Arial, Verdana, sans-serif; 5 | font-size:small; 6 | margin:8px 0 16px; 7 | text-align:center; 8 | } 9 | 10 | #form_container 11 | { 12 | background:#fff; 13 | 14 | margin:0 auto; 15 | text-align:left; 16 | width:640px; 17 | } 18 | 19 | #top 20 | { 21 | display:block; 22 | height:10px; 23 | margin:10px auto 0; 24 | width:650px; 25 | } 26 | 27 | #footer 28 | { 29 | width:640px; 30 | clear:both; 31 | color:#999999; 32 | text-align:center; 33 | width:640px; 34 | padding-bottom: 15px; 35 | font-size: 85%; 36 | } 37 | 38 | #footer a{ 39 | color:#999999; 40 | text-decoration: none; 41 | border-bottom: 1px dotted #999999; 42 | } 43 | 44 | #bottom 45 | { 46 | display:block; 47 | height:10px; 48 | margin:0 auto; 49 | width:650px; 50 | } 51 | 52 | form.appnitro 53 | { 54 | margin:20px 20px 0; 55 | padding:0 0 20px; 56 | } 57 | 58 | /**** Logo Section *****/ 59 | h1 60 | { 61 | background-color:#4B75B3; 62 | margin:0; 63 | min-height:0; 64 | padding:0; 65 | text-decoration:none; 66 | text-indent:-8000px; 67 | 68 | } 69 | 70 | h1 a 71 | { 72 | 73 | display:block; 74 | height:100%; 75 | min-height:40px; 76 | overflow:hidden; 77 | } 78 | 79 | 80 | img 81 | { 82 | behavior:url(css/iepngfix.htc); 83 | border:none; 84 | } 85 | 86 | 87 | /**** Form Section ****/ 88 | .appnitro 89 | { 90 | font-family:Lucida Grande, Tahoma, Arial, Verdana, sans-serif; 91 | font-size:small; 92 | } 93 | 94 | .appnitro li 95 | { 96 | width:61%; 97 | } 98 | 99 | form ul 100 | { 101 | font-size:100%; 102 | list-style-type:none; 103 | margin:0; 104 | padding:0; 105 | width:100%; 106 | } 107 | 108 | form li 109 | { 110 | display:block; 111 | margin:0; 112 | padding:4px 5px 2px 9px; 113 | position:relative; 114 | } 115 | 116 | form li:after 117 | { 118 | clear:both; 119 | content:"."; 120 | display:block; 121 | height:0; 122 | visibility:hidden; 123 | } 124 | 125 | .buttons:after 126 | { 127 | clear:both; 128 | content:"."; 129 | display:block; 130 | height:0; 131 | visibility:hidden; 132 | } 133 | 134 | .buttons 135 | { 136 | clear:both; 137 | display:block; 138 | margin-top:10px; 139 | } 140 | 141 | * html form li 142 | { 143 | height:1%; 144 | } 145 | 146 | * html .buttons 147 | { 148 | height:1%; 149 | } 150 | 151 | * html form li div 152 | { 153 | display:inline-block; 154 | } 155 | 156 | form li div 157 | { 158 | color:#444; 159 | margin:0 4px 0 0; 160 | padding:0 0 8px; 161 | } 162 | 163 | form li span 164 | { 165 | color:#444; 166 | float:left; 167 | margin:0 4px 0 0; 168 | padding:0 0 8px; 169 | } 170 | 171 | form li div.left 172 | { 173 | display:inline; 174 | float:left; 175 | width:48%; 176 | } 177 | 178 | form li div.right 179 | { 180 | display:inline; 181 | float:right; 182 | width:48%; 183 | } 184 | 185 | form li div.left .medium 186 | { 187 | width:100%; 188 | } 189 | 190 | form li div.right .medium 191 | { 192 | width:100%; 193 | } 194 | 195 | .clear 196 | { 197 | clear:both; 198 | } 199 | 200 | form li div label 201 | { 202 | clear:both; 203 | color:#444; 204 | display:block; 205 | font-size:9px; 206 | line-height:9px; 207 | margin:0; 208 | padding-top:3px; 209 | } 210 | 211 | form li span label 212 | { 213 | clear:both; 214 | color:#444; 215 | display:block; 216 | font-size:9px; 217 | line-height:9px; 218 | margin:0; 219 | padding-top:3px; 220 | } 221 | 222 | form li .datepicker 223 | { 224 | cursor:pointer !important; 225 | float:left; 226 | height:16px; 227 | margin:.1em 5px 0 0; 228 | padding:0; 229 | width:16px; 230 | } 231 | 232 | .form_description 233 | { 234 | border-bottom:1px dotted #ccc; 235 | clear:both; 236 | display:inline-block; 237 | margin:0 0 1em; 238 | } 239 | 240 | .form_description[class] 241 | { 242 | display:block; 243 | } 244 | 245 | .form_description h2 246 | { 247 | clear:left; 248 | font-size:160%; 249 | font-weight:400; 250 | margin:0 0 3px; 251 | } 252 | 253 | .form_description p 254 | { 255 | font-size:95%; 256 | line-height:130%; 257 | margin:0 0 12px; 258 | } 259 | 260 | form hr 261 | { 262 | display:none; 263 | } 264 | 265 | form li.section_break 266 | { 267 | border-top:1px dotted #ccc; 268 | margin-top:9px; 269 | padding-bottom:0; 270 | padding-left:9px; 271 | padding-top:13px; 272 | width:97% !important; 273 | } 274 | 275 | form ul li.first 276 | { 277 | border-top:none !important; 278 | margin-top:0 !important; 279 | padding-top:0 !important; 280 | } 281 | 282 | form .section_break h3 283 | { 284 | font-size:110%; 285 | font-weight:400; 286 | line-height:130%; 287 | margin:0 0 2px; 288 | } 289 | 290 | form .section_break p 291 | { 292 | font-size:85%; 293 | 294 | margin:0 0 10px; 295 | } 296 | 297 | /**** Buttons ****/ 298 | input.button_text 299 | { 300 | overflow:visible; 301 | padding:0 7px; 302 | width:auto; 303 | } 304 | 305 | .buttons input 306 | { 307 | font-size:120%; 308 | margin-right:5px; 309 | } 310 | 311 | /**** Inputs and Labels ****/ 312 | label.description 313 | { 314 | border:none; 315 | color:#222; 316 | display:block; 317 | font-size:95%; 318 | font-weight:700; 319 | line-height:150%; 320 | padding:0 0 1px; 321 | } 322 | 323 | span.symbol 324 | { 325 | font-size:115%; 326 | line-height:130%; 327 | } 328 | 329 | input.text 330 | { 331 | background:#fff url(../../../images/shadow.gif) repeat-x top; 332 | border-bottom:1px solid #ddd; 333 | border-left:1px solid #c3c3c3; 334 | border-right:1px solid #c3c3c3; 335 | border-top:1px solid #7c7c7c; 336 | color:#333; 337 | font-size:100%; 338 | margin:0; 339 | padding:2px 0; 340 | } 341 | 342 | input.file 343 | { 344 | color:#333; 345 | font-size:100%; 346 | margin:0; 347 | padding:2px 0; 348 | } 349 | 350 | textarea.textarea 351 | { 352 | background:#fff url(../../../images/shadow.gif) repeat-x top; 353 | border-bottom:1px solid #ddd; 354 | border-left:1px solid #c3c3c3; 355 | border-right:1px solid #c3c3c3; 356 | border-top:1px solid #7c7c7c; 357 | color:#333; 358 | font-family:"Lucida Grande", Tahoma, Arial, Verdana, sans-serif; 359 | font-size:100%; 360 | margin:0; 361 | width:99%; 362 | } 363 | 364 | select.select 365 | { 366 | color:#333; 367 | font-size:100%; 368 | margin:1px 0; 369 | padding:1px 0 0; 370 | background:#fff url(../../../images/shadow.gif) repeat-x top; 371 | border-bottom:1px solid #ddd; 372 | border-left:1px solid #c3c3c3; 373 | border-right:1px solid #c3c3c3; 374 | border-top:1px solid #7c7c7c; 375 | } 376 | 377 | 378 | input.currency 379 | { 380 | text-align:right; 381 | } 382 | 383 | input.checkbox 384 | { 385 | display:block; 386 | height:13px; 387 | line-height:1.4em; 388 | margin:6px 0 0 3px; 389 | width:13px; 390 | } 391 | 392 | input.radio 393 | { 394 | display:block; 395 | height:13px; 396 | line-height:1.4em; 397 | margin:6px 0 0 3px; 398 | width:13px; 399 | } 400 | 401 | label.choice 402 | { 403 | color:#444; 404 | display:block; 405 | font-size:100%; 406 | line-height:1.4em; 407 | margin:-1.55em 0 0 25px; 408 | padding:4px 0 5px; 409 | width:90%; 410 | } 411 | 412 | select.select[class] 413 | { 414 | margin:0; 415 | padding:1px 0; 416 | } 417 | 418 | *:first-child+html select.select[class] 419 | { 420 | margin:1px 0; 421 | } 422 | 423 | .safari select.select 424 | { 425 | font-size:120% !important; 426 | margin-bottom:1px; 427 | } 428 | 429 | input.small 430 | { 431 | width:25%; 432 | } 433 | 434 | select.small 435 | { 436 | width:25%; 437 | } 438 | 439 | input.medium 440 | { 441 | width:50%; 442 | } 443 | 444 | select.medium 445 | { 446 | width:50%; 447 | } 448 | 449 | input.large 450 | { 451 | width:99%; 452 | } 453 | 454 | select.large 455 | { 456 | width:100%; 457 | } 458 | 459 | textarea.small 460 | { 461 | height:5.5em; 462 | } 463 | 464 | textarea.medium 465 | { 466 | height:10em; 467 | } 468 | 469 | textarea.large 470 | { 471 | height:20em; 472 | } 473 | 474 | /**** Errors ****/ 475 | #error_message 476 | { 477 | background:#fff; 478 | border:1px dotted red; 479 | margin-bottom:1em; 480 | padding-left:0; 481 | padding-right:0; 482 | padding-top:4px; 483 | text-align:center; 484 | width:99%; 485 | } 486 | 487 | #error_message_title 488 | { 489 | color:#DF0000; 490 | font-size:125%; 491 | margin:7px 0 5px; 492 | padding:0; 493 | } 494 | 495 | #error_message_desc 496 | { 497 | color:#000; 498 | font-size:100%; 499 | margin:0 0 .8em; 500 | } 501 | 502 | #error_message_desc strong 503 | { 504 | background-color:#FFDFDF; 505 | color:red; 506 | padding:2px 3px; 507 | } 508 | 509 | form li.error 510 | { 511 | background-color:#FFDFDF !important; 512 | border-bottom:1px solid #EACBCC; 513 | border-right:1px solid #EACBCC; 514 | margin:3px 0; 515 | } 516 | 517 | form li.error label 518 | { 519 | color:#DF0000 !important; 520 | } 521 | 522 | form p.error 523 | { 524 | clear:both; 525 | color:red; 526 | font-size:10px; 527 | font-weight:700; 528 | margin:0 0 5px; 529 | } 530 | 531 | form .required 532 | { 533 | color:red; 534 | float:none; 535 | font-weight:700; 536 | } 537 | 538 | /**** Guidelines and Error Highlight ****/ 539 | form li.highlighted 540 | { 541 | background-color:#fff7c0; 542 | } 543 | 544 | form .guidelines 545 | { 546 | background:#f5f5f5; 547 | border:1px solid #e6e6e6; 548 | color:#444; 549 | font-size:80%; 550 | left:100%; 551 | line-height:130%; 552 | margin:0 0 0 8px; 553 | padding:8px 10px 9px; 554 | position:absolute; 555 | top:0; 556 | visibility:hidden; 557 | width:42%; 558 | z-index:1000; 559 | } 560 | 561 | form .guidelines small 562 | { 563 | font-size:105%; 564 | } 565 | 566 | form li.highlighted .guidelines 567 | { 568 | visibility:visible; 569 | } 570 | 571 | form li:hover .guidelines 572 | { 573 | visibility:visible; 574 | } 575 | 576 | .no_guidelines .guidelines 577 | { 578 | display:none !important; 579 | } 580 | 581 | .no_guidelines form li 582 | { 583 | width:97%; 584 | } 585 | 586 | .no_guidelines li.section 587 | { 588 | padding-left:9px; 589 | } 590 | 591 | /*** Success Message ****/ 592 | .form_success 593 | { 594 | clear: both; 595 | margin: 0; 596 | padding: 90px 0pt 100px; 597 | text-align: center 598 | } 599 | 600 | .form_success h2 { 601 | clear:left; 602 | font-size:160%; 603 | font-weight:normal; 604 | margin:0pt 0pt 3px; 605 | } 606 | 607 | /*** Password ****/ 608 | ul.password{ 609 | margin-top:60px; 610 | margin-bottom: 60px; 611 | text-align: center; 612 | } 613 | .password h2{ 614 | color:#DF0000; 615 | font-weight:bold; 616 | margin:0pt auto 10px; 617 | } 618 | 619 | .password input.text { 620 | font-size:170% !important; 621 | width:380px; 622 | text-align: center; 623 | } 624 | .password label{ 625 | display:block; 626 | font-size:120% !important; 627 | padding-top:10px; 628 | font-weight:bold; 629 | } 630 | 631 | #li_captcha{ 632 | padding-left: 5px; 633 | } 634 | 635 | 636 | #li_captcha span{ 637 | float:none; 638 | } 639 | 640 | /** Embedded Form **/ 641 | 642 | .embed #form_container{ 643 | border: none; 644 | } 645 | 646 | .embed #top, .embed #bottom, .embed h1{ 647 | display: none; 648 | } 649 | 650 | .embed #form_container{ 651 | width: 100%; 652 | } 653 | 654 | .embed #footer{ 655 | text-align: left; 656 | padding-left: 10px; 657 | width: 99%; 658 | } 659 | 660 | .embed #footer.success{ 661 | text-align: center; 662 | } 663 | 664 | .embed form.appnitro 665 | { 666 | margin:0px 0px 0; 667 | 668 | } 669 | 670 | 671 | 672 | /*** Calendar **********************/ 673 | div.calendar { position: relative; } 674 | 675 | .calendar table { 676 | cursor:pointer; 677 | border:1px solid #ccc; 678 | font-size: 11px; 679 | color: #000; 680 | background: #fff; 681 | font-family:"Lucida Grande", Tahoma, Arial, Verdana, sans-serif; 682 | } 683 | 684 | .calendar .button { 685 | text-align: center; 686 | padding: 2px; 687 | } 688 | 689 | .calendar .nav { 690 | background:#f5f5f5; 691 | } 692 | 693 | .calendar thead .title { 694 | font-weight: bold; 695 | text-align: center; 696 | background: #dedede; 697 | color: #000; 698 | padding: 2px 0 3px 0; 699 | } 700 | 701 | .calendar thead .headrow { 702 | background: #f5f5f5; 703 | color: #444; 704 | font-weight:bold; 705 | } 706 | 707 | .calendar thead .daynames { 708 | background: #fff; 709 | color:#333; 710 | font-weight:bold; 711 | } 712 | 713 | .calendar thead .name { 714 | border-bottom: 1px dotted #ccc; 715 | padding: 2px; 716 | text-align: center; 717 | color: #000; 718 | } 719 | 720 | .calendar thead .weekend { 721 | color: #666; 722 | } 723 | 724 | .calendar thead .hilite { 725 | background-color: #444; 726 | color: #fff; 727 | padding: 1px; 728 | } 729 | 730 | .calendar thead .active { 731 | background-color: #d12f19; 732 | color:#fff; 733 | padding: 2px 0px 0px 2px; 734 | } 735 | 736 | 737 | .calendar tbody .day { 738 | width:1.8em; 739 | color: #222; 740 | text-align: right; 741 | padding: 2px 2px 2px 2px; 742 | } 743 | .calendar tbody .day.othermonth { 744 | font-size: 80%; 745 | color: #bbb; 746 | } 747 | .calendar tbody .day.othermonth.oweekend { 748 | color: #fbb; 749 | } 750 | 751 | .calendar table .wn { 752 | padding: 2px 2px 2px 2px; 753 | border-right: 1px solid #000; 754 | background: #666; 755 | } 756 | 757 | .calendar tbody .rowhilite td { 758 | background: #FFF1AF; 759 | } 760 | 761 | .calendar tbody .rowhilite td.wn { 762 | background: #FFF1AF; 763 | } 764 | 765 | .calendar tbody td.hilite { 766 | padding: 1px 1px 1px 1px; 767 | background:#444 !important; 768 | color:#fff !important; 769 | } 770 | 771 | .calendar tbody td.active { 772 | color:#fff; 773 | background: #529214 !important; 774 | padding: 2px 2px 0px 2px; 775 | } 776 | 777 | .calendar tbody td.selected { 778 | font-weight: bold; 779 | border: 1px solid #888; 780 | padding: 1px 1px 1px 1px; 781 | background: #f5f5f5 !important; 782 | color: #222 !important; 783 | } 784 | 785 | .calendar tbody td.weekend { 786 | color: #666; 787 | } 788 | 789 | .calendar tbody td.today { 790 | font-weight: bold; 791 | color: #529214; 792 | background:#D9EFC2; 793 | } 794 | 795 | .calendar tbody .disabled { color: #999; } 796 | 797 | .calendar tbody .emptycell { 798 | visibility: hidden; 799 | } 800 | 801 | .calendar tbody .emptyrow { 802 | display: none; 803 | } 804 | 805 | .calendar tfoot .footrow { 806 | text-align: center; 807 | background: #556; 808 | color: #fff; 809 | } 810 | 811 | .calendar tfoot .ttip { 812 | background: #222; 813 | color: #fff; 814 | font-size:10px; 815 | border-top: 1px solid #dedede; 816 | padding: 3px; 817 | } 818 | 819 | .calendar tfoot .hilite { 820 | background: #aaf; 821 | border: 1px solid #04f; 822 | color: #000; 823 | padding: 1px; 824 | } 825 | 826 | .calendar tfoot .active { 827 | background: #77c; 828 | padding: 2px 0px 0px 2px; 829 | } 830 | 831 | .calendar .combo { 832 | position: absolute; 833 | display: none; 834 | top: 0px; 835 | left: 0px; 836 | width: 4em; 837 | border: 1px solid #ccc; 838 | background: #f5f5f5; 839 | color: #222; 840 | font-size: 90%; 841 | z-index: 100; 842 | } 843 | 844 | .calendar .combo .label, 845 | .calendar .combo .label-IEfix { 846 | text-align: center; 847 | padding: 1px; 848 | } 849 | 850 | .calendar .combo .label-IEfix { 851 | width: 4em; 852 | } 853 | 854 | .calendar .combo .hilite { 855 | background: #444; 856 | color:#fff; 857 | } 858 | 859 | .calendar .combo .active { 860 | border-top: 1px solid #999; 861 | border-bottom: 1px solid #999; 862 | background: #dedede; 863 | font-weight: bold; 864 | } 865 | 866 | -------------------------------------------------------------------------------- /license.txt: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 2, June 1991 3 | 4 | Copyright (C) 1989, 1991 Free Software Foundation, Inc., 5 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 6 | Everyone is permitted to copy and distribute verbatim copies 7 | of this license document, but changing it is not allowed. 8 | 9 | Preamble 10 | 11 | The licenses for most software are designed to take away your 12 | freedom to share and change it. By contrast, the GNU General Public 13 | License is intended to guarantee your freedom to share and change free 14 | software--to make sure the software is free for all its users. This 15 | General Public License applies to most of the Free Software 16 | Foundation's software and to any other program whose authors commit to 17 | using it. (Some other Free Software Foundation software is covered by 18 | the GNU Lesser General Public License instead.) You can apply it to 19 | your programs, too. 20 | 21 | When we speak of free software, we are referring to freedom, not 22 | price. Our General Public Licenses are designed to make sure that you 23 | have the freedom to distribute copies of free software (and charge for 24 | this service if you wish), that you receive source code or can get it 25 | if you want it, that you can change the software or use pieces of it 26 | in new free programs; and that you know you can do these things. 27 | 28 | To protect your rights, we need to make restrictions that forbid 29 | anyone to deny you these rights or to ask you to surrender the rights. 30 | These restrictions translate to certain responsibilities for you if you 31 | distribute copies of the software, or if you modify it. 32 | 33 | For example, if you distribute copies of such a program, whether 34 | gratis or for a fee, you must give the recipients all the rights that 35 | you have. You must make sure that they, too, receive or can get the 36 | source code. And you must show them these terms so they know their 37 | rights. 38 | 39 | We protect your rights with two steps: (1) copyright the software, and 40 | (2) offer you this license which gives you legal permission to copy, 41 | distribute and/or modify the software. 42 | 43 | Also, for each author's protection and ours, we want to make certain 44 | that everyone understands that there is no warranty for this free 45 | software. If the software is modified by someone else and passed on, we 46 | want its recipients to know that what they have is not the original, so 47 | that any problems introduced by others will not reflect on the original 48 | authors' reputations. 49 | 50 | Finally, any free program is threatened constantly by software 51 | patents. We wish to avoid the danger that redistributors of a free 52 | program will individually obtain patent licenses, in effect making the 53 | program proprietary. To prevent this, we have made it clear that any 54 | patent must be licensed for everyone's free use or not licensed at all. 55 | 56 | The precise terms and conditions for copying, distribution and 57 | modification follow. 58 | 59 | GNU GENERAL PUBLIC LICENSE 60 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 61 | 62 | 0. This License applies to any program or other work which contains 63 | a notice placed by the copyright holder saying it may be distributed 64 | under the terms of this General Public License. The "Program", below, 65 | refers to any such program or work, and a "work based on the Program" 66 | means either the Program or any derivative work under copyright law: 67 | that is to say, a work containing the Program or a portion of it, 68 | either verbatim or with modifications and/or translated into another 69 | language. (Hereinafter, translation is included without limitation in 70 | the term "modification".) Each licensee is addressed as "you". 71 | 72 | Activities other than copying, distribution and modification are not 73 | covered by this License; they are outside its scope. The act of 74 | running the Program is not restricted, and the output from the Program 75 | is covered only if its contents constitute a work based on the 76 | Program (independent of having been made by running the Program). 77 | Whether that is true depends on what the Program does. 78 | 79 | 1. You may copy and distribute verbatim copies of the Program's 80 | source code as you receive it, in any medium, provided that you 81 | conspicuously and appropriately publish on each copy an appropriate 82 | copyright notice and disclaimer of warranty; keep intact all the 83 | notices that refer to this License and to the absence of any warranty; 84 | and give any other recipients of the Program a copy of this License 85 | along with the Program. 86 | 87 | You may charge a fee for the physical act of transferring a copy, and 88 | you may at your option offer warranty protection in exchange for a fee. 89 | 90 | 2. You may modify your copy or copies of the Program or any portion 91 | of it, thus forming a work based on the Program, and copy and 92 | distribute such modifications or work under the terms of Section 1 93 | above, provided that you also meet all of these conditions: 94 | 95 | a) You must cause the modified files to carry prominent notices 96 | stating that you changed the files and the date of any change. 97 | 98 | b) You must cause any work that you distribute or publish, that in 99 | whole or in part contains or is derived from the Program or any 100 | part thereof, to be licensed as a whole at no charge to all third 101 | parties under the terms of this License. 102 | 103 | c) If the modified program normally reads commands interactively 104 | when run, you must cause it, when started running for such 105 | interactive use in the most ordinary way, to print or display an 106 | announcement including an appropriate copyright notice and a 107 | notice that there is no warranty (or else, saying that you provide 108 | a warranty) and that users may redistribute the program under 109 | these conditions, and telling the user how to view a copy of this 110 | License. (Exception: if the Program itself is interactive but 111 | does not normally print such an announcement, your work based on 112 | the Program is not required to print an announcement.) 113 | 114 | These requirements apply to the modified work as a whole. If 115 | identifiable sections of that work are not derived from the Program, 116 | and can be reasonably considered independent and separate works in 117 | themselves, then this License, and its terms, do not apply to those 118 | sections when you distribute them as separate works. But when you 119 | distribute the same sections as part of a whole which is a work based 120 | on the Program, the distribution of the whole must be on the terms of 121 | this License, whose permissions for other licensees extend to the 122 | entire whole, and thus to each and every part regardless of who wrote it. 123 | 124 | Thus, it is not the intent of this section to claim rights or contest 125 | your rights to work written entirely by you; rather, the intent is to 126 | exercise the right to control the distribution of derivative or 127 | collective works based on the Program. 128 | 129 | In addition, mere aggregation of another work not based on the Program 130 | with the Program (or with a work based on the Program) on a volume of 131 | a storage or distribution medium does not bring the other work under 132 | the scope of this License. 133 | 134 | 3. You may copy and distribute the Program (or a work based on it, 135 | under Section 2) in object code or executable form under the terms of 136 | Sections 1 and 2 above provided that you also do one of the following: 137 | 138 | a) Accompany it with the complete corresponding machine-readable 139 | source code, which must be distributed under the terms of Sections 140 | 1 and 2 above on a medium customarily used for software interchange; or, 141 | 142 | b) Accompany it with a written offer, valid for at least three 143 | years, to give any third party, for a charge no more than your 144 | cost of physically performing source distribution, a complete 145 | machine-readable copy of the corresponding source code, to be 146 | distributed under the terms of Sections 1 and 2 above on a medium 147 | customarily used for software interchange; or, 148 | 149 | c) Accompany it with the information you received as to the offer 150 | to distribute corresponding source code. (This alternative is 151 | allowed only for noncommercial distribution and only if you 152 | received the program in object code or executable form with such 153 | an offer, in accord with Subsection b above.) 154 | 155 | The source code for a work means the preferred form of the work for 156 | making modifications to it. For an executable work, complete source 157 | code means all the source code for all modules it contains, plus any 158 | associated interface definition files, plus the scripts used to 159 | control compilation and installation of the executable. However, as a 160 | special exception, the source code distributed need not include 161 | anything that is normally distributed (in either source or binary 162 | form) with the major components (compiler, kernel, and so on) of the 163 | operating system on which the executable runs, unless that component 164 | itself accompanies the executable. 165 | 166 | If distribution of executable or object code is made by offering 167 | access to copy from a designated place, then offering equivalent 168 | access to copy the source code from the same place counts as 169 | distribution of the source code, even though third parties are not 170 | compelled to copy the source along with the object code. 171 | 172 | 4. You may not copy, modify, sublicense, or distribute the Program 173 | except as expressly provided under this License. Any attempt 174 | otherwise to copy, modify, sublicense or distribute the Program is 175 | void, and will automatically terminate your rights under this License. 176 | However, parties who have received copies, or rights, from you under 177 | this License will not have their licenses terminated so long as such 178 | parties remain in full compliance. 179 | 180 | 5. You are not required to accept this License, since you have not 181 | signed it. However, nothing else grants you permission to modify or 182 | distribute the Program or its derivative works. These actions are 183 | prohibited by law if you do not accept this License. Therefore, by 184 | modifying or distributing the Program (or any work based on the 185 | Program), you indicate your acceptance of this License to do so, and 186 | all its terms and conditions for copying, distributing or modifying 187 | the Program or works based on it. 188 | 189 | 6. Each time you redistribute the Program (or any work based on the 190 | Program), the recipient automatically receives a license from the 191 | original licensor to copy, distribute or modify the Program subject to 192 | these terms and conditions. You may not impose any further 193 | restrictions on the recipients' exercise of the rights granted herein. 194 | You are not responsible for enforcing compliance by third parties to 195 | this License. 196 | 197 | 7. If, as a consequence of a court judgment or allegation of patent 198 | infringement or for any other reason (not limited to patent issues), 199 | conditions are imposed on you (whether by court order, agreement or 200 | otherwise) that contradict the conditions of this License, they do not 201 | excuse you from the conditions of this License. If you cannot 202 | distribute so as to satisfy simultaneously your obligations under this 203 | License and any other pertinent obligations, then as a consequence you 204 | may not distribute the Program at all. For example, if a patent 205 | license would not permit royalty-free redistribution of the Program by 206 | all those who receive copies directly or indirectly through you, then 207 | the only way you could satisfy both it and this License would be to 208 | refrain entirely from distribution of the Program. 209 | 210 | If any portion of this section is held invalid or unenforceable under 211 | any particular circumstance, the balance of the section is intended to 212 | apply and the section as a whole is intended to apply in other 213 | circumstances. 214 | 215 | It is not the purpose of this section to induce you to infringe any 216 | patents or other property right claims or to contest validity of any 217 | such claims; this section has the sole purpose of protecting the 218 | integrity of the free software distribution system, which is 219 | implemented by public license practices. Many people have made 220 | generous contributions to the wide range of software distributed 221 | through that system in reliance on consistent application of that 222 | system; it is up to the author/donor to decide if he or she is willing 223 | to distribute software through any other system and a licensee cannot 224 | impose that choice. 225 | 226 | This section is intended to make thoroughly clear what is believed to 227 | be a consequence of the rest of this License. 228 | 229 | 8. If the distribution and/or use of the Program is restricted in 230 | certain countries either by patents or by copyrighted interfaces, the 231 | original copyright holder who places the Program under this License 232 | may add an explicit geographical distribution limitation excluding 233 | those countries, so that distribution is permitted only in or among 234 | countries not thus excluded. In such case, this License incorporates 235 | the limitation as if written in the body of this License. 236 | 237 | 9. The Free Software Foundation may publish revised and/or new versions 238 | of the General Public License from time to time. Such new versions will 239 | be similar in spirit to the present version, but may differ in detail to 240 | address new problems or concerns. 241 | 242 | Each version is given a distinguishing version number. If the Program 243 | specifies a version number of this License which applies to it and "any 244 | later version", you have the option of following the terms and conditions 245 | either of that version or of any later version published by the Free 246 | Software Foundation. If the Program does not specify a version number of 247 | this License, you may choose any version ever published by the Free Software 248 | Foundation. 249 | 250 | 10. If you wish to incorporate parts of the Program into other free 251 | programs whose distribution conditions are different, write to the author 252 | to ask for permission. For software which is copyrighted by the Free 253 | Software Foundation, write to the Free Software Foundation; we sometimes 254 | make exceptions for this. Our decision will be guided by the two goals 255 | of preserving the free status of all derivatives of our free software and 256 | of promoting the sharing and reuse of software generally. 257 | 258 | NO WARRANTY 259 | 260 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY 261 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN 262 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES 263 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED 264 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 265 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS 266 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE 267 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, 268 | REPAIR OR CORRECTION. 269 | 270 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 271 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR 272 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, 273 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING 274 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED 275 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY 276 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER 277 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE 278 | POSSIBILITY OF SUCH DAMAGES. 279 | 280 | END OF TERMS AND CONDITIONS 281 | 282 | How to Apply These Terms to Your New Programs 283 | 284 | If you develop a new program, and you want it to be of the greatest 285 | possible use to the public, the best way to achieve this is to make it 286 | free software which everyone can redistribute and change under these terms. 287 | 288 | To do so, attach the following notices to the program. It is safest 289 | to attach them to the start of each source file to most effectively 290 | convey the exclusion of warranty; and each file should have at least 291 | the "copyright" line and a pointer to where the full notice is found. 292 | 293 | 294 | Copyright (C) 295 | 296 | This program is free software; you can redistribute it and/or modify 297 | it under the terms of the GNU General Public License as published by 298 | the Free Software Foundation; either version 2 of the License, or 299 | (at your option) any later version. 300 | 301 | This program is distributed in the hope that it will be useful, 302 | but WITHOUT ANY WARRANTY; without even the implied warranty of 303 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 304 | GNU General Public License for more details. 305 | 306 | You should have received a copy of the GNU General Public License along 307 | with this program; if not, write to the Free Software Foundation, Inc., 308 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 309 | 310 | Also add information on how to contact you by electronic and paper mail. 311 | 312 | If the program is interactive, make it output a short notice like this 313 | when it starts in an interactive mode: 314 | 315 | Gnomovision version 69, Copyright (C) year name of author 316 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 317 | This is free software, and you are welcome to redistribute it 318 | under certain conditions; type `show c' for details. 319 | 320 | The hypothetical commands `show w' and `show c' should show the appropriate 321 | parts of the General Public License. Of course, the commands you use may 322 | be called something other than `show w' and `show c'; they could even be 323 | mouse-clicks or menu items--whatever suits your program. 324 | 325 | You should also get your employer (if you work as a programmer) or your 326 | school, if any, to sign a "copyright disclaimer" for the program, if 327 | necessary. Here is a sample; alter the names: 328 | 329 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program 330 | `Gnomovision' (which makes passes at compilers) written by James Hacker. 331 | 332 | , 1 April 1989 333 | Ty Coon, President of Vice 334 | 335 | This General Public License does not permit incorporating your program into 336 | proprietary programs. If your program is a subroutine library, you may 337 | consider it more useful to permit linking proprietary applications with the 338 | library. If this is what you want to do, use the GNU Lesser General 339 | Public License instead of this License. -------------------------------------------------------------------------------- /convis.php: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 31 | 50 | 51 | 52 | 53 | 2172 | 2187 | 2188 |
    27 |
    28 | 29 |
    30 |
    32 | 33 | 43 | 48 |
    34 | 42 | 44 |
    45 | 46 | 47 |
    49 |
    54 |
    55 | 2170 |
    2171 |
    2173 | 2174 |
    2175 | 2176 | 2177 |
    2178 |
    2179 | 2180 |
    2181 |
    2182 | 2183 | 2184 |
    2185 | 2186 |
    2189 | 2190 | --------------------------------------------------------------------------------