1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
# Copyright (C) 2011 Luke Macken <lmacken@redhat.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from tw2.jit import SQLARadialGraph
from tw2.jqplugins.ui import DialogWidget
from tw2.jqplugins.ui import CategoryAutocompleteWidget
from tw2.core.resources import JSSymbol
import docutils.examples
from leafymiracle import models
# Using mihmo's mathematically nice colors for fedora.
# http://mihmo.livejournal.com/37350.html
triads = ["#3c6eb4", "#b53c6e", "#6eb53c"]
triads_dark = ["#294172", "#732942", "#427329"]
class LeafyGraph(SQLARadialGraph):
id = 'leafy_graph'
entities = [models.Root, models.Category, models.Group, models.Package]
base_url = '/data'
width = '1000'
height = '750'
depth = 2
levelDistance = 150
alphabetize_relations = 24
alphabetize_minimal = True
show_attributes = False
show_empty_relations = False
imply_relations = True
auto_labels = False
deep_linking = True
#transition = JSSymbol(src='$jit.Trans.Back.easeInOut')
duration = 400
backgroundcolor = '#FFFFFF'
background = { 'CanvasStyles': { 'strokeStyle' : '#FFFFFF' } }
Node = { 'color' : triads[1] }
Edge = { 'color' : triads[2], 'lineWidth':1.5, }
# Override the label style
onPlaceLabel = JSSymbol(src="""
(function(domElement, node){
domElement.style.display = "none";
domElement.innerHTML = node.name;
domElement.style.display = "";
var left = parseInt(domElement.style.left);
domElement.style.width = '120px';
domElement.style.height = '';
var w = domElement.offsetWidth;
domElement.style.left = (left - w /2) + 'px';
domElement.style.cursor = 'pointer';
if ( node._depth <= 1 )
domElement.style.color = '%s';
else
domElement.style.color = '%s';
})""" % (triads[0], triads_dark[0]))
def leafy_readme():
""" Ridiculous """
root = '/'.join(__file__.split('/')[:-2])
fname = root + '/README.rst'
with open(fname, 'r') as f:
readme = f.read()
return docutils.examples.html_body(unicode(readme))
class LeafyDialog(DialogWidget):
id = 'leafy_dialog'
options = {
'title' : 'README.rst',
'autoOpen' : False,
'width' : 1000
}
value = leafy_readme()
class LeafySearchbar(CategoryAutocompleteWidget):
id = 'leafy_searchbar'
value = "Leafy Searchbar"
tags = []
options={
'source' : JSSymbol(
src="""
function( request, response ) {
$.ajax({
url: "/search",
dataType: "json",
data: { term : request.term, },
success: function( data ) {
response( data.data );
}
});
}"""),
'select' : JSSymbol(
src="""
function( event, ui ) {
window.location.assign("/1#___" + ui.item.category + \
"___" + ui.item.value);
window.location.reload(true);
}"""
)
}
|