flammarion 0.0.11 → 0.0.12

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.
@@ -110,28 +110,41 @@ void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?voi
110
110
  };
111
111
 
112
112
  WSClient.prototype.resize_panes = function(data) {
113
- var allPanes, height, i, len, orientation, pane, results, target;
113
+ var allPanes, i, j, len, orientation, p_height, pane, results, target, total_weight;
114
114
  if (data.target) {
115
115
  target = this.check_target(data);
116
116
  } else {
117
117
  target = $('#panes');
118
118
  }
119
119
  allPanes = target.find('> .pane');
120
- height = (100.0 / allPanes.size()).toFixed(0) + "%";
121
120
  if (target.hasClass('horizontal')) {
122
121
  orientation = 'horizontal';
123
122
  } else {
124
123
  orientation = 'vertical';
125
124
  }
126
- console.log(target, allPanes.size(), 100.0 / allPanes.size(), height, orientation);
125
+ total_weight = ((function() {
126
+ var j, len, results;
127
+ results = [];
128
+ for (j = 0, len = allPanes.length; j < len; j++) {
129
+ i = allPanes[j];
130
+ results.push(parseFloat($(i).attr('pane-weight') || 1.0));
131
+ }
132
+ return results;
133
+ })()).reduce(function(t, s) {
134
+ return t + s;
135
+ });
136
+ p_height = function(pane) {
137
+ return (parseFloat($(pane).attr('pane-weight') || 1.0) / total_weight * 100).toFixed(0) + "%";
138
+ };
139
+ console.log(target, allPanes.size(), 100.0 / allPanes.size(), total_weight, orientation);
127
140
  results = [];
128
- for (i = 0, len = allPanes.length; i < len; i++) {
129
- pane = allPanes[i];
141
+ for (j = 0, len = allPanes.length; j < len; j++) {
142
+ pane = allPanes[j];
130
143
  if (orientation === 'horizontal') {
131
- $(pane).css("width", height);
144
+ $(pane).css("width", p_height(pane));
132
145
  results.push($(pane).css("height", '100%'));
133
146
  } else {
134
- $(pane).css("height", height);
147
+ $(pane).css("height", p_height(pane));
135
148
  results.push($(pane).css("width", '100%'));
136
149
  }
137
150
  }
@@ -0,0 +1,28 @@
1
+ (function() {
2
+ window.show_search_bar = function() {
3
+ $('#searchbar').show();
4
+ return $('#searchbar > input').focus();
5
+ };
6
+
7
+ $(document).ready(function() {
8
+ return $('#searchbar > input').change(function() {
9
+ var anchor, text;
10
+ text = $('#searchbar > input')[0].value;
11
+ $('#searchbar').hide();
12
+ $('#searchbar > input')[0].value = "";
13
+ console.log("Searching " + text);
14
+ if (window.find(text, 0, 0, 1)) {
15
+ console.log("Found " + text);
16
+ anchor = window.getSelection().anchorNode;
17
+ if (anchor.nodeType !== 1) {
18
+ anchor = anchor.parentNode;
19
+ }
20
+ anchor.focus();
21
+ return anchor.scrollIntoView();
22
+ } else {
23
+ return alert("Cannot find " + text);
24
+ }
25
+ });
26
+ });
27
+
28
+ }).call(this);
@@ -110,28 +110,41 @@ void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?voi
110
110
  };
111
111
 
112
112
  WSClient.prototype.resize_panes = function(data) {
113
- var allPanes, height, i, len, orientation, pane, results, target;
113
+ var allPanes, i, j, len, orientation, p_height, pane, results, target, total_weight;
114
114
  if (data.target) {
115
115
  target = this.check_target(data);
116
116
  } else {
117
117
  target = $('#panes');
118
118
  }
119
119
  allPanes = target.find('> .pane');
120
- height = (100.0 / allPanes.size()).toFixed(0) + "%";
121
120
  if (target.hasClass('horizontal')) {
122
121
  orientation = 'horizontal';
123
122
  } else {
124
123
  orientation = 'vertical';
125
124
  }
126
- console.log(target, allPanes.size(), 100.0 / allPanes.size(), height, orientation);
125
+ total_weight = ((function() {
126
+ var j, len, results;
127
+ results = [];
128
+ for (j = 0, len = allPanes.length; j < len; j++) {
129
+ i = allPanes[j];
130
+ results.push(parseFloat($(i).attr('pane-weight') || 1.0));
131
+ }
132
+ return results;
133
+ })()).reduce(function(t, s) {
134
+ return t + s;
135
+ });
136
+ p_height = function(pane) {
137
+ return (parseFloat($(pane).attr('pane-weight') || 1.0) / total_weight * 100).toFixed(0) + "%";
138
+ };
139
+ console.log(target, allPanes.size(), 100.0 / allPanes.size(), total_weight, orientation);
127
140
  results = [];
128
- for (i = 0, len = allPanes.length; i < len; i++) {
129
- pane = allPanes[i];
141
+ for (j = 0, len = allPanes.length; j < len; j++) {
142
+ pane = allPanes[j];
130
143
  if (orientation === 'horizontal') {
131
- $(pane).css("width", height);
144
+ $(pane).css("width", p_height(pane));
132
145
  results.push($(pane).css("height", '100%'));
133
146
  } else {
134
- $(pane).css("height", height);
147
+ $(pane).css("height", p_height(pane));
135
148
  results.push($(pane).css("width", '100%'));
136
149
  }
137
150
  }
@@ -2783,6 +2783,11 @@ html {
2783
2783
  pointer-events: none;
2784
2784
  border: 1px solid #012;
2785
2785
  }
2786
+ hr {
2787
+ width: 95%;
2788
+ background-color: #333;
2789
+ border: 1px solid #d6d6d6;
2790
+ }
2786
2791
  /* required styles */
2787
2792
 
2788
2793
 
@@ -3289,6 +3294,21 @@ html {
3289
3294
  background: #bebebe;
3290
3295
  box-shadow: inset 0px 0px 1px 1px #d6d6d6;
3291
3296
  }
3297
+ #searchbar {
3298
+ position: absolute;
3299
+ right: 10%;
3300
+ top: 0px;
3301
+ padding: 5px;
3302
+ padding-top: 0px;
3303
+ background-color: #eee;
3304
+ border: 1px solid #242424;
3305
+ border-top: 0px;
3306
+ border-radius: 0 0 4px 4px;
3307
+ box-shadow: 2px 2px 4px 2px #bebebe;
3308
+ }
3309
+ #searchbar > input {
3310
+ margin-left: 1em;
3311
+ }
3292
3312
  #status {
3293
3313
  background-color: #aaa;
3294
3314
  margin: 0px;
@@ -90,3 +90,8 @@ html {
90
90
  pointer-events: none;
91
91
  border: 1px solid #012;
92
92
  }
93
+ hr {
94
+ width: 95%;
95
+ background-color: #333;
96
+ border: 1px solid #d6d6d6;
97
+ }
@@ -0,0 +1,15 @@
1
+ #searchbar {
2
+ position: absolute;
3
+ right: 10%;
4
+ top: 0px;
5
+ padding: 5px;
6
+ padding-top: 0px;
7
+ background-color: #eee;
8
+ border: 1px solid #242424;
9
+ border-top: 0px;
10
+ border-radius: 0 0 4px 4px;
11
+ box-shadow: 2px 2px 4px 2px #bebebe;
12
+ }
13
+ #searchbar > input {
14
+ margin-left: 1em;
15
+ }
@@ -29,4 +29,6 @@ html
29
29
  .left
30
30
  .center
31
31
  .right
32
-
32
+ #searchbar.hidden
33
+ i.fa.fa-search
34
+ input
@@ -33,7 +33,10 @@ $.extend WSClient.prototype.actions,
33
33
  else
34
34
  target = $('#panes')
35
35
 
36
- target.append("<pre class='pane full-pane' id='console-#{data.name}'><pre>") if target.find("#console-#{data.name}").size() is 0
36
+ if target.find("#console-#{data.name}").size() is 0
37
+ element = $("<pre class='pane full-pane' id='console-#{data.name}'><pre>")
38
+ element.attr('pane-weight', data.weight || 1)
39
+ target.append(element)
37
40
  @__parent.resize_panes(data)
38
41
 
39
42
  closepane: (data) ->
@@ -80,34 +83,6 @@ $.extend WSClient.prototype.actions,
80
83
  @__parent.add(newblock, target, data)
81
84
  hljs.highlightBlock(code) for code in newblock.find('code')
82
85
 
83
- button: (data) ->
84
- target = @__parent.check_target(data)
85
- class_name = if data.inline then 'inline-button' else 'full-button'
86
- left_icon = ""
87
- data.right_icon ||= data.icon
88
- left_icon = "<i class='fa fa-#{data.left_icon} label-icon-left'></i>" if data.left_icon
89
- right_icon = ""
90
- right_icon = "<i class='fa fa-#{data.right_icon} label-icon-right'></i>" if data.right_icon
91
-
92
- element = $("<a href='#' class='#{class_name}'>#{left_icon}#{@__parent.escape(data.label, data)}#{right_icon}</a>")
93
- element.click =>
94
- @__parent.send({
95
- id:data.id
96
- action:'callback'
97
- source:'button'
98
- original_msg:data
99
- })
100
- target.append element
101
-
102
- buttonbox: (data) ->
103
- target = @__parent.check_target(data)
104
-
105
- element = target.find("#console-#{data.name}")
106
- if element.size() is 0
107
- target.prepend("<pre class='button-box' id='console-#{data.name}'></pre>")
108
- else
109
- element.addClass('button-box')
110
-
111
86
  break: (data) ->
112
87
  target = @__parent.check_target(data)
113
88
  code = $("<hr>")
@@ -120,77 +95,6 @@ $.extend WSClient.prototype.actions,
120
95
  other_classes = "subpane-fill" if data.fill
121
96
  target.append("<pre id='console-#{data.name}' class='subpane pane #{other_classes}'></pre>")
122
97
 
123
- input: (data) ->
124
- target = @__parent.check_target(data)
125
- if data.multiline
126
- element = $("<textarea placeholder='#{data.label}' class='inline-text-input'></textarea>")
127
- else
128
- element = $("<input type='text' placeholder='#{data.label}' class='inline-text-input'>")
129
- if data.value
130
- element[0].value = data.value
131
-
132
- element.change =>
133
- unless element.hasClass("unclicked")
134
- @__parent.send({
135
- id:data.id
136
- action:'callback'
137
- source:'input'
138
- text: element[0].value
139
- original_msg:data
140
- })
141
- if data.once
142
- replaceText = @__parent.escape("#{element[0].value}\n")
143
- replaceText = "#{data.label}#{replaceText}" if data.keep_label
144
- element.replaceWith(replaceText)
145
- if data.autoclear
146
- element[0].value = ""
147
-
148
- target.append(element)
149
-
150
- if data.focus
151
- element.focus()
152
-
153
- checkbox: (data) ->
154
- target = @__parent.check_target(data)
155
- element = $("<label class='inline-checkbox'><input type='checkbox'><span>#{@__parent.escape(data.label,data)}</span></label>'")
156
- if data.value
157
- element.find('input').attr "checked", true
158
- element.addClass "checked"
159
- element.change (e) =>
160
- element.toggleClass("checked", element.find('input').prop('checked'))
161
- @__parent.send({
162
- id:data.id
163
- action:'callback'
164
- source:'input'
165
- checked: element.find('input').prop('checked')
166
- original_msg:data
167
- })
168
- element.click (e) =>
169
- if e.shiftKey and @__lastChecked
170
- all_boxes = $('.inline-checkbox')
171
- start = all_boxes.index(@__lastChecked)
172
- stop = all_boxes.index(element)
173
- console.log start, stop
174
-
175
- all_boxes.slice(Math.min(start, stop), Math.max(start, stop) + 1).find('input').prop("checked", @__lastChecked.find('input').prop("checked"))
176
- all_boxes.change()
177
- else
178
- @__lastChecked = element
179
- target.append(element)
180
-
181
- dropdown: (data) ->
182
- target = @__parent.check_target(data)
183
- element = $("<select class='inline-dropdown' name='#{data.id}'></select>")
184
- element.append($("<option>#{item}</option>")) for item in data.options
185
- element.change (e) =>
186
- @__parent.send({
187
- id:data.id
188
- action:'callback'
189
- source:'dropdown'
190
- text: element.find('option:selected').text()
191
- })
192
- @__parent.add(element, target, data)
193
-
194
98
  alert: (data) ->
195
99
  alert(data.text)
196
100
 
@@ -0,0 +1,117 @@
1
+ #= require websocket.coffee
2
+ $.extend WSClient.prototype.actions,
3
+ button: (data) ->
4
+ target = @__parent.check_target(data)
5
+ class_name = if data.inline then 'inline-button' else 'full-button'
6
+ left_icon = ""
7
+ data.right_icon ||= data.icon
8
+ left_icon = "<i class='fa fa-#{data.left_icon} label-icon-left'></i>" if data.left_icon
9
+ right_icon = ""
10
+ right_icon = "<i class='fa fa-#{data.right_icon} label-icon-right'></i>" if data.right_icon
11
+
12
+ element = $("<a href='#' class='#{class_name}'>#{left_icon}#{@__parent.escape(data.label, data)}#{right_icon}</a>")
13
+ element.click =>
14
+ @__parent.send({
15
+ id:data.id
16
+ action:'callback'
17
+ source:'button'
18
+ original_msg:data
19
+ })
20
+ target.append element
21
+
22
+ buttonbox: (data) ->
23
+ target = @__parent.check_target(data)
24
+
25
+ element = target.find("#console-#{data.name}")
26
+ if element.size() is 0
27
+ target.prepend("<pre class='button-box' id='console-#{data.name}'></pre>")
28
+ else
29
+ element.addClass('button-box')
30
+
31
+ input: (data) ->
32
+ target = @__parent.check_target(data)
33
+ if data.multiline
34
+ element = $("<textarea placeholder='#{data.label}' class='inline-text-input'></textarea>")
35
+ else
36
+ element = $("<input type='text' placeholder='#{data.label}' class='inline-text-input'>")
37
+ if data.value
38
+ element[0].value = data.value
39
+
40
+ element.change =>
41
+ unless element.hasClass("unclicked")
42
+ @__parent.send({
43
+ id:data.id
44
+ action:'callback'
45
+ source:'input'
46
+ text: element[0].value
47
+ original_msg:data
48
+ })
49
+ if data.once
50
+ replaceText = @__parent.escape("#{element[0].value}\n")
51
+ replaceText = "#{data.label}#{replaceText}" if data.keep_label
52
+ element.replaceWith(replaceText)
53
+ if data.history
54
+ history = element.data('history') || []
55
+ history.push element[0].value
56
+ element.data('history', history)
57
+ element.data('history-index', history.length)
58
+ if data.autoclear
59
+ element[0].value = ""
60
+
61
+ offset_history = (e, amt) =>
62
+ history = element.data('history') || []
63
+ i = element.data('history-index') + amt
64
+ e.preventDefault()
65
+ if i >= 0 and i < history.length
66
+ element[0].value = history[i]
67
+ element.data('history-index', i)
68
+
69
+ element.keydown (e) =>
70
+ offset_history(e, -1) if e.which is 38 and data.history
71
+ offset_history(e, +1) if e.which is 40 and data.history
72
+
73
+ target.append(element)
74
+
75
+ if data.focus
76
+ element.focus()
77
+
78
+ checkbox: (data) ->
79
+ target = @__parent.check_target(data)
80
+ element = $("<label class='inline-checkbox'><input type='checkbox'><span>#{@__parent.escape(data.label,data)}</span></label>'")
81
+ if data.value
82
+ element.find('input').attr "checked", true
83
+ element.addClass "checked"
84
+ element.change (e) =>
85
+ element.toggleClass("checked", element.find('input').prop('checked'))
86
+ @__parent.send({
87
+ id:data.id
88
+ action:'callback'
89
+ source:'input'
90
+ checked: element.find('input').prop('checked')
91
+ original_msg:data
92
+ })
93
+ element.click (e) =>
94
+ if e.shiftKey and @__lastChecked
95
+ all_boxes = $('.inline-checkbox')
96
+ start = all_boxes.index(@__lastChecked)
97
+ stop = all_boxes.index(element)
98
+ console.log start, stop
99
+
100
+ all_boxes.slice(Math.min(start, stop), Math.max(start, stop) + 1).find('input').prop("checked", @__lastChecked.find('input').prop("checked"))
101
+ all_boxes.change()
102
+ else
103
+ @__lastChecked = element
104
+ target.append(element)
105
+
106
+ dropdown: (data) ->
107
+ target = @__parent.check_target(data)
108
+ element = $("<select class='inline-dropdown' name='#{data.id}'></select>")
109
+ element.append($("<option>#{item}</option>")) for item in data.options
110
+ element.change (e) =>
111
+ @__parent.send({
112
+ id:data.id
113
+ action:'callback'
114
+ source:'dropdown'
115
+ text: element.find('option:selected').text()
116
+ })
117
+ @__parent.add(element, target, data)
@@ -0,0 +1,19 @@
1
+ window.show_search_bar = ->
2
+ $('#searchbar').show()
3
+ $('#searchbar > input').focus()
4
+
5
+ $(document).ready ->
6
+ $('#searchbar > input').change ->
7
+ text = $('#searchbar > input')[0].value
8
+ $('#searchbar').hide()
9
+ $('#searchbar > input')[0].value = ""
10
+ console.log "Searching #{text}"
11
+ if window.find(text, 0, 0, 1)
12
+ console.log "Found #{text}"
13
+ anchor = window.getSelection().anchorNode
14
+ anchor = anchor.parentNode unless anchor.nodeType == 1
15
+ anchor.focus()
16
+ anchor.scrollIntoView()
17
+ else
18
+ alert("Cannot find #{text}")
19
+ # $('#searchbar > input')[0].value = text