├── 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:
16 |
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 |
--------------------------------------------------------------------------------
/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 |
13 |
69 |
70 |
--------------------------------------------------------------------------------
/js/highlight.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | highlight v4
4 |
5 | Highlights arbitrary terms.
6 |
7 | "+ 38 | ""+node.title+""+ " " +sentences+ 39 | "
| "; 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+=" |
"+ 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"+node.title+":"+ " " + 92 | sentences+ 93 | "
"+ 94 | 95 | ""+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="| "; 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+=" |
" + 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"+node.title+":"+ " " + 91 | sentences+ 92 | "
"+ 93 | 94 | ""+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="| "; 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+=" |
" + 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"+ 85 | ""+node.title+":"+ " " +sentences+ 86 | "
"+ 87 | ""+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="| "; 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+=" |
| Highly Negative | "; 120 | sentimentbar+=""; 121 | sentimentbar+=" | "; 122 | sentimentbar+=" | "; 123 | sentimentbar+=" | "; 124 | sentimentbar+=" | "; 125 | sentimentbar+=" | Highly Positive | "; 126 | sentimentbar+="
" + 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 ||
27 |
28 |
29 |
30 | |
31 |
32 |
|
50 | ||
|
54 |
55 |
2170 |
2171 | |
2172 |
2173 |
2174 |
2175 |
2176 |
2177 |
2178 |
2179 |
2180 |
2181 |
2182 |
2183 |
2184 |
2185 |
2186 | |
2187 |