superconductor 0.0.4 → 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.
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