rbbt-rest 1.1.5 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. checksums.yaml +8 -8
  2. data/lib/rbbt/rest/common/cache.rb +33 -14
  3. data/lib/rbbt/rest/common/locate.rb +8 -6
  4. data/lib/rbbt/rest/common/misc.rb +4 -0
  5. data/lib/rbbt/rest/common/render.rb +14 -4
  6. data/lib/rbbt/rest/common/resources.rb +1 -1
  7. data/lib/rbbt/rest/common/table.rb +37 -7
  8. data/lib/rbbt/rest/entity.rb +5 -3
  9. data/lib/rbbt/rest/entity/favourites.rb +4 -1
  10. data/lib/rbbt/rest/entity/helpers.rb +12 -0
  11. data/lib/rbbt/rest/entity/rest.rb +6 -2
  12. data/lib/rbbt/rest/helpers.rb +7 -0
  13. data/lib/rbbt/rest/knowledge_base.rb +338 -0
  14. data/lib/rbbt/rest/knowledge_base/helpers.rb +57 -0
  15. data/lib/rbbt/rest/main.rb +16 -3
  16. data/share/views/compass/_rbbt.sass +11 -0
  17. data/share/views/compass/actions.sass +48 -24
  18. data/share/views/compass/app.sass +72 -50
  19. data/share/views/compass/colors.sass +3 -229
  20. data/share/views/compass/entity_card.sass +44 -108
  21. data/share/views/compass/favourites.sass +17 -72
  22. data/share/views/compass/finder.sass +30 -0
  23. data/share/views/compass/foundation.sass +79 -0
  24. data/share/views/compass/functions.sass +27 -0
  25. data/share/views/compass/help.sass +3 -0
  26. data/share/views/compass/layout.sass +132 -0
  27. data/share/views/compass/rbbt/form.sass +84 -0
  28. data/share/views/compass/rbbt/fragment.sass +7 -0
  29. data/share/views/compass/rbbt/menu.sass +189 -0
  30. data/share/views/compass/rbbt/reveal.sass +46 -0
  31. data/share/views/compass/rbbt/table.sass +169 -0
  32. data/share/views/compass/skeleton.sass +2 -0
  33. data/share/views/compass/skeleton/_dependencies.sass +151 -0
  34. data/share/views/compass/skeleton/_functions.sass +4 -0
  35. data/share/views/compass/skeleton/_mixins.sass +25 -0
  36. data/share/views/compass/skeleton/_vars.sass +72 -0
  37. data/share/views/compass/skeleton/base.sass +333 -0
  38. data/share/views/compass/skeleton/layout.sass +51 -0
  39. data/share/views/compass/skeleton/skeleton.sass +105 -0
  40. data/share/views/compass/solarized.sass +56 -0
  41. data/share/views/compass/style.sass +2 -116
  42. data/share/views/compass/theme.sass +57 -44
  43. data/share/views/compass/top_menu.sass +121 -0
  44. data/share/views/compass/user.sass +7 -0
  45. data/share/views/compass/variables.sass +7 -0
  46. data/share/views/compass/workflow.sass +6 -14
  47. data/share/views/entity_partials/action_controller.haml +7 -4
  48. data/share/views/entity_partials/entity_card.haml +10 -5
  49. data/share/views/entity_partials/entity_list.haml +4 -7
  50. data/share/views/entity_partials/entity_list_card.haml +10 -3
  51. data/share/views/entity_partials/entity_map_card.haml +2 -2
  52. data/share/views/entity_partials/list_container.haml +31 -26
  53. data/share/views/error.haml +5 -7
  54. data/share/views/help.haml +75 -31
  55. data/share/views/help/entity.haml +191 -193
  56. data/share/views/help/workflow.haml +59 -63
  57. data/share/views/job_result.haml +23 -26
  58. data/share/views/layout.haml +41 -61
  59. data/share/views/layout/top_menu.haml +19 -0
  60. data/share/views/layout/top_menu/favourites.haml +45 -0
  61. data/share/views/layout/top_menu/finder.haml +4 -0
  62. data/share/views/layout/top_menu/user.haml +15 -0
  63. data/share/views/public/js/_ajax_replace.js +17 -5
  64. data/share/views/public/js/_ellipsis.js +7 -9
  65. data/share/views/public/js/app.js +50 -2
  66. data/share/views/public/js/foundation/foundation.abide.js +194 -0
  67. data/share/views/public/js/foundation/foundation.alerts.js +52 -0
  68. data/share/views/public/js/foundation/foundation.clearing.js +516 -0
  69. data/share/views/public/js/foundation/foundation.cookie.js +74 -0
  70. data/share/views/public/js/foundation/foundation.dropdown.js +177 -0
  71. data/share/views/public/js/foundation/foundation.forms.js +533 -0
  72. data/share/views/public/js/foundation/foundation.interchange.js +280 -0
  73. data/share/views/public/js/foundation/foundation.joyride.js +850 -0
  74. data/share/views/public/js/foundation/foundation.js +440 -0
  75. data/share/views/public/js/foundation/foundation.magellan.js +135 -0
  76. data/share/views/public/js/foundation/foundation.orbit.js +412 -0
  77. data/share/views/public/js/foundation/foundation.placeholder.js +179 -0
  78. data/share/views/public/js/foundation/foundation.reveal.js +330 -0
  79. data/share/views/public/js/foundation/foundation.section.js +400 -0
  80. data/share/views/public/js/foundation/foundation.tooltips.js +208 -0
  81. data/share/views/public/js/foundation/foundation.topbar.js +300 -0
  82. data/share/views/public/js/foundation/index.js +18 -0
  83. data/share/views/public/js/helpers.js +33 -2
  84. data/share/views/public/js/jquery-ui.js +313 -0
  85. data/share/views/public/js/rbbt/actions.js +264 -0
  86. data/share/views/public/js/{_dom_update.js → rbbt/dom_update.js} +0 -0
  87. data/share/views/public/js/rbbt/favourites.js +425 -0
  88. data/share/views/public/js/rbbt/fragment.js +13 -0
  89. data/share/views/public/js/rbbt/hide.js +60 -0
  90. data/share/views/public/js/rbbt/list.js +117 -0
  91. data/share/views/public/js/{maps.js → rbbt/map.js} +3 -2
  92. data/share/views/public/js/rbbt/menu.js +22 -0
  93. data/share/views/public/js/rbbt/modal.js +96 -0
  94. data/share/views/public/js/{entities.js → rbbt/page_type.js} +12 -9
  95. data/share/views/public/js/rbbt/reveal.js +19 -0
  96. data/share/views/public/js/rbbt/table.js +283 -0
  97. data/share/views/public/js/{workflow.js → rbbt/workflow.js} +0 -0
  98. data/share/views/tasks.haml +14 -15
  99. data/share/views/wait.haml +11 -12
  100. metadata +62 -33
  101. data/share/views/compass/_foundation_setup.sass +0 -74
  102. data/share/views/compass/dom.sass +0 -32
  103. data/share/views/compass/footer.sass +0 -4
  104. data/share/views/compass/form.sass +0 -41
  105. data/share/views/compass/fragment.sass +0 -8
  106. data/share/views/compass/list_container.sass +0 -34
  107. data/share/views/compass/lists.sass +0 -33
  108. data/share/views/compass/offcanvas.sass +0 -66
  109. data/share/views/compass/responsive_table.sass +0 -80
  110. data/share/views/compass/reveal.sass +0 -31
  111. data/share/views/compass/style_mixins.sass +0 -42
  112. data/share/views/compass/table.sass +0 -63
  113. data/share/views/compass/tabs.sass +0 -81
  114. data/share/views/compass/topbar.sass +0 -25
  115. data/share/views/compass/web-fonts.sass +0 -77
  116. data/share/views/layout/favourites.haml +0 -46
  117. data/share/views/layout/header.haml +0 -44
  118. data/share/views/public/js/_fix_tablesorter_science.js +0 -38
  119. data/share/views/public/js/_foundation.js +0 -42
  120. data/share/views/public/js/actions.js +0 -108
  121. data/share/views/public/js/base.js +0 -121
  122. data/share/views/public/js/favourites.js +0 -441
  123. data/share/views/public/js/lists.js +0 -117
  124. data/share/views/public/js/offcanvas.js +0 -35
  125. data/share/views/public/js/reveal.js +0 -48
  126. data/share/views/public/js/tables.js +0 -314
  127. data/share/views/public/js/tabs.js +0 -7
@@ -0,0 +1,117 @@
1
+ function list_entities(type, id){
2
+ var url = "/entity_list" + '/' + type + '/' + id;
3
+
4
+ return get_ajax({url: url, async: false, method: "GET", data: {_format: 'json'}})['entities']
5
+ }
6
+
7
+ function list_info(type, id){
8
+ var url = "/entity_list" + '/' + type + '/' + id;
9
+
10
+ return get_ajax({url: url, async: false, method: "GET", data: {_format: 'info'}})
11
+ }
12
+
13
+ function list_array(type, list){
14
+ return "list:" + type + ":" + list;
15
+ }
16
+
17
+ var body = $('body');
18
+
19
+ body.on('click', 'a.compare_list', function(){
20
+ var type = page_entity_type().split(":")[0];
21
+ var lists = get_favourite_entity_lists()[type];
22
+
23
+ if (undefined == lists || lists.length == 0){
24
+ alert("No lists to compare with");
25
+ return false
26
+ }
27
+
28
+ var list_id = page_entity_list();
29
+
30
+ var type_ul = favourite_list_type_ul(type, lists).addClass("list_comparison")
31
+ var buttons = $('<ul class="list_comparison_buttons">')
32
+ buttons.append('<li><a class="intersect_lists" href="#">Intersect</a></li>')
33
+ buttons.append('<li><a class="remove_list" href="#">Remove</a></li>')
34
+ buttons.append('<li><a class="add_list" href="#">Add</a></li>')
35
+ type_ul.find('li').prepend(buttons)
36
+
37
+ $('#modal').modal('show', type_ul);
38
+ return true
39
+ })
40
+
41
+ body.on('click', 'a.intersect_lists', function(){
42
+ var link = $(this);
43
+ var other_list_id = link.parent().parent().parent().find("a.entity_list").attr('title');
44
+ var type = clean_element(page_entity_type());
45
+ var list_id = page_entity_list();
46
+ var params = "other_list_id=" + clean_element(other_list_id)
47
+ var url = "/entity_list/intersect/" + type + "/" + clean_element(list_id) + "?" + params
48
+ window.location= url
49
+ })
50
+ body.on('click', 'a.remove_list', function(){
51
+ var link = $(this);
52
+ var other_list_id = link.parent().parent().parent().find("a.entity_list").attr('title');
53
+ var type = clean_element(page_entity_type());
54
+ var list_id = page_entity_list();
55
+ var params = "other_list_id=" + clean_element(other_list_id)
56
+ var url = "/entity_list/remove/" + type + "/" + clean_element(list_id) + "?" + params
57
+ window.location= url
58
+ })
59
+ body.on('click', 'a.add_list', function(){
60
+ var link = $(this);
61
+ var other_list_id = link.parent().parent().parent().find("a.entity_list").attr('title');
62
+ var type = clean_element(page_entity_type());
63
+ var list_id = page_entity_list();
64
+ var params = "other_list_id=" + clean_element(other_list_id)
65
+ var url = "/entity_list/add/" + type + "/" + clean_element(list_id) + "?" + params
66
+ window.location= url
67
+ })
68
+ body.on('click', 'a.edit_list', function(){
69
+ var type = page_entity_type().split(":")[0];
70
+ var lists = get_favourite_entity_lists()[type];
71
+ var entity_type = page_entity_type();
72
+ var list_id = page_entity_list();
73
+
74
+ var url = '/entity_list/' + entity_type + '/edit/' + list_id
75
+
76
+ $('#modal').modal('show_url', url)
77
+
78
+ return true
79
+ })
80
+ body.on('click', 'ul.new_list > li > a', function(){
81
+ var entity_type = $(this).html();
82
+ var url = '/entity_list/' + entity_type + '/new/'
83
+
84
+ get_ajax({url: url, async: false}, function(data){$('#modal').modal('show', data, "New " + entity_type + " list"); $('#top_menu li.favourites').favourites('close')})
85
+
86
+
87
+ return true
88
+ })
89
+
90
+ body.on('click', '.edit_list input[type=submit]', function(){
91
+ var submit = $(this);
92
+ var form = submit.parents('form').first();
93
+ var annotations = {}
94
+
95
+ $.map(form.find(':input'), function(i){ annotations[i.name] = $(i).val()})
96
+
97
+ var new_list_id = annotations['list_id']
98
+ delete annotations['list_id']
99
+
100
+ var format = annotations['format']
101
+ delete annotations['format']
102
+
103
+ var entities = annotations['entities']
104
+ delete annotations['entities']
105
+
106
+ var entity_type = form.parents('.edit_list').first().attr('attr-entity_type')
107
+
108
+ if (undefined !== format){ entity_type = entity_type + ':' + clean_element(format) }
109
+
110
+ var url = '/entity_list/' + entity_type + '/' + new_list_id
111
+
112
+ get_ajax({url: url, type: 'POST', async: false, data: {annotations: JSON.stringify(annotations), entities: entities}}, function(){ window.location = url })
113
+
114
+ return false
115
+ })
116
+
117
+
@@ -1,6 +1,6 @@
1
- function entity_map(type, column, id){
1
+ function entity_map(type, column, id, complete){
2
2
  var url = "/entity_map" + '/' + clean_element(type) + '/' + clean_element(column) + '/' + clean_element(id);
3
- return JSON.parse(get_ajax({url: url, async: false, method: "GET", data: {_format: 'json'}}))
3
+ return get_ajax({url: url, async: false, method: "GET", data: {_format: 'json'}}, complete)
4
4
  }
5
5
 
6
6
  $('body').on('click', '.rank_products form input[type=submit]', function(){
@@ -15,3 +15,4 @@ $('body').on('click', '.rank_products form input[type=submit]', function(){
15
15
  window.location = url
16
16
  return false
17
17
  })
18
+
@@ -0,0 +1,22 @@
1
+ register_dom_update('dl.tabs > dt, dl.rbbt_tabs > dt.next, dl.rbbt_menu > .next, dl.rbbt_vertical_menu > .next, dl.rbbt_accordion > .next', function(title){
2
+ title.click(function(){
3
+ var option = $(this)
4
+ var content = option.next()
5
+ var menu = option.parent('dl')
6
+
7
+ var showed = content.hasClass('show')
8
+
9
+ option.siblings().removeClass('show')
10
+
11
+ if (showed) {
12
+ content.removeClass('show');
13
+ option.removeClass('show');
14
+ menu.removeClass('show')
15
+ } else {
16
+ content.addClass('show');
17
+ option.addClass('show');
18
+ menu.addClass('show')
19
+ }
20
+ })
21
+ })
22
+
@@ -0,0 +1,96 @@
1
+ $.widget("rbbt.modal", {
2
+ _create: function() {
3
+ },
4
+
5
+ _reset_modal: function(modal_title, source_id){
6
+ var tool = this
7
+
8
+ var modal = this.element
9
+ modal.html('').addClass('modal')
10
+
11
+ var title = $('<div>').addClass('title')
12
+ if (modal_title !== undefined){ title.html(modal_title) }
13
+ var controls = $('<div>').addClass('controls')
14
+ controls.append($('<a>').addClass('toggle_favourite').append($('<i>').addClass('foundicon-star')))
15
+ controls.append($('<a>').addClass('link-reveal-modal').append($('<i>').addClass('foundicon-right-arrow')))
16
+ controls.append($('<a>').addClass('close-reveal-modal').append($('<i>').addClass('foundicon-remove')))
17
+
18
+ var header = $('<div>').addClass('header').append(title).append(controls)
19
+
20
+ modal.append(header)
21
+ var content = $('<div>').addClass('content').html(content)
22
+ modal.attr('attr-reveal_source_id', source_id)
23
+ modal.on('click', 'a.close-reveal-modal', function(){ tool.close() })
24
+ modal.on('click', 'a.toggle_favourite', function(){
25
+ var url = $(tool.element).find('> .content').attr('target-href')
26
+ if (url !== undefined){
27
+ $('#top_menu li.favourites').favourites('toggle_page', url)
28
+ }
29
+ return false
30
+ })
31
+
32
+ var content = $('<div>').addClass('content')
33
+ modal.append(content)
34
+
35
+ modal.removeClass('url').removeClass('entity')
36
+
37
+ return modal;
38
+ },
39
+
40
+ _shown_url: function(){
41
+ return $(this.element).find('> .content').attr('target-href')
42
+ },
43
+
44
+ update_star: function(){
45
+ var url = this._shown_url()
46
+ if ($('#top_menu li.favourites').favourites('is_favourite', url)){
47
+ $(this.element).find('a.toggle_favourite').addClass('active');
48
+ }else{
49
+ $(this.element).find('a.toggle_favourite').removeClass('active');
50
+ }
51
+ },
52
+
53
+ show: function(content, title, source_id){
54
+ var tool = this;
55
+ var modal = tool._reset_modal(title, source_id)
56
+
57
+ modal.find('> .content').html(content)
58
+ this.element.show()
59
+ update_rbbt()
60
+ },
61
+
62
+ ask: function(content, title, complete){
63
+ this.show(content, title)
64
+ $('#modal').find('form').first().submit(complete)
65
+ },
66
+
67
+ show_url: function(url, title, source_id, complete){
68
+ var tool = this;
69
+ var modal = this._reset_modal(title, source_id)
70
+
71
+ $('body').append(modal)
72
+
73
+ replace_object(modal.find('.content'), url, true, function(){
74
+ var url = tool._shown_url()
75
+
76
+ modal.addClass('url')
77
+ modal.find('.link-reveal-modal').attr('href', url)
78
+
79
+ if (url != undefined && url.match(/^\/(?:entity|entity_list|entity_map)\//) != null){
80
+ modal.addClass('entity')
81
+ tool.update_star()
82
+ }
83
+
84
+ tool.element.show()
85
+ if (undefined !== complete){ complete()}
86
+ update_rbbt()
87
+ })
88
+ },
89
+
90
+ close: function(){
91
+ this.element.hide()
92
+ }
93
+ })
94
+
95
+
96
+
@@ -1,5 +1,3 @@
1
-
2
-
3
1
  function page_type(path){
4
2
  if (undefined === path){ path = window.location.pathname; }
5
3
 
@@ -14,9 +12,9 @@ function page_type(path){
14
12
  function page_entity(path){
15
13
  if (undefined === path){ path = window.location.pathname; }
16
14
 
17
- switch(page_type()){
15
+ switch(page_type(path)){
18
16
  case "entity":
19
- return restore_element(path.split("/")[3]);
17
+ return restore_element(path.split('?')[0].split("/")[3]);
20
18
  default:
21
19
  return undefined
22
20
  }
@@ -27,7 +25,7 @@ function page_entity_list(path){
27
25
 
28
26
  switch(page_type(path)){
29
27
  case "entity_list":
30
- return restore_element(path.split("/")[3]);
28
+ return restore_element(path.split('?')[0].split("/")[3]);
31
29
  default:
32
30
  return undefined
33
31
  }
@@ -38,7 +36,7 @@ function page_entity_map(path){
38
36
 
39
37
  switch(page_type(path)){
40
38
  case "entity_map":
41
- return restore_element(path.split("/")[4]);
39
+ return restore_element(path.split('?')[0].split("/")[4]);
42
40
  default:
43
41
  return undefined
44
42
  }
@@ -79,9 +77,14 @@ function page_entity_format(path){
79
77
  return page_entity_type(path).split(":")[1]
80
78
  }
81
79
 
82
- function page_entity_info(params){
83
- if (undefined === params){ params = window.location.search; }
84
- return parse_parameters(params)
80
+ function page_entity_info(path){
81
+ var params;
82
+ if (undefined === path){
83
+ params = window.location.search;
84
+ }else{
85
+ params = path.split('?')[1]
86
+ }
87
+ return parse_parameters(params)
85
88
  }
86
89
 
87
90
  //{{{ Link generators
@@ -0,0 +1,19 @@
1
+ $.widget("rbbt.reveal", {
2
+ options: {
3
+ modal: $('body > #modal')
4
+ },
5
+
6
+ _create: function() {
7
+ var tool = this;
8
+ var modal = this.options.modal
9
+ tool.element.click(function(){
10
+ var link = $(this);
11
+ var source_id = link.attr('attr-reveal_id');
12
+ var title = link.attr('attr-reveal_title');
13
+ var content = $('#' + source_id);
14
+ modal.modal('show', content.html(), title, source_id);
15
+ return false
16
+ })
17
+ },
18
+ })
19
+
@@ -0,0 +1,283 @@
1
+
2
+ function parse_page(page){
3
+ if (undefined === page){ page = "" }
4
+ if (page == "" ){ return {} }
5
+ var parts = page.split('~')
6
+ switch(parts.length){
7
+ case 1:
8
+ return { num: parseInt(parts[0]) };
9
+ break;
10
+ case 2:
11
+ return { num: parseInt(parts[0]), field: parts[1] };
12
+ break;
13
+ case 3:
14
+ return { num: parseInt(parts[0]) , field: parts[2], size: parseInt(parts[1]) };
15
+ break;
16
+ }
17
+ }
18
+
19
+ function format_page(num, size, field){
20
+ if ( undefined !== size) return "";
21
+
22
+ var parts = [num];
23
+ if ( undefined !== size) parts.push(size)
24
+ if ( undefined !== field) parts.push(field)
25
+
26
+ return parts.join("~")
27
+ }
28
+
29
+ $.widget("rbbt.table", {
30
+
31
+ options: {
32
+ ellipsis: 5,
33
+ },
34
+
35
+ _fix_long_table_cells: function(max){
36
+ var update = false;
37
+ $(this.element).find('td').each(function(){
38
+ update = contract_ellipsis($(this), max) || update;
39
+ });
40
+ if (update){
41
+ update_rbbt();
42
+ }
43
+ },
44
+
45
+
46
+
47
+ _update: function(url, num, size, field, filter, complete){
48
+ var table = this.element
49
+ var tool = this
50
+
51
+ url = add_parameter(url, '_page', escape(format_page(num, size, field)))
52
+ url = add_parameter(url, '_format', 'table')
53
+ if (undefined != filter){ url = add_parameter(url, '_filter', escape(filter)) }
54
+
55
+ replace_object(table, url, true, function(){
56
+ table.attr('attr-page', format_page(num, size, field)).attr('rbbt-update_tags','')
57
+ update_rbbt();
58
+ if (undefined === complete){
59
+ $.scrollTo(table.find('tfoot'), {axis : 'y', offset: {top: - window.innerHeight + 100 }});
60
+ }else{ complete() }
61
+ if (tool.options.ellipsis !== undefined){
62
+ tool._fix_long_table_cells(5);
63
+ }
64
+ });
65
+
66
+ },
67
+
68
+ _status: function(){
69
+ var table = this.element
70
+ var url = table.attr('attr-url')
71
+ var page = table.attr('attr-page')
72
+ var filter = table.attr('attr-filter')
73
+
74
+ var total = parseInt(table.attr('attr-total_size'))
75
+
76
+ var page_info = parse_page(page)
77
+ var num = parseInt(page_info["num"])
78
+ var size = parseInt(page_info["size"])
79
+ var field = page_info["field"]
80
+
81
+ if (isNaN(num)){ num = undefined}
82
+ if (isNaN(size)){ size = undefined}
83
+
84
+ var stat = {url: url, page: page, num: num, field: field, filter: filter, total: total, size: size};
85
+
86
+ return stat
87
+ },
88
+
89
+ _create: function() {
90
+ var tool = this;
91
+ var table = tool.element
92
+
93
+ if (!$(this.element).hasClass('.noellipsis')){
94
+ this._fix_long_table_cells(this.options.ellipsis);
95
+ }else{
96
+ this.options.ellipsis = false
97
+ }
98
+
99
+ //{{{ Pagination
100
+ //
101
+ table.on('click', 'tfoot > tr > th > ul.table_pagination > li.num > a:not(.active)', function(link){
102
+ var link = $(this)
103
+
104
+ var stat = tool._status()
105
+
106
+ tool._update(stat.url, link.html(), stat.size, stat.field, stat.filter)
107
+
108
+ return false
109
+ })
110
+
111
+ table.on('click', 'tfoot > tr > th > ul.table_pagination > li.arrow > a.prev', function(link){
112
+ var stat = tool._status()
113
+
114
+ if (stat.num > 1){ stat.num = stat.num - 1 }
115
+
116
+ tool._update(stat.url, stat.num, stat.size, stat.field, stat.filter)
117
+
118
+ return false
119
+ })
120
+
121
+ table.on('click', 'tfoot > tr > th > ul.table_pagination > li.arrow > a.next', function(link){
122
+ var stat = tool._status()
123
+
124
+ if (stat.num < stat.total + 1){ stat.num = stat.num + 1 }
125
+
126
+ tool._update(stat.url, stat.num, stat.size, stat.field, stat.filter)
127
+
128
+ return false
129
+ })
130
+
131
+ table.on('click', 'tfoot > tr > th > ul.table_pagination > li.all', function(link){
132
+ var stat = tool._status()
133
+
134
+ tool._update(stat.url, '', stat.size, stat.field, stat.filter)
135
+
136
+ return false
137
+ })
138
+
139
+ //{{{ Sorting
140
+ //
141
+ table.on('click', '> thead > tr > th', function(th){
142
+ var th = $(this)
143
+ var table = tool.element;
144
+
145
+ var direction
146
+
147
+ var stat = tool._status()
148
+
149
+ stat.field = th.html()
150
+ stat.num = 1
151
+
152
+ if (th.is('.headerSortDown')){
153
+ direction = 1;
154
+ }else{
155
+ direction = -1;
156
+ }
157
+
158
+ orig_field = stat.field
159
+ if (direction == -1){
160
+ stat.field = '-' + stat.field;
161
+ }else{
162
+ stat.field = stat.field;
163
+ }
164
+
165
+ tool._update(stat.url, stat.num, stat.size, stat.field, stat.filter, function(){
166
+ var th = table.find('thead > tr > th:contains(' + orig_field + ')')
167
+
168
+ if (direction == -1){
169
+ th.removeClass('headerSortUp');
170
+ th.addClass('headerSortDown');
171
+ }else{
172
+ th.removeClass('headerSortDown');
173
+ th.addClass('headerSortUp')
174
+ }
175
+ })
176
+ table.addClass('sorted')
177
+
178
+ return false
179
+ })
180
+
181
+ //{{{ Sorting
182
+ //
183
+ $('body').on('click', '.filter_controls form input[type=submit]', function(){
184
+ var submit = $(this);
185
+ var form = submit.parents('form')
186
+ var filter = ""
187
+
188
+ form.find('input').not('[type=submit]').each(function(){
189
+ var input = $(this)
190
+ var val = input.val()
191
+ var name = input.attr('name')
192
+
193
+ if (val != ""){
194
+ if (filter != ""){ filter += ";;"}
195
+ filter += name + "~" + val;
196
+ }
197
+ })
198
+
199
+ var modal = submit.closest('.modal')
200
+ var modal = $('#modal')
201
+ var source_id = modal.attr('attr-reveal_source_id')
202
+ var source = $('#' + source_id);
203
+ var table = source.parents('table').first();
204
+ var url = table.attr('attr-url')
205
+ var page = table.attr('attr-page')
206
+
207
+ url = add_parameter(url, '_page', "1")
208
+
209
+ if (undefined != filter){ url = add_parameter(url, '_filter', escape(filter)) }
210
+
211
+ url = add_parameter(url, '_format', 'table')
212
+
213
+ replace_object(table, url, true, function(){
214
+ table.attr('attr-page', "1").attr('attr-filter', filter).attr('rbbt-update_tags','')
215
+ update_rbbt();
216
+ $.scrollTo(table.find('tfoot'), {axis : 'y', offset: {top: - window.innerHeight + 100 }})
217
+ });
218
+
219
+ modal.modal('close')
220
+ return false
221
+ })
222
+
223
+ //{{{ Columns
224
+ //
225
+ $('body').on('click', 'a.save_column_list', function(){
226
+ var link = $(this);
227
+ var column = link.parent().find('span.field').html()
228
+
229
+
230
+ var modal = $('#modal')
231
+ var source_id = modal.attr('attr-reveal_source_id')
232
+ var source = $('#' + source_id);
233
+ var table = source.parents('table').first();
234
+
235
+ var url = table.attr('attr-url')
236
+ var page = table.attr('attr-page')
237
+ var filter = table.attr('attr-filter')
238
+
239
+ var page_info = parse_page(page)
240
+ var num = 'all'
241
+ var size = page_info["size"]
242
+ var field = page_info["field"]
243
+
244
+ url = add_parameter(url, '_page', escape(format_page(num, size, field)))
245
+ url = add_parameter(url, '_format', 'entities')
246
+ url = add_parameter(url, '_column', column)
247
+ if (undefined != filter){ url = add_parameter(url, '_filter', escape(filter)) }
248
+
249
+ modal.modal('show_url', url)
250
+ return false
251
+ });
252
+
253
+ $('body').on('click', 'a.save_column_map', function(){
254
+ var link = $(this);
255
+ var column = link.parent().find('span.field').html()
256
+
257
+
258
+ var modal = $('#modal')
259
+ var source_id = modal.attr('attr-reveal_source_id')
260
+ var source = $('#' + source_id);
261
+ var table = source.parents('table').first();
262
+
263
+ var url = table.attr('attr-url')
264
+ var page = table.attr('attr-page')
265
+ var filter = table.attr('attr-filter')
266
+
267
+ var page_info = parse_page(page)
268
+ var num = 'all'
269
+ var size = page_info["size"]
270
+ var field = page_info["field"]
271
+
272
+ url = add_parameter(url, '_page', escape(format_page(num, size, field)))
273
+ url = add_parameter(url, '_column', escape(column))
274
+ url = add_parameter(url, '_format', 'map')
275
+ if (undefined != filter){ url = add_parameter(url, '_filter', escape(filter)) }
276
+
277
+ modal.modal('show_url', url)
278
+ return false
279
+ });
280
+
281
+ },
282
+ })
283
+