superconductor 0.0.4 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (97) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +16 -0
  3. data/.rspec +3 -0
  4. data/.ruby-version +1 -0
  5. data/.scss-lint.yml +21 -0
  6. data/.travis.yml +5 -0
  7. data/.yardopts +1 -0
  8. data/Cargo.lock +679 -0
  9. data/Cargo.toml +25 -0
  10. data/Gemfile +4 -0
  11. data/Guardfile +70 -0
  12. data/LICENSE.txt +21 -0
  13. data/Makefile +4 -0
  14. data/README.md +58 -0
  15. data/Rakefile +9 -36
  16. data/assets/__pm.js +424 -0
  17. data/assets/__pm.scss +261 -0
  18. data/assets/_buttons.scss +50 -0
  19. data/assets/_checkbox.scss +59 -0
  20. data/assets/_colors.scss +15 -0
  21. data/assets/_details.scss +54 -0
  22. data/assets/_pm_commits.scss +171 -0
  23. data/assets/_pm_setup.scss +7 -0
  24. data/assets/_pm_tasks.scss +280 -0
  25. data/assets/_tokens.scss +56 -0
  26. data/bin/console +14 -0
  27. data/bin/make +2 -0
  28. data/bin/rake +17 -0
  29. data/bin/release +5 -0
  30. data/bin/setup +8 -0
  31. data/bin/start +5 -0
  32. data/config.ru +10 -0
  33. data/config/properties.yml +37 -0
  34. data/extconf.rb +2 -0
  35. data/lib/superconductor.rb +35 -1
  36. data/lib/superconductor/documentation.rb +34 -0
  37. data/lib/superconductor/middleware.rb +71 -0
  38. data/lib/superconductor/version.rb +1 -1
  39. data/src/lib.rs +101 -0
  40. data/src/server.rs +176 -0
  41. data/src/state/mod.rs +5 -0
  42. data/src/state/state.rs +233 -0
  43. data/src/state/xml.rs +380 -0
  44. data/src/task.rs +129 -0
  45. data/src/view.rs +396 -0
  46. data/superconductor.gemspec +41 -0
  47. metadata +173 -116
  48. data/MIT-LICENSE +0 -20
  49. data/README.rdoc +0 -3
  50. data/app/assets/javascripts/jquery-linedtextarea.js +0 -126
  51. data/app/assets/javascripts/superconductor.js +0 -2
  52. data/app/assets/javascripts/superconductor/panel.js.coffee +0 -42
  53. data/app/assets/stylesheets/jquery-linedtextarea.css +0 -68
  54. data/app/assets/stylesheets/scaffold.css +0 -56
  55. data/app/assets/stylesheets/superconductor.css +0 -4
  56. data/app/assets/stylesheets/superconductor/panel.css.scss +0 -142
  57. data/app/controllers/file_controller.rb +0 -24
  58. data/app/helpers/superconductor/panel_helper.rb +0 -2
  59. data/app/models/superconductor.rb +0 -5
  60. data/app/models/superconductor/exception.rb +0 -0
  61. data/app/views/superconductor/_panel.html.erb +0 -130
  62. data/app/views/superconductor/_panel.js.erb +0 -0
  63. data/config/routes.rb +0 -6
  64. data/lib/superconductor/engine.rb +0 -24
  65. data/lib/tasks/superconductor_tasks.rake +0 -4
  66. data/test/dummy/README.rdoc +0 -261
  67. data/test/dummy/Rakefile +0 -7
  68. data/test/dummy/app/assets/javascripts/application.js +0 -15
  69. data/test/dummy/app/assets/stylesheets/application.css +0 -13
  70. data/test/dummy/app/controllers/application_controller.rb +0 -3
  71. data/test/dummy/app/helpers/application_helper.rb +0 -2
  72. data/test/dummy/app/views/layouts/application.html.erb +0 -14
  73. data/test/dummy/config.ru +0 -4
  74. data/test/dummy/config/application.rb +0 -56
  75. data/test/dummy/config/boot.rb +0 -10
  76. data/test/dummy/config/database.yml +0 -25
  77. data/test/dummy/config/environment.rb +0 -5
  78. data/test/dummy/config/environments/development.rb +0 -37
  79. data/test/dummy/config/environments/production.rb +0 -67
  80. data/test/dummy/config/environments/test.rb +0 -37
  81. data/test/dummy/config/initializers/backtrace_silencers.rb +0 -7
  82. data/test/dummy/config/initializers/inflections.rb +0 -15
  83. data/test/dummy/config/initializers/mime_types.rb +0 -5
  84. data/test/dummy/config/initializers/secret_token.rb +0 -7
  85. data/test/dummy/config/initializers/session_store.rb +0 -8
  86. data/test/dummy/config/initializers/wrap_parameters.rb +0 -14
  87. data/test/dummy/config/locales/en.yml +0 -5
  88. data/test/dummy/config/routes.rb +0 -58
  89. data/test/dummy/public/404.html +0 -26
  90. data/test/dummy/public/422.html +0 -26
  91. data/test/dummy/public/500.html +0 -25
  92. data/test/dummy/public/favicon.ico +0 -0
  93. data/test/dummy/script/rails +0 -6
  94. data/test/integration/navigation_test.rb +0 -10
  95. data/test/superconductor_test.rb +0 -7
  96. data/test/test_helper.rb +0 -10
  97. data/test/unit/helpers/superconductor/panel_helper_test.rb +0 -4
@@ -0,0 +1,7 @@
1
+ @import 'colors';
2
+
3
+ #__pm__panel .setup {
4
+ > * {
5
+ margin: 0.5rem;
6
+ }
7
+ }
@@ -0,0 +1,280 @@
1
+ @import 'colors';
2
+
3
+ #__pm__panel {
4
+
5
+ header {
6
+ background-color: $color0;
7
+ font-weight: 400;
8
+ line-height: 2em;
9
+ margin: 0;
10
+ position: fixed;
11
+ top: 0;
12
+ width: 100%;
13
+ z-index: 1;
14
+
15
+ button {
16
+ width: calc(100% - 5pt);
17
+ border: solid darken($color0, 5%) 1pt;
18
+ transition: none;
19
+ }
20
+
21
+ &:after {
22
+ background-color: $color0;
23
+ content: '';
24
+ display: block;
25
+ height: 100%;
26
+ left: 100%;
27
+ position: fixed;
28
+ top: 0;
29
+ width: 15pt;
30
+ }
31
+ }
32
+
33
+ }
34
+
35
+ #__pm__panel {
36
+ ul.list {
37
+ float: left;
38
+ font-size: 0.8em;
39
+ list-style-type: none;
40
+ margin: 0;
41
+ padding: 3em 5pt 5pt;
42
+ width: 33%;
43
+
44
+ header {
45
+ width: calc(33% - 5pt);
46
+ }
47
+
48
+ .task {
49
+ background-color: $color-base;
50
+ border: solid darken($color-base, 25%) 1pt;
51
+ margin-top: 1pt;
52
+ padding: 0 5pt;
53
+ overflow: auto;
54
+
55
+ &:focus,
56
+ &.selected {
57
+ border-color: $color2;
58
+ box-shadow: inset 3pt 0 0 $color3;
59
+ outline: none;
60
+ }
61
+ }
62
+
63
+ .task__property--description {
64
+ float: left;
65
+ width: calc(100% - 7em);
66
+ white-space: nowrap;
67
+ overflow: hidden;
68
+ text-overflow: ellipsis;
69
+ }
70
+
71
+ .task__property--estimate {
72
+ background-color: $color3;
73
+ border-radius: 50%;
74
+ color: $color0;
75
+ font-weight: bold;
76
+ height: 2em;
77
+ line-height: 2em;
78
+ margin-top: 0.25em;
79
+ text-align: center;
80
+ width: 2em;
81
+ float: right;
82
+ }
83
+
84
+ .task__name {
85
+ font-weight: bold;
86
+ width: 5em;
87
+ float: left;
88
+ }
89
+ }
90
+ }
91
+
92
+ #__pm__panel {
93
+ ul.tiles {
94
+ float: left;
95
+ font-size: 0.8em;
96
+ height: 100%;
97
+ line-height: 1.25em;
98
+ list-style-type: none;
99
+ margin: 0 5pt;
100
+ overflow-y: auto;
101
+ padding: 3.25em 0 0;
102
+ width: 115pt;
103
+
104
+ header {
105
+ width: 105pt;
106
+ }
107
+ }
108
+
109
+ ul.tiles .column {
110
+ height: 100%;
111
+
112
+ &.droppable {
113
+ header button {
114
+ box-shadow: inset 0 0.5em 0.15em rgba($color-base, 0.5);
115
+ }
116
+ }
117
+
118
+ &.droppable.tasks--status-in-progress {
119
+ header button {
120
+ background-color: $color-in-progress;
121
+ box-shadow: inset 0 1em 0.15em lighten($color-in-progress, 3%);
122
+ border: solid 1px darken($color-in-progress, 5%);
123
+ }
124
+ }
125
+
126
+ &.droppable.tasks--status-in-review {
127
+ header button {
128
+ background-color: $color-in-review;
129
+ box-shadow: inset 0 1em 0.15em lighten($color-in-review, 20%);
130
+ border: solid 1px darken($color-in-review, 10%);
131
+ }
132
+ }
133
+
134
+ &.droppable.tasks--status-blocked {
135
+ header button {
136
+ background-color: $color-blocked;
137
+ box-shadow: inset 0 1em 0.15em lighten($color-blocked, 10%);
138
+ border: solid 1px darken($color-blocked, 10%);
139
+ color: $color-base;
140
+ }
141
+ }
142
+
143
+ &.droppable.tasks--status-done {
144
+ header button {
145
+ background-color: $color-done;
146
+ box-shadow: inset 0 1em 0.15em lighten($color-done, 10%);
147
+ border: solid 1px darken($color-done, 5%);
148
+ }
149
+ }
150
+
151
+ &.droppable.tasks--backlog {
152
+ header button {
153
+ background-color: $color-backlog;
154
+ box-shadow: inset 0 1em 0.15em lighten($color-backlog, 3%);
155
+ border: solid 1px darken($color-backlog, 5%);
156
+ color: $color-base;
157
+ }
158
+ }
159
+
160
+ }
161
+
162
+ ul.tiles li.tile {
163
+ padding-bottom: 1em;
164
+ width: 100pt;
165
+
166
+ &::before {
167
+ content: '';
168
+ min-height: 0;
169
+ transition: min-height 250ms;
170
+ }
171
+
172
+ &.droppable::before {
173
+ display: block;
174
+ min-height: 108pt;
175
+ }
176
+
177
+ .task {
178
+ cursor: pointer;
179
+ width: 100pt;
180
+ height: 100pt;
181
+ background-color: $color0;
182
+ border: solid 1px darken($color-base, 20%);
183
+ border-radius: 3pt;
184
+ padding: 0 5pt 0 calc(1em + 5pt);
185
+ margin: 0;
186
+ box-shadow: inset 3pt 0pt 0pt $color-base;
187
+ overflow: hidden;
188
+ text-overflow: ellipsis;
189
+ position: relative;
190
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAADCAYAAABWKLW/AAAADklEQVQImWNgQAAp3AwABaMAT0kwJI8AAAAASUVORK5CYII=);
191
+
192
+ &:focus,
193
+ &.selected {
194
+ border-color: $color3;
195
+ margin-top: -1pt;
196
+ margin-bottom: 1pt;
197
+ background-color: $color-base;
198
+ box-shadow: inset 3pt 0pt 0pt $color3;
199
+ outline: none;
200
+ }
201
+
202
+ &::after {
203
+ content: '';
204
+ display: block;
205
+ position: absolute;
206
+ bottom: 0; height: 50%;
207
+ left: 8pt; right: 0;
208
+ background: rgba($color-base,0.5);
209
+ background: -webkit-linear-gradient(top, rgba($color-base,0), rgba($color-base,0.75));
210
+ background: linear-gradient(top, rgba($color-base,0), rgba($color-base,0.75));
211
+ }
212
+ }
213
+
214
+ &.tile--status-done.droppable,
215
+ &.tile--status-sprint.droppable {
216
+ &::before {
217
+ min-height: 53pt;
218
+ }
219
+ }
220
+
221
+ &.tile--status-done > .task,
222
+ &.tile--status-sprint > .task {
223
+ height: 45pt;
224
+ }
225
+
226
+ &.tile--status-sprint > .task {
227
+ box-shadow: inset 6pt 0 0 $color-sprint, inset calc(6pt + 1px) 0 0 darken($color-sprint, 10%);
228
+ }
229
+
230
+ &.tile--status-in-progress > .task {
231
+ box-shadow: inset 6pt 0 0 $color-in-progress, inset calc(6pt + 1px) 0 0 darken($color-in-progress, 10%);
232
+ }
233
+
234
+ &.tile--status-in-review > .task {
235
+ box-shadow: inset 6pt 0 0 $color-in-review, inset calc(6pt + 1px) 0 0 darken($color-in-review, 10%);
236
+ }
237
+
238
+ &.tile--status-blocked > .task {
239
+ box-shadow: inset 6pt 0 0 $color-blocked, inset calc(6pt + 1px) 0 0 darken($color-blocked, 10%);
240
+ }
241
+
242
+ &.tile--status-done > .task {
243
+ box-shadow: inset 6pt 0 0 $color-done, inset calc(6pt + 1px) 0 0 darken($color-done, 10%);
244
+ }
245
+
246
+ .task__name {
247
+ font-weight: bold;
248
+ font-size: 1.1em;
249
+ display: block;
250
+ overflow: hidden;
251
+ text-overflow: ellipsis;
252
+ white-space: nowrap;
253
+ line-height: 2em;
254
+ border-bottom: dotted 1px darken($color-base, 20%);
255
+ margin-bottom: 0.5em;
256
+ letter-spacing: 0.05em;
257
+ }
258
+
259
+ .task__property--description {
260
+ white-space: pre-wrap;
261
+ }
262
+
263
+ .task__property--estimate {
264
+ font-size: 0.9em;
265
+ background-color: $color3;
266
+ border-radius: 2pt;
267
+ color: $color0;
268
+ position: absolute;
269
+ right: 0.5em;
270
+ top: 0.5em;
271
+ z-index: 1;
272
+ width: 2em;
273
+ height: 1.5em;
274
+ font-weight: bold;
275
+ line-height: 1.5em;
276
+ text-align: center;
277
+ }
278
+ }
279
+
280
+ }
@@ -0,0 +1,56 @@
1
+ @import 'colors';
2
+
3
+ .token {
4
+ $r: 0.4em;
5
+ $color-base: #FFF;
6
+
7
+ color: $color-base;
8
+ font-weight: bold;
9
+ max-width: 100%;
10
+ overflow: hidden;
11
+ text-overflow: ellipsis;
12
+ white-space: nowrap;
13
+
14
+ > span {
15
+ background-color: $color3;
16
+ border: solid $color4 1pt;
17
+ border-width: 1pt 0;
18
+ font-size: 0.85em;
19
+ line-height: 1em;
20
+ padding: 0.2em 0.5em;
21
+ text-shadow: 0 0 1pt darken($color3, 50%);
22
+ vertical-align: 15%;
23
+ }
24
+
25
+ > span:first-child {
26
+ border-radius: $r 0 0 $r;
27
+ border-width: 1pt 0 1pt 1pt;
28
+ }
29
+
30
+ > span:last-child {
31
+ border-radius: 0 $r $r 0;
32
+ border-width: 1pt 1pt 1pt 0;
33
+ }
34
+
35
+ > span:first-child:last-child {
36
+ border-radius: $r;
37
+ border-width: 1pt;
38
+ }
39
+
40
+ .token--positive {
41
+ background-color: $color2;
42
+ text-shadow: 0 0 1pt darken($color2, 50%);
43
+ }
44
+
45
+ .token--negative {
46
+ background-color: $color1;
47
+ text-shadow: 0 0 1pt darken($color1, 50%);
48
+ }
49
+
50
+ .token--neutral {
51
+ background-color: $color4;
52
+ color: darken($color-base, 25%);
53
+ text-shadow: 0 0 1pt darken($color4, 50%);
54
+ }
55
+
56
+ }
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "superconductor/gem"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
data/bin/make ADDED
@@ -0,0 +1,2 @@
1
+ #!/bin/bash
2
+ cargo rustc -- -A overflowing-literals
data/bin/rake ADDED
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+ #
4
+ # This file was generated by Bundler.
5
+ #
6
+ # The application 'rake' is installed as part of a gem, and
7
+ # this file is here to facilitate running it.
8
+ #
9
+
10
+ require "pathname"
11
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
12
+ Pathname.new(__FILE__).realpath)
13
+
14
+ require "rubygems"
15
+ require "bundler/setup"
16
+
17
+ load Gem.bin_path("rake", "rake")
data/bin/release ADDED
@@ -0,0 +1,5 @@
1
+ #!/bin/bash
2
+ export RUST_BACKTRACE=1
3
+ set -e
4
+ cargo rustc --release -- -A overflowing-literals
5
+ rackup
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
data/bin/start ADDED
@@ -0,0 +1,5 @@
1
+ #!/bin/bash
2
+ export RUST_BACKTRACE=1
3
+ set -e
4
+ cargo rustc -- -A overflowing-literals
5
+ TARGET="debug" rackup -p ${1:-9292}
data/config.ru ADDED
@@ -0,0 +1,10 @@
1
+ $:.unshift File.join(File.dirname(__FILE__), 'lib')
2
+ require 'superconductor'
3
+ require 'yard'
4
+
5
+ use Superconductor::Middleware
6
+ #use Rack::Static, root: "doc", urls: ["/css", "/js"], index: 'index.html'
7
+ #use Rack::Static, root: "target", urls: ["/doc"], index: 'index.html'
8
+ run YARD::Server::RackAdapter.new({
9
+ 'superconductor' => [YARD::Server::LibraryVersion.new('superconductor', Superconductor::VERSION, '.yardoc')]
10
+ }, caching: true, single_library: true)
@@ -0,0 +1,37 @@
1
+ ---
2
+ Status:
3
+ Type: Select
4
+ Options:
5
+ - Sprint
6
+ - In Progress
7
+ - In Review
8
+ - Blocked
9
+ - Done
10
+
11
+ Estimate:
12
+ Type: Number
13
+
14
+ Developer:
15
+ Type: Signature
16
+
17
+ Description:
18
+ Type: Text
19
+
20
+ Specification:
21
+ Type: Code
22
+ Path: "spec/features"
23
+ Inference: format!("{}#{}", controller, action)
24
+
25
+ Sprint:
26
+ Required: Epic
27
+ Type: Task
28
+
29
+ Epic:
30
+ Required: Project
31
+ Type: Task
32
+
33
+ Project:
34
+ Type: Task
35
+
36
+ Blocker:
37
+ Type: Task