yhara-tickets 0.1.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.
- data/README.rdoc +20 -0
- data/TODO +61 -0
- data/bin/tickets-server +101 -0
- data/db/migrate/001_create_tickets.rb +14 -0
- data/db/migrate/002_add_deleted_to_tickets.rb +13 -0
- data/db/migrate/003_add_timeouted_to_tickets.rb +13 -0
- data/dot.tickets.conf.sample +9 -0
- data/model/ticket.rb +36 -0
- data/public/biwascheme/MIT-LICENSE.txt +20 -0
- data/public/biwascheme/README +38 -0
- data/public/biwascheme/lib/biwascheme.js +101 -0
- data/public/biwascheme/lib/extra_lib.js +513 -0
- data/public/biwascheme/lib/io.js +326 -0
- data/public/biwascheme/lib/prototype.js +4320 -0
- data/public/biwascheme/lib/r6rs_lib.js +2388 -0
- data/public/biwascheme/lib/stackbase.js +1798 -0
- data/public/biwascheme/lib/webscheme_lib.js +762 -0
- data/public/js/builder.js +136 -0
- data/public/js/controls.js +965 -0
- data/public/js/dragdrop.js +975 -0
- data/public/js/effects.js +1130 -0
- data/public/js/scriptaculous.js +60 -0
- data/public/js/slider.js +275 -0
- data/public/js/sound.js +55 -0
- data/public/js/unittest.js +568 -0
- data/public/scm/main.scm +65 -0
- data/public/scm/ticket.scm +98 -0
- data/tickets.gemspec +41 -0
- data/view/index.xhtml +61 -0
- metadata +121 -0
data/public/scm/main.scm
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
;;;
|
2
|
+
;;; main.scm
|
3
|
+
;;;
|
4
|
+
|
5
|
+
;; load
|
6
|
+
(for-each (lambda (pair)
|
7
|
+
(js-load (string-append "js/" (car pair) ".js")
|
8
|
+
(cdr pair)))
|
9
|
+
'(("scriptaculous" . "Scriptaculous")
|
10
|
+
("builder" . "Builder")
|
11
|
+
("effects" . "Effect")
|
12
|
+
("dragdrop" . "Draggable")
|
13
|
+
("controls" . "Autocompleter")
|
14
|
+
("slider" . "Control")
|
15
|
+
("sound" . "Sound")))
|
16
|
+
|
17
|
+
(load "scm/ticket.scm")
|
18
|
+
|
19
|
+
;; consts
|
20
|
+
|
21
|
+
(define (px n)
|
22
|
+
(string-append (number->string n) "px"))
|
23
|
+
|
24
|
+
(define (set-position! elem x y)
|
25
|
+
(set-style! elem "position" "absolute")
|
26
|
+
(set-style! elem "left" (px x))
|
27
|
+
(set-style! elem "top" (px y)))
|
28
|
+
|
29
|
+
(define (get-position elem)
|
30
|
+
(define (remove-px str)
|
31
|
+
(string->number (car (regexp-exec "(\\d+)" str))))
|
32
|
+
(values (remove-px (get-style elem "left"))
|
33
|
+
(remove-px (get-style elem "top"))))
|
34
|
+
|
35
|
+
(define *width* #f)
|
36
|
+
(define *height* #f)
|
37
|
+
|
38
|
+
; load board size
|
39
|
+
(let1 result (read-from-string (http-request "config/board_size"))
|
40
|
+
(if (eq? (car result) 'xy)
|
41
|
+
(begin
|
42
|
+
(set! *width* (cadr result))
|
43
|
+
(set! *height* (cddr result)))
|
44
|
+
(show-error "error: failed to load board size")))
|
45
|
+
|
46
|
+
(set-style! ($ "field") "width" (px *width*))
|
47
|
+
(set-style! ($ "field") "height" (px *height*))
|
48
|
+
(set-position! ($ "top") (/ *width* 2) 0)
|
49
|
+
(set-position! ($ "bottom") (/ *width* 2) *height*)
|
50
|
+
(set-position! ($ "right") *width* (/ *height* 2))
|
51
|
+
(set-position! ($ "left") 0 (/ *height* 2))
|
52
|
+
(set-position! ($ "origin") (/ *width* 2) (/ *height* 2))
|
53
|
+
|
54
|
+
(add-handler! ($ "origin") "click" ticket-create)
|
55
|
+
|
56
|
+
(add-handler! ($ "hand_title") "click" on-ticket-rename)
|
57
|
+
(add-handler! ($ "hand_delete") "click" on-ticket-delete)
|
58
|
+
|
59
|
+
(define show-error print)
|
60
|
+
|
61
|
+
|
62
|
+
(for-each (lambda (vals) (apply ticket-new! vals))
|
63
|
+
(read-from-string (http-request "tickets/list")))
|
64
|
+
|
65
|
+
(display "ok")
|
@@ -0,0 +1,98 @@
|
|
1
|
+
;;
|
2
|
+
;; ticket.scm
|
3
|
+
;;
|
4
|
+
|
5
|
+
(define (ticket-create)
|
6
|
+
(let1 result (read-from-string (http-request "tickets/create"))
|
7
|
+
(if (eq? (car result) 'id)
|
8
|
+
(ticket-new! (cdr result) "" (/ *width* 2) (/ *height* 2))
|
9
|
+
(show-error "error: failed to create new ticket"))))
|
10
|
+
|
11
|
+
(define (ticket-move id x y)
|
12
|
+
(let1 result (http-post "tickets/move/"
|
13
|
+
`(("id" . ,id) ("x" . ,x) ("y" . ,y)))
|
14
|
+
(when (not (string=? result "#t"))
|
15
|
+
(show-error "error: failed to save ticket position"))))
|
16
|
+
|
17
|
+
(define (ticket-moved ticket-div)
|
18
|
+
(call-with-values
|
19
|
+
(lambda () (get-position ticket-div))
|
20
|
+
(lambda (x y)
|
21
|
+
(ticket-move (js-ref ticket-div "ticket-id") x y))))
|
22
|
+
|
23
|
+
; the ticket-div currently shown
|
24
|
+
(define *current-ticket* #f)
|
25
|
+
|
26
|
+
; show infomation of a ticket
|
27
|
+
(define (show-ticket ticket-div)
|
28
|
+
(set! *current-ticket* ticket-div)
|
29
|
+
(let1 title (get-content ticket-div)
|
30
|
+
(set-content! ($ "hand_title")
|
31
|
+
(if (string=? title "") "(no title)" title)))
|
32
|
+
(set-content! ($ "hand_desc")
|
33
|
+
(string-append "("
|
34
|
+
(get-style ticket-div "left")
|
35
|
+
","
|
36
|
+
(get-style ticket-div "top")
|
37
|
+
")")))
|
38
|
+
|
39
|
+
(define (on-ticket-click ticket-div)
|
40
|
+
(element-hide! ($ "hand_title_submit"))
|
41
|
+
(show-ticket ticket-div))
|
42
|
+
|
43
|
+
(define (ticket-new! id name x y)
|
44
|
+
(let1 ticket-div (element-new `("div.ticket" ,name))
|
45
|
+
(js-set! ticket-div "ticket-id" id)
|
46
|
+
(add-handler! ticket-div "click"
|
47
|
+
(lambda (ev) (on-ticket-click (js-ref ev "target"))))
|
48
|
+
(element-insert! ($ "field") ticket-div)
|
49
|
+
(js-new "Draggable" ticket-div
|
50
|
+
(js-obj "onEnd"
|
51
|
+
(js-closure
|
52
|
+
(lambda (drg) (ticket-moved (js-ref drg "element"))))))
|
53
|
+
(set-position! ticket-div (+ (/ *width* 2) x) (+ (/ *height* 2) y))
|
54
|
+
ticket-div))
|
55
|
+
|
56
|
+
; rename ticket and submit to server
|
57
|
+
(define (ticket-rename new-title)
|
58
|
+
(element-update! ($ "hand_title") new-title)
|
59
|
+
(element-update! *current-ticket* new-title)
|
60
|
+
(let* ((id (js-ref *current-ticket* "ticket-id"))
|
61
|
+
(result (http-post "tickets/rename"
|
62
|
+
`(("id" . ,id) ("title" . ,new-title)))))
|
63
|
+
(when (not (string=? result "#t"))
|
64
|
+
(show-error "error: failed to save new ticket title"))))
|
65
|
+
|
66
|
+
; show rename form and call ticket-rename when submitted
|
67
|
+
(define (on-ticket-rename)
|
68
|
+
(define (rename-form old)
|
69
|
+
(string-append "<input type='text' value='" old "' id='rename_text'>"))
|
70
|
+
(let1 ok-button ($ "hand_title_submit")
|
71
|
+
(unless (element-visible? ok-button)
|
72
|
+
(element-show! ok-button)
|
73
|
+
(element-update! ($ "hand_title")
|
74
|
+
(rename-form (get-content ($ "hand_title"))))
|
75
|
+
(wait-for ok-button "click")
|
76
|
+
(ticket-rename (get-content ($ "rename_text")))
|
77
|
+
(element-hide! ok-button))))
|
78
|
+
|
79
|
+
; send server to delete info and clear the hand
|
80
|
+
(define (ticket-delete id)
|
81
|
+
(let1 result (http-post "tickets/delete"
|
82
|
+
`(("id" . ,id)))
|
83
|
+
(if (string=? result "#t")
|
84
|
+
(begin
|
85
|
+
(element-remove! *current-ticket*)
|
86
|
+
(set! *current-ticket* #f)
|
87
|
+
(element-clear! ($ "hand_title"))
|
88
|
+
(element-clear! ($ "hand_desc")))
|
89
|
+
(show-error "error: failed to save ticket position"))))
|
90
|
+
|
91
|
+
; ask really delete the ticket
|
92
|
+
(define (on-ticket-delete)
|
93
|
+
(when *current-ticket*
|
94
|
+
(let1 message (string-append "really delete '"
|
95
|
+
(get-content *current-ticket*)
|
96
|
+
"' ?")
|
97
|
+
(when (confirm message)
|
98
|
+
(ticket-delete (js-ref *current-ticket* "ticket-id"))))))
|
data/tickets.gemspec
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = %q{tickets}
|
5
|
+
s.version = "0.1.0"
|
6
|
+
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
|
+
s.authors = ["Yutaka HARA"]
|
9
|
+
s.date = %q{2009-04-22}
|
10
|
+
s.default_executable = %q{tickets-server}
|
11
|
+
s.description = %q{}
|
12
|
+
s.email = %q{yutaka.hara+github at gmail.com}
|
13
|
+
s.executables = ["tickets-server"]
|
14
|
+
s.extra_rdoc_files = ["README.rdoc"]
|
15
|
+
s.files = ["README.rdoc", "TODO", "bin/tickets-server", "db/migrate/001_create_tickets.rb", "db/migrate/002_add_deleted_to_tickets.rb", "db/migrate/003_add_timeouted_to_tickets.rb", "dot.tickets.conf.sample", "model/ticket.rb", "public/biwascheme/MIT-LICENSE.txt", "public/biwascheme/README", "public/biwascheme/lib/biwascheme.js", "public/biwascheme/lib/extra_lib.js", "public/biwascheme/lib/io.js", "public/biwascheme/lib/prototype.js", "public/biwascheme/lib/r6rs_lib.js", "public/biwascheme/lib/stackbase.js", "public/biwascheme/lib/webscheme_lib.js", "public/js/builder.js", "public/js/controls.js", "public/js/dragdrop.js", "public/js/effects.js", "public/js/scriptaculous.js", "public/js/slider.js", "public/js/sound.js", "public/js/unittest.js", "public/scm/main.scm", "public/scm/ticket.scm", "tickets.gemspec", "view/index.xhtml"]
|
16
|
+
s.homepage = %q{http://github.com/yhara/tickets/}
|
17
|
+
s.rdoc_options = ["--title", "tickets documentation", "--charset", "utf-8", "--opname", "index.html", "--line-numbers", "--main", "README.rdoc", "--inline-source", "--exclude", "^(examples|extras)/"]
|
18
|
+
s.require_paths = ["lib"]
|
19
|
+
s.rubyforge_project = %q{}
|
20
|
+
s.rubygems_version = %q{1.3.1}
|
21
|
+
s.summary = %q{Two-dimentional TODO manager}
|
22
|
+
|
23
|
+
if s.respond_to? :specification_version then
|
24
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
25
|
+
s.specification_version = 2
|
26
|
+
|
27
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
28
|
+
s.add_runtime_dependency(%q<ramaze>, [">= 0"])
|
29
|
+
s.add_runtime_dependency(%q<sequel>, [">= 0"])
|
30
|
+
s.add_runtime_dependency(%q<sqlite3-ruby>, [">= 0"])
|
31
|
+
else
|
32
|
+
s.add_dependency(%q<ramaze>, [">= 0"])
|
33
|
+
s.add_dependency(%q<sequel>, [">= 0"])
|
34
|
+
s.add_dependency(%q<sqlite3-ruby>, [">= 0"])
|
35
|
+
end
|
36
|
+
else
|
37
|
+
s.add_dependency(%q<ramaze>, [">= 0"])
|
38
|
+
s.add_dependency(%q<sequel>, [">= 0"])
|
39
|
+
s.add_dependency(%q<sqlite3-ruby>, [">= 0"])
|
40
|
+
end
|
41
|
+
end
|
data/view/index.xhtml
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
2
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
|
3
|
+
<head>
|
4
|
+
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
|
5
|
+
<title>Hello World</title>
|
6
|
+
<style>
|
7
|
+
div#field{
|
8
|
+
border:1px solid black; float:left; margin:0.5em; padding:0.5em;
|
9
|
+
}
|
10
|
+
div#hand{
|
11
|
+
width: 300px; height: 300px;
|
12
|
+
border:1px solid black; margin:0.5em; padding:0.5em;
|
13
|
+
float: left;
|
14
|
+
}
|
15
|
+
div#hand_header{
|
16
|
+
border-bottom: 1px solid black;
|
17
|
+
}
|
18
|
+
div#hand_control{
|
19
|
+
text-align: right;
|
20
|
+
}
|
21
|
+
div.ticket{
|
22
|
+
width: 100px;
|
23
|
+
border: 1px solid black;
|
24
|
+
padding: 0.3em;
|
25
|
+
}
|
26
|
+
</style>
|
27
|
+
</head>
|
28
|
+
<body>
|
29
|
+
|
30
|
+
<div id="field">
|
31
|
+
<div id="top">かならず</div>
|
32
|
+
<div id="bottom">できれば</div>
|
33
|
+
<div id="right">いますぐ</div>
|
34
|
+
<div id="left">そのうち</div>
|
35
|
+
<div id="origin"><a href='#'>★</a></div>
|
36
|
+
</div>
|
37
|
+
|
38
|
+
<div id="hand">
|
39
|
+
<div id="hand_header">
|
40
|
+
<span id="hand_title"></span>
|
41
|
+
<input type="button" id="hand_title_submit" value="OK" style="display:none;">
|
42
|
+
</div>
|
43
|
+
<div id="hand_control">
|
44
|
+
<a href="#" id="hand_edit">edit</a>
|
45
|
+
<a href="#" id="hand_delete">delete</a>
|
46
|
+
</div>
|
47
|
+
<div id="hand_desc"></div>
|
48
|
+
</div>
|
49
|
+
|
50
|
+
<div id="bs-console"></div>
|
51
|
+
|
52
|
+
<div style="clear:both">
|
53
|
+
<a href="track">過去のチケット</a>
|
54
|
+
</div>
|
55
|
+
|
56
|
+
<script src="biwascheme/lib/biwascheme.js">
|
57
|
+
(load "scm/main.scm")
|
58
|
+
</script>
|
59
|
+
|
60
|
+
</body>
|
61
|
+
</html>
|
metadata
ADDED
@@ -0,0 +1,121 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: yhara-tickets
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Yutaka HARA
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-04-22 00:00:00 -07:00
|
13
|
+
default_executable: tickets-server
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: ramaze
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: "0"
|
24
|
+
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: sequel
|
27
|
+
type: :runtime
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: "0"
|
34
|
+
version:
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: sqlite3-ruby
|
37
|
+
type: :runtime
|
38
|
+
version_requirement:
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: "0"
|
44
|
+
version:
|
45
|
+
description: ""
|
46
|
+
email: yutaka.hara+github at gmail.com
|
47
|
+
executables:
|
48
|
+
- tickets-server
|
49
|
+
extensions: []
|
50
|
+
|
51
|
+
extra_rdoc_files:
|
52
|
+
- README.rdoc
|
53
|
+
files:
|
54
|
+
- README.rdoc
|
55
|
+
- TODO
|
56
|
+
- bin/tickets-server
|
57
|
+
- db/migrate/001_create_tickets.rb
|
58
|
+
- db/migrate/002_add_deleted_to_tickets.rb
|
59
|
+
- db/migrate/003_add_timeouted_to_tickets.rb
|
60
|
+
- dot.tickets.conf.sample
|
61
|
+
- model/ticket.rb
|
62
|
+
- public/biwascheme/MIT-LICENSE.txt
|
63
|
+
- public/biwascheme/README
|
64
|
+
- public/biwascheme/lib/biwascheme.js
|
65
|
+
- public/biwascheme/lib/extra_lib.js
|
66
|
+
- public/biwascheme/lib/io.js
|
67
|
+
- public/biwascheme/lib/prototype.js
|
68
|
+
- public/biwascheme/lib/r6rs_lib.js
|
69
|
+
- public/biwascheme/lib/stackbase.js
|
70
|
+
- public/biwascheme/lib/webscheme_lib.js
|
71
|
+
- public/js/builder.js
|
72
|
+
- public/js/controls.js
|
73
|
+
- public/js/dragdrop.js
|
74
|
+
- public/js/effects.js
|
75
|
+
- public/js/scriptaculous.js
|
76
|
+
- public/js/slider.js
|
77
|
+
- public/js/sound.js
|
78
|
+
- public/js/unittest.js
|
79
|
+
- public/scm/main.scm
|
80
|
+
- public/scm/ticket.scm
|
81
|
+
- tickets.gemspec
|
82
|
+
- view/index.xhtml
|
83
|
+
has_rdoc: false
|
84
|
+
homepage: http://github.com/yhara/tickets/
|
85
|
+
post_install_message:
|
86
|
+
rdoc_options:
|
87
|
+
- --title
|
88
|
+
- tickets documentation
|
89
|
+
- --charset
|
90
|
+
- utf-8
|
91
|
+
- --opname
|
92
|
+
- index.html
|
93
|
+
- --line-numbers
|
94
|
+
- --main
|
95
|
+
- README.rdoc
|
96
|
+
- --inline-source
|
97
|
+
- --exclude
|
98
|
+
- ^(examples|extras)/
|
99
|
+
require_paths:
|
100
|
+
- lib
|
101
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
102
|
+
requirements:
|
103
|
+
- - ">="
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: "0"
|
106
|
+
version:
|
107
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - ">="
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: "0"
|
112
|
+
version:
|
113
|
+
requirements: []
|
114
|
+
|
115
|
+
rubyforge_project: ""
|
116
|
+
rubygems_version: 1.2.0
|
117
|
+
signing_key:
|
118
|
+
specification_version: 2
|
119
|
+
summary: Two-dimentional TODO manager
|
120
|
+
test_files: []
|
121
|
+
|