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.
@@ -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
+