rbbt-rest 1.3.32 → 1.4.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.
@@ -4,19 +4,18 @@
4
4
  =modal
5
5
  +rbbt_panel(#fff, #000)
6
6
  position: fixed
7
- left: 0
7
+ top: 0
8
8
  z-index: 20
9
9
 
10
10
  @media #{$not-large}
11
- top: $size_menu_item
12
- border: 10px solid rgba(0,0,0,0.3)
11
+ border: 5px solid rgba(0,0,0,0.3)
13
12
  @media #{$only-large}
14
- top: $size_menu_item
15
- border: 50px solid rgba(0,0,0,0.3)
16
- // or not...
17
- height: 100%
13
+ border: 5px solid rgba(0,0,0,0.3)
14
+
15
+ min-width: 70%
16
+ max-height: 90%
17
+ margin: 50px
18
18
  overflow: auto
19
- width: 100%
20
19
  & > .header
21
20
  font-size: 1.5em
22
21
  .controls
@@ -27,7 +26,7 @@
27
26
  float: left
28
27
 
29
28
  width: 100%
30
- +clearfix
29
+ +clear_fix
31
30
  border-bottom: 1px solid grey
32
31
  margin-bottom: $vindent
33
32
 
@@ -1,3 +1,45 @@
1
- .menu_item
2
- +_rbbt_menu_item
1
+ @import "compass/reset"
2
+ @import "compass/utilities"
3
+ @import "compass/typography/vertical_rhythm"
4
+ @import "compass/css3"
3
5
 
6
+ @import "fonts"
7
+
8
+ ul
9
+ margin: 0px
10
+ padding-left: 0
11
+
12
+ a
13
+ text-decoration: none
14
+ &[href]
15
+ &:not([href^=\/])
16
+ &:not([href^='#'])
17
+ &:after
18
+ content: '\2192'
19
+
20
+ body
21
+ +establish-baseline
22
+ +typeSize("base")
23
+ width: 99%
24
+
25
+ p
26
+ padding: 0.5em 0
27
+ h5, h6
28
+ +typeSize("large")
29
+
30
+ h3, h4
31
+ +typeSize("large")
32
+
33
+ h1, h2
34
+ +typeSize("xlarge")
35
+
36
+ h2, h3
37
+ +typeWeight("strong")
38
+
39
+ h1
40
+ +typeWeight("ultrastrong")
41
+
42
+ code
43
+ font-family: console
44
+ +typeWeight("strong")
45
+
@@ -14,15 +14,20 @@ $color_panel_bg: $color_main
14
14
  $color_menu_border: #494949
15
15
  $color_menu_text: #020202
16
16
 
17
+ =dark()
18
+ +rebase($base3,$base2,$base1,$base0,$base00,$base01,$base02,$base03)
19
+
20
+ =light()
21
+ +rebase($base03,$base02,$base01,$base00,$base0,$base1,$base2,$base3)
17
22
 
18
23
  .dark
19
- +rebase($base3,$base2,$base1,$base0,$base00,$base01,$base02,$base03)
24
+ +dark()
20
25
 
21
26
  .light
22
- +rebase($base03,$base02,$base01,$base00,$base0,$base1,$base2,$base3)
27
+ +light()
23
28
 
24
29
  body
25
- background-color: $base3
30
+ background-color: $color3
26
31
 
27
32
  html
28
33
  *
@@ -34,19 +39,19 @@ html
34
39
 
35
40
  //{{{ RBBT MENUS
36
41
 
37
- $color_top_menu: $base02
42
+ $color_top_menu: $color2
38
43
 
39
- $color_menu_bg: $base03
44
+ $color_menu_bg: $color1
40
45
  $color_menu_text: $base0
41
- $color_menu_item_bg: $base03
46
+ $color_menu_item_bg: $color1
42
47
  $color_menu_item_text: $base0
43
- $color_menu_content_bg: $base3
48
+ $color_menu_content_bg: $color3
44
49
  $color_menu_content_text: $base0
45
50
 
46
- $color_list_management_bg: $base02
51
+ $color_list_management_bg: $color2
47
52
  //{{{ RBBT PANEL
48
53
 
49
- $color_panel_bg: $base02
54
+ $color_panel_bg: $color2
50
55
  $color_panel_border: $base1
51
56
  $color_panel_text: $base0
52
57
 
@@ -8,10 +8,8 @@ $padding_top_menu: 5px
8
8
  @media print
9
9
  display: none
10
10
 
11
- @media #{$not-large}
12
- position: fixed
13
- @media #{$only-large}
14
- position: fixed
11
+ position: fixed
12
+
15
13
  top: 0
16
14
  width: 100%
17
15
  z-index: 30
@@ -25,7 +23,8 @@ $padding_top_menu: 5px
25
23
  & > ul
26
24
  +grid_row()
27
25
  +clean_list
28
- +clearfix
26
+ +clear_fix
27
+ overflow: show
29
28
 
30
29
  @media #{$only-large}
31
30
  & > li
@@ -1,5 +1,7 @@
1
- ul.tasks > li
2
- display: block !important
1
+ ul.tasks
2
+ margin-top: 2em
3
+ li
4
+ display: block !important
3
5
 
4
6
  .workflow_task
5
7
  +card
@@ -9,7 +11,7 @@ ul.tasks > li
9
11
 
10
12
  .description
11
13
  +grid_row
12
- +clearfix
14
+ +clear_fix
13
15
  .task_description
14
16
 
15
17
 
@@ -38,10 +40,10 @@ ul.tasks > li
38
40
  +rbbt_menu_item($color_bg: $base3, $color_menu_border: $base3)
39
41
 
40
42
  dd.job_control, dd.job_files
41
- +clearfix
43
+ +clear_fix
42
44
  ul
43
45
  +rbbt_button_list($color_bg: $color_menu_bg)
44
- +clearfix
46
+ +clear_fix
45
47
  background-color: $color_top_menu
46
48
  width: auto
47
49
  float: left
@@ -31,7 +31,7 @@
31
31
 
32
32
  = serve_js
33
33
 
34
- - %w(jquery-2.0.0 jquery.cookie jquery.form).each do |jquery_file|
34
+ - %w(jquery-2.1.1 jquery.cookie jquery.form).each do |jquery_file|
35
35
  - record_js File.join('/plugins/jquery/js/', jquery_file)
36
36
 
37
37
  - record_js '/plugins/jquery-ui/js/jquery-ui-1.8.14.custom.min.js'
@@ -46,7 +46,7 @@
46
46
  - %w(helpers _md5 _ajax_replace _ellipsis).each do |file|
47
47
  - record_js "/js-find/#{ file }"
48
48
 
49
- - %w(dom_update workflow menu fragment favourites page_type modal reveal actions table list map hide).each do |file|
49
+ - %w(dom_update workflow fragment menu favourites page_type modal reveal actions table list map hide).each do |file|
50
50
  - record_js "/js-find/rbbt/#{ file }"
51
51
 
52
52
  - record_js "/js-find/app"
@@ -63,8 +63,11 @@ function get_ajax(options, complete){
63
63
 
64
64
  if (undefined === complete){
65
65
  options.async = false
66
+ }else{
67
+ options.async = true
66
68
  }
67
69
 
70
+
68
71
  response = $.ajax(options)
69
72
 
70
73
  if (undefined !== response.responseJSON){
@@ -1,106 +1,117 @@
1
1
  //{{{ URL PARAMETER CONTROL
2
2
 
3
3
  function add_parameters(url, parameters){
4
- var string;
5
-
6
- if ( typeof(parameters) == 'string' || typeof(parameters) == 'String'){
7
- string = parameters;
8
- }else{
9
- var pairs = [];
10
- for (parameter in parameters){
11
- pairs.push(parameter + "=" + parameters[parameter]);
12
- }
13
- string = pairs.join("&");
4
+ var string;
5
+
6
+ if ( typeof(parameters) == 'string' || typeof(parameters) == 'String'){
7
+ string = parameters;
8
+ }else{
9
+ var pairs = [];
10
+ for (parameter in parameters){
11
+ pairs.push(parameter + "=" + parameters[parameter]);
14
12
  }
13
+ string = pairs.join("&");
14
+ }
15
15
 
16
- if (string.length == 0){return(url)}
16
+ if (string.length == 0){return(url)}
17
17
 
18
- if (url.indexOf('?') == -1){
19
- return url + '?' + string;
20
- }else{
21
- return url + '&' + string;
22
- }
18
+ if (url.indexOf('?') == -1){
19
+ return url + '?' + string;
20
+ }else{
21
+ return url + '&' + string;
22
+ }
23
23
  }
24
24
 
25
25
  function add_parameter(url, parameter, value){
26
- var url = remove_parameter(url, parameter)
27
- url = add_parameters(url, parameter + "=" + value)
28
- return url;
26
+ var url = remove_parameter(url, parameter)
27
+ url = add_parameters(url, parameter + "=" + value)
28
+ return url;
29
29
  }
30
30
 
31
31
  function remove_parameter(url, parameter){
32
- if (url.match("&" + parameter + "=")){
33
- return url.replace("&" + parameter + "=", '&REMOVE=').replace(/REMOVE=[^&]+/, '').replace(/\?&/, '?').replace(/&&/, '&').replace(/[?&]$/, '');
34
- }else{
35
- return url.replace("?" + parameter + "=", '?REMOVE=').replace(/REMOVE=[^&]+/, '').replace(/\?&/, '?').replace(/&&/, '&').replace(/[?&]$/, '');
36
- }
32
+ if (url.match("&" + parameter + "=")){
33
+ return url.replace("&" + parameter + "=", '&REMOVE=').replace(/REMOVE=[^&]+/, '').replace(/\?&/, '?').replace(/&&/, '&').replace(/[?&]$/, '');
34
+ }else{
35
+ return url.replace("?" + parameter + "=", '?REMOVE=').replace(/REMOVE=[^&]+/, '').replace(/\?&/, '?').replace(/&&/, '&').replace(/[?&]$/, '');
36
+ }
37
37
  }
38
38
 
39
39
  function clean_element(elem){
40
- return elem.replace(/\//g, '--').replace(/%/g,'o-o')
40
+ return elem.replace(/\//g, '--').replace(/%/g,'o-o')
41
41
  }
42
42
 
43
43
  function restore_element(elem){
44
- return unescape(elem.replace(/--/g, '/').replace(/o-o/g,'%'));
44
+ return unescape(elem.replace(/--/g, '/').replace(/o-o/g,'%'));
45
45
  }
46
46
 
47
47
  function parse_parameters(params){
48
- var ret = {},
49
- seg = params.replace(/^\?/,'').split('&'),
50
- len = seg.length, i = 0, s;
51
- for (;i<len;i++) {
52
- if (!seg[i]) { continue; }
53
- s = seg[i].split('=');
54
- ret[s[0]] = restore_element(s[1]);
55
- }
56
- return ret
48
+ var ret = {},
49
+ seg = params.replace(/^\?/,'').split('&'),
50
+ len = seg.length, i = 0, s;
51
+ for (;i<len;i++) {
52
+ if (!seg[i]) { continue; }
53
+ s = seg[i].split('=');
54
+ ret[s[0]] = restore_element(s[1]);
55
+ }
56
+ return ret
57
57
  }
58
58
 
59
59
  function require_js(url, success){
60
- var async = false;
60
+ if (typeof url == 'object'){
61
+ if (url.length > 1){
62
+ var u = url.shift()
63
+ require_js(u, function(){
64
+ require_js(url, success);
65
+ })
66
+ return true
67
+ }else{
68
+ return require_js(url.shift(), success);
69
+ }
70
+ }else{
71
+ var async = true;
61
72
  var cache = production;
73
+
62
74
  if (undefined === success){
63
- async = false;
75
+ async = false;
64
76
  }else{
65
- async = true;
77
+ async = true;
66
78
  }
67
79
 
68
80
  url = url.replace('/js/', '/js-find/')
69
- $.ajax({url: url, cache:cache, dataType:'script', async: async, success: success} ).fail(function(jqxhr, settings, exception){
70
- })
81
+ $.ajax({url: url, cache:cache, dataType:'script', async: async, success: success} ).fail(function(jqxhr, settings, exception){ })
82
+ }
71
83
  }
72
84
 
73
85
  function remove_from_array(array, elem){
74
- return jQuery.grep(array, function(value) {
75
- return value != elem;
76
- });
86
+ return jQuery.grep(array, function(value) {
87
+ return value != elem;
88
+ });
77
89
  }
78
90
 
79
91
  function array_values(hash){
80
- var tmp_arr = [], key = '';
81
- for (key in hash) {
82
- tmp_arr[tmp_arr.length] = hash[key];
83
- }
92
+ var tmp_arr = [], key = '';
93
+ for (key in hash) {
94
+ tmp_arr[tmp_arr.length] = hash[key];
95
+ }
84
96
 
85
- return tmp_arr;
97
+ return tmp_arr;
86
98
  }
87
99
 
88
100
  function clean_attr(text){
89
- //return escape(text).replace(/\%/g, '\\%').replace(/\//g, '\\/').replace(/\./g, '\\.')
90
- return encodeURIComponent(text)//.replace(/[^\w-_]/g, function(s){return '\\' + s})
101
+ return encodeURIComponent(text)
91
102
  }
92
103
 
93
104
  function uniq(ary) {
94
- var seen = {};
95
- return ary.filter(function(elem) {
96
- var k = elem;
97
- return (seen[k] === 1) ? 0 : seen[k] = 1;
98
- })
105
+ var seen = {};
106
+ return ary.filter(function(elem) {
107
+ var k = elem;
108
+ return (seen[k] === 1) ? 0 : seen[k] = 1;
109
+ })
99
110
  }
100
111
  function uniqBy(ary, key) {
101
- var seen = {};
102
- return ary.filter(function(elem) {
103
- var k = key(elem);
104
- return (seen[k] === 1) ? 0 : seen[k] = 1;
105
- })
112
+ var seen = {};
113
+ return ary.filter(function(elem) {
114
+ var k = key(elem);
115
+ return (seen[k] === 1) ? 0 : seen[k] = 1;
116
+ })
106
117
  }
@@ -1,424 +1,424 @@
1
1
 
2
2
  function get_favourite_entities(complete){
3
- return get_ajax({url: '/favourite_entities', async: false, cache: false}, complete)
3
+ return get_ajax({url: '/favourite_entities', async: true, cache: false}, complete)
4
4
  }
5
5
 
6
6
  function get_favourite_entity_lists(complete){
7
- return get_ajax({url: '/favourite_entity_lists', async: false, cache: false}, complete)
7
+ return get_ajax({url: '/favourite_entity_lists', async: true, cache: false}, complete)
8
8
  }
9
9
 
10
10
  function get_favourite_entity_maps(complete){
11
- return get_ajax({url: '/favourite_entity_maps', async: false, cache: false}, complete)
11
+ return get_ajax({url: '/favourite_entity_maps', async: true, cache: false}, complete)
12
12
  }
13
13
 
14
14
  //{{{{ FAVOURITE MENUS
15
15
 
16
16
  function favourite_type_ul(entities){
17
- var type_ul = $('<ul>').addClass('entities')
18
- for (var entity in entities){
19
- var entity_hash = entities[entity];
20
- var link = entity_hash["link"];
21
- var entity_li = $('<li>');
22
- entity_li.append(link);
23
- type_ul.append(entity_li);
24
- }
25
- return type_ul
17
+ var type_ul = $('<ul>').addClass('entities')
18
+ for (var entity in entities){
19
+ var entity_hash = entities[entity];
20
+ var link = entity_hash["link"];
21
+ var entity_li = $('<li>');
22
+ entity_li.append(link);
23
+ type_ul.append(entity_li);
24
+ }
25
+ return type_ul
26
26
  }
27
27
 
28
28
  function favourite_list_type_ul(type, lists){
29
- var type_ul = $('<ul>').addClass('lists')
30
- for (var list in lists){
31
- var list = lists[list];
32
- var link = list_link(type, list)
33
- var entity_li = $('<li>');
34
- entity_li.html(link);
35
- type_ul.append(entity_li);
36
- }
37
- return type_ul
29
+ var type_ul = $('<ul>').addClass('lists')
30
+ for (var list in lists){
31
+ var list = lists[list];
32
+ var link = list_link(type, list)
33
+ var entity_li = $('<li>');
34
+ entity_li.html(link);
35
+ type_ul.append(entity_li);
36
+ }
37
+ return type_ul
38
38
  }
39
39
 
40
40
  function favourite_map_type_ul(type, column, maps){
41
- var type_ul = $('<ul>').addClass('maps')
42
- for (var map in maps){
43
- var map = maps[map];
44
- var link = map_link(type, column, map)
45
- var entity_li = $('<li>');
46
- entity_li.html(link);
47
- type_ul.append(entity_li);
48
- }
49
- return type_ul
41
+ var type_ul = $('<ul>').addClass('maps')
42
+ for (var map in maps){
43
+ var map = maps[map];
44
+ var link = map_link(type, column, map)
45
+ var entity_li = $('<li>');
46
+ entity_li.html(link);
47
+ type_ul.append(entity_li);
48
+ }
49
+ return type_ul
50
50
  }
51
51
 
52
52
  $.widget("rbbt.favourites", {
53
- options: {
54
- entities: {},
55
- lists: {},
56
- maps: {}
57
- },
58
-
59
- _create: function() {
60
- this.update();
61
- var tool = this;
62
- this.element.on('click', 'dt.star', function(){
63
- tool.toggle()
64
- return false
65
- })
66
- this.element.on('click', 'a.remove_element', function(){
67
- tool._remove_element($(this).siblings('a.entity, a.entity_list, a.entity_map'))
68
- })
69
- },
70
-
71
- _menu: function(){
72
- return(this.element)
73
- },
74
-
75
- _sync: function(){
76
- var tool = this
77
-
78
- get_favourite_entities(function(entities){
79
- tool.options.entities = entities;
80
- tool._update_entities()
81
- tool._update_star()
82
- })
83
-
84
- get_favourite_entity_lists(function(lists){
85
- tool.options.lists = lists;
86
- tool._update_lists()
87
- tool._update_star()
88
- })
89
-
90
-
91
- get_favourite_entity_maps(function(maps){
92
- tool.options.maps = maps;
93
- tool._update_maps()
94
- tool._update_star()
95
- })
96
- },
97
-
98
- //{{{ REMOVE ELEMENT
99
- //----------
100
-
101
- _remove_element: function(link){
102
- var item = link.parent('li');
103
- var ul = item.parent('ul');
104
- var type = ul.attr('class');
105
- var dt = ul.parent('dd').prev('dt');
106
- var element = link.attr('title');
107
- var entity_type = dt.attr('entity_type');
108
- var entity_column = dt.attr('entity_column');
109
- var url;
110
- var tool = this;
111
-
112
- switch(type){
113
- case "entities":
114
- method = "/remove_favourite_entity/";
115
- element = link.attr('attr-entity_id')
116
- url = method + clean_element(entity_type) + "/" + element;
117
- break;
118
-
119
- case "lists":
120
- method = "/remove_favourite_entity_list/";
121
- url = method + clean_element(entity_type) + "/" + clean_element(element);
122
- break;
123
-
124
- case "maps":
125
- method = "/remove_favourite_entity_map/";
126
- url = method + clean_element(entity_type) + "/" + clean_element(entity_column) + "/" + clean_element(element);
127
- break;
128
- };
129
-
130
- $.ajax({url: url, type: 'POST', success: function (){ tool.update()}})
131
- },
132
-
133
- _add_destructors: function(list){
134
- var icon = $('<i class="general fi-minus">')
135
- var remove = $('<a class=remove_element></a>').append(icon)
136
- list.find('li').prepend(remove)
137
- },
138
-
139
-
140
- //{{{ TOGGLE PAGE STAR
141
- //----------
142
-
143
- _update_star: function(){
144
- if (this.is_favourite() == true){
145
- this.element.find('dt.star').addClass('active');
146
- }else{
147
- this.element.find('dt.star').removeClass('active');
148
- }
149
- },
150
- _toggle_page: function(){
151
- this.toggle_page(undefined)
152
- },
153
-
154
- toggle: function(){
155
- this._toggle_page();
156
- },
157
-
158
- //{{{ UPDATE
159
- //----------
160
-
161
- _update_entities: function(){
162
- var menu = this._menu()
163
- menu.find('ul.entities').addClass('remove');
164
-
165
- var entities = menu.find('dt.entities').next('dd').find('> dl')
166
- for(type in this.options.entities){
167
- var ul = favourite_type_ul(this.options.entities[type]);
168
- this._add_destructors(ul)
169
- var dt = entities.find('dt[entity_type=' + clean_attr(type) + ']')
170
-
171
- if (dt.length == 0){
172
- var dt = $('<dt>').html(type).addClass('next').addClass('type').attr('entity_type', type);
173
- var dd = $('<dd>').append(ul);
174
- entities.append(dt).append(dd);
175
- update_rbbt();
176
- }else{
177
- if (dt.next('dd').find('ul.entities').length == 0){
178
- dt.next('dd').append(ul);
179
- }else{
180
- dt.next('dd').find('ul.entities').replaceWith(ul);
181
- }
182
- }
183
-
184
- menu.find('dt[entity_type=' + clean_attr(type) + ']').next('dd').find('ul.entities').replaceWith(ul);
185
- }
186
- menu.find('ul.entities.remove').remove()
187
- },
188
-
189
- _update_lists: function(){
190
- var menu = this._menu()
191
- menu.find('ul.lists').addClass('remove');
192
-
193
- var lists = menu.find('dt.lists').next('dd').find('> dl')
194
- for(type in this.options.lists){
195
- var ul = favourite_list_type_ul(type, this.options.lists[type])
196
- this._add_destructors(ul)
197
- var dt = lists.find('dt[entity_type=' + clean_attr(type) + ']');
198
-
199
- if (dt.length == 0){
200
- var dt = $('<dt>').html(type).addClass('next').addClass('type').attr('entity_type', type);
201
- var dd = $('<dd>').append(ul);
202
- lists.append(dt).append(dd);
203
- update_rbbt();
204
- }else{
205
- if (dt.next('dd').find('ul.lists').length == 0){
206
- dt.next('dd').append(ul);
207
- }else{
208
- dt.next('dd').find('ul.lists').replaceWith(ul);
209
- }
210
- }
211
- }
212
- menu.find('ul.lists.remove').remove();
213
- },
214
-
215
- _update_maps: function(){
216
- var menu = this._menu()
217
- menu.find('ul.maps').addClass('remove')
218
-
219
- var maps = menu.find('dt.maps').next('dd').find('> dl')
220
- for(type in this.options.maps){
221
- for(column in this.options.maps[type]){
222
- var ul = favourite_map_type_ul(type, column, this.options.maps[type][column]);
223
- this._add_destructors(ul)
224
- var dt = maps.find('dt[entity_type=\'' + clean_attr(type) + '\'][entity_column=\'' + clean_attr(column) + '\']');
225
-
226
- if (dt.length == 0){
227
- var dt = $('<dt>').html(type + ' - ' + column).addClass('next').addClass('type').attr('entity_type', clean_attr(type)).attr('entity_column', clean_attr(column));
228
- var dd = $('<dd>').append(ul);
229
- maps.append(dt).append(dd);
230
- update_rbbt();
231
- }else{
232
- if (dt.next('dd').find('ul.maps').length == 0){
233
- dt.next('dd').append(ul);
234
- }else{
235
- dt.next('dd').find('ul.maps').replaceWith(ul);
236
- }
237
- }
238
- }
239
- }
240
- menu.find('ul.maps.remove').remove()
241
- },
242
-
243
-
244
- //{{{ SELECTS
245
- //
246
- _update_list_select: function(select, type, lists){
247
- if (select.attr('attr-allow-empty') == 'true'){
248
- var option = $('<option value="none" class="loaded">none</option>')
249
- select.append(option);
250
- }
251
-
252
- var selected = null;
253
-
254
- if (select.attr('attr-selected') != undefined ){
255
- selected = select.attr('attr-selected');
256
- }
257
-
258
- $.each(lists, function(name, elems){
259
- var option = null;
260
- var name = elems
261
- if (selected == null || name != selected){
262
- option = $('<option attr-entity_type="' + type + '" class="automatic_load" value="' + name + '">' + name + '</option>');
263
- }else{
264
- option = $('<option attr-entity_type="' + type + '" class="automatic_load" selected=selected value="' + name + '">' + name + '</option>');
53
+ options: {
54
+ entities: {},
55
+ lists: {},
56
+ maps: {}
57
+ },
58
+
59
+ _create: function() {
60
+ this.update();
61
+ var tool = this;
62
+ this.element.on('click', 'dt.star', function(){
63
+ tool.toggle()
64
+ return false
65
+ })
66
+ this.element.on('click', 'a.remove_element', function(){
67
+ tool._remove_element($(this).siblings('a.entity, a.entity_list, a.entity_map'))
68
+ })
69
+ },
70
+
71
+ _menu: function(){
72
+ return(this.element)
73
+ },
74
+
75
+ _sync: function(){
76
+ var tool = this
77
+
78
+ get_favourite_entities(function(entities){
79
+ tool.options.entities = entities;
80
+ tool._update_entities()
81
+ tool._update_star()
82
+ })
83
+
84
+ get_favourite_entity_lists(function(lists){
85
+ tool.options.lists = lists;
86
+ tool._update_lists()
87
+ tool._update_star()
88
+ })
89
+
90
+
91
+ get_favourite_entity_maps(function(maps){
92
+ tool.options.maps = maps;
93
+ tool._update_maps()
94
+ tool._update_star()
95
+ })
96
+ },
97
+
98
+ //{{{ REMOVE ELEMENT
99
+ //----------
100
+
101
+ _remove_element: function(link){
102
+ var item = link.parent('li');
103
+ var ul = item.parent('ul');
104
+ var type = ul.attr('class');
105
+ var dt = ul.parent('dd').prev('dt');
106
+ var element = link.attr('title');
107
+ var entity_type = dt.attr('entity_type');
108
+ var entity_column = dt.attr('entity_column');
109
+ var url;
110
+ var tool = this;
111
+
112
+ switch(type){
113
+ case "entities":
114
+ method = "/remove_favourite_entity/";
115
+ element = link.attr('attr-entity_id')
116
+ url = method + clean_element(entity_type) + "/" + element;
117
+ break;
118
+
119
+ case "lists":
120
+ method = "/remove_favourite_entity_list/";
121
+ url = method + clean_element(entity_type) + "/" + clean_element(element);
122
+ break;
123
+
124
+ case "maps":
125
+ method = "/remove_favourite_entity_map/";
126
+ url = method + clean_element(entity_type) + "/" + clean_element(entity_column) + "/" + clean_element(element);
127
+ break;
128
+ };
129
+
130
+ $.ajax({url: url, type: 'POST', success: function (){ tool.update()}})
131
+ },
132
+
133
+ _add_destructors: function(list){
134
+ var icon = $('<i class="general fi-minus">')
135
+ var remove = $('<a class=remove_element></a>').append(icon)
136
+ list.find('li').prepend(remove)
137
+ },
138
+
139
+
140
+ //{{{ TOGGLE PAGE STAR
141
+ //----------
142
+
143
+ _update_star: function(){
144
+ if (this.is_favourite() == true){
145
+ this.element.find('dt.star').addClass('active');
146
+ }else{
147
+ this.element.find('dt.star').removeClass('active');
148
+ }
149
+ },
150
+ _toggle_page: function(){
151
+ this.toggle_page(undefined)
152
+ },
153
+
154
+ toggle: function(){
155
+ this._toggle_page();
156
+ },
157
+
158
+ //{{{ UPDATE
159
+ //----------
160
+
161
+ _update_entities: function(){
162
+ var menu = this._menu()
163
+ menu.find('ul.entities').addClass('remove');
164
+
165
+ var entities = menu.find('dt.entities').next('dd').find('> dl')
166
+ for(type in this.options.entities){
167
+ var ul = favourite_type_ul(this.options.entities[type]);
168
+ this._add_destructors(ul)
169
+ var dt = entities.find('dt[entity_type=' + clean_attr(type) + ']')
170
+
171
+ if (dt.length == 0){
172
+ var dt = $('<dt>').html(type).addClass('next').addClass('type').attr('entity_type', type);
173
+ var dd = $('<dd>').append(ul);
174
+ entities.append(dt).append(dd);
175
+ update_rbbt();
176
+ }else{
177
+ if (dt.next('dd').find('ul.entities').length == 0){
178
+ dt.next('dd').append(ul);
179
+ }else{
180
+ dt.next('dd').find('ul.entities').replaceWith(ul);
181
+ }
182
+ }
183
+
184
+ menu.find('dt[entity_type=' + clean_attr(type) + ']').next('dd').find('ul.entities').replaceWith(ul);
185
+ }
186
+ menu.find('ul.entities.remove').remove()
187
+ },
188
+
189
+ _update_lists: function(){
190
+ var menu = this._menu()
191
+ menu.find('ul.lists').addClass('remove');
192
+
193
+ var lists = menu.find('dt.lists').next('dd').find('> dl')
194
+ for(type in this.options.lists){
195
+ var ul = favourite_list_type_ul(type, this.options.lists[type])
196
+ this._add_destructors(ul)
197
+ var dt = lists.find('dt[entity_type=' + clean_attr(type) + ']');
198
+
199
+ if (dt.length == 0){
200
+ var dt = $('<dt>').html(type).addClass('next').addClass('type').attr('entity_type', type);
201
+ var dd = $('<dd>').append(ul);
202
+ lists.append(dt).append(dd);
203
+ update_rbbt();
204
+ }else{
205
+ if (dt.next('dd').find('ul.lists').length == 0){
206
+ dt.next('dd').append(ul);
207
+ }else{
208
+ dt.next('dd').find('ul.lists').replaceWith(ul);
209
+ }
210
+ }
211
+ }
212
+ menu.find('ul.lists.remove').remove();
213
+ },
214
+
215
+ _update_maps: function(){
216
+ var menu = this._menu()
217
+ menu.find('ul.maps').addClass('remove')
218
+
219
+ var maps = menu.find('dt.maps').next('dd').find('> dl')
220
+ for(type in this.options.maps){
221
+ for(column in this.options.maps[type]){
222
+ var ul = favourite_map_type_ul(type, column, this.options.maps[type][column]);
223
+ this._add_destructors(ul)
224
+ var dt = maps.find('dt[entity_type=\'' + clean_attr(type) + '\'][entity_column=\'' + clean_attr(column) + '\']');
225
+
226
+ if (dt.length == 0){
227
+ var dt = $('<dt>').html(type + ' - ' + column).addClass('next').addClass('type').attr('entity_type', clean_attr(type)).attr('entity_column', clean_attr(column));
228
+ var dd = $('<dd>').append(ul);
229
+ maps.append(dt).append(dd);
230
+ update_rbbt();
231
+ }else{
232
+ if (dt.next('dd').find('ul.maps').length == 0){
233
+ dt.next('dd').append(ul);
234
+ }else{
235
+ dt.next('dd').find('ul.maps').replaceWith(ul);
236
+ }
237
+ }
238
+ }
239
+ }
240
+ menu.find('ul.maps.remove').remove()
241
+ },
242
+
243
+
244
+ //{{{ SELECTS
245
+ //
246
+ _update_list_select: function(select, type, lists){
247
+ if (select.attr('attr-allow-empty') == 'true'){
248
+ var option = $('<option value="none" class="loaded">none</option>')
249
+ select.append(option);
250
+ }
251
+
252
+ var selected = null;
253
+
254
+ if (select.attr('attr-selected') != undefined ){
255
+ selected = select.attr('attr-selected');
256
+ }
257
+
258
+ $.each(lists, function(name, elems){
259
+ var option = null;
260
+ var name = elems
261
+ if (selected == null || name != selected){
262
+ option = $('<option attr-entity_type="' + type + '" class="automatic_load" value="' + name + '">' + name + '</option>');
263
+ }else{
264
+ option = $('<option attr-entity_type="' + type + '" class="automatic_load" selected=selected value="' + name + '">' + name + '</option>');
265
+ }
266
+ select.append(option);
267
+ return true
268
+ })
269
+ },
270
+
271
+ _update_map_select: function(select, type, map_lists){
272
+ if (select.attr('attr-allow-empty') == 'true'){
273
+ var option = $('<option value="none" class="loaded">none</option>');
274
+ select.append(option);
275
+ }
276
+
277
+ var selected = null;
278
+
279
+ if (select.attr('attr-selected') != undefined ){
280
+ selected = select.attr('attr-selected');
281
+ }
282
+
283
+ for (column in map_lists){
284
+ var maps = map_lists[column];
285
+ if (undefined === select.attr('column') || select.attr('column') == column){
286
+ $.each(maps, function(name, elems){
287
+ var option = null;
288
+ var name = elems
289
+ if (selected == null || name != selected){
290
+ option = $('<option class="automatic_load" attr-entity_type="' + clean_attr(type) + '" attr-column="'+ clean_attr(column) + '" value="' + name + '">' + name + '</option>');
291
+ }else{
292
+ option = $('<option class="automatic_load" attr-entity_type="' + clean_attr(type) + '" attr-column="'+ clean_attr(column) + '" selected=selected value="' + name + '">' + name + '</option>');
293
+ }
294
+ select.append(option);
295
+ return true
296
+ })
297
+ }
298
+ }
299
+ },
300
+
301
+ //{{{ UPDATES
302
+ //
303
+ update_list_selects: function(){
304
+ var tool = this;
305
+ $('select.favourite_lists').find('option.automatic_load').remove()
306
+
307
+ $.each(this.options.lists, function(type, lists){
308
+ $('select.favourite_lists[type=' + type + ']').each(function(){
309
+ var select = $(this);
310
+ tool._update_list_select(select, type, lists);
311
+ })
312
+ $('select.favourite_lists[type=All]').each(function(){
313
+ var select = $(this);
314
+ select.append($('<option class="automatic_load" disabled>'+ type +'</option>'));
315
+ tool._update_list_select(select, type, lists);
316
+ })
317
+ });
318
+ },
319
+
320
+ update_map_selects: function(){
321
+ var tool = this;
322
+ $('select.favourite_maps').find('option.automatic_load').remove()
323
+
324
+ $.each(this.options.maps, function(type, maps){
325
+ $('select.favourite_maps[type=' + type + ']').each(function(){
326
+ var select = $(this);
327
+ tool._update_map_select(select, type, maps);
328
+ })
329
+ $('select.favourite_maps[type=All]').each(function(){
330
+ var select = $(this);
331
+ select.append($('<option class="automatic_load" disabled>'+ type +'</option>'));
332
+ tool._update_map_select(select, type, maps);
333
+ })
334
+ });
335
+ },
336
+
337
+ close: function(){
338
+ this.element.find('.show').removeClass('show')
339
+ },
340
+
341
+ is_favourite: function(path){
342
+ var type = page_type(path);
343
+
344
+ switch(type){
345
+
346
+ case "entity":
347
+ var entity = page_entity(path);
348
+ var entity_type = page_entity_base_type(path);
349
+ return this.options.entities[entity_type] !== undefined && this.options.entities[entity_type][entity] !== undefined
350
+
351
+ case "entity_list":
352
+ var list = page_entity_list(path);
353
+ var entity_type = page_entity_base_type(path);
354
+ return this.options.lists[entity_type] !== undefined && _.indexOf(this.options.lists[entity_type], list) !== -1
355
+
356
+ case "entity_map":
357
+ var map = page_entity_map(path);
358
+ var entity_type = page_entity_base_type(path);
359
+ var entity_column = page_entity_map_column(path);
360
+ return this.options.maps[entity_type] !== undefined && this.options.maps[entity_type][entity_column] !== undefined && _.indexOf(this.options.maps[entity_type][entity_column], map) !== -1
361
+ }
362
+
363
+ return false
364
+ },
365
+
366
+ toggle_page: function(path){
367
+ var type = page_type(path);
368
+ var tool = this
369
+ switch(type){
370
+
371
+ case "entity":
372
+ var entity = page_entity(path);
373
+ var entity_type = page_entity_type(path);
374
+ var entity_info = page_entity_info(path);
375
+
376
+ if (this.is_favourite(path)){
377
+ method = "/remove_favourite_entity/";
378
+ }else{
379
+ method = "/add_favourite_entity/";
380
+ }
381
+ var url = method + clean_element(entity_type) + "/" + entity;
382
+ $.ajax({url: url, type: 'POST', data: entity_info, success: function (){ tool.update()}})
383
+ break;
384
+
385
+ case "entity_list":
386
+ var list = page_entity_list(path);
387
+ var entity_type = page_entity_type(path);
388
+ if (this.is_favourite(path)){
389
+ method = "/remove_favourite_entity_list/";
390
+ }else{
391
+ method = "/add_favourite_entity_list/";
392
+ }
393
+ var url = method + clean_element(entity_type) + "/" + clean_element(list);
394
+ $.ajax({url: url, type: 'POST', success: function (){ tool.update() }})
395
+ break;
396
+
397
+ case "entity_map":
398
+ var map = page_entity_map(path);
399
+ var entity_type = page_entity_type(path);
400
+ var entity_column = page_entity_map_column(path);
401
+ if (this.is_favourite(path)){
402
+ method = "/remove_favourite_entity_map/";
403
+ }else{
404
+ method = "/add_favourite_entity_map/";
405
+ }
406
+ var url = method + clean_element(entity_type) + "/" + clean_element(entity_column) + "/" + clean_element(map);
407
+ $.ajax({url: url, type: 'POST', success: function (){ tool.update()}})
408
+ break;
409
+ }
410
+ },
411
+
412
+
413
+ update: function(){
414
+ this._sync()
415
+ //this._update_entities()
416
+ //this._update_lists()
417
+ //this._update_maps()
418
+ //this._update_star()
419
+ //this._add_destructors()
420
+ $('#modal.url.entity').modal('update_star')
265
421
  }
266
- select.append(option);
267
- return true
268
- })
269
- },
270
-
271
- _update_map_select: function(select, type, map_lists){
272
- if (select.attr('attr-allow-empty') == 'true'){
273
- var option = $('<option value="none" class="loaded">none</option>');
274
- select.append(option);
275
- }
276
-
277
- var selected = null;
278
-
279
- if (select.attr('attr-selected') != undefined ){
280
- selected = select.attr('attr-selected');
281
- }
282
-
283
- for (column in map_lists){
284
- var maps = map_lists[column];
285
- if (undefined === select.attr('column') || select.attr('column') == column){
286
- $.each(maps, function(name, elems){
287
- var option = null;
288
- var name = elems
289
- if (selected == null || name != selected){
290
- option = $('<option class="automatic_load" attr-entity_type="' + clean_attr(type) + '" attr-column="'+ clean_attr(column) + '" value="' + name + '">' + name + '</option>');
291
- }else{
292
- option = $('<option class="automatic_load" attr-entity_type="' + clean_attr(type) + '" attr-column="'+ clean_attr(column) + '" selected=selected value="' + name + '">' + name + '</option>');
293
- }
294
- select.append(option);
295
- return true
296
- })
297
- }
298
- }
299
- },
300
-
301
- //{{{ UPDATES
302
- //
303
- update_list_selects: function(){
304
- var tool = this;
305
- $('select.favourite_lists').find('option.automatic_load').remove()
306
-
307
- $.each(this.options.lists, function(type, lists){
308
- $('select.favourite_lists[type=' + type + ']').each(function(){
309
- var select = $(this);
310
- tool._update_list_select(select, type, lists);
311
- })
312
- $('select.favourite_lists[type=All]').each(function(){
313
- var select = $(this);
314
- select.append($('<option class="automatic_load" disabled>'+ type +'</option>'));
315
- tool._update_list_select(select, type, lists);
316
- })
317
- });
318
- },
319
-
320
- update_map_selects: function(){
321
- var tool = this;
322
- $('select.favourite_maps').find('option.automatic_load').remove()
323
-
324
- $.each(this.options.maps, function(type, maps){
325
- $('select.favourite_maps[type=' + type + ']').each(function(){
326
- var select = $(this);
327
- tool._update_map_select(select, type, maps);
328
- })
329
- $('select.favourite_maps[type=All]').each(function(){
330
- var select = $(this);
331
- select.append($('<option class="automatic_load" disabled>'+ type +'</option>'));
332
- tool._update_map_select(select, type, maps);
333
- })
334
- });
335
- },
336
-
337
- close: function(){
338
- this.element.find('.show').removeClass('show')
339
- },
340
-
341
- is_favourite: function(path){
342
- var type = page_type(path);
343
-
344
- switch(type){
345
-
346
- case "entity":
347
- var entity = page_entity(path);
348
- var entity_type = page_entity_base_type(path);
349
- return this.options.entities[entity_type] !== undefined && this.options.entities[entity_type][entity] !== undefined
350
-
351
- case "entity_list":
352
- var list = page_entity_list(path);
353
- var entity_type = page_entity_base_type(path);
354
- return this.options.lists[entity_type] !== undefined && _.indexOf(this.options.lists[entity_type], list) !== -1
355
-
356
- case "entity_map":
357
- var map = page_entity_map(path);
358
- var entity_type = page_entity_base_type(path);
359
- var entity_column = page_entity_map_column(path);
360
- return this.options.maps[entity_type] !== undefined && this.options.maps[entity_type][entity_column] !== undefined && _.indexOf(this.options.maps[entity_type][entity_column], map) !== -1
361
- }
362
-
363
- return false
364
- },
365
-
366
- toggle_page: function(path){
367
- var type = page_type(path);
368
- var tool = this
369
- switch(type){
370
-
371
- case "entity":
372
- var entity = page_entity(path);
373
- var entity_type = page_entity_type(path);
374
- var entity_info = page_entity_info(path);
375
-
376
- if (this.is_favourite(path)){
377
- method = "/remove_favourite_entity/";
378
- }else{
379
- method = "/add_favourite_entity/";
380
- }
381
- var url = method + clean_element(entity_type) + "/" + entity;
382
- $.ajax({url: url, type: 'POST', data: entity_info, success: function (){ tool.update()}})
383
- break;
384
-
385
- case "entity_list":
386
- var list = page_entity_list(path);
387
- var entity_type = page_entity_type(path);
388
- if (this.is_favourite(path)){
389
- method = "/remove_favourite_entity_list/";
390
- }else{
391
- method = "/add_favourite_entity_list/";
392
- }
393
- var url = method + clean_element(entity_type) + "/" + clean_element(list);
394
- $.ajax({url: url, type: 'POST', success: function (){ tool.update() }})
395
- break;
396
-
397
- case "entity_map":
398
- var map = page_entity_map(path);
399
- var entity_type = page_entity_type(path);
400
- var entity_column = page_entity_map_column(path);
401
- if (this.is_favourite(path)){
402
- method = "/remove_favourite_entity_map/";
403
- }else{
404
- method = "/add_favourite_entity_map/";
405
- }
406
- var url = method + clean_element(entity_type) + "/" + clean_element(entity_column) + "/" + clean_element(map);
407
- $.ajax({url: url, type: 'POST', success: function (){ tool.update()}})
408
- break;
409
- }
410
- },
411
-
412
-
413
- update: function(){
414
- this._sync()
415
- //this._update_entities()
416
- //this._update_lists()
417
- //this._update_maps()
418
- //this._update_star()
419
- //this._add_destructors()
420
- $('#modal.url.entity').modal('update_star')
421
- }
422
422
 
423
423
  })
424
424