rbbt-rest 1.7.2 → 1.7.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rbbt/rest/common/resources.rb +1 -1
- data/lib/rbbt/rest/knowledge_base.rb +2 -0
- data/share/views/compass/app.sass +5 -4
- data/share/views/layout/header.haml +14 -1
- data/share/views/public/js/rbbt.aesthetics.js +128 -103
- data/share/views/public/js/rbbt.entity_list.js +6 -7
- data/share/views/public/js/rbbt.exception.js +2 -1
- data/share/views/public/js/rbbt.knowledge_base.js +16 -10
- data/share/views/public/js/rbbt.page.js +30 -88
- data/share/views/public/js/rbbt.plots.js +55 -30
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 83b8b9094b9af4834099ecf4ccd86eef7b611a8e
|
4
|
+
data.tar.gz: 3b66884ff196078ceb9e743cc3904b60baa74794
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a97a9160d62382ae1e786a2f63e261da90b484d16367eeb7322721611e7d4d9c76c6555fad0ec959a8c64e5ae4ae95b2ef82673d3252f388c75c8c14585e7cad
|
7
|
+
data.tar.gz: 698cd1bae789d6f3ebb4126889961e02c319f66f3721045fef3af97c1a25e00c9cad03ce789278ffa9c5408c1eefb4036468e2f6c5228e1da7ac024076186d0d
|
@@ -45,7 +45,7 @@ module RbbtRESTHelpers
|
|
45
45
|
path = locate_javascript(file.split("/")[2..-1] * "/")
|
46
46
|
end
|
47
47
|
|
48
|
-
Open.read(path)
|
48
|
+
"//FILE: #{ File.basename(path) }\n" + Open.read(path)
|
49
49
|
} * "\n"
|
50
50
|
|
51
51
|
FileUtils.mkdir_p File.dirname(filename) unless File.exists? File.dirname(filename)
|
@@ -305,6 +305,7 @@ module Sinatra
|
|
305
305
|
target = kb.target(database)
|
306
306
|
source_type = kb.source_type(database)
|
307
307
|
target_type = kb.target_type(database)
|
308
|
+
fields = kb.fields(database)
|
308
309
|
source_entity_options = kb.entity_options_for source_type
|
309
310
|
target_entity_options = kb.entity_options_for target_type
|
310
311
|
|
@@ -315,6 +316,7 @@ module Sinatra
|
|
315
316
|
:target_type => target_type,
|
316
317
|
:source_entity_options => source_entity_options,
|
317
318
|
:target_entity_options => target_entity_options,
|
319
|
+
:fields => fields,
|
318
320
|
}
|
319
321
|
|
320
322
|
halt 200, info.to_json
|
@@ -394,10 +394,11 @@ body
|
|
394
394
|
.flex-wrap
|
395
395
|
flex-wrap: wrap
|
396
396
|
|
397
|
-
.
|
398
|
-
|
399
|
-
|
400
|
-
|
397
|
+
.ui.segment
|
398
|
+
.action_parameters
|
399
|
+
transform: translateX(-0.9em)
|
400
|
+
width: calc(100% + 2 * 0.9em)
|
401
|
+
margin-bottom: 1.8em !important
|
401
402
|
|
402
403
|
|
403
404
|
#top_menu
|
@@ -30,14 +30,22 @@
|
|
30
30
|
requirejs.config({baseUrl: '/js-find'})
|
31
31
|
|
32
32
|
|
33
|
+
|
34
|
+
-# JQUERY JS
|
33
35
|
- %w(jquery-2.1.1 jquery.cookie jquery.form).each do |jquery_file|
|
34
36
|
- record_js File.join('/plugins/jquery/js/', jquery_file)
|
35
37
|
|
36
38
|
- record_js '/plugins/jquery-ui/js/jquery-ui-1.8.14.custom.min.js'
|
37
39
|
- record_js '/plugins/jquery.tablesorter/jquery.tablesorter.min.js'
|
38
40
|
- record_js '/plugins/jquery.scrollTo/jquery.scrollTo'
|
41
|
+
|
42
|
+
-# SEMANTIC UI JS
|
39
43
|
- record_js '/plugins/semantic-ui/dist/semantic.min.js'
|
44
|
+
|
45
|
+
-# OTHER
|
40
46
|
- record_js '/plugins/FileSaver/js/FileSaver.js'
|
47
|
+
|
48
|
+
-# VISUALIZATION JS
|
41
49
|
- record_js '/plugins/color-js/color.js'
|
42
50
|
- record_js '/plugins/d3js/js/d3js.min.js'
|
43
51
|
- record_js '/plugins/nvd3/js/nv.d3.js'
|
@@ -45,6 +53,8 @@
|
|
45
53
|
- record_js '/plugins/cola/js/cola.js'
|
46
54
|
- record_js '/plugins/mithril-node-render/js/index.js'
|
47
55
|
|
56
|
+
|
57
|
+
|
48
58
|
- %w(helpers _md5 _ajax_replace _ellipsis).each do |file|
|
49
59
|
- record_js "/js-find/#{ file }"
|
50
60
|
|
@@ -52,7 +62,10 @@
|
|
52
62
|
- %w(dom_update fragment actions table list map reveal).each do |file|
|
53
63
|
- record_js "/js-find/rbbt/#{ file }"
|
54
64
|
|
55
|
-
- %w(rbbt rbbt.basic rbbt.exception rbbt.job rbbt.page rbbt.entity rbbt.entity_list rbbt.entity_map rbbt.views rbbt.favourites rbbt.
|
65
|
+
- %w(rbbt rbbt.basic rbbt.exception rbbt.job rbbt.page rbbt.entity rbbt.entity_list rbbt.entity_map rbbt.views rbbt.favourites rbbt.modal).each do |file|
|
66
|
+
- record_js "/js-find/#{ file }"
|
67
|
+
|
68
|
+
- %w(rbbt.knowledge_base rbbt.aesthetics rbbt.plots).each do |file|
|
56
69
|
- record_js "/js-find/#{ file }"
|
57
70
|
|
58
71
|
- record_js "/js-find/app"
|
@@ -2,16 +2,6 @@ rbbt.aesthetics = {LS_key: "rbbt.aesthetics"}
|
|
2
2
|
|
3
3
|
var aes_module = rbbt.aesthetics
|
4
4
|
|
5
|
-
aes_module.load = function(){
|
6
|
-
this.aesthetics = rbbt.LS.load(this.LS_key)
|
7
|
-
if (undefined === this.aesthetics)
|
8
|
-
this.aesthetics = []
|
9
|
-
}.bind(aes_module)
|
10
|
-
|
11
|
-
aes_module.store = function(){
|
12
|
-
rbbt.LS.store(this.LS_key, this.aesthetics)
|
13
|
-
}.bind(aes_module)
|
14
|
-
|
15
5
|
aes_module.map_aesthetic = function(aes, mapper, map_obj){
|
16
6
|
switch(mapper){
|
17
7
|
case false:
|
@@ -28,6 +18,100 @@ aes_module.map_aesthetic = function(aes, mapper, map_obj){
|
|
28
18
|
}
|
29
19
|
}
|
30
20
|
|
21
|
+
aes_module.get_list_property = function(list, rule, result) {
|
22
|
+
promise = list.property(rule.property, rule.args)
|
23
|
+
|
24
|
+
if (undefined === rule.extract){
|
25
|
+
return promise.then(result, rbbt.exception.report)
|
26
|
+
}else{
|
27
|
+
var extract = rule.extract
|
28
|
+
return promise.then(function(v){return v.map(extract)}).then(result, rbbt.exception.report)
|
29
|
+
}
|
30
|
+
}
|
31
|
+
|
32
|
+
aes_module.get_list_workflow_job = function(list, rule, result) {
|
33
|
+
promise = rbbt.job(rule.workflow, rule.task, rule.args,true)
|
34
|
+
|
35
|
+
if (undefined === rule.extract){
|
36
|
+
return promise.then(result, rbbt.exception.report)
|
37
|
+
}else{
|
38
|
+
var extract = rule.extract
|
39
|
+
return m.sync([list.get(), promise]).then(function(res){
|
40
|
+
list_info = res[0]
|
41
|
+
data = res[1]
|
42
|
+
return list_info.entities.map(function(e){ return extract.call(null, data, e) })
|
43
|
+
}).then(result, rbbt.exception.report)
|
44
|
+
}
|
45
|
+
}
|
46
|
+
|
47
|
+
aes_module.get_list_knowledge_base = function(list, rule, result) {
|
48
|
+
var db_code
|
49
|
+
var promise
|
50
|
+
if (rule.parents){
|
51
|
+
var db_code = [rule.parents, rule.knowledge_base].join("@")
|
52
|
+
promise = rbbt.knowledge_base.list_parents(db_code, list)
|
53
|
+
}
|
54
|
+
|
55
|
+
if (rule.children){
|
56
|
+
var db_code = [rule.children, rule.knowledge_base].join("@")
|
57
|
+
promise = rbbt.knowledge_base.list_children(db_code, list)
|
58
|
+
}
|
59
|
+
|
60
|
+
if (rule.field){
|
61
|
+
promise = m.sync([promise,rbbt.knowledge_base.database_info(db_code)]).then(function(res){
|
62
|
+
var data = res[0]
|
63
|
+
var db_info = res[1]
|
64
|
+
var fields = db_info.fields
|
65
|
+
var field_pos = fields.indexOf(rule.field)
|
66
|
+
|
67
|
+
if (field_pos < 0){
|
68
|
+
var msg = "Field not found: " + rule.field + ". Options: " + fields.join(", ")
|
69
|
+
throw new Error(msg)
|
70
|
+
}
|
71
|
+
|
72
|
+
var matches = {}
|
73
|
+
forHash(data, function(key, values){
|
74
|
+
var source = values[0]
|
75
|
+
var target = values[1]
|
76
|
+
if (matches[source] === undefined) matches[source] = {}
|
77
|
+
matches[source][target] = values[field_pos+2]
|
78
|
+
})
|
79
|
+
return matches
|
80
|
+
})
|
81
|
+
|
82
|
+
}else{
|
83
|
+
promise = promise.then(function(data){
|
84
|
+
var matches = {}
|
85
|
+
forHash(data, function(key, values){
|
86
|
+
var source = values[0]
|
87
|
+
var target = values[1]
|
88
|
+
if (matches[source] === undefined) matches[source] = {}
|
89
|
+
matches[source][target] = values.slice(2)
|
90
|
+
})
|
91
|
+
return matches
|
92
|
+
})
|
93
|
+
}
|
94
|
+
|
95
|
+
if (undefined === rule.extract){
|
96
|
+
return m.sync([list.get(), promise]).then(function(res){
|
97
|
+
var list_info = res[0]
|
98
|
+
var data = res[1]
|
99
|
+
return list_info.entities.map(function(e){ return data[e] })
|
100
|
+
}).then(result, function(r){rbbt.exception.report(r[1])})
|
101
|
+
}
|
102
|
+
else{
|
103
|
+
var extract = rule.extract
|
104
|
+
return m.sync([list.get(), promise]).then(function(res){
|
105
|
+
var list_info = res[0]
|
106
|
+
var data = res[1]
|
107
|
+
return list_info.entities.map(function(e){
|
108
|
+
return extract.call(null, data, e)
|
109
|
+
})
|
110
|
+
}).then(result, function(r){rbbt.exception.report(r[1])})
|
111
|
+
}
|
112
|
+
|
113
|
+
}
|
114
|
+
|
31
115
|
aes_module.get_list_aesthetics = function(list, rules) {
|
32
116
|
var result = {}
|
33
117
|
var promises = []
|
@@ -35,73 +119,29 @@ aes_module.get_list_aesthetics = function(list, rules) {
|
|
35
119
|
var mappers = {}
|
36
120
|
|
37
121
|
if (undefined === rules) rules = this.aesthetics
|
122
|
+
|
38
123
|
forArray(rules, function(rule){
|
39
124
|
var aes = rule.aes
|
40
125
|
result[aes] = m.prop()
|
41
126
|
mappers[aes] = rule.mapper
|
42
127
|
|
43
|
-
var args = rule.args
|
44
|
-
var extract = rule.extract
|
45
|
-
|
46
128
|
var promise
|
47
129
|
|
48
130
|
if (rule.property){
|
49
|
-
|
50
|
-
|
51
|
-
if (undefined === extract){
|
52
|
-
promises.push(promise.then(result[aes], rbbt.exception.report))
|
53
|
-
}else{
|
54
|
-
promises.push(promise.then(function(v){return v.map(extract)}).then(result[aes], rbbt.exception.report))
|
55
|
-
}
|
131
|
+
promises.push(aes_module.get_list_property(list, rule, result[aes]))
|
56
132
|
}
|
57
133
|
|
58
134
|
if (rule.workflow){
|
59
|
-
|
60
|
-
if (undefined === extract){
|
61
|
-
promises.push(promise.then(result[aes], rbbt.exception.report))
|
62
|
-
}else{
|
63
|
-
promises.push(m.sync([list.get(), promise]).then(function(res){
|
64
|
-
list_info = res[0]
|
65
|
-
data = res[1]
|
66
|
-
return list_info.entities.map(function(e){ return extract.call(null, data, e) })
|
67
|
-
}).then(result[aes], rbbt.exception.report))
|
68
|
-
}
|
135
|
+
promises.push(aes_module.get_list_workflow_job(list, rule, result[aes]))
|
69
136
|
}
|
70
137
|
|
71
138
|
if (rule.knowledge_base){
|
72
|
-
|
73
|
-
promise = rbbt.knowledge_base.list_parents([rule.parents, rule.knowledge_base].join("@"), list)
|
74
|
-
if (rule.children)
|
75
|
-
promise = rbbt.knowledge_base.list_children([rule.children, rule.knowledge_base].join("@"), list)
|
76
|
-
|
77
|
-
promise = promise.then(function(data){
|
78
|
-
var matches = {}
|
79
|
-
forHash(data, function(key, values){
|
80
|
-
var source = values[0]
|
81
|
-
var target = values[1]
|
82
|
-
if (matches[source] === undefined) matches[source] = {}
|
83
|
-
matches[source][target] = values.slice(2)
|
84
|
-
})
|
85
|
-
return matches
|
86
|
-
})
|
87
|
-
|
88
|
-
if (undefined === extract){
|
89
|
-
promises.push(m.sync([list.get(), promise]).then(function(res){
|
90
|
-
list_info = res[0]
|
91
|
-
data = res[1]
|
92
|
-
return list_info.entities.map(function(e){ return data[e] })
|
93
|
-
}).then(result[aes]))
|
94
|
-
}else{
|
95
|
-
promises.push(m.sync([list.get(), promise]).then(function(res){
|
96
|
-
list_info = res[0]
|
97
|
-
data = res[1]
|
98
|
-
return list_info.entities.map(function(e){ return extract.call(null, data, e) })
|
99
|
-
}).then(result[aes]))
|
100
|
-
}
|
139
|
+
promises.push(aes_module.get_list_knowledge_base(list, rule, result[aes]))
|
101
140
|
}
|
102
141
|
})
|
103
142
|
|
104
143
|
var mapped_result = {}
|
144
|
+
|
105
145
|
m.sync(promises).then(function(){
|
106
146
|
forHash(result, function(aes, values){
|
107
147
|
var mapper = mappers[aes]
|
@@ -113,55 +153,40 @@ aes_module.get_list_aesthetics = function(list, rules) {
|
|
113
153
|
return deferred.promise
|
114
154
|
}
|
115
155
|
|
156
|
+
//{{{ HELPERS
|
157
|
+
aes_module.column_aes = function(aes, column){
|
158
|
+
var column_aes = {label: column}
|
159
|
+
forHash(aes, function(key, values){
|
160
|
+
var m
|
161
|
+
if (m = key.match(/^column-(.*)/)){
|
162
|
+
var clean_key = m[1]
|
163
|
+
if (undefined === values)
|
164
|
+
column_aes[clean_key] = undefined
|
165
|
+
else
|
166
|
+
column_aes[clean_key] = values[column]
|
167
|
+
}
|
168
|
+
})
|
169
|
+
return column_aes
|
170
|
+
}
|
171
|
+
|
172
|
+
//{{{ STORE, LOAD, ADD and APPLY
|
173
|
+
|
174
|
+
aes_module.store = function(){
|
175
|
+
rbbt.LS.store(this.LS_key, this.aesthetics)
|
176
|
+
}.bind(aes_module)
|
177
|
+
|
178
|
+
aes_module.load = function(){
|
179
|
+
this.aesthetics = rbbt.LS.load(this.LS_key)
|
180
|
+
if (undefined === this.aesthetics)
|
181
|
+
this.aesthetics = []
|
182
|
+
}.bind(aes_module)
|
183
|
+
|
116
184
|
aes_module.add = function(rule){
|
117
185
|
aes_module.aesthetics.push(rule)
|
118
186
|
aes_module.aesthetics = unique(aes_module.aesthetics)
|
119
187
|
aes_module.store()
|
120
188
|
}
|
121
189
|
|
122
|
-
aes_module.apply = function(){
|
123
|
-
}
|
124
|
-
|
125
|
-
//aes_module.add = function(selector, aes, value){
|
126
|
-
// var mod = this
|
127
|
-
// if (typeof selector == 'function'){
|
128
|
-
// return selector.then(function(_selector){
|
129
|
-
// mod.aesthetics.push({selector: _selector, aes: aes, value: value})
|
130
|
-
// })
|
131
|
-
// }else{
|
132
|
-
// this.aesthetics.push({selector: selector, aes: aes, value: value})
|
133
|
-
// }
|
134
|
-
//}
|
135
|
-
//
|
136
|
-
//aes_module.clear_aesthetic = function(aes){
|
137
|
-
// var data_key = 'data-aes-' + aesthetic.aes
|
138
|
-
//
|
139
|
-
// $('[' + data_key + ']').attr(data_key, 'none')
|
140
|
-
//}
|
141
|
-
//
|
142
|
-
//aes_module.apply_aesthetic = function(aesthetic){
|
143
|
-
//
|
144
|
-
// if (typeof aesthetic.selector == "string"){
|
145
|
-
// targets = $(aesthetic.selector)
|
146
|
-
// }else{
|
147
|
-
// var items = aesthetic.selector
|
148
|
-
// if (typeof items[0] == 'object') items = $.map(items, function(i){return i.id})
|
149
|
-
// targets = $('.entity').filter(function(index){
|
150
|
-
// var id = $(this).attr('data-entity-id')
|
151
|
-
// return items.indexOf(id) >= 0
|
152
|
-
// })
|
153
|
-
// }
|
154
|
-
//
|
155
|
-
// var data_key = 'data-aes-' + aesthetic.aes
|
156
|
-
// targets.attr(data_key, aesthetic.value)
|
157
|
-
//}
|
158
|
-
//
|
159
|
-
//aes_module.apply = function(aesthetic){
|
160
|
-
// if (undefined === aesthetic)
|
161
|
-
// aes_module.aesthetics.map(aes_module.apply_aesthetic)
|
162
|
-
// else
|
163
|
-
// aes_module.apply_aesthetic(aesthetic)
|
164
|
-
//}
|
165
|
-
//
|
190
|
+
aes_module.apply = function(){ }
|
166
191
|
|
167
192
|
aes_module.load()
|
@@ -14,9 +14,9 @@ var EntityList = function(data){
|
|
14
14
|
}
|
15
15
|
|
16
16
|
this.get = function(){
|
17
|
-
var url = this.url()
|
18
|
-
url = add_parameter(url, '_format', 'json')
|
19
17
|
if (undefined === this.entities && ! this.loading){
|
18
|
+
var url = this.url()
|
19
|
+
url = add_parameter(url, '_format', 'json')
|
20
20
|
list = this
|
21
21
|
this.loading = m.request({url: url, method: 'GET'}).then(this.entities).then(function(x){ list.loading = undefined; return x})
|
22
22
|
return this.loading
|
@@ -68,14 +68,13 @@ var EntityList = function(data){
|
|
68
68
|
var db_key = [database, knowledgebase].join("@")
|
69
69
|
return rbbt.knowledge_base.list_subset(db_key, this)
|
70
70
|
}
|
71
|
-
|
72
|
-
|
73
71
|
}
|
74
72
|
|
73
|
+
//{{{ FAVOURITES
|
75
74
|
var FavouriteLists = function(by_type){
|
76
|
-
|
77
|
-
|
78
|
-
|
75
|
+
for (type in by_type){
|
76
|
+
this[type] = by_type[type]
|
77
|
+
}
|
79
78
|
}
|
80
79
|
|
81
80
|
FavouriteLists.get = function(){
|
@@ -5,9 +5,10 @@ rbbt.exception.null = function(variable, text){
|
|
5
5
|
}
|
6
6
|
|
7
7
|
rbbt.exception.report = function(err){
|
8
|
+
console.log(err)
|
8
9
|
console.log("Error: " + err)
|
9
10
|
var stack = err.stack
|
10
|
-
|
11
|
+
if(undefined === stack) stack = "No stack trace"
|
11
12
|
if (rbbt.modal){
|
12
13
|
stack = "<ul><li>" + stack.replace(/\n/g, '</li><li>') + '<li/></ul>'
|
13
14
|
stack = stack.replace(/<li><li\/>/g,'').replace(/<li>(.*?)@(.*?):(\d+:\d+)<\/li>/g, '<li>$2<span style="font-weight:bold">$3</span><br/><em>$1</em></li>')
|
@@ -1,17 +1,23 @@
|
|
1
1
|
var KB = rbbt.knowledge_base = {}
|
2
2
|
|
3
|
-
KB.children = function(database, entity){
|
4
|
-
var id = undefined
|
5
|
-
if (typeof entity == 'string'){ id = entity}else{id = entity.id}
|
6
|
-
var url = '/
|
7
|
-
url = add_parameter(url, '_format', 'json')
|
8
|
-
return m.request({url: url, method: "GET", type: Entity})
|
9
|
-
}
|
3
|
+
//KB.children = function(database, entity){
|
4
|
+
// var id = undefined
|
5
|
+
// if (typeof entity == 'string'){ id = entity}else{id = entity.id}
|
6
|
+
// var url = '/knowledge_base/user/' + database + '/children/' + id
|
7
|
+
// url = add_parameter(url, '_format', 'json')
|
8
|
+
// return m.request({url: url, method: "GET", type: Entity})
|
9
|
+
//}
|
10
|
+
//
|
11
|
+
//KB.parents = function(database, entity){
|
12
|
+
// var url = '/knowledge_base/user/' + database + '/parents/' + entity.id
|
13
|
+
// url = add_parameter(url, '_format', 'json')
|
14
|
+
// return m.request({url: url, method: "GET", type: Entity})
|
15
|
+
//}
|
10
16
|
|
11
|
-
KB.
|
12
|
-
var url = '/
|
17
|
+
KB.database_info = function(database){
|
18
|
+
var url = '/knowledge_base/user/' + database + '/info'
|
13
19
|
url = add_parameter(url, '_format', 'json')
|
14
|
-
return m.request({url: url, method: "GET"
|
20
|
+
return m.request({url: url, method: "GET"})
|
15
21
|
}
|
16
22
|
|
17
23
|
KB.list_parents = function(database, list){
|
@@ -1,7 +1,20 @@
|
|
1
1
|
rbbt.page = {};
|
2
2
|
|
3
|
+
rbbt.page.path = function(){
|
4
|
+
return window.location.pathname;
|
5
|
+
}
|
6
|
+
|
7
|
+
rbbt.page.path_parts = function(path){
|
8
|
+
if (undefined === path) path = rbbt.page.path()
|
9
|
+
|
10
|
+
var parts = path.split("/")
|
11
|
+
if (parts[0] == "") parts.shift()
|
12
|
+
|
13
|
+
return parts
|
14
|
+
}
|
15
|
+
|
3
16
|
rbbt.page.type = function(path){
|
4
|
-
if (undefined === path)
|
17
|
+
if (undefined === path) path = rbbt.page.path()
|
5
18
|
|
6
19
|
if (path.match(/^\/entity\//)){ return "entity"; }
|
7
20
|
if (path.match(/^\/entity_action\//)){ return "entity_action"; }
|
@@ -25,11 +38,22 @@ rbbt.page.entity = function(){
|
|
25
38
|
|
26
39
|
rbbt.page.list = function(){
|
27
40
|
var card = $('.entity_list_card')
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
41
|
+
|
42
|
+
if (card.length > 0){
|
43
|
+
var list = card.attr('data-list')
|
44
|
+
var type = card.attr('data-list-type')
|
45
|
+
return new EntityList({id: list, type: type})
|
46
|
+
}
|
47
|
+
|
48
|
+
if (rbbt.page.type() == 'entity_list_action'){
|
49
|
+
var parts = rbbt.page.path_parts()
|
50
|
+
var type = parts[1]
|
51
|
+
var list = parts[3]
|
52
|
+
console.log(list)
|
53
|
+
return new EntityList({id: list, type: type})
|
54
|
+
}
|
55
|
+
|
56
|
+
return false
|
33
57
|
}
|
34
58
|
|
35
59
|
rbbt.page.map = function(){
|
@@ -58,85 +82,3 @@ rbbt.page.map_link = function(type, column, id){
|
|
58
82
|
return a
|
59
83
|
}
|
60
84
|
|
61
|
-
//{{{ OLD
|
62
|
-
//function rbbt.page_entity(path){
|
63
|
-
// if (undefined === path){ path = window.location.pathname; }
|
64
|
-
//
|
65
|
-
// switch(page_type(path)){
|
66
|
-
// case "entity":
|
67
|
-
// return restore_element(path.split('?')[0].split("/")[3]);
|
68
|
-
// default:
|
69
|
-
// return undefined
|
70
|
-
// }
|
71
|
-
//}
|
72
|
-
//
|
73
|
-
//function rbbt.page_entity_list(path){
|
74
|
-
// if (undefined === path){ path = window.location.pathname; }
|
75
|
-
//
|
76
|
-
// switch(page_type(path)){
|
77
|
-
// case "entity_list":
|
78
|
-
// return restore_element(path.split('?')[0].split("/")[3]);
|
79
|
-
// default:
|
80
|
-
// return undefined
|
81
|
-
// }
|
82
|
-
//}
|
83
|
-
//
|
84
|
-
//function rbbt.page_entity_map(path){
|
85
|
-
// if (undefined === path){ path = window.location.pathname; }
|
86
|
-
//
|
87
|
-
// switch(page_type(path)){
|
88
|
-
// case "entity_map":
|
89
|
-
// return restore_element(path.split('?')[0].split("/")[4]);
|
90
|
-
// default:
|
91
|
-
// return undefined
|
92
|
-
// }
|
93
|
-
//}
|
94
|
-
//
|
95
|
-
//function rbbt.page_entity_map_column(path){
|
96
|
-
// if (undefined === path){ path = window.location.pathname; }
|
97
|
-
//
|
98
|
-
// switch(page_type(path)){
|
99
|
-
// case "entity_map":
|
100
|
-
// return restore_element(path.split("/")[3]);
|
101
|
-
// default:
|
102
|
-
// return undefined
|
103
|
-
// }
|
104
|
-
//}
|
105
|
-
//
|
106
|
-
//function rbbt.page_entity_type(path){
|
107
|
-
// if (undefined === path){ path = window.location.pathname; }
|
108
|
-
// var entity_type;
|
109
|
-
//
|
110
|
-
// switch(page_type(path)){
|
111
|
-
// case "entity":
|
112
|
-
// case "entity_list":
|
113
|
-
// case "entity_action":
|
114
|
-
// case "entity_list_action":
|
115
|
-
// case "entity_map":
|
116
|
-
// return restore_element(path.split("/")[2]);
|
117
|
-
// break;
|
118
|
-
// }
|
119
|
-
// return undefined;
|
120
|
-
//}
|
121
|
-
//
|
122
|
-
//function rbbt.page_entity_base_type(path){
|
123
|
-
// return page_entity_type(path).split(":")[0]
|
124
|
-
//}
|
125
|
-
//
|
126
|
-
//function rbbt.page_entity_format(path){
|
127
|
-
// return page_entity_type(path).split(":")[1]
|
128
|
-
//}
|
129
|
-
//
|
130
|
-
//function rbbt.page_entity_info(path){
|
131
|
-
// var params;
|
132
|
-
// if (undefined === path){
|
133
|
-
// params = window.location.search;
|
134
|
-
// }else{
|
135
|
-
// params = path.split('?')[1]
|
136
|
-
// }
|
137
|
-
// return parse_parameters(params)
|
138
|
-
//}
|
139
|
-
//
|
140
|
-
////{{{ Link generators
|
141
|
-
//
|
142
|
-
|
@@ -78,7 +78,7 @@ rbbt.plots.list_plot = function(list, rules, create_obj){
|
|
78
78
|
rbbt.log("Loading")
|
79
79
|
return m('.ui.basic.segment.plot.loading', "Loading")
|
80
80
|
}else{
|
81
|
-
rbbt.log("
|
81
|
+
rbbt.log("Drawing")
|
82
82
|
return m('.ui.basic.segment.plot', objs)
|
83
83
|
}
|
84
84
|
}
|
@@ -100,7 +100,6 @@ rbbt.plots.list_plot = function(list, rules, create_obj){
|
|
100
100
|
|
101
101
|
//{{{ PLOTS
|
102
102
|
|
103
|
-
|
104
103
|
//{{{ FORCE LAYOUT
|
105
104
|
|
106
105
|
rbbt.plots.force_layout = function(graph){
|
@@ -136,7 +135,7 @@ rbbt.plots.association_network = function(nodes, associations){
|
|
136
135
|
var target = value[1]
|
137
136
|
var source_index = indices[source]
|
138
137
|
var target_index = indices[target]
|
139
|
-
links.push({source: source_index, target: target_index, id: key})
|
138
|
+
links.push({source: source_index, target: target_index, id: key, values: value})
|
140
139
|
})
|
141
140
|
|
142
141
|
return links
|
@@ -151,23 +150,27 @@ rbbt.plots.basic_rules = function(study){
|
|
151
150
|
rules.push({aes:'description', property: 'long_name'})
|
152
151
|
rules.push({aes:'highlight', property: 'significant_in_study', args:study})
|
153
152
|
rules.push({aes:'order', property: 'damage_bias_in_study', args:study})
|
154
|
-
rules.push({aes:'color_class', workflow: 'GEO', task: 'differential',
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
153
|
+
rules.push({aes:'color_class', workflow: 'GEO', task: 'differential',
|
154
|
+
args:{threshold: 0.05, dataset: 'GSE13507', to_gene: true, main:"/Primary/", contrast: "/ontrol/"},
|
155
|
+
extract: function(result, entity){
|
156
|
+
if (undefined === result[entity]) return ""
|
157
|
+
var pvalue = result[entity][result[entity].length-1]
|
158
|
+
if (pvalue > 0 && pvalue < 0.05){
|
159
|
+
return "green"
|
160
|
+
}else{
|
161
|
+
if (pvalue < 0 && pvalue > -0.05){
|
162
|
+
return "red"
|
163
|
+
}else{
|
164
|
+
return ""
|
165
|
+
}
|
166
|
+
}
|
166
167
|
}})
|
167
|
-
rules.push({aes:'color', workflow: 'GEO', task: 'differential', mapper: 'sign-gradient',
|
168
|
-
|
169
|
-
|
170
|
-
|
168
|
+
rules.push({aes:'color', workflow: 'GEO', task: 'differential', mapper: 'sign-gradient',
|
169
|
+
args:{threshold: 0.05, dataset: 'GSE13507', to_gene: true, main:"/Primary/", contrast: "/ontrol/"},
|
170
|
+
extract: function(result, entity){
|
171
|
+
if (undefined === result[entity]) return ""
|
172
|
+
var pvalue = result[entity][result[entity].length-1]
|
173
|
+
return pvalue_score(pvalue)
|
171
174
|
}})
|
172
175
|
|
173
176
|
return rules
|
@@ -295,11 +298,13 @@ rbbt.plots.d3js_group_graph = function(graph, object){
|
|
295
298
|
.nodes(graph.nodes)
|
296
299
|
.links(graph.links)
|
297
300
|
.groups(graph.groups)
|
298
|
-
.start()
|
301
|
+
.start(0,0,0)
|
299
302
|
|
300
|
-
|
303
|
+
rbbt.log("force:warmup")
|
304
|
+
for(i=0; i<100; i++) force.tick()
|
305
|
+
rbbt.log("force:warmup done")
|
301
306
|
|
302
|
-
var stop =
|
307
|
+
var stop = false
|
303
308
|
var e
|
304
309
|
if (stop) e = 'end'
|
305
310
|
else e = 'tick'
|
@@ -318,7 +323,10 @@ rbbt.plots.d3js_group_graph = function(graph, object){
|
|
318
323
|
.attr("width", function (d) { return d.bounds.width() - pad/2; })
|
319
324
|
.attr("height", function (d) { return d.bounds.height() - pad/2; });
|
320
325
|
|
321
|
-
if (stop)
|
326
|
+
if (stop){
|
327
|
+
rbbt.log("force:panZoom")
|
328
|
+
svgPanZoom(object, {minZoom: 0, maxZoom: 1000})
|
329
|
+
}
|
322
330
|
})
|
323
331
|
|
324
332
|
var group = svg.selectAll(".group")
|
@@ -331,23 +339,40 @@ rbbt.plots.d3js_group_graph = function(graph, object){
|
|
331
339
|
group.append('title').text(function(d){return d.name})
|
332
340
|
var link = svg.selectAll(".link").data(graph.links).enter()
|
333
341
|
.append("line").attr("class", "link")
|
334
|
-
.style("stroke-width",
|
342
|
+
.style("stroke-width", 7)
|
343
|
+
.style("stroke", function(l){
|
344
|
+
if (l.type && l.type == 'move')
|
345
|
+
return 'green'
|
346
|
+
else
|
347
|
+
return 'gray'
|
348
|
+
})
|
349
|
+
.style("stroke-dasharray", function(l){
|
350
|
+
if (l.type && l.type == 'move')
|
351
|
+
return '20,10,5,5,10'
|
352
|
+
else
|
353
|
+
return undefined
|
354
|
+
})
|
335
355
|
|
336
356
|
var node = svg.selectAll(".node").data(graph.nodes).enter()
|
337
|
-
.append("foreignObject").attr("class", "node")
|
338
|
-
|
339
|
-
.attr('height',ysize).html(function(d){ return mrender(rbbt.plots.card_obj(d)) })
|
357
|
+
.append("foreignObject").attr("class", "node").attr('width',xsize).attr('height',ysize)
|
358
|
+
.html(function(d){ return mrender(rbbt.plots.card_obj(d)) })
|
340
359
|
.call(force.drag)
|
341
360
|
|
342
|
-
|
361
|
+
//var node = svg.selectAll(".node").data(graph.nodes).enter()
|
362
|
+
// .append("rect").attr("class", "node")
|
363
|
+
// .attr('height', ysize)
|
364
|
+
// .attr('width', xsize)
|
365
|
+
// .attr('fill', 'white')
|
366
|
+
// .call(force.drag)
|
343
367
|
|
344
368
|
if (stop){
|
345
369
|
force.stop()
|
346
370
|
}else{
|
347
|
-
|
371
|
+
rbbt.log("force:panZoom")
|
372
|
+
svgPanZoom(object, {minZoom: 0, maxZoom: 1000})
|
348
373
|
}
|
349
374
|
|
350
|
-
rbbt.log("force:
|
375
|
+
rbbt.log("force:done")
|
351
376
|
}
|
352
377
|
|
353
378
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbbt-rest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.7.
|
4
|
+
version: 1.7.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Miguel Vazquez
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-10-
|
11
|
+
date: 2015-10-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|