yhara-tickets 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
|