plumo 0.0.4 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/lib/plumo.rb +6 -9
- data/lib/plumo/public/index.html +5 -1
- data/lib/plumo/public/plumo.js +43 -22
- data/lib/plumo/version.rb +2 -2
- data/plumo.gemspec +1 -2
- metadata +5 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 2165f226a30aad06edd524cdb4e816f77b1e893fc51af826af15d0d18f3c51bf
|
4
|
+
data.tar.gz: 840c3b5d51605745d304bf28cd972beee0210b8e3aacd0c277521f873a544177
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a9648a88c65ae434929202659571b760bb886b7577274b9039699755caca3133769d47d84dcb3f1f9684e95a5c1f613cd1284c913eba6d30be01ae56f56e454e
|
7
|
+
data.tar.gz: f048a5ca88cb137c6d42173157a3ed393d082beda9ea79b006de98fef205e3a9c5479283e4d9c28631e0e431674a3f7693271846f584e2f3a5d5971e2a4a8fd1
|
data/lib/plumo.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
1
|
require 'webrick'
|
4
2
|
require 'cgi'
|
5
3
|
require 'json'
|
@@ -7,14 +5,13 @@ require 'pp'
|
|
7
5
|
require 'timeout'
|
8
6
|
|
9
7
|
class Plumo
|
10
|
-
|
11
8
|
class NullLogger
|
12
9
|
def <<(arg)
|
13
10
|
;
|
14
11
|
end
|
15
12
|
end
|
16
13
|
|
17
|
-
def initialize(w, h, opts={})
|
14
|
+
def initialize(w, h, opts = {})
|
18
15
|
@w = w
|
19
16
|
@h = h
|
20
17
|
@session_id = nil
|
@@ -159,7 +156,7 @@ class Plumo
|
|
159
156
|
)
|
160
157
|
end
|
161
158
|
|
162
|
-
def line(x0, y0, x1, y1, style={})
|
159
|
+
def line(x0, y0, x1, y1, style = {})
|
163
160
|
cmds = []
|
164
161
|
|
165
162
|
if style.key?(:color)
|
@@ -176,7 +173,7 @@ class Plumo
|
|
176
173
|
draw(*cmds)
|
177
174
|
end
|
178
175
|
|
179
|
-
def stroke_rect(x, y, w, h, style={})
|
176
|
+
def stroke_rect(x, y, w, h, style = {})
|
180
177
|
cmds = []
|
181
178
|
|
182
179
|
if style.key?(:color)
|
@@ -190,7 +187,7 @@ class Plumo
|
|
190
187
|
draw(*cmds)
|
191
188
|
end
|
192
189
|
|
193
|
-
def fill_rect(x, y, w, h, style={})
|
190
|
+
def fill_rect(x, y, w, h, style = {})
|
194
191
|
cmds = []
|
195
192
|
|
196
193
|
if style.key?(:color)
|
@@ -205,7 +202,7 @@ class Plumo
|
|
205
202
|
draw(*cmds)
|
206
203
|
end
|
207
204
|
|
208
|
-
def stroke_circle(x, y, r, style={})
|
205
|
+
def stroke_circle(x, y, r, style = {})
|
209
206
|
cmds = []
|
210
207
|
|
211
208
|
if style.key?(:color)
|
@@ -225,7 +222,7 @@ class Plumo
|
|
225
222
|
draw(*cmds)
|
226
223
|
end
|
227
224
|
|
228
|
-
def fill_circle(x, y, r, style={})
|
225
|
+
def fill_circle(x, y, r, style = {})
|
229
226
|
cmds = []
|
230
227
|
|
231
228
|
if style.key?(:color)
|
data/lib/plumo/public/index.html
CHANGED
data/lib/plumo/public/plumo.js
CHANGED
@@ -1,15 +1,19 @@
|
|
1
|
-
|
1
|
+
function puts (...args) {
|
2
2
|
console.log(...args);
|
3
|
-
}
|
3
|
+
}
|
4
|
+
|
5
|
+
function getElement(selector) {
|
6
|
+
return document.querySelector(selector);
|
7
|
+
}
|
4
8
|
|
5
9
|
class Comet {
|
6
|
-
constructor(){
|
10
|
+
constructor() {
|
7
11
|
this.timer = null;
|
8
12
|
this.connected = true;
|
9
|
-
this.sessionId =
|
13
|
+
this.sessionId = Date.now();
|
10
14
|
}
|
11
15
|
|
12
|
-
_open(){
|
16
|
+
_open() {
|
13
17
|
$.post("/comet", { sessionid: this.sessionId })
|
14
18
|
.then((data)=>{
|
15
19
|
if (this.connected) {
|
@@ -26,14 +30,14 @@ class Comet {
|
|
26
30
|
});
|
27
31
|
}
|
28
32
|
|
29
|
-
open(){
|
33
|
+
open() {
|
30
34
|
clearTimeout(this.timer);
|
31
35
|
this.timer = setTimeout(()=>{
|
32
36
|
this._open();
|
33
37
|
}, 0);
|
34
38
|
}
|
35
39
|
|
36
|
-
onclose(){
|
40
|
+
onclose() {
|
37
41
|
this.connected = false;
|
38
42
|
console.info("onclose");
|
39
43
|
$.post("/close");
|
@@ -42,19 +46,19 @@ class Comet {
|
|
42
46
|
}
|
43
47
|
|
44
48
|
class CanvasWrapper {
|
45
|
-
constructor(el){
|
49
|
+
constructor(el) {
|
46
50
|
this.el = el;
|
47
51
|
this.$el = $(el);
|
48
52
|
this.ctx = el.getContext("2d");
|
49
53
|
}
|
50
54
|
|
51
|
-
reset(w, h){
|
55
|
+
reset(w, h) {
|
52
56
|
this.$el.attr("width" , w);
|
53
57
|
this.$el.attr("height", h);
|
54
58
|
this.$el.show();
|
55
59
|
}
|
56
60
|
|
57
|
-
execCmd(cmd){
|
61
|
+
execCmd(cmd) {
|
58
62
|
const _cmd = cmd[0];
|
59
63
|
const args = cmd.slice(1);
|
60
64
|
|
@@ -71,13 +75,19 @@ class CanvasWrapper {
|
|
71
75
|
}
|
72
76
|
|
73
77
|
class App {
|
74
|
-
constructor(){
|
78
|
+
constructor() {
|
75
79
|
this.comet = new Comet();
|
76
|
-
this.cw = new CanvasWrapper(
|
80
|
+
this.cw = new CanvasWrapper(getElement("canvas"));
|
77
81
|
this.resTimes = [];
|
78
82
|
}
|
79
83
|
|
80
|
-
start(){
|
84
|
+
start() {
|
85
|
+
// events
|
86
|
+
getElement("#btn_save").addEventListener(
|
87
|
+
"click",
|
88
|
+
()=>{ this.saveImage(); }
|
89
|
+
);
|
90
|
+
|
81
91
|
// comet
|
82
92
|
this.comet.onmessage = this.onmessage.bind(this);
|
83
93
|
this.comet.open();
|
@@ -88,7 +98,7 @@ class App {
|
|
88
98
|
}, 1000);
|
89
99
|
}
|
90
100
|
|
91
|
-
onmessage(data){
|
101
|
+
onmessage(data) {
|
92
102
|
this.refreshRps();
|
93
103
|
this.refreshQsize(data.qsize, data.events.length);
|
94
104
|
|
@@ -114,8 +124,8 @@ class App {
|
|
114
124
|
});
|
115
125
|
}
|
116
126
|
|
117
|
-
refreshRps(){
|
118
|
-
const currentTime =
|
127
|
+
refreshRps() {
|
128
|
+
const currentTime = Date.now();
|
119
129
|
this.resTimes.push(currentTime);
|
120
130
|
const limit = currentTime - 1000;
|
121
131
|
|
@@ -127,7 +137,7 @@ class App {
|
|
127
137
|
$("#rps").text(recent.length);
|
128
138
|
}
|
129
139
|
|
130
|
-
refreshQsize(qsize, numEvents){
|
140
|
+
refreshQsize(qsize, numEvents) {
|
131
141
|
$("#qsize").text(qsize);
|
132
142
|
|
133
143
|
let qsizeBar = "#".repeat(numEvents);
|
@@ -137,7 +147,7 @@ class App {
|
|
137
147
|
$("#qsize_bar").text(qsizeBar);
|
138
148
|
}
|
139
149
|
|
140
|
-
ping(){
|
150
|
+
ping() {
|
141
151
|
if (this.comet.connected) {
|
142
152
|
return;
|
143
153
|
}
|
@@ -156,9 +166,20 @@ class App {
|
|
156
166
|
$("#ping").text(text + ".");
|
157
167
|
});
|
158
168
|
}
|
169
|
+
|
170
|
+
saveImage() {
|
171
|
+
const dataUrl = getElement("canvas").toDataURL();
|
172
|
+
const a = document.createElement("a");
|
173
|
+
a.href = dataUrl;
|
174
|
+
a.download = "image.png";
|
175
|
+
a.click();
|
176
|
+
}
|
159
177
|
}
|
160
178
|
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
179
|
+
document.addEventListener(
|
180
|
+
"DOMContentLoaded",
|
181
|
+
()=>{
|
182
|
+
const app = new App();
|
183
|
+
app.start();
|
184
|
+
}
|
185
|
+
);
|
data/lib/plumo/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
|
2
|
-
VERSION = "0.0
|
1
|
+
class Plumo
|
2
|
+
VERSION = "0.1.0"
|
3
3
|
end
|
data/plumo.gemspec
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
lib = File.expand_path('../lib', __FILE__)
|
3
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
3
|
require 'plumo/version'
|
@@ -21,7 +20,7 @@ Gem::Specification.new do |spec|
|
|
21
20
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
22
21
|
spec.require_paths = ["lib"]
|
23
22
|
|
24
|
-
spec.add_development_dependency "bundler", "~> 1
|
23
|
+
spec.add_development_dependency "bundler", "~> 2.1"
|
25
24
|
spec.add_development_dependency "rake", "~> 12.0"
|
26
25
|
# spec.add_development_dependency "minitest", "~> 5.0"
|
27
26
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: plumo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- sonota88
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-05-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1
|
19
|
+
version: '2.1'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '1
|
26
|
+
version: '2.1'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -75,8 +75,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
75
75
|
- !ruby/object:Gem::Version
|
76
76
|
version: '0'
|
77
77
|
requirements: []
|
78
|
-
|
79
|
-
rubygems_version: 2.6.8
|
78
|
+
rubygems_version: 3.0.3
|
80
79
|
signing_key:
|
81
80
|
specification_version: 4
|
82
81
|
summary: Easy 2d-graphincs using Ruby and Canvas
|